Tabellenkalkulation "Programmierung" ist eine Art der Datenflussprogrammierung.
Wir haben ein sprachliches Problem damit, wir sollten es nicht "Programmierung" nennen, weil es weit weniger ist als wir Programmierung nennen, aber es ist definitiv mehr als die Eingabe von Daten in ein Programm.
Die Datenflussprogrammierung ist eine Architektur und Disziplin, bei der die Anwendung ein Netzwerk unabhängiger Module ist, die sich gegenseitig Nachrichten (Daten) senden. Dieses Modell ist nicht auf jedes Problem anwendbar, nur für solche, bei denen Quelldaten oder -ströme (oder mehr) vorhanden sind, die über das Verarbeitungsnetzwerk übertragen werden und Ausgabedaten / -ströme erzeugen. Siehe Liste unten.
Es gibt verschiedene Arten der Datenflussprogrammierung. Sehen wir uns einige an:
- Tabellenkalkulation: Eingabenummern werden durch Formeln verarbeitet, dann Ergebniszahlen und Diagramme. Besondere Merkmale: Die Ausführungszeit beträgt "One-Shot". Wenn sich der Eingabewert (Komponente) ändert, wird der entsprechende Teil des Verarbeitungsdiagramms erneut ausgeführt und erzeugt eine Ausgabe.
- Unix-Pipe: Die Shell startet mehrere Programme und verknüpft stdout-> stdin. Besondere Merkmale: Es ist nur eine Verbindung im Pipe-Stil zulässig. Das Diagramm ist eine einzelne Warteschlange.
- Synchronisierte Ausführung: Es gibt einen Takt, der die Verarbeitung eines Frames oder Samples in einer bestimmten Frequenz auslöst. Jede Komponente läuft einmal im Taktzyklus. Video- und Audioverarbeitungssysteme die Beispiele, sie arbeiten mit einer bestimmten Bild- / Abtastrate.
- Asynchrone Ausführung: Der Graph befindet sich im Leerlauf, bis ein externes Ereignis eintritt. Dann verarbeitet es das Ereignis, generiert eine Ausgabe (oder nicht) und geht in den Ruhezustand.
Zurück zu Ihrer Frage: Ich denke ja, es ist eine gute Idee, eine Datenflussanwendung als eigenständige App zu veröffentlichen. Ich habe es schon geschafft. Zweimal .
Ich und ein Freund von mir haben einen Prototyp eines DF-Systems für die Hausautomation erstellt. Wir haben keinen Grafikeditor, daher kann die App vom Benutzer nicht bearbeitet werden. Einige Parameter werden in einer Konfigurationsdatei gespeichert, aber sonst nichts. Wir haben eine DF-Skriptsprache, die in C ++ - Code "kompiliert" wird (eine Liste der Komponentenerstellung und Nachrichtendefinitionen), die in eine native ausführbare Datei kompiliert wird. Die Module sind C ++ - Klassen (andere Klassen, um einige Informationen über unser System zu erhalten: Nachricht, Dispathcer, Komponente (Zusammenfassung), Port (Zusammenfassung), ConsumerPort, ProducerPort).
Auch wir waren überrascht von den Vorteilen eines DF - System bieten: wir serielle Sniffer App innerhalb 2 Minuten gemacht haben, oder wir haben ein Testprogramm gemacht Vor-Ort- , die blinkt , one-by-one - Lampen (es gab keine Dokumentation auf Hardware-IDs). Wir haben MIDI- und Joypad-Komponenten nur zum Spaß erstellt, ich habe auch eine leichte Orgel daraus gemacht (siehe http://homeaut.com/under_construction/ ).
Ich kann nur eine Schwierigkeit bei Tabellenkalkulationen erkennen: Da jede Zahl und Formel (möglicherweise: jede Zelle) eine Komponente ist, ist Ihr Diagramm nicht endgültig. Wenn Sie Ihrer einfachen sum () - App eine Zeile hinzufügen, bedeutet dies, dass das Datenflussdiagramm geändert wird. Sie müssen das Diagramm also zur Laufzeit "neu programmieren", oder wir sollten es "Metaprogrammierung" nennen. In Excel würde ein Makro die Arbeit erledigen, aber dann verlieren wir die Reinheit des Datenflusses.
Ich habe eine nicht allzu schlechte, aber nicht perfekte Lösung. Ich habe eine Tabelle erstellt, eine AJAX-App mit PHP-Backend. Die vertikale Achse ist die Zeit (Tage), die Linien sind Komponenten. Es gibt Komponenten wie Eingabe (die Zeile kann vom Benutzer bearbeitet werden), vertikaler Durchschnitt, horizontaler Durchschnitt / Summe und einige domänenspezifische statistische Berechnungen. Es gibt nur ein Problem: Dies ist "eindimensional". Solange ich nur Summe und Durchschnitt und was auch immer will, kann ich neue Zeilen hinzufügen und die Komponente erstellen, die das Zeug berechnet. Es gibt jedoch eine starke Einschränkung: Die Spalten sind immer Tage (ich habe Wochen- und Monatsansichten erstellt, in denen die täglichen Daten als Summe / Durchschnitt angezeigt werden, die jedoch immer noch eindimensional sind). Ich kann es nicht zeigen, es ist kollaborativ und erfordert die Ausführung der PHP-Backend-Aufgabe 7/24. Es wird von meinem Host-Anbieter nicht unterstützt.
Mein Modell (das am besten als "Tage horizontal" beschrieben werden kann) ist also nicht in der Lage, andere Probleme zu lösen.
Ich habe eine Idee, wie man dieses Problem löst: Tabs .
Wenn Sie in Excel stecken bleiben und eine andere Tabelle erstellen müssen, können Sie einen bestimmten Bereich auf derselben Registerkarte verwenden oder eine andere Registerkarte öffnen. Außerdem ist das Verweisen zwischen Registerkarten unangenehm. Ich bevorzuge die erste Methode. Ich denke, Registerkarten sollten auf demselben Bildschirm angezeigt werden, wie nicht überlappende Fenster.
Jeder Tisch sollte eine wachsende Achse haben: vertikal, horizontal oder fest. Vertikal wachsende Tabellen haben Linienkomponenten (wie meine tagesbasierte Tabelle), wobei alle Spalten die "gleiche" Formel haben, horizontale Komponenten Spaltenkomponenten haben und Tabellen mit fester Größe wie jede Tabelle sind.
Wenn der Benutzer eine neue Zeile / Spalte hinzufügt, hat die neue Zeile / Spalte dieselbe Formel.
Außerdem hasse ich es in Tabellenkalkulationen, dass ich 1000 Mal dieselben Formeln kopieren muss, wenn ich 1000 Zeilen habe. Es ist eine Quelle von Fehlern (alte Version der Formel in einigen Zeilen beibehalten), Speicherverschwendung (Speichern derselben Formel 1000x).
Vielleicht irre ich mich und es gibt Konzeptfehler in diesem Modell, aber ich hoffe, es war ein guter Anlass zum Nachdenken.