I didn't work hard to make Ruby perfect for everyone, because you feel differently from me. No language can be perfect for everyone. I tried to make Ruby perfect for me, but maybe it's not perfect for you. The perfect language for Guido van Rossum is probably Python.
We wanted the language to feel fresh, fun, and rock solid.
The flip side of the coin was that even good programmers and language designers tended to do terrible extensions when they were in the heat of programming, because design is something that is best done slowly and carefully.
I can't recall any difficulty in making the C language definition completely open - any discussion on the matter tended to mention languages whose inventors tried to keep tight control, and consequent ill fate.
I would guess that the decision to create a small special purpose language or use an existing general purpose language is one of the toughest decisions that anyone facing the need for a new language must make.
Whenever the C++ language designers had two competing ideas as to how they should solve some problem, they said, "OK, we'll do them both". So the language is too baroque for my taste.
Every market we go to, we have a domain-specific language. Every domain-specific language, underneath, has an architecture.
Languages that try to disallow idiocy become themselves idiotic.
Take Lisp, you know its the most beautiful language in the world -- at least up until Haskell came along.
The principal lesson of Emacs is that a language for extensions should not be a mere "extension language". It should be a real programming language, designed for writing and maintaining substantial programs. Because people will want to do that!
Invented languages have often been created in tandem with entire invented universes, and most conlangers come to their craft by way of fantasy and science fiction.
A good programming language is a conceptual universe for thinking about programming.
At least for the people who send me mail about a new language that they're designing, the general advice is: do it to learn about how to write a compiler.
Job Control Language is the worst programming language ever designed anywhere by anybody for any purpose.
APL is a mistake, carried through to perfection.
In English every word can be verbed. Would that it were so in our programming languages.
The connection between the language in which we think/program and the problems and solutions we can imagine is very close. For this reason restricting language features with the intent of eliminating programmer errors is at best dangerous.
But the possibility of abuse may be a good reason for leaving capabilities out of other computer languages, it's not a good reason for leaving capabilities out of Perl.
After all, C++ isn't a perfect match for Java's design aims either.
My being a teacher had a decisive influence on making language and systems as simple as possible so that in my teaching, I could concentrate on the essential issues of programming rather than on details of language and notation.
Computer languages differ not so much in what they make possible, but in what they make easy.
Computer language design is just like a stroll in the park. Jurassic Park, that is.
While language can surely be used for communication (as can much else), communication probably has no special role in its design or evolution.
I have never designed a language for its own sake.
PL/1, the fatal disease, belongs more to the problem set than to the solution set.