असेंबली भाषा का उपयोग करके डोनाल्ड नथ ने TAOCP क्यों लिखा है?


20

मुझे असेंबली भाषा का उपयोग करने से नफरत नहीं है, क्योंकि मैंने अपने ओएस कोर्स में कुछ लिखा है। लेकिन जाहिर है, विधानसभा भाषा में अमूर्तता का अभाव है, आपको विवरणों पर अधिक ध्यान देना होगा।

TAOCP लिखने के लिए असेंबली भाषा वास्तव में आवश्यक है?


6
विवरण है कि शैतान कहाँ है।
ब्लरफ्ल

5
@ बेलप्रूफ मैं शैतान में विश्वास नहीं करता। (मैं विवरण में हालांकि विश्वास करता हूं ... कंपकंपी )
जिमी हॉफ

3
TAOCP की पहली मात्रा 1968 में प्रकाशित हुई थी। हालांकि उच्च स्तर की भाषाएं निश्चित रूप से अस्तित्व में थीं, हाथ से लिखा कोडांतरक तब बहुत अधिक महत्वपूर्ण था, और मेनफ्रेम पर कंप्यूटिंग संसाधन फिर उसी क्रम में हो सकते थे जैसे कि 1980 के दशक के 8-बिट माइक्रो। गूथ को भी एक बार गोटो रखने के लिए काफी गंभीरता से तर्क दिया गया था क्योंकि कुछ एल्गोरिदम को कुछ अक्षमता के बिना नेस्टेड कंट्रोल फ्लो संरचनाओं का उपयोग करके नहीं लिखा जा सकता था। वह वास्तव में समय से पहले के अनुकूलन की वकालत नहीं करता था तब भी IIRC, वह केवल विकल्प की आवश्यकता के लिए उपलब्ध विकल्प चाहता था।
स्टीव 314

3
@ जिमीहॉफ: ओह, ठीक है, आपके मामले में, विवरण यह है कि डे विले कहां है।
ब्लरफ्ल

1
जेरी कॉफ़िन वह करने में सफल रहे जो मैं करना चाहता था, उन्होंने इसे स्रोत में देखा; ;-) मैंने उन अध्यायों में देखा, जहां MIX और MIXAL को पेश किया जाता है, जहां मुझे इस तरह के बयान नहीं मिलते ... शायद मुझे किसी दिन इलेक्ट्रॉनिक कॉपी मिलनी चाहिए। वैसे भी, मुझे लगता है कि इस मामले में जेरी के जवाब के लिए उत्तर टैग अधिक उपयुक्त होगा।
थॉमस

जवाबों:


22

वह न केवल MIXAL, MIX के लिए अपनी असेंबली भाषा का उपयोग करता है, बल्कि MIX, एक साधारण कंप्यूटर के लिए एक मॉडल (जैसे कि साठ के दशक में इस्तेमाल किया गया था)। यह शिक्षण के लिए एक मॉडल है जिसके साथ वह कुछ हद तक क्षेत्र में विकास से स्वतंत्र है।

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

इसके अलावा, जब तक कंप्यूटर सिद्धांत रूप में काम कर रहा होता है, जैसा कि उसका MIX करता है, तब तक उस बात को ध्यान में रखना एक अच्छी बात है यदि आप वास्तव में सीखने में रुचि रखते हैं कि उनके साथ कैसे काम करें।


ध्यान दें कि "कंपाइलर तकनीक" आधिकारिक तौर पर अनुमानित वॉल्यूम 7 का विषय है। यह अभी भी हो सकता है, लेकिन मुझे लगता है कि हर कोई खुश है कि नुथ ने इंतजार नहीं किया जब तक कि उसके पास प्रकाशन शुरू करने के लिए कंपाइलर नहीं था।
किलन फ़ॉथ

@KilianFoth हाँ मुझे पता है। लेकिन मुझे उम्मीद है कि इस तरह की किताब में कृत्रिम प्रोग्रामिंग भाषाओं का उपयोग किया जाएगा। संभवतः एक MMIX को लक्षित करना (दूसरा M टाइपो :-) आधारित कंप्यूटर नहीं है। और वॉल्यूम के ईटीए। 5 को 2020 है ....
थॉमस

56

