ट्यूरिंग संपूर्णता का एक पहलू रुकने की समस्या है ।
इसका मतलब यह है कि, यदि सीएसएस ट्यूरिंग पूरा हो गया है, तो यह निर्धारित करने के लिए कोई सामान्य एल्गोरिथ्म नहीं है कि क्या सीएसएस प्रोग्राम हमेशा के लिए रनिंग या लूप खत्म कर देगा।
लेकिन हम CSS के लिए इस तरह के एक एल्गोरिथ्म प्राप्त कर सकते हैं! यह रहा:
बस। चूंकि हमने सीएसएस के लिए केवल हल करने की समस्या को हल किया है, इसलिए यह निम्न है कि सीएसएस ट्यूरिंग पूरा नहीं है ।
(अन्य लोगों ने IE 6 का उल्लेख किया है, जो सीएसएस में मनमानी जावास्क्रिप्ट अभिव्यक्तियों को एम्बेड करने की अनुमति देता है; जो स्पष्ट रूप से ट्यूरिंग पूर्णता को जोड़ देगा। लेकिन यह सुविधा गैर-मानक है, और उनके सही दिमाग में कोई भी इसका उपयोग नहीं करता है।)
डैनियल वैगनर ने एक बिंदु को सामने लाया जिसे मैंने मूल उत्तर में याद किया। वह नोट करता है कि जब मैंने एनिमेशन को कवर किया है , तो स्टाइल इंजन के अन्य भागों जैसे चयनकर्ता मिलान या लेआउट के साथ-साथ ट्यूरिंग पूर्णता भी हो सकती है। हालांकि इन के बारे में औपचारिक तर्क देना मुश्किल है, मैं यह रेखांकित करने की कोशिश करूंगा कि ट्यूरिंग पूर्णता अभी भी होने की संभावना नहीं है।
पहला: ट्यूरिंग पूर्ण भाषाओं में डेटा वापस फीड करने का कोई तरीका है , चाहे वह रिकर्सन या लूपिंग के माध्यम से हो। लेकिन सीएसएस भाषा का डिज़ाइन इस प्रतिक्रिया के लिए प्रतिकूल है:
@media
क्वेरीज़ केवल ब्राउज़र के गुणों की जांच कर सकती हैं, जैसे व्यूपोर्ट आकार या पिक्सेल रिज़ॉल्यूशन। ये गुण उपयोगकर्ता इंटरैक्शन या जावास्क्रिप्ट कोड (जैसे ब्राउज़र विंडो का आकार बदलना) के माध्यम से बदल सकते हैं, लेकिन अकेले सीएसएस के माध्यम से नहीं।
::before
और ::after
छद्म तत्वों को DOM का हिस्सा नहीं माना जाता है , और इसे किसी अन्य तरीके से मिलान नहीं किया जा सकता है।
चयनकर्ता कॉम्बिनेटर केवल वर्तमान तत्व के ऊपर और पहले के तत्वों का निरीक्षण कर सकते हैं, इसलिए उनका उपयोग निर्भरता चक्र बनाने के लिए नहीं किया जा सकता है।
जब आप इस पर मंडराते हैं , तो किसी तत्व को स्थानांतरित करना संभव होता है , लेकिन स्थिति केवल माउस ले जाने पर ही अपडेट होती है।
आपको यह समझाने के लिए पर्याप्त होना चाहिए कि चयनकर्ता मिलान, अपने दम पर, ट्यूरिंग पूर्ण नहीं हो सकता है । लेकिन लेआउट के बारे में क्या?
आधुनिक सीएसएस लेआउट एल्गोरिथ्म बहुत जटिल है, जिसमें फ्लेक्सबॉक्स और ग्रिड के पानी कीचड़ डालने जैसी विशेषताएं हैं। लेकिन भले ही लेआउट के साथ अनंत लूप को ट्रिगर करना संभव था, लेकिन उपयोगी संगणना करने के लिए इसका लाभ उठाना कठिन होगा। ऐसा इसलिए है क्योंकि CSS चयनकर्ता केवल DOM की आंतरिक संरचना का निरीक्षण करते हैं, न कि इन तत्वों को स्क्रीन पर कैसे रखा जाता है। इसलिए लेआउट सिस्टम का उपयोग करते हुए कोई भी ट्यूरिंग पूर्णता प्रमाण केवल लेआउट पर निर्भर होना चाहिए ।
अंत में - और यह शायद सबसे महत्वपूर्ण कारण है - ब्राउज़र विक्रेताओं को सीएसएस को ट्यूरिंग पूरा नहीं रखने में रुचि है । भाषा को प्रतिबंधित करके, विक्रेता चतुर अनुकूलन के लिए अनुमति देते हैं जो सभी के लिए वेब को तेज बनाते हैं। इसके अलावा, Google Chrome में बग खोजने के लिए एक संपूर्ण सर्वर फ़ार्म समर्पित करता है । यदि सीएसएस का उपयोग करके एक अनंत लूप लिखने का एक तरीका था, तो वे शायद इसे पहले ही पा चुके होंगे to