2008-11-15 11 views
20

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

उनके विचारों के आधार पर, दो प्रश्न। मोजार्ट प्रोग्रामिंग भी संभव है? क्या हम आज लिखने वाले सॉफ़्टवेयर को वास्तव में लाभान्वित करेंगे यदि हमने मोजार्ट शैली को अपनाया है?

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

संपादित करें: डिजस्क्रा के विचारों के बारे में अधिक सटीक स्पष्टीकरण के लिए the response below का संदर्भ लें।

+1

समानता अच्छी नहीं है। डिजस्ट्रा ने कभी भी आपके सिर को केवल _ में नहीं ढूंढने की वकालत की। उन्होंने औपचारिक तरीकों का उपयोग करके कार्यक्रमों का निर्माण करने की वकालत की (जो भरोसेमंद हैं, क्योंकि तर्क पहले से ही अच्छी तरह से समझा जाता है और हमेशा ऐसा ही होगा) "कार्यक्रम पहले, बाद में परीक्षण करें" विधि की बजाय हम आम तौर पर उद्योग में देखते हैं। एक कार्यक्रम के बाद औपचारिक रूप से एक आवश्यकता को पूरा करने के लिए साबित किया गया है, तो इसे प्रोग्राम किया जाना चाहिए। इस तरह, गलतियों और "पुनरावृत्तियों" कागज पर ही सीमित हैं, वास्तव में कभी लागू नहीं किया गया। – pyon

+0

@Eduardo: धन्यवाद और अपडेट किया गया। – hlfcoding

उत्तर

15

यह स्केल नहीं करता है।

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

अब, Mozarts की एक टीम की कल्पना की कोशिश करो। बस कुछ सेकंड के लिए।


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

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

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


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

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

+0

डिज्कस्ट्रा ने कहा कि इस बारे में कुछ भी उन्होंने लिखा है अगर आप कुछ भी पढ़ने के लिए परेशान। उन्होंने कहा कि हम छोटे टुकड़ों में चीजों को विभाजित करके प्रत्येक टुकड़ा और फिर पूरे समझते हैं। अधिकांश प्रोग्रामर और कंप्यूटिंग वैज्ञानिक मुश्किल से छोटे टुकड़े संभाल सकते हैं! –

4

ठीक है, हम सभी मोजार्ट के रूप में उतने अच्छे नहीं हो सकते हैं, क्या हम कर सकते हैं? शायद बीथोवेन प्रोग्रामिंग आसान है।

+0

हालांकि मुझे संदेह है कि हम में से कई बीथोवेंस हो सकते हैं ... – Johanness

14

यूज़नेट की एक क्लासिक कहानी, एक असली प्रोग्रामिंग मोजार्ट के बारे में।

रियल प्रोग्रामर फोरट्रान में लिखते हैं।

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

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

जब मैं रॉयल McBee में कम्प्यूटर कार्पोरेशन, टाइपराइटर कंपनी के एक अब मृत हो चुके सहायक के लिए काम पर चला गया मैं पहली बार मेल से मुलाकात की। फर्म ने एलजीपी -30, एक छोटा, सस्ता (दिन के मानकों द्वारा) ड्रम-मेमोरी कंप्यूटर बनाया, और केवल आरपीसी -4000, का निर्माण करना शुरू किया, बहुत बेहतर, बड़ा, बेहतर, तेज़ - ड्रम-मेमोरी कंप्यूटर। कोरों की कीमत बहुत अधिक थी, और रहने के लिए यहां नहीं थे, वैसे भी।(यही कारण है कि आप कंपनी, या कंप्यूटर की नहीं सुना है है।)

मैं इस नए चमत्कार के लिए एक फोरट्रान संकलक लिखने के लिए काम पर रखा गया था और मेल अपने चमत्कार के लिए मेरे मार्गदर्शक थे। मेल ने कंपाइलर्स को स्वीकार नहीं किया था।

"यदि कोई प्रोग्राम अपने कोड को फिर से लिख नहीं सकता है, तो उसने पूछा," यह कितना अच्छा है? "

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

मेल का काम आरपीसी -4000 के लिए ब्लैकजैक प्रोग्राम को फिर से लिखना था। (पोर्ट? इसका क्या मतलब है?) नई कंप्यूटर एक एक से अधिक एक योजना को संबोधित कर रहे है, जिसमें प्रत्येक मशीन अनुदेश, आपरेशन कोड और जरूरत संकार्य के पते के अलावा, एक था दूसरा पता जो इंगित करता है कि, ड्रम पर घूमने पर, अगला निर्देश स्थित था। आधुनिक प्रवृत्ति में, प्रत्येक एकल निर्देश के बाद गया था! पास्कल की पाइप में और इसे धुएं दें।

मेल RPC-4000 प्यार करता था, क्योंकि वह अपने कोड का अनुकूलन कर सकते हैं: जो है, ड्रम पर दिए गए निर्देशों का पता लगाने इसलिए कि बस के रूप में एक अपना काम समाप्त होने पर, अगले बस पर पहुंचने से होगा "सिर पढ़ा "और तत्काल निष्पादन के लिए उपलब्ध है। उस नौकरी को करने के लिए प्रोग्राम था, "ऑप्टिमाइज़िंग असेंबलर", लेकिन मेल ने इसका उपयोग करने से इनकार कर दिया।

