คำถามติดแท็ก lisp

เสียงกระเพื่อมเป็น (ภาษาตระกูล) วัตถุประสงค์การใช้งานทั่วไปภาษาการเขียนโปรแกรม (s), ขึ้นอยู่กับแคลคูลัสแลมบ์ดาและมีความสามารถในการจัดการรหัสแหล่งที่มาเป็นโครงสร้างข้อมูล

3
เหตุใดครอบครัว c จึงเป็นมาตรฐานการศึกษา CS สำหรับโปรแกรมคณิตศาสตร์ / CS แทนที่จะเป็นตระกูล LISP [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันทำความคุ้นเคยกับ LISP เพื่อการพัฒนาตนเอง หนึ่งในสิ่งที่ฉันสังเกตเห็นคือเสียงกระเพื่อมมากขึ้นในกระบวนทัศน์ของคณิตศาสตร์กว่าพูด C. โครงสร้างไวยากรณ์และการออกแบบดูเหมือนจะสะท้อนโดยตรงแบบจำลองทางคณิตศาสตร์จริงของอัลกอริทึม ฉันไม่เข้าใจว่าทำไมแม้แต่โปรแกรม CS ที่ดีทางคณิตศาสตร์ก็ยังเรียน C แทน LISP ฉันคิดว่า LISP ใช้แนวคิดทางคณิตศาสตร์ที่สูงกว่า C โดยตรงฉันไม่ได้บอกว่าคุณไม่สามารถสร้างแบบจำลองโครงสร้างทางคณิตศาสตร์ใน C. ฉันแค่สังเกตเห็นว่า LISP ดูเหมือนจะยากสำหรับนักคณิตศาสตร์ ฉันได้อ่านคำด่าของ Joel Spolsky หลายคนในโรงเรียน JAVA และสิ่งที่ไม่ - และฉันเห็นด้วยกับการประเมินของเขา - แต่โรงเรียนของฉันไม่ได้สอน JAVA ด้วยเหตุผลอย่างนั้น พวกเขาเข้มงวดในการสอนแนวคิดพื้นฐานเช่นพอยน์เตอร์การออกแบบอัลกอริทึมการเรียกซ้ำและแม้แต่คำแนะนำการประกอบ อย่างไรก็ตามพวกเขาทำสิ่งนี้ทั้งหมดใน C และ c ++ ไม่มีใครรู้เหตุผลของเรื่องนี้และ / หรือประวัติของมัน?

8
การเลือกระหว่าง CL และ Python สำหรับการพัฒนาเว็บ
ฉันมาจากพื้นหลังของจาวาและหลังจากที่ฉันได้อ่านบทความนี้โดยพอลเกรแฮมฉันเริ่มสงสัยว่าการเลือกภาษาใหม่คือ Common LISP เพื่อเร่งงานของฉัน (ฉันเป็นนักพัฒนาเว็บ) ตอนนี้ฉันกำลังเขียนโครงการสัตว์เลี้ยง แต่ฉันมีแผนธุรกิจสำหรับอนาคต Paul พูดถึง LISP ในเรียงความของเขาว่าเป็น "อาวุธลับ" ฉันไม่ทราบว่าคำสั่งนี้เป็นจริงหลังจาก 10 ปี แต่ฉันจุ่มนิ้วเท้าของฉันลงในการสอน CL ที่ดีและดูเหมือนว่า LISP อาจเหนือกว่าสำหรับการพัฒนาเว็บ พอลกล่าวถึง Python ว่าเป็นตัวเลือกที่ดีที่ฉันคุ้นเคย คำถามของฉันคือฉันควรเลือกโครงการใดในอนาคตของเว็บ สิ่งที่ฉันคิดเกี่ยวกับ: ฉันจะไม่พัฒนาแอพพลิเคชั่นเดสก์ท็อปดังนั้นฉันสามารถเลือกภาษาที่ต้องการได้ หลามดูเหมือนว่าจะมีชุมชนขนาดใหญ่มากซึ่งทำให้ห้องสมุด / กรอบงานมากกว่าเมื่อเปรียบเทียบกับเสียงกระเพื่อม ฉันพบว่า lisp มีฟังก์ชั่นบางอย่าง (เช่นมาโคร) ซึ่งหาไม่ได้ที่อื่น ฉันส่วนใหญ่ทำงานคนเดียวหรือกับโปรแกรมเมอร์ 1-2 คน แต่การหาคนที่มีความรู้ไม่เพียงพออาจเป็นเรื่องยาก ดังนั้นสิ่งที่คุณคิดว่า?

9
ทรัพยากรสำหรับการปรับปรุงความเข้าใจในการเรียกซ้ำของคุณ? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันรู้ว่าการเรียกซ้ำคืออะไร (เมื่อ patten reoccurs อยู่ภายในตัวเองโดยทั่วไปแล้วฟังก์ชั่นที่เรียกตัวเองว่าเป็นหนึ่งในสายของมันหลังจากการแบ่งแบบมีเงื่อนไข ... ใช่ไหม?) และฉันสามารถเข้าใจฟังก์ชั่นแบบเรียกซ้ำได้ ปัญหาของฉันคือเมื่อฉันเห็นตัวอย่างใหม่ฉันมักสับสนอยู่เสมอ ถ้าฉันเห็นการวนซ้ำหรือการแมปการซิปการทำรังการเรียก polymorphic และอื่น ๆ ฉันรู้ว่าจะเกิดอะไรขึ้นโดยดูที่มัน เมื่อฉันเห็นรหัสซ้ำกระบวนการคิดของฉันมักจะเป็น 'wtf นี่คืออะไร' ตามด้วย 'oh it recursive' ตามด้วย 'ฉันเดาว่ามันต้องใช้งานถ้าพวกเขาบอกว่าทำ' คุณมีเคล็ดลับ / แผน / ทรัพยากรเพื่อสร้างทักษะในด้านนี้หรือไม่? การเรียกซ้ำเป็นแนวคิดแปลก ๆ ดังนั้นฉันจึงคิดวิธีจัดการกับมันอาจจะแปลกและไม่เท่าเทียมกันเท่ากัน

3
เป็นไปได้หรือไม่ที่จะคอมไพล์ภาษาระดับสูงขึ้นเพื่อให้สามารถอ่าน C ++ ได้? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา C ++ เป็นภาษาที่ยอดเยี่ยมในหลาย ๆ ด้าน แต่บางสิ่งที่ยุ่งยากในการเขียนโดยไม่ต้องใช้ IDE ในฐานะผู้ใช้ VIM มันน่าสนใจมากถ้าฉันสามารถใช้ภาษาระดับสูงขึ้นซึ่งทำให้ฉันสามารถเขียน C ++ ด้วย S-Expressions และอาจมีมาโครคล้าย Lisp ซึ่งทำให้สามารถสร้างโค้ดที่สะอาดได้ในขณะเดียวกันก็หลีกเลี่ยงการเขียน patters เดิม ครั้งแล้วครั้งเล่า. ฉันถาม freenode และทดสอบแนวคิดหลายอย่างเช่นการคอมไพล์ Lisp-> C กับคอมไพเลอร์เช่น ECL และ Bigloo แต่ไม่มีสิ่งใดที่สร้างโค้ด C ที่สะอาดเป็นพิเศษ มีงานใด ๆ ในปัญหานี้หรือไม่?

9
กฎข้อที่สิบของ Greenspun ทุกโครงการขนาดใหญ่มีล่ามเสียงกระเพื่อมหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา กฎที่สิบของ Greenspun (จริงๆแล้วเป็นเพียงกฎเดียว) ระบุว่า: Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. ความทรงจำของฉันคือว่ามีเอกสารบางอย่างในหัวข้อบางทีสำหรับโครงการ Quattro (สเปรดชีต) ของ Borland และอื่น ๆ Google ไม่มีความช่วยเหลือบางทีคำค้นหาที่ถูกต้องอาจไม่เป็นที่สนใจ ฉันกำลังมองหาเอกสารหรือบทความที่สนับสนุนการอ้างสิทธิ์นี้หากมี

2
เราสามารถสร้างคอมพิวเตอร์ที่ใช้งานได้หรือไม่?
ในท้ายที่สุดแล้วโปรแกรมทั้งหมดของเรามีโครงสร้าง นั่นคือมันไม่สำคัญว่าเราจะสร้างมันให้บริสุทธิ์หรือใช้ประโยชน์ได้อย่างไร - พวกมันถูกแปลเป็นชุดประกอบเสมอดังนั้นสิ่งที่จริง ๆ แล้วสิ่งที่วิ่งอยู่หลังหมวกคือคำแนะนำรัฐและลูป พวกเราเลียนแบบ FP ในฐานะที่เป็นฮาร์ดแวร์ noob คำถามของฉันคือ: ทำไมเราไม่ใช้สถาปัตยกรรมคอมพิวเตอร์ที่คำนวณสิ่งต่าง ๆ ในรูปแบบที่ใช้งานได้จริง? ตัวอย่างเช่นคอมพิวเตอร์อาจประกอบด้วย "functional chips" ดั้งเดิมเช่น "concat", "map" และ "ลด" และโปรแกรมจะบอกคอมพิวเตอร์ว่าจะไหลของข้อมูลระหว่างชิปเหล่านั้นอย่างไรเพื่อคำนวณผลลัพธ์ที่ต้องการ เช่นในภาษาที่ต่อกัน สิ่งนี้ไม่สมเหตุสมผล แต่อาจแสดงสิ่งที่ฉันคิด

2
วงเล็บเหลี่ยมและเครื่องหมายปีกกาใน Clojure ยังคงเป็น S-expressions หรือไม่
ฉันพยายามที่จะเรียนรู้ Lisp และมองดู Lisps ทั้งหมดที่นั่นและความแตกต่างของพวกเขา ฉันเห็นว่าในการใช้งานบางส่วนของ Scheme คุณสามารถใช้วงเล็บเหลี่ยมสลับกันได้กับวงเล็บเหลี่ยมเพื่อความสะดวกในการอ่านดังนั้นเนื่องจากพวกเขาได้รับการปฏิบัติเหมือนกันฉันถือว่าพวกเขายังคงเป็นแค่ อย่างไรก็ตามใน Clojure ฉันเห็นว่ามีการใช้วงเล็บเหลี่ยมและเครื่องหมายปีกกาเพื่อแสดงชนิดข้อมูลต่าง ๆ เช่นเวกเตอร์เป็นต้น สิ่งเหล่านี้ยังคงเป็นนิพจน์ S ที่ถูกต้องหรือไม่หรือจะต้องพิจารณาว่าเป็นอะตอมหรือไม่ สิ่งนี้ "ทำลาย" แนวคิดทั้งหมดของ S-expressions หรือไม่ทำให้ Clojure กลายเป็น "ไม่บริสุทธิ์" ชัด ๆ
12 lisp  clojure 

1
สิ่งที่เป็นปัญหาในทางปฏิบัติเป็นผลมาจากการขาดแมโครที่ถูกสุขอนามัยใน Clojure?
ฉันเคยได้ยินมาโคร Clojure นั้นเขียนได้ง่ายกว่า แต่ไม่น่าเชื่อถือเท่ากับแมโครที่ถูกสุขอนามัยของ Racket คำถามของฉันมี 2 ส่วน: วิธีการที่ไม่gensymแตกต่างจากแมโครที่ถูกสุขอนามัย? มาโคร Racket ให้อะไรที่ Clojure ทำไม่ได้? (ไม่ว่าจะเป็นความปลอดภัยการประกอบหรืออะไรก็ได้)

3
การทอโค้ด Byte กับ Lisp แมโคร
ฉันได้อ่านเกี่ยวกับห้องสมุดที่ผู้คนเขียนสำหรับภาษาอย่าง Java และ C # ซึ่งใช้ประโยชน์จากรหัสไบต์ที่ทอผ้าเพื่อทำสิ่งต่าง ๆ เช่นการตัดการเรียกใช้ฟังก์ชันการแทรกรหัสการบันทึก ฯลฯ ฉันได้อ่านมาโคร Lisp / Clojure ด้วย พยายามเข้าใจวิธีการใช้งานให้ดีขึ้น ยิ่งฉันอ่านมาโครมากเท่าไหร่ก็ยิ่งมีความสามารถในการทำงานเหมือนกับไลบรารีการทอโค้ดไบต์ โดยฟังก์ชั่นฉันหมายถึงความสามารถในการจัดการรหัสในเวลารวบรวม ตัวอย่างของห้องสมุดที่ฉันดูอยู่จะเป็น AspectJ, PostSharp และ Cecil มีสิ่งใดบ้างที่สามารถทำได้กับสิ่งหนึ่งและอีกอันหนึ่งไม่ใช่หรือ พวกเขาแก้ปัญหาเดียวกันได้จริงหรือฉันกำลังเปรียบเทียบแอปเปิ้ลกับส้ม?

5
โครงสร้างข้อมูลในการโปรแกรมเชิงฟังก์ชัน
ขณะนี้ฉันกำลังเล่นกับ LISP (โดยเฉพาะ Scheme และ Clojure) และฉันสงสัยว่าโครงสร้างข้อมูลทั่วไปนั้นจัดการกับภาษาโปรแกรมที่ใช้งานได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันต้องการแก้ปัญหาโดยใช้อัลกอริธึมการค้นหาพา ธ กราฟ โดยทั่วไปแล้วเราจะแสดงกราฟนั้นในภาษาโปรแกรมที่ใช้งานได้อย่างไร (โดยหลักแล้วสนใจในรูปแบบการทำงานที่บริสุทธิ์ซึ่งสามารถนำไปใช้กับ LISP) ฉันจะลืมกราฟทั้งหมดและแก้ปัญหาด้วยวิธีอื่นได้ไหม

3
เหตุใดรุ่นซ้ำ ๆ จึงใช้เวลานานกว่า
ฉันดูที่http://programming.lispdream.com/blog/2011/06/recursion-vs-iteration/และฉันเห็นว่าการใช้งานแบบเรียกซ้ำและทำซ้ำของฟังก์ชันแฟคทอเรียลซ้ำแล้วซ้ำอีกจะใช้เวลานานกว่า รับ n = 1,000 ฉันไม่สามารถหาสาเหตุ (เขาไม่ได้อธิบาย แต่บอกว่ามันเป็นแบบฝึกหัดสำหรับผู้อ่าน) ขออภัยสำหรับความแปลกใหม่ของฉันทั้งหมดนี้

2
กลยุทธ์ / แหล่งข้อมูลสำหรับการเขียน LISP webservices?
พื้นหลัง: ฉันต้องการเขียน webservices ที่ใช้งานได้อย่างสมบูรณ์ใน Common LISP ในฐานะ April Fools เล่นตลกกับทีมพัฒนาอื่น ๆ ใน บริษัท ของฉัน มีสองสิ่งนี้: การอ่านข้อมูลจาก / เขียนไปยังฐานข้อมูล MySQL และการรับ / การประมวลผล / ตอบสนองต่อคำขอผ่าน HTTP (อันที่จริงมีชิ้นที่สามเขียนการทดสอบอัตโนมัติ แต่พันธมิตร QA ของฉันในอาชญากรรมกำลังจะจัดการกับส่วนนั้น) หลังจาก Googling ฉันพบแหล่งข้อมูลที่ดีที่นี่ ( http://www.ymeme.com/creating-dynamic-websites-lisp-apache.html ) แต่ฉันแปลกใจที่ดูเหมือนว่ามีเพียงคำแนะนำเพียงอย่างเดียว ไม่มีใครรู้จักผู้อื่นหรือใครสามารถแบ่งปันประสบการณ์ส่วนตัวด้วยการเขียนเว็บเซอร์วิซใน CLisp
11 lisp 


4
ฉันควรเรียนรู้อะไรจากโครงการ
ฉันสงสัยว่าคุณสมบัติพิเศษใดบ้างที่ฉันสามารถเรียนรู้จาก Scheme ซึ่งจะช่วยให้ฉันเป็นโปรแกรมเมอร์ที่ดีขึ้น ฉันมีประสบการณ์มากมายในภาษากระแสหลักและฉันกำลังมองหาเพื่อขยายขอบเขตและเรียนรู้เกี่ยวกับแง่มุมการใช้งานที่ขาดหายไปจากภาษาอื่น ฉันคุ้นเคยกับการปิดจาก javascript, การแสดงออกแลมบ์ดาจาก C # และฉันสงสัยว่าสิ่งที่ฉันสามารถมุ่งเน้นไปที่การขาดในภาษาอื่น ๆ ? นอกเหนือจากไวยากรณ์เสียงกระเพื่อมฉันรู้สึกเหมือนสิ่งที่ฉันได้เห็นจนถึงตอนนี้ฉันได้พบในภาษาอื่น ๆ มีอะไรพิเศษสำหรับ Scheme / Lisp ที่จะสอนอะไรใหม่ ๆ ให้ฉัน

1
สถาปัตยกรรมคอมพิวเตอร์ไม่ได้ขึ้นอยู่กับอาร์เรย์ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว เอกสารต้นฉบับของ Wadler ใน Monads for Functional Programming (Haskell) เขากล่าว อีกคำถามหนึ่งที่มีประวัติอันยาวนานก็คือมันเป็นที่ต้องการของโปรแกรมพื้นฐานในการอัพเดทอาร์เรย์หรือไม่ เนื่องจากความพยายามอย่างมากในการพัฒนาอัลกอริธึมและสถาปัตยกรรมบนพื้นฐานของอาร์เรย์เราจะหลีกเลี่ยงการอภิปรายนี้และเพียงแค่คิดว่าคำตอบคือใช่ ไม่มีการอ้างอิงหรือคำใบ้สำหรับสถาปัตยกรรมที่เป็นไปได้อื่น ๆ ฉันเคยได้ยินบางสิ่งเกี่ยวกับสถาปัตยกรรมที่เหมาะกับ Lisp ใครช่วยกรุณาแนะนำฉันด้วยคำอธิบายและคำแนะนำเกี่ยวกับที่ไหน / ฉันสามารถเริ่มต้นในหัวข้อนี้ ฉันซาบซึ้งมากที่คุณสามารถอธิบายสถาปัตยกรรมที่แตกต่างกันในเวลาสั้น

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