เป็นไปได้หรือไม่ที่จะทำการพัฒนาเว็บ (อย่างจริงจัง) ใน Lisp [ปิด]


100

เห็นได้ชัดว่าเป็นไปได้ที่จะเขียนแอปพลิเคชันเกือบทุกประเภทในภาษาโปรแกรมเกือบทุกภาษาโดยเฉพาะอย่างยิ่งในภาษาที่มีประสิทธิภาพเช่น Lisp (ไม่ว่าจะเป็น Scheme หรือ Common Lisp) แต่การใช้เพื่อพัฒนาเว็บนั้นใช้ได้จริงหรือไม่? ถ้าเป็นเช่นนั้นจุดเริ่มต้นที่ดีควรเป็นอย่างไร? แหล่งข้อมูลที่เหมาะสม (เครื่องมือห้องสมุดเอกสารแนวทางปฏิบัติที่ดีที่สุดตัวอย่าง ฯลฯ ) สำหรับโครงการในลักษณะนี้จะหาได้จากที่ใด


2
ขึ้นอยู่กับความหมายของคำว่า "ใช้ได้จริง" เป็นไปได้ใช่ ในทางปฏิบัติอาจไม่ใช่สำหรับคนส่วนใหญ่ คุณวางแผนที่จะโฮสต์ไซต์ของคุณหรือไม่? คุณจะใช้งานกล่องเฉพาะของคุณเองซึ่งคุณจะมีการควบคุมรูทหรือไม่ คุณเต็มใจทุ่มเทแค่ไหน?
แก่น

Leonardo ฉันกำลังรวบรวมหนังสือเกี่ยวกับเรื่องนี้และต้องการรับคำติชมจากนักพัฒนาเว็บที่สนใจเรื่อง Lisp หากคุณต้องการโปรดแจ้งให้เราทราบว่าคุณมีแนวคิดในการใช้ Lisp อย่างไรและคุณต้องการเห็นอะไรในหนังสือเล่มนี้ vsedach@gmail.com
vsedach

@chris - ฉันเพิ่งตั้งค่า Scheme Hosting สำหรับโครงการด้านข้างของฉัน มันง่ายกว่าที่คิด - gcbhacks.dreamhosters.com/scheme-web-apps
gcbenison

2
ไปอ่านบทความของ Paul Graham ฉันสงสัยว่าเขาพลาดอะไรไปในการสนทนาเรื่องการใช้ LISP สำหรับเว็บแอปพลิเคชันและเขาเป็นนักเขียนที่ยอดเยี่ยม paulgraham.com/avg.html โฮมเพจของเขาคือpaulgraham.com/index.html
Kelly S. French

เพื่อน Googler: มีคำตอบที่ทันสมัยมากขึ้นในรายการCL ที่ยอดเยี่ยม
Ehvince

คำตอบ:


82

ใช่การพัฒนาเว็บเป็นจุดแข็งอย่างหนึ่งของ Common Lisp ในปัจจุบัน

  • ในฐานะเว็บเซิร์ฟเวอร์ให้ใช้ไฟล์ Hunchentootซึ่งเดิมเรียกว่า tbnl โดย Dr. Edmund Weitz

    คุณสามารถรันเป็นแบ็คเอนด์ของ Apache โดยใช้ mod_proxy เป็น reverse proxy หรือเป็นเซิร์ฟเวอร์แบบสแตนด์อะโลน

  • มีโซลูชันการสร้าง HTML ที่หลากหลายตั้งแต่เทมเพลตสไตล์ PHP ไปจนถึงมาโครแฮ็ก Lisp ไปจนถึง XSLT เพียงเลือกของคุณ

    HTML-TEMPLATEเป็นตัวอย่างหนึ่ง

  • XML การปิดพร้อมใช้งานสำหรับการแยกวิเคราะห์ XML, การทำให้เป็นอนุกรม, XPath 1.0, XSLT 1.0 นอกจากนี้ยังมี Closure HTML สำหรับการแยกวิเคราะห์ซุปแท็ก HTML

    (การเปิดเผยข้อมูลทั้งหมด: ฉันเป็นผู้ดูแล Closure XML และ Closure HTML)

  • ถ้าคุณต้องการParenscriptสามารถทำให้ประสบการณ์การใช้งาน JavaScript ของคุณมีชีวิตชีวาขึ้น แต่คุณยังสามารถเขียน JavaScript แบบเดิม ๆ ด้วยตัวคุณเองได้

    อีกหนึ่งโซลูชันการเพิ่มประสิทธิภาพ JavaScript ที่ยอดเยี่ยมในjwacsซึ่งเขียนด้วย Common Lisp และแปลง JavaScript เพื่อเพิ่มการรองรับการต่อเนื่อง

  • โครงการบริการเว็บอาจต้องใช้ไคลเอ็นต์ HTTP นอกเหนือจากเซิร์ฟเวอร์

    Drakmaเป็นห้องสมุดที่จะใช้ในวันนี้

    PURIมีประโยชน์สำหรับการจัดการ URI

    และยังมีอีก! หนึ่งในจุดเริ่มต้นคือ cliki เช่นcliki.net/web

