Il foglio di calcolo "programmazione" è un tipo di programmazione del flusso di dati.
Abbiamo un problema linguistico con esso, non dovremmo chiamarlo "programmazione", perché è molto meno di quanto chiamiamo programmazione, ma è decisamente più che inserire dati in un programma.
La programmazione del flusso di dati è un'architettura e una disciplina, in cui l'applicazione è una rete di moduli indipendenti, che si scambiano messaggi (dati). Questo modello non è applicabile a tutti i problemi, solo per quelli in cui vi sono dati o flussi di origine (o ce ne sono altri), che attraversano la rete di elaborazione e producono flussi / dati di output. Vedi la lista qui sotto.
La programmazione del flusso di dati ha diversi tipi, vediamo alcuni:
- Foglio di calcolo: i numeri di input vengono elaborati da formule, quindi numeri di risultati e grafici. Caratteristiche speciali: il tempo di visualizzazione è "one-shot", quando il valore di input (componente) cambia, la parte appropriata del grafico di elaborazione viene eseguita nuovamente e produce output.
- Unix pipe: la shell avvia diversi programmi e collega stdout-> stdin. Caratteristiche speciali: è consentito solo il collegamento in stile pipe, il grafico è una singola coda.
- Esecuzione sincronizzata: esiste un orologio che attiva l'elaborazione di un frame o di un campione in una frequenza specificata. Ogni componente viene eseguito una volta al ciclo di clock. I sistemi di elaborazione audio e video, ad esempio, funzionano a un frame / frequenza di campionamento specificati.
- Esecuzione asincrona: il grafico è inattivo, fino a quando si verifica un evento esterno. Quindi elabora l'evento, genera un output (o no) e passa allo stato inattivo.
Torna alla tua domanda: penso di si, è una buona idea pubblicare un'applicazione di flusso di dati come app autonoma. L'ho già fatto. Due volte .
Io e un mio amico abbiamo creato un prototipo di sistema DF per l'automazione domestica. Non abbiamo un editor grafico, quindi l'app non è modificabile dall'utente, alcuni parametri sono memorizzati in un file di configurazione, ma nient'altro. Abbiamo un linguaggio di script DF, che viene "compilato" in codice C ++ (un elenco di definizioni di componenti e creazione di componenti), che viene compilato in un eseguibile nativo. I moduli sono classi C ++ (altre classi, solo per ottenere alcune informazioni sul nostro sistema: Message, Dispathcer, Component (abstract), Port (abstract), ConsumerPort, ProducerPort).
Inoltre, siamo rimasti sorpresi dei vantaggi di un sistema DF: abbiamo realizzato un'app sniffer seriale in 2 minuti o abbiamo creato un programma di test in loco , che fa lampeggiare le lampade una a una (non c'era documentazione su ID hardware). Abbiamo creato componenti MIDI e joypad solo per divertimento, ho anche creato un organo leggero con esso (vedi http://homeaut.com/under_construction/ ).
Riesco a vedere solo una difficoltà in caso di fogli di calcolo: poiché ogni numero e formula (potenzialmente: ogni cella) è un componente, il tuo grafico non è definitivo. Quando aggiungi una linea alla tua semplice app sum (), significa che il grafico del flusso di dati viene modificato. Quindi, devi "riprogrammare" il grafico in fase di esecuzione, o dovremmo chiamarlo "metaprogrammazione". In Excel, una macro farebbe il lavoro, ma perderemo la purezza del flusso di dati.
Ho una soluzione non troppo male, ma non perfetta. Ho realizzato un foglio di calcolo, un'app AJAX con back-end PHP. L'asse verticale è il tempo (giorni), le linee sono componenti. Ci sono componenti, come input (la linea può essere modificata dall'utente), media verticale, media / somma orizzontale e alcuni calcoli statistici specifici del dominio. C'è solo un problema: questo è "monodimensionale". Finché voglio solo somma, avg e qualsiasi altra cosa, posso aggiungere nuove righe e creare il componente, che calcola il materiale. Ma c'è un forte vincolo: le colonne sono sempre giorni (ho creato "viste" settimanali e mensili, che mostrano i dati giornalieri come somma / media, ma è ancora unidimensionale). Non riesco a mostrarlo, è collaborativo e richiede l'esecuzione del back-end PHP per essere eseguito 7/24, non è supportato dal mio provider host.
Quindi, il mio modello (che può essere meglio descritto come: "giorni in orizzontale") non è in grado di gestire altri tipi di problemi.
Ho un'idea, come risolvere questo problema: le schede .
Quando rimani bloccato in Excel e devi creare un'altra tabella, puoi utilizzare un'area distinta nella stessa scheda o aprire un'altra scheda. Inoltre, fare riferimento tra le schede è scomodo, preferisco il primo metodo. Penso che le schede dovrebbero essere visualizzate sullo stesso schermo, come le finestre non sovrapposte.
Ogni tavolo dovrebbe avere il suo asse crescente: verticale, orizzontale o fisso. Le tabelle in crescita verticale hanno componenti di linea (come il mio foglio di calcolo basato sul giorno), in cui tutte le colonne hanno la "stessa" formula, i componenti orizzontali hanno componenti di colonna, le tabelle di dimensioni fisse sono proprio come qualsiasi foglio di calcolo.
Pertanto, quando l'utente aggiunge una nuova riga / colonna, la nuova riga / colonna avrà la stessa formula.
Inoltre, nei fogli di calcolo, odio la cosa, che devo copiare le stesse formule 1000 volte, se ho 1000 righe. È una fonte di bug (mantenendo la vecchia versione della formula in alcune righe), spreco di memoria (memorizzazione della stessa formula 1000x).
Forse mi sbaglio, e ci sono bug concettuali in questo modello, ma spero sia stato un buon stimolo.