11 ms·
I’ll offer a perspective unrelated to pay: It’s a pain to start learning C++, and even after you do, older devs will roast the hell out of your code because you
by rychco 4y ago
I’ll offer a perspective unrelated to pay: It’s a pain to start learning C++, and even after you do, older devs will roast the hell out of your code because your book/tutorials of choice forgot to mention a crucial (in their opinion) feature that you absolutely should/shouldn’t use! Not to mention you’ve only programmed on Mac/Linux so far & windows is totally different, has a different compiler, different ways to install libraries, different C++ standard features supported, etc.
I like C++, and tooling has come a long way, but it’s so much easier to download rust/Python/node and you’re basically set on every platform & immediately ready to go. NOW consider pay, and even someone enthusiastic about programming C++ will reconsider.
- selfmodruntime 4y agoThis. Learning the language as a whole is an incredibly daunting task. It's ugly, it's built on a combination of OOP and procedural C and quite frankly, the class syntax in combination with header files has aged pretty bad. I feel like I have a lot of code I need to write twice. The standard committee keeps tacking on new features and decade old footguns are promised to never be fixed (and somehow, people consider this a feature). Tooling is even worse.
- codalan 4y agoIt's only ugly because it was meant to be a federation of different programming paradigms. You can mix low level C calls with homegrown RAII frameworks, or mix traditional OOP with functional programming. Once you start throwing in preprocessor macros, meta programming, and templates, you can have a codebase that is incredibly complex to understand and maintain. As for the header/implementation separation, I always thought it was a good idea to have that flexibility. I've worked in codebases where the compilation units were fairly large and complex and would be implemented in separate files. This would be similar to partials in C# I've also worked with some code that would determine the target compilation units at build time. Not saying it was the best approach at the time, but it was one option. If anything scares off people from C++, it would definitely be the breadth of the language, though. You could work in C++ for over ten years and possibly not even encounter or use half of the functionality it provides. And because of it's breadth, going from one C++ codebase to another could look completely different. Especially when looking at something written for a Unix/Linux/Posix system vs Windows.
- greyman 4y agoI coded in C++ professionally for about 15 years and don't remember it would be "incredibly daunting". Not easy, but doable. But yes, I also exited the pool, now I work in Golang and just wouldn't go back to C++.
- m463 4y agoI find python such a pleasure in comparison. I can express myself so easily.
- germandiago 4y agoTrue. I also like Python. The problem is when you need 30 servers instead of one to manage your load, though, lol.
- chaostheory 4y agoI also love Python the language, but it’s hard to keep using it when it’s so slow. Parallel processing helps, but it’s still slow. Definitely dumping pandas the first chance I get. It’s one of two major bottlenecks with the other being anaconda for Windows. Maybe the culprit is running Python on Windows since it relies on so many parts of nix?
- ahepp 4y agoI thought parallelism was pretty limited in python due to the GIL (global interpreter lock, iirc)?
- germandiago 4y agoC extensions can help. Some libraries use native wrapped code and that acceleratws things.
- chaostheory 4y agoThread based concurrency is limited and near pointless. Parallelism, ie using multiple cores in separate processes, is not
- cybuerg 4y agoI can recommend pola.rs instead of pandas. For my use case it was insanely faster, I did not try it on Windows however.
- jupp0r 4y agoThere's also the opposite problem: older devs will use outdated features and have best practices in place that are now considered antipatterns. This exacerbates the existing difficulties to modernize legacy code bases and creates incentives to not do so. New devs are forced to learn C++ from 20 years ago which is much worse than modern C++.
- deviantbit 4y agoThe difference between C++ today, and what we had 20 years ago is not much. C++ has functionality built in today, we didn't have, but the OS provided, and now the language has many features we wished we had years ago. Example: Variadic templates. When that happened, the problems we would bang our head against the wall with magically vanished. Twenty years ago, every implementation of the std library had serious bugs in it. It was avoided. Not the case today. I remember a std::map iterators not working. Watcom's C++ had serious flaws with it, but many exciting products were still created with it. We didn't complain. We were happy, and worked around our problems. I think the root of peoples issue with C++ is with template meta programming portions of it, which you can completely ignore, and grow into.
- pencilguin 4y agoTemplate metaprogramming is hardly ever needed anymore. C++20 has better built-in features that for most of what was done with it, that compile much faster. Almost all C++ programmers completely ignore it. You can too.
- deviantbit 4y agoNew way? You mean, expanded.
- pencilguin 4y ago??
- shaklee3 4y ago
- thrwyoilarticle 4y agoIME the nature of C++ attracts smug trivia experts more than typical softeng. Skilled, yes, but unhelpful.
- ayberk 4y agoAs someone who has been writing C++ at Google, this exactly. Despite all the tooling, guidelines and "internal magic", C++ is still an abomination. And no it has nothing to do with memory management, I actually do like C. I love how Eric Raymond describes it as "anti-compact", because, well, it really is. C++ as a whole should be deprecated -- and no new projects should use C++ (unless for some very odd and specific reason).
- DeathArrow 4y ago>C++ as a whole should be deprecated -- and no new projects should use C++ (unless for some very odd and specific reason). And what can be used instead of C++? C? If C was better, then C++ wouldn't have been invented. Rust? It's much more painful to use than C++. Zig? It's immature and has very low usage. Nim? Has very low user base. Julia? It isn't solving the same problems.
- rychco 4y agoMark Russinovich (of Sysinternals fame), thinks Rust should be the non-GC language of choice moving forward. https://twitter.com/markrussinovich/status/1571995117233504257 https://twitter.com/markrussinovich/status/15719951172335042...
- jeffreyrogers 4y agoIf people think C++ is hard to learn and attracts opinionated people boy are they in for a surprise when they start using Rust.
- intelVISA 4y agoAs a C++ enjoyer I would 100% have learned Rust if it was around when I started... just for Cargo alone. Problem is now I've already done my time in the Makefile trenches there's little incentive in me re-learning another systems lang and having to compete with lots of smarter people, with more Rust exp, for jobs whilst giving up all my arcane knowledge of CMake and friends. Rust being popular atm is great for C++ if I'm honest as it siphons away a new gen of systems programmers over to another lang allowing me to sell my dark services for more coins.
- deleted 4y ago[deleted]
- larsrc 4y agoI did my time in the Makefile trenches, too. I'm happy that I've learned other languages. There will always be smarter people than you, but you will bring your particular knowledge and do new things. Keep on learning!
- chaostheory 4y agoI wonder how the Cobol market is doing?
- worthless-trash 4y agoThe funny part about cobol is that even if you say you know the syntax, there is site specific implementation details/features which are even MORE critical than just the language.
- chaostheory 4y agoIf you have time, I would really love to know examples of this. This is very interesting.
- greyhair 4y agoSee: New Jersey State Unemployment Insurance.
- strangattractor 4y ago%90 of what people do today is import some open source library or package to do the heavy lifting and weave them into an app using a scripting language. It is sort of the MS Basic approach of the web app world. Nothing wrong with that. C++ is used for a different class of problems that are not the main focus of the industry anymore. I would likely choose something like Rust today but at the time C++'s star was rising there really weren't a lot of other better options.
- greyhair 4y agoAs an older dev, screw those older devs that 'roast your code'. The really good ones won't do that. The ones that do suffer from some weak superiority complex. I had three awesome mentors when I started writing C, and a couple great mentors when I did what little C++ work that I had to do. The only scold I ever dealt with wrote overly wrought, overly complex crap. Kitchen sink patterns to handle any possible future variation, instead of solving the problem at hand. Stay away from people like that, they'll just turn you into the same old grouch.
- aliqot 4y ago> It’s a pain to start learning C++, and even after you do, older devs will roast the hell out of your code because your book/tutorials of choice forgot to mention a crucial Preach it!