Lisp ile nasıl başlamalıyım? [kapalı]


48

Yıllardır programlama yapıyorum, çeşitli Blub yinelemelerinde (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby, "Blub-ness" sırasına göre) çalışıyorum ve öğrenmek istiyorum. Lisp. Ancak, sınırlı zamanla (aile, tam zamanlı iş vb.) Ve şu anki Blub'um (Java) ile rahat bir mutluluğa sahip olduğum çok fazla intertia var.

Öyleyse benim sorum şu, Lisp'i gerçekten öğrenmek isteyen biri olduğum için, Lisp'in web geliştirmedeki üstünlüğünü gösteren iyi bir sonuç elde etmek için atılacak ilk adımlar neler olurdu ? Belki de noktayı özlüyorum, ama başlangıçta Lisp bilgimin uygulandığını görecektim.

"A lehçesini kullan, IDE B'yi kullan, C sayfasındaki talimatları izle, D danışmanını kullanarak monadlardan sonra aklını sorgula" diye düşünüyorum. İnsanların A, B, C ve belki de D için en uygun değerler dizisi olduğunu düşündüklerini bilmek istiyorum. Ayrıca, Rails olmak gibi güçlü bir dil öğrenmenin göreceliğine dair bir tartışma uzman.

Sadece biraz daha detay eklemek için MacOS'ta (veya bir Linux VM'de) geliştireceğim - Windows tabanlı bir yaklaşım gerekmeyecek, teşekkürler.

Sadece tarayanlar için notlar

Bu soruyu bir süre açık tutacağım, böylece önerileri keşfedebildikten sonra geri bildirimde bulunabiliyorum. Göz atıyorsanız ve eklemek için bir şeyiniz olduğunu düşünüyorsanız, lütfen yapın. Geri bildiriminizi gerçekten memnuniyetle karşılıyoruz.

İlginç bağlantılar

Java arka planından Lisp'e geldiğinizi varsayarsak, bu bağlantı seti sizi hızlı bir şekilde başlatır.

  1. Lisp'i ( videocast ) entegre etmek için Intellij's La Clojure eklentisini kullanma
  2. Web için Lisp
  3. Practical Common Lisp'in çevrimiçi versiyonu ( Frank Shearar c / o)
  4. Lisp ülkesi bir (+ (+ very quirky) game based)şekilde giriyor , ancak hepsini çok basit yapıyor.
  5. Clojure ve MacOS üzerinde Sublime 2 yükleyin bir mükemmel başlangıç kılavuzunu
  6. Aksiyondaki Clojure'a bakın . Benim için çalıştı.

1
Paul Graham tarafından "ANSI Ortak Lisp" ve "On Lisp" i okuyarak.
çiftler

