...the idea behind NewSpeak
of the book 1984 (NineteenEightyFour
) -- by restricting the language so that "freedom" and "revolution" can't be expressed, you can prevent people from thinking about such things, or acting on them.
In other words, you can use language to control people.
As a special case of LanguageChoiceImposesSocialStructure
, we find that some computer languages, by their very design, inhibit refactoring --> moved to LanguageInhibitsRefactoring
One thing that makes the difference between a comfortable and uncomfortable language, is the degree to which it allows or suppresses IncrementalDevelopment
. Some programmers need to get more frequent feedback on how they're doing, just in the sense of seeing more happening. If you use a language that allows you to see how things are evolving, you're more productive and effective than when you have to do a lot of coding up-front before you can even compile and execute the darned thing. (Many people I speak to believe that this is the same as a distinction between planning and unplanned hacking but I don't buy this. I still plan, I still design. But I also want to continuously prototype and refactor down at the micro-level.)
Absolutely agree. We have a massive framework of dinosaur C# classes enshrined in stone, totally untouchable. Nearly all of them are poorly designed, they aren't refactored and have no unit tests. And standards force us to inherit and reuse them. The slightest change proposal is heavily resisted as they say they'll have to retest everything. They wouldn't have to retest it all if they were properly factored and had NUnit tests! So the fact that C# encourages inheritance and punishes changes further up the inheritance chain, negatively impacts the programming culture and productivity. IMO, a language should be judged by the damage that an abuser (poor coder) can do. A poor coder writing a bad function is one thing, but writing a framework base class that cannot be touched and must be inherited by all reflects horribly on the language.
ESR revised "How To Become A Hacker" 07 Mar 2006: "Remove C# from the list of languages to be avoided now that Mono is out of beta."
- Don't conflate a poor framework with a language, because a poor programmer can damage any language. I wrote a well-factored framework in C# with hundreds of unit tests and a superior design for my last job. Over a year later they are using and extending it and delivered above requirements, before the deadline and client was amazed at the quality. The framework saved thousands of hours compared to writing it in many other languages.
I expected something like:
- 'put four developers on a compiler project and you get a four pass compiler'
- (this is cited elsewhere on this wiki, but because GoogleHatesWiki I couldn't find it)
only the other way around:
- 'Let a group use a four pass compiler and you get four groups:
- one specializing on the includes (the library guys)
- one group of clean coders (focussing on syntax)
- one group of hackers (specializing on efficient code generated by the backend) and
- those focussing on building (linking) all the stuff together.'
Language can't be so restricted that 'revolution' or 'freedom' are impossible to express. I think Orwell underrated human inventiveness. As for programming languages, yes they impose social structure: similar-minded people tend to be attracted and use the same language. This probably avoids some HolyWars?
I dunno... "revolution" and "freedom" give me syntax errors unless I bind them to something...
See also SapirWhorfHypothesis