500 Programming Languages
I mentioned yesterday that I would be starting a series, talking about “some number” of programming languages.
Well, that number, as it turns out, it at least 500.
What?
I’m very interested in programming languages, but I’ve probably only ever written code in about 25 different languages, so I’m sure there’s some great language features and paradigms that I’ve never really tried. With this series, I aim to remedy this problem.
The goal of this project is to write a blog post about, and code in, every real programming language that I can get my hands on and a few of them which some might not call “real”, with an end goal of writing about and code in at least 500 different languages.
Based on languages I’ve found over the years, and the Wikipedia list of programming languages, there should be at least 500 languages I can get my hands on. There are at least 700 esoteric programming languages, but I will only be covering a few of those, like Brainfuck, LOLCODE, and Unlambda, since I want the posts of this project to be at least somewhat useful.
Why?
Aside from my own Pokémon-style reasons for wanting to do this project (gotta catch ‘em all!), I want to share information about programming languages with others.
The idea is for each post to be a sort of introduction and crib-sheet for the language it’s about, ideally enough information for someone to gauge whether or not they’d like to try this particular language out.
For older languages, it will be more of a history, since generally most people wouldn’t be interested in actually writing code in an old, dead language.
Also, I would love to see some conversation emerging around various languages, be it discussions of good and bad things about a particular language, or elaboration on parts that I may have overlooked.
The Plan
For each language, I plan on doing the following:
- Write a summary of the language, including who created it, what it’s main uses might be, what paradigms it supports or encourages, and any other tidbits about the language itself.
- Cover the anatomy of a basic program in the language.
- Write a somewhat non-trivial program in the language. This I will only do for languages which I can get a running compiler or interpreter for. I’m not going to spend any money on this, so I will most likely not write any code in strictly-commercial languages or ones which would require me to buy an IBM mainframe to run.
- Cover where and how to get and set up the language. If a language is particularly hard to find and/or get compiling, I’ll include information on how I got it and got it set up.
- List plenty of links to language resources (for languages which have plenty of resources). I am by no means going to give a complete, exhaustive look at each language, so for those who are interested I will give you links to wherever it is that I think you can get more in-depth information.
- Anything else that seem appropriate at the time.
If anyone can think of anything else they would like me to add to this list, please let me know. I really want this to be a project for others, not just me, so I’ll be glad to get any feedback anyone has.
The List
For those who are interested in which languages I’m planning on writing about, the tenative list is below.
If you know of a programming language that is not on the list, please let me know and I’ll add it. There are currently 518 languages on the list, but I know that I won’t be able to get my hands on some of them, so I’d like to be sure that I have at least 500 that I can get my hands on.
As I have time to do so, I will update the list to include links to the most relevant page about each language, and as I publish each post I will add a link to the post in the list as well.
I will be going through the list in lexicographical order, so first up: A+
And now, without further ado, the list:
(If you see the same name more than once, it’s because there are multiple languages with that name.)
- A+ See my post on A+
- A++
A# (.NET)this is just a port of Ada to the CLI. No need to do Ada twice.A# (Axiom)*seems to actually just be called “The Axiom Language,” so I’ve moved it belowA-0I couldn’t even find an example of what code for the A-0 system looked like, let alone a compiler- ABAP
- ABC
- ABC Algol
- ABLE
- ABSET
- ABSYS
- ACC
- ACCENT
- ActFX
- ActionScript
- ACT-III
- Ada
- Agora
- Afnix
- Aldor
- Alef
- ALF
- ALGOL
- Alice
- Aluminium
- APL
- AppleScript
- Amiga E
- AMOS
- ARB
- Arc
- ARS++
- Assembly
- ATS
- AutoLISP
- AWK
- ASP.NET
- B
- BACI
- BASIC
- bc
- bCompile
- BCPL
- BeanShell
- Befunge
- BETA
- Bigwig
- Bistro
- BitC
- BLISS
- Blue (Monash)
- Blue (Lechak)
- Boo
- Bourne Shell
- Bourne-Again Shell
- Boxx
- BPEL
- Brain
- Brainfuck
- BUGSYS
- BuildProfessional
- BYOND
- C
- C–
- C++
- C#
- C shell
- Caché ObjectScript
- CAL
- Cat
- Cayenne
- C-BOT
- Cecil
- Cel
- Cesil
- CFML
- Cg
- Chapel
- CHAIN
- Charity
- Chef
- CHILL
- CHIP-8
- chomski
- Chuck
- Cilk
- CICS
- CL
- Claire
- Clarion
- Clean
- Clipper
- CLIST
- Clojure
- CLU
- CMS-2
- COBOL
- CobolScript
- Cobra (from Cobra Language LLC)
- Cobra (from Squeaky Duck)
- CODE
- ColdFusion
- ColorForth
- COMAL
- Common Intermediate Language
- Common Lisp
- COMPASS
- Component Pascal
- COMIT
- Concept
- Concurrent Clean
- Concurrent ML
- Constraint Handling Rules
- Converge
- CORAL 66
- Corn
- CorVision
- COWSEL
- CPL
- CSP
- Csound
- Cue
- Curl
- Curry
- Cyclone
- D
- D4
- dBase
- Dao
- DASL
- DataFlex
- Datalog
- dc
- DCL
- Deesel
- Delphi/Kylix
- Dialect
- DinkC
- Dialog Manager
- DIBOL
- DL/I
- Dylan
- Dynace
- D++ (J#/J++)
- E
- Ease
- EASY
- Easytrieve
- eC
- Edinburgh IMP
- Einstein
- Eiffel
- Elan
- elastiC
- Elf
- Emacs Lisp
- EGL
- Epigram
- Erlang
- Escapade
- Escher
- Esterel
- Euclid
- Euphoria
- Euler
- EXEC
- EXEC 2
- Extensible ML
- F
- F#
- Factor
- Falcon
- FALSE
- Fan
- Fawlty
- Felix
- Ferite
- FFP
- Fjölnir
- FL
- Flapjax
- Fly
- FLOW-MATIC
- FOCAL
- FOCUS
- FOIL
- FORMAC
- Formula Language
- Forth
- Fortran
- Fortress
- FoxPro
- FP
- Frink
- Frontier
- F-Script
- Fuxi
- GAP
- Game Maker Language
- GameMonkey Script
- GAMS
- Gibiane
- GLSL
- Gödel
- Godiva
- GOTO++
- GPSS
- GRASS
- Green
- Groovy
- HAL/S
- HAScript
- Haskell
- HaXe
- High Level Assembly
- HLSL
- Hoc
- Hop
- Hope
- HyperTalk
- ICI
- Icon
- IDL
- IMP
- Inform
- Information Processing Language
- Informix-4GL
- Io
- Ioke
- IPTSCRAE
- ISPF
- ISWIM
- J
- J#
- J++
- JADE
- Jal
- Janus
- JASS
- Java
- JavaScript
- JCL
- Join Java
- Joule
- JOVIAL
- Joy
- JSP
- K
- KEE
- Kiev
- Korn shell
- Kite
- KM
- Kogut
- KRC
- KRL
- KRYPTON
- L
- L
- L
- L
- LabVIEW
- Ladder Logic
- Lagoona
- LambdaMOO
- LANSA
- Lasso
- Lava
- Lead
- Leda
- Leadwerks Engine
- Lean
- Legoscript
- Lei
- Limbo
- Limnor
- LINC
- Linda
- Lingo
- LISA
- Lisaac
- Lisp
- Logo
- LOLCODE
- LPC
- LSL
- LSE
- Lua
- Lucid
- Lush
- Lustre
- LYaPAS
- M
- M4
- MAD
- Magik
- Magma
- Magpie
- Maple
- Mary
- Mathematica
- MATLAB
- Mawl
- Maxima
- MaxScript
- Maya Embedded Language
- Mercury
- Mesa
- MicroScript
- MillScript
- MIMIC
- Mindscript
- MiniD
- Miranda
- MIVA Script
- ML
- Moby
- Modula
- Mondrian
- Mortran
- Moto
- Mouse
- MSL
- MUMPS
- Mythryl
- Napier88
- Natural
- Nemerle
- NESL
- Net.Data
- NetLogo
- newLISP
- NewtonScript
- Nexus
- NGL
- Nial
- Nice
- Nickle
- Nosica
- NQC
- Nu
- NXC
- o:XML
- Oberon
- Object Lisp
- Object Pascal
- Objective-C
- Objective Caml
- Objective-J
- ObjectLOGO
- Obliq
- occam
- occam-π
- Octave
- O’Haskell
- OmniMark
- Opal
- Open Programming Language
- OPS5
- ORCA
- Organiser Programming Language
- Oxygene
- Oz
- P”
- PARI/GP
- Pascal
- Pawn
- PCASTL
- PEARL
- Perl
- PHP
- Phrogram
- Pico
- Piet
- Pike
- PIKT
- PILOT
- PILS
- Pizza
- PL/0
- PL/1
- PL/8
- PL/B
- PL/C
- PL/I
- PL/M
- PL/P
- PL/SQL
- Plankalkül
- PLEXIL
- Pliant
- PLOT
- PPL
- POP-11
- Poplog
- PostScript
- Processing
- Prograph
- Prolog
- Promela
- Proteus
- PROIV
- ProvideX
- Python
- Q
- Q
- Qi
- QtScript
- QuakeC
- Qore
- QPL
- R
- R++
- Ratfiv
- Ratfor
- Raven
- rc
- REPL
- REBOL
- Redcode
- REFAL
- Reia
- Revolution
- REXX
- Rlab
- Robot Scripting Language
- RPG
- RPL
- Ruby
- S
- S2
- S3
- S-PLUS
- S-Lang
- SAIL
- SAM76
- SAS
- Sather
- Sawzall
- Scala
- Scheme
- Scilab
- Script.NET
- Sed
- Seed7
- Self
- SETL
- Shakespeare
- Shift Script
- Shiny
- SIMPOL
- SiMPLE
- SIMSCRIPT
- Simula
- SISAL
- Slate
- SLIP
- SMALL
- SmallTalk
- SNOBOL
- Snowball
- SNUSP
- SPARK
- Spice
- SPIN
- SP/k
- Squirrel
- SR
- S/SL
- SML
- SuperCollider
- Subtext
- Suneido
- SYMPL
- SyncCharts
- T
- TACPOL
- TADS
- Tea
- TECO
- TIE
- Tcl
- Tex
- Timber
- Tom
- TOM
- topspeed
- Trac
- trad4
- TTCN
- Turing
- TXL
- Ubercode
- Unicon
- Uniface
- uniPaaS
- Unlambda
- UnrealScript
- Vala
- Verilog
- VHDL
- Voodoo
- vvvv
- Water
- WebQL
- Whitespace
- X++
- X10
- XBL
- xHarbour
- XL
- XOTcl
- XPL
- XPL0
- XQuery
- XSLT
- Y
- Yoix
- Yorick
- Z
- Ziggurat
- Zonnon
- ZOPL
- ZPL
- ZZT-oop
- Ωmega

July 6th, 2009 at 12:46 pm
AutoLISP
July 6th, 2009 at 1:39 pm
You missed the excellent Claire language.
July 6th, 2009 at 3:39 pm
Befunge
July 6th, 2009 at 4:18 pm
awesome idea paul
i expect to see a video accompanying the legoscript one
July 6th, 2009 at 4:28 pm
I may have to break my “not spending any money” rule for the lego-based languages
I had a mindstorms set at one point, but I don’t anymore. Cheap, easy-to-modify robotics, how can you argue with that?
Video is a great idea, though. I’ll probably do screencasts for any language I don’t think people would want to take the time to install themselves..
July 7th, 2009 at 2:19 am
Doing a <5m screencast for every language would be the best thing in the world! At the end there would be an awesome collection “Introduction to 500 programming languages”. Think about it!
July 7th, 2009 at 2:21 am
Oh, and you should have Autoit on the list, its nice to “script” windows.
July 7th, 2009 at 11:32 pm
Pro*C (I used to use this)
Pro\*C (also known as Pro\*C/C++) is an embedded SQL programming language used by Oracle Database and Sybase SQL Server database management systems. Pro\*C uses either C or C++ as its host language. During compilation, the embedded SQL statements are interpreted by a precompiler and replaced by C or C++ function calls to their respective SQL library. The output from the Pro\*C precompiler is standard C or C++ code that is then compiled by any one of several C or C++ compilers into an executable.
July 8th, 2009 at 12:06 am
You are INSANE. This looks like a great project – good luck!
P.S. You are crazy.
July 8th, 2009 at 11:15 am
So, will you write a “how to shoot yourself in the foot” in each language?
July 8th, 2009 at 12:13 pm
Fabien: Sure. In this first language I’m doing, A+, I think that section will be something like “How to shoot yourself in the foot with this language: try to use this language.”
July 10th, 2009 at 4:50 pm
Dude, I’d be so down to help out with this. Biggest problem I have for program projects is coming up with the ideas of what to program. Know any place I could get ideas from?
July 12th, 2009 at 11:18 am
You might like to look at my only encyclopedia of programming languages, it is about 8000 strong and it has lots of original documetnations as well as details of the lanugage. It also has a family tere of about 4000 languages.
A+ is a marvelous place to start, the APLs are some of the most original thought in programming.
Glad to see you have included IMP as well, the steady progress of the English general purpose autocodes is very much overlooked, depite the fact that they were contributory towards CPL, therefore BCPL, therefore the great branch of the C languages.
July 14th, 2009 at 5:00 pm
TECO the original language of Emacs. Also the hardest language I have ever programmed in.
July 14th, 2009 at 5:59 pm
Andy: I had assumed I wouldn’t be able to get my hands on TECO, but it looks like there are some implementations out there that might run on a Linux machine. It is a particularly scary-looking language, though..
July 27th, 2009 at 5:15 pm
[...] making (somewhat slow so far) progress on my goal to program in 500 programming languages, it occurred to me that this could be a much more interesting project if I got more people [...]
August 6th, 2009 at 3:48 am
[...] my latest in my series of 500 Programming Languages, I decided to write a (simple) synthesizer in [...]
August 6th, 2009 at 3:11 pm
Nobody has mentioned http://99-bottles-of-beer.net/ so I thought I would, since the site’s basic idea is very similar to yours
August 6th, 2009 at 3:22 pm
gagbro:
Ah yeah, I probably meant to mention that site at some point, and I’m sure I at least said something about “99 bottles of beer,” but didn’t explicitly mention the site…
November 8th, 2009 at 4:10 am
Thanks for including Claire!
AmbientTalk/2 (http://soft.vub.ac.be/amop/at/tutorial/preface) is a sleek new scripting language with support for ad hoc networking descended from Agora, Pico and E. It integrates with the JVM and could even be useful.
In MCPL (http://www.cl.cam.ac.uk/~mr10/MCPL.html), Martin Richards fuses his BCPL – ancestor of B and C, and the most brutally bit-oriented language imaginable – with Prolog and ML. The body of a panther; the wings of a dove; the head of Will Ferrell.
Lollimon (http://www.cs.kuleuven.ac.be/~dtai/projects/ALP/newsletter/may06/nav/articles/brigitte/article.html), which combines backwards- and forward-chaining linear logic programming, deserves serious study from future language designers but in itself makes Haskell look like QBASIC.