Языки с поддержкой родного / синтаксического / встроенного графа? - PullRequest
7 голосов
/ 22 июля 2010

График, пожалуй, самая универсальная и ценная структура данных из всех. Я могу хранить с ней отдельные переменные, списки, хэши и т. Д. И, конечно, графики.

Учитывая это, есть ли языки, которые предлагают поддержку встроенного / собственного графа и синтаксис? Я могу создавать переменные, массивы, списки и хэши, встроенные в Ruby, Python и Javascript, но если мне нужен график, мне нужно либо самостоятельно управлять представлением с помощью матрицы / списка, либо выбрать библиотеку и использовать метод графа через вызовы.

С какой стати это все еще имеет место в 2010 году? И практически есть ли языки, которые предлагают поддержку встроенного графа и синтаксис?

Ответы [ 3 ]

2 голосов
/ 03 августа 2010

Gremlin, язык программирования на основе графов: http://wiki.github.com/tinkerpop/gremlin/

2 голосов
/ 22 июля 2010

Основная проблема, о которой вы спрашиваете, заключается в том, что более общее решение не является лучшим для конкретной проблемы.Это просто средний показатель для всех, но не самый лучший.

Хорошо, вы можете сохранить список в графе, предполагая его вырожденность, но почему вы должны делать что-то подобное?И как бы вы сохранили хэш-карту внутри графика?Зачем вам нужна такая структура?

И не забывайте, что реализация графа должна быть выбрана в соответствии с тем, какие операции вы собираетесь над ней делать, иначе это будет все равно, что использовать хеш-таблицу для хранения списка значений.или список для хранения упорядоченной коллекции вместо дерева.Вы знаете, что вы можете использовать матрицу смежности, список ребер или списки смежности ... каждая реализация имеет свои сильные и слабые стороны.

Тогда графы могут иметь действительно много свойств по сравнению с другими коллекциями данных, циклически,ациклический, направленный, ненаправленный, двудольный и т. д. и для любого конкретного случая вы можете реализовать их по-другому (предполагая некоторую гипотезу на нужном вам графике), поэтому их использование в собственном синтаксисе будет излишним, так как вам потребуетсяв любом случае сконфигурируйте их (и язык должен обеспечивать множество реализаций / оптимизаций).

Если все уже сделано, вы убираете удовольствие от разработки :) Кстати, просто ищите язык, который позволяет вам писать свой собственный граф DSLи жить с этим!

1 голос
/ 14 августа 2010

GrGen.NET (www.grgen.net) - это язык программирования для преобразования графов плюс среда, включающая графический отладчик.Вы можете определить свою графовую модель, правила перезаписи и управление правилами с помощью некоторых хороших языков специального назначения и использовать сгенерированный код сборок / C # из любого языка .NET, который вам нравится, или из прилагаемой оболочки.обычные языки не предлагают такой удобный / встроенный интерфейс для графиков, просто взгляните на объем кода, написанного для этого проекта: один компилятор - это несколько человеко-лет работы.Это слишком дорогой ценник для функции / структуры данных, который нужен только меньшинству программистов, поэтому он не включен в языки программирования общего назначения.

...