Електронна таблиця "програмування" - це тип програмування потоку даних.
У нас з цим мовна проблема, ми не повинні називати це "програмуванням", оскільки це набагато менше, ніж ми називаємо програмування, але це, безумовно, більше, ніж введення даних у програму.
Програмування потоку даних - це архітектура та дисципліна, де додаток являє собою мережу незалежних модулів, вони передають повідомлення (дані) один одному. Ця модель не застосовується до кожної проблеми, лише для тих, де є вихідні дані або потік (або їх більше), який йде через мережу обробки та виробляє вихідні дані / потоки. Дивіться список нижче.
Програмування потоку даних має кілька типів, давайте подивимося деякі:
- Електронна таблиця: вхідні номери обробляються формулами, потім числами та графіками результатів. Особливі характеристики: час екзекціонування "однократний", коли вхідне значення (компонент) змінюється, відповідна частина графіка обробки повторно запускається і виробляє вихід.
- Unix pipe: оболонка запускає кілька програм і посилає stdout-> stdin. Особливі характеристики: дозволено лише зв'язування в стилі труби, графік - це одна черга.
- Синхронізоване виконання: є тактовий годинник, який запускає обробку кадру або зразка із заданою частотою. Кожен компонент працює один раз тактовим циклом. Системи обробки відео та аудіо на прикладах, вони працюють із заданою швидкістю кадрів / вибірки.
- Асинхронне виконання: графік не працює, поки не відбудеться зовнішня подія. Потім він обробляє подію, генерує деякий вихід (чи ні) і переходить у стан очікування.
Повернення до вашого запитання: Я думаю, що так, корисно опублікувати додаток для передачі даних як окремий додаток. Я вже це зробив. Двічі .
Я та мій друг створили прототип системи DF для домашньої автоматизації. У нас немає редактора графіків, тому додаток не редагується користувачем, деякі параметри зберігаються у конфігураційному файлі, але нічого іншого. У нас є мова скриптів DF, яка "компілюється" в код C ++ (перелік створення компонентів та визначення повідомлень), який компілюється в нативний виконуваний файл. Модулі - це класи C ++ (інші класи, лише щоб отримати інформацію про нашу систему: Повідомлення, Диспетчер, Компонент (реферат), Порт (реферат), ConsumerPort, ProducerPort).
Крім того, ми були вражені перевагами системи DF: ми зробили додаток для серійного сніферу протягом 2 хвилин або ми створили тестову програму на місці , яка блимає лампами одна за одною (документації не було на апаратних ідентифікаторах). Ми створили компоненти MIDI та джойстика просто для розваги, я також створив з ним легкий орган (див. Http://homeaut.com/under_construction/ ).
Я бачу лише одну складність у випадку використання електронних таблиць: оскільки кожне число та формула (потенційно: кожна комірка) є складовою, ваш графік не є остаточним. Коли ви додаєте рядок до простої програми sum (), це означає, що графік потоку даних змінено. Отже, вам доведеться "перепрограмувати" графік під час виконання, або ми повинні назвати це "метапрограмування". В Excel макрос зробив би цю роботу, але тоді ми втрачаємо чистоту потоку даних.
У мене є не надто поганий, але не ідеальний варіант. Я створив електронну таблицю, додаток AJAX з PHP. Вертикальна вісь - час (дні), лінії - складові. Є такі компоненти, як введення даних (рядок може редагуватися користувачем), середнє вертикальне значення, середнє значення горизонталі / сума та деякі статистичні розрахунки, що стосуються домену. З цим існує лише одна проблема: це "одновимірність". Поки я хочу просто суму і середню кількість і все, що я можу, я можу додати нові рядки та створити компонент, який обчислює матеріал. Але є сильне обмеження: стовпці - це завжди дні (я робив "перегляди за тиждень і місяць", де відображаються щоденні дані як сума / середня, але це все одно одновимірне). Я не можу його показати, це спільна робота і вимагає завдання PHP для запуску 7/24, це не підтримується моїм провайдером.
Отже, моя модель (яку найкраще можна охарактеризувати як "дні горизонтально") не в змозі впоратися з іншими проблемами.
У мене є ідея, як вирішити цю проблему: вкладки .
Коли ви застрягнете в Excel і вам доведеться створити іншу таблицю, ви можете використовувати окрему область на цій же вкладці або відкрити іншу вкладку. Крім того, посилання між вкладками незручно, я вважаю за краще перший метод. Я думаю, вкладки повинні відображатися на тому ж екрані, як і вікна, що не перекриваються.
Кожна таблиця повинна мати свою зростаючу вісь: вертикальну, горизонтальну або нерухому. У вертикально зростаючих таблицях є компоненти рядків (як моя денна таблиця), де всі стовпці мають формулу "однакова", горизонтальні компоненти - компоненти стовпців, таблиці фіксованого розміру - це як і будь-яка електронна таблиця.
Отже, коли користувач додає новий рядок / стовпець, новий рядок / стовпець матиме ту саму формулу.
Крім того, у електронних таблицях я ненавиджу річ, що мені потрібно копіювати самі однакові формули 1000 разів, якщо у мене є 1000 рядків. Це джерело помилок (зберігання старої версії формули в деяких рядках), втрати пам’яті (зберігання тієї ж формули 1000x).
Можливо, я помиляюся, і в цій моделі є помилки з концепцією, але, сподіваюся, це була гарна думка.