
What Languages Fix - xvirk
http://www.paulgraham.com/fix.html
======
jdleesmiller
For scientific computing:

Matlab: it takes way too much Fortran code to solve Ax=b

Octave: Matlab is closed-source (and expensive)

Julia: Matlab was designed by people who knew a lot more about numerical
analysis than programming language design

Python + SciPy: you don't actually need a whole new language just to solve
Ax=b

TeX: it's taking too long for people to typeset my books

~~~
jordigh
> Octave: Matlab is closed-source (and expensive)

We're GNU. We don't care so much about the closed/open distinction as we care
about the free/non-free distinction. The goal is that you should be able to
run and share your code without anyone's permission.

I'm also planning to make Octave expensive as well. :-) Hopefully I'll manage
to get this Octave startup off the ground.

~~~
jdleesmiller
Thanks for clarifying. And, just to be clear, I'm a big fan of Octave! I used
it extensively in my last project, and it worked great.

~~~
jordigh
In case you hadn't heard this rant before, I happen to agree with it ;-)

[https://www.gnu.org/philosophy/open-source-misses-the-
point....](https://www.gnu.org/philosophy/open-source-misses-the-point.html)

------
chimeracoder
Rust: I can still compile code that I wrote three months ago.

Go: Haskell code is too generic.

D: "(C++)++" has terrible SEO.

Java (early versions): C is so fast that nobody wants to buy our new chips.

Scala: Java doesn't have map, reduce, or lambdas.

Java 8: Oh crap, Scala's right.

~~~
voidlogic
OMHO More like:

Java: Lets make C++ simpler and safer for the average bear, and give them a
large standard library.

Go: Lets take an OO subset from Java, duck typing from Python, CSP and glue it
all together with memory-safe subset of C that is garbage collected.

------
pgt
How would Clojure be described in these terms? Java is too static/verbose?

Edit, previous discussion:
[https://news.ycombinator.com/item?id=6968775](https://news.ycombinator.com/item?id=6968775)

Some suggestions:

@tensor wrote: "Clojure: lisp promotes mutability too much."

@ajuc: "The JVM needs a good lisp."

~~~
nyir
Clojure: I like Lisp, but it needs more syntax. Clojure: I like Java
backtraces. /s

~~~
KingMob
Clojure: If ()'s is good, let's add []'s and {}'s.

------
coldcode
Why does PG not put a post date on his posts??? Maybe so people keep thinking
it something new?

------
bowlofpetunias
PHP originally: We only need a few functions, not real language.

PHP now: We need every feature of every language ever invented. Twice.

------
discreteevent
People are not scared of lisp syntax. They just don't recognise it. First
impressions really count. If somebody doesn't even recognise something at
first glance then the vast majority of then aren't going to engage with it
further. The people who are left are not enough to make something popular. Why
don't they recognise it? - Because it's not familiar. Every child learns
mathematics in school. In mathematics the convention is f(x) = 2x + 1. The
function name is outside the brackets and the parameters are within. Names are
important and names of things generally tend to be on the outside. Think about
the name of a restaurant, a town, a house, a car manufacturer's badge, a box
of cornflakes, filing cabinet drawers, folders in the filing cabinet etc. etc.
All of these names or labels are on the outside of the object. Most people
aren't afraid of lisp syntax they just don't even recognise it enough to
engage with it further.

~~~
klibertp
Somehow XML became popular despite being syntactically very close to sexps...
Why do you think XML succeeded where sexps failed?

~~~
segmondy
XML was all about encoding data, not computations. It's far easier to
understand data storage than computation. Lisp becomes scary once you start
computing and having functional/recursive calls. Look at prolog. Prolog's data
storage is very easy for anyone to grasp. dog(fido). man(john), man(dave). The
moment, you start computing with prolog recursively, most folks throw up and
are ready to stick to their procedural/imperative style.

------
dserban
Haskell: Programming is not enough like abstract algebra.

~~~
cabalamat
I've always thought of Haskell as a programming language for people who prefer
maths to programming.

~~~
jordigh
This characterisation of Haskell bugs me a lot, because most reputable
mathematicians would have nothing to do with Haskell either. The mathematical
parts of Haskell seem to attract logicians, not general mathematicians.
General mathematiicians much prefer Sage or Mathematica.

Don't get me wrong, Haskell is a great language, but it's not very
"mathematical". It just has terrible ambassadors that give the impression that
category theory and Haskell are synonymous. They're not, Haskell has its own
breed of categeory theory that I prefer to call Haskellory theory.

This is a reasonable introduction to Haskell that does away with that
Haskegorical nonsense:

[http://book.realworldhaskell.org/](http://book.realworldhaskell.org/)

~~~
cabalamat
> most reputable mathematicians would have nothing to do with Haskell either

Really? Is that because they don't like Haskell, or because they don't like
programming in general?

~~~
jordigh
A little bit of both, but just because Haskell is so weird and different for
most people, _including_ most mathematicians.

------
jacobolus
Can someone add (2002) to the title?

~~~
chalst
Two of the older posts of this article did say it was old:

1\. From that time:
[https://news.ycombinator.com/item?id=58444](https://news.ycombinator.com/item?id=58444)

2\. Says (old article):
[https://news.ycombinator.com/item?id=288749](https://news.ycombinator.com/item?id=288749)

3\. Says (2002):
[https://news.ycombinator.com/item?id=4954663](https://news.ycombinator.com/item?id=4954663)

and 4. unqualified
[https://news.ycombinator.com/item?id=6968775](https://news.ycombinator.com/item?id=6968775)

------
disputin
Seems to me those are goals, not fixes. I'd like to see a list that matches
languages to problems and domains.

------
splawn
Logo: I like turtles

------
segmondy
It's still no surprise that some of the most powerful languages on that list
are so because they didn't really "attack" other languages. Lisp and Prolog.

------
gordonguthrie
Erlang - because software contains bugs and computers fail

------
spot
the list left off perhaps the most important language for the web: javascript.
and my proposed "problem" for it:

web pages are not programmable.

~~~
mattmanser
It's only the most important one as it's the only one we're allowed to use.

More like: Can functional paradigms be used in a procedural language

~~~
jerf
By the time Javascript was designed, having first-class functions or closures
was not a radical concept. It had not penetrated to the mainstream languages
yet, but it was already to the point where they were very nearly the last
holdouts.

Beyond that, Javascript did not particularly ship with any sophisticated FP
stuff, and, really, doesn't even ship with any today. It may be nice that
Underscore can be written, but for any language with any functional
pretensions whatsoever, it shouldn't _need_ to be written, because it ought to
just be shipped with the stock language.

------
sparkie
Kernel: Scheme macros aren't first-class.

------
mjn
Answer-set programming: Prolog doesn't have well-defined declarative
semantics.

------
Quarrelsome
Surely Java should be more like:

Because when I get a int, it should definitely be a bloody int.

~~~
sparkie
More like: "we failed to notice the mistake C made of giving stupid
meaningless names to types, rather than introducing meaningful names like
int16, int32, int64."

When you say "int", you should get an integer - not an element of a (decided
by the author arbitrarily) finite subset of integers.

------
noblethrasher
C# version _N_ : C# version _N-1_ would be more awesome if it had...

------
nollidge
C# - Java is too low-level.

~~~
MichaelGG
F# - C# is too low level and a kludge.

~~~
noblethrasher
F#: Because C# needs something new to steal from.

------
iterationx
I like to see one of these for web languages / frameworks

------
Nevermark
Objective C: C is too low level and C++ is too static.

------
ecommercematt
I noticed a typo:

C: Assemby language is too low-level.

------
itry
PHP: C++ ain't good for the web.

------
vorg
Groovy: Someone else controls Rails.

------
mantrax
PHP: I can do this better than ASP. Wait, I can't.

~~~
icebraining
PHP was created before ASP. And it wasn't intended to be a full programming
language.

~~~
mantrax
Don't take me too seriously. Programmers like to joke, too ;)

------
teemo_cute
In many ways a new programming language is similar to a a new product bashing
its predecessor in able to position itself as a more superior alternative.

