मैं किस बिंदु पर कह सकता हूँ कि मैंने "भाषा" सीखी है?


67

प्रोग्रामिंग के अपने कुछ वर्षों में, मैंने रूबी से C ++ तक सब कुछ के साथ खिलवाड़ किया है। मैंने केवल मूल सिंटैक्स (रूबी) सीखने से लेकर कई प्रमुख (मेरे लिए) परियोजनाओं को पूरा करने के लिए किया है, जिन्होंने भाषा के साथ मेरी क्षमताओं को बढ़ाया है। इस विविधता को देखते हुए (और यह तथ्य कि वास्तव में एक भाषा सीखना कभी बंद नहीं होता है), मैं कब कह सकता हूं कि मैं भाषा जानता हूं (या सीखा है)?


12
मुझे लगता है कि जिस शब्द की आप तलाश कर रहे हैं वह "भाषा" में महारत हासिल है, इस संदर्भ में "सीखा" थोड़ा अजीब है।
पीटर बी

7
"शब्द अर्थ के लिए हैं: जब आपको अर्थ मिल गया है, तो आप शब्दों को भूल सकते हैं।" -
ज़ुआंगज़ी

9
जब आपको यह सवाल पूछने की ज़रूरत नहीं है, तो आपको पता चल जाएगा कि आपको क्या जानने की ज़रूरत है ...

1
@JarrodRoberson क्या यह ज़ुआंगज़ी है जिसने कहा था?
jadkik94

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

जवाबों:


70

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

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


15
संवादी और धाराप्रवाह शब्द व्यक्तिपरक हैं और प्राकृतिक भाषा के लिए उपयुक्त होते हुए, यह देखना मुश्किल है कि कंप्यूटर भाषा में लागू होने पर उनका क्या अर्थ है। हालांकि अभी भी व्यक्तिपरक, कार्यात्मक और मुहावरेदार बेहतर काम कर सकते हैं। कार्यात्मक का तात्पर्य है कि आप उपयोगी रचनाओं को लिखने के लिए वाक्यविन्यास को अच्छी तरह से जानते हैं, जबकि एक मुहावरेदार ज्ञान होने का अर्थ है कि आप न केवल भाषा में लिखना जानते हैं, बल्कि भाषा के मुहावरों का उपयोग करना भी अच्छी तरह जानते हैं, जैसे कि usingC # का उपयोग करना या b, a = a, bअजगर में जनरेटर। अन्यथा, +1।
मार्क बूथ

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

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

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

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

25

यह निर्भर करता है कि कौन पूछ रहा है

जो व्यक्ति पूछता है कि उसे एक निश्चित विचार है कि किसी व्यक्ति से किस स्तर के कौशल की अपेक्षा की जाती है, जो कहता है कि उसने "एक भाषा सीखी है।"

मूल रूप से, मुझे दो चापलूसी पैमानों का सामना करना पड़ा, जिसके द्वारा लोग इस सवाल का जवाब "क्या आपने एक्स सीखा है?"

अधिकांश नर्ड्स के लिए यह एक अजीब सवाल है खरपतवार को पोज़ करना। यह पहले से ही आपके प्रश्न के अन्य उत्तरों द्वारा प्रदर्शित किया जाता है)। यदि आप कहते हैं कि आपने इसे सीखा है तो आप कार्य के दायरे को देखने में असफल हो जाते हैं, जो कि "पूर्णता" है, और इससे भी बदतर: आप विनम्रता में असफल हो जाते हैं।

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

तो, आपके दर्शकों क्या है?


4
साक्षात्कार में, आप इसे जानते हैं अगर आप इसे जानते हैं। कार्यस्थल में, आप यह जानते हैं कि क्या Google इसे जानता है।
asfallows

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

18

