Select any text and click on the icon to listen!

अर्चिश्मत गोरे

कम्यूटर विज्ञान
आजकल कंप्यूटर हमारे जीवन में बहुत तेज़ी से प्रवेश कर रहे हैं। शायद यह रफ्तार कुछ लोगों को बेचैन कर देती है। इसके कारण हमें उनसे डर-सा लगता है और हम कंप्यूटरों की अद्भुत दुनिया से दूर ही रहने में भलाई समझते हैं जबकि ये कंप्यूटर हमारे जीवन को बदल देने की क्षमता रखते हैं। मगर इनसे डरने की ज़रूरत नहीं है। आखिर ये सरल मशीनें ही तो हैं; अवधारणा के स्तर पर देखें तो ये हमारी दीवार घड़ी या सायकिल की पैडल व्यवस्था से भिन्न नहीं हैं। जो चीज़ कंप्यूटरों को दीवार घड़ी या सायकिल चेन से भिन्न बनाती है, वह है कि इन्हें ‘प्रोग्राम’ किया जा सकता है। प्रोग्राम का मतलब होता है कि किसी उपकरण में यह क्षमता हो कि वह अपने भौतिक स्वरूप में बदलाव किए बगैर निर्देशों को ग्रहण कर सके तथा उनके अनुसार अपना व्यवहार बदल सके। किसी भी घड़ी को एक विशेष शैली में समय बताने के लिए तैयार किया जाता है। यह असंभव है कि आप अपनी कोई समय प्रणाली बनाएं और इस घड़ी के पुर्जों (हार्डवेयर) में कोई भौतिक परिवर्तन किए बगैर नई शैली में समय बताने के लिए निर्देशित कर दें। कंप्यूटर में यही विशेषता होती है कि उसे विभिन्न प्रणालियों में समय बताने को निर्देशित किया जा सकता है और इसके लिए हार्डवेयर में किसी परिवर्तन की ज़रूरत नहीं होती। हम यह भी चर्चा करेंगे कि कैसे इन्सान भी कंप्यूटर ही हैं। हम सबकी भौतिक हार्डवेयर रचना तो एक-सी है। मगर हमारी अनुवांशिक संरचना, शिक्षा, स्कूल तथा अनुभव एक मायने में ‘प्रोग्रामिंग’ है - यह वह सॉफ्टवेयर है जो हमें निर्देशित करता है कि हम कैसे व्यवहार करें।

आमतौर पर जब हम कंप्यूटर के बारे में सोचते हैं, तो दिमाग में एक स्क्रीन, की-बोर्ड और सीपीयू आते हैं। हम सोचते हैं कि यह एक ऐसी मशीन है जो दस्तावेज़ों का संपादन कर सकती है, फाइलों को सुरक्षित कर सकती है, छवियां, संगीत सहेज सकती है, खेल खेल सकती है और कारोबार (बैंकिंग, फायनेंस) को स्वचालित बना सकती है। यह सब इसलिए संभव होता है क्योंकि हम इस मशीन को यह सब करने के लिए ‘प्रोग्राम’ (निर्देशित) किया जा सकता है।

मगर क्या आपने कभी सोचा है कि कंप्यूटर सिर्फ इसलिए एक विज्ञान हो सकता है क्योंकि आप इसे प्रोग्राम कर सकते हैं? क्या आपने कभी सोचा है कि ‘कंप्यूटर विज्ञान’ शब्द का औचित्य ही क्या है? क्या इसका औचित्य सिर्फ वर्ड-प्रोसेसर और डैटाबेस पैकेजिस के साथ काम करने वाले विशेषज्ञों के अस्तित्व के कारण है? क्या आपको नहीं लगता कि इसके पीछे कुछ विज्ञान तो होना चाहिए? हम इस लेख में यही खोजबीन करने की कोशिश करेंगे कि कंप्यूटिंग क्या है और कंप्यूटर विज्ञान क्या है। कोशिश यह समझने की होगी कि यदि कंप्यूटरों के पीछे कोई विज्ञान है, तो वह क्या है।

सोचने वाला कम्प्यूटर

बुद्धिमान मशीन बनाने की दिशा में हमने अभी शुरुआती कदम ही उठाए हैं मगर हम काफी तेज़ी से आगे बढ़ रहे हैं। उदाहरण के तौर पर मेरा अपना स्नातक प्रोजेक्ट यह था कि सीधे दिमागी तरंगों का विश्लेषण करके ‘सिर्फ सोचकर’ कंप्यूटर पर माउस चिन्ह की स्थिति को नियंत्रित किया जाए। वास्तव में, विचारों से टाइपिंग करने और विचारों से नियंत्रण स्थापित करने के प्रयोगों के नतीजे अच्छे रहे हैं। इन प्रयोगों से रोचक परिणाम प्राप्त हुए हैं। मसलन, क्या आप जानते हैं कि यदि आप 100 होशियार लोगों की दिमागी तरंगों को रिकॉर्ड कर लें और उनका अनुकरण करके अपनी दिमागी तरंगों को उनके ‘हस्ताक्षर’ यानी उनकी तरंगों के अनुरूप बनाएं तो आप अपनी बुद्धि में इज़ाफा कर सकते हैं? इसे न्यूरो-फीडबैक कहते हैं और इस पर काफी प्रयोग चल रहे हैं। न्यूरो-फीडबैक उत्पाद जल्दी ही उपकरणों का रूप लेने की स्थिति में हैं। ज़रा कल्पना कीजिए कि किसी अन्य व्यक्ति की दिमागी तरंगों का पैटर्न उधार लेकर आप गणितीय कौशल, बुद्धिमत्ता या भाषाई क्षमता जैसे लक्षण प्राप्त कर सकते हैं।

मुझे यकीन है कि जब आपने बचपन में कंप्यूटरों और कंप्यूटिंग मशीनों के बारे में सुना होगा तब से आपकी कल्पना में यह सवाल रहा होगा कि क्या कंप्यूटर सोच सकते हैं। आपने शायद यह कल्पना भी की होगी कि कंप्यूटर इन्सानी दिमाग से कहीं अधिक शक्तिशाली होते होंगे। जिस किसी ने मशहूर चाचा चौधरी कॉमिक्स पढ़े हैं, उसे यह बात ज़रूर याद होगी, ‘उसका दिमाग कंप्यूटर से तेज़ काम करता है।’ जैसा कि हम इस लेख में देखेंगे, हम अभी ऐसा कंप्यूटर बनाने से काफी दूर हैं जो सोच सके। आप यह भी देखेंगे कि कुछ चीज़ों में हमारा दिमाग कंप्यूटर से कहीं अधिक तेज़ गति से काम करता है। बुद्धि, नवाचार, सृजनात्मकता, साहस, आत्म-सम्मान, भावनाओं और जोश पर आधारित काम कम-से-कम अगले 200 सालों तक बनाए जा सकने वाले कंप्यूटरों के बूते के बाहर ही रहेंगे। कंप्यूटर तो एक बुद्धू मशीन होती है जिसे नफीस टेक्नॉलॉजी की मदद से छोटे-से-छोटा बनाया जाता है। इसमें बुद्धि जैसा कोई गुण नहीं होता। (वास्तव में कंप्यूटरों से बुद्धि को जोड़ना धरती के सारे सजीवों का अपमान होगा।)

मशीनें, मशीनें, मशीनें...
जब से इन्सान इस दुनिया में हैं, वे मशीनों का आविष्कार करते रहे हैं जो उनके जीवन की गुणवत्ता को बेहतर बना सकें। हमने कुल्हाड़ी व भालों से शु डिग्री किया था और आज हमारे पास कंप्यूटर एवं रोबोट हैं। जैसे-जैसे हमने मशीनें बनाईं जो हमारा काम कर सकें, वैसे-वैसे हम ऐसी मशीनों की खोज भी करने लगे जो इन कामों में हमारी शिरकत की ज़रूरत को भी समाप्त कर दे। यही रोबोटिक्स के क्षेत्र की शुरुआत थी।
ऐसा माना जाता है कि इन्सान ने जो पहला रोबोट बनाया था वह 17वीं सदी में बनाया गया एक क्लॉक-वर्क टी-मेकर (घड़ी जैसा चाय बनाने वाला यंत्र) था। यह बहुत ही सरल मशीन थी जिसमें सामान्य घड़ी की तरह चाभी भरी जाती थी, और यह पूर्व निर्देशित (प्रोग्राम्ड ढंग से) खास क्रम में कामों को निपटाकर रुक जाती थी। यह माचिस उठाएगी, उसे सुलगाएगी, स्टोव के पास ले जाएगी, गैस का बटन घुमाएगी, पानी भरी पतीली को स्टोव पर रखेगी, वगैरह।

