Spreadsheet "pemrograman" adalah jenis pemrograman aliran data.
Kami memiliki masalah linguistik dengan itu, kita tidak boleh menyebutnya "pemrograman", karena jauh lebih sedikit daripada yang kita sebut pemrograman, tapi itu lebih jelas daripada memasukkan data ke suatu program.
Pemrograman dataflow adalah arsitektur dan disiplin, di mana aplikasi adalah jaringan modul independen, mereka saling mengirim pesan (data). Model ini tidak berlaku untuk setiap masalah, hanya untuk masalah, di mana ada sumber data atau aliran (atau ada lebih banyak), yang masuk ke jaringan pemrosesan, dan menghasilkan data keluaran / aliran. Lihat daftar di bawah.
Pemrograman dataflow memiliki beberapa jenis, mari kita lihat beberapa:
- Spreadsheet: nomor input diproses oleh rumus, lalu hasil angka dan grafik. Karakteristik khusus: waktu exectuion adalah "one-shot", ketika nilai input (komponen) berubah, bagian yang sesuai dari grafik pemrosesan kembali berjalan dan menghasilkan output.
- Unix pipe: shell meluncurkan beberapa program, dan menghubungkan stdout-> stdin. Karakteristik khusus: hanya penautan gaya pipa yang diizinkan, grafik adalah satu antrian.
- Eksekusi tersinkronisasi: ada jam, yang memicu pemrosesan bingkai atau sampel dalam frekuensi yang ditentukan. Setiap komponen berjalan satu kali dalam satu siklus jam. Sistem pemrosesan video dan audio contoh, mereka bekerja pada frame / sample rate yang ditentukan.
- Eksekusi asinkron: grafik dalam keadaan idle, sampai peristiwa eksternal terjadi. Kemudian memproses acara, menghasilkan beberapa output (atau tidak), dan pergi ke keadaan siaga.
Kembali ke pertanyaan Anda: Saya kira ya, sebaiknya mempublikasikan aplikasi dataflow sebagai aplikasi mandiri. Saya sudah membuatnya. Dua kali .
Saya dan teman saya telah membuat sistem DF prototipe untuk otomatisasi rumah. Kami tidak memiliki editor grafik, sehingga aplikasi tidak dapat diedit oleh pengguna, beberapa parameter disimpan dalam file konfigurasi, tetapi tidak ada yang lain. Kami memiliki bahasa skrip DF, yang "dikompilasi" ke kode C ++ (daftar pembuatan komponen dan definisi pesan), yang dikompilasi ke executable asli. Modul-modul tersebut adalah kelas C ++ (kelas lain, hanya untuk mendapatkan beberapa info tentang sistem kami: Pesan, Dispathcer, Komponen (abstrak), Port (abstrak), ConsumerPort, ProducerPort).
Selain itu, kami kagum dengan keunggulan yang diberikan sistem DF: kami telah membuat aplikasi sniffer serial dalam waktu 2 menit, atau kami telah membuat program uji di tempat , yang berkedip lampu satu-per-satu (tidak ada dokumentasi pada ID perangkat keras). Kami telah membuat komponen MIDI dan joypad hanya untuk bersenang-senang, saya juga membuat organ ringan dengannya (lihat http://homeaut.com/under_construction/ ).
Saya hanya dapat melihat satu kesulitan jika spreadsheet: karena setiap angka dan formula (berpotensi: setiap sel) adalah komponen, grafik Anda belum final. Saat Anda menambahkan baris ke aplikasi penjumlahan () sederhana Anda, itu berarti grafik aliran data diubah. Jadi, Anda harus "memprogram ulang" grafik dalam run-time, atau kita harus menyebutnya "metaprogramming". Di Excel, makro akan melakukan pekerjaan itu, tapi kemudian kami kehilangan kemurnian aliran data.
Saya punya solusi yang tidak terlalu buruk tapi tidak sempurna. Saya telah membuat spreadsheet, aplikasi AJAX dengan PHP backend. Sumbu vertikal adalah waktu (hari), garis-garisnya adalah komponen. Ada beberapa komponen, seperti input (garis dapat diedit oleh pengguna), rata-rata vertikal, rata-rata / jumlah horisontal, dan beberapa perhitungan statistik khusus domain. Hanya ada satu masalah dengan itu: ini "satu dimensi". Selama saya hanya ingin jumlah dan rata-rata dan apa pun, saya dapat menambahkan baris baru, dan membuat komponen, yang menghitung barang. Tetapi ada kendala yang kuat: kolom selalu berhari-hari (saya telah membuat "tampilan" minggu dan bulan, yang menampilkan data harian sebagai jumlah / rata-rata, tetapi masih satu dimensi). Saya tidak bisa menunjukkannya, ini kolaboratif dan membutuhkan tugas PHP backend untuk menjalankan 7/24, tidak didukung oleh penyedia host saya.
Jadi, model saya (yang dapat digambarkan sebagai: "hari secara horizontal") tidak dapat menangani masalah jenis lain.
Saya punya ide, bagaimana mengatasi masalah ini: tab .
Ketika Anda terjebak di Excel, dan harus membuat tabel lain, Anda bisa menggunakan area berbeda di tab yang sama, atau membuka tab lain. Juga, referensi antar tab tidak nyaman, saya lebih suka metode pertama. Saya pikir, tab harus ditampilkan pada layar yang sama, seperti jendela yang tidak tumpang tindih.
Setiap meja harus memiliki sumbu tumbuh: vertikal, horizontal atau tetap. Tabel pertumbuhan vertikal memiliki komponen garis (seperti spreadsheet berbasis hari saya), di mana semua kolom memiliki rumus "sama", komponen horizontal memiliki komponen kolom, tabel ukuran tetap sama seperti spreadsheet apa pun.
Jadi, ketika pengguna menambahkan baris / kolom baru, baris / kolom baru akan memiliki rumus yang sama.
Juga, dalam spreadsheet, saya benci hal itu, bahwa saya perlu menyalin rumus yang sama 1000 kali, jika saya memiliki 1000 baris. Ini sumber bug (menyimpan versi formula lama di beberapa baris), pemborosan memori (menyimpan formula yang sama 1000x).
Mungkin saya salah, dan ada bug konsep dalam model ini, tapi saya harap itu adalah pemikiran yang bagus.