2
Lisp kayalar üzerinde (ANSI Ortak Lisp okumamıştım), ama bir giriş kitabı olarak, Pratik Ortak Lisp> On Lisp. IMO, en azından. (Önce On Lisp'i okudum, ama PCL beni
CL'ye sokan şeydi

Şu anda PCL'yi okumaktan zevk aldığımı söylemek zorundayım - dilin tarihi hakkındaki mükemmel notlar gerçekten toplum için bir his veriyor
Gary Rowe

1
Lisps'e ilk girişim, ünlü Bilgisayar Programlarının Yapısını ve Yorumunu izlemekti. Sonra Rich Hickey’in Java Programcıları’nın Clojure’ini izledim. Bu videoları iyi bir giriş olarak öneriyorum.
WuHoUnited

Yanıtlar:


18

Bu, muhtemelen çoğu insanın tavsiyelerine karşıdır, ancak henüz bilmediğiniz sürece, Emacs'tan kaçının. Özellikle modern IDE / editörlere alışkınsanız.

Tecrübeden konuşuyorum; Emacs ile başlamaya çalıştım ama aynı zamanda dili ve editörü de öğrenmek zorunda kaldım (gerçekten Emacs diğer araçlardan çok farklı olduğu için) beni çok sinirlendirdi. Bunu kıkırdayarak bitirdim, nispeten basit bir çapraz platform IDE, merkezi bir paket deposu ve muhteşem dokümanlar ( özellikle web geliştirmeyi amaçlayan bir ara öğretici dahil ) ile gelen PLT Şeması (şimdi Raket) ile çalışmaya başladım . Lisp’i temiz bir şekilde kavradıktan sonra Emacs’a geri döndüm , pratik Common Lisp ve Xah’ın Elisp Rehberi ile EL / CL’yi seçtim.. Temel olarak, gördüğüm gibi, Emacs'ı etkili bir şekilde kullanabilmeniz için önce bir Lisp bilmeniz ve CL / Elisp ile çok etkili olması için Emacs'i bilmeniz gerekir. Bunun anlamı, önce Scheme'i ya da önce Common Lisp'i başka bir editörden öğrenebilirsin (muhtemelen kişisel LispWorks).

Zaten Emacs'ı zaten tanıyorsanız, o zaman evet Elisp doğal bir adımdır (Emacs'in ilk önce Elisp'i benden önce bildiğini bilmeden kullanmaktan zevk alırsınız).

Elbette YMMV, yardım ettiğim şey bu.

Şu anki blub'unuz Java olduğundan, muhtemelen Clojure , Armed Bear veya Kawa'dan çok fazla kilometre alabilirsiniz . Hiçbirini kendim denemedim, Java üyesi değil, ama Clojure özellikle tanıdığım diğer Lispers'tan şiddetle tavsiye ediliyor. Mevcut VM'nizi ve IDE'nizi koruma yeteneği öğrenme sürecine yardımcı olabilir gibi görünüyor.


Zaten başladığımda emacs bazı temel akıcılık oldu. Emacs çok dik bir öğrenme eğrisine sahiptir!
Frank Shearar

+1, çünkü Emacs ile olan önceki deneyimlerim harikadan daha azdı (bu, bilmek istemem ve Lisp'in yerleşik olmasını istememe engel değil - Thorbjorn'un işaret ettiği gibi - Lisp bilgimi gündelik mesleğimde kullanabileceğim anlamına geliyor)
Gary Rowe

3
@ Thorbjørn Ravn Andersen - Yaptım. İki defa. Kendimi sürekli CUA kısayolları kullanarak buluyorum (varsayılan olarak Emacs'ta kapalı). En kötüsü editörümü yanlışlıkla kesilmiş + amaçlanan bir kopya ( C-x C-c) ile kapatıyordu . Ölümüne emacs'in seviyorum ve hemen hemen canlı İçinde şimdi, ancak kas belleğinin ilk, sen mücadele yıllarında söylüyorum farkında C-solduğunu Save, değil Searchve bu Undobir C-z. Bu tür bir hayal kırıklığını, niyeti Lisp öğrenmek isteyen birine tavsiye etmem. Önce dili öğren, sevdiğini fark et, sonra aklında net bir amaç ile ellerinle savaşmaya başla.
Inaimathi

1
@Iimaima, kuyu gücü bir bedelle gelir ve Emacs bağlamaları CUA'yı önceden öderler, böylece IBM'i suçlarlar :) Ayrıca Ctrl-C + Ctrl-v CUA değildir :)

1
@ Geoffrey van Wyk - PLT ile başlamak çok güzel, fakat bir süre sonra karşılaşacağınız bazı sınırlar var. YMMV. Ayrıntılarla ilgileniyorsanız, bir süre önce yazı yazdım langnostic.blogspot.com/2010/09/… LispWorks sorusuna gelince; Büyük takımları (şirketin araçları satın aldığı yerde) veya danışmanları (genellikle fiyat etiketinin haklı çıkmasını sağlayacak kadar çok sayıda) hedef aldıklarına inanmak zorundayım. Onlar için nasıl çalıştığından emin değilim, ama seçtiğim yaklaşım bu değildi.
Inaimathi,

10

