ฉันพยายามนึกภาพระบบทางกายภาพอัตโนมัติง่ายๆ (เช่นลูกตุ้มแขนหุ่นยนต์ ฯลฯ ) ใน Haskell บ่อยครั้งที่ระบบเหล่านั้นสามารถอธิบายได้ด้วยสมการเช่น
df/dt = c*f(t) + u(t)
ที่u(t)
แสดงถึง 'การควบคุมอัจฉริยะ' บางประเภท ระบบเหล่านี้ดูเหมือนจะเข้ากันได้ดีในกระบวนทัศน์การเขียนโปรแกรมปฏิกิริยาเชิงฟังก์ชัน
ดังนั้นผมจึงคว้าหนังสือ "Haskell ของโรงเรียนในการแสดงออก" โดยพอลฮูดักและพบว่าเฉพาะโดเมนภาษา "FAL" (สำหรับฟังก์ชั่นนิเมชั่น Language) ที่นำเสนอมีการใช้งานได้จริงค่อนข้าง pleasently สำหรับระบบของเล่นที่เรียบง่ายของฉัน (แม้ว่าการทำงานบางอย่างสะดุดตาintegrate
, ดูเหมือนจะขี้เกียจไปหน่อยสำหรับการใช้งานที่มีประสิทธิภาพ แต่แก้ไขได้ง่าย)
คำถามของฉันคืออะไรที่เป็นทางเลือกสำหรับผู้ใหญ่ที่ทันสมัยได้รับการดูแลเป็นอย่างดีได้รับการปรับแต่งประสิทธิภาพสำหรับแอปพลิเคชันขั้นสูงหรือแม้แต่ในทางปฏิบัติในปัจจุบัน
หน้าวิกินี้แสดงตัวเลือกต่างๆสำหรับ Haskell แต่ฉันไม่ชัดเจนเกี่ยวกับประเด็นต่อไปนี้:
สถานะของ "ปฏิกิริยา" โครงการจาก Conal Eliott ซึ่งเป็น (ตามที่ฉันเข้าใจ) หนึ่งในผู้คิดค้นกระบวนทัศน์การเขียนโปรแกรมนี้ดูไม่ค่อยดี ฉันชอบรหัสของเขา แต่ฉันควรลองทางเลือกอื่นที่ทันสมัยกว่านี้ไหม อะไรคือความแตกต่างหลักระหว่างพวกเขาในแง่ของไวยากรณ์ / ประสิทธิภาพ / ความเสถียรของรันไทม์
หากต้องการอ้างอิงจากการสำรวจในปี 2554 ตอนที่ 6 " ... การใช้งาน FRP ยังไม่มีประสิทธิภาพเพียงพอหรือสามารถคาดเดาได้ในประสิทธิภาพเพียงพอที่จะใช้อย่างมีประสิทธิภาพในโดเมนที่ต้องมีการรับประกันเวลาแฝง ... " แม้ว่าการสำรวจจะแนะนำการเพิ่มประสิทธิภาพที่น่าสนใจ แต่เนื่องจาก FRP อยู่ที่นั่นมานานกว่า 15 ปีแล้วฉันรู้สึกว่าปัญหาด้านประสิทธิภาพนี้อาจเป็นสิ่งที่ยากมากหรือแม้กระทั่งโดยเนื้อแท้ที่จะแก้ไขได้อย่างน้อยภายในไม่กี่ปี นี่คือเรื่องจริง?
นักเขียนคนเดียวกันของการสำรวจพูดคุยเกี่ยวกับเวลา "รั่วไหล" ของเขาในบล็อก ปัญหาเฉพาะของ FRP หรือสิ่งที่เราพบโดยทั่วไปเมื่อเขียนโปรแกรมด้วยภาษาที่บริสุทธิ์และไม่เข้มงวด? คุณเคยพบว่ามันยากเกินไปไหมที่จะทำให้ระบบที่ใช้ FRP เสถียรเมื่อเวลาผ่านไปถ้ามีประสิทธิภาพไม่เพียงพอ?
นี่ยังเป็นโครงการระดับการวิจัยอยู่หรือไม่? ผู้คนเช่นวิศวกรโรงงานวิศวกรหุ่นยนต์วิศวกรการเงิน ฯลฯ ใช้สิ่งเหล่านี้จริงหรือไม่ (ในภาษาใดก็ตามที่เหมาะกับความต้องการของพวกเขา)
แม้ว่าโดยส่วนตัวแล้วฉันชอบการใช้งาน Haskell แต่ฉันก็เปิดรับข้อเสนอแนะอื่น ๆ ตัวอย่างเช่นการใช้งาน Erlang จะเป็นเรื่องสนุกเป็นพิเศษ - จากนั้นก็จะมีกระบวนการเซิร์ฟเวอร์ที่ชาญฉลาดปรับตัวได้และเรียนรู้ด้วยตนเอง!