"आप कभी नहीं जानते कि यह कहां जा रहा है चीजें डालते हैं", उन्होंने समझाया, "तो आप को अलग स्थिरांक का उपयोग करना होगा"।

उस टिप्पणी को समझने से पहले यह काफी समय था। चूंकि मेल प्रत्येक ऑपरेशन कोड के संख्यात्मक मूल्य को जानता था, और अपने स्वयं के ड्रम पते को सौंपा गया था, पर लिखे गए प्रत्येक निर्देश को संख्यात्मक निरंतर माना जा सकता है। वह पहले "एड" निर्देश उठा सकता है, कह सकता है, और गुणा करें, यदि उसके पास सही संख्यात्मक मान था। उनका कोड किसी और को संशोधित करने के लिए आसान नहीं था।

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

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

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

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

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

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

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

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

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

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

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

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

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

+0

अच्छी कहानी! मैंने वास्तव में इसका आनंद लिया है, धन्यवाद! –

+2

आप कहानी का शीर्षक भूल गए: "द स्टोरी ऑफ मेल"। कुछ और विवरणों के लिए http://en.wikipedia.org/wiki/Mel_Kaye देखें। – CesarB

1

यदि ऐप्पल ने "मोजार्ट" प्रोग्रामिंग अपनाया है, तो आज कोई मैक ओएस एक्स या आईट्यून्स नहीं होगा।

यदि Google ने "मोजार्ट" प्रोग्रामिंग अपनाया है, तो कोई जीमेल या Google रीडर नहीं होगा।

यदि एसओ डेवलपर्स ने "मोजार्ट" प्रोग्रामिंग अपनाया है, तो आज कोई एसओ नहीं होगा।

यदि माइक्रोसॉफ्ट ने "मोजार्ट" प्रोग्रामिंग अपनाया है, तो आज कोई विंडोज नहीं होगा (ठीक है, मुझे लगता है कि यह अच्छा होगा)।

तो उत्तर बस नहीं है। कुछ भी सही नहीं है, और कुछ भी सही होने का मतलब नहीं है, और इसमें सॉफ्टवेयर भी शामिल है।

+0

माइक्रोसॉफ्ट पर सहमत। – hlfcoding

52

मोजार्ट प्रोग्रामिंग शैली एक पूर्ण मिथक है (सभी को अपने प्रारंभिक प्रयासों को संपादित और संशोधित करना है), और हालांकि "मोजार्ट" अनिवार्य रूप से इस उदाहरण में एक रूपक है, यह ध्यान देने योग्य है कि मोजार्ट काफी मिथक था।

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

मोजार्ट स्वयं भ्रम को कायम रखने के लिए सावधान था कि उसका संगीत अपने अधिकांश ड्राफ्ट को नष्ट कर अपने दिमाग से उभरा, हालांकि यह दिखाने के लिए पर्याप्त जीवित रहा कि वह हर किसी की तरह एक संपादक था। बीथोवेन प्रक्रिया के बारे में और अधिक ईमानदार था (शायद क्योंकि वह बहरा था और यह नहीं बता सका कि क्या कोई भी उसके ऊपर छेड़छाड़ कर रहा था)।

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

कहानी का नैतिक है: प्रचार पर विश्वास न करें। प्रोग्रामिंग काम कर रही है, इसके बाद पहली बार गलतियों को ठीक करने के लिए और अधिक काम करने के बाद, दूसरी बार गलतियों को ठीक करने के लिए और अधिक काम करने के बाद, और जब तक आप मर जाते हैं तब तक आगे बढ़ने के लिए और अधिक काम करते हैं।

+0

वाह मोजार्ट ने लिखने के लिए पासा का इस्तेमाल किया! दिन के लिए ट्रिविया। –

+1

जिस संगीत ने इसे बनाया वह अपने पहले सोनाटा के जितना बुरा था। मेरा पूरी तरह से अविश्वसनीय सिद्धांत यह था कि उसने इसे सुधार रखा लेकिन इसे गुप्त रखा (स्पष्ट कारणों से)। मैंने हमेशा मोजार्ट के संगीत को सुंदर फॉर्मूलात्मक पाया है - यह निश्चित रूप से इसे समझाएगा। – MusiGenesis

+0

महान उत्तर, लेकिन अंतिम वाक्य बहुत दुखी है। – alexmeia

0

कंप्यूटिंग में प्रगति यहां और वहां महिमा या प्रतिभा में बलिदान के लायक है।

5

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

+1

