Saya menemukan diri saya berulang kali kesal dengan harus mengajar mahasiswa baru tentang aturan bahasa khusus (seperti peluruhan array-to-pointer) yang sama sekali tidak ada hubungannya dengan pemrograman itu sendiri. Jadi saya bertanya-tanya:
Apa bahasa pemrograman dengan jumlah terkecil dari aturan bahasa khusus, di mana semuanya kelas satu dan dapat disusun tanpa batasan teknis yang mengganggu? Bukankah bahasa seperti itu akan menjadi bahasa pengajaran yang sempurna?
Catatan Moderator
Kami mencari jawaban panjang yang memberikan penjelasan dan konteks. Jangan hanya daftar bahasa: tolong jelaskan mengapa menurut Anda bahasa menjawab pertanyaan. Jawaban yang tidak menjelaskan apa pun akan dihapus. Lihat Subjektif Bagus, Subjektif Buruk untuk informasi lebih lanjut.
sumber
I=SKK
. Yang paling utama dalam bahasa ortogonal adalah bahasa instruksi tunggal seperti Jot dan RSSB.Jawaban:
Ketika datang ke 'sangat sedikit aturan', saya berpendapat, Lisp atau Smalltalk akan menang. Sintaksisnya dapat ditulis pada satu tab bir.
Tetapi dalam pengalaman saya, kesederhanaan Lisp dan Smalltalk tidak berarti mereka mudah dimengerti dan mudah untuk diajar. Meskipun bukan cara yang 'murni', dalam pengalaman saya, gaya bahasa yang harus dikerjakan adalah yang paling mudah dipahami oleh pemula.
Oleh karena itu, saya akan menyarankan Python, Ruby atau sesuatu yang mirip abstraksi : Anda menemukan (hampir) setiap konsep dasar di dalamnya (OK, tidak ada petunjuk), tetapi Anda tidak perlu memahaminya dari awal untuk membuat sesuatu berfungsi.
sumber
Saya akan mengatakan LISP, atau Skema atau bahasa dari keluarga itu akan menjadi yang paling ortogonal. Dengan
let
,lambda
,define
,if
,cons
,list
, dan(
)
Anda bisa mengajarkan cukup banyak apa pun yang Anda ingin dalam kursus intro. Juga tidak perlu arahan preprocessing atauint main()
dan hal-hal seperti itu yang hanya dimasukkan siswa tetapi tidak melihat alasannya.Dalam kursus CS intro saya, kami melakukan banyak hal yang sangat keren dengan Skema: menerapkan mesin Turing, menerapkan komputer TC-201, menulis tata bahasa bebas konteks, menggunakan rekursi, menulis penggabungan dan penyisipan, penerapan adders, dan berton-ton hal-hal lain.
Saya telah melakukan Java di AP comp sci sebelum kuliah, tetapi Skema hebat karena saya dapat memotong kekacauan dan fokus pada konsep aktual dalam program saya. Itu kelas yang hebat dan saya sangat menyarankan Anda mencobanya untuk pengajaran Anda.
sumber
Pascal dirancang khusus untuk mengajarkan pemrograman. Mudah dipelajari (itu adalah salah satu bahasa pemrograman pertama yang saya pelajari).
sumber
Logo: masih hidup dan menendang !
Ini mungkin tampak lebih seperti mainan daripada bahasa pemrograman, tetapi itu bukan langkah pertama yang buruk bagi banyak orang. Sintaksnya sangat sederhana, tetapi kura-kura memberikan bentuk umpan balik yang lebih konkret daripada kebanyakan bahasa / lingkungan. Mencoba membuat bentuk tertentu adalah cara yang bagus untuk mempelajari proses berpikir ke depan untuk menyelesaikan masalah.
Jika Anda tidak menyukai kura-kura, saya pikir Skema adalah jalan yang harus ditempuh.
sumber
Saya akan mengusulkan SML dan Haskell. Orthogonality telah menjadi titik desain utama bagi keduanya. Secara khusus, inti dari SML (yaitu, bagian dari bahasa yang tidak berkaitan dengan modularitas) cukup banyak merupakan kalkulus lambda yang diketik. Akibatnya, sebagian besar fitur bahasa didorong oleh jenis dan jenis pada gilirannya mendorong formulir pengantar dan penghapusan untuk nilai-nilai. Ini cukup ideal.
Ada beberapa kutil non-type-theoretic dalam kedua bahasa (eqtypes di SML, seq di Haskell) tetapi mereka masih mengalahkan hal-hal lain di luar sana dalam hal interaksi aneh fitur bahasa yang tidak terkait.
sumber
Apa pun pilihannya, saya akan sangat mendesak mengajarkan bahasa "nyata" . Mengajar bahasa mainan bekerja untuk sebagian orang, tetapi bagi yang lain itu sangat, sangat menyebalkan karena terputusnya hubungan dengan dunia nyata. Beberapa orang memerlukan relevansi dunia nyata sebagai motivasi untuk belajar, dan itu bukan tempat kami untuk menilai strategi pembelajaran ini (pada kenyataannya, itu adalah kesalahpahaman umum).
Ini mendiskualifikasi bahasa seperti Logo, tetapi juga bahasa khusus domain seperti Pemrosesan . Sementara yang terakhir ini sangat berguna untuk hal-hal tertentu (misalnya menghasilkan grafik info), penggunaannya terlalu terbatas untuk sebagian besar penggunaan (dan dengan demikian sebagian besar pengguna). Ini juga mengecualikan Gofer , subset Haskell yang tidak berguna. Ini juga mengecualikan Pascal karena meskipun yang terakhir telah digunakan dalam proyek nyata, itu tidak relevan lagi dan hanya tidak memiliki fitur-fitur penting (misalnya string bawaan).
Dari bahasa praktis, saya setuju dengan yang sudah disebutkan: dialek Lisp atau Skema modern, Haskell, Python atau Ruby. Secara pribadi, saya mungkin menggunakan Python tetapi semua pilihan itu memiliki kelebihan dan kekurangan.
sumber
Tcl memiliki 12 aturan yang mengatur seluruh bahasa.
Ada sangat sedikit kasus khusus atau kata-kata atau karakter yang dicadangkan.
sumber
Untuk memperluas komentar saya, di Jot semuanya adalah kelas satu (karena itu adalah kalkulus lambda) dan dapat disusun. Hanya ada satu instruksi. Ini adalah bahasa pengajaran yang benar-benar mengerikan.
Secara umum, turing turing memiliki sangat sedikit aturan khusus dan mengharuskan Anda untuk memahami dasar-dasar perhitungan dengan sangat baik sebelum Anda dapat melakukan apa pun. Bahasa pengajaran yang sempurna memungkinkan siswa untuk bereksperimen tanpa mencabut semua rambut mereka, jadi abstraksi tingkat yang lebih tinggi sebenarnya adalah hal yang baik.
sumber
Fitur terpenting dalam bahasa yang Anda pelajari adalah:
prinsip paling tidak mengejutkan (PASCAL)
keterbacaan (Ada)
Menurut pendapat saya, yang kedua mengalahkan yang pertama, karena membaca kode bahkan lebih penting daripada menulisnya.
Sekarang lagi, saya menulis C #, Java, Objective-C dan Javascript untuk mencari nafkah, yang semuanya memiliki kebiasaan yang mengerikan: D
Namun jika saya harus memilih satu bahasa untuk memulai, saya akan memilih C #. Ini relatif mudah dibaca, memiliki beberapa kejutan serius dalam dirinya sendiri (mereka paling sering tersembunyi dalam alat / kerangka kerja MS ...) dan sejumlah besar kode untuk dibaca dan dokumentasi, yang keduanya penting untuk belajar dengan baik.
sumber