Live data from Hacker News

What languages fix

paulgraham.com

61–70 of 91 posts

Re: What languages fix

#61
post #35

For Java I would suggest "Lisp is too powerful for Joe Programmer, and parentheses are scary" Java as essentially Lisp's bastard child is I think undermentioned in language history.

I know Guy Steele was part of Java's original design committee, but in what ways was Java at all "Lisp's bastard child".

Steele was brought in to write the spec. He didn't design Java.

In fact, his classic talk "Growing a Language" is among other things a very polite and implicit, but devastating critique of the design of Java.

Re: What languages fix

#62
post #15

Haskell: other languages make making mistakes too easy. This article came up about a year ago[1], so I'm just reusing my comment :P. Now I'd also add: Go: C is the prefect language, except it's too low-level. Ermine[2]: Scala is not functional (enough). [1]: https://news.ycombinator.com/item?id=4954663 [2]: https://github.com/ermine-language/ermine

> Go: C is the prefect language, except it's too low-level.

I feel go is more like "It would be nice to have a Python-like C that would also be a C-like Python"

Re: What languages fix

#63
post #27

I would dispute the description of Python, at least as an 'origin story'. The actual impetus was 'ABC doesn't have libraries or exceptions': http://docs.python.org/2/faq/general#why-was-python-created-... If we're going for why Python appealed to its early adopters as opposed to the actual motivations for creating it in the first place, something more like 'other languages are all hard to read' would be fair. You cou…

I'm never liked this list, mostly due to Python but I think other languages are also incorrectly characterized. Guido worked on ABC and wanted something for scripting tasks on a Unix machine. Python was mostly inspired by ABC but some of the syntax was inspired by Modula 3. Python is certainly not a reaction to Perl, I'm not sure Guido was aware of it when Python was born (they are close to the same age, actually).

> I think other languages are also incorrectly characterized

Agreed. This stems from a neat idea, but I think it's an after the fact rationalization (except for a few that are provably correct, like J). For example, C++ didn't stem from a direct frustration with C:

"Stroustrup found that Simula had features that were very helpful for large software development, but the language was too slow for practical use, while BCPL was fast but too low-level to be suitable for large software development."[0]

This list is cute, and provides good "taglines" for the languages, but I think it'd be met with a larger grain of salt if it hadn't been written by PG. :)

[0] http://en.wikipedia.org/?title=C%2B%2B#History

Re: What languages fix

#64
post #15

Haskell: other languages make making mistakes too easy. This article came up about a year ago[1], so I'm just reusing my comment :P. Now I'd also add: Go: C is the prefect language, except it's too low-level. Ermine[2]: Scala is not functional (enough). [1]: https://news.ycombinator.com/item?id=4954663 [2]: https://github.com/ermine-language/ermine

[deleted]

Re: What languages fix

#65

Would be helpful to see this list be updated with a few others. A couple of that come to mind: SQL: Tuple relational calculus is too low level? Julia: Hadoop is a kludge for data science? Clojure: We need Lisp for the JVM? Dart: JavaScript is a kludge? Go: C/C++ are kludges for systems programming?

Clojure can be alternatively seen as solution to:

- jvm needs a good lisp

- lisp needs libraries and a little cleaner keywords

Re: What languages fix

#66
Only slightly relevant, but an insight I had recently.

I'd noticed that all programming languages were tree-oriented. You kind of group logic into branches. This sounds obvious, but work with me here.

This reminded me of the early days of yahoo: it was a big directory (a tree structure). Then we had this revolution where everything became about loose data that was tagged. You'd have tagged data, and then search on the tags. This tag structure was better for scale than the tree structures we'd brought with us from personal computing problems.

I thought, "I wonder if you could build a tag-based programming language". And then I realised - that's what prolog is.

Re: What languages fix

#67
post #66

Only slightly relevant, but an insight I had recently. I'd noticed that all programming languages were tree-oriented. You kind of group logic into branches. This sounds obvious, but work with me here. This reminded me of the early days of yahoo: it was a big directory (a tree structure). Then we had this revolution where everything became about loose data that was tagged. You'd have tagged data, and then search on th…

Typeclasses were probably a killer feature for Haskell. I remember using functors in OCaml and they were pretty sweet, but typeclasses let you "label" types with functions and values after the fact. Sure, ghc would complain about orphan instances (if you "labelled" the type outside of the file where it was declared), but it was so darn useful.

Re: What languages fix

#68
I'm delighted by the way that TCL-like languages and Perl-like languages grew towards one another.

The experience that motivates TCL: you'll be working on your compiled codebase and think, "damn - it should be easier to glue blocks of this together."

For perl - you'll be working in shell, and then move to awk, and find yourself using the function structures and ignoring the pattern matching. And you'll think, "damn, I wish this had more powerful programming structures in it".

In the middle you get ruby and lua, which are very similar, but came from opposites.

In an earlier draft of this post I wrote python and lua above, but then I checked some history. Interesting - it's kind of an accident that python evolution to challenge the shell/awk/perl scripting space. ABC was created from academic motivations. Python 1 didn't quite know what it wanted to be. If you joined python at 1.4 and stayed through the release of 2.0, it's easy to imagine that it would have evolved with a more functional emphasis than it did. By 2.2 (new classes) it had solidified as a objecty response to perl5.

Re: What languages fix

#69
post #15

Haskell: other languages make making mistakes too easy. This article came up about a year ago[1], so I'm just reusing my comment :P. Now I'd also add: Go: C is the prefect language, except it's too low-level. Ermine[2]: Scala is not functional (enough). [1]: https://news.ycombinator.com/item?id=4954663 [2]: https://github.com/ermine-language/ermine

Scala: Maybe referential transparency is a good thing, but Haskell is scary.

Re: What languages fix

#70
post #15

Haskell: other languages make making mistakes too easy. This article came up about a year ago[1], so I'm just reusing my comment :P. Now I'd also add: Go: C is the prefect language, except it's too low-level. Ermine[2]: Scala is not functional (enough). [1]: https://news.ycombinator.com/item?id=4954663 [2]: https://github.com/ermine-language/ermine

Haskell: ML is eager.

Go: callback hell is hard to manage, but threads are too expensive.

Post reply on HN