5 ms·
When you drop the semantic silliness of C++, like having the container to take care of constructing, copying, moving, and destructing, not to mention exception
by crafn 11y ago
When you drop the semantic silliness of C++, like having the container to take care of constructing, copying, moving, and destructing, not to mention exception safety, a basic implementation of a "templated" dynamic array implementation in C comes down to like 100 lines. Hash map will be a bit more, and is not so trivial to write.
It's true that there should be no need to write these things yourself. The alternative C++ gives is not really tempting. A language designed for demanding game development doesn't exist (yet), so one evaluates which is the least worse option.
- hellofunk 11y agoConsidering that vector, map, etc are widely used and expected features of software development, I would think that good libraries in C exist for these already, so you don't have to even write your own 100 lines. Are there any?
- typedef_struct 11y agohttp://troydhanson.github.io/uthash/ http://troydhanson.github.io/uthash/
- a3n 11y agoThis is one of the reasons why every time I get nostalgic about C I then immediately get depressed. Having to find the next level of functionality, libraries, all over the internet, just makes my brain turn to peanut butter. I think this is one of the biggest disadvantage of a mostly standards based, no particular organization in charge type of language like C, as opposed to, say, python. I am fortunate that, at the moment, my needs are mostly casual and very rarely performance focused. If I needed C I would just STFU and use C, accumulating my own workarounds for the dispersed nature of its resources.
- lobster_johnson 11y agoGLib (not to be confused with glibc) from the GNOME project has a wide range of functionality -- generic lists, hash tables, strings etc.: https://en.m.wikipedia.org/wiki/GLib https://en.m.wikipedia.org/wiki/GLib Qt, I believe, also comes with a bunch of "standard library" stuff unrelated to UIs.
- hellofunk 11y agoBut Qt is all c++, no?
- unscaled 11y agoYes, GLib basically implements its own full-fledged OOP system on top of C. At which point, you start asking yourself, why are you not using C++? In my experience, most of the people who say they don't need OOP or generics end up implementing a limited (or even a full-fledged) version of these things themselves.
- ArkyBeagle 11y agoHashmaps to the side ( that's more challenging in 'C' and one really compelling feature of C++ ) the rest can frequently be "faked" with arrays. Obviously, scale matters - having fifteen "vector" implementations in a given system means a little bit of library-ness is in order. Much also depend on how much you really need dynamic allocation - it can be optional.
- hellofunk 11y agoI'm curious what you mean when you say "not to mention exception safety" ... What is the general argument against exceptions in C++?