2010-07-23 12 views
8

कोई फर्क नहीं पड़ता कि प्रोग्रामिंग सी या जावा प्रोग्रामिंग में आप कितने कुशल हैं, आपको अपने कौशल के सेट में बहु-थ्रेडेड प्रोग्रामिंग जोड़ने पर विचार करना चाहिए।एक बहु-थ्रेडेड समांतर प्रोग्रामिंग कैसे सीख सकता है?

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

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

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

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

उत्तर

5

यदि आप मेरे कार्यस्थल में खड़ा किया और कहा कि सवाल मैं अपने आप को पुस्तकों के एक जोड़े फेंक था पूछा:

Introduction to Parallel Computing और Parallel Scientific Computing

आपकी प्रतिक्रिया अच्छी तरह से हो सकता है 'कि नहीं है कि मैं क्या सीखना चाहते हैं के बारे में !' तो वापस आएं और अपने प्रश्न में थोड़ा और विशिष्ट हो और हम अपने उत्तरों में थोड़ा और विशिष्ट हो पाएंगे।

लेकिन स्वयं को यह सामान सिखाने का सबसे ज़िम्मेदार तरीका स्वयं को किसी भी प्रोग्रामिंग सामग्री को सिखाने का सबसे ज़िम्मेदार तरीका है: एक समस्या प्राप्त करें, टूलबैग प्राप्त करें, समय सीमा प्राप्त करें, और क्रैकिंग प्राप्त करें।

+0

क्या आपने उन पुस्तकों को स्वयं पढ़ा है? क्या आपने इन पुस्तकों की समीक्षा पढ़ी है, खासकर दूसरे की। 100USD किताबों की सिफारिश के लिए एक मजबूत आधार होना महत्वपूर्ण है! – mloskot

+0

हां मैंने किताबें पढ़ी हैं। मैंने अपनी समस्याओं में से कुछ समस्याओं के माध्यम से भी काम किया है, मैंने जो कुछ भी कहा है और मेरे अपने अनुभवों पर प्रतिबिंबित किया है, उन सभी चीजों के बारे में जानकारी के अन्य स्रोतों के साथ तुलना में तुलना और विपरीत है। और यदि आपने यहां काम किया है तो हम आपके अध्ययन के लिए किताबों की प्रतियां प्रदान करेंगे, और USD100 एक ही सामान सीखने के लिए आपको पाठ्यक्रम भेजने के साथ तुलना करने वाले बटन हैं। लेकिन, मैंने 2 साल पहले यह जवाब लिखा था, और मुझे कोई दावा नहीं है कि मैं अभी भी दो पुस्तकों की सिफारिश करूंगा। –

+0

मैं बस पूछता हूं कि क्या आप इसे अपने अनुभव के आधार पर अनुशंसा करते हैं क्योंकि आपने उत्तर में यह निर्दिष्ट नहीं किया है। मैं कुछ भी पूछताछ नहीं कर रहा हूँ। – mloskot

0

माइक्रोसॉफ्ट प्रौद्योगिकी के लिए, एमएसडीएन समांतर कंप्यूटिंग पोर्टल here पर जानकारी की एक संपत्ति है। आप प्रारंभ करना लिंक शुरू कर सकते हैं।

0

वह लेख मूल रूप से प्रशिक्षण सेवाओं के लिए एक विज्ञापन है। आपको सर्कसपेक्शन की डिग्री के साथ अपने उत्पादों के मूल्य के बारे में एक विक्रेता की राय का इलाज करना चाहिए।

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

मैं किसी भी भाषा/मंच अज्ञेय पुस्तकों की सिफारिश नहीं कर सकता - मुझे संदेह है कि वे वैसे भी बहुत अकादमिक होंगे। यदि आप वास्तव में .NET पर हैं, तो जेफ रिक्टर थ्रेडिंग के बारे में बहुत अच्छी चीजें लिखते हैं, और मेरा मानना ​​है कि उनके सी #/सीएलआर पुस्तक का तीसरा संस्करण (पहले संस्करण उत्कृष्ट थे) समानांतर प्रोग्रामिंग के बारे में बहुत कुछ है।

+0

मुझे वास्तव में लगता है कि एक विशिष्ट भाषा/ओएस/lib/API से शुरू होने वाले समानांतर प्रोग्रामिंग "उदाहरणों से" सीखना एक बुरा तरीका है। यह कहना नहीं है कि यह काम नहीं कर सकता है, लेकिन इस मुद्दे के सिद्धांत को समझना जरूरी है। अन्यथा कमजोर मेमोरी मॉडल के मुद्दों के लिए खुद को तैयार करना मुश्किल है या समझें कि लॉक-फ्री एल्गोरिदम क्यों महत्वपूर्ण हैं, या प्राथमिकता क्या है। –

+0

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

0

यदि आप नीचे दी गई सामग्री के लिए Google को जो कुछ भी पाता है उसे पढ़ते हैं, तो आपके पास बहुत अच्छी शुरुआत होगी। सामान्य आईटी पृष्ठभूमि मान लिया जाये, ये भाषा या ओएस विशिष्ट नहीं कर रहे:

पीटरसन के एल्गोरिथ्म परमाणु परीक्षण और सेट महत्वपूर्ण अनुभाग मुलाकात स्मृति बाधाओं ताला मुक्त एल्गोरिदम

इस के गणितीय पृष्ठभूमि शायद पेट्री नेट है।

डिजस्ट्रा पढ़ें।

+1

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

+0

नहीं, आपने नहीं किया। यह मेरे हिस्से पर सिर्फ एक गलती थी, ऐसा लगता है कि वह इस विषय पर कुछ भी नहीं लिखा है –

संबंधित मुद्दे