प्रोग्रामर के रूप में कंप्यूटर आर्किटेक्चर सीखना [बंद]


12

मैं आम तौर पर एसओ और अन्य स्थानों (प्रशिक्षकों, पुस्तक लेखकों आदि) पर गुरुओं के बीच दौड़ता हूं जो लाइनों "This will cause alignment issues"या अन्य निम्न स्तर की चिड़ियों के साथ कुछ कहते हैं ।

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

क्या आपके पास उन पुस्तकों के लिए सिफारिशें हैं जो निम्न-स्तरीय सामान से गुजरती हैं जो प्रोग्रामर के लिए प्रासंगिक हैं?


4
आप "ऐसी पुस्तकें चाहते हैं जो निम्न-स्तरीय सामग्री से गुज़रें" लेकिन आप ऐसी पुस्तकें नहीं चाहते हैं जो "निम्न स्तर" की हों? कुछ प्रोग्रामर्स के लिए आर्किटेक्चर सीखना बेहद फायदेमंद हो सकता है। टीसीपी / आईपी स्टैक को समझने वाले वेब डेवलपर के अनुरूप। जब तक आपको इसकी आवश्यकता न हो, तब तक यह सब उपयोगी नहीं है। \
क्रिस

1
@ क्रिस: मेरा क्या मतलब था "प्रोग्रामरों के लिए निम्न स्तर" ... तकनीकी रूप से हम पूर्ण विकसित सीपीयू-आर्किटेक्चर के रूप में जा सकते हैं, और इसमें कोई संदेह नहीं है कि यह एक दिन उपयोगी होगा, लेकिन हम सभी के पास सीमित समय है, एक पुस्तक पर विचार यह निम्न-स्तरीय सामान सिखाता है, जिसके बारे में सभी प्रोग्रामर को पता होना चाहिए कि यह सही होगा।
समरसा

उस मामले में कोई भी परिचयात्मक पुस्तक आपको सही दिशा में ले जाएगी, जहाँ आप इसे ले लेंगे उसके बाद आपकी पसंद या इच्छा के आधार पर आपकी पसंद होगी।
क्रिस

कोई व्यक्ति जो ऑटोमैटिक ट्रांसमिशन वाली कार चलाता है, उसे यह जानने से फायदा होता है कि गाड़ी चलाते समय क्या है और कैसे काम करता है। मेरा मानना ​​है कि आप कम से कम थोड़ा सा, असेंबली लैंग्वेज में प्रोग्राम करना सीखकर एक बेहतर प्रोग्रामर बन जाते हैं, उसी तरह मुझे लगता है कि जब आप "ड्राइव स्टिक" सीखते हैं तो आप एक बेहतर ड्राइवर बन जाते हैं।
वॉरेन पी।

जवाबों:


16

इस उद्देश्य के लिए पुस्तकों का एक अच्छा सेट रान्डेल हाइड की "राइट ग्रेट कोड" श्रृंखला ( Vol.1 Vol। 2 ) है: उच्च स्तर की भाषाओं में कुशल कोड लिखने के लिए आपको जो जानना आवश्यक है, उसके परिप्रेक्ष्य से मशीन वास्तुकला का विवरण स्पष्ट रूप से है। ।


यह किन उच्च-स्तरीय भाषाओं पर लागू होगा? क्या इसमें उदाहरण के लिए पायथन, जावास्क्रिप्ट, C #, Scala शामिल होगा?
जॉब

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

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

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

हालाँकि मैंने अभी तक किताबें नहीं पढ़ी हैं, मैं इस उत्तर को पुस्तक की समीक्षाओं / सारांश के आधार पर सही चुनूँगा।
समौरसा

6

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

ऑनलाइन, यह http://www-uxsup.csx.cam.ac.uk/courses/Architecture/course.pdf शायद आपको वही देता है जो आप चाहते हैं।


Pdf का लिंक मृत है।
अजय

5

X86 प्लेटफ़ॉर्म के लिए, Intel के IA-32 और Intel 64 प्रोसेसर मैनुअल की एक प्रति पकड़ो । अनुकूलन संदर्भ मैनुअल इंटेल x86 सीपीयू के लिए निम्न-स्तरीय परिप्रेक्ष्य से इन मुद्दों की बहुत चर्चा करता है। एएमडी में भी इसी तरह के मैनुअल होते हैं जो समान मुद्दों को कवर करते हैं।

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


3

मैं "आर्किटेक्चर: ए क्वांटिटेटिव अप्रोच" को हेनेसी और पैटरसन ( अमेज़ॅन लिंक ) द्वारा कंप्यूटर आर्किटेक्चर के लिए एक बहुत मजबूत और ठोस दृष्टिकोण मानता हूं , काफी कुछ केस स्टडी के साथ जो प्रोग्रामिंग के लिए सीधे प्रासंगिक हैं।

इसका उपयोग अमेरिका में कई स्नातक और स्नातक स्तर के सीएस आर्किटेक्चर पाठ्यक्रमों में विभिन्न विस्तार के लिए किया जाता है।

इसे कुछ समय पहले Ars Technica पर भी शानदार समीक्षा मिली ।


1
जबकि मुझे यह पुस्तक पसंद है - मेरे पास चार संस्करण हैं - यह कंप्यूटर आर्किटेक्ट के रूप में निर्देशित है, न कि प्रोग्रामर के रूप में।
एपीग्रामग्राम

3

