7

Le graphique est sans doute la structure de données la plus polyvalente et la plus précieuse de toutes. Je peux stocker des variables simples, des listes, des hachages, etc., et bien sûr des graphiques. Par conséquent, y a-t-il des langues qui offrent un support et une syntaxe en ligne/native? Je peux créer des variables, des tableaux, des listes et des hachages en Ruby, Python et Javascript, mais si je veux un graphique, je dois soit gérer la représentation moi-même avec une matrice/liste, soit sélectionner une bibliothèque et utiliser la méthode appels.Langues avec support graphique natif/syntaxique/inline?

Pourquoi diable est-ce toujours le cas en 2010? Et, pratiquement, existe-t-il des langages offrant un support et une syntaxe en ligne?

+0

Essayez nPiet: http://www.bertnase.de/npiet/ (remarque: c'est une blague). –

+0

Point intéressant et valide. Je soupçonne que la nature variée des graphiques que les gens manipulent généralement est la raison pour laquelle ils ne sont pas présents dans les langues en tant que built-in (ou même partie d'une bibliothèque standard, AFAIK!). Il y a, cependant, beaucoup de langages basés sur la réécriture de graphe, mais ceci se produit généralement dans les coulisses, pas comme une chose accessible au programmeur. – Gian

+0

Je suis d'accord sur le fait que les graphiques sont de nature différente, mais ce n'est pas une raison pour ne pas offrir une implémentation par défaut et une syntaxe inline. –

Répondre

2

Le problème principal de ce que vous demandez est qu'une solution plus générale n'est pas la meilleure pour un problème spécifique. C'est juste moyen pour tous, mais pas le meilleur.

Ok, vous pouvez stocker une liste dans un graphique supposant sa dégénérescence, mais pourquoi devriez-vous faire quelque chose comme ça? Et comment stockez-vous un hashmap dans un graphique? Pourquoi auriez-vous besoin d'une telle structure? Et n'oubliez pas que l'implémentation du graphique doit être choisie en fonction des opérations que vous allez effectuer, sinon ce serait comme utiliser une hashtable pour stocker une liste de valeurs ou une liste pour stocker une collection ordonnée à la place un arbre. Vous savez que vous pouvez utiliser une matrice d'adjacence, une liste d'arêtes ou des listes d'adjacence ... chaque implémentation différente avec ses propres forces et faiblesses. Puis les graphiques peuvent avoir vraiment beaucoup de propriétés par rapport à d'autres collections de données, cycliques, acycliques, dirigées, non dirigées, bipartites, et ainsi de suite ... et pour n'importe quel cas spécifique, vous pouvez les implémenter différemment (en supposant une hypothèse sur le graphique dont vous avez besoin) donc les avoir dans la syntaxe native serait exagéré puisque vous auriez besoin de les configurer de toute façon (et le langage devrait fournir de nombreuses implémentations/optimisations). Au fait, il suffit de chercher un langage qui vous permet d'écrire votre propre graphique DSL et de vivre avec!

+0

Pour être honnête, je pense que le monde des environnements mathématiques programmables est intéressant. Je n'ai pas beaucoup d'exposition à cela, mais je suppose qu'ils existent, et c'est une idée qui vaut la peine d'explorer, à mon humble avis. –

+0

En Java, quand j'ai besoin d'une liste, j'utilise une ArrayList par défaut et je passe à LinkedList si et quand j'en ai besoin. Pourquoi est-ce que je ne peux pas avoir l'implémentation par défaut du meilleur graphisme par défaut, construire dans le langage, que je peux ajuster si j'en ai besoin? Je n'ai vraiment pas beaucoup de plaisir à reconsidérer les détails d'implémentation chaque fois que je fais un graphique, c'est une énorme perte de temps. –

+0

Habituellement, lorsque vous avez besoin de graphiques, vous en avez besoin pour des calculs intensifs, c'est pourquoi vous devrez réfléchir soigneusement à l'utilisation d'une matrice ou d'une liste d'adjacence (puisqu'elles sont opposées pour certaines opérations). Mon implémentation Java est juste 600-700 lignes de code, écrit qu'une fois et je l'utilise quand il le faut mais il modélise juste des propriétés .. comme soyeux suggère de nombreux environnements mathématiques ont des implémentations graphiques – Jack

1

GrGen.NET (www.grgen.net) est un langage de programmation pour la transformation de graphique en plus d'un environnement comprenant un débogueur graphique. Vous pouvez définir votre modèle de graphe, les règles de réécriture et le contrôle des règles avec quelques bonnes langues spéciales et utiliser le code assemblées/C# généré à partir de n'importe quel langage .NET que vous aimez ou du shell fourni. Pour comprendre pourquoi les langages normaux n'offrent pas une telle interface pratique/intégrée aux graphiques, jetez juste un oeil à la quantité de code écrite pour ce projet: le compilateur seul est plusieurs années-homme de travail. C'est une étiquette de prix trop coûteuse pour une structure de caractéristiques/données dont seulement une minorité de programmeurs a besoin - elle n'est donc pas incluse dans les langages de programmation généraux.