आप युवा व्हिपसैन्पर मुझे कभी-कभी विस्मित कर देते हैं। आप सभी का अक्सर कोई ना कोई सुराग होता है कि स्कूल शुरू होने से पहले कुछ भी हुआ हो। (मुझे भी यही समस्या है। मुझे समझने में लंबा समय लगा कि 15 साल वास्तव में बहुत कम समय था, एक वयस्क दृष्टिकोण से। यह लगभग हिरोशिमा से क्यूबा मिसाइल संकट तक की अवधि है। मेरे लिए, द्वितीय विश्व युद्ध बस है। इतिहास, लेकिन मेरे पिता ने इसमें संघर्ष किया, और मेरी मां इस दौरान जूनियर हाई रहीं।)

TAOCP, वॉल्यूम। 1, "मौलिक एल्गोरिदम", 1 संस्करण, पहली बार 1968 में छपा था। यह 45 साल पहले है। नुथ ने तब से पहले श्रृंखला की योजना बनाना शुरू किया।

संदर्भ के लिए: इंटेल 8086 पहली बार 1978 में, दस साल बाद दिखाई दिया। PASCAL भाषा पहली बार 1971 में सामने आई; जेन्सेन और विर्थ की पुस्तक, भाषा के दूसरे संस्करण के बारे में, 1974 में सामने आई। C का प्रारंभिक विकास 1969-1973: K & R 1978 में प्रकाशित हुआ था।

नूथ ने इस क्षेत्र को कवर करने के लिए श्रृंखला का इरादा किया। उन्होंने चिकित्सकों के लिए उपयोगी होने के लिए स्टाइल, THEN सेट किया। उन्होंने कभी यह उम्मीद नहीं की कि श्रृंखला काफी हद तक उनके जीवन का काम बन जाएगी, या इसके लेखन के लिए जो संभवत: आधी शताब्दी से अधिक हो जाएगा जब वह अंत में समाप्त हो जाएगा।

असेंबली भाषा यकीनन आज उतनी महत्वपूर्ण नहीं है जितनी तब थी, लेकिन जावा / सी ++ / जावास्क्रिप्ट / पायथन / पर्ल मावेंस की तुलना में यह अभी भी बहुत महत्वपूर्ण है कि आप सभी को विश्वास है।

अब मेरे लॉन से निकलें!


नूथ ने 1960 में एक ALGOL कंपाइलर लागू किया, और ALGOL को एल्गोरिदम प्रकाशित करने के लिए उपयुक्त माना गया था, इसलिए मुझे नहीं लगता कि यह वास्तव में इस सवाल का जवाब देता है।
पीटर टेलर

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

1
यही कारण है कि मेरे स्कूल ने एक ऐतिहासिक कंप्यूटिंग क्लास की पेशकश की जहां आपको अल्टेयर और कुछ पीडीपी प्रोग्राम करने के लिए मिलते हैं।
रिग

@ रीग - गंभीरता से? अब मैं बूढ़ा होने लगा हूं। हालांकि एक नए भाड़े पर HPGL को समझाने और खोज करने के लिए उतने पुराने नहीं हैं, जितने कि उन्होंने कभी किसी पेन प्लॉटर के बारे में नहीं देखा या सुना था!
मार्टिन बेकेट

6
+1 मनोरंजक शेख़ी के साथ-साथ प्रासंगिक जानकारी के कारण।
लूज़र ड्रोग

43

नूथ प्रीफेस में अपने तर्क पर चर्चा करता है। मैं बस कुछ बिट्स और टुकड़े बोली हूँ:

... मुझे यह तय करने की आवश्यकता थी कि क्या बीजगणित की भाषा जैसे कि ALGOL या FORTRAN का उपयोग करें या इस उद्देश्य के लिए मशीन-उन्मुख भाषा का उपयोग करें। शायद आज के कई कंप्यूटर विशेषज्ञ मशीन-उन्मुख भाषा का उपयोग करने के मेरे निर्णय से असहमत होंगे, लेकिन मुझे यकीन हो गया है कि निम्नलिखित कारणों से यह निश्चित रूप से सही विकल्प था:

  1. बीजगणितीय भाषाएं यहां पर विचार की गई ग़ैर-समरूप समस्याओं की तुलना में संख्यात्मक समस्याओं के लिए अधिक अनुकूल हैं। [...]
  2. ... मशीन-उन्मुख भाषा में लिखने से, प्रोग्रामर बहुत अधिक कुशल विधि का उपयोग करेगा; यह वास्तविकता के बहुत करीब है।
  3. जिन कार्यक्रमों की हमें आवश्यकता है, कुछ अपवादों के साथ, बल्कि सभी कम ...
  4. एक व्यक्ति जो कंप्यूटर में लापरवाही से अधिक रुचि रखता है, उसे मशीन भाषा में अच्छी तरह से प्रशिक्षित किया जाना चाहिए ...
  5. कुछ मशीन भाषा वैसे भी आवश्यक होगी ...

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

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


