

What Languages Fix (2002) - ekm2
http://www.paulgraham.com/fix.html

======
ColinWright
Here are some graphs I knocked up a while ago:

[http://www.solipsys.co.uk/new/EveryLanguageFixesSomething.ht...](http://www.solipsys.co.uk/new/EveryLanguageFixesSomething.html?HN1)

There was some discussion a while ago:

<http://news.ycombinator.com/item?id=2816526>

 _Added in edit: That's a shame - someone has flagged this item so it's no
longer on the front page._ 8-(

~~~
3825
Javascript came from Java? Or was that just to make sure we were paying
attention?

~~~
ColinWright
Look at the original version of the essay from the wayback machine:

[http://web.archive.org/web/20020210063149/http://paulgraham....](http://web.archive.org/web/20020210063149/http://paulgraham.com/fix.html)

That link is in the original version of the essay, and that's why it's in the
diagram that's described as a graph of the dependencies that PG gave.

The version on the WayBack machine has:

    
    
        Javascript: Java is scary.
    

It does not have:

    
    
        Python: Perl is a kludge.

~~~
pasbesoin
So, Graham's essays are mutable. ;-)

------
btilly
We can keep on adding...

JavaScript, "We want a scripting language in our web pages."

TCL, "It should be easy to extend your scripting language in C."

SQL, "We need a standard way to talk to our databases."

PL/SQL, "We want to push complex logic into our databases."

BASIC, "We need an easy language for absolute beginners."

And so on.

But one historical comment. The _ACTUAL_ problem that Ruby was created to fix
was that Matz needed a scripting language that could handle Japanese text.
People may adopt it now for different reasons, but that is not the historical
inspiration.

~~~
windsurfer
Perl can handle Japanese just fine nowadays. Back in 1995, though, Unicode
support was... iffy at best.

Now, Ruby must be differentiated by other things.

~~~
btilly
The issue was much worse than Unicode support.

Ruby natively supports multipleincompatible Japanese encodings, including
Unicode and shift-JIS. This is a lot harder than just marking off a Unicode
checkbox.

------
tikhonj
Haskell: other languages make making mistakes too easy.

~~~
aero142
Haskell: My proofs are correct but my code is wrong. I just want to execute my
induction proofs.

~~~
freyrs3
That's probably more Coq.

------
eldavido
Ruby: _Perl has crap OO_ , and Lisp syntax is scary.

Perl did a lot of things right, e.g. regex literals, wide range of terseness
possible (one-liners vs. large modular programs), CPAN, but I could never get
over its ugly, hacked-in implementation of objects that kinda-sorta behaved
like hashes and didn't do information hiding well.

~~~
thetrb
Yes, but Perl has better libraries for that now (e.g. Moose)

~~~
guard-of-terra
You can't have good OO "outside" your language. You can't duct tape some OO to
a language and consider it done.

That's classic: PHP guy say, "we have objects in PHP5 so now it is Object
Oriented". It's not. To say that language is Object Oriented because it has
classes is like to say that language is Functional because it has functions.

So, Moose is a clever thing, but does it make every hash an object (I
genuinely wonder)? Does it provide OO API for I/O? With exceptions? Does it
make everything behave consistently? Because consistency seems to be the main
reason that Perl did not become the final stop.

~~~
zem
CLOS did a stellar job of adding OO to a non-OO language.

~~~
guard-of-terra
There are all kinds of opinions about this: [http://steve-
yegge.blogspot.ru/2006/04/lisp-is-not-acceptabl...](http://steve-
yegge.blogspot.ru/2006/04/lisp-is-not-acceptable-lisp.html) Yes, it's
wonderful that you have the band-aid — or maybe duct tape is a better analogy
— certainly you miss them dearly when you're working in other languages. But
you don't want to have to build your entire object system with duct tape.

------
gecko
I don't quite think the Smalltalk one is fair. Smalltalk-80 definitely went to
the extreme with everything-is-an-object, but PG is glossing over the history
of Smalltalk-76 and Smalltalk-72, which betray the actual purpose:
"Programming accessible by the everyman should be just as powerful as a 'real'
language, not like BASIC."

------
sudont
VB: Programmers are too expensive. Business Process people are more necessary.

MUMPS: All other languages weren't written for/by medical
doctors/professionals.

Lua: Python and Ruby are each too big to embed.

~~~
gruseom
Lua is as old as Python and Ruby. The alternative was Tcl, and the problem
with it wasn't embeddability:

 _In 1993, the only real contender was Tcl, which had been explicitly designed
to be embedded into applications. However, Tcl had unfamiliar syntax, did not
offer good support for data description, and ran only on Unix platforms._

<http://www.lua.org/doc/hopl.pdf>

~~~
sudont
Crap, you caught me on that one. I thought it was a 2000's era language.

------
noblethrasher
C# 1 --- _Java is controlled by Sun_

C# [n] (where n > 1) --- _C# [n - 1] would be more awesome if it had..._

------
dvirsky
PHP: I wanna create a goddamn webpage, like right fucking now.

------
blehbleh
Javascript: the "java" name is very cool. PHP: let's pretend it doesn't exist
by not adding it to our cool list.

~~~
krapp
PHP: Your language is trying too hard.

------
koenigdavidmj
Common Lisp: There are N dialects of Lisp, and N is too many. Now there are
N+1 dialects of Lisp.

------
chops
Erlang: Concurrency should be easier

------
xiaoma
Brainfuck: Assembly provides too much, and obfuscated C is still readable

~~~
emeraldd
Malbolge: Other languages can be used to write programs by a human being.

<http://en.wikipedia.org/wiki/Malbolge>

------
jfarmer
I'd say, Ruby: Smalltalk is scary and Perl is a kludge

~~~
hvs
Anyone who thinks Smalltalk is scary has never used it, and I doubt that is
what Matz thought of it.

~~~
jfarmer
Well, I don't think that's what anyone has ever said about any of these
languages. :D

I was just trying to stick with the form of the essay.

------
mark-r
Not sure when this came out, because none of these essays are dated - this one
is near the bottom of the list. But I like it!

~~~
chops
web.archive.org has its first snapshot of it from Feb 2002, so it's at least
10 years old.

[http://web.archive.org/web/20020210063149/http://paulgraham....](http://web.archive.org/web/20020210063149/http://paulgraham.com/fix.html)

------
btipling
Go: concurrent programming is too hard

~~~
dvirsky
Or rather: C++ & friends suck, Python & friends are too slow. Quoting from the
Go FAQ:

>Go was born out of frustration with existing languages and environments for
systems programming. Programming had become too difficult and the choice of
languages was partly to blame. One had to choose either efficient compilation,
efficient execution, or ease of programming [...]

>Go is an attempt to combine the ease of programming of an interpreted,
dynamically typed language with the efficiency and safety of a statically
typed, compiled language. It also aims to be modern, with support for
networked and multicore computing.

------
flyhighplato
Groovy: Java is not Python enough

~~~
vorg
Groovy: We don't control Rails.

------
suyash
Missing my couple of my favorite languages: PHP, Objective C, Scala and
JavaScript

------
zachrose
JavaScript: UI code should be asynchronous and throw as few errors as
possible.

~~~
guard-of-terra
JavaScript: Web pages aren't interactive enough.

------
mark-r
Assembly: binary is too low-level.

~~~
zachrose
Binary: Ternary is one thing too many.

------
guard-of-terra
[:|||||||||||||:]