Pekala, SICP okuyarak iki kuşa vurabilirsiniz ; biri LISP öğreniyor (yani şema Lisp'in bir lehçesidir), diğeri ise nasıl programlanacağına dair harika bir fikir.


1
Bağlantı için +1 - hızlı bir tarama, yaklaşımda çok ayrıntılı olduğunu, ancak aynı zamanda oldukça kuru (okuma akademik) olduğunu gösteriyor. Metin okurken gelen "uzmanların sesi" nin büyük bir hayranıyım ama genel olarak iyi bir referans gibi görünüyor.
Gary Rowe

10

Conrad Barski bir sahiptir harika denilen öğretici Lisp'te SPELs Döküm (SPEL makrolar için onun kısaltmadır). Basit bir Macera tipi oyun oynamayı içerir ve hemen Lisp makrolarına atlar. Ayrıca şu anda erişilebilen bir tanıtım kitabı üzerinde çalışmaktadır:

Her seferinde bir oyun olan Lisp'i programlamayı öğrenin .

Ve İçindekiler bölümünden:

  • Kendi web sunucunuzu oluşturun ve tarayıcı tabanlı oyunları oynamak için kullanın

Bununla birlikte, bunun Lisp kullanarak web geliştirme için (HTML sayfalarında olduğu gibi) ne anlama geldiğini bilmiyorum . :)

Güncelleme - Birinin MİT çevrimiçi koyduğu hatırlattı, kitap "Bilgisayar Programları Yapısı ve yorumlanması" sözü bakın tüm SICP Hal Abelson ve Gerald Jay Sussman video Dersler . Kitabı kuru bulmuş olabilirsin, ama dersler mükemmel. Her ne kadar Scheme tabanlı olsalar da hala Lisp'teki temel kavramlarla çok güzel bir şekilde karşılaşıyorlar. İndirmeye ve izlemeye değer.


8

Dilin iyi bir şekilde tanıtılması için Peter Seibel'in Pratik Ortak Lisp adlı kitabını okuyun . Kitap mükemmel.

Emacs ve SLIME kurmak, "tricky" nin işletim sisteminize bağlı olarak büyük ölçüde değiştiği bir acemi için zor olabilir. Her zamanki gibi, Windows çubuğun kısa ucunu alıyor, ancak insanlar zor kısmı yapmış ve yazmışlar (SBCL, Emacs, SLIME).

Bu bir kez, Planet Lisp yakın zamanda Hunchentoot ve nginx ayarlarının nasıl yapıldığını açıklayan bir makaleye atıfta bulundu.

İşletim sistemine özgü düzenleme: MCLIDE , başlamak için iyi bir yer olabilir. Kurdum, ancak kullanma şansım olmadı, bu yüzden faydalı bir şey söyleyemem. Kesinlikle ilginç görünüyor!

Düzenleme: Eclipse de Cusp eklentisine sahiptir .


6

Zaten çok büyük cevaplar, ancak bir Lisp ile web geliştirmeye baştan dalmak istediğinizi varsayarsak, birkaç fikrim daha var.

Clojure , ilk kullanıma hazır, gerçekten mükemmel tam yığın web çerçevelerine sahip olduğumu gördüğüm ilk Lisp.

  • Noir , Sinatra'ya benzer fakat biraz daha zengin özelliklere sahip olan yönlendirme, şablonlama vb. İçeren sağlam bir web çerçevesidir. Temelde Clojure'un Ruby'deki Rack ile aynı değerde olan Ring'i kullanır.
  • Korma , Noir ile gerçekten iyi eşleşen bir SQL soyutlama kütüphanesidir.
  • Pinot , tamamen ClojureScript ile yazılmış, bizi şu noktalara getiren bir istemci tarafı çerçevedir:
  • Clojurescript , Javascript'i hedefleyen Clojure için bir derleyicidir.

Fark etmediysen, tüm web yığınını kapattım ve hepsi Clojure'da yazılmış.

Clojure’i daha sonra Common Lisp’e başlamak için biraz daha kolay buluyorum, Scheme’den daha iyi özellik seti / kütüphane desteği.

Bir Java arkaplanından geliyorsanız, JVM'de çalışmanın avantajı vardır, bu size ihtiyacınız olduğunda tüm Java stdlib'ine erişmenizi sağlar.

Mevcut belgeler, çerçevelerin kendileri gibi devam eden bir çalışmadır. Ama burada oldukça iyi bir eğitim var.

