- CIEL เป็น Lisp แบบขยายที่สร้างบน Common Lisp 100% และชูจุดเด่นการจัดมาให้แบบ “batteries included” พร้อมเครื่องมือพื้นฐาน
- สคริปต์รันได้ด้วย shebang
#!/usr/bin/env ciel และสามารถใช้ การอ่าน JSON กับ HTTP GET ได้โดยตรงจากโค้ด Lisp
- ตัวอย่างใช้
http:get เพื่อเรียก https://fakestoreapi.com/products?limit=5 แล้วใช้ json:read-json อ่านผลลัพธ์ก่อนพิมพ์ออกด้วย print
- ตัวอย่างการรัน
./myscript.lisp แสดงให้เห็นการใช้งานสคริปต์ CIEL เหมือนไฟล์ที่รันได้ทั่วไป
- ส่วนที่เหลือของเอกสารบนเว็บต้องใช้ JavaScript และหากดูโดยไม่ใช้ JavaScript ต้องไปที่ GitHub repository
ลักษณะพื้นฐานของ CIEL
- CIEL เป็นภาษาที่แนะนำตัวเองว่าเป็น “Lisp แบบขยาย”
-
สร้างบน Common Lisp
- สร้างบน Common Lisp 100%
- มีจุดเด่นเป็นการจัดมาให้แบบ batteries included พร้อมเครื่องมือพื้นฐาน
ตัวอย่างการรันสคริปต์
- โค้ดตัวอย่างกำหนดตัวรัน
ciel เป็น shebang
#!/usr/bin/env ciel
(print
(json:read-json
(http:get "https://fakestoreapi.com/products?limit=5")))
- ใช้
http:get ส่งคำขอ HTTP แล้วใช้ json:read-json อ่าน JSON ที่ตอบกลับก่อนพิมพ์ออกด้วย print
- คำสั่งรันมีดังนี้
$ ./myscript.lisp
การเข้าถึงเอกสารและรีโพซิทอรี
- ลิงก์โปรเจ็กต์มีให้ที่ GitHub
- ส่วนที่เหลือของเอกสารบนเว็บต้องใช้ JavaScript และมีคำแนะนำว่าหากไม่สามารถใช้ JavaScript ได้ ให้ไปดูที่ GitHub repository
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การที่คอมโพเนนต์ที่มีเอกสารมาตรฐานชัดเจนถูกมัดรวมมาให้ใช้ได้ทันทีเหมือนเป็นส่วนหนึ่งของภาษาแกนหลัก แถมยังมีชื่อเท่ ๆ ด้วยนั้นสำคัญจริง ๆ
ชอบนะ และดูเหมือนอาจกลายเป็นเป้าหมายมาตรฐานใหม่ได้ด้วย ตอนนี้เหลือแค่มาสคอตหรือโลโก้ดี ๆ สักอย่าง
ชอบแนวทางนี้ คิดว่าจะเป็น “Lisp อีกตัวหนึ่ง” ซึ่งถึงจะเจ๋ง แต่ก็คงไม่ได้อยากหยิบมาใช้ทันที
การขยายและปรับปรุงสิ่งที่มีอยู่แล้วอาจยากกว่าและสนุกน้อยกว่าการเริ่มใหม่ แต่มีคุณค่ากว่ามาก ผมใช้ Common Lisp อยู่แล้ว และสิ่งนี้ดูเหมือนช่วยลดความประหลาดเฉพาะตัวของมันลงได้บ้าง โดยเฉพาะสำหรับผู้เริ่มต้นหรือโปรเจกต์เล็ก ๆ
ทุกครั้งที่มีการพูดถึง Lisp ที่เร็วและสะดวก ผมอยากหยิบ Joker(https://github.com/candid82/joker) ขึ้นมาพูด
มันเป็นไวยากรณ์แบบ Clojure ที่เขียนด้วย Go ผมไม่ได้เกี่ยวข้องอะไรด้วย แต่คิดว่ามันยอดเยี่ยมจริง ๆ ถ้าเขียนตัวอย่าง CIEL ด้วย Joker จะเป็น
(prn {:a 1 :b 2 :c 3})และ Gist สำหรับดาวน์โหลด·ติดตั้ง·รันอยู่ที่ https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...การรันสคริปต์ทั้งหมดใช้เวลา 2.1 วินาที ส่วนการรันตัวอย่างเองใช้เวลา 0.007 วินาที
ดีใจที่ได้เห็นแนวทางที่ Babashka(https://babashka.org/) เลือกใช้เกิดขึ้นในโลกของ Common Lisp แล้ว
ดูบน Safari ก็มีคำเตือน Javascriptแบบเดียวกัน ผมไม่ได้เปิดส่วนขยายอะไรเลย
ลองตรวจด้วย Chrome แล้ว นอกจากเรื่องนั้นก็ดูเป็นรูปแบบที่อยากใช้พอดี ไลบรารีมาตรฐานของ CL รู้สึกเหมือนมีภาระมากไปนิดอยู่แล้ว แต่ถ้าจะไปแนว “มีแบตเตอรี่มาให้ครบ” สิ่งอย่าง Alexandria, Bordeaux ก็ยังขาดอยู่ เลยชอบตัวเลือกนี้ มันให้ความรู้สึกของ “แนวปฏิบัติที่ดี” หรือการทำให้เป็นมาตรฐานในอีโคซิสเต็ม CL ที่ค่อนข้างกระจัดกระจาย
ยอดเยี่ยม ส่วนตัวผมใช้ image ที่ใส่ Alexandria, Serapeum, Dexador, Bordeaux Threads และเครื่องมือเกี่ยวกับ JSON ไว้ด้วยอยู่แล้ว การมีอะไรสักอย่างที่คนอื่น ๆ ใช้เป็นเป้าหมายคล้ายกันน่าจะสะดวก
ดูมีโอกาสสำเร็จมากกว่าข้อเสนอ CDR ที่คุยกันมากเกินไป หรือ CL21 ที่มาก่อนหน้านั้นด้วย อยากรู้เหมือนกันว่ามี reader macro ที่เปิดไว้เป็นค่าเริ่มต้นเยอะไหม
เพราะไม่อยากแตะ readtable เป็นค่าเริ่มต้น วิธีเปิด shell passthrough ใน editor REPL ดูด้านล่างได้
1: https://github.com/Neronus/Clesh
ถ้ามี wrapper สำหรับบิลด์คอร์ของ ncurses และ SDL ก็คงเป็นไปได้ไหมว่าในสักวัน lem จะรันบน CIEL ได้ตรง ๆ และเกิดสภาพแวดล้อม Lisp จริง ๆ ขึ้นมา
https://news.ycombinator.com/item?id=41357409
ดูเหมือนจะต่างจาก Ciel(https://pldb.io/concepts/ciel.html) ซึ่งเป็น Lisp อีกตัวที่ Ron Garret ทำไว้ในปี 2010 เขายังเป็นนักวิทยาศาสตร์จรวดด้วย(https://flownet.com/ron/)
คอมไพล์เป็นไบนารีได้ง่ายไหม? ดูเหมือนใช้วิธีมาตรฐานของ CL ก็น่าจะได้
การที่
CIEL custom REPLมีเชลล์ passthroughอย่าง!lsเป็นฟีเจอร์ที่เจ๋งผู้เขียนยังไม่มองว่ามัน “พร้อมแล้ว” หรือ “ดีพอแล้ว” แต่ก็พัฒนาไปมากพอสมควรแล้ว ยังมี POSIX shell อย่าง https://github.com/bradleyjensen/shcl ด้วย และเช่นเคย รายการเพิ่มเติมดูได้ที่ https://github.com/CodyReichert/awesome-cl#shells-shells-int...
อยากเพิ่มคำสั่ง
ciel buildสงสัยเหมือนกันว่า Python เป็นฝั่งที่แปลกในเรื่องการทำ REPL หรือเปล่า ผมคุ้นกับ REPL แค่ Python กับ e-lisp
Ctrl+Zยังขาดอะไรไปหรือ?ดูเหมือนเป็นSBCL ที่เพิ่มไลบรารีเข้าไป ผู้เขียนคือ vindarel อยู่ใน HN
เวลาจะเริ่มโปรเจกต์ใหม่ เมื่อต้องโต้ตอบกับโลกภายนอก หรือเมื่ออยากเขียนของเล็ก ๆ แล้วอัปขึ้นเซิร์ฟเวอร์โดยไม่ต้องเจอความซับซ้อนของ Python มันช่วยประหยัดเวลาได้มาก แน่นอนว่า Django แทนที่ได้ยาก แต่ผมก็เริ่มทำแดชบอร์ด DB อัตโนมัติสำหรับงาน CRUD แล้ว และแม้ยังไม่เปิดเผยต่อสาธารณะ แต่ก็กำลังคืบหน้า
ผมค่อย ๆ ผสาน CL เข้าไปในงานลูกค้า และ CIEL ก็เป็นอีกเครื่องมือหนึ่งเพื่อจุดประสงค์นั้น เพื่อให้ได้ใช้ CL จริง ๆ โปรเจกต์ของผมไม่ได้จำเป็นต้องมีพลังพิเศษของ CL เสมอไป แต่ผมอยากได้พลังนั้นสำหรับการพัฒนา·ดีพลอย·มอนิเตอร์
วันนี้แก้ปัญหาหลายอย่างและปล่อย v0.2 แล้ว: https://github.com/ciel-lang/CIEL/releases/tag/v02 ใจความสำคัญคือการติดตั้ง CIEL ควรง่ายขึ้นมาก โดยเฉพาะบน Mac ตอนนี้ dependency ของระบบลดลงไปมากแล้ว
ถ้ายังติดตั้งบนบางแพลตฟอร์มได้ยาก ขอให้ส่งรายละเอียดมาใน issue ด้วย สรุปคือหวังว่า CIEL จะทำให้เส้นทาง CL ของพวกคุณง่ายและราบรื่นขึ้น คุณคงนึกไม่ออกหรอกว่าผมใช้เวลานานแค่ไหนกว่าจะค้นพบเรื่องต่าง ๆ เหล่านี้ ตอนนี้มันพร้อมและถูกแพ็กไว้ให้แล้ว :-]