Bagaimana saya memulai dengan Lisp? [Tutup]

48

Saya telah memprogram selama bertahun-tahun sekarang, bekerja melalui berbagai iterasi dari Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby tanpa urutan tertentu "Blub-ness") dan saya ingin belajar Pelat. Namun, saya memiliki banyak intertia apa dengan waktu terbatas (keluarga, pekerjaan penuh waktu dll) dan kebahagiaan yang nyaman dengan Blub saya saat ini (Jawa).

Jadi pertanyaan saya adalah ini, mengingat bahwa saya seseorang yang benar-benar ingin belajar Lisp, apa langkah awal untuk mendapatkan hasil yang baik yang menunjukkan keunggulan Lisp dalam pengembangan web ? Mungkin saya tidak mengerti intinya, tapi itulah awalnya saya melihat aplikasi pengetahuan Lisp saya.

Saya berpikir "gunakan dialek A, gunakan IDE B, ikuti instruksi di halaman C, tanyakan kewarasan Anda setelah monad menggunakan konselor D". Saya hanya ingin tahu apa yang orang-orang di sini anggap sebagai seperangkat nilai optimal untuk A, B, C dan mungkin D. Juga beberapa diskusi tentang manfaat relatif dari belajar bahasa yang begitu kuat yang bertentangan dengan, katakanlah, menjadi Rails ahli.

Hanya untuk menambahkan lebih banyak detail, saya akan mengembangkan pada MacOS (atau VM Linux) - tidak ada pendekatan berbasis Windows yang diperlukan, terima kasih.

Catatan untuk mereka yang hanya menjelajah dengan

Saya akan membiarkan pertanyaan ini terbuka untuk sementara waktu sehingga saya dapat memberikan umpan balik pada saran setelah saya dapat menjelajahinya. Jika Anda sedang menjelajah dan merasa ada sesuatu yang ingin ditambahkan, silakan lakukan. Saya akan sangat menyambut umpan balik Anda.

Tautan menarik

Dengan asumsi Anda datang di Lisp dari latar belakang Java, rangkaian tautan ini akan membantu Anda memulai dengan cepat.

  1. Menggunakan plugin Intellij's La Clojure untuk mengintegrasikan Lisp ( videocast )
  2. Gangguan untuk Web
  3. Versi online dari Common Common Lisp (c / o Frank Shearar)
  4. Tanah Lisp sebuah (+ (+ very quirky) game based)cara tapi membuat semua jadi mudah
  5. Instal Clojure dan Sublime 2 pada MacOS sebuah sangat baik panduan memulai
  6. Lihatlah buku Clojure in Action . Bekerja untukku.
Gary Rowe
sumber
1
Dengan membaca "ANSI Common Lisp" dan "On Lisp" oleh Paul Graham.
duros
2
Pada Lisp rocks (Saya belum pernah membaca ANSI Common Lisp), tetapi sebagai buku pengantar , Practical Common Lisp> On Lisp. IMO, setidaknya. (Saya membaca On Lisp terlebih dahulu, tetapi PCL adalah apa yang membuat saya menjadi CL.)
Frank Shearar
Harus mengatakan bahwa saya menikmati membaca PCL saat ini - catatan kaki yang sangat baik tentang sejarah bahasa benar-benar memberi kesan bagi masyarakat
Gary Rowe
1
Perkenalan pertama saya dengan Lisps sedang menyaksikan Struktur dan Interpretasi Program Komputer yang terkenal. Kemudian saya menonton Clojure untuk Java Programmer dari Rich Hickey. Saya akan merekomendasikan video ini sebagai pengantar yang bagus.
WuHoUnited

Jawaban:

18

Ini mungkin bertentangan dengan rekomendasi kebanyakan orang, tetapi menghindari Emacs untuk memulai, kecuali Anda sudah mengetahuinya. Terutama jika Anda terbiasa dengan IDE / editor modern.