अलबत्ता, जिस खूबी ने इसे सामान्य कुल्हाड़ी से भिन्न बनाया वह थी कि यह वाकई जान सकती थी कि जलाने के लिए माचिस की तीलियां नहीं हैं और ऐसा होने पर यह एक घण्टी बजाकर उपयोगकर्ता को चेता देती थी कि कोई चीज़ गड़बड़ है। यह कुछ घटनाओं की प्रतिक्रिया भी दे सकती थी। इस वजह से यह मशीन एक शाहकार थी। इसका मतलब है कि माचिस न होने की स्थिति में यह गैस खोलकर पूरे कमरे को गैस से भरने जैसा खतरनाक काम नहीं करेगी। हां, माचिस बुझ जाए तो बात अलग है।

इस समय लोग सोचने लगे कि क्या हम ऐसी सर्वसक्षम मशीन बना सकते हैं जो कोई भी काम कर सके। मतलब एक ऐसी मशीन जिसे चाय बनाना सिखाया जा सके (ऐसा करने पर वह टी-मेकर की तरह काम करेगी) या कार बनाना सिखा दें तो कार बना सके। कुल मिलाकर इन्सान हूबहू इन्सान जैसी एक मशीन चाहते थे। उसके हाथ-पैर हों ताकि वह चल-फिर सके और ज़रूरत के अनुसार अलग-अलग काम कर सके। ठीक उसी तरह जैसे ज़रूरत पड़ने पर इन्सानों को एक काम से हटाकर दूसरे काम में लगाया जा सकता है। लोग ऐसी मशीनें चाहते थे जिन्हें एक बार बना लेने के बाद अलग-अलग कामों के लिए इस्तेमाल किया जा सके। इस ज़माने में रोबोटिक्स खूब फला-फूला।

इन प्रयासों के दौरान, लोगों ने यह समझ लिया कि वास्तविक चुनौती मशीन के हाथ-पैर बनाने की नहीं है बल्कि वे पुर्जे बनाने की है जिन्हें बार-बार नए ढंग से प्रोग्राम किया जा सके। मसलन, कार का उदाहरण लीजिए। अत्यंत शक्तिशाली इंजिन बनाना कोई बड़ा काम नहीं था। चुनौती तो यह थी कि कार यह पहचान सके कि उस पर भारी बोझ लदा है ताकि आगे बढ़कर वह खुद को चोट न पहुंचाए। इसलिए हमें ऐसी मशीनों की ज़रूरत थी जो हालात को भांप सकें और उनके अनुरूप निर्णय ले सकें। ज़ाहिर है, ये निर्णय मशीन की संरचना में हार्ड-कोडेड थे यानी निर्धारित थे।

अलबत्ता, कुछ लोग ज़्यादा कल्पना-शील और महत्वाकांक्षी थे। क्या उपरोक्त टी-मेकर को आसानी से कॉफी-मेकर बनाया जा सकता है? उसके पास कॉफी बनाने के लिए ज़रूरी पुर्ज़े, जैसे हाथ, हैण्डल, बटन वगैरह तो थे ही। सिद्धांत रूप में तो यह कोई समस्या नहीं होनी चाहिए। मगर यह चुनौती कल्पना से कहीं ज़्यादा कठिन साबित हुई।
जल्दी ही यह मान लिया गया कि ज़रूरत हाथ-पैरों से लैस किसी फैंसी मशीन की नहीं है बल्कि ऐसी नियंत्रण प्रणालियों की है जो इन हाथ-पैरों से अलग-अलग काम करवा सके। मात्र निर्णय लेने की क्षमता काफी नहीं थी। लोग अब यह क्षमता चाहते थे कि मशीन को यह बताया जा सके कि जिस उद्देश्य के लिए उसका उपयोग किया जा रहा है, उसके अनुसार कौन-से निर्णय करना है। ज़्यादा स्पष्ट शब्दों में कहें, तो वे सिर्फ ऐसी घड़ी नहीं चाहते थे जो विभिन्न समय क्षेत्रों (टाइम ज़ोन्स) में समय बता सके बल्कि एक ऐसी घड़ी चाहते थे जो आपकी स्थिति को भांपकर अपनी समय प्रणाली बदल सके और यह संभव हो कि आप घड़ी की भौतिक संरचना बदले बगैर ये सेटिंग कर सकें। मसलन, यदि आप रोमन साम्राज्य में हैं, तो वह सौर कैलेंडर को अपना ले और जब आप प्राचीन भारत में हों, तो वह चंद्र कैलेंडर पर चल सके और उसमें यह व्यवस्था हो कि आप उसे बता सकें कि क्या करना है और कब करना है। घड़ी को यह बताने की क्रिया कि उसे कैसे चलना है प्रोग्रामिंग कहलाती है।

रोबोट से आगे
इसके आगे हम एक काल्पनिक कहानी का सहारा लेकर देखेंगे कि टी-मेकर पर भारी दबाव के चलते कंप्यूटर कैसे अस्तित्व में आए। टी-मेकर के मामले में लोग चाहते थे कि बस एक स्विच को सरकाते ही उस उपकरण को चाय की बजाय कॉफी का डिब्बा उठाने को अग्रसर होना चाहिए। वैसे तो यह आसान-सी चाह लगती है, जिसे टी-मेकर में कुछ गेयर-पुर्ज़े वगैरह बदलकर पूरा किया जा सकता है। मगर मान लीजिए मुझे बिना दूध की चाय चाहिए, या चाय में शक्कर की मात्रा थोड़ी अलग चाहिए या कम-ज़्यादा गाढ़ी चाय चाहिए, तो? हमारे चतुर घड़ीसाज़ और आविष्कारक फिर से अपने ड्रॉइंग बोर्ड पर डट गए और डिज़ाइन में फेरबदल करके इन सब गुणों से लैस टी-मेकर बना डाला। तो लोगों ने आविष्कारकों से कहा कि सूप बनाने का काम लगभग चाय बनाने जैसा ही है, और वे एक सूप-मेकर भी बना डालें। इस मोड़ पर आकर आविष्कारक थक गए और उन्हें यकीन हो गया कि इन लोगों की मांगों की पूर्ति करते जाना संभव नहीं है और कोशिश करना भी छोड़ दिया।
इस दौरान, इसी तरह के संकट से जूझते हुए, चार्ल्स बैबेज, जिन्हें कंप्यूटिंग का पितामह कहा जाता है, ने एक ज़ोरदार विचार पेश किया। मान लीजिए टी-मेकर को चाय, कॉफी या सूप बनाने के ‘ज्ञान’ के बिना तैयार किया जाए। ऐसा टी-मेकर (शायद अब उसे यह नाम देना ठीक न हो) जिसे सिर्फ एक बात का ज्ञान है - निर्देशों के पालन की क्षमता। यह अब टी-मेकर नहीं रहा, पेय-निर्माता हो गया। चूंकि इस मशीन के पास हिलने-डुलने और चीज़ों को हिलाने-डुलाने के लिए भुजाएं थीं, इसलिए इसे चाय, कॉफी, सूप या इसकी क्षमता के अनुरूप कुछ भी बनाने का निर्देश दिया जा सकता था। बैबेज ने एक ऐसी मशीन की कल्पना की जिसमें एक इनपुट चैनल होगी जिसके ज़रिए वह उपयोगकर्ता के निर्देशों को ग्रहण कर सकेगी। इसमें एक भंडार भी होगा जहां यह उन निर्देशों को सहेजकर रख सकेगी जिनका पालन करना है। और आखिरी हिस्सा होगा आउटपुट का जो टी-मेकर के मामले में भुजाएं होंगी जो चाय बनाने की क्रिया को संपन्न करेंगी।

दिमाग भी कम्प्यूटर जैसा

यदि आपका ख्याल है कि हम कागज़ पर जो भी तरीके अपनाते हैं, शायद वे सब कंप्यूटर विज्ञान हैं, तो आपका ख्याल बिलकुल सही है। आपका दिमाग भी अपने आप में अन्य किसी भी ऐसी मशीन के समान ही एक कंप्यूटर है जिसे निर्देश दिए जा सकते हों। इसमें कोई शक नहीं कि यह आपके डेस्कटॉप से काफी अलग है मगर है तो कंप्यूटर ही। यहीं कंप्यूटर विज्ञान तस्वीर में आता है। किसी भिन्न का गुणांक ज्ञात करने की सारी चित्र-आधारित विधियां, बार-बार भाग के द्वारा किसी संख्या का वर्गमूल निकालने की व्यवस्थित विधि, लीनियर प्रोग्रामिंग मॉडल में न्यूनाधिक बिंदु ज्ञात करने की विधि वगैरह सब गणना करने की सूत्रविधियां यानी एल्गोरिद्म ही तो हैं। तो यदि आप सोच रहे हैं कि क्या कंप्यूटर विज्ञान आपको चतुर बना सकता है, तो जवाब है, ‘शर्तिया’। शायद यह आपको ज़्यादा चतुर न बनाए मगर कम-से-कम आप जो भी करते हैं उसमें ज़्यादा कुशल ज़रूर हो जाएंगे।

