क्या अंतर है, वास्तव में?
एक प्रोग्रामिंग भाषा और इन अन्य भाषाओं के बीच वास्तविक और महत्वपूर्ण अंतर यह है:
HTML और CSS प्रस्तुति का वर्णन करते हैं , जबकि प्रोग्रामिंग भाषाएं फ़ंक्शन का वर्णन करती
हैं
मैं यह वर्णन करने का इरादा रखता हूं कि यह अंतर क्यों मायने रखता है, लेकिन इस मुद्दे पर वह पैतृकता कभी-कभी गलत होती है।
एक सच्ची कहानी :
मैंने एक बार "उचित" प्रोग्रामिंग भाषा का उपयोग करके एक जटिल प्रदर्शन प्रबंधन प्रणाली विकसित करने में कुछ महीने बिताए। इसने विभिन्न अन्य प्रणालियों से डेटा एकत्र करने की प्रक्रिया को स्वचालित कर दिया, उस डेटा पर विभिन्न जोड़तोड़ किए और फिर एक साधारण तालिका में परिणाम प्रस्तुत किए।
एक बार यह लाइव होने के बाद, एक वरिष्ठ प्रबंधक ने एक समान व्यवसाय के लिए लिखा एक उपकरण देखा, और पूछा कि क्या हम उनके विकल्प का उपयोग करके जो कुछ मैंने लिखा था, उसे बदल सकते हैं। इसके अलावा, वह परेशान था कि मैंने अपना समाधान विकसित करने में सप्ताह बिताए, जहां यह नया ऐप कुछ ही दिनों में लिखा गया था।
आगे की जांच से पता चला कि प्रबंधक का पसंदीदा विकल्प बिना किसी पदार्थ के सभी प्रस्तुति थी: बहुत सारे रंग और चिह्न और रेखांकन थे, लेकिन उनके पीछे बिल्कुल कोई तर्क नहीं था । सभी डेटा को इकट्ठा और मैन्युअल रूप से हेरफेर करना पड़ा। सुंदर इंटरफ़ेस के बावजूद, आवेदन अनिवार्य रूप से बेकार था।
मुझे यह कहते हुए खुशी हो रही है कि प्रश्न में प्रबंधक को समझा गया था कि मेरा दृष्टिकोण वह था जो उसकी वास्तविक व्यावसायिक आवश्यकताओं को पूरा करता था।
प्रस्तुति का महत्व :
अक्सर एक निहितार्थ होता है कि एचटीएमएल, सीएसएस आदि में कौशल किसी भी तरह "वास्तविक" प्रोग्रामिंग भाषाओं में कौशल से नीच हैं। यह एक गंभीर गलती है।
मेरी कहानी में, वरिष्ठ प्रबंधक ने महसूस किया कि डिजाइन उनके लिए बहुत महत्वपूर्ण था, इस हद तक कि वह शुरू में समारोह को अपने पक्ष में नजरअंदाज करने के लिए तैयार थे। अब, यदि यह एक अलग-थलग घटना थी, तो मैं सुझाव दे सकता हूं कि प्रबंधक सिर्फ मूर्खतापूर्ण था। लेकिन यह नहीं था। समय और फिर से, मैं ऐसे उपयोगकर्ताओं से मिला हूं जो आकर्षक ग्राफिक्स और व्हिस्की विजेट से प्रभावित हैं, लेकिन कच्ची कार्यक्षमता और मेरी तकनीकी उपलब्धियों से अप्रभावित हैं। मुझे लगता है कि यहां सीखने के लिए कई सबक हैं:
- लोग उन मानदंडों पर सॉफ्टवेयर का मूल्यांकन करते हैं जिन्हें वे समझते हैं। वे अक्सर अच्छे दिखने और बदसूरत के बीच अंतर को समझते हैं, लेकिन शायद ही कभी तकनीकी बारीकियों की सराहना करते हैं।
- लोग दिखावे से मूर्ख बनते हैं। यह एक अच्छी बात नहीं हो सकती है, लेकिन यह एक वास्तविकता है जिसे हमें जीना चाहिए।
- उपस्थिति सॉफ्टवेयर के बारे में लोगों के महसूस करने के तरीके को प्रभावित करती है। जिस तरह से लोग सॉफ्टवेयर के बारे में महसूस करते हैं, वह उनके लिए महत्वपूर्ण है। वास्तव में, लोग कभी-कभी ऐसे सॉफ़्टवेयर को प्राथमिकता देते हैं जो उन्हें ऐसे सॉफ़्टवेयर पर अच्छा महसूस करता है जो कार्यात्मक रूप से बेहतर है। वास्तव में, वे तकनीकी रूप से बेहतर उपकरणों की तुलना में फील-गुड टूल्स के साथ अधिक उत्पादक हो सकते हैं। इस हद तक, हमारे उपयोगकर्ताओं को मूर्ख नहीं बनाया जा रहा है। वे वास्तव में एक बुद्धिमान और विचारशील विकल्प बना रहे हैं।
- प्रोग्रामर के रूप में, हम अक्सर प्रस्तुति की भूमिका की उपेक्षा करते हैं क्योंकि हम फ़ंक्शन पर ध्यान केंद्रित करते हैं। कुछ हद तक, यह सही और उचित है। हालांकि, यह पहचानना महत्वपूर्ण है कि हमारे काम का एक और आयाम है जो हमारे ग्राहकों के लिए महत्वपूर्ण है।
इसलिए, प्रस्तुति-उन्मुख भाषा (HTML, CSS) महत्वपूर्ण हैं। उन लोगों द्वारा जोड़ा गया मूल्य जो इन उपकरणों का प्रभावी ढंग से उपयोग कर सकते हैं, उन्हें कम करके आंका नहीं जाना चाहिए।
वास्तविक प्रोग्रामिंग भाषाओं का महत्व
जैसा कि ओपी ने बताया, "वास्तविक" प्रोग्रामिंग भाषाएं ट्यूरिंग कम्प्लीट हैं। एक उचित उदास गीक के रूप में, मुझे यह बेहद आकर्षक लगता है। इसका मतलब है कि, टीसी भाषा में लिखे गए किसी भी कार्यक्रम के लिए , कार्यात्मक रूप से समकक्ष कार्यक्रम किसी अन्य टीसी भाषा में लिखा जा सकता है । बेशक, यह कहना नहीं है कि सभी भाषाएं समान हैं। उनमें से प्रत्येक की अपनी ताकत और कमजोरियां हैं जो उन्हें कुछ कार्यों के लिए अधिक या कम उपयुक्त बनाती हैं। हालांकि, I / O एक तरफ, इसका मतलब है कि सभी प्रोग्राम सभी वास्तविक प्रोग्रामिंग भाषाओं में लिखे जा सकते हैं।
(संयोग से, महत्वपूर्ण बात टीसी है। घोषणात्मक बनाम अनिवार्यता यहां एक लाल-हेरिंग है। एसक्यूएल, उदाहरण के लिए, घोषणात्मक है, लेकिन यह एक उचित प्रोग्रामिंग भाषा भी है क्योंकि यह टीसी है।)
बेशक, यह HTML या CSS जैसी मार्कअप लैंग्वेज का सच नहीं है। वास्तव में, समस्या की पूरी कक्षाएं हैं जो इन भाषाओं को आसानी से हल नहीं कर सकती हैं । जहां मैं कुछ भी प्रोग्राम कर सकता हूं , जो मैं एक वास्तविक प्रोग्रामिंग भाषा में चाहता हूं - लेआउट इंजन सहित - यह उन भाषाओं के साथ समान चीजें हासिल करना संभव नहीं है जो टीसी नहीं हैं।
जैसा कि मेरी कहानी में हाइलाइट किया गया है, HTML और उसके ilk का उपयोग प्रस्तुतिकरण के लिए किया जाता है। वास्तविक प्रोग्रामिंग भाषाओं का उपयोग कार्यक्षमता का उत्पादन करने के लिए किया जाता है।
प्रोग्रामर्स को इस बारे में पांडित्य क्यों है?
- प्रोग्रामर अपने कौशल को विकसित करने में बहुत समय, प्रयास और पैसा खर्च करते हैं। लोग स्वाभाविक रूप से उन चीजों को महत्व देते हैं जिनमें वे निवेश करते हैं ("आपका दिल जहां आपका पैसा है")।
- प्रोग्रामर अक्सर यूआई डिजाइनरों द्वारा हासिल किए गए तेजी से परिणाम की तुलना में परिणामों का उत्पादन करने में लगने वाले समय को उचित ठहराने की आवश्यकता महसूस करते हैं। ऐसा करने के लिए, उन्हें दो समूहों के बीच अंतर करने की आवश्यकता है जो वास्तव में करते हैं ।
- क्योंकि नियोक्ताओं को सही लोगों को सही नौकरियों पर लागू करने की आवश्यकता है। जब तक हम (अक्सर तकनीकी) मतभेदों को स्पष्ट नहीं करते हैं, प्रबंधक आसानी से गलत कॉल करते हैं।
- क्योंकि ऊपर उल्लिखित वास्तविक और मूलभूत अंतर है।
क्या हमेशा पांडित्य होना उचित है?
आइए इसका सामना करते हैं, प्रोग्रामर के रूप में हम स्वाभाविक रूप से पांडित्य हैं । यह क्षेत्र के अनुसार होता है। यह मदद नहीं करता है कि जब गैर-प्रोग्रामर हम क्या करते हैं यह समझने में नाकाम रहे हैं तो हम में से कई को जला दिया गया है।
फिर भी (और ईमानदार होने के लिए, यह मेरी प्राकृतिक प्रवृत्ति के खिलाफ जाता है), मुझे नहीं लगता कि जब भी वे हर छोटे से अधिक अंतर पर खिसकते हैं, तो हमें लोगों को बाहर बुलाने की आवश्यकता होती है ।
यहां महत्वपूर्ण बातें संदर्भ
और परिप्रेक्ष्य हैं ।
मुझे बताया गया है कि, एक जीवविज्ञानी के दृष्टिकोण से, एक टमाटर एक फल है। लेकिन जब मैं उन्हें सुपरमार्केट में खरीदता हूं, तो मैं उन्हें सब्जियों के बीच देखता हूं। क्यों? क्योंकि तकनीकी अंतर उस विशेष संदर्भ में मायने नहीं रखता है। इसके अलावा, भेद वास्तव में उनकी उपयोगिता के रास्ते में मिलेगा : यदि मैं पर्याप्त रूप से टमाटर को फलों के सलाद में शामिल करने के लिए पर्याप्त था, उदाहरण के लिए।
कंप्यूटर भाषाओं के साथ भी ऐसा ही है। ऐसे समय होते हैं जब प्रोग्रामिंग भाषाओं और अन्य भाषाओं के बीच अंतर वास्तव में मायने रखता है । अक्सर, हालांकि, हम सभी पूरी तरह से प्रभावी ढंग से संवाद कर सकते हैं जब बस उन सभी को एक साथ गांठ लगाते हैं। ओपी द्वारा जुड़े प्रश्न के मामले में, यह वास्तव में मायने नहीं रखता था कि कौन सी भाषाएं वास्तविक प्रोग्रामिंग भाषाएं थीं और जो नहीं थीं। भेद को इंगित करना किसी भी तरह से चर्चा को आगे नहीं बढ़ाता है। शुक्र है, एक छोटे से शोर को जोड़ने के अलावा (और एक दिलचस्प चर्चा के लिए उत्तेजना बन गया!) ओपी द्वारा जुड़ा हुआ वंशावली थोड़ा परिणाम था। हालांकि, इसकी सबसे खराब स्थिति में, पैदल सेना नकारात्मक भावनाओं को उत्तेजित कर सकती है और रिश्तों को नुकसान पहुंचा सकती है ... कम से कम मेरी पत्नी के अनुसार।
:-)
प्रोग्रामरों के बीच पैदल सेना से कैसे निपटें
मेरे एक उपदेशक मित्र ने एक बार धर्मोपदेश दिया था:
क्या यह मरने लायक पहाड़ी है?
वह उन जनरलों का जिक्र कर रहे थे जो रणनीतिक मूल्यांकन करते हैं कि किन लड़ाईयों में लड़ने लायक है: क्या लाभ लागत के लायक हैं?
- क्या वास्तव में इस अंतर को बनाने के लिए चर्चा के प्रवाह को बाधित करना लायक है?
- क्या मेरा पांडित्य अहंकार की भावना से या अतीत की चोट से है?
- क्या मेरी टिप्पणी दूसरों के कौशल के साथ-साथ मेरे स्वयं के भी मूल्य हैं?
बेशक, ऐसे समय होते हैं जब भेद करने की आवश्यकता होती है। मेरा उद्देश्य यह है कि जब मैं कोई योगदान करता हूं, तो यह हमारे सामूहिक प्रयासों में मूल्य जोड़ देगा।
यही है, आखिरकार, हर असली प्रोग्रामर की नौकरी ।