If you work on a big language, I'd like to talk
I wanted to write some stuff on TLA+ modeling here but was at a conference and vastly overestimated the amount of writing I could get done. I presented the "Are We Really Engineers" talk and got a really positive reception, which I'm super happy about! And that means it's time to finally consider the Crossover Project complete and move on to my next planned project.1 Working title:
The Case of the Missing Data Type
A directed graph consists of node elements and edges between nodes. Nodes and edges can optionally include data attributes. Some business domains representable as directed graphs include transit routes, org charts, food webs, and webpage links. Some computer domains representable as directed graphs include package dependencies, state machines and DFAs, state spaces, garbage collection, Markov processes, function calls, control flow, workflows, ETL jobs, foreign key relations, neural networks, and hash tables (yes, really).
Directed graphs are ubiquitous, so it's incredibly weird to me that not a single mainstream programming language has a built-in directed graph type. And it's even weirder that not a single mainstream programming language has them in the standard library.
For many languages, the third-party graph libraries are… limited, to say the least, often more about visualizing graphs than manipulating them. Programs that do use directed graphs generally handroll their own implementations. There are programs to analyze graphs but not compute or effect with them. There's only one human readable graph format in common use and it exclusively encodes layouts. It can't encode data by design.2
I think of directed graphs as "the missing data type", since they're used everywhere and supported nowhere. I have some hypotheses on why this is the case, but I need to understand the bigger picture. So I'm looking to talk to:
- Designers, implementers, and committee members of mainstream programming languages
- Anybody who's been involved in discussions on whether or not to add graph types to a language
- Maintainers of third-party graph packages, tooling, and programs
- People who've done extensive work with graphs in their production systems
- Anybody else who has useful information on why we're missing graph types
(For now I'm leaving GraphQL, Neo4j, and SPARQL out of scope. I'm more interested in graphs as a programming construct than graphs as a database or analytics construct. This may change as I learn more though.)
If this describes you, please reach out! I probably won't be able to schedule an interview immediately— I'm in Australia until next week and then immediately heading to Strange Loop. I'll try to get stuff started in October. Thank you!