from Hacker News

What languages fix

by cadalac on 12/27/13, 12:16 AM with 84 comments

  • by TheZenPsycho on 12/27/13, 1:40 AM

    This list hints at something interesting: The intent behind the creation of a programming language does not always match up with the result, or the culture around it.

    For example, you might say;

    Lua: SOL (our data language) doesn't have enough programming constructs.

    which is historically accurate, but in a modern context you might also say:

    Lua: Game engines and other apps need a really easy to integrate, reusable embeddable scripting language library.

    which is a vastly different problem that lua didn't necessarily set out to solve.

  • by cturner on 12/27/13, 7:50 AM

    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.

  • by tikhonj on 12/27/13, 1:55 AM

    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

  • by cturner on 12/27/13, 7:40 AM

    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.

  • by webmaven on 12/27/13, 1:56 AM

    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 could even reintroduce the Perl rivalry in the form 'Perl is too hard to read', if you insist. But it really wasn't Perl's kludgeyness per-se.

  • by schmichael on 12/27/13, 1:16 AM

    It would be nice if there was a date attached to this. It appears to be 10 years old judging by the list of languages and the sentiments attached (although time probably wouldn't alter the sentiments greatly).
  • by djur on 12/27/13, 2:13 AM

    For Ruby, I would suggest "Smalltalk doesn't like Unix" instead. What attracted me to Ruby is that it was a Smalltalk-style pervasive OO language that could be used for scripting and didn't require persistent images.
  • by ptwobrussell on 12/27/13, 12:47 AM

    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?

  • by vijucat on 12/27/13, 9:04 AM

    Had to add this because I thought it was fairly obvious, but all the other Scala mentions were either snarky or seemed to miss the core point of the title of the post : "What languages fix"

    Scala : functional programming without leaving the JVM

    Because enterprises have spent a decade or so building up JVM expertise in the form of Java.

  • by ColinWright on 12/27/13, 9:10 AM

    Way back when, I knocked up a graph of this:

    http://www.solipsys.co.uk/new/EveryLanguageFixesSomething.ht...

    There is also an enhanced version that brought it a little further up to date. Problem is, people keep insisting that it must be wrong, because X doesn't descend from Y, etc. That's why the text at the top tries to emphasise that this is a graph of "developed because of a perceived short-coming."

    Added in edit: Now submitted as a separate link for more specific discussion.

    https://news.ycombinator.com/item?id=6970017

  • by paf31 on 12/27/13, 2:50 AM

    Might as well take the opportunity to sell my own project: Purescript: JavaScript doesn't have a static type system.
  • by corey on 12/27/13, 1:37 AM

    Haskell: Programmers aren't disciplined enough to to isolate side effects by themselves.
  • by pshc on 12/27/13, 2:03 AM

    Rust: Other languages have boundary issues -- action-at-a-distance is evil.
  • by kabdib on 12/27/13, 4:48 PM

    SNOBOL: Nobody can process strings worth a damn.

    Icon: Generators are cool.

    FORTH: Omit needless features! Omit needless features! Omit needless features!

  • by intull on 12/27/13, 2:24 AM

    D: because C++ is a kludge
  • by vlucas on 12/27/13, 2:25 AM

    PHP: Perl is too hard to configure and run on the web
  • by woody99 on 12/27/13, 3:25 AM

    Node: It's hard to find JavaScript coders since there is no career path for them.
  • by seanstickle on 12/27/13, 2:08 AM

    APL: Errors increase in proportion to the amount of code typed; therefore, decrease amount of code typed while keeping expressiveness and power unchanged.

    Alternatively:

    APL: Programming should be more like math.

  • by fizx on 12/27/13, 2:50 AM

    Scala: there aren't enough ways to do this yet.

    Go: Java is too bloated.

  • by grannyg00se on 12/27/13, 3:28 AM

    Javascript: Scheme is too unapproachable
  • by aabalkan on 12/27/13, 1:33 AM

    Go: C does not have garbage collection.
  • by ballard on 12/27/13, 9:37 AM

    C fixed Fortran 66 as well as assembly being too low level (very manual memory allocations).
  • by etfb on 12/27/13, 3:09 AM

    I suspect the kindest thing one can say about Forth is:

    Forth: all the other languages were written by somebody else.

    As they say: if you've seen one version of Forth, you've seen... one version of Forth. And also: standards are a good thing, everyone should have one!

  • by MBlume on 12/27/13, 2:37 AM

    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.

  • by laureny on 12/27/13, 2:19 AM

    Interesting that the newest language that pg lists is more than ten years old. He's probably not keeping up with new language development any more?
  • by dschiptsov on 12/27/13, 2:45 AM

    PHP: somehow it runs.

    Java: not only those MIT/Stanford smart-asses can code.

    Java EE: the way to avoid a drop-out from the field.

    Javascript: just learnt .getElementById() now I can write an OS.

  • by etfb on 12/27/13, 3:11 AM

    How about:

    PHP: getting Perl and CGI to work on my web server is too damn hard.

    Or perhaps:

    PHP: I can never remember the difference between %, @ and $.

  • by krapp on 12/27/13, 2:57 AM

    Javascript: html is boring.
  • by Mikeb85 on 12/27/13, 4:50 AM

    Haxe: because nothing compiles to enough targets...
  • by hrabago on 12/27/13, 2:31 AM

    Coffeescript: Javascript is too ugly.
  • by jayzalowitz on 12/27/13, 2:03 AM

    pg: php?
  • by jbeja on 12/27/13, 2:30 AM

    Lua: Because my dog is called "Luna"

    Python: Is cute to prefix everything with "py"

    Javscript: Haha not as cool as suffix it with "js"

    Ruby: Pff i have the coolest nickname and it is "Rails"

    Clojure: Oh please, you aren't as classy as "La Clojure"

    C: The power of soul and possibility control!

    Go:tta Catch 'Em All!

    Erlang: ErrrrrrrLang!!!