क्या प्रोग्रामिंग पर अच्छी तरह से माना जाता है, लेकिन पुरानी पुस्तकों की समाप्ति तिथि है? [बन्द है]


51

पुस्तकों के बारे में एक प्रश्न पढ़ने के बाद हर प्रोग्रामर को पढ़ना चाहिए , मुझे आश्चर्य है कि क्या निम्नलिखित को अप्रचलित माना जाना चाहिए:

ये सभी पुस्तकें बहुत पुरानी लगती हैं। क्या आधुनिक कंप्यूटिंग के बीच कोई अंतर नहीं है और उन किताबों को लिखे जाने पर क्या वर्तमान था?

उदाहरण के लिए, मेरे 61 वर्षीय शिक्षक बहुत अच्छी तरह से चीजों की व्याख्या करते हैं, लेकिन 25 साल पहले और अब पढ़ाना शुरू करने के बीच उन सभी को ध्यान में रखना भूल जाते हैं।

उन किताबों के लिए एक ही सच नहीं है? क्या कोई और आधुनिक किताबें नहीं हैं जो सिद्धांतों और तकनीकों को सिखाती हैं जो वर्तमान अभ्यास के करीब हैं? या क्या आप उन्हें आज भी उपयोगी और प्रासंगिक मानते हैं?


9
यह विचार करने के लिए आपका समय उचित होगा कि सूचीबद्ध सभी शीर्षक कम से कम 12 साल पहले क्यों प्रकाशित किए गए थे, लेकिन आज भी मूल्यवान हैं। पांच में से चार को उनके पहले संस्करण से अपडेट किया गया है, लेकिन संस्करणों के बीच औसत समय 10.4 वर्ष है।
कालेब

83
मौलिक प्रोग्रामिंग सिद्धांत सिर्फ इसलिए नहीं बदलते हैं कि भाषा या रूपरेखा का एक नया "स्वाद" है।
रॉबर्ट हार्वे

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

10
ये पुस्तकें कालातीत हैं; लेकिन प्रोग्रामर जो केवल इन किताबों के लिए खुद को सीमित करेगा और जो नए सामानों की अनदेखी करेगा, वह वास्तव में अप्रचलित होगा
gnat

4
आप इस तरह का प्रश्न पूछ रहे हैं: यदि किताबें अच्छी हैं, तो वे अप्रचलित नहीं हैं।
quant_dev

जवाबों:


92

ये पुस्तक विकास के सिद्धांतों के बारे में हैं। ये सिद्धांत स्वभाव से, भाषा-अज्ञेयवादी हैं, और कुछ के लिए प्रतिमान-अज्ञेय (ओओपी, कार्यात्मक प्रोग्रामिंग, अनिवार्य भाषाएं) भी हैं।

वे सिद्धांत और विकास के अच्छे तरीकों की व्याख्या करते हैं, क्योंकि अंत में, सॉफ़्टवेयर हमेशा डेटा प्राप्त करने, इसे संसाधित करने, फिर इसे वापस आउटपुट करने के बारे में होता है। फेसबुक, ट्विटर, 3 डी, अकाउंटेंसी की बैच प्रक्रिया, रेलवे यातायात प्रबंधन, रॉकेट लॉन्च करना, आदि।

ऐसी किताबें जो किसी भाषा के बारे में हैं, जैसे "How to learn XXXXX in YY days", XXXXX एक भाषा है और YY एक संख्या है जो अंततः (और कभी-कभी वास्तव में बहुत जल्दी) अप्रचलित हो जाती है, क्योंकि, स्वभाव से, वे ऐसी चीजों के बारे में हैं जो या तो विकसित होती हैं, या प्रतिस्थापित हो जाती हैं और बन जाती हैं। रगड़ा हुआ।

भयानक स्टीव मैककोनेल द्वारा कोड कम्प्लीट , शायद वह पुस्तक है जिसने मुझे इसका एहसास कराया। और प्रोगैमैटिक प्रोग्रामर ने सॉफ्टवेयर डेवलपमेंट की दृष्टि को पूरी तरह से बदल दिया। ऐसी पुस्तकों को पढ़कर, आपको पता चलता है कि आप जिस रोज़ सामना कर रहे हैं, उसका 95% समाधान पहले ही हल हो चुका है, और यह कि हम में से 95% अभी भी पहिया को फिर से मजबूत कर रहे हैं।

तथाकथित "क्लाउड" सॉफ्टवेयर विकास का भविष्य नहीं है, यह विकसित सॉफ्टवेयर का उपयोग करने का एक तरीका है।

प्रचार / बकवास buzzwords के जाल में न पड़ें, इस पर ध्यान केंद्रित करें कि आप अपने सॉफ़्टवेयर कारीगर कौशल को कैसे सुधार सकते हैं।

अन्य प्रतिभाशाली आत्माओं ने हमारे सामने क्या सीखा और कैसे सीखा, इस पर ध्यान केंद्रित करें, क्योंकि यह एक कुशल डेवलपर बनने का एकमात्र तरीका है।


6
अच्छे कलाकार चोरी करने वाले महान कलाकारों की नकल करते हैं
hafichuk

16
... सच्चे कलाकार जहाज। :-)
kindall

9
और फिर भी, चाहे हम इसे कितनी भी बार कहें, लोग अभी भी मानते हैं कि उन्हें केवल 12 दिनों में जावास्क्रिप्ट की आवश्यकता है।
स्पेंसर रथबुन

2
अच्छे कलाकार कॉपी करते हैं, महान कलाकार कॉपी करते हैं और कोड को साफ रखते हैं! (मुझे स्कूल में अन्य बच्चों के साथ काम करने में बहुत सारे सिरदर्द हैं, जिन्होंने परियोजना की गड़बड़ी की है क्योंकि वे हर चीज और हर चीज से कॉपी करेंगे ...)
HTDutchy

@SpencerRathbun moreover (IMHO), जावास्क्रिप्ट अन्य भाषाओं की तुलना में अधिक चोकर वाली है, जैसे PHP। फिर भी वहाँ एक bazillion "Learn Javascript in 15 seconds"और केवल आधा bazillion है"Learn PHP on 17 secsonds"
क्लेमेंट Herreman

80

वे सभी पुस्तकें बहुत, बहुत पुरानी लगती हैं। "

मनोविज्ञान-कम्प्यूटर-प्रोग्रामिंग (१ ९ Program१) - १ ९ mistakes० में एक लाख बार के साथ जितने भी प्रोग्रामर हैं, उनका मनोविज्ञान यह बताता है कि वे किस तरह से कार्यक्रम बनाते हैं और उनसे क्या गलतियां होती हैं और उनसे कैसे बचा जाए।

सॉफ्टवेयर टूल (1976) - वेब फ्रेम वर्क, यूटिलिटीज, स्क्रिप्ट्स और प्लगइन्स का संग्रह होने के साथ - सॉफ्टवेयर टूल्स में विचार कभी अधिक प्रासंगिक नहीं रहे हैं।

EDIT: सामान्य प्रश्न - क्या पुरानी प्रोग्रामिंग पुस्तकें प्रासंगिक हैं?

सॉफ्टवेयर इंजीनियरिंग के सामान्य सिद्धांतों में इतना बदलाव नहीं हुआ है, नई प्रौद्योगिकियां OO, TDD आदि हैं, लेकिन आम तौर पर उपयोगकर्ता और समस्याएं नहीं बदली हैं - और किसी समस्या को कैसे विभाजित किया जाए, इस बारे में सोचना अब वैसा ही है हमेशा था

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

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

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

ps। आपका शांत नया iWhatsit BSD चलाता है, जिसे 1977 में विकसित किया गया था। अब आप बच्चे मेरे लॉन से बाहर निकलें!


28

वे सभी पुस्तकें बहुत, बहुत पुरानी हैं। क्या आपको नहीं लगता कि आजकल और जब उन किताबों के बीच अंतर था?

IMHO यह आश्चर्य की बात नहीं है कि बहुत अच्छी किताबें दशकों से लोकप्रिय हैं - यह दर्शाता है कि वे कितनी अच्छी हैं। लेकिन मुझे लगता है कि मैं आपको सूचीबद्ध उम्मीदवारों में से प्रत्येक के लिए कुछ बता सकता हूं:

Code complete: 2nd edition = may, 2004

