I Use Ugly Languages

by connorberry

Here is a list of languages that I’ve found myself considering for upcoming projects:

  • Perl
  • PHP
  • C++
  • Shell
  • Erlang
  • Prolog
  • Tcl

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.