उदाहरण के लिए आपका पीसी गुणा करने के लिए जो फास्ट फुरियर ट्रांसफॉर्म विधि उपयोग करता है उससे आपका पीसी तो ज़्यादा तेज़ नहीं हो पाता मगर वह इसका बेहतर उपयोग करके आपको लाखों अंकों की संख्या का गुणा महज दो सेकंड में उपलब्ध करा देता है (जबकि पीसी पर परंपरागत विधि से चलेंगे तो इस काम में आठ घण्टे लग जाएंगे)।

ज़ाहिर है, यह एक मनगढ़ंत किस्सा है, जिसे मैंने चार्ल्स बैबेज की महान उपलब्धि को स्पष्ट करने के लिए गढ़ा है। वास्तव में चार्ल्स बैबेज ने एक ऐसी मशीन बनाई थी जो चाय बनाने से बहुत ज़्यादा कर सकती थी। उन्होंने एक ऐसी मशीन बनाई थी जिसे सचमुच ‘कुछ भी’ करने के लिए प्रोग्राम किया जा सकता था। यह एक ऐसी मशीन थी जिसमें कुछ बुनियादी क्षमताएं थीं। ये बुनियादी क्षमताएं दुनिया के किसी भी गणितीय या संगणना सम्बंधी ज़रूरत के सामान्य तत्व थे। जैसे हमारे पेय निर्माता के पास एक स्टोव, माचिस व अन्य सामग्री थी, जिनकी मदद से हम कोई भी गर्म पेय बना सकते थे, ठीक उसी तरह चार्ल्स बैबेज ने एक ऐसी मशीन बनाई जिसमें सारी बुनियादी गणितीय संक्रियाएं थीं जिनके आधार पर दुनिया की किसी भी चीज़ का प्रतिनिधित्व किया जा सकता था। यह सब एकदम अवधारणात्मक स्तर पर था। मगर यहां हम क्षमता की बात कर रहे हैं, मशीन की व्यावहारिकता की नहीं। बैबेज इस मशीन को ‘डिफरेंस मशीन’ कहते थे और यह शायद ऐसे कई काम कर सकती थी जो आज हम अपने निजी कंप्यूटर (पीसी) पर करते हैं। मगर उसकी रफ्तार बहुत कम थी। आज जो काम हमारे कंप्यूटर मिलीसेकंड में करते हैं उन्हें करने में बैबेज की मशीन को शायद एक महीना लगता होगा।

इस महान उपलब्धि ने जल्दी ही एक समस्या को जन्म दिया। अब हमारे पास ऐसी मशीन थी जो हमारा बताया हर काम कर सकती थी। मगर इससे अपना काम करवाने के लिए हम इससे कहें क्या? टी-मेकर की उपमा पर लौटें तो एक खास तरह की चाय बनवाने के लिए इसे क्या निर्देश दिए जाएं और किस क्रम में? इन सवालों के जवाब के रूप में कंप्यूटिंग का विज्ञान अस्तित्व में आया। कंप्यूटर विज्ञान का सम्बंध मशीनों, उनकी डिज़ाइन, उनकी क्षमताओं, और इस बात से है कि उनसे समुचित काम करवाने के लिए कैसे निर्देश दिए जाएं।

क्या हुक्म है मेरे आका...
तो अब हम जानते हैं कि कंप्यूटर विज्ञान क्या है। यह चीज़ें ‘कैसे करें’ तय करने का विज्ञान है। ‘चीज़ों’ से आशय कुछ भी हो सकता है - टी-मेकर बनाने से लेकर अगले सूनामी की भविष्यवाणी करने तक। यह वह विज्ञान है जो हमें मशीनों के सिद्धांत उपलब्ध कराता है और किसी काम को करने में लगने वाले समय (बशर्ते कि ‘कैसे’ तय हो) का हिसाब लगा सकता है। यह विज्ञान यह जानने का विज्ञान है कि किसी समस्या को कैसे सुलझाया जाता है। अक्सर ऐसा होता है कि कंप्यूटर वैज्ञानिक दरअसल समस्या सुलझाने वालों का जमघट होता है। मगर सवाल यह है कि वे कौन-सी समस्याएं सुलझाते हैं। आइए देखें।

कंप्यूटर विज्ञान हिसाब की समस्याएं सुलझाता है। किसी कंप्यूटर वैज्ञानिक से यह जानने की उम्मीद न करें कि ब्रह्मांड कैसे काम करता है। यह तो एक भौतिक समस्या हुई। मगर यदि आप किसी कंप्यूटर वैज्ञानिक को भौतिकी के कुछ नियम बता दें और पूरे ब्रह्मांड का रूपक बनाने को कहें, तो आप सही व्यक्ति से मुखातिब हैं। कुल मिलाकर कंप्यूटर विज्ञान इस बात की परवाह नहीं करता कि किस चीज़ की ज़रूरत है। आपको स्पष्ट शब्दों में बताना होगा कि आप क्या चाहते हैं। और कंप्यूटर विज्ञान आपको यह बता देगा कि उसे सबसे कार्यक्षम ढंग से कैसे हासिल करें।

मसलन, यदि आप किसी कंप्यूटर वैज्ञानिक से यह पूछें कि एक ऐसे आयत का क्षेत्रफल क्या होगा जिसकी भुजाएं 10 लाख अंकों की संख्या से भी बड़ी हैं। कंप्यूटर विज्ञान इस हद तक मूर्ख है कि उसे यह पता नहीं होगा कि ‘आयत का क्षेत्रफल’ क्या होता है। मगर यदि आप कंप्यूटर विज्ञान को यह बता दें कि लंबाई और चौड़ाई का गुणनफल ही आयत का क्षेत्रफल होता है तो वह इतना होशियार होता है कि आपको लाख अंकों वाली संख्याओं का गुणनफल प्राप्त करने का तरीका बता देगा। और यह तरीका हमारे कागज़ कलम वाले पारंपरिक तरीके से लाख गुना तेज़ होगा। इसमें जो तरीके उपयोग होते हैं उनमें ज़बर्दस्त गणित और पेचीदा शब्दावली की ज़रूरत होती है और अवधारणा के स्तर पर यह गुणा की हमारी समझ से एकदम अलग होता है।

इससे पहले कि हम ऐलान कर दें कि हम कंप्यूटर विज्ञान को समझ गए हैं, हमें यह देखना होगा कि यहां ‘मशीन’ शब्द क्यों महत्वपूर्ण है। ‘कैसे करें’ का कोई एक तरीका, जिसे हम सूत्रविधि कहेंगे, सारे कंप्यूटरों के लिए लागू नहीं होगा। यह वैसा ही है जैसे यदि हम एक कार चालक और एक तांगा चालक से कहें कि जमकर ब्रेक दबाओ, तो यह दोनों के लिए एक ही बात नहीं होगी। तांगा चला रहे व्यक्ति को तो लगाम कसनी होगी। यानी हमारी सूत्रविधि इस बात पर निर्भर करेगी कि हम कौन-सा वाहन चला रहे हैं। इसी प्रकार से कंप्यूटर विज्ञान भी इस बात से गहरा ताल्लुक रखता है कि आप गणना करने के लिए किस मशीन का उपयोग कर रहे हैं। इस मशीन के अनुसार और आपकी अपेक्षा को देखते हुए कंप्यूटर विज्ञान इस अपेक्षा की पूर्ति हेतु समुचित सूत्रविधि देता है। कंप्यूटर विज्ञान का सम्बंध ही मशीनों से और विशिष्ट अपेक्षाओं के अनुसार उनके कुशल उपयोग से है। हमारा दिमाग किसी पीसी की तुलना में बहुत अलग किस्म की मशीन है। लिहाज़ा, जो सूत्रविधि पीसी में तेज़ काम करती हैं वे शायद इन्सान के लिए नाकारा साबित हों। और कंप्यूटर विज्ञान इस बात को बखूबी समझता है।

दरअसल इसीलिए कंप्यूटर विज्ञान एक स्थायी विज्ञान है जो कभी हमारा साथ नहीं छोड़ेगा। जैस-जैसे नए-नए कंप्यूटर आएंगे, हमें यह जानने के लिए कंप्यूटर विज्ञान की ज़रूरत होगी कि अपनी ज़रूरत के अनुसार उनका कारगर उपयोग कैसे करें। कंप्यूटर विज्ञान विभिन्न कंप्यूटरों, उनके गुणधर्मों, वे क्या करते हैं, वे क्या नहीं कर सकते, वे किसी संक्रिया को कितनी रफ्तार से कर रहे हैं वगैरह का विज्ञान है। सम्बंधित मशीन के अनुरूप कंप्यूटर विज्ञान सबसे उपयुक्त सूत्रविधि तय कर सकता है।

