İlk programlama dilim olarak Haskell'i öğrenmeye karar verdim. Ben bir analitik felsefe uzmanıyım ve Haskell, örneğin doğal dil ayrıştırma için dönüştürücüler, teorem kanıtlayıcılar ve tercümanlar gibi ilgi çekici programları hızlı ve doğru bir şekilde oluşturmama izin verdi. Yalnızca iki buçuk aydır programlama yapmama rağmen, Haskell'in anlambilimini ve sözdizimini öğrenmeyi daha geleneksel zorunlu dillere göre çok daha kolay buldum ve yapılarının çoğunda (şimdi) rahat hissediyorum.
Haskell'de programlama sihir gibidir, ancak programlama bilgimi genişletmek istiyorum. Öğrenmek için yeni bir programlama dili seçmek istiyorum, ancak keyfi bir dili alıp bırakmak ve tekrar etmek için yeterli zamanım yok. Bu yüzden, aradığım dil türü ile ilgili birkaç şartla birlikte soruyu burada soracağımı düşündüm. Bazıları özneldir, bazıları Haskell'den geçişi kolaylaştırmayı amaçlamaktadır.
- Güçlü tip sistem. Haskell'de programlamanın en sevdiğim bölümlerinden biri tür bildirimleri yazmaktır. Bu, bireysel işlevler ve bunların bir bütün olarak programla ilişkileri hakkındaki düşüncelerimi yapılandırmaya yardımcı olur. Ayrıca programımın doğruluğu hakkında gayri resmi mantık yürütmeyi de kolaylaştırıyor. Doğrulukla ilgileniyorum, verimlilikle değil.
- Yinelemeden ziyade özyinelemeye vurgu. Haskell'de yinelemeli yapılar kullanıyorum, ancak bunları yinelemeli olarak uyguluyorum. Bununla birlikte, bir yinelemeli işlevin yapısını anlamak karmaşık bir yinelemeli yordamdan çok daha kolaydır, özellikle birleştiriciler ve haritalar, kıvrımlar ve bağlama gibi yüksek dereceli işlevler kullanılırken.
- Öğrenmeyi ödüllendirmek. Haskell, çalışmak için ödüllendirici bir dil. Biraz Kant okumaya benziyor. Ancak birkaç yıl önceki C deneyimim değildi. C'yi aramıyorum. Dil, kavramsal olarak ilginç bir paradigmayı zorlamalıdır, ki benim tamamen öznel görüşüme göre, C beğenileri bunu yapmaz.
Cevapların tartılması : Bunlar elbette sadece notlardır. Sadece iyi hazırlanmış yanıtlar veren herkese cevap vermek istiyorum. Çok yardımcı oldun.
1) Birkaç yanıt, yinelemeyi vurgulayan güçlü, statik olarak yazılmış bir dilin başka bir işlevsel dil anlamına geldiğini gösterdi. Haskell ile güçlü bir şekilde çalışmaya devam etmek isterken, camccann ve larsmans doğru bir şekilde böyle bir dilin "geçişi çok kolaylaştıracağına" işaret ettiler. Bu yorumlar çok yardımcı oldu, çünkü Haskell'i Caml'da yazmak istemiyorum! İspat asistanlarından Coq ve Agda ilginç görünüyor. Coq özellikle yapıcı mantık ve biçimsel tip teorisine sağlam bir giriş sağlayacaktır. Birinci dereceden yüklem ve modal mantık (Mendellsohn, Enderton, Hinman'ın bir kısmı) ile biraz zaman geçirdim, bu yüzden muhtemelen Coq ile çok eğlenirim.
2) Diğerleri Lisp'i (Common Lisp, Scheme ve Clojure) çok tercih etti. Anladığım kadarıyla, hem Common Lisp hem de Scheme mükemmel bir giriş materyaline sahipler ( Lisp ve The Reasoned Schemer , SICP ). SICP'deki materyal, Scheme'ye yönelmeme neden oluyor. Özellikle, SICP yoluyla Şema, farklı bir değerlendirme stratejisini, tembelliğin uygulanmasını ve devamlar, tercümanlar, sembolik hesaplama vb. Gibi konulara odaklanma şansını kapsayacaktır. Son olarak, diğerlerinin de belirttiği gibi, Lisp'in kod / veri işleyişi tamamen yeni olacaktır. Bu nedenle, bir Lisp olan (2) seçeneğine yoğun bir şekilde eğiliyorum.
3) Üçüncüsü, Prolog. Prolog'un pek çok ilginç materyali var ve birincil alanı tam olarak ilgilendiğim alan. Basit bir sözdizimine sahip ve okunması kolay. Şu anda daha fazla yorum yapamam, ancak Prolog'un bir özetini okuduktan ve bazı giriş materyallerini gözden geçirdikten sonra, (2) ile sıralanır. Görünüşe göre Prolog'un geri dönüşü her zaman Haskell'e giriyor!
4) Yaygın dillerden Python en ilginç olanıdır. Tim Yates, dillerin kulağa çok çekici gelmesini sağlıyor. Görünüşe göre, Python genellikle birinci sınıf bilgisayar bilimleri ana dallarına öğretiliyor; yani kavramsal olarak zengin veya öğrenmesi kolay. Daha fazla araştırma yapmam gerekecek.
Önerileriniz için hepinize teşekkür ederim! Bir Lisp (Scheme, Clojure), Prolog veya Coq veya Agda gibi bir ispat asistanı tavsiye edilen ana diller gibi görünüyor.