Editor di nodi e programmazione visuale

Oct 02 2020

Gli editor di nodi sono di gran moda soprattutto nelle pipeline di elaborazione delle immagini e nella programmazione degli shader nei motori di gioco. Ad esempio, ecco una domanda su stackoverflow sull'implementazione di un editor di nodi simile a Blender per Python. Appaiono anche nella scienza dei dati, come KNIME e Orange .

Mi chiedo se Mathematica trarrebbe vantaggio da un editor di nodi in alcuni casi. Mi sono precipitato a creare qualcosa di visivamente simile, ma ci sono molte stranezze nella grafica di Mathematica e ci sono anche altre cose da considerare come le strutture dati da usare per i nodi e le connessioni. Poi c'è il problema di poter spostare dinamicamente i nodi e trascinare i nodi, estendere le connessioni / eliminare le connessioni ecc.

  • Esistono implementazioni esistenti? In caso contrario, esiste un modo per creare un sistema più regolabile dinamicamente Graphe "eseguirlo"? Possiamo ottenere TreeForm[Plus[Times[x, y], z]]per esempio, ma come possiamo costruire quel grafico in un modo drag-and-drop?
  • Vale la pena proseguire in Mathematica o sarebbe meglio implementarlo in Python, compilare il grafico in espressioni Mathematica e chiamare tramite la libreria client?

Risposte

4 C.E. Oct 01 2020 at 23:26

Esistono implementazioni esistenti?

Ci sono due implementazioni che mi vengono in mente.

  • VisX (presentato su Wolfram Community qui )
  • Implementazione di Scratch Blocks

Il primo è stato "in sviluppo" da molto tempo ormai, e non è ancora stato rilasciato, ma potrebbe valere la pena dare un'occhiata a qualcuno che ha intrapreso questa strada.

Vale la pena proseguire in Mathematica o sarebbe meglio implementarlo in Python, compilare il grafico in espressioni Mathematica e chiamare tramite la libreria client?

La mia opinione personale è che sarebbe meglio implementare un'interfaccia visiva come ad esempio un'app Electron , che potrebbe funzionare su Wolfram Engine. L'introduzione di una dipendenza dall'interfaccia del notebook non sembra molto vantaggiosa, ma alla fine dipende tutto dalle tecnologie con cui si desidera lavorare.