Editor de nó e programação visual
Os editores de Node estão na moda, especialmente em pipelines de processamento de imagens e programação de shaders em motores de jogos. Por exemplo, aqui está uma questão stackoverflow sobre a implementação de um editor de nó semelhante ao Blender para python. Eles também aparecem na ciência de dados, como em KNIME e Orange .
Estou me perguntando se o Mathematica se beneficiaria de um editor de nó em alguns casos. Corri para criar algo visualmente semelhante, mas há muitas peculiaridades nos gráficos do Mathematica e também há outras coisas a serem consideradas, como quais estruturas de dados usar para os nós e conexões. Depois, há o problema de ser capaz de mover dinamicamente em torno dos nós e arrastar nós, estender conexões / excluir conexões, etc.
- Existem implementações existentes? Se não, existe uma maneira de construir um modelo mais ajustável dinamicamente
Graphe 'executá-lo'? Podemos obter,TreeForm[Plus[Times[x, y], z]]por exemplo, mas como construir esse gráfico arrastando e soltando? - Vale a pena prosseguir no Mathematica ou seria melhor implementar em Python, compilar o gráfico em expressões do Mathematica e chamar por meio da biblioteca cliente?
Respostas
Existem implementações existentes?
Existem duas implementações que vêm à mente.
- VisX (apresentado na comunidade Wolfram aqui )
- Implementação de Scratch Blocks
O primeiro já está "em desenvolvimento" há muito tempo e ainda não foi lançado, mas pode valer a pena dar uma olhada para alguém que está trilhando esse caminho.
Vale a pena prosseguir no Mathematica ou seria melhor implementar em Python, compilar o gráfico em expressões do Mathematica e chamar por meio da biblioteca cliente?
Minha opinião pessoal é que uma interface visual seria melhor se fosse implementada como, por exemplo, um aplicativo Electron , que pudesse rodar em cima do Wolfram Engine. Introduzir uma dependência na interface do notebook não parece muito benéfico, mas no final do dia é tudo uma questão de quais tecnologias você deseja trabalhar.