Éditeur de nœuds et programmation visuelle
Les éditeurs de nœuds sont à la mode, en particulier dans les pipelines de traitement d'image et la programmation de shaders dans les moteurs de jeux. Par exemple, voici une question stackoverflow sur l'implémentation d'un éditeur de nœuds de type Blender pour python. Ils apparaissent également dans la science des données, comme dans KNIME et Orange .
Je me demande si Mathematica bénéficierait d'un éditeur de nœuds dans certains cas. Je me suis précipité pour créer quelque chose de similaire visuellement, mais il y a beaucoup de bizarreries dans les graphiques de Mathematica et il y a aussi d'autres choses à considérer comme les structures de données à utiliser pour les nœuds et les connexions. Ensuite, il y a le problème de pouvoir se déplacer dynamiquement autour des nœuds et faire glisser les nœuds, étendre les connexions / supprimer les connexions, etc.
- Existe-t-il des implémentations? Sinon, existe-t-il un moyen de construire un système plus dynamiquement ajustable
Graphet de «l'exécuter»? Nous pouvons obtenirTreeForm[Plus[Times[x, y], z]]par exemple, mais comment pourrions-nous construire ce graphique par glisser-déposer? - Vaut-il la peine de poursuivre dans Mathematica, ou serait-il préférable de l'implémenter en Python, de compiler le graphe dans des expressions Mathematica et d'appeler via la bibliothèque cliente?
Réponses
Existe-t-il des implémentations?
Il y a deux implémentations qui me viennent à l'esprit.
- VisX (présenté sur Wolfram Community ici )
- Les blocs Scratch mise en œuvre
Le premier est "en développement" depuis longtemps maintenant, et n'a pas encore été publié, mais cela vaut peut-être la peine de jeter un coup d'œil à quelqu'un qui s'engage dans cette voie.
Vaut-il la peine de poursuivre dans Mathematica, ou serait-il préférable de l'implémenter en Python, de compiler le graphe dans des expressions Mathematica et d'appeler via la bibliothèque cliente?
Mon opinion personnelle est qu'une interface visuelle serait mieux implémentée comme par exemple une application Electron , qui pourrait fonctionner sur Wolfram Engine. L'introduction d'une dépendance à l'interface du notebook ne semble pas très bénéfique, mais en fin de compte, tout dépend des technologies avec lesquelles vous souhaitez travailler.