Sekarang, pendekatan KISS untuk bahasa pemrograman adalah gagasan yang lucu, setidaknya jika Anda menganggap bahasa pemrograman sebagai lapisan abstraksi ke set instruksi CPU, dll. Jika Anda tidak mendefinisikan "KISS" lebih dekat. Saya hanya mengatakan di sini, bahwa gerobak sapi KISS diterapkan ke mobil sepenuhnya.
Sekarang interpretasi lain dari KISS bisa berupa "dilakukan dengan cerdas tanpa ornamen yang tidak perlu dan tidak terlalu rumit". Terutama orang dapat berargumen, bahwa seharusnya tidak ada terlalu banyak kasus spesifik untuk hal-hal serupa, dll. Biasanya matematika cukup bagus untuk meringkas hal-hal pada esensinya, dan - o heran - matematikawan telah menghabiskan waktu untuk memikirkan pemrograman dan komputer juga .
Untuk pemrograman, ada 2 model abstrak yang cukup terkenal:
- Salah satunya adalah mesin turing yang mendefinisikan mesin dan model pembelajaran sederhana yang mampu menghitung semua yang dapat dilakukan komputer.
- Yang lainnya adalah Lambda-Calculus oleh Church et. Al. yang setara dalam kekuasaan
Hal yang menyenangkan adalah: Meskipun mesin turing cukup sederhana dalam tata letaknya, itu bukan sistem yang mudah ditangani dan saya tidak berpikir itu memenuhi syarat untuk "smart KISS". Tetapi Lambda Calculus lebih berkaitan dengan bahasa pemrograman yang kita tahu - dan dengan Lisp dan Skema fitur perintis dari kalkulus lambda telah membuat jalannya menjadi banyak bahasa.
Lisp dan Skema BENAR-BENAR sederhana, setidaknya sintaks bijaksana. Sintaks adalah masalah utama dengan bahasa pemrograman (yang mungkin mengapa mereka diciptakan kembali sepanjang waktu). Dalam kasus C ++ hampir tidak dapat ditangani oleh otak manusia untuk memprediksi bagaimana beberapa baris sumber ditafsirkan oleh kompiler.)
Lisps mengurangi kompleksitas sintaksis secara keseluruhan dengan memperkenalkan satu bentuk umum untuk perintah:
(command param1 param2 ...)
Ini bisa menjadi panggilan metode, seperti
(max 1 2 3 4)
serta cabang if, loop dll.
(if (< 1 2)
(write 4)
(write 5))
(semua kode di sini adalah pseudo-Lisp / Dialect agnostic)
Formulir
(command param1 param2 ...)
juga bisa diartikan sebagai daftar
(item1 item2 item3)
Dan itu adalah dasar untuk kesederhanaan dan keindahan Lisps. Karena daftar bersarang (seperti dalam if
contoh pernyataan) merupakan pohon dan itu dapat dengan mudah dipahami oleh mesin dan oleh manusia di depan mesin.
Fitur lain dari Lisps adalah makro saya tidak akan masuk ke detail kotor di sini, tetapi karena tidak ada perbedaan sintaksis antara panggilan fungsi normal dan "Sintaks (telur untuk loop, deklarasi variabel, dll., Semua yang harus ditangani oleh parser di lain bahasa pemrograman) Anda dapat membuat sintaks Anda sendiri. Makro pada dasarnya adalah Manipulasi Pohon yang merupakan program Anda.
Saya pikir Lisp memiliki KISS untuk pemrograman. Bahwa Anda dapat memanipulasi sintaks dengan menggunakan macro telah mengarah pada fenomena yang Lisp telah berevolusi secara cukup dinamis. Perlu fitur Bahasa baru seperti - katakanlah orientasi objek - cukup tulis sistem OOP dengan makro!
Sementara C diperpanjang bundaran 2 kali dengan fitur OOP (C ++, Obj. C) Lisp diperpanjang beberapa kali, pada akhirnya ada pemenang.
Itu adalah kekhasan lain tentang Lisp, itu berevolusi (lihat Clojure dan Clojurescript untuk mutasi baru yang menarik dari lisp).
Untuk sifat KISS-nya Lisps lebih disukai sebagai pengajaran bahasa oleh beberapa orang. Seperti Fogus menguraikan dalam cetak biru bahasa pendidikan ( http://blog.fogus.me/2013/01/21/enfield-a-programming-language-designed-for-pedagogy/ )
Sebagai permulaan, saya sangat percaya bahwa ketika mempelajari hal-hal baru, dan kadang-kadang topik yang kompleks itu sangat merugikan untuk membebani siswa dengan aturan sintaksis yang sembrono. Oleh karena itu, Enfield dirancang dengan aturan sintaks minimal dan apa yang lebih minimal daripada sintaks seperti Lisp.