Editörler kadarıyla ... vim konusunda rahatsanız, SLIMV ile vim kullanabilirsiniz. Emacs seviyorsanız, emacs / SLIME tamamdır. Clojure için çok iyi Eclipse ve NetBeans desteği var (veya söylendiği gibi), ancak genellikle TextMate kullanıyorum (Sublime Text 2 hızla seçim editörüm oluyor). Daha bütünleşik bir ortam kullanmamakla ilgili küçük bir Lisp büyüsünü kaçırdığımı biliyorum, ancak editörüm ve REPL arasında geçiş yapmak için Tab-Tab’e çarptığım için mutluyum; kilometreniz değişebilir.

Bir kitabın sizi zıplatmasını istiyorsanız, Stuart Halloway ve Aaron Bedra'dan Programlama Clojure'yi öneririm. İkinci baskı PragProg'dan yeni çıktı , bu yüzden güncel.

Mutlu Lisping!


Sen eklemek isteyebilirsiniz Leiningen
Gary Rowe

5

Başka bir yorumcu Inaimathi , birkaç gün önce bu kitabı tavsiye etti: The Little Schemer

Bugün aldı ve çok uzun zamandır edindiğim çok büyük bir programlama kitabı kütüphanesi olan biri olarak yalnızca bir bölümü okuyabildiğimi söyleyebilirim, ancak bunun kesinlikle bir ciltli versiyonuna ihtiyacım olacak. Dil ile ilgili ilahi bilgelik parçacıklarının birçoğu olan Tao Te Ching gibi. Scheme diyebilir, ancak aslında "Küçük LISPer" olarak adlandırıldı, konuştuğu seviyedeki diller, biri olarak öğretilmek için yeterince benzer.

Gelişmiş bir metin değil, dilin ilkelerini ve gerçekte ne için olduğunu, nasıl düşüneceğini öğretme misyonu vardır. LISP için mükemmel bir başlangıç ​​olacağına inanıyorum.

NB. Programcı Yetkinlik Matrisi , bu kitapta aranacak şeylerin en üst düzey yetkinlik seviyesinden bahseder. (Kitaplar bölümüne bakınız)


4

Lisp'i kullanmaya başlamak için çok güzel bir yer Emacs editörünün içindedir ve hemen hemen her şeyi yeniden tanımlamak için kullanılabilir. 'E' tuşunun tarihin saatini girmesini istersiniz, sadece dizgeyi oluşturmak ve e tuşuna bağlamak için küçük bir Lisp pasajı yazmanız yeterlidir. Bitti.

Bu, eğer gün boyunca düz bir editör kullanıyorsanız, günlük ayarda öğrendiklerinizi gerçekten KULLANMAK için size izin verecektir.


"Öğrendiklerini kullan" önerisi için +1. Günlük iş için bir Intellij organıyım, ancak çok kısıtlı yazılım ortamımızda emacs için pençelerimi bulabilirim.
Gary Rowe,

3

Bir Mac üzerinde geliştirecekseniz, Clozure CL'yi denemek isteyebilirsiniz . Emacs uyumlu tuş vuruşlarına sahip bir IDE ile birlikte gelir ve Objective C'ye bir köprü vardır, böylece Cocoa uygulamalarını yazabilirsiniz.

Ayrıca, Pratik Common Lisp'i okudum, ancak Başarılı Lisp'i de faydalı buldum .

Sonunda, sizin tarafınızdan biraz sabır ödüllendirilecektir. Verimlilik ve küçük kazançlar oldukça hızlı bir şekilde gerçekleşecek, ancak büyük kazanma biraz zaman alabilir.


2

Masamın yanında ANSI Common Lisp'in bir kopyası var . Her iki yılda bir alıyorum ve birkaç bölüme geçiyorum, ardından birkaç alıştırmada takılıp kalıyorum ve öncelik listesini aşağıya çekiyorum. Bu muhtemelen sana kitap hakkında benden daha çok şey anlatıyor. Kitap tamamen yetkin görünüyor ...


Belki de bu soruya verilen cevapları ve yorumları okumak size daha yüksek bir hedefe doğru çalışmaya ivme kazandıracaktır. PCL bağlantısına bir göz atın ve ne düşündüğünüzü bize söyleyin ...
Gary Rowe
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.