I Use Ugly Languages
Here is a list of languages that I’ve found myself considering for upcoming projects:
I’ve always thought that I was interested in elegance, but I find for the stuff that I’m thinking about that it’s easier to get started with something without concern for elegance and then grow it organically from there.
I find that the languages that let me “get started” with the least amount of mental effort are the ones that have a focus on getting things done quickly but aren’t ones that any one thinks of as beautiful or elegant.
As a result, I don’t know that any project that I do will end up as “good” code. I’m a little terrified of that. But is it better for me to get started and end up with messy code, or to not start because I want things to be correct or good?
I recognize that for many this would be a false dilemma, that is, that they can think and work in a more elegant language without trouble. And I feel like I want to be able to work in a language that looks and feels cleaner. But when it comes to getting things started, I find that the tricks that these languages allow give me a boost somehow toward starting initial creation whereas prettier or more “correct” languages cause me to feel blocked.
Maybe that’s because I feel like I have to be more structured to use the “better” languages, whereas these other languages will let me just pour out code that does something, and then work around and try to clean it up after I’ve got something out there.
Here is a comment I posted on Hacker News to clarify some thoughts:
Here are the alternatives that I have seen posited as being cleaner / more correct for the ones mentioned:
Perl -> Python PHP -> Ruby C++ -> Java or Go Erlang -> Haskell Tcl -> Python or Scheme Prolog -> Lisp Shell -> ?
These aren’t so much my designations, as what I’ve seen in various references on the internet over the years.
Confer for citations of peoples elegance / cleanness opinions:
Tcl war usenet posts Perl vs Python wars C++ - Paul Graham's article on what languages solve, Rob Pikes reasons for creating Go. Erlang - Damian Katz "What Sucks about Erlang" Prolog - see above (re prolog syntax in Erlang) Tcl - Eric Raymond's comments on Tcl and Perl vs Python Shell - no citation, but I think defensible
In almost every case I would face the mental blockage mentioned if I were to try to use the language to the right, compared to the one on the left side.