2009-04-13 13 views
7

क्या करता है - 'एक भाषा जानना' वास्तव में क्या मतलब है?प्रोग्रामिंग भाषा में अच्छा होने का क्या अर्थ है?

मुझे यकीन है कि यह सिर्फ वाक्यविन्यास जानने से कहीं अधिक है।

यह

  • सब जानते हुए भी है/उपलब्ध पुस्तकालयों
  • जानते हुए भी कैसे भाषा की सुविधाओं कार्यान्वित कर रहे हैं के सबसे

आप जिस भाषा में आप कुशल हैं कैसे सीखा?

+0

@epochwolf - संपादन के लिए धन्यवाद, अब बहुत स्पष्ट दिखता है! – Pranav

उत्तर

7

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

मुझे लगता है कि "एक भाषा जानना" का अर्थ है किसी संदर्भ संसाधन में कुछ भी देखे बिना अधिकांश कार्यक्रमों (~ 9 0%) को पढ़ने और समझने में सक्षम होना, और यह जानना कि वास्तव में और अस्पष्ट भागों पर तकनीकी विवरण कहां जाना है एक ढांचा। उन भाषाओं/प्लेटफार्मों के लिए जिनके पास "ढांचा" नहीं है, उनके पास आमतौर पर समुदाय द्वारा स्वीकार किए जाने वाले प्रमुख पुस्तकालयों का ज्ञान है।

उस भाषा में लिखने के लिए, इसका मतलब है कि आप जो लिख रहे हैं उसके डिजाइन पर ~ 90% + समय खर्च करना - डिजाइन पर शोध सहित - और 10% से कम तकनीकी संदर्भ जानकारी देख रहे हैं।

+0

पुस्तक 'प्रभावशाली जावा' मानव परिचय और प्रोग्रामिंग वाले लोगों के बीच एक समान संबंध है, इसकी शुरुआत में। (पुस्तक b.t.w अत्यधिक अनुशंसा की जाती है) –

4

सच के रूप में 'अच्छा'

  • का मतलब है अपने आप को वर्णन करने के लिए आप के बारे में सभी दोनों
    • अद्वितीय/अच्छा सुविधाओं और सहित भाषा की सुविधाओं, जानते हैं कि एक भाषा 'जानने' जब उन्हें, साथ ही
    • धूल कोनों और क्या उपयोग करने के लिए से बचने के लिए
  • आप आम सम्मेलनों
  • के बारे में पता है (जैसा कि आप का उल्लेख) आप मंच
  • आप पूरे toolchain पता की पुस्तकालयों पता (IDEs, परियोजनाओं, डिबगर, प्रोफाइलर निर्माण) ताकि आप भाषा
2

मुझे लगता है कि यह वास्तव में "अच्छा", या "अच्छा होने" के उद्देश्य पर निर्भर करता है।

उदाहरण के लिए, चलिए जावा पर विचार करें।

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

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

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

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

0

एक एल्गोरिथ्म को देखते हुए, अगर आप एक समाधान है कि

  • तेजी (कई अन्य कार्यक्रमों की तुलना में)
  • कुशल (कई अन्य कार्यक्रमों की तुलना में कम संसाधनों का उपयोग) लागू कर सकते हैं
  • छोटे (एक छोटी मेमोरी पदचिह्न का उपयोग करता है)
  • सुरुचिपूर्ण

(समझते हैं और बनाए रखने के लिए आसान) मैं मेरी राय में लगता है कि आप भाषा को बेहतर जानते हैं ...

1

इसका मतलब है कि आप उस भाषा में सोच सकते हैं कि। जब आप समस्या कथन से गुज़रते हैं तो कोड के कुछ हिस्सों को आपके दिमाग में उभरने में सक्षम होना एक अच्छा संकेत है कि आप एक भाषा में कितने कुशल हैं।

3

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

यह

  • सब जानते हुए भी है/उपलब्ध पुस्तकालयों के सबसे? मुझे ऐसा नहीं लगता है, क्योंकि आमतौर पर उपयोग की जाने वाली लाइब्रेरी की मनमानी संख्या होती है जो इसे सीखते समय बनाई जाती है। यहां तक ​​कि आधार कई भाषाओं के लिए पुस्तकालयों में आज हजारों अलग-अलग अवधारणाएं (कक्षाएं) और हजारों कार्य हैं।
  • यह जानकर कि भाषा की विशेषताएं कैसे लागू की जाती हैं? यह भाषा के बजाए भाषा के दिए गए कार्यान्वयन की एक संपत्ति है। लेकिन मुझे लगता है कि यह योगदान करता है। यह जानकर कि नियमित अभिव्यक्तियों को अक्सर राज्य मशीनों के रूप में लागू किया जाता है (और इसके लिए सिद्धांत को जानना) नियमित अभिव्यक्ति भाषाओं को समझने के लिए काफी प्रासंगिक है। हालांकि जावा बाइट कोड के कामों को जानने के बारे में जानने के दौरान जावा अनुप्रयोगों में कभी भी कोई प्रासंगिकता नहीं है ... [1] मुझे लगता है कि कुछ भाषाओं में दूसरों की तुलना में उनके संभावित कार्यान्वयन से क्लीनर अलगाव होता है: यह उच्च और उच्च के बीच एक महत्वपूर्ण अंतर हो सकता है। निम्न स्तर की भाषाएं।

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

[1] कि बाईटकोड के स्थिर विश्लेषण के बारे में एक काम नहीं था; लेकिन वास्तविक समाधान कुछ भी लिखा जा सकता था।

0

आप पर विचार करने के लिए यह वास्तव में एक भाषा नहीं जानता का मतलब क्या पसंद आ सकते हैं। उदाहरण के लिए, मैं अक्सर उन लोगों के पास आ जाता हूं जो मानते हैं कि वे ओकैमल जानते हैं क्योंकि वे मानक एमएल (एक ही परिवार की दूसरी भाषा) जानते हैं, वास्तव में, वे भाषाओं या उनके व्यावहारिक प्रभावों के बीच मतभेदों से अवगत नहीं हैं। तो मैं कहूंगा कि एक भाषा जानने का हिस्सा यह जानना है कि इसे अन्य भाषाओं से अलग करता है।

सी बनाम सी ++ एक और उदाहरण है। बहुत से लोग दावा करते थे कि वे सी ++ जानते थे और फिर सी ++ में सी कोड लिखेंगे।

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