Saya berbicara dari pengalaman; Saya mencoba memulai dengan Emacs, tetapi harus mempelajari bahasa DAN editor pada saat yang sama benar-benar membuat saya frustasi (terutama karena Emacs sangat berbeda dari alat lain). Saya akhirnya membuangnya, memulai dengan Skema PLT (sekarang Racket) yang dilengkapi dengan IDE lintas-platform yang relatif sederhana, repositori paket terpusat dan dokumen yang luar biasa (termasuk tutorial perantara yang khusus ditujukan untuk pengembangan web ). Setelah saya mendapat pegangan bersih pada Lisp, saya akhirnya kembali ke Emacs, mengambil EL / CL dengan cara Praktis Common Lisp dan Panduan Xah Elisp. Pada dasarnya, seperti yang saya lihat, Anda perlu tahu Lisp sebelum Anda dapat menggunakan Emacs secara efektif, dan Anda perlu tahu Emacs agar sangat efektif dengan CL / Elisp. Ini berarti Anda dapat mengambil Skema, atau mempelajari Common Lisp melalui beberapa editor lain terlebih dahulu (mungkin LispWorks pribadi).

Jika Anda sudah tahu Emacs, maka ya Elisp adalah langkah alami (meskipun bagaimana Anda akan menikmati penggunaan Emacs tanpa mengetahui Elisp pertama adalah di luar saya).

YMMV tentu saja, ini hanya membantu saya menemukan.

Karena blub Anda saat ini adalah Jawa, Anda mungkin bisa mendapatkan jarak tempuh yang jauh dari Clojure , Armed Bear, atau Kawa . Saya belum mencoba salah satu dari mereka sendiri, bukan menjadi orang Jawa, tetapi Clojure secara khusus sangat direkomendasikan dari Lispers lain yang saya tahu. Sepertinya kemampuan untuk menjaga VM dan IDE Anda saat ini dapat membantu proses pembelajaran.

Inaimathi
sumber
Saya sudah memiliki beberapa kefasihan dasar dalam emacs ketika saya mulai. Emacs memang memiliki kurva belajar yang sangat curam!
Frank Shearar
+1 karena pengalaman saya sebelumnya dengan Emacs kurang dari luar biasa (itu tidak menghentikan saya dari keinginan untuk mengetahuinya dan memiliki Lisp bawaan - seperti yang ditunjukkan Thorbjorn - artinya saya bisa menggunakan pengetahuan Lisp saya dalam pekerjaan sehari-hari saya)
Gary Rowe
3
@ Thorbjørn Ravn Andersen - Melakukan itu. Dua kali. Masih menemukan diri saya terus-menerus menggunakan pintasan CUA (yang mati secara default di Emacs). Yang terburuk adalah menutup editor saya dengan potongan yang tidak disengaja + salinan yang dimaksudkan ( C-x C-c). Saya suka Emacs mati, dan cukup banyak hidup di dalamnya sekarang, tapi menyadari bahwa pada awalnya, Anda sedang berjuang tahun memori otot memberitahu Anda C-sadalah Save, tidak Searchdan itu Undoadalah C-z. Saya tidak akan merekomendasikan frustrasi semacam itu kepada seseorang yang niatnya belajar Lisp. Pelajari bahasa terlebih dahulu, sadarilah bahwa Anda menyukainya, lalu mulailah bertarung dengan tujuan yang jelas.
Inaimathi
1
@Inaima, tenaga yang baik datang dengan harga, dan binding Emacs mendahului CUA jadi salahkan IBM :) Juga Ctrl-C + Ctrl-v bukan CUA :)
1
@ Geoffrey van Wyk - PLT bagus untuk memulai, tetapi ada beberapa batasan yang Anda temui setelah beberapa saat yang membuat saya beralih ke CL / Emacs begitu saya memiliki bantalan saya. YMMV. Saya melakukan penulisan beberapa waktu lalu, jika Anda tertarik pada detail langnostic.blogspot.com/2010/09/... Sejauh pertanyaan LispWorks; Saya harus percaya bahwa mereka menargetkan tim besar (di mana perusahaan membeli alat) atau konsultan (yang biasanya membuat cukup bahwa label harga dibenarkan). Tidak yakin bagaimana ini bekerja untuk mereka, tapi itu bukan pendekatan yang saya pilih.
Inaimathi
10

Nah, Anda dapat menabrak dua burung dengan membaca SICP ; Salah satunya adalah belajar LISP (maksud saya skema adalah dialek Lisp) dan yang lainnya adalah wawasan hebat tentang cara memprogram.

