ฉันจะเริ่มต้นด้วยเสียงกระเพื่อมได้อย่างไร [ปิด]


48

ฉันได้เขียนโปรแกรมมาหลายปีแล้วทำงานผ่านการทำซ้ำของ Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby ในลำดับที่ไม่เจาะจงของ "Blub-ness") และฉันต้องการเรียนรู้ เสียงกระเพื่อม อย่างไรก็ตามฉันมีหลาย intertia สิ่งที่มีเวลา จำกัด (ครอบครัวงานเต็มเวลา ฯลฯ ) และความสุขสบายกับ Blub ปัจจุบันของฉัน (Java)

ดังนั้นคำถามของฉันคือสิ่งนี้เนื่องจากฉันเป็นคนที่อยากจะเรียนรู้ Lisp จริง ๆ แล้วขั้นตอนแรกที่จะได้รับผลลัพธ์ที่ดีซึ่งแสดงให้เห็นถึงความเหนือกว่าของ Lisp ในการพัฒนาเว็บคืออะไร? บางทีฉันอาจพลาดจุดนี้ไป แต่นั่นเป็นวิธีที่ฉันจะเห็นการประยุกต์ใช้ความรู้เสียงกระเพื่อมของฉันในตอนแรก

ฉันคิดว่า "ใช้ภาษา A, ใช้ IDE B, ทำตามคำแนะนำในหน้า C, ถามความมีสติของคุณหลังจาก monads โดยใช้ที่ปรึกษา D" ฉันแค่อยากจะรู้ว่าสิ่งที่ผู้คนที่นี่ถือว่าเป็นชุดของค่าที่ดีที่สุดสำหรับ A, B, C และบางที D นอกจากนี้ยังมีการอภิปรายเกี่ยวกับประโยชน์ของการเรียนรู้ภาษาที่มีประสิทธิภาพเช่นเมื่อเทียบกับพูดกลายเป็น Rails ผู้เชี่ยวชาญ

เพียงเพิ่มรายละเอียดเพิ่มเติมฉันจะพัฒนาบน MacOS (หรือ Linux VM) - ไม่ต้องใช้วิธีการบน Windows ขอบคุณ

หมายเหตุสำหรับผู้ที่เพียงแค่เรียกดู

ฉันจะเปิดคำถามนี้ไว้ซักพักเพื่อที่ฉันจะสามารถให้ข้อเสนอแนะเกี่ยวกับคำแนะนำได้หลังจากที่ฉันได้สำรวจพวกเขาแล้ว หากคุณกำลังค้นดูและรู้สึกว่าคุณมีบางอย่างที่จะเพิ่มโปรดทำ ฉันยินดีรับฟังความคิดเห็นของคุณ

ลิงค์ที่น่าสนใจ

สมมติว่าคุณมาที่ Lisp จากพื้นหลัง Java ลิงก์ชุดนี้จะช่วยให้คุณเริ่มต้นได้อย่างรวดเร็ว

  1. การใช้ปลั๊กอิน La Clojure ของ Intellij เพื่อรวม Lisp ( videocast )
  2. เสียงกระเพื่อมสำหรับเว็บ
  3. เวอร์ชั่นออนไลน์ของCommon Common LISP (c / o Frank Shearar)
  4. Land of Lispมี(+ (+ very quirky) game based)ทางเข้า แต่ทำให้มันตรงไปตรงมามาก
  5. ติดตั้ง Clojure และ Sublime 2 MacOS ที่ดีคู่มือการเริ่มต้น
  6. ดูที่Clojure ในการดำเนินการหนังสือ ทำงานให้ฉัน

1
โดยการอ่าน "ANSI Common Lisp" และ "On Lisp" โดย Paul Graham
duros

2
บนหิน Lisp (ฉันไม่ได้อ่าน ANSI Common Lisp) แต่เป็นหนังสือแนะนำ , Lisp Common Common Lisp> On Lisp อย่างน้อย IMO (ฉันอ่าน On Lisp ก่อน แต่ PCL คือสิ่งที่ทำให้ฉันเป็น CL)
Frank Shearar

ต้องบอกว่าฉันสนุกกับการอ่าน PCL ในขณะนี้ - เชิงอรรถที่ยอดเยี่ยมเกี่ยวกับประวัติความเป็นมาของภาษาให้ความรู้สึกกับชุมชนจริงๆ
Gary Rowe

1
การแนะนำครั้งแรกของฉันใน Lisps คือการดูโครงสร้างที่มีชื่อเสียงและการตีความโปรแกรมคอมพิวเตอร์ จากนั้นฉันดู Rich Hickey's Clojure สำหรับโปรแกรมเมอร์ Java ฉันอยากจะแนะนำวิดีโอเหล่านี้เป็นการแนะนำที่ดี
WuHoUnited

