ในโลกของการเขียนโปรแกรมแบบภาพและการพัฒนาแบบ flow-based มีโครงการใหม่ที่กำลังได้รับความสนใจจากแนวทางที่สร้างสรรค์ในการแก้ไขข้อจำกัดด้านการทำงานแบบขนาน Erlang-RED ที่พัฒนาโดยสมาชิกชุมชน Towaway69 มีเป้าหมายที่จะแทนที่ backend ของ Node-RED ที่ใช้ JavaScript ด้วย Erlang ซึ่งเป็นภาษาที่ออกแบบมาเฉพาะสำหรับการทำงานแบบขนานและการส่งข้อความ
การผสมผสานการเขียนโปรแกรมแบบภาพกับโมเดลการทำงานแบบขนานของ Erlang
Erlang-RED ใช้ประโยชน์จากอินเทอร์เฟซที่ใช้งานง่ายของ Node-RED ในขณะที่แทนที่ backend ด้วยความสามารถในการทำงานแบบขนานอันทรงพลังของ Erlang โครงการนี้แก้ไขข้อจำกัดพื้นฐานอย่างหนึ่งของ Node-RED นั่นคือลักษณะการทำงานแบบ single-threaded ของ JavaScript ด้วยการใช้ backend ของ Erlang ที่เข้ากันได้กับ flow ของ Node-RED ที่มีอยู่แล้ว นักพัฒนาสามารถได้รับประโยชน์จากการทำงานแบบขนานที่แท้จริงโดยไม่ต้องเสียสละความเรียบง่ายของการเขียนโปรแกรมแบบภาพ
แนวคิดคือการใช้ประโยชน์จากการส่งข้อความของ Erlang และกระบวนการที่มี overhead ต่ำเพื่อให้มีการทำงานแบบขนานที่แท้จริงใน flow ของ Node-RED นอกจากนี้ยังนำการเขียนโปรแกรมแบบ flow-based ที่ใช้โค้ดน้อยมาสู่ Erlang
แนวทางนี้อาจมีคุณค่าอย่างยิ่งสำหรับแอปพลิเคชันที่ต้องการการทำงานแบบขนานสูง เช่น ระบบ IoT, data pipeline หรือแอปพลิเคชันแบบกระจาย นักพัฒนาได้สร้าง node หลักจำนวนมากของ Node-RED รวมถึง http in/out, MQTT, การดำเนินการกับไฟล์ และ node ควบคุม flow เช่น switch, join และ split
โหนดที่รองรับใน Erlang-RED (รายการบางส่วน)
โหนด | สถานะ |
---|---|
catch | จับข้อยกเว้นของโหนดที่เลือกและโฟลว์ทั้งหมด |
change | รองรับการทำงานหลายอย่าง, รองรับ JSONata พื้นฐาน |
debug | รองรับการดีบักข้อความทั้งหมด |
delay | รองรับการหน่วงเวลาแบบคงที่ |
exec | การประมวลผลคำสั่งในโหมด spawn พร้อมรองรับการกำหนดเวลาหมด |
http in | ทำงานสำหรับคำขอ GET และ POST |
http request | รองรับคำขอพื้นฐาน |
mqtt in/out | ควรทำงานได้ |
split | รองรับการแยกอาร์เรย์ |
switch | ทำงานได้ |
template | การใช้เทมเพลต Mustache ทำงานได้ |
ข้อจำกัด:
- ไม่รองรับบริบท (flow, node, global)
- การใช้งาน JSONata มีข้อจำกัด
- ไม่รองรับโหนดฟังก์ชัน JavaScript
![]() |
---|
ภาพหน้าจอของอินเทอร์เฟซ Node-RED สำหรับการส่งออกโหนด ที่แสดงให้เห็นถึงสภาพแวดล้อมการเขียนโปรแกรมแบบภาพที่ Erlang-RED พัฒนาต่อยอด |
ความท้าทายในการนำการเขียนโปรแกรมแบบภาพมาใช้
การสนทนาในชุมชนได้เน้นถึงความท้าทายหลายประการที่การเขียนโปรแกรมแบบภาพอย่าง Erlang-RED กำลังเผชิญ ปัญหาสำคัญประการหนึ่งคือการขาดเครื่องมือสำหรับการควบคุมเวอร์ชันและการเปรียบเทียบแบบภาพ ไม่เหมือนกับโค้ดที่เป็นข้อความที่เครื่องมืออย่าง Git สามารถแสดงการเปลี่ยนแปลงที่แม่นยำ flow แบบภาพมักถูกเก็บเป็น JSON พร้อมกับพิกัดที่ทำให้การเปรียบเทียบที่มีความหมายเป็นเรื่องยาก
ตามที่ผู้แสดงความคิดเห็นคนหนึ่งได้กล่าวไว้ สิ่งนี้สร้างอุปสรรคสำหรับการพัฒนาแบบร่วมมือในสภาพแวดล้อมแบบภาพ เมื่อพิกัดของ node เปลี่ยนไป (ซึ่งไม่มีผลกระทบต่อตรรกะ) สิ่งเหล่านี้จะปรากฏเป็นการเปลี่ยนแปลงโค้ดในระบบควบคุมเวอร์ชัน ซึ่งผสมการเปลี่ยนแปลงเชิงความหมายกับการเปลี่ยนแปลงที่เป็นภาพเท่านั้น ทำให้การตรวจสอบโค้ดและการทำงานร่วมกันมีความท้าทายมากกว่าการเขียนโปรแกรมแบบข้อความแบบดั้งเดิม
แม้จะมีความท้าทายเหล่านี้ นักพัฒนาชี้ให้เห็นถึงความสามารถของ Node-RED ในการจัดการกับการบำรุงรักษาโปรแกรมขนาดใหญ่ผ่านคุณสมบัติเช่น link node และ subflow ซึ่งช่วยให้สามารถนำโค้ดกลับมาใช้ใหม่และจัดระเบียบแอปพลิเคชันที่ซับซ้อนได้ดีขึ้น
จุดตัดระหว่างโอเพนซอร์สและปรัชญาด้านลิขสิทธิ์
มีการอภิปรายที่น่าสนใจเกิดขึ้นเกี่ยวกับลิขสิทธิ์ DON'T DO EVIL ที่ไม่ธรรมดาของโครงการ ลิขสิทธิ์นี้ได้รับแรงบันดาลใจจากลิขสิทธิ์ JSONlint ของ Douglas Crockford และได้จุดประกายการถกเถียงเกี่ยวกับความเป็นไปได้และนัยสำคัญของการเพิ่มข้อความเชิงปรัชญาลงในลิขสิทธิ์ซอฟต์แวร์
ผู้แสดงความคิดเห็นบางคนชี้ให้เห็นว่าลิขสิทธิ์ที่ไม่เป็นมาตรฐานสามารถป้องกันการนำไปใช้ในองค์กรและจำกัดการมีส่วนร่วม เนื่องจากมักจะกระตุ้นให้เกิดการตรวจสอบทางกฎหมายในสภาพแวดล้อมขององค์กร คนอื่นๆ ชื่นชมจุดยืนของนักพัฒนาในการทำให้แน่ใจว่างานของพวกเขาจะไม่ถูกใช้ประโยชน์โดยไม่มีค่าตอบแทน
การอภิปรายเรื่องลิขสิทธิ์เผยให้เห็นถึงความตึงเครียดระหว่างอุดมคติของโอเพนซอร์สและความเป็นจริงทางการค้า โดยเฉพาะอย่างยิ่งสำหรับนักพัฒนาอิสระที่ต้องการแบ่งปันงานของพวกเขาในขณะที่ยังคงรักษาการควบคุมบางส่วนเกี่ยวกับวิธีการใช้งานในเชิงพาณิชย์
ทิศทางในอนาคตและโครงการที่คล้ายคลึงกัน
ชุมชนแสดงความสนใจในแนวทางที่คล้ายคลึงกันสำหรับภาษาอื่นๆ โดยมีการกล่าวถึง Py-RED สำหรับ Python และคำถามเกี่ยวกับสภาพแวดล้อมการเขียนโปรแกรมแบบภาพอื่นๆ นักพัฒนายังได้กล่าวถึงแผนการที่จะปรับปรุงเอกสารด้วยตัวอย่างจากโลกแห่งความเป็นจริงมากขึ้นและอาจสร้างวิดีโออธิบายโครงการ
สำหรับผู้ที่สนใจสำรวจ Erlang-RED โครงการนี้มีชุดทดสอบที่ครอบคลุมและความสามารถในการทดสอบหน่วยแบบภาพที่สร้างขึ้นโดยตรงในอินเทอร์เฟซของ Node-RED สิ่งนี้ช่วยให้นักพัฒนาสามารถทำให้แน่ใจว่าเข้ากันได้กับฟังก์ชันการทำงานดั้งเดิมของ Node-RED ในขณะที่ขยายความสามารถผ่านโมเดลการทำงานแบบขนานของ Erlang
เมื่อการเขียนโปรแกรมแบบภาพยังคงพัฒนาต่อไป โครงการเช่น Erlang-RED แสดงให้เห็นว่าการรวมจุดแข็งของกระบวนทัศน์ที่แตกต่างกันสามารถเอาชนะข้อจำกัดในเครื่องมือที่มีอยู่ได้อย่างไร เปิดโอกาสใหม่ๆ สำหรับนักพัฒนาที่ทำงานกับระบบแบบขนาน