<Your Favorite Programming Language> Loses

Accepted Session
Short Form
Scheduled: Wednesday, June 27, 2012 from 11:00 – 11:45am in B202/203


Every programming language ever created has some horrible mistakes: your favorite is no exception. We'll talk about some fundamental principles of PL design and how they fail to play out in various real languages.


Here are some some claims about programming languages that everyone should find uncontroversial:

  • Programming mistakes should be caught by the PL system
    as early as feasible, and reported without delay.
  • When a program fails to compile or run, the causes
    should be made as obvious as possible.
  • Our grade-school-learned skills of reading and
    arithmetic, and our learned skills from existing PLs,
    should be transferable to reading and writing programs
    in any PL.
  • Programs should be modular: built in small,
    simple-to-understand chunks with narrow interfaces.
  • The behavior of a program should always be predictable
    from its inputs; repeatable user behaviors should give
    repeatable results.
  • Simple, tedious, error-prone tasks should be performed
    automatically by the PL environment, not by explicit
    code in a program.

I could continue, but every PL I’ve ever used falls short on one or more of the principles already listed.

In this talk, we’ll look at specific examples from a range of languages: Perl, Haskell, Lisp, Prolog, M4, Inform7 and others. Along the way, we’ll learn a few things about PL design. I will emphasize our Nickle programming language as a source of positive and negative examples. At the end, you still won’t want to program in Nickle—but you won’t be as eager to program in your favorite language anymore either.

Speaking experience

I would estimate that I have given about 50 public talks and more than 1000 classroom presentations. My talk (http://opensourcebridge.org/sessions/579) last year at Open Source Bridge seems to have been well-received, as well as my colleagues' and my joint talk (http://opensourcebridge.org/sessions/583).


  • Beach headshot 320x200

    Bart Massey

    Portland State University


    Bart Massey has been geeking around with community computing for 35 years, and has been involved in Free Software and Open Source since its inception. For the past 15 years, he has been a CS Prof at Portland State University, where he works in open tech, software engineering, artificial intelligence and low-level software development.

    Bart’s titles include Member of the PSU MCECS Innovation Program Board and past Secretary of the X.Org Foundation Board. Bart is the architect of the X library XCB, a modern replacement for Xlib, and the author of the XCB image extension. His current open tech interests include Haskell, open hardware and building bridges between pieces of the open tech community. He was one of the original participants in the Open Source Bridge conversation.