คำตอบ:


18

นี่อาจเป็นสิ่งที่ขัดกับคำแนะนำของคนส่วนใหญ่ แต่ควรหลีกเลี่ยง Emacs ที่จะเริ่มต้นเว้นแต่คุณจะรู้อยู่แล้ว โดยเฉพาะอย่างยิ่งถ้าคุณคุ้นเคยกับ IDE / บรรณาธิการที่ทันสมัย

ฉันกำลังพูดจากประสบการณ์ ฉันพยายามเริ่มต้นด้วย Emacs แต่ต้องเรียนรู้ภาษาและตัวแก้ไขในเวลาเดียวกันทำให้ฉันผิดหวังจริงๆ (โดยเฉพาะเมื่อ Emacs แตกต่างจากเครื่องมืออื่น ๆ ) ฉันสิ้นสุดโยนมันเริ่มต้นกับโครงการ PLT (ตอนนี้ไม้)ที่มาพร้อมกับ IDE ข้ามแพลตฟอร์มที่เรียบง่ายเมื่อเทียบกับส่วนกลางที่เก็บแพคเกจและเอกสารนิยาย (รวมกวดวิชากลางที่มุ่งเน้นเฉพาะการพัฒนาเว็บ ) หลังจากที่ฉันได้จับ Lisp ที่สะอาดฉันก็กลับไปที่ Emacs ยก EL / CL โดยใช้ Lisp สามัญ Common Lispและคู่มือ Elisp ของ Xah. โดยทั่วไปเมื่อฉันเห็นคุณต้องรู้ Lisp ก่อนที่คุณจะสามารถใช้ Emacs ได้อย่างมีประสิทธิภาพและคุณจำเป็นต้องรู้จัก Emacs เพื่อให้มีประสิทธิภาพมากขึ้นด้วย CL / Elisp ซึ่งหมายความว่าคุณสามารถเลือก Scheme หรือเรียนรู้ Common Lisp ผ่านเครื่องมือแก้ไขอื่น ๆ ก่อน (LispWorks ส่วนตัวอาจเป็น)

หากคุณรู้จัก Emacs อยู่แล้วใช่ Elisp เป็นขั้นตอนตามธรรมชาติ (แม้ว่าคุณจะสนุกกับการใช้ Emacs โดยไม่ทราบว่า Elisp แรกอยู่นอกเหนือฉัน)

แน่นอนว่า YMMV นี่เป็นเพียงสิ่งที่ฉันได้รับความช่วยเหลือ

ตั้งแต่ Blub ปัจจุบันของคุณคือ Java คุณอาจจะได้รับมากระยะจากClojure , อาวุธหมีหรือKawa ฉันไม่ได้ลองด้วยตัวเองเลยไม่ใช่เป็นคนจาวา แต่ Clojure แนะนำมาเป็นพิเศษจาก Lispers คนอื่น ๆ ที่ฉันรู้จัก ดูเหมือนว่าความสามารถในการรักษา VM และ IDE ปัจจุบันของคุณอาจช่วยในกระบวนการเรียนรู้


ฉันมีความคล่องแคล่วขั้นพื้นฐานเป็น emacs เมื่อฉันเริ่ม Emacs มีช่วงการเรียนรู้ที่สูงชันมาก!
Frank Shearar

+1 เพราะประสบการณ์ก่อนหน้าของฉันกับ Emacs น้อยกว่าที่ยอดเยี่ยม (ที่ไม่ได้หยุดฉันจากการอยากรู้และมี Lisp ในตัว - ตามที่ Thorbjorn ได้ชี้ให้เห็น - หมายความว่าฉันจะใช้ความรู้ Lisp ในงานประจำวันของฉัน)
Gary Rowe

3
@ Thorbjørn Ravn Andersen - ทำอย่างนั้น สองครั้ง ยังพบตัวเองอยู่ตลอดเวลาโดยใช้ทางลัด CUA (ซึ่งปิดโดยค่าเริ่มต้นใน Emacs) สิ่งที่แย่ที่สุดก็คือการปิดบรรณาธิการของฉันโดยมีการตัด + ตั้งใจสำเนา ( C-x C-c) ฉันรัก Emacs ถึงตายและสวยมากอาศัยอยู่ในตอนนี้ แต่ทราบว่าในตอนแรกคุณกำลังต่อสู้ปีของหน่วยความจำของกล้ามเนื้อบอกคุณC-sเป็นSaveไม่ได้Searchและนั่นคือUndo C-zฉันจะไม่แนะนำให้คนที่มีความตั้งใจที่จะเรียนรู้ Lisp เรียนรู้ภาษาก่อนตระหนักว่าคุณรักมันจากนั้นเริ่มต่อสู้ด้วยมือของคุณโดยมีเป้าหมายที่ชัดเจน
Inaimathi

