DISQUS

David R. MacIver: Criticizing programming languages

  • Daniel · 11 months ago
    Nice list. Let me add 2:

    C#
    Good:
    - Mainstream language that actually incorporates new shiny features
    - Helps you to earn money
    - Best Tool chain I have ever seen
    Bad:
    - Microsoft/Windows Only
    - Generics were put in as an afterthought / Every object can be null

    Delphi
    Good:
    - Nice toolkit
    - High performance
    Bad:
    - Archaic language
    - IDE, compiles - all of them are buggy as hell



    Sounds like a nice StackOverflow Question ;)
  • James Iry · 11 months ago
    C++

    Good:
    - All the performance capabilities of C
    - Far more abstraction capabilities than most languages out there

    Bad:
    - So complicated no two compilers, let alone programmers, understand the same language
    - High abstraction and manual memory management are a poor mix (please don't mention RAII, smart pointers, or Boehm garbage collector - they're either too restrictive or too conservative or both)
    - Very difficult to avoid doing massive re-compile on seemingly small changes


    Assembly

    Good:
    - You can do anything you want
    - Make hardware your bitch

    Bad:
    - You can do anything you think you want to do but mostly you probably really shouldn't want to
    - It takes 16 pages of inscrutable code to do it


    Scheme

    Good:
    - call-with-current-continuation
    - gentle learning curve
    - hygienic macros

    Bad:
    - call-with-current-continuation
    - the standard is too small so each Scheme implementation adds its own incompatible "batteries included" language and library extensions
    - everything is mutable whether you want it to be or not which is odd in a functional language
  • david · 11 months ago
    You're cheating, both of you. Two items per list only! :-)

    But thanks for the contributions anyway.
  • J. Sueeth · 11 months ago
    You missed a few of my favorites:

    Zombie

    Good:
    - Inherently evil
    - Summon minions to do thy bidding
    Bad:
    - Inheriently evil
    - Summons minions who may not do thy bidding.


    LOLCode

    Good:
    - Hilarious
    - Furry-Feline-Friendly
    Bad:
    - There are no cons with LOLCode

    Haifu
    Good:
    - Incredibly poetic and beautiful
    - Perfectly in balance with the universe
    Bad:
    - Must be a Zen Master to balance the Yin and Yang and elements to create executable code.
  • david · 11 months ago
    Surely there's at least one bad feature of lolcode: It can take ur bukkit.
  • J. Sueeth · 11 months ago
    True... It also taunts when when it makes u a cookie, but eated it.

    Sometimes it can WTF.
  • david · 11 months ago
    With most people I'd question whether they'd really written enough lolcode to justify contributing it to this list. I think I'll take your word for it though. :-)

    How's the work coming on rewriting the lolcode eclipse plugin in lolcode?
  • Chris Vest · 11 months ago
    Clojure
    ------

    Good:
    » JVM + (fresh, modern) Lisp
    » Excellent concurrency features

    Bad:
    » Lacking in tools support
    » Still a very young language
  • J.Suereth · 11 months ago
    You jest now... Wait until the scala eclipse plugin is written in lolcode for improved stability!
  • david · 11 months ago
    It would probably improve its readability dramatically. :-)
  • mikiobraun · 11 months ago
    I really like your list. I think when you start learning to program, you still believe that there is "the best programming language ever". But then, you start to understand that each programming language stands for a certain view on computation, and it's hard to say that a one is uniformly better than all others for all kinds of uses.

    C++

    Good
    - As fast as C
    - Gives you quite a few tools for abstraction (e.g. templates, object oriented programming)
    Bad:
    - Painfully verbose (retype full declarations in header file and implementation file?)
    - Basically an experiment how much abstraction you can put into a language and still compile it to assembly code.

    LISP

    Good
    - really old (extra coolness factor)
    - gives you about every cool concept that has ever been invented (e.g. GC, macros, functions as objects, object-oriented programming)
    Bad
    - Parenthesis everywhere
    - Is there any maintained implementation besides Emacs?

    Also, you mind find this older post by Steve Yegge interesting: http://steve.yegge.googlepages.com/tour-de-babel

    Paul Graham had also an interesting chapter in his book "Hackers and Painters" claiming that you always believe that your current programming language is the best one because it obviously is better than everything you've used so far, and you yet don't understand the more advanced programming languages.
  • Daniel Weinreb · 11 months ago
    There are eleven currently-maintained implementations of Common Lisp. See my survey paper at http://common-lisp.net/~dlw/LispSurvey.html. I work at ITA Software, where we are building a high-availability, high-performance, full-function airline reservation system, whose core layer is written in Common Lisp, about 500KLOC. There are many, many Common Lisp success stories (see the paper).

    The parentheses are something you get used to very quickly, and Lisp development environments such as Emacs make them far easier to use. Nevertheless, I know they look weird to people who haven't used them.

    Regarding the Paul Graham paper, those of us who have used a lot of languages and do understand the more advanced ones don't think any language is "best". There are lots of tradeoffs. When I was a teenager at the beginning of the Lisp machine project at MIT, I was a Lisp bigot, but no more. Lisp is great; I do all my work in it these days, and I am general chair of the upcoming International Lisp Conference (ilc09.org - register now!!), but I respect a lot of other languages. I recently starting learning Haskell, which everybody should do: it's mind-blowingly cool, and very different from anything else. Next up: Clojure.
  • david · 11 months ago
    Just as a heads up: Comments so far have been fine, but I will actively delete comments that look like they're turning into a languages flame war.
  • Basu · 11 months ago
    I'm currently working on a moderately sized python project, so I would like to add:
    Good:
    1. The module/package system is clean and easy to use.
    Bad:
    1. The standard GUI toolkit sucks.
    2. The explicit reference to self can be a syntactic pain in the ass when you're doing heavy OO.
  • George · 10 months ago
    Hi David,

    You stated that Scala's standard library is pretty embarrassing. Why? In which sense?