Hacker News new | ask | show | jobs
by nicoburns 1513 days ago
I completely disagree. Java, C# and Python are all dramatically less complex than C++. And there is an additional issue: lack of knowledge about something in one of those languages might lead to a suboptimal implementation, but it is unlikely to lead to anything akin to undefined behaviour. As such, there is a sense in which you need to know everything about C++ in order to use it safely that isn't true of almost any other language.
3 comments

>"As such, there is a sense in which you need to know everything about C++ in order to use it safely"

Completely disagree.

Well you at least need to know a whole plethora of things that can trigger undefined behaviour, many of which are triggered by code patterns that are idiomatic in others contexts.

This is very unlike language like most other languages where you can play around with little language specific knowledge and the worst thing that's likely to happen is a runtime exception.

Only if you disregard CLR, MSIL, .NET Framework vs Mono/Xamarin/Unity vs Core vs UWP, Windows Forms, WPF, WebForms, WCF, ADO, EF,....
>you need to know everything about C++ in order to use it safely

Well, you should know the libraries that you're using in C++, but I don't think that's any different in Python or Java. Granted, the mental model is more complex in C++ but that's the price you pay for the amount of control you get.

Also, isn't undefined behavior a lot easier to come across in Python since it's dynamically typed?

python doesn't have c style undefined behavior. you might get unexpected behavior, but that is very different from undefined behavior which allows the compiler to delete your hard drive and launch a nuke if it feels like it.
Well, import ctypes.

Are you sure you master all language and library changes between versions, even minor ones?

What are the major differences between Python 1.5 and Python 3.10?

Why does it matter how Python 1 worked? Nobody is using that these days. In fact , in 2022 you can probably even get away without knowing python 2 either.
Until you find libraries that were never updated....

Very lucky ones, those that can do their work from scratch using latest version of everything, including the OSes where they get deployed.