वास्तव में "कोड पूरा" का पहला संस्करण 1993 से था, इसलिए यह वास्तव में एक "क्लासिक" है। यह मूल कोडिंग शैली के बारे में है, उदाहरणों का उपयोग करते हुए जो सी परिवार की लगभग हर प्रोग्रामिंग भाषा पर लागू होते हैं, जिसमें आजकल सबसे लोकप्रिय भाषाएँ हैं (C / C ++ / Java / C # / Objective-C / D / ...)। तो हाँ, यह पुस्तक अप-टू-डेट है।

Introduction to algorithms (Cormen, Leiserson, Rivest, Stein)

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

The Pragmatic Programmer

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

Structure and Interpretation of Computer Programs: = September 1, 1996

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

The C Programming Language

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

अंत में, आप उन पुस्तकों के लिए पूछ रहे थे जो "वर्तमान वास्तविकता" को अधिक ध्यान में रखते हैं, बिना बहुत अधिक तकनीक के। तो "वर्तमान वास्तविकता" क्या है और "गैर-प्रौद्योगिकी" पक्ष पर क्या बदल गया है? यहाँ पिछले दशक के कुछ बिंदु हैं, बिना यह कहे कि यह सूची पूरी है या सही प्राथमिकताएँ हैं।

  1. अधिक विरासत कोड मौजूद है (विशेषकर अधिक विरासत कोड न केवल फोरट्रान और कोबोल में, बल्कि C ++ और जावा में भी)।
  2. यूनिट परीक्षण और टीडीडी अधिक पसंदीदा हो गए हैं।
  3. बहुत अधिक ओपन सोर्स कोड उपलब्ध है।
  4. OO ने अधिक से अधिक आलोचकों को प्राप्त किया है

(मैं यहां वेब या ऐप के विकास के बारे में कुछ भी सूचीबद्ध नहीं करता, क्योंकि मुझे लगता है कि यह तकनीक विशिष्ट है)।

विषयों 1 और 2 के लिए अच्छी किताबें मौजूद हैं, विशेष रूप से "क्लीन कोड" , जो 2008 से है, और 2004 से "विरासत कोड के साथ प्रभावी ढंग से काम करना" । शायद उन "नई" पुस्तकों में से कुछ हैं जिन्हें आप खोज रहे हैं?


5
सी प्रोग्रामिंग भाषा है कालातीत। ऐसी आसुत पुस्तक दुर्लभ है। मैंने इसे फिर से पढ़ा है ... मुझे नहीं पता, मैंने गिनती खो दी (मैंने पहली बार इसे तब पढ़ा था जब मैं 13 साल का था) और मैं अभी भी इसकी सराहना करता हूं। बल्कि, मैं इसे अब और अधिक सराहना करता हूं।
फ्रांसेस्को

3
मैं आपकी सूची में # 5 जोड़ूंगा: समानांतर कंप्यूटिंग। बिल्कुल नया विचार नहीं है , लेकिन आजकल यह एक अभूतपूर्व पैमाने पर किया जा रहा है, जो कुछ नई समस्याओं को सामने लाता है। लेकिन यह सब अभी भी पुराने सामान के समान नींव पर बनाया गया है, और मुझे लगता है कि ओपी अभी भी उन नींव को वास्तव में नहीं समझ रहा है।
माइक बैरनज़क

2
@ माइक: मैं मानता हूं, पिछले दशक में समानांतर कंप्यूटिंग पर अधिक ध्यान दिया जा रहा है, मुझे याद है कि जब मैंने अपना उत्तर लिखा था।
डॉक्टर ब्राउन

2
@ डॉक ब्राउन अपने दृष्टिकोण से 1885, 1955, 1985, और 2015 के कुछ दिनों के भीतर आने के कारण साहित्य की कालातीतता पर आपके विचार हैं?
कलमाणे

13

जिन लोगों का आपने "कोड पूरा", "व्यावहारिक प्रोग्रामर" और "एसआईसीपी" का उल्लेख किया है, वे सभी नए डेवलपर्स के लिए मेरी अनुशंसित-पठन सूची में हैं जो मेरी कंपनी में यहां शुरू होते हैं और उच्च स्तर पर पहुंचना चाहते हैं।

वे एक लंबे शॉट से अप्रचलित नहीं हैं क्योंकि कंप्यूटर विज्ञान में मौलिक विज्ञान नहीं बदला है।


10

मैंने उन सभी किताबों को नहीं पढ़ा है, लेकिन मैं खुद का कोड कंप्लीट और द प्रोगैमैटिक प्रोग्रामर करता हूं। ये पुस्तकें अप्रचलित होने से बहुत दूर हैं। उनके पास कुछ ऐसे पैराग्राफ हो सकते हैं जो थोड़े रूखे हों लेकिन अधिकांश सामग्री आज भी प्रासंगिक है।

कंप्यूटर विज्ञान और प्रोग्रामिंग में अग्रिम एक विकासवादी प्रक्रिया है। पुराने लोगों के शीर्ष पर नए अमूर्त पेश किए जा रहे हैं, लेकिन ये नई चीजें पुराने को अप्रचलित नहीं बनाती हैं।

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


येह ग्रे की शारीरिक रचना (टीवी शो नहीं असली किताब) 1918 में लिखी गई थी और अब भी छात्र इसका उपयोग करते हैं।
HLGEM

7

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


6

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


6

आपके द्वारा महसूस की जाने वाली चीजों में से एक यह है कि अंतर्निहित सिद्धांत मौजूद हैं जो अनिवार्य रूप से कालातीत हैं, और कार्यान्वयन जो आते और जाते हैं।

अंतर्निहित सिद्धांत अनिवार्य रूप से सभी उबाऊ सिद्धांत हैं जो कंप्यूटर विज्ञान पर बहुत समय बिताने के लिए जाता है, और अगर दुनिया इसके चारों ओर बदलती है तो भी यह मान्य रहता है। जैसी चीजों के लिए यह विपरीत जो "Windows 3.11 के तहत Win32s का उपयोग कैसे करें" है बहुत पुरानी और पुरानी।

चीजों को परिप्रेक्ष्य में रखने के लिए - ज्यामिति पर विहित पाठ दो हजार साल पुराना है। कॉलेज स्तर तक पढ़ाया जाने वाला अधिकांश गणित कम से कम 300 साल पुराना है। केवल इसलिए कि CS पुस्तकें पुरानी नहीं हैं, ऐसा इसलिए है क्योंकि फ़ील्ड अभी भी नई है।


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

1
@DavidThornley यदि यूक्लिड्स तत्व ज्यामिति पर विहित पाठ नहीं है, तो क्या है?

6

कुछ किताबें कालातीत हैं क्योंकि वे उन विचारों पर चर्चा करते हैं जो सॉफ्टवेयर विकास के अभ्यास के लिए बहुत मौलिक हैं, वे हमेशा लागू होंगे।

उदाहरण के लिए Mythical Man Month को लें , जब मैं इस पुस्तक को पढ़ रहा था, तो मैं यह भूल गया था कि यह 1975 में लिखा गया था। जब वह आईबीएम सिस्टम 360 के बारे में सामयिक संदर्भ में छिड़कता है, तो यह मुझे हमेशा परेशान करता है क्योंकि यह एकमात्र ऐसी सामग्री है जो दिनांक पुस्तक। बाकी सब कुछ यहाँ और अभी लागू होता है। मैं अभी भी मार्टिन फाउलर के पैटर्न ऑफ एंटरप्राइज एप्लीकेशन आर्किटेक्चर की अपनी कॉपी रखता हूं , जो अब 9 साल का है लेकिन फिर से कालातीत है और आज भी मेरे द्वारा किए गए काम पर लागू है।

मेरी पसंदीदा पुस्तक अभी UML (1999) के साथ पीटर कॉड की जावा मॉडलिंग इन कलर है , हालांकि मैं C # डेवलपर हूं और UML से बचता हूं, क्योंकि तकनीक और अवधारणाएं मुझे बेहतर कोडर बनाती हैं।

हम डेवलपर्स की पहली पीढ़ी से सीखने के लिए अच्छा करेंगे क्योंकि उन्होंने उस मैदान को फैला दिया है जो हम अभी चल रहे हैं और उनकी कड़ी मेहनत की बुद्धि हमें आज क्या कर रही है / क्या सीख रही है उस पर एक छलांग लगाने में मदद कर सकती है।


MMM - मुझे टीम के बारे में लगातार कीड़े पड़ना पसंद है लेकिन बग की संख्या लगातार बनी हुई है :)
JoelFan

5

सॉफ्टवेयर के मुख्य सिद्धांत पिछले 20 वर्षों में नहीं बदले हैं। एक स्टैक, एक पेड़ और एक लिंक्ड सूची अभी भी उसी तरह काम करती है जैसे उन्होंने तब वापस किया था। "XOR" का अभी भी वही मतलब है। एक बाइट में अभी भी 8 बिट्स हैं।

क्या आप गंभीरता से सुझाव दे रहे हैं कि "मल्टीप्लायर विकास" एक नया विचार है? आपको क्या लगता है कि C का आविष्कार क्यों किया गया था?

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

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


"आप मूर्ख नहीं होने से बूढ़े नहीं होते। बहुत सारे युवा बुद्धिमान पुरुष, एक मदरफकर के रूप में मर जाते हैं।" - रिचर्ड प्रायर


2
"आप, दूसरी ओर, स्पष्ट रूप से उतने स्मार्ट नहीं हैं जितना आप सोचते हैं कि आप हैं"। तो मैंने सोचा कि मैं था कि स्मार्ट, मैं कभी इस तरह के एक प्रश्न पूछा गया होता।
ओलिवियर पोंस

4

यहाँ कुछ और बहुत पुरानी और पुरानी किताबें हैं:

  • कंप्यूटर प्रोग्रामिंग की कला, वॉल्यूम। 1-3 द्वारा डी। नुथ। ये 1968 और 1981 के बीच प्रकाशित हुए थे! हम अब वैक्यूम ट्यूब का उपयोग नहीं कर रहे हैं, लोग! इन किताबों में सब कुछ लंगड़ा है। अजगर और रूबी पर चर्चा कहां है?

  • कंप्यूटर्स एंड इंट्रेक्टेबिलिटी: अ गाइड टू द एनपी-कम्प्लीटेंस ऑफ़ थ्योरी ऑफ़ एमआर गारेई और डीएस जॉनसन, 1979. सुपर लंगड़ा! इन सभी समस्याओं को अब तक हल किया गया है, शायद।