मगर कंप्यूटर विज्ञान को कैसे पता चलता है कि किस मशीन पर कौन-सी सूत्रविधि तेज़ काम करेगी? इससे भी ज़्यादा ज़रूरी सवाल यह है कि क्या हम किसी मशीन पर कोई सूत्रविधि चलाकर उसकी रफ्तार परख सकते हैं। आखिर इस पूरे मामले में गणना करने वाले विशेष व्यक्ति की ज़रूरत क्यों होती है?

तरीकों की कसौटी
जवाब यह है कि हम पहले मशीन बनाकर, उसके बाद सूत्रविधियों को नहीं परखते। यदि हम वैसा करेंगे तो हम सोलहवीं सदी के उन कीमियागरों से अलग नहीं होंगे जो सीसे को सोने में बदलने के लिए विभिन्न ऊटपटांग तरीके अपनाते रहते थे जबकि इन तरीकों के पीछे कोई तर्क नहीं होता था। दूसरी ओर कंप्यूटर विज्ञान इन मशीनों को डिज़ाइन करने में सक्रिय योगदान देता है। किसी तरीके और सूत्रविधि को देखकर कंप्यूटर विज्ञान आपको बता सकता है कि इनके लिए किस तरह की मशीन बनाना सबसे अच्छा होगा।
मगर सवाल तो यह है कि ऐसी उल्टी चक्की क्यों चलाएं। क्यों न हम पहले मशीन बना लें और फिर उनके लिए सर्वोत्तम सूत्रविधियों की खोज करें?

हरफनमौला मशीन

हमारे पीसी को हरफनमौला कंप्यूटर कहा जाता है। यानी ये ऐसी मशीनें हैं जो कुछ सामान्य किस्म की संक्रियाओं को सहारा देती हैं जिनकी बुनियाद पर अन्य संक्रियाएं निर्मित की जा सकती हैं। इसके चलते हमारे पीसी सुंदर चित्र प्रदर्शित कर सकते हैं, आवाज़ सुना सकते हैं, परमाणु संरचना के अनुरूप तैयार कर सकते हैं। मगर यह, सबके लिए एक समाधान, सबके लिए धीमा समाधान भी है। आपका सामान्य पीसी ऐसे किसी भी कंप्यूटर से बहुत धीमा होता है जिसे आवाज़ पैदा करने या चित्र तैयार करने या परमाणु संरचना का अनुरूप निर्मित करने के लिए विशेष तौर पर बनाया जाए।

तो फिर पीसी का इतना अधिक उपयोग क्यों होता है? इसका जवाब कंप्यूटर विज्ञान में है। जैसा कि मैंने कहा, आपका पीसी हर किस्म के विशिष्ट कंप्यूटर की एक बानगी दे सकता है। उपरोक्त सारे कार्यों के लिए विशिष्ट उपकरण बनाना, बगैर यह जाने कि वे कैसे बर्ताव करेंगे, बहुत महंगा (और मूर्खतापूर्ण) साबित होगा। इसकी बजाय पहले इस हरफनमौला मशीन को उपरोक्त सारे कामों के लिए प्रोग्राम कर दिया जाता है। हरफनमौला कंप्यूटर पर लिखित इस सूत्रविधि का विश्लेषण करके कंप्यूटर वैज्ञानिक इलेक्ट्रॉनिक्स विशेषज्ञों को बता सकते हैं कि विशिष्ट उद्देश्य वाली मशीन में कौन-सी संक्रियाएं जोड़ें कि वह सूत्रविधि अत्यंत तेज़ काम करने लगे। तब इलेक्ट्रॉनिक्स विशेषज्ञ उस कार्य को गति देने के लिए विशेष मशीन बना सकते हैं। इससे पैसा बचता है और हमें दुनिया के काम-काज के बारे में और मशीन के बारे में बेहतर समझ हासिल होती है।

सारे बेहतरीन ग्राफिक्स कार्ड्स और साउण्ड कार्ड्स इसी तरह से संभव हुए हैं। जब कंप्यूटर वैज्ञानिकों ने देखा कि इन कार्यों में एक पैटर्न है जिसे विशिष्ट कंप्यूटरों की मदद से ज़्यादा तेज़ी से सुलझाया जा सकता है, तो उन्होंने इलेक्ट्रॉनिक्स के लोगों से कहा कि वे इनमें से प्रत्येक ज़रूरत के लिए विशिष्ट कंप्यूटर बनाएं। इसके चलते त्रिआयामी प्रस्तुतीकरण और यथार्थपूर्ण सराउण्ड साउण्ड संभव हुए।

जल्दी ही गंध-खोजी यानी ऐसी मशीनें बन सकेंगी जो किसी फिल्म के सीन या किसी खेल की गंध को पुनर्रचित कर देंगी। ज़रा कल्पना कीजिए, साउण्ड ऑफ म्यूज़िक के पहले दृश्य में सचमुच वहां की घास और पेड़-पौधों की गंध महसूस कर पाएंगे आप। एक उदाहरण से आप समझ पाएंगे कि विशिष्ट-कार्य कंप्यूटर कितनी गति से काम करते हैं। आधुनिक ग्राफिक्स कार्ड टर्मिनेटर-2 फिल्म के दृश्य प्रभावों को तत्काल प्रस्तुत कर सकता है जबकि इस फिल्म के ये दृश्य तैयार करने में तीन महीने से ज़्यादा समय लगा था।

देखिए, किसी भी कंप्यूटर वैज्ञानिक के लिए यह तो संभव नहीं है कि बाज़ार में आने वाले हर प्रोसेसर की छानबीन करके उसके लिए विशिष्ट सूत्रविधियां विकसित कर दे। इसके लिए जितने कंप्यूटर वैज्ञानिकों की ज़रूरत होगी उतने आज हैं नहीं। इस दिक्कत से निपटने के लिए कंप्यूटर वैज्ञानिकों ने कंप्यूटर संरचना और संगठन का एक समूचा सिद्धांत विकसित किया है। यह सिद्धांत कंप्यूटरों को उनकी अवधारणात्मक संक्रियाओं के अनुसार समूहीकृत करता है। इन अवधारणात्मक मॉडल्स का इस्तेमाल करके हम मशीनों के किसी समूह विशेष के लिए और फिर वास्तविक मशीन के अनुसार सूत्रविधियां विकसित कर सकते हैं। हालांकि इस तरह से उस मशीन के लिए सर्वोत्तम सूत्रविधि नहीं बनती मगर व्यावहारिक तौर पर हम उसके काफी नज़दीक पहुंच जाते हैं।

एलन ट्यूरिंग और ट्यूरिंग मशीन

मशीन की बात छोड़ने से पहले, मैं इन ट्यूरिंग मशीनों के बारे में कुछ रोमांचक बातें बताना चाहूंगा। ट्यूरिंग मशीन एक ऐसी मशीन होती है जो कोई भी सवाल हल कर सकती है। इसके अलावा, ट्यूरिंग मशीन लगभग किसी भी अन्य किस्म की काल्पनिक मशीन की नकल कर सकती है (यानी वे परिणाम दे सकती है, जो वह दूसरी मशीन जो वास्तव में अस्तित्व में नहीं है, दे सकती है)। इसीलिए ट्यूरिंग मशीन पर न्यूरल नेटवर्क या जिनेटिक कंप्यूटरों के अनुरूप निर्मित किए जा सकते हैं। मगर इससे उल्टा शायद हमेशा सही न हो। (गौरतलब है कि इससे ट्यूरिंग मशीन द्वारा उस काल्पनिक मशीन की संक्रियाएं करने की गति या कार्यक्षमता के बारे में कोई अंदाज़ नहीं लगाया जा सकता।) और एक विशेष किस्म की ट्यूरिंग मशीन होती है जिसे सार्वभौमिक ट्यूरिंग मशीन कहते हैं। वह किसी भी ट्यूरिंग मशीन की नकल कर सकती है।

इसका मतलब यह हुआ कि डिज़ाइन की गई किसी भी मशीन की नकल ट्यूरिंग मशीन पर बनाई जा सकती है। एक तरह से हमारे रोज़मर्रा के कंप्यूटर्स ट्यूरिंग मशीनें ही हैं। यह सिद्ध किया जा चुका है कि जिस चीज़ की गणना ट्यूरिंग मशीन पर की जा सकती है उसकी गणना हमारे पीसी पर भी की जा सकती है और इससे उल्टा भी किया जा सकता है। इसका मतलब है कि हमारे पीसी सार्वभौमिक ट्यूरिंग मशीनें हैं। इसीलिए हम सारे जिनेटिक कंप्यूटर्स और न्यूरल नेटवर्क्स को अपने पीसी पर चला सकते हैं।

