विभिन्न दृष्टिकोणों और अवधारणाओं को समझने के लिए क्या महत्वपूर्ण भाषाएँ हैं? [बन्द है]


172

जब आपके पास बोल्ट कटर की एक जोड़ी और वोदका की एक बोतल होती है, तो वुल्फ ब्लिटज़र के बोथहाउस के दरवाजे पर सब कुछ ताला की तरह दिखता है। (एक हथौड़ा और एक कील के साथ बदलें यदि आप xkcd नहीं पढ़ते हैं)

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

ऐसी कौन सी भाषाएं हैं जो एक अलग दृष्टिकोण लेती हैं और व्यावहारिक उपकरण चुनने या सैद्धांतिक समझ के लिए उपयोगी होगी?

मुझे दूसरी कार्यात्मक भाषा (हास्केल) या एक अन्य अनिवार्य OOP भाषा (रूबी) सीखने का मन नहीं है, और न ही मैं ब्रेनफक जैसी अव्यवहारिक मजेदार भाषाओं का अभ्यास करना चाहता हूं।

एक बहुत ही दिलचस्प बात मैंने खुद को फैक्टर की तरह मोनोइकोनिक स्टैक आधारित भाषाओं में पाया।

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


3
मैं अकेले xkcd संदर्भ के लिए +1 करता हूं, लेकिन सवाल दिलचस्प भी है।

63
आप एक सफल प्रोग्रामर लगते हैं, बाकी सब बढ़ जाता है। डिक होने की कोशिश नहीं कर रहा है, लेकिन ... आपका जीवन कैसा है वित्त-वार, रिश्ते-वार, स्वास्थ्य-वार, मजेदार-वार, शौक-वार? शायद अब उन चीजों में से कुछ को आगे बढ़ाने का समय है। मेरा मानना ​​है कि आपको एक बार में एक दर्जन से अधिक भाषाओं को जानने की आवश्यकता नहीं है। यदि आपको एक का उपयोग करने के लिए भुगतान किया जाता है - तो इसे सीखें। यदि आप एक के बारे में एक पुस्तक लिखना चाहते हैं - इसे जानें। इसके अलावा आपके पास एक अच्छा प्रोग्रामिंग बेस है। क्यों कुछ सीखें (जैसे जे - मेरी उप-राय :)) जिसे आप गंभीरता से नहीं पढ़ेंगे ($ बनाते हैं) कहीं भी उपयोग करें? एक कब्रिस्तान में सबसे अच्छे हैकर मत बनो।
हमीश ग्रुबीजन

6
हां, मैं अपने मानकों के अनुसार एक सफल प्रोग्रामर हूं। मैं वर्तमान में बहुत पैसा नहीं कमाता, लेकिन हे, मैं 19 साल का हूं। मैं उन सभी बिंदुओं और अधिक समय में निवेश करता हूं, लेकिन मुझे प्रोग्रामिंग में शौक और मजा दोनों मिलता है। मैं यह भी कहना चाहता हूं कि किसी भाषा को समझने और उस पर महारत हासिल करने में अंतर है। मेरे लिए मस्त पाइथन और क्लोजर ही काफी है। मैं अन्य विकल्पों को समझना चाहता हूं, क्योंकि यह मेरे कोड में सुधार करेगा, मुझे अपने कंप्यूटर को समझने में मदद करेगा और मुझे अपनी प्रोग्रामिंग भाषा को परिभाषित करने में मदद करेगा।
पेप्सन

5
क्या आपने Programmers.SE देखा है ? यह वहां पूछे जाने वाले प्रश्न के प्रकार में आता है।

जवाबों:


287

व्यावहारिकता के मामले अत्यधिक व्यक्तिपरक हैं, इसलिए मैं केवल यह कहूंगा कि विभिन्न भाषा प्रतिमान सीखना केवल आपको एक बेहतर विषय बनाने के लिए काम करेगा। उससे अधिक व्यावहारिक क्या है?

