Data structures 支持本机/语法/内联图的语言?

Data structures 支持本机/语法/内联图的语言?,data-structures,programming-languages,syntax,graph,inline,Data Structures,Programming Languages,Syntax,Graph,Inline,图形可以说是所有数据结构中最通用、最有价值的数据结构。我可以用它存储单个变量、列表、散列等,当然还有图形 鉴于此,有没有提供内联/本机图形支持和语法的语言?我可以用Ruby、Python和Javascript内联创建变量、数组、列表和哈希,但是如果我想要一个图形,我必须使用矩阵/列表自己管理表示,或者选择一个库,并通过方法调用使用该图形 究竟为什么2010年的情况仍然如此?实际上,有没有提供内联图支持和语法的语言?您要问的主要问题是,对于特定问题,更通用的解决方案不是最好的解决方案。对他们来说,

图形可以说是所有数据结构中最通用、最有价值的数据结构。我可以用它存储单个变量、列表、散列等,当然还有图形

鉴于此,有没有提供内联/本机图形支持和语法的语言?我可以用Ruby、Python和Javascript内联创建变量、数组、列表和哈希,但是如果我想要一个图形,我必须使用矩阵/列表自己管理表示,或者选择一个库,并通过方法调用使用该图形


究竟为什么2010年的情况仍然如此?实际上,有没有提供内联图支持和语法的语言?

您要问的主要问题是,对于特定问题,更通用的解决方案不是最好的解决方案。对他们来说,这只是平均水平,但不是最好的

好的,假设一个列表的简并度,你可以将它存储在一个图中,但是为什么你要这样做呢?那么如何在图形中存储hashmap呢?你为什么需要这样一个结构

不要忘记,必须根据要对其执行的操作来选择图形实现,否则这就像使用哈希表存储值列表或列表存储有序集合而不是树。您知道可以使用邻接矩阵、边列表或邻接列表。。每一种不同的实现都有其自身的优点和缺点

那么,与其他数据集合相比,图可以有很多属性,循环的、非循环的、有向的、无向的、二部的等等。。对于任何特定的情况,您都可以以不同的方式实现它们,假设您需要对图形进行一些假设,因此将它们设置为本机语法将是过分的,因为您无论如何都需要配置它们,并且语言应该提供许多实现/优化

如果一切都已完成,您将失去开发的乐趣:
顺便说一句,只要寻找一种语言,允许您编写自己的图形DSL并使用它

Gremlin,一种基于图形的编程语言:


要理解为什么普通语言不提供这样一个方便的/内置的图形接口,只需看看为该项目编写的代码量:仅编译器就需要几年的工作。对于只有少数程序员需要的功能/数据结构来说,这是一个太高的价格标签,因此它不包括在通用编程语言中。

试试nPiet:注意:这是一个笑话。有趣而有效的观点。我怀疑人们通常操纵的图形的多样性是它们在语言中不作为标准库AFAIK!的内置甚至部分出现的原因!。然而,有很多基于图重写的语言,但这通常发生在幕后,而不是作为程序员可访问的东西。我同意图在性质上是不同的,但这并不是不提供默认实现和内联语法的有力理由。不过,老实说,我确实认为可编程数学环境的世界是一个有趣的世界。我对它没有太多的了解,但我认为它们是存在的,这是一个值得探索的想法,IMHO。在Java中,当我需要列表时,我默认使用ArrayList,并在需要时切换到LinkedList。为什么我不能将默认的“最佳通用拟合”图形实现放在手边,内置到语言中,如果需要,我可以对其进行调整?每次我制作一个图表时,重新考虑实现细节真的没有什么乐趣,这是一个巨大的时间浪费。通常当你需要图表时,你需要它们进行密集的计算,这就是为什么你需要仔细考虑是否使用矩阵或邻接列表,因为它们在某些操作中是相反的。我的Java实现只有600-700行代码,写过一次,我仍然在需要时使用它,但它只是对一些属性建模。。然而,像silky一样,许多数学环境都有图形实现。我同意选择不同的实现有很好的理由,但我通常不需要考虑它们。有时我更喜欢先画程序草图,然后逐步解决问题。当我在Ruby中创建一个散列时,我很高兴有一个“散列”,如果或当出现空间或速度问题时,我会考虑规范化和查询速度/空间优化。我会将它添加到我正在开发的语言中,这样你会很高兴!但这是一个深奥的问题,所以你需要学习其他的东西。。然而,我理解你的理由,这将是一件好事,因为以这种方式对la的语法进行任何扩展 语言。