+1; "एक तर्कसंगत डिजाइन प्रक्रिया: कैसे और क्यों नकली इसे याद दिलाता है" की याद दिलाता है (http: //web.cs.wpi।edu/~ gpollice/cs3733-B05/रीडिंग/नकली IT.pdf) – mlvljr

15

Edsger डिज्कस्ट्रा "Discipline in Thought" हकदार इस यूट्यूब वीडियो में बीथोवेन प्रोग्रामिंग बनाम मोजार्ट अपने विचारों की चर्चा। इस सूत्र में

alt text

लोग काफी चर्चा की है कैसे Dikstra के विचारों अव्यावहारिक हैं। मैं कुछ कोशिश करने और उसकी रक्षा करने जा रहा हूं।

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

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

+0

सहमत हुए। बिंदु में मामला: Digsby – hlfcoding

+1

महान जवाब। आपका तीसरा बिंदु जागरूक रहने और सुरक्षा के लिए एक काफी मूल्यवान चीज है। – bernie

+1

इस के रूप में, "प्रयोग दूसरे शब्दों में बयान किया जा सकता और 'आसपास चल रहा है' इतने लंबे समय के ठीक के रूप में आप इस का उपयोग यह पता लगाने की क्या आप बाद में वितरित करने के लिए है, न कि उस प्रयोग को देने? जा रहे हैं ऐसा नहीं है कि प्रयोग के किसी भी प्रकार के स्तर पर है , "कुछ ऐसा वितरित करें जो थोड़ी देर के लिए ग्राहक को बेवकूफ बनाये ...." –

6

मुझे लगता है कि मोजार्ट कहानी इस बात को भ्रमित करती है कि यह कैसे विकसित किया जाता है इसके विपरीत भेज दिया जाता है। बीथोवेन ने जनता पर अपने सिम्फनी का परीक्षण नहीं किया। (यह देखना दिलचस्प होगा कि पहले सार्वजनिक प्रदर्शन के बाद उन्होंने किसी भी स्कोर को कितना बदला।)

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

मैं Simucal's response का पक्ष लेता हूं, लेकिन मुझे लगता है कि मोजार्ट-बीथोवेन रूपक को त्याग दिया जाना चाहिए। वह जूता-सींग डिजस्ट्रा के अनुशासन और समझ को समझने पर आग्रह करता है जहां यह वास्तव में संबंधित नहीं है।

अतिरिक्त टिप्पणी:

टीवी लोकप्रिय बनाने इतना गर्म नहीं है, और यह संगीत रचना और क्या एक संगीतकार कर रहा है और क्या एक प्रोग्रामर कर रहा है के बारे में कुछ बातें confuses। डिजस्ट्रा के अपने शब्दों में, 1 9 72 के ट्यूरिंग अवॉर्ड लेक्चर से: "हमें यह नहीं भूलना चाहिए कि हमारे व्यवसाय को प्रोग्राम बनाने के लिए नहीं है; यह वांछित व्यवहार प्रदर्शित करने वाले कम्प्यूटेशंस के वर्गों को डिजाइन करने का हमारा व्यवसाय है।" वांछित व्यवहार की खोज करने के लिए एक संगीतकार बाहर हो सकता है।

इसके अलावा, डिजस्ट्रा की धारणा में कि संस्करण 1.0 अंतिम संस्करण होना चाहिए, हम भी आसानी से भ्रमित व्यवहार और कार्यक्षमता समय के साथ विकसित होते हैं। मेरा मानना ​​है कि वह सोचने में अतिसंवेदनशील है कि सभी भविष्य के संस्करण इसलिए हैं क्योंकि पहले व्यक्ति को विचार नहीं किया गया था और दृढ़तापूर्वक और भरोसेमंद किया गया था।

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

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

तो, क्या डिजस्ट्रा ने खरीदी गई पहली ऑटोमोबाइल को चलाने के लिए जारी रखा, या बिल्कुल उस ऑटोमोबाइल के क्लोन? हो सकता है कि योजनाबद्ध अशुभता हो, लेकिन इसमें से बहुत से सुधार और विश्वसनीयता के साथ ऐसा करना है जो संभवतः उपलब्ध नहीं हो सका या ऑटोमोटिव प्रौद्योगिकी की पिछली पीढ़ियों में भी विचार नहीं किया जा सकता था।

मैं एक बड़ा डिजस्ट्रा प्रशंसक हूं, लेकिन मुझे लगता है कि मोजार्ट-बीथोवेन चीज बहुत सरल और अनुचित है। मैं भी एक बड़ा बीथोवन प्रशंसक हूँ।

+0

मैं सहमत हूं। मुझे नहीं लगता कि डिजस्ट्रा विरोधी वृद्धिशील परिवर्तन था। वह अधूरा/खराब सॉफ्टवेयर जारी कर रहा था। मुझे लगता है कि उनके मोजार्ट/बीथोवेन समानता को संदर्भ से बाहर निकाला गया है। वह नहीं चाहते थे कि मैं समस्याओं पर हैक/स्लैश करूँ और इसके बजाय विधिवत समझदारी और स्थिर सॉफ्टवेयर तैयार कर सकूं। – mmcdole

+1

महान लाइन: "बीथोवेन नहीं उसकी symphonies सार्वजनिक पर बीटा परीक्षण किया"। – MusiGenesis

1

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

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

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