Programlama dillerine yönelik KISS yaklaşımı, en azından programlama dillerini bir CPU'nun talimat seti, vb. İçin bir soyutlama katmanı olarak görüyorsanız, komik bir kavramdır. "KISS" i daha yakından tanımlamazsanız. Sadece burada söylüyorum, bir kağnı KISS bir arabaya sonuna kadar uygulandı.
Şimdi KISS'in başka bir yorumu, "gereksiz süslemeler olmadan akıllıca yapıldı ve aşırı karmaşık değil" gibi bir şey olabilir. Özellikle, benzer şeyler için çok fazla özel durum olmaması gerektiği, vb. İddia edilebilir. Genellikle matematik, şeyleri özüne kaynatmak için oldukça iyidir ve - o merak ediyorum - matematikçiler de programlama ve bilgisayarları düşünmek için biraz zaman harcadı. .
Programlama için oldukça ünlü 2 soyut model mevcuttur:
- Birincisi, bir makineyi tanımlayan turing makinesi ve bir bilgisayarın yapabileceği her şeyi hesaplayabilen basit bir öğretim modeli.
- Diğeri ise Church ve ark. ark. bu güçte eşdeğerdir
Eğlenceli olan şey: Turing makinesi düzeninde oldukça basit olsa da, kullanımı kolay bir sistem değildir ve "akıllı ÖPÜCÜK" için uygun olduğunu düşünmüyorum. Ancak Lambda Matematik bildiğimiz programlama dilleri ile daha çok ilgilidir - ve lambda hesabının öncü özellikleri Lisp ve Scheme ile birçok dile dönüşmüştür.
Lisp ve Scheme GERÇEKTEN basittir, en azından sözdizimi bakımından. Sözdizimi programlama dillerinde büyük bir sorundur (muhtemelen bu yüzden sürekli yeniden keşfedilirler). C ++ durumunda, insan beyninin bazı kaynak hatlarının derleyici tarafından nasıl yorumlandığını tahmin etmesi neredeyse hiç değişmezdir.)
Lisps, komutlar için ortak bir form getirerek sözdizimsel karmaşıklığı tamamen azaltır:
(command param1 param2 ...)
Bu, aşağıdaki gibi bir yöntem çağrısı olabilir:
(max 1 2 3 4)
yanı sıra bir if şube, döngü vb.
(if (< 1 2)
(write 4)
(write 5))
(buradaki tüm kod sözde Lisp / Dialect agnostic'tir)
Form
(command param1 param2 ...)
liste olarak da yorumlanabilir
(item1 item2 item3)
Ve bu Lisps basitliği ve güzelliğinin temeli. Çünkü iç içe listeler ( if
ifade örneğinde olduğu gibi) ağaçlar oluşturur ve bunlar hem makine hem de makine önünde bulunan insanlar tarafından kolayca anlaşılabilir.
Lisps'in bir başka özelliği de, buradaki kirli ayrıntıya girmeyeceğim makrolardır , ancak normal işlev çağrıları ile "Sözdizimi (döngüler için yumurta, değişken bildirimi, vb.) Arasında sözdizimsel bir fark olmadığından, ayrıştırıcının diğerlerinde işlemesi gereken her şey programlama dilleri) kendi sözdiziminizi oluşturabilirsiniz Makrolar özünde programınızı oluşturan Ağacın Manipülasyonlarıdır .
Bence Lisp'in programlamaya bir öpücük var. Sözdizimini makroları kullanarak değiştirebileceğiniz, Lisp'in oldukça dinamik bir şekilde evrimleştiği bir fenomene yol açtı. Nesne yönelim diyelim - yeni bir Dil özelliğine ihtiyacınız var - makrolarla bir OOP sistemi yazmanız yeterli!
C, OOP özellikleri (C ++, Obj. C) ile dolambaçlı yaklaşık 2 kez genişletilirken, Lisp birden fazla kez genişletildi, sonunda bir kazanan vardı.
Bu Lisp ile ilgili başka bir tuhaflıktır, gelişir (ilginç yeni Lisp Mutasyonu için bkz. Clojure ve Clojurescript).
KISS özellikleri nedeniyle Lisps, bazıları tarafından dil öğretimi olarak tercih edilir. Fogus'un bir eğitim dili taslağındaki ana hatları gibi ( http://blog.fogus.me/2013/01/21/enfield-a-programming-language-designed-for-pedagogy/ )
Başlamak için, yeni öğrenirken ve bazen karmaşık konuları öğrenirken anlamsız sözdizimi kuralları olan öğrencileri aşırı yüklemenin zararlı olduğuna inanıyorum. Bu nedenle, Enfield en az sözdizimi kuralları ve Lisp benzeri bir sözdiziminden daha az olanıyla tasarlanmıştır.