1
@Inaima พลังที่ดีมาพร้อมกับราคาและ Emacs ผูกลงวันที่ CUA ดังนั้นโทษ IBM :) นอกจากนี้ Ctrl-C + Ctrl-v ไม่ใช่ CUA :)

1
@Geoffrey van Wyk - PLT ยอดเยี่ยมในการเริ่มต้น แต่มีข้อ จำกัด บางอย่างที่คุณพบหลังจากนั้นไม่นานทำให้ฉันเปลี่ยนไปใช้ CL / Emacs เมื่อฉันมีแบริ่ง YMMV ฉันเคยเขียนบทความมานานแล้วถ้าคุณสนใจรายละเอียดlangnostic.blogspot.com/2010/09/…เท่าที่คำถาม LispWorks; ฉันต้องเชื่อว่าพวกเขากำลังกำหนดเป้าหมายทีมขนาดใหญ่ (ซึ่ง บริษัท ซื้อเครื่องมือ) หรือที่ปรึกษา (ซึ่งมักจะทำให้เพียงพอที่ป้ายราคาจะเป็นธรรม) ไม่แน่ใจว่ามันทำงานอย่างไรสำหรับพวกเขา แต่มันไม่ใช่วิธีที่ฉันเลือก
Inaimathi

10

ทีนี้คุณสามารถยิงนกสองตัวได้โดยการอ่านSICPหนึ่งกำลังเรียนรู้ LISP (ฉันหมายถึงโครงร่างเป็นภาษา Lisp) และอื่น ๆ คือความเข้าใจที่ยอดเยี่ยมเกี่ยวกับวิธีการเขียนโปรแกรม


1
+1 สำหรับลิงก์ - การสแกนอย่างรวดเร็วผ่านดูเหมือนว่ามีรายละเอียดมาก แต่ค่อนข้างแห้ง (อ่านเชิงวิชาการ) ในแนวทางของมัน ฉันเป็นแฟนตัวยงของ "เสียงผู้เชี่ยวชาญ" ที่ผ่านมาเมื่ออ่านข้อความ แต่ดูเหมือนเป็นการอ้างอิงโดยรวมที่ดี
Gary Rowe

10

Conrad Barskiมีแบบฝึกหัดที่ยอดเยี่ยมที่เรียกว่าCasting SPELs ใน Lisp (SPEL เป็นตัวย่อของเขาสำหรับมาโคร) มันเกี่ยวข้องกับการสร้างเกมประเภทการผจญภัยอย่างง่ายและกระโดดเข้าไปในมาโคร Lisp เขายังทำงานเกี่ยวกับหนังสือเกริ่นนำที่มีอยู่ในตอนนี้:

เรียนรู้การเขียนโปรแกรมเสียงกระเพื่อมหนึ่งเกมในเวลา

และจากสารบัญ:

  • สร้างเว็บเซิร์ฟเวอร์ของคุณเองและใช้มันเพื่อเล่นเกมบนเบราว์เซอร์

อย่างไรก็ตามฉันไม่รู้ว่าสิ่งนี้มีความหมายอย่างไรต่อการพัฒนาเว็บ(เช่นในหน้า HTML) โดยใช้ Lisp :)

Update - ฉันเห็นใครบางคนกล่าวถึงหนังสือ "โครงสร้างและการแปลความหมายของโปรแกรมคอมพิวเตอร์" ซึ่งเตือนผมว่าเอ็มไอทีได้วางออนไลน์ทั้งหมด SICP บรรยายวิดีโอโดยฮัลอาเบลสันและเจอราลด์เจ Sussman คุณอาจพบว่าหนังสือเล่มนี้แห้ง แต่การบรรยายนั้นยอดเยี่ยม ถึงแม้ว่าพวกเขาจะใช้ Scheme แต่พวกเขาก็ยังคงข้ามแนวคิดพื้นฐานใน Lisp ได้อย่างดี คุ้มค่าในการดาวน์โหลดและรับชม


8

จะได้รับการแนะนำขั้นพื้นฐานที่ดีในการใช้ภาษาที่อ่านปีเตอร์ซีเบลของการปฏิบัติ Common เสียงกระเพื่อม หนังสือยอดเยี่ยม