कार्यात्मक, हास्केल - मुझे पता है कि आपने कहा था कि आप नहीं चाहते थे, लेकिन आपको वास्तव में पुनर्विचार करना चाहिए। आपने क्लोजर और यहां तक ​​कि पायथन के साथ कुछ कार्यात्मक प्रदर्शन प्राप्त किया है, लेकिन आपने इसे हास्केल के बिना इसके पूर्ण अनुभव नहीं किया है। यदि आप वास्तव में हास्केल के खिलाफ हैं तो अच्छे समझौते या तो एमएल या ओकेएमएल हैं।

घोषणापत्र, Datalog - बहुत से लोग इस स्लॉट में Prolog की सिफारिश करेंगे, लेकिन मुझे लगता है कि Datalog एक घोषणात्मक भाषा का एक स्वच्छ उदाहरण है।

ऐरे, जे - मैंने केवल जे की खोज की है, लेकिन मुझे यह एक आश्चर्यजनक भाषा लगती है। यह आपके दिमाग को प्रेट्ज़ेल में बदल देगा। आप इसके लिए जे को धन्यवाद देंगे।

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

डेटाफ्लो, ओज़ - मुझे लगता है कि ओज़ का प्रभाव ऊपर उठने पर है और यह केवल भविष्य में बढ़ता रहेगा।

प्रोटोटाइप-आधारित, JavaScript / Io / Self - Self हर प्रोटोटाइप-आधारित भाषा पर ग्रैंड-डैडी और अत्यधिक प्रभावशाली है। यह वर्ग-आधारित OOP के समान नहीं है और इसे इस तरह से नहीं माना जाना चाहिए। कई लोग एक प्रोटोटाइप भाषा में आते हैं और एक एड-हॉक क्लास सिस्टम बनाते हैं, लेकिन अगर आपका लक्ष्य आपके दिमाग का विस्तार करना है, तो मुझे लगता है कि यह एक गलती है। भाषा का अपनी पूरी क्षमता से उपयोग करें। विचारों के लिए कक्षाओं के बिना कार्यक्रम आयोजित करना पढ़ें ।

विशेषज्ञ प्रणाली, क्लिप - मैं हमेशा यह सलाह देता हूं। यदि आप प्रोलॉग को जानते हैं तो आपको गति प्राप्त करने में ऊपरी तौर पर हाथ होने की संभावना होगी, लेकिन यह बहुत अलग भाषा है।

फ्रिंक - फ्रिंक एक सामान्य प्रयोजन की भाषा है, लेकिन यह इकाई रूपांतरणों की अपनी प्रणाली के लिए प्रसिद्ध है। मुझे लगता है कि इस भाषा को इसके अविश्वसनीय ड्राइव में बहुत प्रेरणादायक होने के लिए यह सबसे अच्छा लगता है कि यह क्या करता है। प्लस ... यह वास्तव में मजेदार है!

कार्यात्मक + वैकल्पिक प्रकार, क्यूई - आप कहते हैं कि आप कुछ प्रकार के सिस्टम के साथ अनुभव करते हैं, लेकिन क्या आपके पास "स्किनर * टाइप सिस्टम" के साथ अनुभव है? किसी के पास नहीं है ... लेकिन उन्हें चाहिए। क्यूई कई तरीकों से लिस्प की तरह है, लेकिन इसके टाइप सिस्टम आपके दिमाग को उड़ा देगा।

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

का आनंद लें!


8
+1 - एक शानदार जवाब।
duffymo

2
सीखने के लिए मुझे इतनी भाषाओं की ओर इशारा करने के लिए धन्यवाद।

2
मैं समानांतर प्रोग्रामिंग के सामान के लिए अभिनेता आधारित प्रोग्रामिंग और किले के लिए एर्लांग को जोड़ूंगा।
निकित

