आकर्षक प्रश्न; मुझे वस्तुनिष्ठ मानदंडों पर आपका जोर पसंद है। हम सीखना चाहते हैं:
प्रोग्रामिंग अवधारणाओं : पहली प्रोग्रामिंग भाषा का समर्थन करना चाहिए: फ़ंक्शन कॉल, पुनरावृत्ति, पुनरावृत्ति
मौलिक विचार : पहली प्रोग्रामिंग भाषा को सरणियों का समर्थन करना चाहिए (सौम्य परिचय में पहले चरण के लिए कि स्मृति वास्तव में कैसे काम करती है और संकेत कैसे काम करते हैं)
व्यावहारिक प्रोग्रामिंग कौशल : डिबगर का उपयोग कैसे करें, प्रोफाइलर का उपयोग कैसे करें, बड़ी समस्याओं को कैसे हल करें (एक उच्च स्तरीय भाषा), बड़े सिस्टम को एक साथ कैसे रखा जाए, समस्याओं को कैसे दूर किया जाए (समस्याओं का अपघटन), लेखन से कैसे बचें जटिल कोड, निष्पादन योग्य बयानों की एक (अक्सर गुप्त) श्रृंखला के पीछे के इरादे से मनुष्यों को कैसे संवाद करना है ।
तथ्य यह है कि पूर्व-लिखित पुस्तकालय सॉर्ट () जैसी चीजों के लिए मौजूद हैं, और उनका उपयोग कैसे करें - यानी, यह तथ्य कि खरोंच से सब कुछ लिखना आवश्यक नहीं है।
पहली भाषा के लिए अन्य मानदंड :
व्याख्या की गई (त्वरित प्रतिक्रिया सीखने की प्रक्रिया में मदद करती है)।
एक इंटरैक्टिव वातावरण जो सीखने, परीक्षण और डीबगिंग को गति देता है।
छात्रों के लिए उस भाषा में पढ़ने के लिए उच्च-गुणवत्ता वाला स्रोत कोड उपलब्ध है
"पढ़ने में आसान", "सिंटैक्स जो प्राकृतिक भाषा से संपर्क करता है" (सोर्सकोड को पढ़ना और ग्रेड करना आसान बनाने के लिए)
पोर्टेबल (मैक ओएस, विंडोज, यूनिक्स पर चलता है)। भाषा का कम से कम एक मुफ्त सॉफ्टवेयर कार्यान्वयन।
उपवास करना, "कुछ गोचैस" - उदाहरण के लिए, "[I] टी पहले ओओपीएल के रूप में जावा के बजाय शुरुआती पायथन और फिर जावा को सिखाने के लिए तेज़ हो सकता है।" - "ऑब्जेक्ट-ओरिएंटेड प्रोगामिंग लैंग्वेज की तुलना" और टेलीस्कोप Rule
माथियास फेलिएसेन ने एक प्रोग्रामिंग भाषा विकसित की जिसमें त्रुटि संदेश शुरुआत वाले दर्शकों के अनुरूप थे। वह इस बात पर जोर देता है कि विशेष भाषा का चुनाव उतना महत्वपूर्ण नहीं है जितना कि एक अच्छी डिजाइन पद्धति को सिखाना। वास्तव में, वह पहले सीएस पाठ्यक्रम को लिबरल आर्ट्स वर्ग के रूप में देखता है, महत्वपूर्ण सोच, समस्या को हल करने और विस्तार पर ध्यान देता है।
एक दूसरी प्रोग्रामिंग भाषा के लिए मानदंड
सामान हम छात्रों को सीखना चाहते हैं, लेकिन शायद यह दूसरी प्रोग्रामिंग भाषा के लिए इंतजार कर सकता है:
एक "प्रासंगिक" भाषा जो "बहुत गूढ़ नहीं है"; कुछ "उद्योग में लोकप्रिय"
जटिलता सिद्धांत: उन कार्यों को कैसे पहचानें जो वर्तमान तकनीक के साथ असंभव हैं।
उच्च-स्तरीय सामान: नौकरी के लिए सही उपकरण कैसे चुनें , कंपाइलर, स्ट्रक्चर, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग, फंक्शनल प्रोग्रामिंग, लॉजिक प्रोग्रामिंग, कंपाइलर डिज़ाइन, कंपोज़िंग और मैनिपुलेटिंग फंक्शन्स (लिस्प / एमएल सेंस में) का उपयोग कैसे करें समवर्ती और वितरित प्रोग्रामिंग,
निम्न-स्तरीय सामान: सूचक अंकगणित, कंप्यूटर वास्तुकला। मेमोरी प्रबंधन, स्टैक फ्रेम, असेंबली प्रोग्रामिंग, मशीन आर्किटेक्चर, डिवाइस ड्राइवर और ऑपरेटिंग सिस्टम डिज़ाइन (ताकि मशीन "कुछ भयावह ब्लैक बॉक्स की तरह प्रतीत न हो" वे घुसना नहीं कर सकते)
संपादित करें: मुझे लगता है कि यह निराशाजनक है कि मैंने कुछ अन्य लोगों के साथ मिलकर कुछ का सारांश पोस्ट किया, "एक कानूनी मामला नहीं हो सकता है"।
इसलिए मैं अपने पिछले अनौपचारिक लिंक के लिए एक अधिक औपचारिक प्रशस्ति पत्र जोड़ रहा हूं , उचित उपयोग और अन्य विकी कॉपीराइट मुद्दों का अनुपालन करने का प्रयास कर रहा हूं ।
यह उत्तर पोर्टलैंड पैटर्न रिपोजिटरी में फ्रेशमैन की पहली भाषा (एनॉन 2011) का सारांश है ।
(एनोन 2011) कई अनाम और विभिन्न अन्य लेखक। "फ्रेशमैन फर्स्ट लैंग्वेज"। पोर्टलैंड पैटर्न रिपोजिटरी। 27 सितंबर, 2011. http://c2.com/cgi/wiki?FreshmansFirstLanguage ।