इससे भी ज़्यादा रोमांचक बात यह है कि पूरे ब्रह्माण्ड को एक ट्यूरिंग-संपूर्ण माना गया है। इसका मतलब यह हुआ कि जो भी ब्रह्माण्ड में होता है उसका अनुरूपण ट्यूरिंग मशीन पर किया जा सकता है। यानी हम ब्रह्माण्ड का नन्हा मॉडल बनाए बगैर भी ब्रह्माण्ड का पूर्वानुमान कर सकते हैं। इससे हमें अनुरूपण की शक्ति का एहसास होता है। इसका सीधा सा मतलब यह भी है कि क्षमताओं के लिहाज़ से सिद्धांतत: ट्यूरिंग मशीन से ज़्यादा शक्तिशाली मशीन हो नहीं सकती। कोई अचरज नहीं होना चाहिए कि एलन ट्यूरिंग को कंप्यूटर की दुनिया में इतना आदर दिया जाता है।

विश्लेषण के लिहाज़ से हर कंप्यूटिंग मशीन को गणितीय मॉडल्स के रूप में अमूर्त रूप दिया जाता है। हमारे आम पीसी को ट्यूरिंग मशीन का अमूर्त दर्जा दिया गया है। यह नाम मशहूर गणितज्ञ एलन ट्यूरिंग के नाम पर रखा गया है जिन्होंने डिजिटल कंप्यूटर का पहला गणितीय मॉडल विकसित किया था। इस ट्यूरिंग मशीन और इसके गणितीय गुणधर्मों का उपयोग करके हम अपनी सूत्रविधियों की कार्यक्षमता और सटीकता की बात कर सकते हैं, चाहे हमने उन्हें वास्तव में चलाया न हो।

हमारा दिमाग एक और ऐसी मशीन है जिसका सन्निकटन ‘न्यूरल नेटवर्क’ के रूप में किया जा रहा है। कृत्रिम न्यूरल नेटवर्क आपके सामान्य कंप्यूटर पर जैविक तंत्रिकाओं का सन्निकटन है ताकि मस्तिष्क के समान मशीन बनाई जा सके। न्यूरल नेटवर्क्स में पैटर्न पहचानने, अनचाहे आंकड़ों (सूचनाओं) को खारिज करने, संज्ञान करने, सीखने और याद रखने के ज़बर्दस्त गुण होते हैं। ये नेटवर्क हमें अपने पीसी पर एक नन्हा दिमाग मुहैया कराते हैं। मगर खुद सोचने वाले कंप्यूटर अभी आपकी मेज़ पर आने में बहुत वक्त लगेगा। एक औसत मनुष्य के मस्तिष्क में 3 अरब तंत्रिकाएं होती हैं जो परस्पर जटिल संरचना में जुड़ी होती हैं। यह एक तंत्रिका नेटवर्क बनता है जिसमें अद्भुत शक्ति होती है। इतनी जटिलता वाला न्यूरल नेटवर्क बनाने के लिए दुनिया के सबसे तेज़ सुपरकंप्यूटर से भी 105 गुना ज़्यादा शक्तिशाली पारंपरिक कंप्यूटर ज़रूरी होगा। मगर नई इलेक्ट्रॉ-निक्स डिज़ाइन के द्वारा चिप पर तंत्रिकाएं बनाई जा रही हैं और सोचने वाली मशीनें जल्दी ही एक हकीकत होंगी। वैज्ञानिक दृष्टिकोण से ‘जल्दी’ का आशय 40-50 साल लगाना चाहिए।

शायद हमें एकता का पाठ पढ़ाने के लिए ही प्रकृति ने न्यूरल नेटवर्क को उसकी शक्ति तंत्रिकाओं में नहीं बल्कि तंत्रिकाओं के परस्पर जोड़ (कनेक्शन्स) में दी है। कृत्रिम न्यूरल नेटवर्क में भी वास्तविक समस्या जोड़ और उनकी व्यवस्था निर्धारित करने की है। परंपरागत ट्यूरिंग मशीनों, या उनके समांतर रूप यानी अधिकांश सुपरकंप्यूटर्स, की शक्ति प्रोसेसर चिप्स में होती है और गणना का काम इनके बीच संकेतों के ज़रिए नहीं होता। नोड्स के बीच सिर्फ सूचना प्रेषित होती है और गणना का काम प्रोसेसर पर होता है। मगर न्यूरल नेटवर्क्स में, जैसे आपके दिमाग में, प्रोसेसिंग का काम जोड़ों में होता है। जब सूचना एक तंत्रिका से दूसरी तंत्रिका में जाती है तो या तो उसे आवर्धित किया जाता है या दुर्बल कर दिया जाता है; यह नेटवर्क में ‘प्रोसेसिंग’ का एक अनोखा तरीका है। मगर प्रोसेसिंग का यह विचित्र व सरल तरीका व्यवहार में बहुत शक्तिशाली साबित होता है।

मैं उम्मीद करता हूं कि उपरोक्त विवरण से यह स्पष्ट हो गया होगा कि ‘विभिन्न मशीनों’ से मेरा तात्पर्य क्या है। आप देख ही सकते हैं कि अंतर शुद्धत: अवधारणा के स्तर पर है। इन दोनों में कोई समानता नहीं है। किसी न्यूरल नेटवर्क को निर्देशित करने के लिए उसे आपको उदाहरणों से सिखाना होगा। ट्यूरिंग मशीन को निर्देशित करने के लिए स्पष्ट निर्देश देने होंगे। यह अवलोकन से नहीं सीख सकती। न्यूरल नेटवर्क के मामले में चाहे आपको किसी हल को प्राप्त करने की विशिष्ट प्रक्रिया मालूम हो मगर इसे सीधे निर्देश नहीं दिए जा सकते। यह तो सिर्फ उदाहरणों और अवलोकनों से सीख सकता है। मैं समझता हूं अब यह साफ हो गया होगा कि हमारा दिमाग इतना शक्तिशाली क्यों है। यह अनुभवों और अवलोकनों से भी सीख सकता है और इसे किसी और के अवलोकनों से निर्देशित भी किया जा सकता है। इसी के चलते इन्सान ज्ञान सीख सकते हैं और फैला सकते हैं। कृत्रिम न्यूरल नेटवर्क सिर्फ सीख सकते हैं जबकि ट्यूरिंग मशीनें इसे फैला सकती हैं या नकल कर सकती हैं।

और अंत में - अभी यह चिंता मत पालिए कि न्यूरल नेटवर्क्स जल्दी ही दुनिया पर कब्ज़ा करने जा रहे हैं (वैज्ञानिक तौर पर भी नहीं)। धरती पर लाखों जीव हैं जिनके पास दिमाग है और जो सोच सकते हैं मगर वे मनुष्य से कमतर हैं। मुझे लगता है कि हमारे न्यूरल नेटवर्क अगले सौ, दो सौ सालों में एक कीड़े के दिमाग की बराबरी भी नहीं कर पाएंगे। हाल ही में एक सेलेमैण्डर के दिमाग का अनुरूप तैयार किया गया है। मेरा ख्याल है कि हम जितना सोचते हैं, कंप्यूटर विज्ञान हमें स्वयं को उससे आगे सराहने का मौका देता है। अगली बार कोई आपको बुद्धू कहे तो तसल्ली रखिए कि दुनिया के सर्वश्रेष्ठ दिमाग मिलकर एक ऐसी मशीन नहीं बना पा रहे हैं जो एक कीड़े की बराबरी कर सके।


अर्चिश्मत गोरे: कम्प्यूटर विज्ञान में स्नातकोत्तर डिग्री हासिल करने के बाद हैदराबाद में माइक्रोसोफ्ट, इंडिया के साथ इंटर्नशिप कर रहे हैं।
अंग्रेज़ी से अनुवाद: सुशील जोशी: एकलव्य द्वारा प्रकाशित स्रोत फीचर सेवा से जुड़े हैं। विज्ञान लेखन में रुचि।