บนเว็บไม่มีใครรู้ว่าเซิร์ฟเวอร์ของคุณเขียนด้วย Common Lisp :-)


1
และนี่เป็นเพียงเสียงกระเพื่อมธรรมดาและเครื่องมือเพียงชุดเดียว ...
Attila Lendvai


1
@MattBall โฮ่ง. เห่า หอน
ไนซ์

1
บนอินเทอร์เน็ตไม่มีใครได้ยินเสียงกรีดร้องของเซิร์ฟเวอร์เสียงกระเพื่อมของคุณ
kd4ttc

31

การพัฒนาเว็บใน Common Lisp นั้นทั้งได้ผลและสนุก

ตัวอย่างบางส่วน:

ซีแอล - ใครช่วยให้คุณเขียน HTML ได้โดยไม่ลืมแท็กปิดอีกเลย

Weblocksช่วยให้คุณสามารถกำหนดแบบฟอร์มได้อย่างชัดเจนด้วยการตรวจสอบความถูกต้องในตัว:

(defview signup (:type form :caption "Sign up")
  (username :satisfies #'valid-username)
  (password :present-as dual-password :parse-as dual-password)
  (receive-newsletter-p :present-as checkbox :parse-as predicate))

นอกจากนี้ยังรองรับ AJAX ในลักษณะอัตโนมัติเต็มรูปแบบโดยจะกลับไปใช้ลิงก์ปกติหากเบราว์เซอร์ไม่รองรับ

cl-prevalenceเป็นทางเลือกที่เรียบง่ายอย่างเหลือเชื่อสำหรับ SQL

ช่วงนี้ผู้คนจำนวนมากใช้เทคโนโลยีเหล่านี้สำหรับแอปพลิเคชันที่มีความสำคัญต่อภารกิจและประสบความสำเร็จ

โครงการโอเพ่นซอร์ส CL ที่สำคัญที่สุดในความเป็นจริงมีการสนับสนุนจากชุมชนที่ดีเยี่ยม


19

มีกรอบเว็บบางส่วนสำหรับการพัฒนาเว็บ มองไปที่:

  • Weblocks (เสียงกระเพื่อมธรรมดา)
  • Compojure (Clojure)

หากคุณต้องการเครื่องมือเสียงกระเพื่อมที่ได้รับการสนับสนุนอย่างดีคุณจะต้องจ่ายเงินสำหรับพวกเขา มีชุมชนไม่ใหญ่มากรอบ ๆ เครื่องมือโอเพนซอร์สดังนั้นพวกเขาจึงไม่มีเอกสาร / การนำไปใช้ในระดับเดียวกับที่พูด Django บน Python

นี่คือผลิตภัณฑ์ lisp เชิงพาณิชย์บางส่วน:

นอกจากนี้ยังเป็นที่น่าสังเกตว่า Reddit ถูกสร้างขึ้นครั้งแรกใน Lisp แต่ผู้เขียนได้ย้ายไปที่ Python ในภายหลังโดยอ้างว่าไม่มีไลบรารีที่ใช้งานได้ดีและมีเอกสาร ( ลิงค์ )


เขาบอกว่าห้องสมุดเป็น "ปัญหาใหญ่ที่สุด" แต่ก่อนหน้านั้นเขาบอกว่า "reddit จะไม่ทำงานบน Mac ของฉัน"; ในขณะนั้นมี CL แบบเธรดเพียงตัวเดียวสำหรับ Mac ซึ่งไม่สามารถเรียกใช้รหัสซ็อกเก็ตระดับต่ำได้ ดูเหมือนว่าอย่างน้อยที่สุดก็เป็นตัวทำลายข้อตกลง
Ken

3
ฉันเป็นแฟนตัวยงมันมาแทนที่ Python สำหรับฉัน แต่ฉันทำงานใน C ++ ฉันสามารถหาโปรแกรมเมอร์ Python คนอื่น ๆ ที่จะเข้าใจ Python Prototype ได้ แต่จนกระทั่งการฟื้นฟู Lisp ในปัจจุบันประสบความสำเร็จมากขึ้นฉันไม่สามารถใช้มันในที่ทำงานได้โดยไม่มีคำถามไม่รู้จบ "ทำไมคุณไม่ใช้ Python หรือ Ruby?"
Aaron

11

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

  • ใช้CL-WHOเพื่อเขียน HTML ที่ง่ายดายในไวยากรณ์สไตล์เสียงกระเพื่อม
  • Parenscriptช่วยให้คุณสามารถเขียนโค้ดที่รวบรวมไปยัง javascript
  • สำหรับการเชื่อมต่อฐานข้อมูลให้ใช้Postmodernเพื่อคุยกับPostgreSQL

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


คุณตระหนักถึงสิ่งใดที่จะทำให้ LISP สามารถเชื่อมต่อกับ MongoDB ได้หรือไม่?
MadPhysicist

9

เพื่อช่วยขจัดความเชื่อที่ว่าไม่มีเว็บเฟรมเวิร์ก Lisp ต่อไปนี้คือสิ่งที่ยังไม่ได้กล่าวถึง:

เห็นได้ชัดว่าผู้คนจำนวนมากดูเหมือนจะคิดว่า Lisp นั้นดีพอสำหรับการเขียน Web Framework จำนวนมาก

ฉันไม่ใช้หรือรับรองกรอบงานเว็บใด ๆ ฉันชอบสร้างเว็บแอปพลิเคชันโดยการรวมเครื่องมือที่มีมุมฉากเข้าด้วยกัน (David Lichteblau ได้กล่าวถึงสิ่งดีๆบางอย่าง) โดยใช้รูปแบบการออกแบบในแบบที่เหมาะสมกับแอปพลิเคชันที่คุณกำลังสร้างและนั่นคือแนวทางที่ฉันแนะนำ Common Lisp มีทั้งเครื่องมือดังกล่าวมากมายและความสามารถที่ไม่มีใครเทียบได้ในการรวมเข้าด้วยกัน

Adam Petersen ได้เผยแพร่บทแนะนำเบื้องต้นที่ยอดเยี่ยมสำหรับวิธีเริ่มสร้างเว็บแอปพลิเคชัน Lisp ในรูปแบบนี้เมื่อปีที่แล้ว:

http://www.adampetersen.se/articles/lispweb.htm


8

ฉันคิดว่าใคร ๆ ก็พูดได้ว่าใช่โดยไม่ต้องพูดมาก

  1. หนึ่งในเซิร์ฟเวอร์ HTTP แรกคือcl-http

  2. โครงการที่ผู้คนรอบ ๆDrSchemeใช้เวลาอย่างน่าทึ่ง:

  3. www.franz.com ทำงานบนเว็บเซิร์ฟเวอร์ (AllegroServer) และ webframework (webactions) ของตนเอง

  4. หากคุณมีข้อสงสัยให้ตรวจสอบแพ็คเกจเสียงกระเพื่อมทั่วไปจาก Edi Weitz พวกเขามักจะทำงาน

ใช่แล้วเราสามารถเขียนโปรแกรมเว็บแบบ "จริงจัง" ด้วย Common Lisp ได้ ตอนนี้ฉันยังลังเลที่จะไปตามเส้นทาง Common Lisp หรือ Ruby on Rails ฉันชอบทั้งสองสิ่งมากกว่า. NET ....


4

Viaweb บริษัทของ Paul Graham เขียนผลิตภัณฑ์ใน Common Lisp ซึ่งต่อมาได้กลายเป็น Yahoo Shops เห็นได้ชัดว่า Yahoo เขียนซ้ำใน C ++ ในภายหลัง แหล่งข้อมูลบนเว็บสำหรับ Lisp progamming มีอยู่ไม่น้อย


1
หากเป็นเรื่องจริงเกี่ยวกับ Yahoo บางคนอาจมองว่านี่เป็นความล้มเหลวของ CL เป็นภาษาเว็บ แต่ฉันจะเห็นว่ามันเป็นความสำเร็จของ CL ในฐานะภาษาต้นแบบเว็บ
gcbenison

3
ฉันแทบจะไม่คิดว่าการเขียนซ้ำเป็นความล้มเหลวดังที่ Paul Graham กล่าวด้วยตัวเองในบันทึกเรื่อง Beating the Averages: "ในเดือนมกราคมปี 2003 Yahoo เปิดตัวตัวแก้ไขเวอร์ชันใหม่ที่เขียนด้วย C ++ และ Perl เป็นการยากที่จะบอกว่าโปรแกรมนั้นไม่ใช่หรือไม่ แม้ว่าจะเขียนภาษา Lisp ได้นานขึ้นเนื่องจากในการแปลโปรแกรมนี้เป็น C ++ พวกเขาต้องเขียนล่าม Lisp อย่างแท้จริงไฟล์ต้นฉบับของเทมเพลตที่สร้างหน้าเว็บทั้งหมดยังคงอยู่เท่าที่ฉันรู้รหัส Lisp "
protist

viaweb ไม่ได้สร้างต้นแบบด้วยเสียงกระเพื่อมทั่วไปเพื่อที่จะเขียนซ้ำในภาษาอื่น c ++ ผู้ผลิตตั้งใจให้เขียนและดำเนินการด้วยเสียงกระเพื่อมเนื่องจากเหตุผลที่ชัดเจนหลายประการที่ระบุไว้โดยเขาพลังภาษารวดเร็วใช่การสร้างต้นแบบและการผลิตที่รวดเร็วเขารู้เสียงกระเพื่อมเป็นอย่างดี ฯลฯ พวกเขาใช้มันด้วยเวอร์ชันที่พวกเขา ได้เขียนด้วยเสียงกระเพื่อมบางส่วนของมันเป็นเสียงกระเพื่อมจริงๆ หลังจากได้รับมันพวกเขามีตามข่าวลือเขียนใหม่ฉันไม่แน่ใจ มันเป็นทางเลือกของผู้ได้รับเจ้าอาจจะเปลี่ยนเป็น vbasic หรือ pascal fortran
sçuçu

2

คุณสามารถค้นหาข้อมูลบางอย่างเกี่ยวกับการใช้เครื่องมือสำหรับเว็บแอปพลิเคชัน Lisp ได้ในคำถามนี้นี้

นอกจากนี้ยังอาจคุ้มค่าที่จะได้ฟังStack Overflow Podcast 27ที่พวก Reddit พูดคุยเกี่ยวกับประสบการณ์ของพวกเขาในการรันเว็บไซต์บน Lisp (และเปลี่ยนเป็น Python)


2

ความคิดเห็นแตกต่างกันไป ภูมิปัญญาทั่วไปคือใช้ภาษาอื่นดีกว่าหรือใช้เว็บสแต็กอื่นเช่น LAMP, .NET, Ruby on Rails, Java ที่รู้จักกันดีโครงการเว็บที่ประสบความสำเร็จในการกระเพื่อมพอลเกรแฮมViaweb Redditถูกนำมาใช้ครั้งแรกในเสียงกระเพื่อม แต่แล้วก็เปลี่ยนไปหลาม ถ้าคุณตัดสินใจที่จะใช้เสียงกระเพื่อมลองหนังสือ Seibel: การปฏิบัติ Common เสียงกระเพื่อม


1
มีโอกาสที่คุณจะเพิ่ม FUD อีกเล็กน้อยในโพสต์ของคุณหรือไม่?
jrockway

@ ยูวัลพูดถูก นี่คือภูมิปัญญาทั่วไป Reddit เปลี่ยนไปแล้ว ฉันคิดว่าโพสต์กำลังถามว่ามีความจริงเบื้องหลังภูมิปัญญาร่วมกันหรือไม่
Steve Rowe

1
@jrockway และ Steve Rowe - ภูมิปัญญาทั่วไปอยู่ที่นั่นด้วยเหตุผล ฉันไม่คิดว่านี่คือ FUD ฉันไม่เคยได้ยินเกี่ยวกับเว็บไซต์ที่ประสบความสำเร็จที่เขียนด้วย LISP ตั้งแต่ ViaWeb กรุณาแก้ไขฉันถ้าฉันผิด ฉันเชื่อว่าภาษาโปรแกรมควรใช้ตามข้อดีของพวกเขามากกว่าอุดมการณ์
Yuval F

2

หน้าตาเหมือนมาก Orbitz เป็นหรือเขียนในเสียงกระเพื่อม


0

ลองดู Allegro Common Lisp มีไลบรารีบางแห่งรวมถึงเว็บเซิร์ฟเวอร์สำหรับการพัฒนาเว็บโดยเฉพาะ

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