4 ms·
Yes and no. A good programmer could learn it, but it exposes concepts that python and java abstracts from the programmer. C++ requires you to think quite a bit
by imstate 5y ago
Yes and no. A good programmer could learn it, but it exposes concepts that python and java abstracts from the programmer.
C++ requires you to think quite a bit about memory. Modern C++ not so much. However the kind of job that requires C++ will probably require you to know some hardware / embedded which is a completely different domain than web devs and could make java / python transitions even more difficult.
- cupofcoffee 5y agoIn any decent CS school they actually teach you low-level stuff. Transitioning from Java to C++ for such a person is trivial.
- cupofcoffee 5y agoTo the downvoters: No, you aren't a better programmer because you code in C++. You just use a different programming language. That's all.
- johnnyanmac 5y agoI think the above comment bears repeating: >A good programmer could learn it, but it exposes concepts that python and java abstracts from the programmer. Education varies wildly, and overall in industry you will not apply 100% of your learnings. I'm sure I forgot plenty of algorthms that others use daily. Likely, others forgot plenty of low-level memory management than I use daily. Let's not turn this into a programmer measuring contest. They are different concepts and tools done for the purpose of solving problems, not flexing IQ's. coments like this are no better than the ones you complain about.
- pas 5y agoCertainly not trivial if all you have is school Java experience.
- JAlexoid 5y agoLow level stuff, I happily code off the top of my head in pure PIC and AVR assemblies, is not same as C++ low level stuff. (IMO) C++ is quickly becoming that middle ground language that is destined to be a niche language in a decade. It's not low level enough and not high level enough to give people dealing with assembly code or business logic code a reason to switch.
- dheera 5y agoDepends a lot on how you use it. You can pass everything by value, write very child-friendly C++ code, using std::map like Python dict and std::vector like Python list, and still VASTLY beat the speed of an interpreted, weakly-typed language like Python. But nobody does that. Chances are someone on the team takes a shit about unnecessary memory copies, the code will be littered with a smattering of pass-by-reference and pass-by-pointer, there will be std::shared_ptr, std::weak_ptr, std::unique ptr everywhere, and if you're lucky some intern will have committed some C-ish C++ code that will leave you gift of memory leaks, and now all of a sudden you need everyone to understand all the nuisances of the language and how memory works.
- amluto 5y ago> But nobody does that. Chances are someone on the team takes a shit about unnecessary memory copies It’s not just performance. In any moderately complicated C++ program, you will want a function to mutate its argument, and this falls apart. Sure, you can write in a pure functional style with immutable data structures, but I wish you luck implementing an immutable data structure with asymptotically reasonable performance without using pointers of some sort.
- pkolaczk 5y agoUnfortunately many programmers underestimate the speed at which computers can copy flat regions of memory these days and overestimate speed of code littered with pointers and indirection. Often using pointers to avoid copying a few bytes leads to worse performance. In my experience a combination of pass-by-value with move semantics provides good code readability and almost optimal performance in most cases, so that's my default. Unless a profiler disagrees in specific cases, of course.
- amluto 5y ago> copy flat regions A map or pretty much any nontrivial data structure is not a flat region. In any event, waiting to optimize until a profiler tells you to is a reasonable practice as long as you pay attention to scaling. It’s very easy to write, for example, a JSON parser that performs fine in small tests and has a nice small n^2 coefficient. And then someone throws in a bigger input than you tested and your game takes ten minutes to load.
- FpUser 5y agoI develop business backend servers in C++, no problems there and no hardware / embedded is required. I also happen to be familiar with electronics and do develop firmware every once in a while but I mostly use plain C for that.
- JAlexoid 5y agoThat sounds like you're trying to stab yourself in the face... The unfortunate bit is - there is a lot of people that are learning Python or TypeScript that can develop that business logic as fast as you at a fraction of the cost.
- FpUser 5y ago>"That sounds like you're trying to stab yourself in the face" Sounds like you have no idea what are you talking about. It was exactly Python project I've recently completely rearchitected, rewrote and greatly improved. Client can't thank me enough as it performs hundreds of times better than the old one. And from what the client told it was developed in less time than the original Python version. In general I use multiple languages including Python. I just do not see anything in Python that noticeably speeds up development of big and complex projects vs modern C++ ( or any other decent language for that matter ). You just have to know what are you doing. Language is secon