एलन के द्वारा शब्द का आविष्कार करने से पहले उन्होंने ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को क्या कहा था?


22

एलन के का दावा है कि "मैंने" ऑब्जेक्ट-ओरिएंटेड "शब्द बनाया है, और मैं आपको बता सकता हूं कि मेरे मन में C ++ नहीं था।" उनके मन में जो था, ज़ाहिर है, स्मॉलटाक था। लेकिन उन्होंने ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ही नहीं की; उन्हें सिमूला से मूल विचार मिले। इसलिए यदि इस शब्द का अभी तक आविष्कार नहीं हुआ था, तो उन्होंने मूल रूप से सिमूला में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को क्या कहा?

जवाबों:


39

वास्तव में एलन के मन में स्मालटॉक नहीं था जब वह "ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग" शब्द के साथ आए:

उटाह में कुछ समय बाद ६६ के बाद जब स्केचपैड, सिमुला से प्रभावित, ARPAnet के लिए डिज़ाइन, बरोज़ B5000, और जीव विज्ञान और गणित में मेरी पृष्ठभूमि, मैंने प्रोग्रामिंग के लिए एक वास्तुकला के बारे में सोचा। यह शायद 1967 में था जब किसी ने मुझसे पूछा कि मैं क्या कर रहा था, और मैंने कहा: "यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग है"।

इसके मूल गर्भाधान के निम्नलिखित भाग थे।

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

स्मॉलटाक इस अवधारणा का परिणाम था, सिमुला से "ऑब्जेक्ट" और "क्लास" की अवधारणाओं को उधार लेना और विस्तारित करना, जो कि सिमुला को ALGOL से विरासत में मिला था, जैसा कि क्रिस्टन न्यागार्ड और ओले-जोहान द्वारा "सिमूला भाषाओं के विकास" पर वर्णित है दहल (1978, पृष्ठ 253):

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

इस अन्वेषण का एक परिणाम यह था कि "प्रक्रिया गुण" उपयोगी हो सकता है। "एब्स्ट्रैक्ट" कार ऑब्जेक्ट्स के एक वर्ग का निम्नलिखित उदाहरण भाषा परिभाषा दस्तावेज (डाहल और न्यागार्ड 1965), संप्रदाय से उद्धृत है। 5.3।

इसके अलावा प्रेरणा, विशेष रूप से सब-क्लासिंग के लिए, कार होरे का रिकॉर्ड क्लास था (पृष्ठ 258):

होरे (68) का उपवर्ग विचार एक प्राकृतिक शुरुआती बिंदु था, लेकिन इसमें दो कठिनाइयाँ थीं:

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