यह वही है जो मैं अपने कंप्यूटर सिस्टम वर्ग में अब उपयोग कर रहा हूं कंप्यूटर सिस्टम: एक प्रोग्रामर के परिप्रेक्ष्य (2 डी संस्करण) और जबकि कक्षा अभी शुरू हुई थी, मैंने इसे देखा है और वास्तव में इसे पसंद करता है।

पुस्तक का विवरण इस प्रकार है:

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


यह एक अद्भुत पुस्तक है !!
आर्मंडो

2

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

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


2

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

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

(वह महान कोड लिखें "पुस्तक श्रृंखला, जिस पर उल्लेख किया गया है कि एक और लड़का बहुत अच्छा लग रहा है, और मैंने अपने प्रश्न को संपादित किया है, जो कि मैंने पहले सीखने-से-किताब पर डाली थी, क्योंकि यह बहुत अच्छा लग रहा है!" )

कंप्यूटर आर्किटेक्चर सिखाने वाली कुछ चीजें वास्तव में अच्छी हैं:

  1. मुझे लोगों को चीजों को समझाने और प्रदर्शित करने के लिए शुरुआती स्थानों के रूप में 1980 के दशक से मशीनों को चुनना पसंद है, क्योंकि जब मैंने कंप्यूटर का उपयोग करना शुरू किया था। मैंने लोगों को एक कूदने की जगह दिखाने के लिए, जहां प्रोग्रामिंग का ज्ञान, और कंप्यूटर आर्किटेक्चर का ज्ञान एक-दूसरे से मिलता है, को दिखाने के लिए 64 प्रोग्रामर के संदर्भ गाइड का उपयोग किया है। इस तरह की एक किताब के साथ, और शायद एक पीसीओआर 64 एमुलेटर आपके पीसी पर चल रहा है ताकि आप सामान की कोशिश कर सकें, आप इस बारे में जानेंगे कि 1980 के दशक के कंप्यूटर सिस्टम में कंप्यूटर आर्किटेक्चर के अवतार कैसे होते हैं। मेरे विचार में, एक ठोस उदाहरण शुरू करने के लिए एक बेहतर जगह है, एक दर्जन सैद्धांतिक मॉडल हैं जो वास्तविक दुनिया के विवरणों को याद कर रहे हैं जो चीजों को काम करते हैं। यदि आप जानते हैं कि एक रजिस्टर क्या है, एक ALU क्या है, एक बस क्या है, और एक घड़ी क्या है, और एक पुराने 1980 के दशक के डिजाइन में कौन से सिग्नलिंग सिस्टम का उपयोग किया जाता है, जो आपको उन बुनियादी बातों को देगा जो आपको हाल ही में समझने के लिए जानने की जरूरत है, जैसे कि इंटेल के "रेतीले पुल आर्किटेक्चर"। ऐतिहासिक रूप से, मूल को देखें, उदाहरण के लिए विकिपीडिया पर "वॉन न्यूमैन" वास्तुकला को देखें।

  2. कुछ साल मेरे पहले बिंदु से आगे बढ़ना; मूल आईबीएम पीसी वास्तुकला, 8086 विधानसभा भाषा और आईएसए बस के बारे में जानें। इस से, और इसकी सीमाओं से, "इंटेल कोरे आई 7" सीपीयू की समझ और पीसीआई और पीसीआई-ई बसें क्या करती हैं और आपको उनकी आवश्यकता क्यों है, यह स्वाभाविक रूप से आगे बढ़ सकता है। पीसी आर्किटेक्चर आज भी मूल आईबीएम पीसी डिजाइन से थोड़ा "हैंगओवर" है। जिस तरह से प्रारंभिक कार्यक्रम (ऑपरेटिंग सिस्टम) लोडिंग (बूट-अप) 2011 पीसी पर होता है वह अभी भी मूल आईबीएम पीसी और इसकी ROM BIOS की विरासत के लिए बहुत अधिक है, और एक मूल पीसी में इसकी CMOS सेटिंग्स।

  3. लिनक्स के एक पूर्व-कॉन्फ़िगर किए गए निर्माण का उपयोग करें और संशोधित करें जो कुछ एम्बेडेड गैर-पीसी डिवाइस पर काम करता है, और आप एम्बेडेड कंप्यूटर आर्किटेक्चर के बारे में बहुत कुछ सीखेंगे, न केवल तकनीकी वास्तुकला, बल्कि कुछ विशेषताएं क्यों हैं। एक अच्छा उदाहरण जो सस्ते में उपलब्ध है वह TS-7200 है, जिसके पास एक अच्छा PC-104 (ISA Bus, जैसा कि मूल PC में है) है। PC-104 (एम्बेडेड 16 बिट ISA- बस जो IBM PC / AT 80286 युग के PC के साथ संगत है) कंप्यूटर एक गैर-बोर्ड-डिजाइनर के लिए एक शानदार तरीका है जो एक एम्बेडेड सिस्टम का निर्माण करता है, क्योंकि मॉड्यूल स्टैकेबल हैं। कुछ अतिरिक्त IO या परिधीय चाहते हैं? बस कुछ मॉड्यूल को स्टैक करें। TS-7200 में एक नॉन-x86 कोर (ARM9 cpu) है जो बड़े-एंडियन या छोटे-एंडियन को चलाने में सक्षम है। यदि आप अभी तक अपनी वास्तुकला सीखने की यात्रा में "एंडियननेस" में नहीं आए हैं, तो यह मुठभेड़ करने के लिए एक अच्छी जगह है।


0

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

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