Srinivas Reddy Thatiparthy
sumber
1
+1 untuk tautan - pemindaian cepat tampaknya menunjukkan bahwa ini sangat rinci tetapi juga agak kering (baca akademik) dalam pendekatannya. Saya penggemar berat "suara para ahli" yang datang ketika membaca teks tetapi sepertinya referensi keseluruhan yang bagus.
Gary Rowe
10

Conrad Barski memiliki tutorial hebat bernama Casting SPELs in Lisp (SPEL adalah akronimnya untuk makro). Ini melibatkan pembuatan game tipe Petualangan sederhana, dan melompat langsung ke Lisp macro. Dia juga telah mengerjakan buku pengantar yang sekarang tersedia di:

Belajarlah memprogram Lisp, satu pertandingan sekaligus .

Dan, dari Daftar Isi:

  • Buat server web Anda sendiri, dan gunakan untuk memainkan game berbasis browser

Saya tidak tahu apa artinya ini untuk pengembangan web (seperti pada halaman HTML) menggunakan Lisp, namun. :)

Pembaruan - Saya melihat seseorang menyebutkan buku "Struktur dan Interpretasi Program Komputer", yang mengingatkan saya bahwa MIT telah online, seluruh Kuliah Video SICP oleh Hal Abelson dan Gerald Jay Sussman . Anda mungkin menemukan buku itu kering, tetapi ceramahnya sangat bagus. Meskipun mereka berbasis Skema, mereka masih dapat melintasi konsep dasar juga di Lisp, dengan sangat baik. Layak diunduh dan ditonton.

Cyclops
sumber
8

Untuk mendapatkan pengantar dasar yang baik untuk bahasa ini, baca Praktik Umum Lisp Peter Seibel . Buku itu bagus sekali.

Menyiapkan emacs dan SLIME bisa rumit untuk pemula, di mana "rumit" besarnya bervariasi tergantung pada OS Anda. Seperti biasa, Windows mendapatkan akhir yang singkat, tetapi orang telah melakukan bagian yang sulit dan menuliskannya (SBCL, Emacs, SLIME).

Setelah itu keluar dari jalan, Planet Lisp mereferensikan sebuah artikel yang baru - baru ini menggambarkan cara mengatur Hunchentoot dan nginx.

Pengeditan khusus OS: MCLIDE mungkin tempat yang bagus untuk memulai. Saya menginstalnya, tetapi belum memiliki kesempatan untuk benar-benar menggunakannya, jadi saya tidak bisa mengatakan sesuatu yang berguna tentangnya. Jelas terlihat menarik!

Sunting: Eclipse juga memiliki plugin Cusp .

Frank Shearar
sumber
6

Sudah banyak jawaban bagus, tetapi dengan asumsi Anda ingin terjun lebih dulu ke pengembangan web dengan Lisp, saya punya beberapa ide lagi.

Clojure adalah Lisp pertama yang saya lihat memiliki kerangka kerja full-stack web yang sangat bagus yang siap untuk prime-time.

  • Noir adalah kerangka kerja web yang solid dengan perutean, templating, dll., Mirip dengan Sinatra tetapi sedikit lebih kaya fitur. Ia menggunakan Ring, yang pada dasarnya setara dengan Rack di Ruby milik Clojure.
  • Korma adalah pustaka abstraksi SQL yang berpasangan sangat baik dengan Noir.
  • Pinot adalah kerangka kerja sisi klien yang seluruhnya ditulis dalam ClojureScript, yang membawa kita ke:
  • Clojurescript adalah kompiler untuk Clojure yang menargetkan Javascript.

Jika Anda tidak menyadarinya, saya baru saja membahas seluruh tumpukan web dan semuanya ditulis dalam Clojure.

Saya menemukan Clojure sedikit lebih mudah untuk memulai dengan Common Lisp, dengan fitur set / dukungan perpustakaan yang jauh lebih baik daripada Skema.

Jika Anda berasal dari latar belakang Java sama sekali, itu memiliki manfaat tambahan untuk menjalankan JVM, yang memberi Anda akses ke seluruh stdlib Java saat Anda membutuhkannya.

Dokumentasi yang tersedia sedang dalam proses, seperti halnya kerangka kerja itu sendiri. Tapi ada tutorial yang cukup bagus di sini.