सफलता के बिना, हमारी आवश्यकताओं को पूरा करने के लिए होरे के रिकॉर्ड क्लास निर्माण को अनुकूलित करने की कोशिश में 1966 की शरद ऋतु के दौरान बहुत समय बिताया गया था। दिसंबर 1966 में "प्रीफिक्सिंग" के विचार के साथ, समाधान अचानक आया। हम एक पुल पर एटोल बूथ के संदर्भ में सोच रहे थे, जिसमें कारों की कतार थी जो या तो ट्रक या बस थे। (यह उदाहरण (डाहल और न्यागार्ड 1968 में) फिर से प्रकट होता है।

"क्लास" और "ऑब्जेक्ट" शब्द सिलेला 67 COMMON BASE LANGUAGE पर Ole-Johan Dahl, Bjorm Myhrhaug, और Kristen Nygaard (पृष्ठ 4-5) पर भी दिखाई देते हैं :

ब्लॉक अवधारणा "उप-समस्या" या "उप-एल्गोरिदम" की सहज धारणा से मेल खाती है जो रूढ़िवादी अनुप्रयोग क्षेत्रों में अपघटन की एक उपयोगी इकाई है।

ब्लॉक एक औपचारिक डेटा संरचना और संबद्ध एल्गोरिदम और क्रियाओं का एक औपचारिक विवरण या "पैटर्न" है।

...

एक विस्तारित ब्लॉक अवधारणा को "क्लास" घोषणा और संबद्ध इंटरैक्शन मैकेनिज्म जैसे "ऑब्जेक्ट रेफरेंस" (पॉइंटर्स), रिमोट एक्सेसिंग "," क्वैसी-पैरेलल "ऑपरेशन, और ब्लॉक" कॉनसेन्टेशन "के माध्यम से पेश किया जाता है।

अध्याय 1.3.3 (पृष्ठ 5) में कक्षाओं पर अधिक विस्तार से चर्चा की गई है:

सिमूला 67 में एक केंद्रीय नई अवधारणा "वस्तु" है। एक ऑब्जेक्ट एक स्व-निहित कार्यक्रम (ब्लॉक उदाहरण) है, जिसका अपना स्थानीय डेटा और "क्लास डिक्लेरेशन" द्वारा परिभाषित क्रियाएं हैं। कक्षा की घोषणा एक कार्यक्रम (डेटा और कार्रवाई) पैटर्न को परिभाषित करती है, और उस पैटर्न के अनुरूप वस्तुओं को "उसी वर्ग से संबंधित" कहा जाता है।

...

इसलिए, हालांकि "ऑब्जेक्ट ओरिएंटेड" शब्द का आविष्कार अभी तक नहीं किया गया था, लेकिन "क्लास" और "ऑब्जेक्ट" दोनों का उपयोग उनके आधुनिक उपयोग के लिए समान रूप से किया गया था, इससे पहले कि एलन काय ने 1969 में स्मॉलटाक विकसित करना शुरू किया था।

इवान सदरलैंड , स्केचपैड पर पहली ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज के रूप में सिमाला की पहचान करते हुए आगे बढ़ते हैं: एक आदमी-मशीन ग्राफिकल कम्युनिकेशन सिस्टम (पेज 4), जो कार होरेस, डगलस टी। रॉस ' , एएलओएल होल और स्केचपैड के प्रभावों को भी पहचानता है :

फिर भी, उपयोगकर्ताओं और प्रोग्रामरों के बीच विभाजन को हटाने के लिए सदरलैंड का प्रयास एकमात्र प्रणाली नहीं थी, जो ऐसा करने में विफल रही, एक नए प्रोग्रामिंग प्रतिमान को कल्पनाशील छलांग प्रदान की। न्यागार्ड और डाहल की सिमुला [7] ऑब्जेक्ट ओरिएंटेशन के सिद्धांतों को शामिल करने वाली पहली पारंपरिक प्रोग्रामिंग भाषा थी, लेकिन स्केचपैड का वर्ग और उदाहरण-आधारित वंशानुक्रम (हालांकि वस्तुओं को नहीं कहा जाता है) का कार्यान्वयन कई वर्षों से सिमूला से पहले था।

प्रतीत होता है कि डगलस टी। रॉस के काम के माध्यम से एक आम प्रभाव था, जो इस शोध प्रबंध की स्वीकार्यता में उल्लिखित है और इसके आधार पर एमआईटी लिंकन प्रयोगशाला तकनीकी रिपोर्ट में भी उद्धृत किया गया है। रॉस अल होरोल 68 समिति में 1960 के दशक के मध्य में कार होरे के साथ बैठा, जहां रिकॉर्ड-जैसी डेटा संरचना (जिसे एक जाल कहा जाता है) पर उसके पिछले काम ने सार डेटा प्रकारों पर होरे के अपने विचारों को प्रभावित किया [3], जिसे बाद में न्यगार्ड और डाहल ने श्रेय दिया। सिमूला [7] में वर्ग परिभाषा तंत्र की उत्पत्ति के रूप में।

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

हालाँकि, एलन के, स्पष्ट रूप से, स्मॉलटाक को पहली वस्तु उन्मुख भाषा मानते हैं :

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

और यह शब्द गढ़ा गया है, मुझे लगता है कि वहाँ बहुत बहस नहीं है।

अंत में अपने प्रश्न का उत्तर देने के लिए: ऑब्जेक्ट ओरिएंटेशन की कुछ मुख्य अवधारणाएँ सिमुला और पहले की भाषाओं जैसे कि अल्गोल और एलआईएसपी पर मौजूद थीं, लेकिन प्रतिमान स्वयं नहीं था, इसलिए वास्तव में एक नाम की आवश्यकता नहीं थी।

स्मालटाक को ऑब्जेक्ट ओरिएंटेशन को ध्यान में रखकर बनाया गया था, कम से कम एलन के ने ऑब्जेक्ट ओरिएंटेशन के रूप में सोचा था :

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

वास्तुकला पहले की अवधारणाओं के समामेलन की तरह लग सकता है, लेकिन इसकी केंद्रीय अवधारणाओं को स्मॉलटाक द्वारा पेश किया गया था, इस प्रकार प्रतिमान के पहले कार्यान्वयन को चिह्नित किया गया था।


2
+1 हमेशा की तरह, उत्कृष्ट उत्तर यानिस! मैंने इससे काफी कुछ सीखा है।
जोनाथन हेंसन

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

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

1
@JerryCoffin (cont ...) हालांकि यह लौ युद्ध क्षेत्र है, और मुझे नहीं लगता कि यह मायने रखता है। मुझे लगता है कि मैंने जिस सदरलैंड को शामिल किया है वह इस तथ्य को पर्याप्त रूप से प्रस्तुत करता है कि हर कोई इस बात से सहमत नहीं है कि काई ने "प्रतिमान" का आविष्कार किया है, और इस मामले पर मेरी व्यक्तिगत राय एक फुटनोट से अधिक कुछ नहीं है।
यानिस

5
दरअसल, केंद्रीय अवधारणा "प्रत्येक इकाई एक वस्तु है" नहीं है, बल्कि "प्रत्येक क्रिया एक संदेश भेजें" है। एलन काय यहां तक ​​कहता है कि उसे "ऑब्जेक्ट-ओरिएंटेड" नाम देने का पछतावा है और "मैसेज-ओरिएंटेड" जैसा कुछ बेहतर शब्द होता।
जोर्ग डब्ल्यू मित्तग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.