We’re starting a new book entitled “Seven Languages in Seven Weeks,” by noted author Bruce Tate. Bruce will show you the important parts of each language, and help you get up to speed quickly.

You can help us pick which languages to include. Do you have a favorite language you’d like to nominate? If so, post it on this wiki page. If you don’t see your favorite, please add it. Be sure and add “why” you think your choice is particularly cool and noteworthy. Next week, we’ll put it to an official vote.

  • A dataflow language – Labview, Oz, etc
  • APL – Mere exposure to it makes you think.
  • Actionscript 3—Modular language like javascript (but much more advanced) based on ECMAScript
  • Ada – Embedded systems for pros.
  • AppleScript—equal parts fun & frustrating, mysterious scoping, and rules that bend with every application
  • Assembly—is it really OK for developers to neither know nor care what registers are? (Yes.)
  • COBOL—all caps all the time
  • Clojure—it’s like Lisp, only better
  • Common Lisp—everything since copies some of its best ideas
  • C—because we all know what’s in the books, but in the real world it always looks WAY different
  • C# – Not because it’s a favorite, but because it’s common.
  • D – because it’s the most valiant effort since Ada and has something for everyone
  • Erlang—concurrency made easy
  • E—understanding object-capability will transform how you think about safety v.s. power
  • F#—functional and OO on the CLR. OCaml derivative for .NET “corporate” programmer types
  • Factor—a stack-based language for the new millennium
  • Forth—Stack-based functional language
  • Groovy-A powerful dynamic language for the JVM.
  • Haskell—Static Typing as if you meant it and functional programming at its purest
  • Haxe – For his unique support of ActionScript, Javascript, PHP, C++ and NekoVM all within a single language.
  • Javascript—runs in more places than any other language. First-class functions and prototyping make Javascript more powerful than many realize.
  • Lua—JavaScript competitor in game sector
  • OCaml
  • Object Pascal / Delphi-Pascal is a learning language and an important part of programming history. Further, Anders Hejlsberg led the language development of Delphi and then went on to create C#
  • Objective-C—C with s-expressions and the object-model is so much like Ruby; also because of its relationship w/ Cocoa
  • Perl—the camel’s back has yet to be broken
  • Prolog—it’ll blow your mind (if you can understand it)
  • Python—mature, simple, defacto scripting language of the future
  • REALbasic (REAL Studio) – an excellent cross-platform development tool based on Object-Oriented BASIC; compiles native binaries for Windows, Mac OS X, and Linux
  • Ruby—Simple and elegant, the way O-O was meant to be
  • PLT Scheme – “is to Scheme what Scheme is to LISP and Algol 60”- Matthias Felleisen (7 Aug 2009)
  • Scala—all the buzz at JavaCon this year
  • Smalltalk—by popular demand. objects all the way down with powerful browser and debugger—in 1972

Are we assuming that the audience already knows C, Java (or C#), and Ruby?—No assumptions; just tell us what you’d like to see.

Let’s leave the surveying until the list has settled down some…

A reader has an informal survey here (but let’s not use it yet)

But how do you add your language to the survey?

You can’t, cause that would invalidate the previous votes. Just start a new vote

I’ve always felt that such a survey book should factor the languages into expressiveness categories. All of the languages below are Turing-complete, so nothing is impossible, but each language should demonstrate one or two things it can do easily that are difficult in the other languages, like expressing closures or list comprehensions in Ruby vs Java, or rules in Prolog vs Ruby, or garbage collection in C vs more modern languages, etc.

I think if you limit yourself to just seven languages, you may very well pick seven “popular” languages (or languages which will sell books (not a bad thing)), but you’d miss out on the rich history of how they got to be that way, and you’d lose some comparisons that are essential to understanding the trade-offs inherent in language design.

  • Ruby – pure objects, practically perfect, but slow
  • Smalltalk – same as ruby, but with persistent image
  • Lisp – here’s the periodic table; make broccoli
  • Scala – functional and picking up in importance
  • Javascript – because it’s everywhere
  • Prolog – logic via inference engine, implicit control
  • APL – cool character set, and a whole different way to think
  • Java – someone’s got to pay the bills, but JITted code is interesting
  • C++ – if it’s got to be fast
  • Assembler – no one knows what a register is anymore