Sejauh editor pergi ... jika Anda merasa nyaman dengan vim, Anda dapat menggunakan vim dengan SLIMV. Jika Anda suka emacs, emacs / SLIME tidak apa-apa. Ada dukungan Eclipse dan NetBeans yang cukup bagus untuk Clojure (atau begitulah yang saya katakan), tetapi saya biasanya menggunakan TextMate (meskipun Sublime Text 2 dengan cepat menjadi editor pilihan saya). Saya tahu saya kehilangan sedikit sihir Lisp tidak menggunakan lingkungan yang lebih terintegrasi, tapi saya senang menekan ⌘-Tab untuk bertukar antara editor saya dan REPL; jarak tempuh Anda dapat bervariasi.

Jika Anda ingin buku memulai Anda, saya sarankan Programming Clojure oleh Stuart Halloway dan Aaron Bedra. Edisi ke-2 baru saja keluar dari PragProg , jadi ini yang terbaru.

Selamat berdandan!

Jason Lewis
sumber
Anda mungkin ingin menambahkan Leiningen
Gary Rowe
5

Komentator lain, Inaimathi , merekomendasikan buku ini beberapa hari yang lalu: The Little Schemer

Saya menerimanya hari ini dan saya dapat mengatakan sebagai seseorang yang memiliki perpustakaan yang sangat besar dari buku-buku pemrograman yang diperoleh selama bertahun-tahun, bahwa saya mungkin hanya membaca satu bab, tetapi saya pasti akan memerlukan versi bersampul dari ini. Bunyinya seperti Tao Te Ching, banyak potongan kecil kebijaksanaan ilahi mengenai bahasa tersebut. Itu mungkin mengatakan Skema, tetapi pada awalnya disebut "The Little LISPer", bahasa pada tingkat yang dibahasnya cukup mirip untuk diajarkan sebagai satu.

Ini bukan teks yang canggih, tetapi memiliki misi untuk menanamkan prinsip-prinsip bahasa dan untuk apa sebenarnya, bagaimana berpikir seperti itu. Saya percaya ini akan menjadi permulaan yang bagus untuk LISP.

NB. Matriks Kompetensi Programmer sebenarnya menyebutkan buku ini di tingkat atas kompetensi hal-hal yang harus dicari. (lihat bagian Buku)

Orbling
sumber
4

Tempat yang sangat bagus untuk mulai menggunakan Lisp ada di dalam editor Emacs, tempat itu dapat digunakan untuk mendefinisikan ulang apa saja. Anda ingin kunci 'e' untuk memasukkan waktu tanggal, cukup tulis cuplikan Lisp kecil untuk menghasilkan string dan ikat ke kunci e. Selesai.

Ini juga akan memungkinkan Anda untuk MENGGUNAKAN apa yang Anda pelajari dalam pengaturan harian, jika Anda menggunakan editor biasa di siang hari.


sumber
+1 untuk saran "gunakan apa yang Anda pelajari". Saya seorang Intellij bod untuk pekerjaan harian, tapi saya mungkin bisa mendapatkan cakram kaki saya pada emacs di lingkungan perangkat lunak kami yang sangat terbatas.
Gary Rowe
3

Jika Anda akan mengembangkan pada Mac, Anda mungkin ingin mencoba Clozure CL . Muncul dengan IDE yang memiliki penekanan tombol yang kompatibel dengan Emacs, dan ada jembatan ke Objective C sehingga Anda dapat menulis aplikasi Cocoa.

Juga, saya sudah membaca Praktis Common Lisp, tetapi menemukan Lisp Sukses juga bisa membantu.

Akhirnya, kesabaran dari pihak Anda akan dihargai. Produktivitas dan kemenangan kecil akan datang dengan cepat, tetapi kemenangan besar mungkin memakan waktu cukup lama.

Larry Coleman
sumber
2

Saya memiliki salinan ANSI Common Lisp di sini dekat meja saya. Saya mengambilnya setiap beberapa tahun dan menyelesaikan beberapa bab, kemudian terjebak pada beberapa latihan dan itu menyelinap daftar prioritas. Itu mungkin memberi tahu Anda lebih banyak tentang saya daripada buku itu. Buku ini tampaknya sepenuhnya kompeten ...

glenatron
sumber
Mungkin membaca jawaban dan komentar untuk pertanyaan ini akan memberi Anda dorongan untuk bekerja menuju tujuan yang lebih tinggi. Dapatkan celah di tautan PCL dan beri tahu kami pendapat Anda ...
Gary Rowe