Huh that’s interesting. Thanks for the brief history lesson; Appreciate it. Hash maps are so useful it’s hard to imagine an STL without them. Especially with how much stuff is in the STL these days. I like a lot about C++ but it really feels like it’s a victim of it’s long development history; We got to where we are not as a design goal but as a coincidence of development trajectories. If we could just start over with C++ today, forget all backwards compatibility and have all the people who’ve worked on it share experience and form a new design bottom up, it’d be fun to see what’d come of it. I also sometimes feel like the C++ community hurts itself by using terminology that makes things sound a lot more scary than they are. Before I touched C++ myself I heard all these things about templates and template meta programming. It seemed a bit frightening. Made me think I’d have to learn brand new concepts. But in reality it’s just the C++ spin on generics. I don’t think there’s anything wrong with calling it templates - that’s not what I mean - I just feel like when people talk about things like this they often fail to simply capture the essence of the idea and the first thing they throw at you when you ask “what’s templates” is extreme esoteric nonsense, when all you wanted to know was “It’s a way of making functions generic in C++”. Same with the new Concepts - “What is Concepts in C++?” “Oh it’s this feature that was proposed for C++14 but is now just getting implemented in C++20 that has undergone these revisions for these reasons with all these considerations […]”. - Maybe that’s just been the people I’ve seen online but it feels much simpler to get a first-look understanding of something with other languages typically.They had the tree based std::map(). Prior to C++98 though, we were using third party libraries like RogueWave which did have support for hash dictionaries. RogueWave support was bundled with the Solaris C++ compilers which slowed down migration to C++98 and the STL.
I don’t want to have a dig at C++ - I like C++. But as I think I may have mentioned, I almost use it like C With Classes, haha. I don’t write good idiomatic C++. I get more and more up to date with the idiomatic way of doing C++ but I’m experienced in C so my go-to way of solving a problem is a C procedure where I may use std::vector instead of a C array. I had a point with saying all this but I kinda forgot it along the way. Something about the nice simplicity of C but features of C++ being lovely additions that make your life easier but the overhead of getting familiar with all of it being very high and taking a pragmatic approach with little-by-little adoption of more idiomatic C++ approaches probably.
Alas, for the foreseeable future however, I have OCaml and Swift projects on the table only