यदि पिछले तीन वर्षों में पायथन पर ध्यान देने के साथ कोई पुस्तक नहीं लिखी गई, तो यह पढ़ने लायक नहीं है।


निष्पक्षता में कम से कम एक मामला यह है कि TAoCP अपने छद्मकोड के लिए एक असेंबलर का उपयोग करने का मतलब है कि अधिक आधुनिक एल्गोरिदम किताबें जो अधिक आधुनिक भाषाओं के करीब pseudocode का उपयोग करती हैं वे 90% + के लिए अधिक उपयोगी हैं जो हम एम्बेडेड के लिए नहीं लिख रहे हैं सिस्टम।
पीटर टेलर

-1: हर हफ्ते या दो बार मैं किसी को एल्गोरिथ्म के लिए कुछ या दूसरे को संभालने के लिए कहता हूं जिसे नथ ने अविश्वसनीय विस्तार से वर्णित किया है। बस मज़े के लिए: एक सॉर्टिंग एल्गोरिदम को नाम दें जो 1981 की तुलना में नया है। एक समानांतर प्रकार का उत्तर देना चाहते हैं? नूथ के पास समानांतर में डेटा छांटने के बारे में पृष्ठ हैं। आप पाइथन पुस्तकों के बारे में सही हो सकते हैं, लेकिन "फ्लावर ऑफ द वीक" पुस्तकों और इंजीनियरिंग शिल्प पुस्तकों में बहुत बड़ा अंतर है।
११:११

5
जाहिरा तौर पर कुछ व्यंग्य डिटेक्टरों को तोड़ दिया जाता है ...
डेव

1
<सारकैम> "टिप्पणी" </ सारकस्म>
एनडब्ल्यूएस

1
मुझे लगता है कि यह उत्तर इसे और भी बेहतर बना देगा अगर इसमें द आर्ट ऑफ़ कंप्यूटर प्रोग्रामिंग वॉल्यूम 4 ए का उल्लेख शामिल हो , जो 2011 में प्रकाशित हुआ था और वॉल्यूम 5, 2020 के लिए योजना बनाई गई थी!
मार्क बूथ

3

वे पुस्तकें पुरानी नहीं हैं, वे पुस्तकें कालजयी हैं।

कपल्स्की को उद्धृत करने के लिए , " हर दिन कुछ नया सीखने में बिताएं जो उस समस्या से असंतुष्ट है जिस पर आप वर्तमान में काम कर रहे हैं (याद रखें कि असंगति अस्थायी हो सकती है), और स्वामी को पढ़ें "


3

मुझे पता है कि आपके पास क्या मतलब है, जब हमारे पास अग्रिम (LINQ मन में आता है) जो कोड पठनीयता और उपयोग को बदल देता है, लेकिन सिर्फ इसलिए कि ये किताबें पुरानी हैं, इसका मतलब यह नहीं है कि वे पाठक के लिए महान सबक प्रदान नहीं करते हैं।

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


2
वे जिन प्रोग्रामिंग भाषाओं का उपयोग करते हैं, वे ज्यादातर 'सी' हैं - वे प्रचलन से बाहर हो गईं, लेकिन उपयोग में बड़े पैमाने पर वृद्धि हुई हैं।
मार्टिन बेकेट

3
आपको SICP पढ़ना चाहिए, इससे आपकी आँखें खुल सकती हैं कि LINQ कहाँ से आता है :)
Joris Timmermans

1

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


1

कुछ मामूली हिस्से उन सभी पुस्तकों में अप्रचलित हैं, लेकिन 99% अभी भी महान हैं।

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

K & R से मानक C सीखना अभी भी सबसे अच्छा स्रोत है; हालांकि मुझे यकीन नहीं है कि मैं आपके अनुभागों पर भरोसा करूंगा कि आपके पर्यावरण को कैसे स्थापित किया जाए।

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

कोड पूर्ण या व्यावहारिक प्रोग्रामर में से कुछ कम प्रासंगिक हैं, अगर आप नई भाषाओं में प्रोग्रामिंग कर रहे हैं (जैसे, अजगर / रूबी / सी ++ 11), तो इसके अक्सर सी में कुछ करने के तरीके पर ध्यान केंद्रित किया जाता है या सबसे अच्छा उपयोग करके अनुशंसित समाधान देता है। समय पर उपलब्ध उपकरण (जैसे CVS / RCS संस्करण नियंत्रण के लिए आधुनिक उपकरण जैसे git / bzr / hg / svn) के बजाय। लेकिन इसके बारे में यह सोचकर अच्छा लगता है कि संस्करण नियंत्रण एक आवश्यक कैसे है और इसे कैसे सहज और स्व-दस्तावेजीकरण की आवश्यकता है और तर्क के माध्यम से जाना चाहिए कि यह क्यों एक पूर्ण होना चाहिए।

या बेसिक यूनिक्स एडिटर + यूनिक्स टूल्स के लिए आईडीई के खिलाफ पीपी की सिफारिशें - यह कहने के लिए नहीं कि आपको यह नहीं सीखना चाहिए कि ढूंढना / जागना / पता लगाना / grep / sed का उपयोग कैसे करें, बल्कि एक अच्छा आईडीई अक्सर बहुत समय बचा सकता है। जैसे, ईमैक्स सिंटैक्स हाइलाइटिंग या सरल कोड पूरा कर सकते हैं; लेकिन कहते हैं कि एक अच्छा IDE फ़ंक्शन घोषणाओं के साथ टूल-टिप्स देगा जब आप उन्हें टाइप करते हैं, या कोड का विश्लेषण करते हैं और अप्रयुक्त चर को चिह्नित करते हैं, तो कोड के अनुभागों को संक्षिप्त करना आसान बनाते हैं, आदि।


1

क्या आधुनिक कंप्यूटिंग में कोई अंतर नहीं है और उन किताबों के लिखे जाने पर क्या वर्तमान था? क्या आपको लगता है कि यह वह परिवर्तन है जो हमें सीखना चाहिए? क्या हमें पिछले 20 वर्षों के घटनाक्रम को ध्यान में नहीं रखना चाहिए?

हाँ, हाँ, और हाँ।

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