2
एर्लैंग के हॉट स्वैप और फॉल्ट टॉलरेंस रिकग्निशन के लिए +1
माइक

14
कोई विधानसभा नहीं? यह समझना अच्छा है कि प्रोसेसर कैसे काम करते हैं यह जानने के लिए कि उन्हें किस तरह का कोड पसंद है।
निक टी

33

प्रोलॉग (एकीकरण / बैकट्रैकिंग आदि के लिए), स्मॉलटाक ("सब कुछ एक संदेश" के लिए), फोर्थ (रिवर्स पॉलिश, थ्रेडेड दुभाषियों आदि), स्कीम (निरंतरता) के बारे में क्या?

भाषा नहीं, बल्कि आर्ट ऑफ़ मेटाबोजेक्ट प्रोटोकॉल दिमाग झुकने वाला सामान है


मुझे गलत होने पर सही करें, लेकिन मुझे लगता है कि पायथन छंटनी पहले से ही जारी है। और जो मैंने पढ़ा है, उससे मैं बल्कि फोर्थ और स्मालटाक की तुलना में फैक्टर और ऑब्जेक्टिव-सी सीखूंगा, लेकिन हो सकता है कि मैं वहां कोनों में कटौती कर रहा हूं।
पेपीजन

1
@ पेपीजन, पायथन में प्रथम श्रेणी में निरंतरता नहीं है (हालाँकि मैं एक
बाईटेकोड

1
ऑब्जेक्टिव-सी स्मालटाक से खींचता है, लेकिन मुझे लगता है कि एसटी से वास्तविक टेकअवे पर्यावरण की गतिशीलता है।
जॉन क्रॉमार्टी

33

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

इसके अलावा, पूरे विषय में एक वर्ष के लिए व्यस्त रखने के लिए पर्याप्त गहरा है;)


"इसके अलावा, पूरा विषय काफी गहरा है कि एक व्यक्ति को वर्षों तक व्यस्त रखने के लिए?)" - मुझे आश्चर्य है, यह एक अच्छी बात क्यों होगी? आखिरकार, हमारा जीवन परिमित है।
वेजी

1
@vegai: यह एक बुरी बात क्यों होगी? सीखने की तुलना में जीवन भर खर्च करने के बदतर तरीके हैं। और किसी ने नहीं कहा कि आपको भाषा का ठीक से उपयोग करने के लिए वर्षों तक अध्ययन करना होगा - बस यह कि थोड़े समय के बाद विषय समाप्त नहीं हुआ है। (स्माइली पर भी ध्यान दें - वह हिस्सा पूरी तरह से गंभीर नहीं है।)

32

मैं वर्तमान में क्लोजर, पायथन, जावा और पीएचपी प्रोग्राम करता हूं [...] ऐसी कौन सी भाषाएं हैं जो एक अलग दृष्टिकोण रखती हैं और व्यावहारिक उपकरण चुनने या सैद्धांतिक समझ के लिए उपयोगी होंगी?

सी

वहाँ एक है बहुत चारों ओर झूठ बोल रही है सी कोड की --- यह निश्चित रूप से व्यावहारिक है। यदि आप C ++ भी सीखते हैं, तो बहुत अधिक कोड के आसपास एक बड़ा कोड है (और एक बार जब आप C और Java जानते हैं तो छलांग कम है)।

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

इसके अलावा, आप C में ऑब्जेक्ट-ओरिएंटेड कोड लिख सकते हैं, बस आपको vtables और इस तरह के बारे में थोड़ा सा मैनुअल होना होगा। साइमन टाथम का पोर्टेबल पहेली संग्रह काफी सुलभ वस्तु-उन्मुख सी कोड का एक शानदार उदाहरण है; यह भी काफी अच्छी तरह से डिजाइन किया गया है और एक शुरुआती / मध्यवर्ती सी प्रोग्रामर को पढ़ने लायक है। हास्केल में भी यही होता है --- टाइप क्लास कुछ अर्थों में "बस एक और व्यवहार्य" हैं।

C के बारे में एक और बड़ी बात: कुशल C प्रोग्रामर के साथ Q & A में उलझने से आपको बहुत सारे उत्तर मिलेंगे जो C को निचले स्तर के निर्माणों के संदर्भ में समझाते हैं, जो आपके करीब-टू-आयरन ज्ञान के आधार का निर्माण करता है।

मुझे ओपी की बात याद आ रही है --- मुझे लगता है कि मैं अन्य उत्तरों को देखते हुए --- लेकिन मुझे लगता है कि यह अन्य लोगों के लिए एक उपयोगी उत्तर हो सकता है जिनके पास एक समान प्रश्न है और इस धागे को पढ़ें।


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

27

पीटर नॉरविग की साइट से:

"कम से कम आधा दर्जन प्रोग्रामिंग भाषाएं सीखें। एक भाषा शामिल करें जो क्लास एब्स्ट्रक्शन (जैसे जावा या सी ++) का समर्थन करती है, एक जो कार्यात्मक एब्स्ट्रैक्शन (जैसे लिस्प या एमएल) का समर्थन करती है, एक वह जो सिंटैक्टिक एब्स्ट्रक्शन (जैसे लिस्प) का समर्थन करती है, एक वह जो घोषणात्मक का समर्थन करती है। विनिर्देशों (जैसे प्रोलोग या सी ++ टेम्पलेट), एक जो कोरटाइन (जैसे चिह्न या योजना) का समर्थन करता है, और एक जो समानता (जैसे सिसल) का समर्थन करता है। "

http://norvig.com/21-days.html


13

मुझे आश्चर्य है कि 6 महीने और सैकड़ों वोटों के बाद, किसी ने SQL का उल्लेख नहीं किया है ...


10

प्रमेय / उन्नत प्रकार के सिस्टम के प्रकारों में: Coq (मुझे लगता है कि एजडा इस श्रेणी में भी आता है)।

Coq एक प्रमाणिक सहायक है जो एक कार्यात्मक प्रोग्रामिंग भाषा में एम्बेडेड है।

आप गणितीय प्रमाण लिख सकते हैं और Coq समाधान बनाने में मदद करता है। आप फ़ंक्शंस लिख सकते हैं और इसके बारे में गुण साबित कर सकते हैं।

इसके आश्रित प्रकार हैं, जिसने अकेले ही मेरे दिमाग को उड़ा दिया। एक सरल उदाहरण:

concatenate: forall (A:Set)(n m:nat), (array A m)->(array A n)->(array A (n+m))

एक फ़ंक्शन का हस्ताक्षर है जो A के तत्वों के आकार n और m के दो सरणियों को समेटता है और आकार की एक सरणी (n + m) लौटाता है। यह संकलित नहीं करेगा यदि फ़ंक्शन वापस नहीं आता है!

आगमनात्मक निर्माणों की गणना पर आधारित है, और इसके पीछे एक ठोस सिद्धांत है। मैं यह सब समझने के लिए पर्याप्त स्मार्ट नहीं हूं, लेकिन मुझे लगता है कि यह देखने लायक है, खासकर यदि आप टाइप थ्योरी की ओर रुझान करते हैं।

संपादित करें: मुझे उल्लेख करने की आवश्यकता है: आप Coq में एक फ़ंक्शन लिखते हैं और फिर आप साबित कर सकते हैं कि यह किसी भी इनपुट के लिए सही है, यह आश्चर्यजनक है!


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

मैंने पिछली गर्मियों में Coq सीखने की कोशिश की, लेकिन हार मान ली क्योंकि मुझे सीखने और इसके इस्तेमाल के बारे में अच्छे दस्तावेज खोजने में मुश्किल हुई । कोई सुझाव?

मैंने अपनी यूनि पर एक कोर्स से सीखा और फिर "Coq'Art: The Calculus of Inductive Constructions" पढ़ा, यह वास्तव में इसे मास्टर करने के लिए पर्याप्त नहीं है, लेकिन इसकी सराहना करने के लिए पर्याप्त है।
ब्रूनो मार्टिनेज

6

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


5

जैसे फोगस ने अपनी सूची में आपको इसका सुझाव दिया है, मैं आपको ओज़मील / मोजार्ट भाषा के कई प्रतिमानों को देखने के लिए भी सलाह देता हूं , मुख्य रूप से संगामिति / मल्टी एजेंट प्रोग्रामिंग पर लक्षित है।

संगणना, और वितरित कैलकुलस के बारे में, लैम्ब्डा कैलकुलस के बराबर (जो कार्य करने वाली प्रोग्रामिंग के पीछे है) को पाई कैलकुलस कहा जाता है।

मैंने केवल पाई पथरी के कुछ कार्यान्वयन को देखने के लिए भीख मांगना शुरू कर दिया है। लेकिन उन्होंने पहले से ही कंप्यूटिंग की मेरी अवधारणाओं को बड़ा कर दिया है।


5

डेटाफ्लो प्रोग्रामिंग, उर्फ ​​फ्लो-आधारित प्रोग्रामिंग सड़क पर एक अच्छा कदम है। कुछ buzzwords: पैरेलल प्रोसेसिंग, रैपिड प्रोटोटाइप, विज़ुअल प्रोग्रामिंग (पहले जैसा लगता है उतना बुरा नहीं)।

विकिपीडिया के लेख अच्छे हैं:

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

पढ़ें जेपीएम की किताब: http://jpaulmorrison.com/fbp/

(हमने होम ऑटोमेशन उद्देश्यों के लिए C ++ में एक सरल कार्यान्वयन लिखा है, और हम इसके साथ बहुत खुश हैं। दस्तावेज निर्माणाधीन है।)


+1, मेरा मानना ​​है कि डेटाफ्लो और फ्लो-आधारित प्रोग्रामिंग (संभवतः कार्यात्मक-प्रतिक्रियाशील प्रोग्रामिंग) हमारे मल्टीकोर भविष्य का एक महत्वपूर्ण हिस्सा बन जाएगा।


3

शायद आप विज़ुअल प्रोग्रामिंग के लिए LabView को आज़माना चाहते हैं, हालाँकि यह इंजीनियरिंग उद्देश्यों के लिए है।

फिर भी, आप सभी को इसमें रुचि है, इसलिए सुझाव है

इसके अलावा, आप नेत्रहीन भवन निर्माण सामग्री के लिए android appinventor की कोशिश कर सकते हैं


LabView में एक मज़ेदार 'वाक्यविन्यास' है, लेकिन यह आपके सभी कोड को क्लिक करने और खींचने के लिए एक वास्तविक दर्द है। मैं इसे किसी प्रोग्रामर के लिए नहीं सुझाऊँगा।
ईशर

यही कारण है कि लेगो एनएक्सटी के साथ जहाज सही हैं? पूरी तरह से मेरे लिए काम नहीं किया। फिर भी सुझाव के लिए धन्यवाद।
पेपीजन

यह राष्ट्रीय उपकरण से है। LabVIEW एक ग्राफिकल विकास वातावरण है जो वैज्ञानिकों और इंजीनियरों को अधिक उत्पादक बनाता है
बेलुन

2

ब्रूस ए। टेट, से एक पृष्ठ ले रहा है द प्रोगैमैटिक प्रोग्रामर का ठीक उसी पर एक किताब लिखी: सेवन वीक्स इन सेवन वीक्स: ए प्रैग्मेटिक गाइड टू लर्निंग प्रोग्रामिंग लैंग्वेजेज

पुस्तक में, उन्होंने क्लजुरे, हास्केल, आईओ, प्रोलॉग, स्काला, एर्लैंग और रूबी को शामिल किया है।


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

2

पारा : http://www.mercury.csse.unimelb.edu.au/

यह एक टाइप प्रोलॉग है, जिसमें विशिष्ट प्रकार और मोड हैं (यानी यह निर्दिष्ट करना कि विधेय append(X,Y,Z) अर्थ X से जुड़ा Y है Z पैदावार है एक Z को एक X और Y दिया जाता है, लेकिन एक दिए गए Z के लिए कई X / Ys उपज सकता है)। इसके अलावा, कोई कटौती या अन्य अतिरिक्त-तार्किक भविष्यवाणी नहीं करता है।

यदि आप करेंगे, तो यह प्रोलॉग के रूप में हैस्केल लिस्प को है।


1
  1. प्रोग्रामिंग प्रोग्रामर के कार्य को कवर नहीं करता है।
  2. नई चीजें हमेशा दिलचस्प होती हैं, लेकिन कुछ बहुत पुराने सामान हैं।

मेरे लिए पहला डेटाबेस सिस्टम dBaseIII था, मैं छोटे उदाहरण लिखने के लिए लगभग एक महीने का समय बिता रहा था (dBase / FoxPro / Clipper इंडेक्स के साथ एक टेबल-आधारित db है)। फिर, अपने पहले कार्यस्थल पर, मैं MUMPS से मिला, और मुझे सिरदर्द हो गया। मैं युवा और नए दिमाग वाला था, लेकिन MUMPS डेटाबेस मॉडल को समझने में 2 सप्ताह का समय लगा। एक क्षण था, जैसे कॉमिक्स में: 2 सप्ताह के बाद, एक बटन चालू किया गया है, और बल्ब मेरे दिमाग में बस हल्का हो गया है। MUMPS प्राकृतिक, निम्न स्तर और बहुत-बहुत तेज़ है। (यह बिना किसी प्रकार का असंतुलित, असम्बद्धित btree है।) आज की प्रवृत्तियाँ इसे वापस आने का रास्ता दिखाती हैं: NoSQL, की-वैल्यू db, बहुआयामी db - इसलिए केवल कुछ चरण बचे हैं, और हम Mumps तक पहुँचते हैं।

यहाँ MUMPS के फायदों के बारे में एक प्रस्तुति है: http://www.slideshare.net/george.james/mumps-the-internet-scale-database-pretation

पदानुक्रमित डीबी पर एक छोटा डॉक्टर: http://www.cs.pitt.edu/~chang/156/14h5.html

MUMPS ग्लोबल्स का परिचय (MUMPS में, स्थानीय चर, लघु: स्थानीय मेमोरी चर हैं, और वैश्विक चर, लघु: ग्लोबल्स "db चर" हैं, एक वैश्विक चर की स्थापना डिस्क 100atelly पर जाती है): http: // gradvs1.mgateway.com/download/extreme1.pdf (PDF)


1

कहते हैं आप एक प्रेम कविता लिखना चाहते हैं ...

एक हथौड़ा का उपयोग करने के बजाय सिर्फ इसलिए कि आपके हाथ में पहले से ही है, कार्य के लिए उचित उपकरण सीखें: फ्रेंच बोलना सीखें।

एक बार जब आप मूल-भाषी स्तर पर पहुँच गए, तो आप अपनी कविता शुरू करने के लिए तैयार हैं।


4
बेशक, यह एक बकवास कविता होगी, क्योंकि आपको कविता लिखने के लिए सामान्य देशी स्तर से ऊपर अच्छी तरह से बोलना होगा। और आपकी प्रेमिका को इसे पढ़ने के लिए फ्रेंच सीखना होगा। जब तक वह पहले से ही फ्रांसीसी नहीं है, तब तक वह किस मामले में शायद शर्मनाक है।
जॉन लॉरेंस एस्पेन

