3 ms·
I am not a C++ programmer, but I try and "keep up with all this junk" and also care a lot about how people learn programming. Programmers like really neat logi
by steveklabnik 3y ago
I am not a C++ programmer, but I try and "keep up with all this junk" and also care a lot about how people learn programming.
Programmers like really neat logical explanations for everything, but the real world is much messier. People do not acquire human language skills by learning a formal grammar, learning all the edge cases, and then finally speaking: they attempt to communicate as best they understand, and then refine their knowledge over time.
The same works with computer languages. Not just C++. You don't generally learn every single detail before you do meaningful work. You just kinda try stuff and figure things out. Sure, you may practice specific skills, but that's just not the primary method of learning. And even in those cases, you don't necessarily learn everything before you return to practicing what you've learned: it's a process where the two activities feed into each other.
You mostly just go "damn I wish there was a better way to do X" and then find out there's a paper someone wrote, and then you pay attention to its progress. Or you just keep doing what you're doing, and at some point, a blog post comes out that's a summary of what's new, and you go "ooh that sounds interesting, I should look into that." But for every feature like that, there's also features which you go "ehh I don't need to care." And that's generally fine.
> having the syntax change more often than a toddler's favorite color
No real syntax is different here, this is a function call like any other. And C++ changes on a three year timescale. Many scripting languages release new versions far faster. It's just stuff that's less familiar to you, and so it seems harder, but it's learnable.
> It's hard enough to learn the machine stuff and manual memory management
This is the bigger struggle with learning, moreso than "syntax changes." If you haven't done lower level stuff before, you also have to recon with that while learning. That does make things harder the first time you learn a new paradigm, just like if you'd never used a functional language before, you'd be learning about those concepts as well as the syntax and specific language semantics.
- fsloth 3y agoYou shouldnt need to ”keep up with a language”. A professional computer language should always have a ”LTS” mode where you can compile a decade old code without modifications. Otherwise the language is a toy.
- angiosperm 3y agoYou can write better code with the current language than you could with previous versions. So, keep up if you want to write better code. Stick with the old stuff if you don't. To me it is an easy choice. Every new Standard has some features few people will use. Those are easy to identify and ignore if they don't solve a problem you have.
- nuancebydefault 3y agoThat is true, though in the real world (existing codebases) you encounter old, new, modern and novel styles of C++. So in order to understand the used forms of something that should be simple, like printing, you will need to know at least 4 different ways of coding it. That is somehow the frustrating part of the language, there is no 'right' C++. Kudos for those who are willing to dig deep enough to fully understand const correctness, smart pointers, dynamic casts, double referencing, every type of formatting and template programming. Though sometimes I think there is some masochism involved...
- angiosperm 3y agoC++ is a relentlessly practical language, so your go-to for understanding what you find is practicality.
- wiseowise 3y ago> A professional computer language should always have a ”LTS” mode where you can compile a decade old code without modifications Isn’t this the epitome of C++, though? It literally is the LTS language
- steveklabnik 3y ago> You shouldnt need to ”keep up with a language”. I never said you had to. The question that was asked is "how hard is it to" not "should I." > A professional computer language should always have a ”LTS” mode where you can compile a decade old code without modifications. Otherwise the language is a toy. I don't personally feel that this is a useful distinction because it means the vast majority of language implementations are a "toy." Heck, C++ might be one of the few non-dead languages where this is true! You can add new things while staying backwards compatible. "I want to keep up with the language" and "I want ten year old code to work" isn't inherently at odds.