Select and listen
14.394MBMemory Usage292msRequest Duration
Joomla! Version4.4.5
PHP Version8.1.31
Identityguest
Response200
Templatej51_maya
Database
Server
mysql
Version
8.0.40
Collation
utf8mb4_0900_ai_ci
Conn Collation
utf8mb4_0900_ai_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:56 [ "USER" => "eklavyaco" "HOME" => "/home/eklavyaco" "PATH_TRANSLATED" => "/home/eklav...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1743841461 "last" => 1743841461...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (542.17KB) (5.74ms)
  • afterInitialise (1.31MB) (34.41ms)
  • afterRoute (3.17MB) (19.66ms)
  • beforeRenderComponent com_content (73.16KB) (6.16ms)
  • Before Access::preloadComponents (all components) (34.2KB) (1.14ms)
  • After Access::preloadComponents (all components) (119.27KB) (3.87ms)
  • Before Access::preloadPermissions (com_content) (4.16KB) (53μs)
  • After Access::preloadPermissions (com_content) (3.54MB) (13.56ms)
  • Before Access::getAssetRules (id:1435 name:com_content.article.1141) (258.8KB) (330μs)
  • After Access::getAssetRules (id:1435 name:com_content.article.1141) (8.47KB) (228μs)
  • afterRenderComponent com_content (831.88KB) (55.52ms)
  • afterDispatch (2.28KB) (305μs)
  • beforeRenderRawModule mod_menu () (1.99MB) (78.6ms)
  • afterRenderRawModule mod_menu () (1.13MB) (9.31ms)
  • beforeRenderModule mod_menu () (696B) (16μs)
  • afterRenderModule mod_menu () (26.88KB) (182μs)
  • beforeRenderRawModule mod_menu () (24.38KB) (52μs)
  • afterRenderRawModule mod_menu () (26.45KB) (2.83ms)
  • beforeRenderModule mod_menu () (696B) (19μs)
  • afterRenderModule mod_menu () (26.27KB) (166μs)
  • beforeRenderRawModule mod_menu () (24.48KB) (70μs)
  • afterRenderRawModule mod_menu () (65.22KB) (219μs)
  • beforeRenderModule mod_menu () (696B) (4μs)
  • afterRenderModule mod_menu () (1.64KB) (92μs)
  • beforeRenderRawModule mod_menu (More) (19.64KB) (1.04ms)
  • afterRenderRawModule mod_menu (More) (12.04KB) (476μs)
  • beforeRenderModule mod_menu (More) (704B) (8μs)
  • afterRenderModule mod_menu (More) (12.94KB) (1.1ms)
  • beforeRenderRawModule mod_menu (Gallery) (16B) (87μs)
  • afterRenderRawModule mod_menu (Gallery) (13.38KB) (577μs)
  • beforeRenderModule mod_menu (Gallery) (704B) (8μs)
  • afterRenderModule mod_menu (Gallery) (2.98KB) (119μs)
  • beforeRenderRawModule mod_menu (Magazine) (32B) (63μs)
  • afterRenderRawModule mod_menu (Magazine) (21.47KB) (317μs)
  • beforeRenderModule mod_menu (Magazine) (704B) (5μs)
  • afterRenderModule mod_menu (Magazine) (12.3KB) (934μs)
  • beforeRenderRawModule mod_menu (Books) (32B) (273μs)
  • afterRenderRawModule mod_menu (Books) (26.94KB) (576μs)
  • beforeRenderModule mod_menu (Books) (704B) (7μs)
  • afterRenderModule mod_menu (Books) (12.18KB) (887μs)
  • beforeRenderRawModule mod_menu (Eklavya) (32B) (85μs)
  • afterRenderRawModule mod_menu (Eklavya) (53.14KB) (816μs)
  • beforeRenderModule mod_menu (Eklavya) (704B) (12μs)
  • afterRenderModule mod_menu (Eklavya) (12.05KB) (1.19ms)
  • beforeRenderRawModule mod_related_items (Related Articles) (1.89KB) (80μs)
  • afterRenderRawModule mod_related_items (Related Articles) (16.7KB) (2.06ms)
  • beforeRenderModule mod_related_items (Related Articles) (704B) (16μs)
  • afterRenderModule mod_related_items (Related Articles) (8.75KB) (768μs)
  • beforeRenderRawModule mod_articles_category (Articles) (7.7KB) (61μs)
  • Before Access::getAssetRules (id:8 name:com_content) (54.08KB) (2.05ms)
  • After Access::getAssetRules (id:8 name:com_content) (6.95KB) (57μs)
  • afterRenderRawModule mod_articles_category (Articles) (22.58KB) (9.61ms)
  • beforeRenderModule mod_articles_category (Articles) (704B) (11μs)
  • afterRenderModule mod_articles_category (Articles) (18.07KB) (1.65ms)
  • beforeRenderRawModule mod_search (Search module) (8.53KB) (144μs)
  • afterRenderRawModule mod_search (Search module) (2.59KB) (175μs)
  • beforeRenderModule mod_search (Search module) (720B) (7μs)
  • afterRenderModule mod_search (Search module) (1.26KB) (142μs)
  • beforeRenderRawModule mod_breadcrumbs (Breadcrumb) (2.41KB) (84μs)
  • afterRenderRawModule mod_breadcrumbs (Breadcrumb) (14.77KB) (1.38ms)
  • beforeRenderModule mod_breadcrumbs (Breadcrumb) (704B) (14μs)
  • afterRenderModule mod_breadcrumbs (Breadcrumb) (1.21KB) (214μs)
  • beforeRenderRawModule mod_menu (Search test Menu in content top) (1.95KB) (45μs)
  • afterRenderRawModule mod_menu (Search test Menu in content top) (15.65KB) (752μs)
  • beforeRenderModule mod_menu (Search test Menu in content top) (736B) (11μs)
  • afterRenderModule mod_menu (Search test Menu in content top) (12.23KB) (147μs)
  • beforeRenderRawModule mod_finder (search 22) (352B) (25μs)
  • afterRenderRawModule mod_finder (search 22) (241.79KB) (5.86ms)
  • beforeRenderModule mod_finder (search 22) (720B) (10μs)
  • afterRenderModule mod_finder (search 22) (1.23KB) (167μs)
  • beforeRenderRawModule mod_jfilters_filters (JFilters Filters) (672B) (35μs)
  • afterRenderRawModule mod_jfilters_filters (JFilters Filters) (253.09KB) (16.44ms)
  • beforeRenderModule mod_jfilters_filters (JFilters Filters) (736B) (15μs)
  • afterRenderModule mod_jfilters_filters (JFilters Filters) (1.23KB) (214μs)
  • beforeRenderRawModule mod_search (Search (Top)) (56B) (112μs)
  • afterRenderRawModule mod_search (Search (Top)) (944B) (42μs)
  • beforeRenderModule mod_search (Search (Top)) (720B) (3μs)
  • afterRenderModule mod_search (Search (Top)) (1.23KB) (83μs)
  • afterRender (399.45KB) (6.72ms)
  • 1 x beforeRenderRawModule mod_menu () (1.99MB) (26.9%)
    78.60ms
    1 x afterRenderComponent com_content (831.88KB) (19%)
    55.52ms
    1 x afterInitialise (1.31MB) (11.78%)
    34.41ms
    1 x afterRoute (3.17MB) (6.73%)
    19.66ms
    1 x afterRenderRawModule mod_jfilters_filters (JFilters Filters) (253.09KB) (5.63%)
    16.44ms
    1 x After Access::preloadPermissions (com_content) (3.54MB) (4.64%)
    13.56ms
    1 x afterRenderRawModule mod_articles_category (Articles) (22.58KB) (3.29%)
    9.61ms
    1 x afterRenderRawModule mod_menu () (1.13MB) (3.19%)
    9.31ms
    1 x afterRender (399.45KB) (2.3%)
    6.72ms
    1 x beforeRenderComponent com_content (73.16KB) (2.11%)
    6.16ms
    1 x afterRenderRawModule mod_finder (search 22) (241.79KB) (2%)
    5.86ms
    1 x afterLoad (542.17KB) (1.96%)
    5.74ms
    1 x After Access::preloadComponents (all components) (119.27KB) (1.32%)
    3.87ms
    1 x afterRenderRawModule mod_menu () (26.45KB) (0.97%)
    2.83ms
    1 x afterRenderRawModule mod_related_items (Related Articles) (16.7KB) (0.71%)
    2.06ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (54.08KB) (0.7%)
    2.05ms
    1 x afterRenderModule mod_articles_category (Articles) (18.07KB) (0.56%)
    1.65ms
    1 x afterRenderRawModule mod_breadcrumbs (Breadcrumb) (14.77KB) (0.47%)
    1.38ms
    1 x afterRenderModule mod_menu (Eklavya) (12.05KB) (0.41%)
    1.19ms
    1 x Before Access::preloadComponents (all components) (34.2KB) (0.39%)
    1.14ms
    1 x afterRenderModule mod_menu (More) (12.94KB) (0.38%)
    1.10ms
    1 x beforeRenderRawModule mod_menu (More) (19.64KB) (0.36%)
    1.04ms
    1 x afterRenderModule mod_menu (Magazine) (12.3KB) (0.32%)
    934μs
    1 x afterRenderModule mod_menu (Books) (12.18KB) (0.3%)
    887μs
    1 x afterRenderRawModule mod_menu (Eklavya) (53.14KB) (0.28%)
    816μs
    1 x afterRenderModule mod_related_items (Related Articles) (8.75KB) (0.26%)
    768μs
    1 x afterRenderRawModule mod_menu (Search test Menu in content top) (15.65KB) (0.26%)
    752μs
    1 x afterRenderRawModule mod_menu (Gallery) (13.38KB) (0.2%)
    577μs
    1 x afterRenderRawModule mod_menu (Books) (26.94KB) (0.2%)
    576μs
    1 x afterRenderRawModule mod_menu (More) (12.04KB) (0.16%)
    476μs
    1 x Before Access::getAssetRules (id:1435 name:com_content.article.1141) (258.8KB) (0.11%)
    330μs
    1 x afterRenderRawModule mod_menu (Magazine) (21.47KB) (0.11%)
    317μs
    1 x afterDispatch (2.28KB) (0.1%)
    305μs
    1 x beforeRenderRawModule mod_menu (Books) (32B) (0.09%)
    273μs
    1 x After Access::getAssetRules (id:1435 name:com_content.article.1141) (8.47KB) (0.08%)
    228μs
    1 x afterRenderRawModule mod_menu () (65.22KB) (0.07%)
    219μs
    1 x afterRenderModule mod_breadcrumbs (Breadcrumb) (1.21KB) (0.07%)
    214μs
    1 x afterRenderModule mod_jfilters_filters (JFilters Filters) (1.23KB) (0.07%)
    214μs
    1 x afterRenderModule mod_menu () (26.88KB) (0.06%)
    182μs
    1 x afterRenderRawModule mod_search (Search module) (2.59KB) (0.06%)
    175μs
    1 x afterRenderModule mod_finder (search 22) (1.23KB) (0.06%)
    167μs
    1 x afterRenderModule mod_menu () (26.27KB) (0.06%)
    166μs
    1 x afterRenderModule mod_menu (Search test Menu in content top) (12.23KB) (0.05%)
    147μs
    1 x beforeRenderRawModule mod_search (Search module) (8.53KB) (0.05%)
    144μs
    1 x afterRenderModule mod_search (Search module) (1.26KB) (0.05%)
    142μs
    1 x afterRenderModule mod_menu (Gallery) (2.98KB) (0.04%)
    119μs
    1 x beforeRenderRawModule mod_search (Search (Top)) (56B) (0.04%)
    112μs
    1 x afterRenderModule mod_menu () (1.64KB) (0.03%)
    92μs
    1 x beforeRenderRawModule mod_menu (Gallery) (16B) (0.03%)
    87μs
    1 x beforeRenderRawModule mod_menu (Eklavya) (32B) (0.03%)
    85μs
    1 x beforeRenderRawModule mod_breadcrumbs (Breadcrumb) (2.41KB) (0.03%)
    84μs
    1 x afterRenderModule mod_search (Search (Top)) (1.23KB) (0.03%)
    83μs
    1 x beforeRenderRawModule mod_related_items (Related Articles) (1.89KB) (0.03%)
    80μs
    1 x beforeRenderRawModule mod_menu () (24.48KB) (0.02%)
    70μs
    1 x beforeRenderRawModule mod_menu (Magazine) (32B) (0.02%)
    63μs
    1 x beforeRenderRawModule mod_articles_category (Articles) (7.7KB) (0.02%)
    61μs
    1 x After Access::getAssetRules (id:8 name:com_content) (6.95KB) (0.02%)
    57μs
    1 x Before Access::preloadPermissions (com_content) (4.16KB) (0.02%)
    53μs
    1 x beforeRenderRawModule mod_menu () (24.38KB) (0.02%)
    52μs
    1 x beforeRenderRawModule mod_menu (Search test Menu in content top) (1.95KB) (0.02%)
    45μs
    1 x afterRenderRawModule mod_search (Search (Top)) (944B) (0.01%)
    42μs
    3 x beforeRenderModule mod_menu () (696B) (0.01%)
    39μs
    1 x beforeRenderRawModule mod_jfilters_filters (JFilters Filters) (672B) (0.01%)
    35μs
    1 x beforeRenderRawModule mod_finder (search 22) (352B) (0.01%)
    25μs
    1 x beforeRenderModule mod_related_items (Related Articles) (704B) (0.01%)
    16μs
    1 x beforeRenderModule mod_jfilters_filters (JFilters Filters) (736B) (0.01%)
    15μs
    1 x beforeRenderModule mod_breadcrumbs (Breadcrumb) (704B) (0%)
    14μs
    1 x beforeRenderModule mod_menu (Eklavya) (704B) (0%)
    12μs
    1 x beforeRenderModule mod_articles_category (Articles) (704B) (0%)
    11μs
    1 x beforeRenderModule mod_menu (Search test Menu in content top) (736B) (0%)
    11μs
    1 x beforeRenderModule mod_finder (search 22) (720B) (0%)
    10μs
    1 x beforeRenderModule mod_menu (More) (704B) (0%)
    8μs
    1 x beforeRenderModule mod_menu (Gallery) (704B) (0%)
    8μs
    1 x beforeRenderModule mod_search (Search module) (720B) (0%)
    7μs
    1 x beforeRenderModule mod_menu (Books) (704B) (0%)
    7μs
    1 x beforeRenderModule mod_menu (Magazine) (704B) (0%)
    5μs
    1 x beforeRenderModule mod_search (Search (Top)) (720B) (0%)
    3μs
143 statements were executed, 3 of which were duplicates, 140 unique89.91ms3.57MB
  • SELECT @@SESSION.sql_mode;286μs1.57KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `j4_session` WHERE `session_id` = ?360μs1.61KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `j4_session` WHERE `session_id` = :session_id LIMIT 1180μs1.61KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `j4_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)300μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `j4_extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1690μs2.36KB/libraries/src/Component/ComponentHelper.php:399Copy
  • SELECT `id`,`rules` FROM `j4_viewlevels`319μs976B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `j4_usergroups` AS `a` LEFT JOIN `j4_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest552μs1.63KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `j4_extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1) ORDER BY `ordering`1.67ms4.27KBParams/libraries/src/Plugin/PluginHelper.php:294Copy
  • SELECT * FROM j4_rsform_config530μs2.56KB/administrator/components/com_rsform/helpers/config.php:52Copy
  • SELECT `m`.`id`,`m`.`menutype`,`m`.`title`,`m`.`alias`,`m`.`note`,`m`.`link`,`m`.`type`,`m`.`level`,`m`.`language`,`m`.`browserNav`,`m`.`access`,`m`.`params`,`m`.`home`,`m`.`img`,`m`.`template_style_id`,`m`.`component_id`,`m`.`parent_id`,`m`.`path` AS `route`,`e`.`element` AS `component` FROM `j4_menu` AS `m` LEFT JOIN `j4_extensions` AS `e` ON `m`.`component_id` = `e`.`extension_id` WHERE ( (`m`.`published` = 1 AND `m`.`parent_id` > 0 AND `m`.`client_id` = 0) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :currentDate1)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :currentDate2) ORDER BY `m`.`lft`2.52ms167.05KBParams/libraries/src/Menu/SiteMenu.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `j4_categories` AS `s` INNER JOIN `j4_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`7.4ms2.15MBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT * FROM `j4_languages` WHERE `published` = 1 ORDER BY `ordering` ASC450μs2.22KB/libraries/src/Language/LanguageHelper.php:142Copy
  • SELECT `id`,`home`,`template`,`s`.`params`,`inheritable`,`parent` FROM `j4_template_styles` AS `s` LEFT JOIN `j4_extensions` AS `e` ON `e`.`element` = `s`.`template` AND `e`.`type` = 'template' AND `e`.`client_id` = `s`.`client_id` WHERE `s`.`client_id` = 0 AND `e`.`enabled` = 1802μs1.14KB/administrator/components/com_templates/src/Model/StyleModel.php:773Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `j4_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39,:preparedArray40,:preparedArray41,:preparedArray42,:preparedArray43,:preparedArray44,:preparedArray45,:preparedArray46,:preparedArray47)1.78ms8.12KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `j4_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 06.75ms345.8KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `j4_content`1.89ms2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `j4_content` SET `hits` = (`hits` + 1) WHERE `id` = '1141'6.12ms2.55KB/libraries/src/Table/Table.php:1325Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `j4_content` AS `a` INNER JOIN `j4_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `j4_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `j4_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `j4_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `j4_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)1.55ms144.63KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `j4_categories` AS `s` INNER JOIN `j4_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`7.21ms21.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `j4_contentitem_tag_map` AS `m` INNER JOIN `j4_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1)757μs5.2KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `j4_categories` AS `s` INNER JOIN `j4_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`3.8ms21.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM j4_fields AS a LEFT JOIN `j4_languages` AS l ON l.lang_code = a.language LEFT JOIN j4_users AS uc ON uc.id=a.checked_out LEFT JOIN j4_viewlevels AS ag ON ag.id = a.access LEFT JOIN j4_users AS ua ON ua.id = a.created_user_id LEFT JOIN j4_fields_groups AS g ON g.id = a.group_id LEFT JOIN `j4_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5)) AND `a`.`access` IN (:preparedArray6)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC2.08ms6.06KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `j4_categories` AS `s` INNER JOIN `j4_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`6.31ms21.19KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT m.id, m.title, m.module, m.position, m.content, m.showtitle, m.params,am.params AS extra, 0 AS menuid, m.publish_up, m.publish_down FROM j4_modules AS m LEFT JOIN j4_extensions AS e ON e.element = m.module AND e.client_id = m.client_id LEFT JOIN j4_advancedmodules as am ON am.module_id = m.id WHERE m.published = 1 AND e.enabled = 1 AND m.client_id = 0 ORDER BY m.position, m.ordering1.39ms50.67KB/plugins/system/advancedmodules/src/Helper.php:191Copy
  • SELECT m.condition_id,m.item_id FROM j4_conditions_map as m LEFT JOIN j4_conditions as c ON c.id = m.condition_id WHERE `m`.`extension` = 'com_advancedmodules' AND `c`.`published` = 11.03ms1.75KB/administrator/components/com_conditions/src/Model/ItemModel.php:821Copy
  • SHOW FULL COLUMNS FROM `j4_conditions`1.48ms2.08KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '14'336μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 14282μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 14292μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 14 ORDER BY m.extension,m.item_id718μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT `id`,`title` AS `value` FROM `j4_modules`1.06ms3.38KB/administrator/components/com_conditions/src/Helper/Helper.php:184Copy
  • SHOW FULL COLUMNS FROM `j4_modules`1.26ms2.2KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • SELECT `id`,`published` AS `value` FROM `j4_modules`373μs14.38KB/administrator/components/com_conditions/src/Helper/Helper.php:184Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '15'200μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 15194μs1008B/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 15 ORDER BY m.extension,m.item_id176μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '16'165μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 16175μs1008B/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 16 ORDER BY m.extension,m.item_id165μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '18'195μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 18146μs1008B/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 18 ORDER BY m.extension,m.item_id158μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '23'162μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 23173μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 19159μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 23 ORDER BY m.extension,m.item_id157μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '24'242μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 24272μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 20153μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 24 ORDER BY m.extension,m.item_id156μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '25'150μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 25181μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 21146μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 25 ORDER BY m.extension,m.item_id151μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '53'155μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 53145μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 45176μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 53 ORDER BY m.extension,m.item_id149μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '29'143μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 29143μs1008B/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 29 ORDER BY m.extension,m.item_id187μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '31'141μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 31281μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 43149μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 31 ORDER BY m.extension,m.item_id163μs9.02KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '36'153μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 36164μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 31147μs1.14KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 36 ORDER BY m.extension,m.item_id146μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '10'152μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 10152μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 10154μs1.14KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 10 ORDER BY m.extension,m.item_id151μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '37'161μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 37147μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 32169μs1.14KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 37 ORDER BY m.extension,m.item_id153μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '35'160μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 35150μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 30179μs1.14KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 35 ORDER BY m.extension,m.item_id149μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '51'295μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 51146μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 41153μs1.16KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 51 ORDER BY m.extension,m.item_id172μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '54'153μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 54152μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 46149μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 54 ORDER BY m.extension,m.item_id176μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '7'169μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 7148μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 7150μs1.14KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 7 ORDER BY m.extension,m.item_id254μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '45'217μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 45147μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 39155μs1.16KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 45 ORDER BY m.extension,m.item_id173μs1.11KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '50'152μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 50147μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 40178μs1.16KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 50 ORDER BY m.extension,m.item_id149μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '11'244μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 11145μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 11145μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 11 ORDER BY m.extension,m.item_id145μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '30'149μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 30147μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 25186μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 30 ORDER BY m.extension,m.item_id159μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '5'178μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 5142μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 5143μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 5 ORDER BY m.extension,m.item_id175μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '52'152μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 52154μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 42149μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 52 ORDER BY m.extension,m.item_id185μs1.02KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '4'155μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 4154μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 4149μs1.13KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 4 ORDER BY m.extension,m.item_id144μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '1'151μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 1172μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 1288μs1.14KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 1 ORDER BY m.extension,m.item_id152μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT * FROM `j4_conditions` WHERE `id` = '2'152μs2.06KB/libraries/src/Table/Table.php:755Copy
  • SELECT * FROM j4_conditions_groups as g WHERE g.condition_id = 2172μs1KB/administrator/components/com_conditions/src/Model/ItemModel.php:1034Copy
  • SELECT * FROM j4_conditions_rules as r WHERE r.group_id = 2262μs1.14KB/administrator/components/com_conditions/src/Model/GroupModel.php:108Copy
  • SELECT m.extension,m.item_id,m.table,m.name_column FROM j4_conditions_map as m WHERE m.condition_id = 2 ORDER BY m.extension,m.item_id155μs17KB/administrator/components/com_conditions/src/Model/ItemModel.php:907Copy
  • SELECT a.params FROM j4_advancedmodules AS a WHERE a.module_id = 191278μs840B/plugins/system/advancedmodules/src/Helper.php:151Copy
  • SELECT a.params FROM j4_advancedmodules AS a WHERE a.module_id = 189218μs840B/plugins/system/advancedmodules/src/Helper.php:151Copy
  • SELECT a.params FROM j4_advancedmodules AS a WHERE a.module_id = 188247μs840B/plugins/system/advancedmodules/src/Helper.php:151Copy
  • SELECT a.params FROM j4_advancedmodules AS a WHERE a.module_id = 185235μs840B/plugins/system/advancedmodules/src/Helper.php:151Copy
  • SELECT `metakey` FROM `j4_content` WHERE `id` = :id375μs1.63KBParams/modules/mod_related_items/src/Helper/RelatedItemsHelper.php:88Copy
  • SELECT a.params FROM j4_advancedmodules AS a WHERE a.module_id = 223235μs840B/plugins/system/advancedmodules/src/Helper.php:151Copy
  • SELECT `a`.`id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,CASE WHEN `a`.`publish_up` IS NULL THEN `a`.`created` ELSE `a`.`publish_up` END AS `publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`metadata`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`featured`,`a`.`language`,LENGTH(`a`.`fulltext`) AS `readmore`,`a`.`ordering`,`fp`.`featured_up`,`fp`.`featured_down`,CASE WHEN `c`.`published` = 2 AND `a`.`state` > 0 THEN 2 WHEN `c`.`published` != 1 THEN 0 ELSE `a`.`state` END AS `state`,`c`.`title` AS `category_title`,`c`.`path` AS `category_route`,`c`.`access` AS `category_access`,`c`.`alias` AS `category_alias`,`c`.`language` AS `category_language`,`c`.`published`,`c`.`published` AS `parents_published`,`c`.`lft`,CASE WHEN `a`.`created_by_alias` > ' ' THEN `a`.`created_by_alias` ELSE `ua`.`name` END AS `author`,`ua`.`email` AS `author_email`,`uam`.`name` AS `modified_by_name`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,COALESCE(NULLIF(ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1), 0), 0) AS `rating`,COALESCE(NULLIF(`v`.`rating_count`, 0), 0) AS `rating_count` FROM `j4_content` AS `a` LEFT JOIN `j4_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `j4_users` AS `ua` ON `ua`.`id` = `a`.`created_by` LEFT JOIN `j4_users` AS `uam` ON `uam`.`id` = `a`.`modified_by` LEFT JOIN `j4_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `j4_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `j4_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE `a`.`access` IN (:preparedArray1) AND `c`.`access` IN (:preparedArray2) AND `c`.`published` = 1 AND `a`.`state` = :condition AND `a`.`catid` IN (:preparedArray3) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) ORDER BY a.ordering ASC6.43ms445KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT a.params FROM j4_advancedmodules AS a WHERE a.module_id = 224353μs840B/plugins/system/advancedmodules/src/Helper.php:151Copy
  • SELECT `name`,`element` FROM `j4_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1531μs1KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `j4_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1)401μs936B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT a.id, a.parent_id, a.config_name, a.name, a.context, a.label, a.alias, a.display, a.state, a.access, a.root, a.ordering, a.checked_out, a.checked_out_time, a.created_time, a.updated_time, a.language,`a`.`attribs` AS `attributes` FROM `j4_jfilters_filters` AS `a` WHERE `a`.`access` IN (:preparedArray1) AND `a`.`state` IN (:preparedArray2,:preparedArray3) ORDER BY a.ordering ASC819μs4.52KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `j4_scheduler_tasks` AS `a` WHERE `a`.`state` = 1498μs1.68KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:466Copy
  • SELECT `session_id` FROM `j4_session` WHERE `session_id` = ?198μs1.63KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `j4_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?441μs912BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy