Pertanyaan menarik; Saya suka penekanan Anda pada kriteria objektif. Kami ingin mahasiswa baru belajar:
konsep pemrograman : Bahasa pemrograman pertama harus mendukung: pemanggilan fungsi, iterasi, rekursi
ide dasar : Bahasa pemrograman pertama harus mendukung array (untuk langkah-langkah pertama dalam pengantar yang lembut tentang bagaimana cara memori benar-benar bekerja dan bagaimana pointer bekerja)
keterampilan pemrograman praktis : cara menggunakan debugger, cara menggunakan profiler, cara memecahkan masalah besar (bahasa tingkat tinggi), cara menyusun sistem besar, cara memecah masalah (penguraian masalah), cara menghindari penulisan kode yang rumit, cara berkomunikasi dengan manusia tentang maksud di balik serangkaian pernyataan yang dapat dieksekusi (seringkali samar).
fakta bahwa perpustakaan pra-tulis ada untuk hal-hal seperti sort (), dan bagaimana menggunakannya - yaitu, fakta bahwa tidak perlu menulis semuanya dari awal.
Kriteria lain untuk bahasa pertama :
ditafsirkan (umpan balik cepat membantu proses pembelajaran).
lingkungan interaktif yang mempercepat pembelajaran, pengujian, dan debugging.
kode sumber berkualitas tinggi tersedia bagi siswa untuk membaca dalam bahasa itu
"mudah dibaca", "sintaks yang mendekati bahasa alami" (untuk membuatnya lebih mudah untuk membaca dan menilai SourceCode)
portable (berjalan pada Mac OS, Windows, Unix). Setidaknya satu implementasi perangkat lunak bebas bahasa.
cepat untuk mengajar, "beberapa gotchas" - misalnya, "[saya] mungkin lebih cepat untuk mengajar pemula Python dan kemudian Jawa, daripada Jawa sebagai OOPL pertama." - "Perbandingan Bahasa Pemrograman Berorientasi Objek" dan TelescopeRule
Matthias Felleisen mengembangkan bahasa pemrograman dengan pesan kesalahan yang disesuaikan untuk audiens pemula. Dia menekankan bahwa pilihan bahasa tertentu tidak sepenting mengajar metodologi desain yang baik. Bahkan, ia melihat kursus CS pertama sebagai kelas Seni Liberal, mengajar pemikiran kritis, pemecahan masalah, dan perhatian terhadap detail.
kriteria untuk bahasa pemrograman kedua
Hal-hal yang kami ingin siswa pelajari, tetapi mungkin ini bisa menunggu bahasa pemrograman kedua:
bahasa "relevan" yang "tidak terlalu esoteris"; sesuatu yang "populer di industri"
Teori kompleksitas: bagaimana mengenali tugas yang tidak mungkin dilakukan dengan teknologi saat ini.
hal-hal tingkat yang lebih tinggi: cara memilih alat yang tepat untuk pekerjaan itu , bagaimana menggunakan kompiler, struktur, pemrograman berorientasi objek, pemrograman fungsional, pemrograman logika, desain kompiler, menyusun dan memanipulasi fungsi (dalam pengertian Lisp / ML), pemrograman bersamaan dan didistribusikan,
hal-hal tingkat rendah: aritmatika pointer, arsitektur komputer. manajemen memori, frame stack, pemrograman perakitan, arsitektur mesin, driver perangkat dan desain sistem operasi (sehingga mesin tidak akan "tampak seperti kotak hitam menakutkan yang tidak dapat mereka tembus")
EDIT: Saya merasa mengecewakan bahwa memposting ringkasan dari sesuatu yang saya tulis, bekerja sama dengan banyak orang lain, "mungkin bukan posting yang legal".
Jadi saya menambahkan kutipan yang lebih formal ke tautan informal saya sebelumnya, berusaha untuk mematuhi penggunaan yang adil dan masalah hak cipta wiki lainnya.
Jawaban ini adalah ringkasan Bahasa Pertama Freshman (Anon 2011) di Portland Pattern Repository.
(Anon 2011) Banyak penulis anonim dan berbagai lainnya. "Bahasa Pertama Mahasiswa Baru". Repositori Pola Portland. 27 September 2011. http://c2.com/cgi/wiki?FreshmansFirstLanguage .