<Your Favorite Programming Language> Loses



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


Here are some fundamental statements about programming languages that I hope everyone will 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 languages, should be transferable to reading and writing programs in any language.
  • Programs should be as modular as possible: built in small, simple-to-understand chunks.
  • The behavior of a program should always be predictable from its inputs; repeatable 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 from Perl to Haskell to Lisp to Prolog. Along the way, we’ll learn a few things about PL design. I will present our Nickle programming language as a source of positive examples, and occasionally of negative ones. 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


  • 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.