On Saturday, 7 August 2021 at 12:15:15 UTC, IGotD- wrote:
> This is a general discussion which applies to all computer languages and also under several decades. What I have observed is that language designers see programmers misuse the language and introduce possible bugs and therefore remove features in languages. An analogy would limit the functionality of cars because people sometimes are involved in accidents, like automatic speed limiter (soon to be law in several countries).
Language designers seem to have a big brother attitude towards programmers and think they will save the world by introducing limitations.
Examples.
Array indexes should be signed instead of unsigned because somehow programmers mess up loops among other things. Bjarne Stroustrup considered his unsigned index to be a historic mistake. While unsigned array indexes make perfectly sense, the bias towards signed seems to be that programmers are stupid. The question is, if can't make a for loop with unsigned math, shouldn't you look for another job?
Somewhat related. when Java was designed, the designer (James Gosling I believe) claimed that programmers were too stupid to understand the difference between signed and unsigned math (despite often several years of university education) and removed signed math entirely from the language. The impact is that when unsigned math is required, you are forced to conversions and library solutions. Not ideal when an HW APIs deals with unsigned numbers for example.
You are welcome to add any other examples that you find significant for the discussion.
This partially applies to D in some extent but can often be found in other languages and mentality of several language designers.
The question is, do you think language designers go to far when trying to "save" programmers from misuse or not?
Do you think there can be approaches that both prevent bugs at the same time do not limit the language?
If there wasn't a need for safe and restrictive languages they probably wouldn't exist. I'd say like most things in this world the drive to make languages safe and easy is money.
https://money.cnn.com/2012/08/09/technology/knight-expensive-computer-bug/index.html
People make mistakes, even the smartest "college/university educated" people. As well, if I want to start a business and I don't need to use a systems language like C that would be nice. I'm sure it's cheaper for a startup to hire python developers to write a backend than it would be to hire C/C++ developers to do the same thing.
Another reason, even more important than the first, would be that bugs can and have killed people.
https://theinsurancenerd.com/therac-25-a-computer-bug-that-killed-many/
https://www.linkedin.com/pulse/real-world-bugs-debugging-embedded-system-stanly-christoper
I'd can probably say with certainty that the people working on these systems were intelligent, had a CS degree and they weren't using D/Go/C#/Java etc... I agree there are some languages that, to me, seem overly restrictive but the fact is I don't have to use or learn them. Imagine how restrictive a language that has mathematical proof that it's type safe, memory safe, runtime exception safe, data-race free and dead-lock free. Take a look at Pony. Too much for me, I'll pass. My point is that it's not that programmers are stupid it's just about safety.