Common LISP ใดที่ใช้งาน? [ปิด]


45

ดูเหมือนว่าจะมีปัญหาในทันทีโดยเริ่มพัฒนาใน Common LISP: การเลือกใช้งาน เราควรคำนึงถึงอะไรบ้างและควรคำนึงถึงน้ำหนักเท่าใดเมื่อพิจารณาการนำ CL มาใช้

ควรเป็นไปตามมาตรฐาน ANSI หรือไม่ ควรได้รับการสนับสนุนโดย SLIME หรือไม่ การใช้งานบางอย่างไม่มีห้องสมุดที่ดีมีเอกสาร ฯลฯ


คำถามที่น่าสนใจ: ฉันกำลังอ่าน "ปฏิบัติการสามัญชัด" ตอนนี้และฉันลองตัวอย่างของฉันใน CLISP แต่ฉันคิดว่าการดำเนินการใด ๆ ที่สอดคล้องกับมาตรฐาน: Common Lisp ดูเหมือนว่าภาษาที่เป็นผู้ใหญ่และมีเสถียรภาพมากสำหรับฉัน
Giorgio

คำตอบ:


25

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

SBCL ค่อนข้างเร็วและเก่งในเรื่องของจำนวน ดังนั้นหากคุณขึ้นอยู่กับการคำนวณตัวเลขอย่างหนักนั่นอาจเป็นการใช้งานที่เหมาะสมสำหรับคุณ นอกจากนี้ยังมีการอนุมานประเภทที่เหมาะสม (สำหรับการใช้งานเสียงกระเพื่อม)

CLISP เป็นการนำระบบไปใช้งานที่ค่อนข้างเล็กและน่าสนใจสำหรับการเขียนสคริปต์

ไม่กี่ปีที่ผ่านมาฉันลอง CCL และติดกับมันเพราะฉันต้องการข้อความแสดงข้อผิดพลาดและร่องรอยสแต็กกับการใช้งานอื่น ๆ เช่นเดียวกับเวลารวบรวมที่ค่อนข้างต่ำ สำหรับฉันแล้วความง่ายในการใช้งานเชิงโต้ตอบเป็นสิ่งที่มีความสำคัญสูงมาก หากต้องการความเร็วฉันอาจยังคงสลับไปใช้ SBCL สำหรับโปรแกรมที่ปรับใช้ (ไม่จำเป็นต้องทำ) นอกจากนี้ยังมีตัวเลือกของการสนับสนุนเชิงพาณิชย์

หากคุณต้องการปรับใช้กับ JVM จะมี ABCL

สำหรับการใช้งานแบบฝัง ECL

Allegro มี AllegroGraph, AllegroStore เครื่องมือสร้าง GUI ที่ใช้งานง่ายและอีกมากมาย แต่ไม่ใช่ทุกคนที่ชอบเงื่อนไขการอนุญาตให้ใช้สิทธิ์

LispWorks ดูเหมือนว่าจะให้ยืมตัวเองได้ค่อนข้างดีสำหรับการเขียนโปรแกรมแอปพลิเคชันสำหรับผู้ใช้ปลายทางด้วยชุดเครื่องมือ GUI ข้ามแพลตฟอร์มที่ดีและเงื่อนไขการออกใบอนุญาตที่อาจเหมาะกับทีมขนาดเล็กและโปรแกรมเมอร์เดี่ยวดีกว่า Allegro (อย่างน้อยมันก็เป็นสิ่งที่ฉันต้องการ)

แน่นอนว่านี่เป็นเพียงหมวดหมู่และการแสดงผลที่กว้างขวาง ฉันขอแนะนำให้ดูที่ SBCL, CCL และ CLISP ให้ละเอียดยิ่งขึ้นเนื่องจากสิ่งเหล่านี้เป็น IMHO การใช้งานโอเพ่นซอร์สที่มีการใช้งานมากที่สุดและได้รับการสนับสนุนที่ดีที่สุดจากนั้นเลือกหนึ่งในนั้น นั่นคือเว้นแต่ความต้องการของคุณจะตรงกับสิ่งที่ ABCL หรือ ECL มีให้

ควรเป็นไปตามมาตรฐาน ASNI หรือไม่

มันจะไม่ใช่การนำ CL มาใช้หากไม่ได้ทำ (แน่นอนอาจมีการเบี่ยงเบนเล็กน้อยในทางปฏิบัติ แต่อย่างน้อยความสอดคล้องควรเป็นเป้าหมาย)

ควรได้รับการสนับสนุนโดย SLIME หรือไม่

แน่นอน - ถ้าคุณใช้ SLIME (ในความคิดของฉันมันเป็นสภาพแวดล้อมเสียงกระเพื่อมที่ดีที่สุดในขณะนี้ แต่สำหรับเขาแต่ละคน)

การใช้งานบางอย่างไม่มีห้องสมุดที่ดีมีเอกสาร ฯลฯ

อย่างน้อย SBCL, CCL, Allegro และ LispWorks ควรได้รับการสนับสนุนอย่างดีจากห้องสมุดส่วนใหญ่ที่ใช้กันทั่วไป CLISP มาพร้อมกับคอลเลกชันไลบรารีที่ดีและควรได้รับการสนับสนุนเป็นส่วนใหญ่


22

Dan Weinreb (น่าเสียดายที่เขาเสียชีวิตเมื่อปีที่แล้ว) เขียนภาพรวม:

การสำรวจเสียงกระเพื่อม

มีความแตกต่างมากมายระหว่างการใช้งาน CL ไม่สามารถครอบคลุมความต้องการที่แตกต่างกันทั้งหมด (ความเร็ว, ขนาด, ใบอนุญาต, ราคา, ความเข้ากันได้, การสนับสนุนระบบปฏิบัติการ, ... ) ของผู้ใช้สำหรับระบบเสียงกระเพื่อมในการใช้งานครั้งเดียว หนึ่งต้องค้นหาท้องถิ่นที่เหมาะสมโดยใช้หนึ่งหรือมากกว่าของการใช้งานที่มีอยู่ซึ่งเป็นไปตามปรัชญาบางอย่าง:

  • ฟรีไม่มีค่าใช้จ่าย C-based (จึงแพร่หลายในพอร์ต): ECL , CLISP

  • ฟรีไม่มีค่าใช้จ่ายอิงตาม JVM: ABCL

  • ฟรี, ไม่มีค่าใช้จ่าย, การติดตั้งใช้งานที่กว้างขวาง: SBCL , CCL , CMUCL

  • การใช้งานที่เป็นกรรมสิทธิ์ในเชิงพาณิชย์การใช้งานที่กว้างขวางมากการสนับสนุนที่ยอดเยี่ยมสำหรับแอพที่ใช้ GUI: Allegro CL , LispWorks

โดยระบบปฏิบัติการ / แพลตฟอร์ม:

  • JVM: ABCL
  • Linux: ทั้งหมด
  • Linux พร้อม GUI + IDE: Allegro CL , LispWorks
  • Mac OS X ที่มี GUI + IDE: CCLหรือLispWorks
  • MS Windows พร้อม GUI + IDE: Allegro CLหรือLispWorks
  • การส่งมอบแอปพลิเคชัน Android และ iOS: mocl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.