Saya bertanya-tanya fitur unik apa yang dapat saya pelajari dari Skema yang akan membantu saya menjadi programmer yang lebih baik?
Saya memiliki banyak pengalaman dalam bahasa umum, dan saya ingin memperluas wawasan saya dan belajar tentang aspek fungsional yang hilang dari bahasa lain. Saya kenal dengan penutupan dari javascript, ekspresi lambda dari C #, dan saya bertanya-tanya apa yang bisa saya fokuskan yang kurang dalam bahasa lain? Selain sintaks Lisp, saya merasa seperti apa yang telah saya lihat sejauh ini yang telah saya temui dalam bahasa lain.
Apa yang unik dari Skema / Lisp yang akan mengajari saya sesuatu yang baru?
functional-programming
lisp
scheme
bunglestink
sumber
sumber
Jawaban:
Mungkin karakteristik pendefinisian Lisp yang paling penting adalah "Code as Data." Anda tidak akan mendapatkan pengalaman itu dengan cara yang sama dengan bahasa lainnya. Dalam C #, analog terdekat adalah pohon ekspresi.
Kualitas itulah yang membuat Lisp bahasa yang sangat baik untuk parsing. Itu juga kualitas yang memotivasi Paul Graham untuk mengatakan tentang Lisp: "Hal yang tidak biasa tentang Lisp - pada kenyataannya, kualitas menentukan Lisp - adalah bahwa hal itu dapat ditulis sendiri." Meskipun self-hosting compiler bukanlah hal yang baru, tidak ada bahasa yang melakukannya dengan elegan seperti Lisp.
Metaprogramming (sesuatu yang Lisp juga unggul) juga merupakan hal yang berharga untuk dipelajari.
Beating the Averages oleh Paul Graham
http://www.paulgraham.com/avg.html
sumber
Ya, ini akan membantu Anda berpikir secara rekursif. Saya hanya mempelajarinya (skema) selama sebulan atau lebih di kelas bahasa pemrograman dan itu membantu saya mengembangkan cara saya berpikir dan menyelesaikan masalah pemrograman.
Itu selalu berharga untuk mencoba paradigma pemrograman lain; Anda kemudian kembali dengan segar ke dunia OO dengan ide-ide baru.
Bukan sintaks, tetapi alasannya, ini adalah latihan otak yang hebat. Appart dari rekursi dan penggunaan daftar yang menarik, tidak ada banyak IMHO, tetapi sangat berharga.
sumber
Kelanjutan :
dan kemudian mencoba mengimplementasikan Operator Ambigu McCarthy :
sumber
Saya dapat memikirkan hal-hal berikut:
Saya juga berpikir bahasa lisp harus luar biasa untuk mendefinisikan bahasa spesifik domain (DSL). Itu adalah sesuatu yang mungkin ingin Anda baca jika Anda belum mengetahuinya.
sumber