The Hunt for the Missing Data Type
5.3 Key Insight: The absence of graph types in programming languages isn't an oversight but a consequence of the impossibly large design space combined with performance requirements so stringent that generic abstractions consistently fail real-world use cases.
The post investigates why graphs, despite being ubiquitous in software (package dependencies, databases, state spaces, social networks), lack native support in mainstream programming languages. Through interviews with graph algorithm experts, library maintainers, and database engineers, Wayne identifies three interconnected reasons: the overwhelming number of graph type variations (directed, undirected, multigraphs, hypergraphs), the many possible internal representations (edge lists, adjacency matrices, etc.) each with different performance tradeoffs, and the critical importance of performance optimization for graph algorithms that are often NP-complete and run on enormous datasets. The conclusion is that the design space is simply too large and performance-sensitive for standard libraries to provide useful abstractions.
8 Every single implementation of pagerank that I compared to was wrong.
7 If you generate all the nodes, you've lost already.
6 There is almost no graph support in any mainstream language. None have it as a built-in type, very few have them in the standard library, and many don't have a robust third-party l…
Programming LanguagesSoftware Engineering