स्वादिष्ट विडंबना, जॉन, मुझे यह पसंद है (मैं फ्रेंच हूँ,
बीटीडब्ल्यू

1

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


1

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

उसी पंक्ति पर, मैं HP-41C श्रृंखला कैलकुलेटर (या एमुलेटर, हालांकि वास्तविक हार्डवेयर को धड़कता है) नहीं चुनूंगा। अपने मस्तिष्क को उसके चारों ओर लपेटना कठिन है, लेकिन इसके लायक है। एक TI-57 करेगा, लेकिन एक पूरी तरह से अलग अनुभव होगा। यदि आप TI-55 पर दूसरे डिग्री समीकरणों को हल करने का प्रबंधन करते हैं, तो आपको एक मास्टर माना जाएगा (इसकी कोई शर्त नहीं थी और RST को छोड़कर कोई भी शाखा नहीं थी, जिसने कार्यक्रम को चरण 0 पर वापस कर दिया)।

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


1

परिशिष्ट भाग। यह एक बहुत ही रोचक भाषा है, क्योंकि यह स्टैक आधारित है, और यह काफी व्यावहारिक है एक बार जब आप कागज पर चीजों को रखना चाहते हैं और आप चाहते हैं कि यह हो जाए या समस्या निवारण करें तो ऐसा क्यों नहीं किया जा रहा है।

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

प्रोग्रामिंग GPU की कोशिश करें - या तो CUDA या OpenCL। यह सिर्फ C / C ++ एक्सटेंशन है, लेकिन आर्किटेक्चर का मानसिक मॉडल फिर से क्लासिक दृष्टिकोण से पूरी तरह से अलग है, और यह निश्चित रूप से व्यावहारिक हो जाता है जब आपको कुछ वास्तविक संख्या क्रंच करने की आवश्यकता होती है।


1

एर्लैंग, फोर्थ और विधानसभा भाषा के साथ कुछ एम्बेडेड काम करते हैं। वास्तव में; एक Arduino किट या कुछ समान खरीदते हैं, और विधानसभा में एक पॉलीफोनिक बीप बनाते हैं। आप वास्तव में कुछ सीखेंगे।


1

वहाँ भी है anic :

https://code.google.com/p/anic/

इसकी साइट से:

सी की तुलना में तेज़, जावा की तुलना में सुरक्षित, * श की तुलना में सरल

aic प्रयोगात्मक, उच्च प्रदर्शन, अंतर्निहित समानांतर, गतिरोध मुक्त सामान्य प्रयोजन डेटाफ़्लो प्रोग्रामिंग भाषा एएनआई के लिए संदर्भ कार्यान्वयन संकलक है।

यह अब सक्रिय विकास के तहत नहीं लगता है, लेकिन ऐसा लगता है कि कुछ दिलचस्प अवधारणाएं हैं (और आखिरकार, यह वही है जो आपको लगता है)।


1

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

और फिर भी यह अपने स्वयं के बूटस्ट्रैप किए गए संकलक का प्रबंधन करता है, एक ऐसा मंच प्रदान करता है जिसमें कोई बाहरी निर्भरता के साथ स्थापित नहीं होता है, पैकेज सही मिलता है - और जावा, C # और अब वेब (js के माध्यम से) पर काम करता है।

यह प्रोग्रामिंग के नए तरीकों के संदर्भ में आपके क्षितिज को चौड़ा नहीं कर सकता है, लेकिन यह निश्चित रूप से आपको प्रोग्रामिंग के बेहतर तरीके दिखाएगा।


1

एक बात जो मुझे दूसरे उत्तरों से गायब दिख रही है: शब्द- पुनर्लेखन पर आधारित भाषाएं।

आप शुद्ध पर एक नज़र डाल सकते हैं - http://code.google.com/p/pure-lang/

गणितज्ञ भी पुनर्लेखन आधारित है, हालांकि यह पता लगाना इतना आसान नहीं है कि क्या चल रहा है, क्योंकि यह बंद है।


0

एपीएल, फोर्थ और विधानसभा।

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

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