Şema yerine Clojure'da SICP'ye yaklaşma


11

Yazılım mühendisliği programında üçüncü sınıf lisans öğrencisiyim ve mühendis olduğumuz tüm bu yazılımların arkasındaki ilkeleri daha derin ve daha temel bir anlayış kazanmak için bir danışmana SICP okuma fikrini gündeme getirdim.

Kitabı tamamlamak için Şema öğrenmemeyi önerdi (çünkü Lisp'in modern lehçeleri kadar yaygın değil), bunun yerine Clojure'daki egzersizleri yapmayı önerdi.

Zaten zor bir kitap, daha modern Clojure'da kitabın alıştırmalarını denersem, bu nasıl olurdu? Örneğin, gerçek bir çözüm bulamıyorum, Şema için öğrettikleri sözdizimi farklı, vb.

Yanıtlar:


14

Üniversitedeki ilk yılımda aldığım ilk programlama kursu SICP'yi (1988 idi) kullanmaktı. Bununla birlikte, sizin gibi benzer bir sorunum vardı: kendi bilgisayarım için (aslında bir Commodore Amiga), o sırada mevcut bir Şema uygulaması yoktu, sadece farklı bir Lisp lehçesi (adını hatırlamıyorum).

Bununla birlikte, Lisp'nin esnekliği göz önüne alındığında, sadece birkaç betikte eksik lisp makrolarını ve işlevlerini ekleyerek Şema sözdizimini "taklit etmek" oldukça basitti. Bu aslında kurs sırasında gerekli olan bölüm 1 ila 3'teki tüm egzersizleri uygulamak için yeterliydi (SICP'nin aslında tam Şema yığınını gerektirmediğine dikkat edin, ihtiyacınız olan küçük bir alt kümedir).

Clojure AFAIK modern bir Lisp lehçesi olduğundan, sanırım sadece benzer bir şey yapabilirsiniz, bu da size Scheme veya Clojure'da ya da her ikisinin bir karışımında yazmak için tamamen ücretsiz bir seçim sunar.

Elbette, egzersizleri doğrudan Clojure'da çözmek de mümkün olacak, her iki dil de çok benzer. Daha da önemlisi, SICP programlama dili sözdizimi ile ilgili değildir, programlamada soyutlamaların doğru kullanımı ile ilgilidir (örneğin, fonksiyonlar, veriler ve nesnelerle). Bu yüzden olası sözdizimi sorunlarının çok fazla olduğunu düşünmeyin, bunlar bu kitabın odağında değil ve büyük olasılıkla küçük bir endişe kaynağıdır.


6
Sadece sorunu ben öngörülebilirliklerini Clojure 1. TCO (yoksun olduğunu recursadece kuyruk kolları özyinelemeye eksikliği ve 2., genel değil aramaları) call-with-current-continuationbölüm 4. için gereklidir
Daniel Gratzer

2
@jozefg: Bence OP kendini 1-3 bölümden başarıyla geçirirse, büyük olasılıkla Clojure ve Scheme arasındaki sözdizimsel farklardan şikayet etmeyeceği noktada ;-)
Doc Brown

Dikkate @DocBrown düzenlemek (eğer kabul ediyorsanız ve muhtemelen bölüm 4 ile ilgili sorunları açıklayan cevap yukarıdaki yorumunuzda 1-3 bölümlerde ilgili açıklama ing açıklama bu tartışırken )
tatarcık

@gnat: yorum kesinlikle doğrudur, ancak IMHO biraz nitty. Cevabımın önemli kısmı son paragraf.
Doc Brown

0

Sorunuzu, sitenizi tam aradığınız gibi bulduktan hemen sonra buldum (aradan geçen aylarda veya alternatifi bulmuş olsanız da): Clojure'da SICP

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.