Λ-2D: สำรวจการวาดภาพในฐานะภาษาการเขียนโปรแกรม
(media.mit.edu)โปรเจกต์ λ-2D: สำรวจภาพวาดในฐานะภาษาการเขียนโปรแกรม
-
ภาพรวม: โปรเจกต์ λ-2D เป็นงานวิจัยที่สำรวจภาษาแบบใหม่ซึ่งสามารถเขียนโปรแกรมผ่านภาพวาดได้ โดยออกแบบบนพื้นฐานแนวคิดของ lambda calculus เพื่อให้สามารถเขียนโค้ดด้วยภาพได้
-
ภาษาการเขียนโปรแกรมแบบไม่ใช้ภาษา: มีภาษาการเขียนโปรแกรมแบบไม่ใช้ภาษาอยู่แล้ว เช่น Befunge และ asciidots ที่อิงกับ ASCII รวมถึง Piet ที่อิงกับภาพ โดยภาษาใหม่นี้ได้รับแรงบันดาลใจจากภาษาเหล่านั้น
-
เป้าหมาย:
- ใช้ประโยชน์จากข้อดีของการเขียนโปรแกรมด้วยภาพ เพื่อใส่ความสามารถที่ภาษาซึ่งอิงข้อความทำไม่ได้
- ปรับจำนวนคำสั่งไม่ให้น้อยหรือมากเกินไป เพื่อให้ใช้งานได้ง่ายขึ้น
- ทำให้สามารถวาดโปรแกรมที่ดึงดูดสายตา เพื่อให้ชื่นชมได้ราวกับงานศิลปะ
-
lambda calculus: lambda calculus มีคำสั่งเพียงสองอย่างคือการประยุกต์ใช้ฟังก์ชันและการนิยามฟังก์ชัน และได้มีการพัฒนาสัญลักษณ์ที่เหมาะกับแต่ละคำสั่ง
-
การไหลของข้อมูล: ออกแบบให้ข้อมูลไหลผ่านเส้นที่เชื่อมสัญลักษณ์เข้าด้วยกัน และเพิ่มสัญลักษณ์เสริมเพื่อให้ใช้งานสะดวกขึ้น
-
เฟรมและองค์ประกอบ GUI: กำหนดพื้นที่เฉพาะบนแคนวาสเป็นเฟรมเพื่อให้ใช้ข้อมูลได้ และเพิ่มองค์ประกอบ GUI อย่างเช่น slider เพื่อให้ควบคุมโปรแกรมแบบไดนามิกได้
-
ซอฟต์แวร์เอดิเตอร์: พัฒนาเอดิเตอร์ที่ช่วยให้ผู้ใช้วาดโปรแกรมแบบดิจิทัลได้ โดยใช้สัญลักษณ์ขนาด 5x5 พิกเซล จึงวางลงบนแคนวาสแบบกริดได้ง่าย
-
การแก้ปัญหาเอาต์พุต: ด้วยธรรมชาติของภาษาฟังก์ชันแบบบริสุทธิ์ การทำคำสั่ง "เอาต์พุต" จึงทำได้ยาก เพื่อแก้ปัญหานี้จึงนิยามใหม่เป็นการส่งแคนวาสเข้าไปในฟังก์ชัน แล้วรับแคนวาสที่เปลี่ยนแปลงแล้วกลับมา
-
การพัฒนา parser: มีการพัฒนา parser ที่แปลงโปรแกรม λ-2D เป็น JavaScript ผลลัพธ์มีความซับซ้อนแต่ใช้งานได้จริง
-
ประสบการณ์การเขียนโปรแกรม: ประสบการณ์ในการเขียนโปรแกรมด้วยภาษาใหม่นี้คล้ายกับ Minecraft หรือ Factorio แต่ก็มีคุณค่าในเชิงงานวิจัย
-
การทำภาพให้เห็นและเสียง: มีการสำรวจความเป็นไปได้ในการแสดงผลการทำงานของโปรแกรมในเชิงภาพ และทำให้สามารถฟังโปรแกรมที่กำลังทำงานได้ราวกับเป็นดนตรี
-
แผนในอนาคต: มีแผนจะปรับปรุง λ-2D และออกแบบภาษาโปรแกรมใหม่ที่สามารถผสานเข้ากับระบบการคำนวณผ่านภาพวาดได้
-
เดโมออนไลน์: สามารถทดลองใช้ λ-2D เวอร์ชันเบต้าได้ทางออนไลน์ และซอร์สโค้ดของ parser กับเอดิเตอร์จะเผยแพร่บน GitHub ในเร็ว ๆ นี้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มีการพูดถึงแนวคิดที่คล้ายกับ BitGrid แต่เป็นคนละแนวคิด โดยจินตนาการถึงบิตที่เดินหน้าแบบขนานในฐานะการทำให้ FPGA เรียบง่ายลงจนถึงที่สุด แนวคิดนี้อาจมีหรือไม่มีประโยชน์ในแง่การมอบพลังระดับ Petaflops ให้กับคนทั่วไปก็ได้ พลังงานที่ DFF ใช้ใน ASIC เป็นประเด็นสำคัญ
งานวิศวกรโปรเจกต์ด้านระบบอัตโนมัติอาจดูสนุกหรือคุ้นเคยได้ functional block diagram คือการนำ functional block มาเชื่อมต่อกันด้วยสาย และลำดับของบล็อกจะกำหนดลำดับการทำงาน บล็อกอาจเป็นฟังก์ชันในตัวของเอนจินหรือเป็นคอมโพสิตก็ได้
ภาษานี้ตอนนี้ Turing-complete แล้ว แต่ใช้งานยากมาก จึงละเมิดกฎการออกแบบข้อที่ 2 และ Lambda Diagrams ก็หยุดอยู่ที่ขั้นที่ 1
สิ่งลักษณะนี้เคยทำใน Labview มาแล้ว แต่เดินหน้าต่อได้ยาก และในซอฟต์แวร์อย่าง Max ก็เคยทำเช่นกัน แต่จะซับซ้อนอย่างรวดเร็ว
เคยสนใจข้อกำหนดเชิงรูปแบบแบบกราฟิกสำหรับ Petri Nets คิดว่าถ้ามีการแสดงผลแบบกราฟิก วิศวกรน่าจะใช้ formal methods กันมากขึ้น แต่พอเอา Petri Nets ให้ดู พวกเขากลับหมดความสนใจ
มีความเห็นว่าขอบเขตของภาษาการเขียนโปรแกรมที่ไม่ใช้ภาษาเชิงถ้อยคำนั้นยังไม่ได้รับการสำรวจ
ทำให้นึกถึง "Wireworld" ในปี 1987 และเคยเห็นการสร้างตัวนับ 8 บิตใน Wireworld มาแล้ว
ในแง่กระบวนทัศน์การเขียนโปรแกรม คล้ายกับ Funciton