मुझे लगता है कि लोग "सीखे हुए" शब्द की अंतिमता पर ध्यान केंद्रित कर रहे हैं, यह बिल्कुल सही है कि इसका मतलब है कि आप सीख चुके हैं। और जैसा कि सभी ने उल्लेख किया, प्रोग्रामिंग भाषाएं बोली जाने वाली भाषाओं की तरह ही जीवित संस्थाएं हैं। उदाहरण के लिए, जिस व्यक्ति के पास C # 2 की पूरी महारत है, वह LINQ, Lambdas, varkeyword, object / collection initializers और एक्सटेंशन के तरीकों के साथ C # 3 को देखेगा और पाएगा कि पिछले संस्करण के लिए उसने जो सीखा है उससे बहुत कुछ बदल गया है। ऐसा ही C # 4 के साथ हो रहा है await, asyncकीवर्ड और अन्य नए भाषा निर्माणों के साथ।

और हम यहाँ सिंटेक्स की बात कर रहे हैं। हम भूल जाते हैं कि अधिकांश भाषाओं को एक ढांचे के साथ जोड़ा जाता है । C # में .NET फ्रेमवर्क है, जावा का अपना ढांचा है, जैसा कि रूबी, C ++, PHP और PERL है। किसी भाषा के लिए शब्दकोष के रूप में फ्रेमवर्क के बारे में सोचें और भाषा केवल वाक्य रचना है। भाषा जानने का मतलब है कि आप भाषा में वाक्य बनाना जानते हैं। फ्रेमवर्क जानने का मतलब है कि आप भाषा में खुद को अच्छी तरह से व्यक्त कर सकते हैं। अंत में, एक बार जब आप वाक्यविन्यास और शब्दावली जानते हैं, तो आपको मुहावरों को सीखने की आवश्यकता है ताकि आप कोड को "मूल वक्ता" के रूप में लिखें।

मैं कहता हूँ कि सीखने के कई स्तर हैं।

  1. हैलो वर्ल्ड (आप सबसे अल्पविकसित कार्यक्रम लिख सकते हैं।)
  2. प्रवीण (आप बुनियादी कार्यक्रम लिख सकते हैं लेकिन नियमित रूप से ऑनलाइन मदद लेने की जरूरत है)
  3. धाराप्रवाह (आप आवश्यक कुछ संदर्भ के साथ अग्रिम कार्यक्रम लिख सकते हैं)।
  4. मूल वक्ता (आप न्यूनतम ऑनलाइन मदद से उन्नत कार्यक्रम लिख सकते हैं, आपका कोड किसी अन्य मूल वक्ता के कोड से अप्रभेद्य है)।

3
नाइटपिक: awaitC # 5 से है, C # 4 में प्रमुख नई चीज थी dynamic
18

आप ठीक कह रहे हैं ... मैं सी # के किस संस्करण का ट्रैक खोता रहता हूं। .NET के किस संस्करण के साथ जाता है
माइकल ब्राउन

7

आप शायद ही कभी कह सकते हैं कि आपने एक भाषा सीखी है। इसका मतलब है कि आप इसके बारे में सीख रहे हैं, जो कि ... मूर्खतापूर्ण है।

यह कहना कि आप किसी भाषा को जानते हैं तो ठीक है जब आप ऐसा कोड लिख सकते हैं जो वाक्यविन्यास संदर्भ का संदर्भ दिए बिना भाषा में मुहावरों को तोड़ना नहीं है (हो सकता है कि एक सप्ताह के बाद ज्ञान को घूरना हो)।


2
मुहावरे बदलते हैं, शैलियाँ एक स्थान से दूसरे स्थान पर बदलती रहती हैं, और वास्तव में समय के साथ भाषाएँ स्वयं बदलती हैं। यदि आप यह नहीं कह सकते हैं कि आप "जानते हैं" या "सी" जैसी भाषा सीख चुके हैं, तो जब तक आप इसके बारे में नहीं सीखते, तब तक बहुत कम लोग ही ऐसे होते हैं जो सी ++ सीखने का दावा कर सकते हैं।
कालेब

1
@ कालेब बिल्कुल।
माइकल ब्राउन

