Editor de nodos y programación visual

Oct 02 2020

Los editores de nodos están de moda, especialmente en las canalizaciones de procesamiento de imágenes y la programación de sombreadores en motores de juegos. Por ejemplo, aquí hay una pregunta de stackoverflow sobre la implementación de un editor de nodos similar a Blender para Python. También aparecen en la ciencia de datos, como en KNIME y Orange .

Me pregunto si Mathematica se beneficiaría de un editor de nodos en algunos casos. Me apresuré a crear algo visualmente similar, pero hay muchas peculiaridades en los gráficos de Mathematica y también hay otras cosas a considerar como qué estructuras de datos usar para los nodos y conexiones. Luego está el problema de poder moverse dinámicamente alrededor de los nodos y arrastrar nodos, extender conexiones / eliminar conexiones, etc.

  • ¿Existen implementaciones? Si no es así, ¿hay alguna manera de construir un sistema más dinámicamente ajustable Graphy 'ejecutarlo'? Podemos conseguirlo, TreeForm[Plus[Times[x, y], z]]por ejemplo, pero ¿cómo podríamos construir ese gráfico arrastrando y soltando?
  • ¿Vale la pena seguir con Mathematica, o sería mejor implementar en Python, compilar el gráfico en expresiones de Mathematica y llamar a través de la biblioteca cliente?

Respuestas

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

¿Existen implementaciones?

Hay dos implementaciones que me vienen a la mente.

  • VisX (presentado en Wolfram Community aquí )
  • Implementación de Scratch Blocks

El primero ha estado "en desarrollo" durante mucho tiempo y aún no se ha lanzado, pero podría valer la pena echarle un vistazo a alguien que esté siguiendo este camino.

¿Vale la pena seguir con Mathematica, o sería mejor implementar en Python, compilar el gráfico en expresiones de Mathematica y llamar a través de la biblioteca cliente?

Mi opinión personal es que sería mejor implementar una interfaz visual como, por ejemplo, una aplicación Electron , que podría ejecutarse sobre Wolfram Engine. Introducir una dependencia en la interfaz del portátil no parece muy beneficioso, pero al final del día todo se trata de las tecnologías con las que desea trabajar.