Editor de nó e programação visual

Oct 02 2020

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

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

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.