3
यदि आप ऐसा सीख रहे हैं, तो आप अपनी मूल भाषा भी नहीं जानते हैं, जो मूर्ख भी है (कम से कम अधिकांश लोगों के लिए)
SuperM

@ कालेब, इससे भी बदतर, सी ++ के कई हिस्सों को नजरअंदाज करने पर बेहतर होता है, क्योंकि कार्मैक और टॉर्वाल्ड्स दोनों ने बताया - इसलिए .. सभी सीपीपी के बारे में जानना बिल्कुल फायदेमंद नहीं है।
मुर्दाघर।

3

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

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


2

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


मैं इससे सहमत नहीं हो सकता। यह पहली भाषा के लिए सही हो सकता है या दो जो आप सीखते हैं - आप बस यह नहीं जान सकते हैं कि क्या देखना है, इसलिए यहां तक ​​कि सबसे आकर्षक डिजाइन विफलताओं को चीजों को करने के सही तरीके से अप्रभेद्य हैं। एक बार जब आप कुछ भाषाएँ सीख लेते हैं, तो आपको नई भाषा सीखना शुरू करने के तुरंत बाद भाषा की खामियों को देखना शुरू कर देना चाहिए। लेकिन फिर आपके विकास में थोड़ी देर के लिए, आप गलत तरीके से "गलत" के साथ "अलग" की बराबरी कर लेंगे। जब तक आप प्रत्येक प्रमुख प्रकार की कुछ भाषाएं नहीं सीखते (प्रक्रियात्मक, OO, कार्यात्मक, घोषणात्मक ...) आपके तत्काल निर्णय संदिग्ध होंगे।
वॉरेन यंग

2

इसके लिए मेरा व्यक्तिगत उत्तर है,

  1. मैं एक साधारण उत्पादन-स्तरीय कार्यक्रम लिखने के लिए मूल बातें जानता हूं।
  2. मैंने एक समस्या को हल करने में कम से कम 3 सीधे घंटे बिताए हैं जो सरल लग रहा था लेकिन ऐसा नहीं था।

वहां से, मैं इसे सीखने नहीं कहूंगा, लेकिन महारत हासिल करूंगा।


1

उस बिंदु पर जब आपका एप्लिकेशन या कंपोनेंट मेल पढ़ सकता है, यानी ज़विंस्की का नियम , जो बताता है:

“हर कार्यक्रम मेल पढ़ने तक का विस्तार करने का प्रयास करता है। जिन कार्यक्रमों का इतना विस्तार नहीं किया जा सकता है उनकी जगह वे लोग ले सकते हैं। ”जेमी ज़्विन्स्की (जिन्होंने इसे“ सॉफ्टवेयर कानून का नियम ”कहा है) द्वारा बनाया गया है, जो यह विश्वास व्यक्त करते हैं कि सभी सही मायने में उपयोगी कार्यक्रम टूलकिट और एप्लिकेशन प्लेटफ़ॉर्म में विकसित होने के लिए दबाव का अनुभव करते हैं ( मेलर बात, वह कहते हैं, कि बस का एक पक्ष प्रभाव है)।

यह तब अपडेट किया गया जब RSS "... आरएसएस फ़ीड्स पढ़ सकता है" के लिए लोकप्रिय हो गया और शायद इन दिनों "... ट्विटर फीड्स पढ़ सकता है" को अपडेट किया जा सकता है। ;-)


0

मुझे लगता है कि आपने एक भाषा सीखी है जब आप इसे नहीं देखते हैं। आप चक्र और डेटा एक्सेस के लिए नहीं देखते हैं, लेकिन एल्गोरिथ्म के वर्कफ़्लो।

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

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

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

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

और अंत में एहसास होता है: आपने समस्याओं को सोचना, विश्लेषण और हल करना सीख लिया है; उनकी तुलना में, वास्तविक भाषा माध्यमिक है, बस नियमों और उपकरणों का वर्तमान बॉक्स।

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