इसके अलावा, कंपाइलर आम तौर पर उन दिनों में महंगे थे। TAOCP वॉल्यूम 1 के बाहर आने के वर्षों बाद, मैंने एक ऐसे स्थान पर साक्षात्कार किया, जो एक पर पैसा खर्च नहीं करना चाहता था (और, ईमानदार होना चाहिए, आईबीएम 370 असेंबलर वह बुरा नहीं था), और मेरी पत्नी ने एक विधानसभा भाषा की दुकान पर काम किया उसके कुछ साल बाद।
डेविड थॉर्नले

2
मैं बिंदु 4 को कैसे बढ़ा सकता हूँ ??
जेवियर

5
@ जेवियर को एक कॉपी मिलती है और मार्जिन में +1 लिखते हैं।
लूजर ने

29

नुथ ने अपने तर्क को भी अद्यतन किया है :

मशीन की भाषा क्यों है?

कई पाठकों को यह सोचने में कोई संदेह नहीं है, `` क्यों नथ एक उच्च-स्तरीय प्रोग्रामिंग भाषा से चिपके रहने के बजाय मिक्स को दूसरी मशीन से बदल देता है? इन दिनों शायद ही कोई असेंबलर इस्तेमाल करता हो। ''

ऐसे लोग अपनी राय के हकदार होते हैं, और उन्हें मेरी किताबों के मशीन-भाषा के हिस्सों को पढ़ने की ज़रूरत नहीं है। लेकिन मशीन भाषा के कारण जो मैंने 1960 के दशक की शुरुआत में लिखी गई वॉल्यूम 1 की प्रस्तावना में दिए थे, आज भी मान्य हैं:

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

इसके अलावा, अगर मैंने उच्च-स्तरीय भाषा का उपयोग किया, तो यह किस भाषा में होनी चाहिए? 1960 के दशक में मैंने शायद अल्गोल डब्ल्यू को चुना था; 1970 के दशक में, फिर मुझे पास्कल का उपयोग करके अपनी पुस्तकों को फिर से लिखना पड़ा; 1980 के दशक में, मैंने निश्चित रूप से C को सब कुछ बदल दिया होगा; 1990 के दशक में, मुझे C ++ और फिर संभवतः जावा में जाना होगा। 2000 के दशक में, फिर भी किसी अन्य भाषा में कोई संदेह नहीं होगा। मैं अपनी किताबों को फिर से लिखने का समय नहीं दे सकता क्योंकि भाषाएं फैशन के अंदर और बाहर जाती हैं; भाषाएं मेरी पुस्तकों की बात नहीं हैं, बल्कि यह है कि आप अपनी पसंदीदा भाषा में क्या कर सकते हैं। मेरी किताबें कालातीत सच्चाइयों पर केंद्रित हैं।

इसलिए मैं TAOCP में उच्च-स्तरीय भाषा के रूप में अंग्रेजी का उपयोग करना जारी रखूंगा, और मैं यह इंगित करने के लिए निम्न-स्तरीय भाषा का उपयोग करना जारी रखूंगा कि वास्तव में मशीनें कैसे गणना करती हैं। पाठक जो केवल एल्गोरिदम देखना चाहते हैं, जो पहले से ही एक प्लग-इन तरीके से पैक किए गए हैं, एक फैशनेबल भाषा का उपयोग करते हुए, अन्य लोगों की पुस्तकों को खरीदना चाहिए।

अच्छी खबर यह है कि आरआईएससी मशीनों के लिए प्रोग्रामिंग सुखद और सरल है, जब आरआईएससी मशीन में एक अच्छा साफ डिजाइन है। इसलिए मुझे मुख्य बिंदुओं से विचलित करने वाले, बहुत कम विवरणों को संग्रहीत करने की आवश्यकता नहीं है। इस लिहाज से MMIX, MIX से काफी बेहतर होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.