क्या मल्टीप्लाटर डेवलपमेंट पर कई बार जोर देना चाहिए (मल्टीपल रिकॉर्डर डेवलपमेंट (फोनगैप देखें) क्या हम आज सीखते हैं?

ऐप स्टोर पर अधिकांश एप्लिकेशन (उदाहरण के रूप में सबसे लोकप्रिय मोबाइल प्लेटफॉर्म का उपयोग करने के लिए) उद्देश्य सी में लिखे गए हैं, 80 के दशक की शुरुआत से एक भाषा जो सी। का सुपरसेट है, इसलिए, फिर से, सी अभी भी प्रासंगिक है।

क्या आपको लगता है कि "क्लाउड" एक सनक या भविष्य है?

यह हमारा वर्तमान है।

जब छात्र विश्वविद्यालय से बाहर निकलते हैं, तो उन्हें वास्तविक डेवलपर माना जाता है और तुरंत काम करने में सक्षम होना चाहिए

लेकिन इसका क्या मतलब है?

आपको एक विशिष्ट नौकरी के लिए तैयार करने के लिए स्कूल के लिए बहुत सी भाषाएं, एपीआई, फ्रेमवर्क, प्लेटफॉर्म, उपकरण, सहयोग रणनीति आदि हैं । स्कूल केवल नींव रख सकता है, आपको एक बुनियादी काम करने का मॉडल देता है कि मशीन कैसे काम करती है, एल्गोरिदम, डेटा संरचना, कोड निर्माण, अपघटन रणनीति, कुछ उपकरण, आदि के बारे में।

एक "वास्तविक डेवलपर" वह नहीं है जो सब कुछ जानता है, यह इस तरह के काम की क्षमता वाला कोई है, जिसके पास सिद्धांत और व्यवहार में नींव है, और जो जानता है कि कैसे सीखना है , क्योंकि आपकी शिक्षा कभी समाप्त नहीं होती है।


1
+1 'कैसे सीखें' टिप्पणी के लिए - यही कॉलेज के लिए है, न कि नौकरी प्रशिक्षण।
डेव

1

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

यहाँ मेरे दो सेंट हैं - वास्तव में मेरा नहीं है, मैंने इसे सेंट एक्विनास और अरस्तू से पहले सीखा था।

An abstraction is useless to someone who doesn't understand the particulars.

वॉन-न्यूमैन के बाद से कंप्यूटर के मैकेनिक्स नहीं बदले हैं। इसी तरह, एक विशेष प्रोग्रामर बनने के लिए आपको जो ब्योरा सीखने की जरूरत होती है, वही तब तक रहेगा जब तक कि वॉन-न्यूमैन मॉडल अप्रचलित न हो जाए। असेंबली, कंप्यूटर की भाषा है ... इसे सीखें, कोई बहाना नहीं।

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

एल्गोरिदम और डेटा संरचनाएं कंप्यूटर प्रोग्राम की नींव हैं, उन्हें जानें।

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

ये सभी JAVA और C # केवल प्रोग्रामर, tsk, मैं शर्त लगाऊँगा कि उनमें से अधिकांश ने कभी भी स्टार ट्रेक का एक एपिसोड भी नहीं देखा है!


1

मैंने एक संरक्षक से एक कहावत सुनी:

"अच्छा सलाह एक कारण के साथ आता है क्यों इतना है कि आप जानते हैं कि जब यह अब अच्छी सलाह है।" तो पुस्तक के संदर्भ में, एक पुस्तक जो बताती है कि एक्स ओवर वाई क्यों करना है, आपको बताएंगे कि वह सलाह अब मान्य नहीं है। एक "हमेशा ऐसा करो, बस करो" जैसे भाषा एक्स के कुछ क्रैश-कोर्स इतनी अच्छी नहीं है।

मैंने "24 घंटे में यूनिक्स सीखो" नामक एक किताब देखी, अच्छी तरह से किताब लगभग 8 सेमी मोटी थी, मुझे संदेह है कि कई लोग 24 घंटे में भी हर पृष्ठ को पढ़ सकते हैं :)

याद रखें कि आज जो प्रचलन है, वह कल के लिए बदनाम हो सकता है। निम्नलिखित में से सभी को एक बार मुख्यधारा माना जाता था (कल प्रचलन में) लेकिन अब नहीं हैं:

  • के लिए जाओ
  • सिंगल एंट्री सिंगल एग्जिट
  • हंगेरियन अंकन
  • झरना दृष्टिकोण

और कुछ चीजें हैं जो कभी पूरी तरह से अनाथ थीं लेकिन अब स्वीकार कर ली गई हैं:

  • समस्याओं को हल करने के लिए एक उपकरण के रूप में पुनरावृत्ति (मूल प्रारंभिक दिनों में कट्टरपंथी)
  • मॉलॉक / नए के साथ रनटाइम पर मेमोरी आवंटित करना
  • C ++ STL का उपयोग
  • कचरा ने वास्तविक समय प्रणालियों के लिए भाषाएं एकत्र कीं

जानिए क्यों, और आपको पता चल जाएगा कि पुरानी धारणाओं को एक नई वास्तविकता के साथ बदल दिया गया है, और इसलिए सलाह लेनी चाहिए।

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