Hacker News new | ask | show | jobs
by maccard 6 days ago
This is true of any language. Python with flask vs django, with/without type hints. JavaScript with anhular and vue.

The varying standards are no different to major python versions or go versions - arguably there’s even less between most versions than there is in your average go release.

The differences in apps and frameworks don’t matter for day to day - std::string, Unreal’s FString and QT’s QString all are similar enough that 99.9% of the time.

Metaprogramming is one of those things; you either write it or you don’t. Knowing some basics is required but the vast majority of people use a handful of pre existing things without understanding the nuances of how it works under the hood.

1 comments

> This is true of any language

Is it? Java has changed a lot, but in such a way that it's still easy to mentally map new features to the old ones, provided you have understood the core language. IDEs can even convert your code from old to new and back.

Still true for C++. Can still mentally map new features to the core language C. A modern Cfront transpiler can still be written.

Template meta-programming maps to C pre-processor macros. The sad part with both is generated code cannot be examined thus the unreadable compiler errors and slower compilation as it's regenerated every time.

Slightly off-topic: Rust can also be mentally mapped to C.

Yeah it is! Java 25 changed constructor behaviour to allow logic to run before the calls to super(). That’s an enormous change.

On the c++ side, “modern” features like span, smart pointers, range based for loops, format are all really simple to reason back to for anyone who is a programmer. Stuff like modules and concepts is a bit different, but most people aren’t in the innards of those every day, in the same way that the change in header size doesn’t affect every single Java developers code, but you should know about it.