Büyüleyici soru; Objektif kriterlere vurgunu sevdim. Birinci sınıf öğrencilerinin öğrenmesini istiyoruz:
programlama kavramları : İlk programlama dili şunları desteklemelidir: işlev çağrıları, yineleme, özyineleme
temel fikirler : İlk programlama dili dizileri desteklemelidir (hafızanın gerçekte nasıl çalıştığına ve işaretçilerin nasıl çalıştığına dair nazik bir giriş bölümündeki ilk adımlar için)
pratik programlama becerileri : hata ayıklayıcının nasıl kullanılacağı, profilcinin nasıl kullanılacağı, büyük problemlerin (üst seviye bir dil) nasıl çözüleceği, büyük sistemlerin nasıl bir araya getirileceği, problemlerin nasıl çözüleceği (problemlerin ayrıştırılması), nasıl yazılmaması gerektiği karmaşık kod, (genellikle şifreli) bir çalıştırılabilir ifadeler dizisinin arkasındaki amacın insanlara nasıl iletileceği
Önceden yazılmış kütüphanelerin sort () gibi şeyler için var olması ve nasıl kullanılacağı - yani, her şeyi sıfırdan yazmak gerekmediği gerçeğidir.
İlk dilin diğer kriterleri :
yorumlanır (hızlı geribildirim öğrenme sürecine yardımcı olur).
öğrenme, test etme ve hata ayıklamayı hızlandıran etkileşimli bir ortam.
Öğrencilerin bu dilde okuması için yüksek kaliteli kaynak kodu bulunur.
"okunması kolay", "doğal dile yaklaşan sözdizimi" (SourceCode'u okumayı ve notlandırmayı kolaylaştırmak için)
taşınabilir (Mac OS, Windows, Unix'te çalışır). Dilin en az bir özgür yazılım uygulaması.
öğretmek için hızlı, "çok az sayı" - örneğin, "[I] ilk önce Python'u, sonra da Java'yı ilk OOPL olarak Java yerine öğretmek için daha hızlı olmayabilir." - "Nesneye Dayalı Progamming Dillerinin Karşılaştırılması" ve Teleskop Kuralı
Matthias Felleisen başlangıç seviyesindeki izleyicilere yönelik hata mesajları ile bir programlama dili geliştirdi. Belirli bir dil seçiminin, iyi bir tasarım metodolojisi öğretmek kadar önemli olmadığını vurgulamaktadır. Aslında, ilk CS dersini Liberal Sanatlar sınıfı olarak görüyor, eleştirel düşünme, problem çözme ve detaylara dikkat etmeyi öğretiyor.
ikinci bir programlama dili için kriterler
Öğrencilerin öğrenmesini istediğimiz şeyler ama belki de bu ikinci programlama dilini bekleyebilir:
"çok ezoterik olmayan" bir "ilgili" dil; "Sektörde popüler" bir şey
Karmaşıklık teorisi: mevcut teknoloji ile imkansız olan görevlerin nasıl tanınacağı.
üst seviye malzeme: iş için doğru aracı nasıl seçer, bir derleyici nasıl kullanılır, yapılar, nesne yönelimli programlama, işlevsel programlama, mantıksal programlama, derleyici tasarımı, oluşturma ve düzenleme işlevleri (Lisp / ML anlamında), eşzamanlı ve dağıtık programlama,
Düşük seviye malzeme: pointer aritmetik, bilgisayar mimarisi. bellek yönetimi, yığın çerçeveleri, montaj programlama, makine mimarisi, aygıt sürücüleri ve işletim sistemi tasarımı (böylece makine "nüfuz edemeyecekleri ürkütücü bir kara kutu gibi görünmez")
EDIT: Diğerleriyle işbirliği içinde yazdığım bir şeyin özetini "yasal bir yazı olmayabilir" diye hayal kırıklığına uğrattığımı hayal ediyorum.
Bu yüzden önceki gayrı resmi bağlantıya daha resmi bir alıntı ekleyerek adil kullanıma uymaya çalışıyorum ve diğer wiki telif hakkı sorunlarına .
Bu cevap, Portland Örneği Deposundaki Birinci Sınıf Dilinin (Anon 2011) özetidir .
(Anon 2011) Birçok isimsiz ve diğer yazarlar. "Freshmans İlk Dil". Portland Desen Deposu. 27 Eylül 2011. http://c2.com/cgi/wiki?FreshmansFirstLanguage .