สเปรดชีต "การเขียนโปรแกรม" เป็นประเภทของการเขียนโปรแกรมดาต้าโลว์
เรามีปัญหาทางภาษากับมันเราไม่ควรเรียกมันว่า "การเขียนโปรแกรม" เพราะมันน้อยกว่าที่เราเรียกว่าการเขียนโปรแกรม แต่มันชัดเจนมากกว่าการป้อนข้อมูลไปยังโปรแกรม
การเขียนโปรแกรม Dataflow เป็นสถาปัตยกรรมและระเบียบวินัยที่แอปพลิเคชันเป็นเครือข่ายของโมดูลอิสระพวกเขาส่งข้อความ (ข้อมูล) ซึ่งกันและกัน โมเดลนี้ไม่สามารถใช้ได้กับทุกปัญหาเฉพาะสำหรับปัญหาที่มีแหล่งข้อมูลหรือสตรีม (หรือมีมากกว่านั้น) ซึ่งไปที่เครือข่ายการประมวลผลและสร้างข้อมูล / สตรีมเอาต์พุต ดูรายการด้านล่าง
การเขียนโปรแกรม Dataflow มีหลายประเภทลองมาดูกัน:
- สเปรดชีต: หมายเลขอินพุตจะถูกประมวลผลโดยสูตรจากนั้นจึงแสดงผลลัพธ์ตัวเลขและกราฟ คุณสมบัติพิเศษ: เวลา exectuion คือ "one-shot" เมื่อค่าอินพุต (คอมโพเนนต์) เปลี่ยนแปลงส่วนที่เหมาะสมของกราฟการประมวลผลจะทำงานอีกครั้งและสร้างเอาต์พุต
- Unix pipe: เชลล์เรียกใช้งานหลายโปรแกรมและลิงก์ stdout-> stdin คุณสมบัติพิเศษ: อนุญาตให้ทำการเชื่อมโยงแบบท่อได้เท่านั้นกราฟเป็นคิวเดียว
- การดำเนินการแบบซิงโครไนซ์: มีนาฬิกาซึ่งทำให้เกิดการประมวลผลของเฟรมหรือตัวอย่างในความถี่ที่ระบุ ทุกองค์ประกอบจะทำงานหนึ่งรอบนาฬิกา ตัวอย่างระบบประมวลผลภาพและเสียงจะทำงานในอัตราเฟรม / ตัวอย่างที่กำหนด
- การทำงานแบบอะซิงโครนัส: กราฟไม่ได้ใช้งานจนกว่าจะมีเหตุการณ์ภายนอกเกิดขึ้น จากนั้นจะประมวลผลเหตุการณ์สร้างเอาต์พุตบางส่วน (หรือไม่) และไปที่สถานะว่าง
กลับไปที่คำถามของคุณ: ฉันคิดว่าใช่มันเป็นความคิดที่ดีที่จะเผยแพร่แอปพลิเคชัน dataflow เป็นแอพแบบสแตนด์อโลน ฉันทำไปแล้ว สองครั้ง
ฉันและเพื่อนของฉันได้สร้างระบบ DF ต้นแบบสำหรับระบบอัตโนมัติในบ้าน เราไม่มีเครื่องมือแก้ไขกราฟดังนั้นแอปไม่สามารถแก้ไขได้โดยผู้ใช้พารามิเตอร์บางอย่างถูกเก็บไว้ในไฟล์ปรับแต่ง แต่ไม่มีอะไรอื่น เรามีภาษาสคริปต์ DF ซึ่งเป็นรหัส "คอมไพล์" ถึง C ++ (รายการการสร้างส่วนประกอบและคำจำกัดความของข้อความ) ซึ่งได้รับการคอมไพล์ไปยังไฟล์สั่งการแบบเนทีฟ โมดูลคือคลาส C ++ (คลาสอื่น ๆ เพียงเพื่อรับข้อมูลบางอย่างเกี่ยวกับระบบของเรา: ข้อความ, ผู้จัดจำหน่าย, ส่วนประกอบ (นามธรรม), พอร์ต (นามธรรม), ConsumerPort, ProducerPort)
นอกจากนี้เรายังประหลาดใจกับข้อได้เปรียบของระบบ DF ที่ให้บริการ: เราได้สร้างแอปอนุกรมดมกลิ่นภายใน 2 นาทีหรือเราได้จัดทำโปรแกรมทดสอบในสถานที่ซึ่งกะพริบหลอดไฟทีละรายการ (ไม่มีเอกสารประกอบ บน ID ฮาร์ดแวร์) เราได้สร้างส่วนประกอบ MIDI และ joypad เพื่อความสนุกสนานฉันยังได้สร้างอวัยวะที่เบาอีกด้วย (ดูhttp://homeaut.com/under_construction/ )
ฉันสามารถเห็นปัญหาได้เพียงครั้งเดียวในกรณีของสเปรดชีต: เนื่องจากทุกหมายเลขและสูตร (อาจเป็น: ทุกเซลล์) เป็นองค์ประกอบกราฟของคุณจะไม่เป็นที่สิ้นสุด เมื่อคุณเพิ่มบรรทัดลงในแอปผลรวม () อย่างง่ายของคุณแสดงว่ากราฟดาต้าโฟลว์เปลี่ยนไป ดังนั้นคุณต้อง "reprogramming" กราฟในเวลาทำงานหรือเราควรเรียกมันว่า "metaprogramming" ใน Excel แมโครจะทำงานได้ แต่จากนั้นเราปล่อยความบริสุทธิ์ของดาต้าโฟลว์
ฉันมีทางออกที่ไม่ดีเกินไป แต่ไม่สมบูรณ์แบบ ฉันทำสเปรดชีตเป็นแอป AJAX ที่มีแบ็กเอนด์ PHP แกนแนวตั้งคือเวลา (วัน) เส้นเป็นส่วนประกอบ มีส่วนประกอบเช่นอินพุต (บรรทัดสามารถแก้ไขได้โดยผู้ใช้) ค่าเฉลี่ยแนวตั้งค่าเฉลี่ยแนวนอน / ผลรวมและการคำนวณทางสถิติเฉพาะโดเมนบางรายการ มีปัญหาเดียวเท่านั้นคือนี่คือ "หนึ่งมิติ" ตราบใดที่ฉันต้องการเพียงผลรวมและเฉลี่ยและอะไรก็ตามฉันสามารถเพิ่มบรรทัดใหม่และสร้างส่วนประกอบซึ่งคำนวณสิ่งของ แต่มีข้อ จำกัด อย่างมาก: คอลัมน์มักเป็นวัน (ฉันได้สร้าง "มุมมอง" สัปดาห์และเดือนซึ่งแสดงข้อมูลรายวันเป็นผลรวม / เฉลี่ย แต่ก็ยังคงเป็นมิติเดียว) ฉันไม่สามารถแสดงได้มันเป็นการทำงานร่วมกันและต้องการให้แบ็กเอนด์ PHP รัน 7/24 ซึ่งไม่ได้รับการสนับสนุนจากผู้ให้บริการโฮสต์ของฉัน
ดังนั้นโมเดลของฉัน (ซึ่งสามารถอธิบายได้ดีที่สุดว่า: "วันแนวนอน") ไม่สามารถรับมือกับปัญหาแบบอื่นได้
ฉันมีความคิดวิธีการที่จะแก้ปัญหานี้: แท็บ
เมื่อคุณติดขัดใน Excel และต้องสร้างตารางอื่นคุณสามารถใช้พื้นที่ที่แตกต่างบนแท็บเดียวกันหรือเปิดแท็บอื่น นอกจากนี้การอ้างอิงระหว่างแท็บไม่สบายฉันชอบวิธีแรก ฉันคิดว่าแท็บควรจะแสดงบนหน้าจอเดียวกันเช่นหน้าต่างที่ไม่ทับซ้อนกัน
ทุกตารางควรมีแกนการเติบโต: แนวตั้งแนวนอนหรือคงที่ ตารางการเจริญเติบโตในแนวตั้งมีองค์ประกอบของบรรทัด (เช่นเดียวกับสเปรดชีทตามวันของฉัน) ที่คอลัมน์ทั้งหมดมีสูตร "เดียวกัน" ส่วนประกอบแนวนอนมีส่วนประกอบของคอลัมน์ตารางขนาดคงที่ก็เหมือนกับสเปรดชีตใด ๆ
ดังนั้นเมื่อผู้ใช้เพิ่มบรรทัด / คอลัมน์ใหม่บรรทัด / คอลัมน์ใหม่จะมีสูตรเดียวกัน
นอกจากนี้ในสเปรดชีตฉันเกลียดสิ่งที่ฉันต้องการคัดลอกสูตรเดียวกันมาก 1,000 ครั้งถ้าฉันมี 1,000 บรรทัด มันเป็นแหล่งของข้อบกพร่อง (การรักษาสูตรเวอร์ชันเก่าในบางบรรทัด), หน่วยความจำไม่เพียงพอ (การจัดเก็บสูตรเดียวกัน 1000x)
บางทีฉันผิดและมีแนวคิดเรื่องข้อบกพร่องในรุ่นนี้ แต่ฉันหวังว่ามันจะเป็นการกระตุ้นความคิดที่ดี