การตั้งค่า emacs และ SLIME อาจเป็นเรื่องยากสำหรับมือใหม่ที่ "หากิน" แตกต่างกันไปตามขนาดของระบบปฏิบัติการของคุณ ตามปกติ Windows จะติดปลายสั้น ๆ แต่ผู้คนได้ทำส่วนที่ยากและเขียนมันขึ้นมา (SBCL, Emacs, SLIME)

เมื่อใกล้ถึงจุดนี้ Planet Lisp ได้อ้างอิงบทความที่เพิ่งอธิบายวิธีตั้งค่า Hunchentoot และ nginx

การแก้ไขเฉพาะระบบปฏิบัติการ: MCLIDEอาจเป็นจุดเริ่มต้นที่ดี ฉันติดตั้งแล้ว แต่ยังไม่มีโอกาสใช้งานจริงดังนั้นฉันจึงไม่สามารถพูดอะไรที่เป็นประโยชน์เกี่ยวกับมันได้ มันดูน่าสนใจอย่างแน่นอน!

แก้ไข: Eclipse มีปลั๊กอินCuspด้วย


6

มีอยู่แล้วคำตอบที่ดีมาก แต่ถ้าคุณต้องการดำน้ำแรกในการพัฒนาเว็บด้วยเสียงกระเพื่อมฉันมีความคิดเพิ่มเติมเล็กน้อย

Clojureเป็น Lisp แรกที่ฉันเห็นว่ามีเฟรมเวิร์กแบบเต็มสแต็กที่ยอดเยี่ยมจริงๆที่พร้อมใช้งานในช่วงเวลาที่ดีที่สุด

  • Noirเป็นเว็บเฟรมเวิร์กที่มีการจัดเส้นทางการสร้างเทมเพลตและอื่น ๆ คล้ายกับซินาตร้า แต่มีคุณสมบัติที่หลากหลายกว่าเล็กน้อย ใช้ Ring ซึ่งโดยพื้นฐานแล้วจะเทียบเท่ากับ Rack in Ruby ของ Clojure
  • Kormaเป็นห้องสมุดนามธรรม SQL ที่จับคู่ได้ดีกับ Noir
  • Pinotเป็นเฟรมเวิร์กฝั่งไคลเอ็นต์ที่เขียนทั้งหมดใน ClojureScript ซึ่งนำเราไปยัง:
  • Clojurescriptเป็นคอมไพเลอร์สำหรับ Clojure ซึ่งเป้าหมายจาวาสคริปต์

หากคุณไม่ได้สังเกตเห็นฉันแค่ครอบคลุมทั้งเว็บสแต็คและมันเขียนไว้ใน Clojure

ฉันคิดว่า Clojure ง่ายกว่านิดหน่อยในการเริ่มต้นใช้งาน Common LISP พร้อมชุดคุณลักษณะ / การสนับสนุนไลบรารีที่ดีกว่า Scheme

หากคุณมาจากพื้นหลัง Java เลยมันมีประโยชน์เพิ่มเติมของการทำงานบน JVM ซึ่งช่วยให้คุณเข้าถึง Java stdlib ทั้งหมดเมื่อคุณต้องการ

เอกสารที่มีอยู่คือการทำงานในความคืบหน้าเช่นเดียวกับกรอบตัวเอง แต่มีบทช่วยสอนที่ดีงามอยู่ที่นี่

ถ้าบรรณาธิการพอใจ ... คุณสามารถใช้ vim กับ SLIMV ได้ ถ้าคุณชอบ emacs emacs / SLIME ก็โอเค มีการสนับสนุน Eclipse และ NetBeans ที่ค่อนข้างดีสำหรับ Clojure (หรืออย่างที่ฉันบอก) แต่โดยทั่วไปฉันใช้ TextMate (แม้ว่า Sublime Text 2 จะกลายเป็นตัวเลือกที่เลือกอย่างรวดเร็ว) ฉันรู้ว่าฉันขาดเวทมนตร์เล็ก ๆ น้อย ๆ ที่ไม่ได้ใช้สภาพแวดล้อมแบบบูรณาการมากขึ้น แต่ฉันยินดีที่จะกด Tab-Tab เพื่อสลับระหว่างตัวแก้ไขและ REPL ของฉัน ไมล์สะสมของคุณอาจแตกต่างกันไป

หากคุณต้องการหนังสือที่จะเริ่มต้นอย่างรวดเร็วฉันขอแนะนำProgramming Clojureโดย Stuart Halloway และ Aaron Bedra รุ่นที่ 2 เพิ่งออกมาจากPragProgดังนั้นจึงเป็นรุ่นล่าสุด

