

I Use Ugly Languages - sea6ear
http://connorberry.com/2012/12/21/i-use-ugly-languages/

======
bithive123
This is insecurity masquerading as insight. One does not need to invoke mental
frailty in order to defend the use of a particular language. Nor is there a
dichotomy between "a focus on getting things done quickly" and beauty or
elegance.

In short, this is lazy writing capturing a lazy thought process. Nothing to
see here.

~~~
zwischenzug
It's a pointless article without knowing what the project is.

I wouldn't use perl for my multi-threaded enterprise messaging solution, but I
might use it for a useful text analysis tool.

~~~
AnthonyMouse
>It's a pointless article without knowing what the project is.

Exactly. I recall being assigned a small project years ago to print a route
list in a particular way. I'm sure it could have been done with maybe a
hundred lines of Go or Python or whatever language du jour. But it came down
to a two line shell script. Which one is supposed to be the elegant one again?

Also, there is a reason that a C compiler is written in C but a Java virtual
machine is not written in Java.

And anything with substantially more than a thousand lines of code that isn't
written in a strongly typed language is all but guaranteed to be a maintenance
catastrophe full of security vulnerabilities. (Or a pile of slow, hideous fail
as a result of all the manual runtime type validation you have to do to
prevent that from happening.)

Elegance is a function of adaptability to purpose. A screw driver is an
elegant tool to screw in a screw but an inelegant tool to hammer a nail.

~~~
zwischenzug
I manage the maintainance of millions of lines of scripting code that's not
type safe. Type safety is definitely not a significant problem, nor is speed.

------
sea6ear
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.

~~~
dysoco
Prolog -> Lisp ? Prolog is a logical and Lisp is Multiparadigm/Functional,
completly different.

I'd also change Erlang for Go, and maybe add Scala there too.

~~~
sea6ear
Yet whenever you see prolog or datalog reimplemented (see On Lisp, PAIP,
AllegroGraph, Clojure Datalog implemetation, etc) the implementers have tended
to appropriate Lispy syntax rather than the original Prolog syntax.

This might also just be laziness, or perhaps simply love for lisp syntax by
people using lisp.

~~~
martinced
"the implementers have tended to appropriate Lispy syntax"

But doesn't it make sense that, once you're extending a Lisp dialect to add
some Prolog implementation, you'll keep using the Lisp syntax?

I don't see it a question of lazyness or love: one of the main point so many
people accept to deal with Lisp's seemingly crazy parentheses is
homoiconicity.

It's not that parentheses are that great and that we love seeing: ))))))))) or
)))]))]))) (in Clojure).

It's that the benefit (homoiconicity) far outweight the cost of using that
syntax.

------
s_tec
If these are the ugly languages, what are the elegant ones? Python might cover
some of the items on this list, like Perl and TCL, but what is the elegant
alternative to Erlang? I can't think of anything. Most of these language have
a strong niche where they are simply the right tool for the job, regardless of
their elegance.

Trying to shoehorn a more elegant language into one of these niches would
probably lead to awkwardness, especially if it's something the language wasn't
designed to handle. In a way, I think using the right tool for the job is
itself a form of elegance, regardless of the tool's superficial appearance.

~~~
bitwize
Erlang is actually a fairly elegant language, it's just weird-looking to
people who are used to C or Pascal.

Perl and PHP are ugly not because of how they look on the page but because of
their bodged-together semantics, with magical variables that do magical
things, keywords that don't mean what you think they mean, etc.

If I had a word to describe Ruby it would be, fittingly, "kawaii". Like a girl
from a third-rate anime whom you think is adorable as a teenager, then you get
older, grow some taste and it dawns on you that her nose is in completely the
wrong part of her face.

~~~
zwischenzug
The pro erlangers I know are mostly lisp or haskell programmers who consider
erlang as a pact with the devil.

It's all relative. Joe Armstrong himself said he made engineering compromises
in the design of erlang because he was concerned about software useful for the
telco industry, not an academic exercise.

------
TelmoMenezes
Why would prolog be considered an ugly language? Maybe weird, but not ugly:
minimalist syntax, very few special cases, isomorphic to first-order logic and
almost equivalent to the pure mathematical notation. I would not recommend it
for general-purpose programming, but it solves a specific set of problems
better than any other language.

~~~
afandian
Agreed. Prolog as a language is about as direct and minimalist a
representation of its concept as it's possible to get (along with Lisp and
co). In that respect I would say it's rather a fine language as beauty goes.

------
jasonmw
"I Use Languages I Already Know" might be a better title.

------
dons
Content-free

------
olalonde
I feel the same when I write in English versus French. When I write in French,
I feel like I am spending much more time trying to make my text elegant. I
think I've heard this from other people as well but in the end, it's probably
mostly subjective.

------
jongold
"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?"

Ruby looks good without any effort.

