Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

C++, like most technology, works better if you put in the work to learn about it.

(Admittedly there are languages like python and ruby that buck this trend.)



Sure, but the effort/reward ratio bears some consideration. I've put a lot more effort into learning C++ than any other programming language but I'd still say it's just the language I'm maybe 4th most proficient in.


> C++, like most technology, works better if you put in the work to learn about it.

There's also the impact of software entropy: if someone has little to no experience developing software and has to grow it by adding features and fixing bugs, over time their contribution to the project invariably results in degrading it beyond the point they can possibly salvage it.

At that point, they blame the tools.


Programming languages are a means to an end. I'd rather have my cognition going towards solving the actual problem and not worrying about implementation details.


Python has a lot of footguns (and special __ methods), and insane, alien, scoping rules. And lots and lots of syntax, as well.

It is not easy to learn (I have no idea why it's considered a beginner friendly language). It benefits from putting in work to learn it. It's not as bad as c++, but it is not a shining example of how to get it right either.


You are forgetting these teeny tiny teensy little things called "return of investment" and the ratio of energy expended vs. the results achieved.


Python does work better if you put in that kind of work. Otherwise you'll get bit by the way mutable default arguments work[0] (or never learn to use it to your advantage), or by late binding of closures[1] (and maybe you'll pick up the awful habit of exploiting the confusing early binding of default arguments to make the `lambda`s that you constructed in a loop work properly[2]). Or you won't get the big picture of the descriptor protocol[3] and how method lookup[4] is related to the implementation of properties[5]. Or you won't get the fancy metaclass[6] thing that your favourite framework is expecting you to treat as an opaque abstraction[7], or how and when you might use a class decorator[8] instead of a metaclass to do that kind of metaprogramming.

[0]: https://stackoverflow.com/questions/1132941

[1]: https://stackoverflow.com/questions/2295290

[2]: https://stackoverflow.com/questions/3431676

[3]: https://docs.python.org/3/howto/descriptor.html

[4]: https://eev.ee/blog/2013/03/03/the-controller-pattern-is-awf... (yes, this was partly an excuse to get one of Zed Shaw's critics [9] into the discussion)

[5]: https://stackoverflow.com/questions/3798835

[6]: https://stackoverflow.com/questions/100003

[7]: e.g. https://medium.com/@miguel.amezola/demystifying-python-metac... - I didn't have a good link for this and didn't spend a long time searching, but this seems okay

[8]: https://stackoverflow.com/questions/681953

[9]: https://eev.ee/blog/2016/11/23/a-rebuttal-for-python-3/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: