1 คะแนน โดย GN⁺ 2024-11-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

โปรเจกต์ λ-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 ความคิดเห็น

 
GN⁺ 2024-11-10
ความคิดเห็นจาก Hacker News
  • มีการพูดถึงแนวคิดที่คล้ายกับ BitGrid แต่เป็นคนละแนวคิด โดยจินตนาการถึงบิตที่เดินหน้าแบบขนานในฐานะการทำให้ FPGA เรียบง่ายลงจนถึงที่สุด แนวคิดนี้อาจมีหรือไม่มีประโยชน์ในแง่การมอบพลังระดับ Petaflops ให้กับคนทั่วไปก็ได้ พลังงานที่ DFF ใช้ใน ASIC เป็นประเด็นสำคัญ

    • พบ Von Neumann cellular automata และ Nobili cellular automata แต่ก็รู้สึกผิดหวังที่ดูเหมือนจะมีโอกาสค้นพบสิ่งใหม่ในส่วนนี้ของวิทยาการคอมพิวเตอร์ไม่มากนัก
    • FSA กำหนดพื้นที่ของเซลล์ที่มีขนาดไม่สิ้นสุด และ FSA ทั้งหมดก็เหมือนกันในแง่ของฟังก์ชันเปลี่ยนสถานะหรือชุดของกฎ
  • งานวิศวกรโปรเจกต์ด้านระบบอัตโนมัติอาจดูสนุกหรือคุ้นเคยได้ functional block diagram คือการนำ functional block มาเชื่อมต่อกันด้วยสาย และลำดับของบล็อกจะกำหนดลำดับการทำงาน บล็อกอาจเป็นฟังก์ชันในตัวของเอนจินหรือเป็นคอมโพสิตก็ได้

    • ในแต่ละ control cycle ไดอะแกรมจะถูกรันหนึ่งครั้ง และแม้อินพุตจะไม่เปลี่ยน แต่ละบล็อกก็ยังถูกรันหนึ่งครั้งเสมอ
    • ลอจิกควบคุมตั้งแต่โรงเบียร์ไปจนถึงโรงงานปิโตรเคมีถูกนำไปใช้แบบนี้
  • ภาษานี้ตอนนี้ Turing-complete แล้ว แต่ใช้งานยากมาก จึงละเมิดกฎการออกแบบข้อที่ 2 และ Lambda Diagrams ก็หยุดอยู่ที่ขั้นที่ 1

  • สิ่งลักษณะนี้เคยทำใน Labview มาแล้ว แต่เดินหน้าต่อได้ยาก และในซอฟต์แวร์อย่าง Max ก็เคยทำเช่นกัน แต่จะซับซ้อนอย่างรวดเร็ว

  • เคยสนใจข้อกำหนดเชิงรูปแบบแบบกราฟิกสำหรับ Petri Nets คิดว่าถ้ามีการแสดงผลแบบกราฟิก วิศวกรน่าจะใช้ formal methods กันมากขึ้น แต่พอเอา Petri Nets ให้ดู พวกเขากลับหมดความสนใจ

    • ก่อนจะเลิกทำ PhD ที่ University of York เคยใช้ RoboChart และ RoboSim และกำลังทำโปรเจกต์เพื่อปรับให้เหมาะกับโลกของเครือข่ายและเซิร์ฟเวอร์มากขึ้น
  • มีความเห็นว่าขอบเขตของภาษาการเขียนโปรแกรมที่ไม่ใช้ภาษาเชิงถ้อยคำนั้นยังไม่ได้รับการสำรวจ

  • ทำให้นึกถึง "Wireworld" ในปี 1987 และเคยเห็นการสร้างตัวนับ 8 บิตใน Wireworld มาแล้ว

  • ในแง่กระบวนทัศน์การเขียนโปรแกรม คล้ายกับ Funciton