Quindi, c'è un flusso di lavoro che ritengo debba esistere. Potrebbe già esistere, e io non ne so nulla.
Considera il flusso di lavoro della riga di comando di Linux, il "motto" di Linux, più o meno. Hai un sacco di piccoli programmi, accettando input e producendo output. Ognuno fa bene una cosa, e l'utente li mette insieme per fare cose complicate. (In teoria ci sono controesempi, ma nel complesso, la mia esperienza è stata che questo è vero, e tende a funzionare bene.) Tuttavia, sento che ci sono alcuni problemi.
- Un determinato programma può accettare facilmente un input e produrre un output.
- Sia l'input che l'output sono una sequenza lineare di caratteri. (È discutibile se questo sia veramente un problema.)
- Il modello, così com'è, è alquanto incompatibile con le GUI.
Alternative a ciascun articolo nell'ordine:
- Un determinato programma ha un numero arbitrario di porte di input / output.
- Ogni porta ha un "tipo" specificato - binario non elaborato, video, testo, matrici di numeri, ecc. (La probabilità della guerra degli standard mi fa vacillare su questo punto, forse potrebbe essere solo contrassegnato come "16 bit raw PCM "o qualcosa del genere, ma tutti i dati sono fondamentalmente solo flussi binari non elaborati e spetta a te assicurarti che siano abbinati correttamente, come quando si esegue il piping dell'output da gzip ecc.)
- Una GUI mostrerebbe le sue porte I / O da qualche parte, e potresti trascinare da uno degli output di un programma a uno degli ingressi di un altro programma.
Considera, se vuoi, la seguente visione di un futuro glorioso: Si apre qualche formato video esoterico nel programma 1, che lo offre in un formato raw. Si trascina l'output su un altro programma 2, che divide il flusso in un'uscita video e un'uscita audio. Trascini il video da 2 ad un programma di filtraggio 3 in cui inverti i colori e l'audio da 2 ad un programma 4 simile ad Audacity, dove selezioni riverbero ed equalizzazione o qualcosa del genere. Si trascina da 3 e 4 indietro in un ricombiner 5, da 5 a un codificatore 6 e da 6 a un servizio di streaming 7. Quindi si preme go o qualcosa e si sta trasmettendo un video bizzarramente filtrato su Internet, perché è possibile .
Quindi, le mie domande effettive:
- Esiste già un modo per farlo, funzionale per un utente finale adesso?
- Ci sono librerie intese e progettate per consentire questo genere di cose?
- Ci sono ostacoli fondamentali a questo che ho trascurato?
- Eventuali altri commenti che ritieni debbano essere notati?