Saya menemukan bahwa ketika bahasa dianggap sama dengan perangkat lunak komersial, selalu ada kebutuhan untuk menambahkan fitur baru untuk membenarkan rilis baru.
Bisa ada atau ada bahasa di mana versi 1.0 adalah versi terakhir? Tentu saja perbaikan bug dikecualikan dari ini, tetapi set fitur selalu tetap sama?
Dengan cara ini setiap fitur dalam bahasa cocok dengan baik dan tidak tampak seperti dibaut setelah fakta dengan fitur usang masih ada karena kompatibilitas ke belakang.
Saya berasumsi beberapa bahasa akademik seperti ini? Tapi apakah ada komersial bahasa yang sukses yang mengikuti ide ini? Pustaka yang menyertainya juga bebas untuk mendapatkan fitur-fitur baru juga, tetapi bahasanya selalu konstan.
Salah satu contoh yang bisa saya berikan adalah, salah satu bahasa favorit saya C #, yang sering saya gunakan, semakin banyak fitur yang ditambahkan setiap rilis. Untuk mengambil keuntungan dari ini, saya harus menyerahkan tugas yang sebenarnya di tangan, dan menghabiskan banyak waktu untuk mempelajari ini alih-alih mampu mengambil konsep-konsep sepele dan menggabungkannya sendiri untuk menyelesaikan masalah yang lebih kompleks dengan mudah.
Jadi saya kira saya sedang mencari pendekatan minimalis di mana semuanya konsisten, masuk akal, dan ortogonal mungkin.
Jawaban:
Gangguan, Smalltalk. Kebetulan, itu juga bahasa terbaik di seluruh kelompok.
Baik Lisp dan Smalltalk adalah bahasa yang dibangun berdasarkan metafora pemersatu yang kuat. Metafora Lisp adalah "semuanya adalah daftar; daftar ini mewakili data dan kode (sebagai fungsi)". Metafora Smalltalk adalah "segala sesuatu adalah objek; satu-satunya cara untuk memanggil perilaku adalah dengan mengirimkan pesan ke objek". Metafora ini memungkinkan bahasa menjadi stabil, minimal dan kuat. Sisanya ada di perpustakaan.
Hal-hal yang disebut "struktur kontrol" dalam semua bahasa non-minimal (saya ingin menulis "kembung"), adalah bagian dari perpustakaan di sini (sebagai contoh:
cond
fungsi di lisp;ifTrue:
/ifFalse:
keluarga pesan di Smalltalk keduanya menerapkan persyaratan, di mana bahasa lain memilikiif
kata kunci).Dapat dilihat bahwa Lisp / Smalltalk hampir merupakan perwujudan minimal dari paradigma mereka dan tidak lebih dari itu (Lisp: pemrograman fungsional; Smalltalk: pemrograman berorientasi objek).
sumber
TeX , sistem penyusunan huruf, telah sangat stabil sejak versi 3.
Saya tidak akan mengklaim bahwa itu memenuhi Anda "Jadi saya kira saya mencari pendekatan minimalis di mana semuanya konsisten, masuk akal, dan sebagai orthogonal mungkin." pernyataan, tetapi memenuhi sebagian besar kriteria Anda yang lain.
sumber
C dan Fortran adalah bahasa yang muncul dalam pikiran. Mereka sangat stabil dan sintaksisnya mudah terkandung dalam pikiran seseorang. Selain menulis kode buruk sendiri, ada sangat sedikit kejutan ketika menggunakan bahasa ini. Tetapi saya tidak akan menganggapnya sebagai bahasa yang bagus untuk pengembangan aplikasi yang cepat.
Saya lebih suka kemajuan bahasa yang cepat dengan fitur-fitur yang sekali saya habiskan sedikit waktu untuk itu, membuat pekerjaan saya jauh lebih mudah dan kodenya kurang rumit dengan tetap menjaga ekspresif.
sumber
Behavior
danCollection
hierarki). Sepertinya saya bahwa C jauh lebih stabil dengan semua C89, C99 dan yang lainnya.Yang lain sudah mengatakan Lisp jadi saya harus membesarkan Forth . Sangat mudah diimplementasikan dan aturan bahasa mudah diikuti.
Ini adalah bahasa berbasis tumpukan dengan kamus "kata-kata." Anda dapat dengan mudah memperluas bahasa menggunakan beberapa fitur bawaan.
Contoh grafis kura-kura yang SANGAT singkat:
Kemudian menjalankannya dengan
: squiral -50 50 g 20 0 do 100 f 21 t loop ;
memberi Anda:Penghargaan untuk blog karyawan Microsoft ini .
sumber
Meskipun Lisp disebutkan, bahasa paling minimalis yang saya tahu adalah skema . Saya mengalami kesulitan memahaminya dalam kursus universitas di mana saya harus. Tapi itu mengubah cara berpikir saya tentang pemrograman, dan itu sangat minim. Minimal seperti seluruh sintaksnya adalah Tanda kurung
()
dan spasi.Satu-satunya perubahan dalam bahasa adalah keputusan untuk mengubah primitif seperti
+
,define
(dan beberapa yang lain) menjadi built-in. Berarti mereka tersedia saat peluncuran, tetapi dapat didefinisikan ulang saat run-time.sumber
Tcl, yang awalnya didesain minimalis
Dari sana tentang halaman http://www.tcl.tk/about/features.html , salah satu fiturnya adalah sangat mudah dipelajari dan di mana programmer biasa atau bahkan bukan programmer dapat menggunakannya.
sumber
Ada beberapa bahasa yang relatif tidak berubah sejak awal mereka di luar bahasa esoterik yang tidak mungkin seperti yang diinginkan (saya akan benci untuk mencoba menulis sesuatu yang bermakna di Befunge (meskipun juga telah dimodifikasi sejak aslinya 1.0) melepaskan)).
Bahasa-bahasa yang paling mungkin memenuhi keinginan untuk tidak harus mempelajari sesuatu yang baru adalah bahasa-bahasa yang berspesialisasi dalam 'lem' di antara program-program lain. Bahasa seperti jcl , bash, dan sejenisnya. Bahasa scripting sederhana juga dapat jatuh ke dalam ini - awk menjadi salah satu pemimpin.
Begitu seseorang meninggalkan dunia ini, pengembangan terjadi. Baik bahasa atau kerangka kerjanya. Dalam beberapa situasi sulit untuk membuat kode untuk bahasa tanpa mendapatkan beberapa kerangka kerja yang cepat pulih.
Banyak bahasa memiliki tingkat kompatibilitas ke belakang. Orang masih dapat menulis Java 1.4 hari ini, meskipun mungkin tidak disarankan - kerangka kerja orang menulis untuk itu berubah lebih cepat daripada bahasa. Kita masih dapat menemukan kompiler f77 dan f90 di luar sana untuk spesifikasi bahasa yang tidak berubah dalam 20 atau 40 tahun. C, Objective C, C ++ masih dapat dikodekan dengan spesifikasi bahasa yang lebih lama - seseorang tidak perlu terus memperbarui kode seseorang karena spesifikasi baru dirilis atau kerangka kerja baru di luar sana.
Beberapa bahasa memiliki sejarah yang agak lama tidak berubah karena bahasa itu sendiri cukup kuat untuk melakukan apa pun yang diinginkan. Lisp adalah kandidat utama di bidang ini. Keempat juga jatuh ke dunia "itu tidak banyak berubah".
Pergi ke bahasa skrip yang lebih tradisional melihat TCL, Perl dan Python. Hindari hal-hal yang saat ini berada di ranah 'fad' yang mengalami ledakan popularitas karena alasan tertentu (ruby dan javascript, saya melihat Anda). TCL telah berubah selama bertahun-tahun , meskipun salah satu tujuannya adalah untuk mencoba mempertahankan konsistensi desain. Modern Perl dan Python keduanya memiliki beberapa konsistensi desain, meskipun diakui fitur-fitur baru dapat terasa melesat (meskipun orang tidak perlu menggunakannya).
sumber
Saya pikir Python adalah kandidat yang masuk akal untuk bahasa dengan minimalis sebagai salah satu tujuan desainnya. Ini didasarkan di sekitar sejumlah kecil konsep inti, dan versi 3 berusaha, antara lain, sedikit menyederhanakan bahasa dengan menghapus beberapa fitur.
(Memang, itu tidak sama dengan set fitur yang tetap sama dari versi 1, tapi saya pikir itu cara yang cukup arbitrer untuk mengevaluasi bahasa, mengingat bahwa penulis bahasa dapat menyebutnya versi 1 kapan pun mereka mau.)
sumber
Saya pikir pendekatan desain "minimalis" akan dicontohkan oleh Tcl. Sebagai contoh, Anda dapat menggunakan perintah {catch} dengan nilai {return -code n} untuk mengimplementasikan struktur kontrol yang dapat Anda bayangkan, Perl harus menunggu satu dekade untuk (secara resmi) mendapatkan {switch} - (bukan berarti Perl pernah membutuhkannya). Anda juga akan melihat bahwa Dodekalogue http://wiki.tcl.tk/10259 mencakup tata bahasa Tcl sepenuhnya - sisanya, paradigma pemrograman apa pun yang ingin Anda kerjakan, dapat diekspresikan dalam tata bahasa ini.
sumber