มีความสุข Lisping!


คุณอาจต้องการเพิ่มLeiningen
Gary Rowe

5

นักวิจารณ์คนอื่นInaimathiแนะนำหนังสือเล่มนี้เมื่อไม่กี่วันก่อน: The Little Schemer

ได้รับมันในวันนี้และฉันสามารถพูดได้ว่าเป็นคนที่มีห้องสมุดหนังสือที่มีความแข็งแรงมากที่ได้รับมาหลายปีเพื่อที่ฉันจะได้อ่านเพียงบทเดียว แต่ฉันจะต้องมีหนังสือปกแข็งรุ่นนี้ มันอ่านเหมือน Tao Te Ching เกร็ดความรู้จากสวรรค์เกี่ยวกับภาษา มันอาจพูดว่า Scheme แต่เดิมเรียกว่า "The Little LISPer" ภาษาในระดับที่กล่าวถึงนั้นมีความคล้ายคลึงกันมากพอที่จะสอนเป็นหนึ่ง

มันไม่ได้เป็นข้อความขั้นสูง แต่มีภารกิจในการปลูกฝังหลักการของภาษาและสิ่งที่มันเป็นจริงสำหรับวิธีการคิดเช่นนั้น ฉันเชื่อว่ามันจะเป็นการเริ่มต้นที่ยอดเยี่ยมสำหรับ LISP

NB เมทริกซ์ความสามารถของโปรแกรมเมอร์ระบุถึงหนังสือเล่มนี้ในระดับสูงสุดของความสามารถของสิ่งต่าง ๆ ที่ต้องการค้นหา (ดูหมวดหนังสือ)


4

สถานที่ที่ดีมากในการเริ่มใช้ Lisp อยู่ในตัวแก้ไข Emacs ซึ่งสามารถนำมาใช้เพื่อกำหนดอะไรก็ได้ใหม่ คุณต้องการให้ปุ่ม 'e' เพื่อแทรกเวลาของวันที่เพียงแค่เขียนเกร็ดเล็กเกร็ดน้อย Lisp ขนาดเล็กเพื่อสร้างสตริงและผูกไว้กับปุ่ม e เสร็จสิ้น

สิ่งนี้จะช่วยให้คุณสามารถใช้สิ่งที่คุณเรียนรู้ในการตั้งค่ารายวันหากคุณใช้ตัวแก้ไขแบบธรรมดาในระหว่างวัน


+1 สำหรับคำแนะนำ "ใช้สิ่งที่คุณเรียนรู้" ฉันเป็น Intellij สำหรับงานประจำวัน แต่ฉันก็อาจสามารถใช้อุ้งมือของฉันใน emacs ในสภาพแวดล้อมซอฟต์แวร์ที่ จำกัด อย่างมากของเรา
Gary Rowe

3

หากคุณจะได้รับการพัฒนาบน Mac คุณอาจต้องการที่จะลองClozure CL มันมาพร้อมกับ IDE ที่มีการกดแป้นที่เข้ากันได้กับ Emacs และมีสะพานเชื่อมไปยัง Objective C เพื่อให้คุณสามารถเขียนแอปพลิเคชัน Cocoa

นอกจากนี้ฉันได้อ่าน Common LISP ในทางปฏิบัติ แต่ก็พบว่าLisp ที่ประสบความสำเร็จก็มีประโยชน์เช่นกัน

ในที่สุดความอดทนในส่วนของคุณจะได้รับรางวัล ผลผลิตและชัยชนะเล็กน้อยจะมาถึงอย่างรวดเร็ว แต่การชนะครั้งใหญ่อาจใช้เวลาสักครู่


2

ฉันมีสำเนาของANSI Common LISPที่นี่ที่โต๊ะทำงานของฉัน ฉันหยิบมันขึ้นมาทุก ๆ สองสามปีและผ่านไปสองสามบทจากนั้นก็ติดอยู่กับแบบฝึกหัดสองสามข้อและลดลงในรายการลำดับความสำคัญ ที่อาจบอกคุณเกี่ยวกับฉันมากกว่าหนังสือ หนังสือเล่มนี้ดูเหมือนจะมีความสามารถ ...


บางทีการอ่านคำตอบและความคิดเห็นเกี่ยวกับคำถามนี้อาจทำให้คุณมีแรงผลักดันในการทำงานเพื่อเป้าหมายที่สูงขึ้น มีรอยแตกที่ลิงค์ PCL และบอกเราว่าคุณคิดว่า ...
แกรี่ Rowe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.