If programming languages were religions…

Since everyone is sending me this link, I’ll go ahead and mention the amusing comparisons between various religions and programming languages…however, I am deeply offended. They left out the greatest programming languages of all, Pascal (especially Object Pascal) and Modula-2. What’s with all this praise for obscurantist C and its dialects? Wirth’s languages win on clarity and structure.

Perhaps it is because they can’t be compared to religion in any way.


  1. Dave says

    Look for Python.

    “Python would be Humanism: It’s simple, unrestrictive, and all you need to follow it is common sense. Many of the followers claim to feel relieved from all the burden imposed by other languages, and that they have rediscovered the joy of programming. There are some who say that it is a form of pseudo-code.”

  2. Iason Ouabache says

    The only addition I would make to that list is that Discordianism is “brainfsck”. It’s sole purpose is to scramble your mind and give you a major headache.

  3. Andrew Bolton says

    Most of those aren’t real programming languages just scripting languages.
    Spot on with Pascal – and Algol!
    And what about Fortran?
    Oh well. Young people these days even think that UNIX is a serious operating system.

  4. Cesium says

    Pascal is Sunday school – it’s used mostly for teaching, differs slightly from the major Abrahamic (C-like) religions, and while important to some programmers is widely not considered a serious language.

    No wager jokes, please.

  5. Who Cares says

    COBOL has the wrong religion.
    We’d need one that people think is almost extinct, has a habit of appearing in many and strangest of places, underpinning some of the more important uses of databases.

  6. Daler says

    The only addition I would make to that list is that Discordianism is “brainfsck”. It’s sole purpose is to scramble your mind and give you a major headache

    It’s true: I once wrote a program that did integer division. Towards the end I thought I was a glass of orange juice.

  7. Cesium says

    Also, Algol is probably Zoroastrianism – it was once a widespread religion, but its territory was largely taken over by later monotheistic faiths that it influenced.

  8. Sven DiMilo says

    In my life, I have written programs in only 2 languages:
    FORTRAN…on IBM cards.
    BASIC (no not Visual, just…BASIC).
    Fuck, I’m old.

  9. Chris P says

    Well at least they have my favorite – APL. Been using it since 1970. What’s fun is that I can do engineering programming on a PDA. I am still using many of the programs I wrote in the beginning.

    Funny that they recently had an article in Embedded Systems Design extolling code reuse.

    But I’m not a scientologist. And as far as APL goes I WILL NOT EVANGELIZE. I regard it as a competitive advantage so I would not want its proliferation. As long as there is a core group sustaining it – that’s fine with me

    Chris P

  10. Robster, FCD says

    Great. I knew about the two major competing religions, Mac and PC, but now there are subcults and sects thereof? (yes, I know that my comment is way off, but it is funny. Laugh. LAUGH DAMMIT!)

  11. Moggie says

    Pascal? People still use that? Or are you living in some time-warp where flares, platform shoes and eating quiche are still in fashion?

  12. Graculus says

    I have to object to the characterization of APL as Scientology. Let’s see.. elegant but very limited application. Shinto?

    And Zoroastrianism (the underpinnings of Western montheism)? That has to be FORTRAN

    And Sven.. I started on FORTRAN (a variant of 66 called WATFOR (WATerlooFORtran) on cards, and then BASIC, not VISUAL BASIC. You are not alone.

    But I also know a metric assload of other dead languages. APL, RPG, Assembler, COBOL…..

  13. Alex Besogonov says

    Heh, there’s no Q and K in this list :)

    There’s nothing like finding bugs in programs like “(!R)@&{&/x!/:2_!x}’!R” in the morning…

  14. tsg says

    I predict this thread will get to 500 comments in an hour.

    Just to help it along: VI IS BETTER THAN EMACS!!!!one!

  15. dean says

    “In my life, I have written programs in only 2 languages:
    FORTRAN…on IBM cards.
    BASIC (no not Visual, just…BASIC).
    Fuck, I’m old.”

    Got you beat. I just THREW OUT my notes, and programs (on cards) from a graduate class in assembly language on a PDP-10.

    Wait, if you’re old, that means I’m….. :(

    Time for a good shot of whisky.

  16. Jeff Satterley says

    “Pascal is the Church of England. Once having quite an extensive and radical following, it has since mellowed out a lot. These days its followers have mostly given up on converting the world to their point of view. It’s looked down at with some bemusement by some of the bigger languages that see themselves as more serious. Has trouble attracting young people.”

  17. says

    They got Perl right, that’s for sure. I’ll have to show my boss this list next time he asks why my cubicle is strung with chicken guts.

    Python is “liberating”, though? Maybe in some Marquis de Sade/Story of O/Clive Barker way, I guess — pain and bondage mystically freeing the practitioner from their prison of flesh. Python isn’t a religion, it’s a fetish.

  18. K. E. Taylor says

    Oh, the heathens. This is obviously a fundy list.

    They don’t have the root of all languages, Assembler. Assembler was, Assembler is, and Assembler shall be.

    Either that, or I need to pull my head out of my DASD and join the 21st century.

  19. Nerd of Redhead says

    In my life, I have written programs in only 2 languages:
    FORTRAN…on IBM cards.
    BASIC (no not Visual, just…BASIC).
    Fuck, I’m old.

    That was about when I started. I also added Pascal and Apple 6502 Assembly before I gave up programming.

  20. Sharkey says


    Most of those aren’t real programming languages just scripting languages.

    function sarcastic_reply_in_Lua()
    In my day, we had to do our coding on a Turing machine! And not one of them-there fancy Universal Turing Machines, neither. We was just glad to have both one’s and zero’s; my gran-pappy had to program just using one’s and a shovel…
    end — sarcastic_reply

  21. says

    They left out the greatest programming languages of all, Pascal (especially Object Pascal) and Modula-2.

    Well, Object Pascal has done me extraordinarily well for the past 15-odd years in its various incarnations, so I will admit a fondness for it.

    I can’t get quite as worked up about ‘language wars’ as I used to. It used to inflame my passions, but nowadays, it depends so much on fluency, stability, library availability, debugging, and even such casual concerns as whether one can get cheap web hosting for it, and I find different advantages for each.

    I would not have put Python as Humanism at the very least. At minimum, I have seen the indentation-as-code-level be a big issue for people. I don’t necessarily understand the trouble, but people not enamored of the concept are not “throwing away common sense”, either. It’s an okay language.

    C++ as Islam would have given me a chuckle when I was knee-deep in it, in addition because its use of macros instead of modules made for some very long compiles that stopped everything, somewhat reminiscent of Salat (the five prayers a day)

    Programming languages are like religion in that once you know how one works, you know how a lot of other ones work, and in that anyone who thinks that their language is the best and all others suck are often exemplars of the Dunning-Kruger effect ;)

    The one way that they are particularly unlike religion is that if you are in this field, you could not say that not using any language is superior to all the languages, as is the equivalent case in religion. *grin*

  22. Thuktun says

    Assembler is like animism. Once it was nearly ubiquitous. In modern times, it’s generally considered to be primitive, but people often use it without realizing it.

  23. Marc Geerlings says

    I’m sorry but people who adore pascal never ever did some real programming.

    My first contact with programming was four years long of pascal studying electric engineering. Now I’m facilitating research by developing imaging processing software and I can tell you that without c,c++ and recently objective c, in my job it would be hopeless difficult to archieve anything.

  24. tim Rowledge says

    Left out Smalltalk. Which is silly, since it is the only language good enough to be worth the effort of criticising. All the rest are just a waste of bits.

  25. NewEnglandBob says

    Dean @23

    PDP-10? That new-fangled machine? You at least had paper tape.

    I programmed on a PDP-8 AFTER using 4 bit microprocessors from Rockwell and Intel (4004).

    But I don’t feel old, now using C, C++, PHP, javascript, HTML, SQL, etc.

  26. Nomen Nescio says

    hmm. so i would be a humanist, forced to practice voodoo in order to make a living, aspiring to one day becoming a zen master?

    that sounds… distressingly credible, actually.

  27. John Huey says

    Heh, there’s no Q and K in this list :)

    There’s nothing like finding bugs in programs like “(!R)@&{&/x!/:2_!x}’!R” in the morning…

    Let’s not forget J.

    I’m thinking these should be considered as the kabbalah of programming languages.

  28. says

    My best picks from this list: Perl as voodoo, Python as humanism and Visual Basic as satanism. The rest of the list is just filler for these three.

  29. Bob Munck says

    FORTH is Pastafarianism.

    Ada is atheism. One of the comments at the main article said this, but he had the wrong reasons. The statement only works on a PZ Myers comment thread. (Unfortunately, I suppose Ada is militant atheism.)

  30. frog says

    Ah, they missed the greatest language of all — Postscript and all it’s derivatives!

    That’s atheism. Not lisp —

    (is-like Zen (in-it’s lisp (syntaxless baroqueness))))

    — but my favorite:

    simplicity cleanliness and Postcript in-it’s atheism is-like.

    It is what it is — no mystification, but everything is possible. There are no other languages — everything else is obfuscation and lies! You haven’t lived until you’ve done a major project in RPN with late-binding.

  31. Gregory Kusnick says


    For what it’s Wirth…

    Klaus Wirth spent a year as a visiting scientist in the lab where I worked back in the ’70s. The joke at the time was that Europeans called him by name (“Veert”) whereas Americans called him by value (“Worth”).

  32. john hackworth says

    Good to see you are a Delphi fan!

    re: Brainf*ck – surely Rastafarianism? :)

    Brainf*ck is for pussies anyway – real men code in Malbolge (Westboro Baptist Church perhaps? It’s one of the circles of hell in Dante’s Inferno (albeit there spelt ‘Malebolge’), which is where WBC will end up in the unlikely event that there is a god…)

  33. says

    The Lua/Wicca one makes absolutely no sense to me, considering that Wicca is (like most neopagan religions) closely bound to its environment. It’s almost entirely an Anglo-American phenomenon, and not portable at all. I guess you could make an argument for Lua being paganism in general. Or, even better, animism — it’s not complete in itself but finds a way to fit into almost any larger system.

    And, as a Ruby programmer, I find the Ruby and Python entries laughable.

  34. Dave Wiley says

    Pascal blows. This is a teaching language not one designed for real work. Things may have changed since, but back when I was using Pascal it didn’t even have boolean operators. What kind of language is that? Plus the library support was pathetic. Can you even use sockets in Pascal? Personally I miss B, but my job requires me to use C and sometimes they let me write in C++ (yummy.)

  35. eljay says

    I still make my living with COBOL and ASSEMBLER on mainframes. Been doing it for 35 years and look set to do it while Americans use electricity and credit cards.
    Assembler, its not a religion, its GOD.

  36. says

    I’m sad they missed Ada, and I agree with the above commentator that it should have Atheism — it has everything you need to have a full programming life, but is shunned by all other language religions.

    Glad to see Haskell there though.

    I suspect the compiler of the list is a Python programmer (which is ironic, considering it’s usually interpreted).

  37. JPS, FCD says

    I concur with Doc Bill @ 44.

    Marc G @ 38, you don’t know what you’re talking about. I adore Pascal, and Delphi as well, and I’ve done a hell of a lot of real programming — sometimes in assembler, sometimes in SQL, sometimes in intermediate languages.

    Anyone have a suggestion for SAS?

  38. Alex Besogonov says

    Nope. Ada is satanism – it makes you follow excruciating rules to get anything done.

    PS: “Programming in Ada language” book title translates to Russian exactly like “Programming in Hell’s language”

  39. Mike V says

    Pascal is Cult of Zeus. Died out years ago, but you’ll still find a few people who claim to follow it if you look hard enough.

    Perl’s definitely voodoo, but I couldn’t stand Python. Nothing ‘freeing’ about it, it’s just a new set of arbitrary rules that are really no different than the old ones, they just feel that way because every programming instinct in your brain is screaming in agony when you try to indent blocks of code with spaces instead of curly braces. :P At least that’s my impression after working with it for 3 months at my last job.

  40. gazza says

    Forget the programming language comparisons, I just love the phrase ‘Cafeteria Christianity’. I might not get out much but I haven’t come across it before. It just sums up some young trendy christian waffling away while strumming his guitar and singing ‘Morning has broken…..’.

    Like others here I have been quite familar with the earlier predecessor ‘religions’ – Fortran 4, Basic, etc. Which means we do know the true primitive mysteries of computing – BM (before microsoft).

  41. JM says

    Someone once described C to me as “a high-level assembly language”. As I program in C (as well as much else), I started to become rather angry, and then realised that the speaker meant the description as a compliment. I couldn’t agree more.

    Pascal worked well as an initial teaching language, kindergarden level – does anyone still use it? – but Brian W. Kernighan’s article called “Why Pascal is not my favorite programming language” – http://www.lysator.liu.se/c/bwk-on-pascal.html – describes his realisation that it “is just plain not suitable for serious programming”. Of course, things have moved on so far from then.

  42. says

    Yes, programmers don’t like following rules, which has a lot to do with the sorry state of software development today … it’s been truly said that Ada programmers find errors with the compiler, not the debugger.

    Are programming language flamewars out of vogue these days, or am I just looking in the wrong places?

  43. Sharkey says


    The Lua/Wicca one makes absolutely no sense to me, considering that Wicca is (like most neopagan religions) closely bound to its environment.

    I’m a Lua programmer, so I’ll respond: Lua is closely bound to the environment: the setfenv/getfenv functions let you change a function’s environment (essentially, change the set of globals accessible by the function). Modules are implemented using this technique.

    Besides, I thought the Moon connection was a funny nod :)

  44. Olorin says

    Ha. I’m not the only APL nut left. I once programmed the entire Game of Life (on an arbitrary-sized board) in a single line of APL code.

    Yet, APL was originally developed to be a descriptive language, not an operational one. Once I wrote a patent application for a specialized pattern-recognition processor in which the inventor defined all of the instructions as APL functions. When asked what the instructions would do for some bizarre set of operands, he would say, run the definition through an APL interpreter; whatever comes out is what it should do.

  45. says

    Wow, Kernighan’s list hasn’t been relevant to working Pascal variants for about two decades.

    One might as well be ragging on the problems with cfront or token pasting…

    …or maybe line numbers.

  46. tsg says

    it’s been truly said that Ada programmers find errors with the compiler, not the debugger.

    I always thought the more errors the compiler could catch the better. It’s one of the reasons I hate the “variables declared the first time they’re used” function of a lot of languages. I suffer with declaring variables if it means my compiler tells me when I misspell them instead of creating another one and letting me tear my hair own trying to find out why my code doesn’t work.

  47. says

    I’ve seen some pretty nasty Java/Ruby ones just this past year.

    Why do we care so much? It’s not enough that we enjoy the languages we use, but all others need to suck. It’s almost like … what’s that other thing that people believe in really strongly? You know, the one that sends planes into buildings? I’m sure it will come to me eventually.

  48. Ken Shipe says

    That’s funny…I’m a Visual Basic (.NET) programmer. No wonder people always assume when I say I’m an atheist it means I worship Satan!

  49. says

    I always thought the more errors the compiler could catch the better.

    Well, exactly :-) You want the compiler to tell you as much as possible about what’s wrong with your program. Haskell and Ada are particularly good at this.

  50. says

    Those of you bitching about Python’s indentation semantics: if you aren’t indenting all code (in any procedural language) that way anyway, thank god I do not have to work with your code.

  51. says

    Why do we care so much?

    I dunno. Part of it might be mindshare. The most popular languages get better support. For example, good luck finding an web hosting service that includes Embedded Ruby and PostgreSQL rather than PHP and MySQL. That can have practical consequences. And I sure wouldn’t mind if I could use Ruby on Linux at work instead of COBOL on Windows, but meh, it’s a job, it’s not supposed to be enjoyable.

    I don’t really feel that one language can be objectively said to be better than another. It’s very dependent on context and implementation details. So unless I’m being forced to use something, I’ll use what I like and try to keep informed of what else is out there in case something I like more comes along.

  52. says

    Those of you bitching about Python’s indentation semantics

    Another characteristic that programming languages and religions share: pre-emptive offence-taking! Cool.

  53. says

    tsg -> I concur. As much as I love PHP for its pick-up-and-go capability, I remember the open source software I was using converting from regular expressions to an object-oriented XML library.

    Trying to re-implement my changes was a bit… aggravating. It wasn’t even so much spellings of variable names, it was trying to print things out on the web and getting (object) or (array) instead of a meaningful error (or, heck, the contents of the object or array :)

    JavaScript can be most aggravating for similar reasons :)

    I always found Ada interesting. I quite liked the way it did its task/entry pieces, one of the few pieces of language-based multithreading support at the time, I really liked their generics model, and their operator overloading was quite pleasant (function “+” indeed!). The object-oriented add-on was a bit funny (seriously, MyClass`Tag?).

    Renaming it from its anonymous name “Green” to being named after Ada Lovelace was classy, too.

    The two things that I remember people not liking about Ada: the fact that the American military used it (was every programmer a conspiracy theorist back then?) and “the Ada process” that got used along with the language that was pretty torturous for the workaday programmer.

    As much as I liked the language, though, I never encountered a version of it I could run. The version for the Amiga was the slowest-arse interpreter on the face of the planet, and DOS versions were troublesome.

  54. xebecs says

    What a lame list. All those C dialects, and they left out Objective C, the one I’m actually working in these days. I don’t know about OC as a religion, but it wears with pride all of the markings of C — it doesn’t just let you shoot yourself in the foot, it gladly points the gun for you.

    Also, it’s hard to believe they left out assembly languages completely.

  55. Bob Munck says

    Personally I miss B, but my job requires me to use C

    It’s true that the B language was the predecessor of C. Here’s a trivia question: What is C’s successor in that progression? And what comes after that? (Not that deviant C++.)


    Answer: [P and then L, from the ur-language BCPL] (If you can’t see the answer, select it.)

  56. says

    Another characteristic that programming languages and religions share: pre-emptive offence-taking!

    You mistake exasperation for offense, sir.

  57. says

    @Ritchie: gcc supports Ada, so go nuts :-) gcc-gnat is the name of the yum package. When I was a student, I also had trouble finding an Ada compiler, so I wrote one, because that’s what you do when you’re a nerd and the labs are open all night.

    @Naked Bunny: mindshare would explain irritation, but the incredible venom that gets thrown around? It’s astounding.

    I hack in Ada and Haskell, but I write VB.NET for a living, and you know, I really enjoy my job. It’s just a tool; the things I’m building are much more interesting than the thing I use to build them with.

  58. says

    You mistake exasperation for offense, sir.

    Please accept my apologies, and allow me to rephrase what I now see was an ill-considered choice of words.

    Another characteristic that programming languages and religions share: pre-emptive exasperation!

  59. Sean McCorkle says

    PZ – I simply have to cheer your comments about Wirth’s languages.
    That Modula-2 did not become widely accepted is one of the greatest
    tragedies in the history of western civilization.

  60. says

    @Fraser #78: You’ve got a point about the venom. I admit I have languages I dislike, and often have different reasons for disliking each one, but I don’t pretend that my preferences are an objective standard or a moral issue.

    I like learning lots of languages, though obviously I’m much better versed in a few of them from heavier use. But just because I don’t use Erlang and Smalltalk (for example) and find it hard to wrap my head around them doesn’t make them uninteresting or downright *bad*.

  61. WetMogwai says

    Assembler isn’t God. Machine language is God. A Christian doesn’t know the mind of God much like a C programmer doesn’t know the hex codes for the instructions. Assembler is more like playing God.

  62. Bob Munck says

    Hey, I’m up for a good language flame war, us Ada freeks against the rest of the Known Universe. I started on Ada some THIRTY YEARS AGO, when we were defining the Strawman requirements document for DoD-1.

    About a decade ago there were Ada compilers that produced code for the same byte code interpreters that Java did. That is, anywhere you could run Java, you could run Ada. Is that still true?

  63. Nomen Nescio says

    it’s been said that the hottest flamewars always erupt over the slightest differences, and the least significant details.

    hence, Python gets flamed about the whitespace thing, and very very hotly. there are better reasons to flame it by far, but few people ever look at it that closely… or if they do, they become converts and decide to code in it instead of flame it. ;-)

    Java is among the very few languages that nobody flames hotly enough. this may be because human vocal cords (and fingers) can’t take such temperatures.

  64. says

    @Bob: hey, at least us Ada freaks have the advantage of being right :-)

    Yeah, Ada Core produced an Ada -> Java VM compiler, but I don’t think it’s supported at the moment. Shame. On the other hand, gcc + gtk is well supported, and with Ada’s inherent portability advantages, it’s not quite the loss it could have been.

    I’ve only been using the language for 20 years, so I guess I’m a bit of a child there. You were involved with the Strawman definition? That is beyond cool. Defining requirements for a language instead of making stuff up as you go along — how revolutionary.

  65. tsg says

    Java is among the very few languages that nobody flames hotly enough. this may be because human vocal cords (and fingers) can’t take such temperatures.

    I love Java and I curse it every time I use it.

  66. says


    I’m a Lua programmer too. My point was mostly that Wicca has a lot of dependencies on Western European cultural and religious history, while Lua is portable to any platform that you can compile ANSI C for.


    Of course, the tradeoff is that to let the compiler catch errors, you have to sacrifice runtime flexibility. For example, late binding renders a whole pile of potential compiler checks impossible. The difference, though, is that you can make up for the lack of compile-time checks with rigorous unit testing (and you should be unit testing in early binding languages too), while you can’t elegantly reimplement late binding in early binding languages.

  67. tsg says

    “A plague on both your houses!”

    Arguing that editors which were primarily designed for writing code aren’t useful as word processors is kind of silly in my opinion. It’s like complaining that a cargo van isn’t a good family car.

  68. CrypticLife says

    *shakes a dying chicken*

    Hey, don’t mess with us voodooists — we’ll turn your server into a zombie.

  69. dNorrisM says


    And remember what Yaweh saith: “Goto, let us go down and confound their language!”

  70. Karl Withakay says

    Another way Java is like Christianity: I run into so many different versions that all seem the same, but are incompatible with each other…

    For the record I have programmed in


    and scripted in

    Dos/command line batching
    VB Script
    and a tiny bit in SQL

  71. says

    I learned to program primarily on an 8-bit Atari computer, starting with various Basics, then on to 6502 assembly, Pascal, Logo, and Action. Wow, those were the days. No memory protection, no real multitasking though you could fake it with fancy machine code, byte-by-byte memory map books. It was horrible programming that machine, and I miss it terribly some days.

  72. Fergy says

    Pascal is like Greek mythology. A long dead world studied by young school children (or at least, it was when I was a child), but generally ignored by the rest of modern society.

    Turbo Bullfinch’s, anyone?

  73. Jadehawk says

    COBOL has the wrong religion.
    We’d need one that people think is almost extinct, has a habit of appearing in many and strangest of places, underpinning some of the more important uses of databases.

    sun worship?

    and if anyone ever programs a useful program in LOLCODE, I want it!!!

  74. Jadehawk says

    hey, all I had to go on was the description, and sun worship is both thought to be an extinct, primitive religion and it underpins pretty much all traditions and religions, and it occasionally pops up in random and unexpected places.

  75. says

    What do you mean, “if”? Clearly you’ve never heard Java and C++ (name any pair of programming languages that you like) go after each other.

  76. Mark says



    As a programmer I have earned my living writing code in a couple of dozen languages, including Pascal.

    Would I rate Pascal highly?


    Definitely not.

    I can’t imagine any practical use for it that isn’t done so much better using other languages, including teaching programming.

    The same goes for Modula-2.

    However, I did once “earn” a free week at EuroDisney[1] for a couple hundred lines of bullshit simple Pascal, so I suppose it ain’t all bad.

    But then again, I ain’t a biologist, and if Pascal works for biologists then fair enough, let them have Pascal (keeps me in a job!).

    Pascal is not exactly desecration of a piece of bread / body of a diety after all.

    Unless you want to eat quiche too that is (obscure reference? maybe).

    [1] OK, so I stayed in the staff village[2], we went into the park just one day (that’s more than enough) and spent the rest of our time going out on the piss in central Paris, but WTF, it was free!

    [2] Surrounded by stunningly beautiful young women, and attending all night parties.



  77. Dugan says

    Those are good points, Jadehawk, and they’re true for Cobol. On the other hand, Java users are definitely Sun worshippers. We have a conundrum.

    I wonder how seriously P.Z. takes his programming languages. Perhaps he treats them as a hobby, something fun to do with friends on weekends: like knitting.

  78. says

    CATH & PYTHON 4 EVA! Emacs roolz! I <3 postgres. My in-group is smarter, prettier and more popular than your in-group! Also nobody has yet mentioned R. R sounds like Arrrrr and thus has piratical cachet. Except when you try to write code in it, and then it sounds more like Aargh! So there, I am smarter because I know something more obscurerer than you. :P

  79. Hairy Doctor Professor says

    Pascal was designed as a teaching language, and a very good one, and modern variants have addressed essentially all of the early criticisms. I have used Pascal for 30+ years, write all my modern code in Delphi, which is a really beefed-up Pascal, and would not want to convert my 70,000+ line programs to any of the C-based languages. Standard Delphi libraries are pretty extensive, and include access to sockets (one criticism listed earlier).

    Python is cute, clean, and is now what I recommend to newbies learning to program for the first time (I saw a 4th grader programming in Python a couple of years ago). It occupies the place that BASIC held when I was an undergrad in the 70s as an “easy” first language, but has more than enough power in its libraries to do “real work”.

    I’ve used a pile of different computer languages, including many dialects each of BASIC, FORTRAN, COBOL, and Pascal (and have taught all four), LISP, APL, Algol, JavaScript, Perl, Python, assembly languages on at least a half-dozen different architectures, and a bunch of languages no one has ever heard of (including some I designed myself).

    One thing I’ve learned is that all have their uses, and all have their drawbacks. Perl is an aberration, but I have used it for Web scripting, and even though my new scripts are in Python I keep the Perl code around because it works and is stable. I really don’t like the way C-ish languages are designed, but I use and teach JavaScript for convenient client-side programming, and for embedded applications where the choice is C or assembler I gladly would use C without much complaint. LISP is, well, LISP, and although I don’t write programs in it anymore per se, I use it as an extraordinarily powerful intermediate internal language for some of my more complex projects. I choose to use Delphi for its combination of expressive power and moderately clean design, and am fully cognizant of its limitations (and that using it puts me in a distinct minority). When I’m feeling frisky, I write large 8088 assembler programs for entertainment.

    No language is perfect. Use what you are most comfortable using and what is most appropriate for the job. Leave the religions to the religious.

  80. The Count says

    The Countess is into sex, which allows me to smile slyly, but she’s not a real geek.

    I started programming in 1971 as a freshman enginnering student at Tulane University… Fortran on punched cards. Didn’t really learn programming until I started hand assembling 6502 code on a KIM-1 that I wire-wrapped from a schematic a tech rep had whilst I was in the Navy.

    I take exception to sullying C this way. C is the original freeform language with complete freedom to fuck everything up. The first, and one of the very few languages which could interface directly with the hardware and could fry a computer if one is stupid enough.

    No doubt though… programming languages do evoke visceral responses. As in… if you don’t use C, you’re a heathen… you may be trendy, a poseur or simply yuppy-like, but you’re still a fucking heathen.

    Oh by the way… interpreted languages, you’re only lip-synching :)

  81. Bill says

    0004  1005  TAD 5
    0005  3410  DCA I 10
    0006  5004  JMP 4
    0007  5404  JMP I 4
    0010  0011
    0011  2010  ISZ 10

    But seriously, folks, where would we put
    template metaprogramming in C++? (This
    old dog still likes learning new
    tricks; but he’s finding it increasingly

  82. Julie Stahlhut says

    Pascal would probably be Unitarian Universalism. It acknowledges tradition and strives for improvement, but it’s accessible to anyone, its rules are practical, and it doesn’t take itself too seriously.

  83. Geoff says

    At least someone mentions Modula-2.
    Did Wirth really invent the phrase ‘brain sized chunks’?
    I remember M2 as a language designed for teaching modular programing design, but totally impractical. One had to write screeds of code for simple outcomes.

  84. Random Coding-with-Vi Chimp says

    Vi(m) FTW!!!

    Emacs heathens users can rot in (a non-existant) hell for all I care… “For thou hast blasphemed against thy one true editor (Vi)”

  85. Platypus says

    In the Terminal, cut and paste the following as a single line with no spaces:

    perl -e 'sub f{$v=ord($_[0])-58;for($j=4;$j>-1;$j--){if(1<<$j<=$v){print"#";$v-=2**$j;}else{print" "}}select($k,$k,$k,0.06);print"n";}map{if(/d/){$n=$_;}else{do{f($_)}while(0<$n--);}}split(//,"XKX1J:YJVJY:XKX1K:3JY5:1K1D>:H2KH:H2KH:X2KX:H2KH:H2KH");'

    Press return, and prepare to believe.

    (Assuming everything works. Damnable HTML)

  86. Mark says

    Tony @ 109
    No mate, that’d be Smalltalk.



    P.S. I’m sure that we’ve met IRL several times, mostly at Demon meets, and most recently outside Kew Gardens station

    P.P.S. But that was all a long time ago.

  87. Random Coding-with-Vi-(now-in-Perl) Chimp says

    In the Terminal, cut and paste the following as a single line with no spaces:

    perl -e [redacted due to length]

    Press return, and prepare to believe.

    (Assuming everything works. Damnable HTML)

    I believe, I believe in teh [sic] powah [sic] of Perl.

  88. freelunch says


    Did the DOD ever get done defining Ada?

    The last serious programming I ever did was a compilers class that required me to write compiler functions for Ada. The concept of separate error handlers for every single function was interesting, and possibly valuable, but it made writing a compiler for a defined function a serious challenge.

    At least I got to write the compiler in C and assembler.

    Ada would be Bahai, because it tries to include every good idea anyone ever had, even if the total is far less than the sum of its parts.

  89. says

    I am suprised no one has mentioned C# on .NET. Well there was VB.NET which is close. Am I the only one living in Microsoft territory?

    Ada definitely derives from BAAL worship. Ada programmers make things that kill people.

    FORTRAN, C and Pascal are for children (was that condescending enough to win a Molly Award?)

  90. Bob Munck says

    Bunch of noobs.

    My first language: 7070 autocoder on paper tape.

    Real Language for Real Programmers: Interdata Mod 3 Microcode, programmed by weaving tiny wires through tiny transformers. (The language didn’t have a name, but we had a number of words and phrases that we used to describe it.)

    For the real young’uns in the audience, microcode is the internal code that implements a CPU’s instruction set by manipulating gates, adders, etc. Aka firmware. Fun fact: the floppy disk was invented by IBM to distribute new microcode loads for the System/370 mainframes.

  91. Heraclides says

    I agree with #28, funny Oberon isn’t being mentioned and I liked some of the concepts Modula-2 introduced. I sometimes wonder if Sun hadn’t been so determined to create from scratch what might have stood where Java does today. (A more modern take on Oberon?) The earlier Java language design documents–to my mind–were stunning for mentioning almost everyone but seemingly studiosly avoiding Wirth, to the point I originally read them as “lets pretend we don’t know about this”.

    For one current implementation of Pascal, see: http://www.gnu-pascal.de/gpc/h-index.html

    Perl 5 is quite a mess as far as “design” goes (and Perl 6 seems to be taking forever to develop), but it is stable and a very practical language for processing text files and “playing” with Unix-based OSes if you manage to wrap your head around its strange ways.

    C, as in C99 not C++, is very good for some purposes, but really only in the hands of those with a strongly disciplined approach to programming in my opinion. One of Pascal’s strengths was its strong checking. Both of these aspects have their place. For those criticising Pascal, later languages realised that strong checking was valuable and took this up.

    People commenting about C should be aware that it does continue to add a small number of features while remaining close to its original intents, e.g. in C99. Modern implementations of Pascal are very distinct from the early ones: the core things are still present, of course, but a lot has been added.

    I’ve never had a chance to do more that read about Ada, but some of the ideas I like very much.

    #35: “At minimum, I have seen the indentation-as-code-level be a big issue for people.” I’ve yet to have a chance to work in Python, but one practical use I have for not having indentation imposed on me, is that when developing code I sometimes find it convenient to place small pieces of temporary code hard to the left so that I can find them easily and identify them as “while debugging” code. It is an unorthodox practice, but it’s very useful if you are, say, throwing in an if ( 0 ) { … } to temporarily knock a bit of code out, or are temporarily assigning value to a variable or tossing in a loose print statement, etc., while you are trying to sort a bug out.

    For those commenting on low-level languages in the context of Pascal: p-code anyone? I still have the book :-) I seem to recall that the Java people “borrowed” from the p-code interpreter to make the Java interpreter. Anyone?

    #104: I agree about the “horses for courses thing”.

    I’m (very slowly) developing my own language. It’s build around a quite different concept of interpreter/compiler design than conventional languages use. One day (one day!), I’ll be able to use it for wider tasks and tell everyone else to sod off! And then I’ll have my own private religion :-)

  92. says

    Rev BigDumbChimp said:

    I can’t decide if this string of comments makes me glad I focused on systems and security instead of programming or not.

    So now we know who really hacked talkorigins.org. This guy is always trying to frame me.

  93. Gregory Kusnick says

    I’m a language agnostic. Over the years I’ve used (as best I can recall) Fortran, PPL, Lisp, PDP-10 assembler, Decal (PDP-1 assembler), PL/I, GPSS, 360/370 assembler, APL, ECL, BCPL, Nova assembler, Mesa, PLM-86, x86 assembler, Pascal, C, C++, VB6, VB.Net, C#, XSLT, and Java, plus a host of batch-processing and scripting languages including VBScript, JScript, Perl, Python, PHP, IBM JCL, and on and on, et cetera, et cetera, wow! (to quote Sly Stone). I’m currently doing a lot of coding in an obscure, special-purpose environment called SageTV Studio.

    And these are just the ones I’ve done serious work in. In a previous life I worked on a language design team, and have made an academic study of many more languages that I never did more than dabble in. (I think I even wrote a few lines of COBOL once for a friend who was debugging a compiler.)

    I do find the C#-v.-VB holy wars amusing, considering that (at least in .Net) they’re completely isomorphic and use the same back-end, just with different formal syntax up front.

  94. Lurkbot says

    Was it Niklaus Wirth (or Edsger Dijkstra?) that said it was impossible to teach proper programming practices to someone whose brain had been destroyed by exposure to BASIC?

    So obviously, BASIC is Christianity. Especially since we know exactly who wrote it and that it was written to corrupt the thinking skills of the young. (Dartmouth students.)

  95. Dave Wiley says

    @Bob Munck:

    I knew about the BCPL sequence, but I have never heard of the “P” or “L” languages.

    Speaking of noobs, my first language, which I retained for about 10 years, was the octal-encoded assembly we toggled into the switches on the front of a Perkin Elmer main frame to get it to boot. The paper-tape upgrade was a bloody luxury.

    Okay, I’m not quite as old as this makes me sound, but I got my start on a bunch of antiquated equipment at KU in the ’80s. I did do quite a bit of programming on an 8086 with a fancy two-cassette storage system. This was so you didn’t have to have your operating system and running program on the same tape. Zooooooom!

  96. GaryB says

    For those of you complaining that Pascal is a teaching language not to be confused with languages that can be used to create real programs, the Borland C compiler was written in Pascal.

    I certainly preferred Pascal over silly languages like Cobol. Mind you in my coding years I had to be satisfied with C as C++ didn’t exist.

  97. Kevin says

    for years I programmed in an obscure language called Editor, on a “Nixdorf” machine.

    it was a great free form english language database oriented language.

    “Get customer-file using account else goto !no-account.” output for file or printer, insert and delete records.

    multiply, add or even * and + and . It ran on a mini-compouter.

  98. Chiefley says

    There is a new version of COBOL. It is object oriented. Its called ‘Add One To Cobol’. Get it? Never mind.

    Also, when I worked in NJ, I used a language called PASQUALE. It was a programming language for the mafia. It had two data scopes: Family, and NotFamily. For flow of control it had IF.. THEN… OR ELSE! constructs. And the ever useful VIOLIN CASE statement. And you would deallocate memory blocks with the command: FUGGEDDABOUDIT().

    The great thing about it was if you ran PASQUALE jobs on a multi-user system, it would take over most of the resources right away and get the job done pretty quickly. The one problem with it was it would demand money for memory protection.

  99. Olorin says

    Years ago, we said of APL: Assembler programs don’t work, and we don’t know why. C programs don’t work, but we do know why. APL programs do work, but we don’t know why.

  100. Bob Munck says

    Was it Niklaus Wirth (or Edsger Dijkstra?) that said it was impossible to teach proper programming practices to someone whose brain had been destroyed by exposure to BASIC?

    It was Dijkstra, but he said it originally about FORTRAN. However, Dijkstra disliked most of the early languages, and said similar or worse things about COBOL, PL/1, BASIC, and APL.


    Sometime in the late 60’s I was giving a lecture on the new idea of Structured Programming when I peered up into the gloom at the back of the auditorium and saw Edsger Dijkstra standing there listening. Yeep! A few years later I corresponded with him a bit about A Discipline of Programming. He and I had typewriters with the same somewhat unique font, which was endlessly confusing to both of us and to a few other people that we both wrote to. Doug Ross, my boss at SofTech for several years, ordered me to “stop using Edsger’s font.”

  101. scottb says

    Real (wo)men know a dozen current languages and use whichever one will get the job done efficiently to save more time for reading this blog…

    [first language: PDP-4 machine code in a 1976 high school elective class]

  102. Brain Hertz says

    No, no, no. Assembler is like ancient paganism.

    Most people who use other religions think it’s backward and irrelevant, without realizing that all of their “modern” religions are actually built on top of it.

  103. Graculus says

    Machine language is God.

    I did just enough hex code to know that it is Satan, not God.

    I’m not so down on BASIC.. it was written as a training language, and was great for pseudocoding.

  104. Brain Hertz says

    so I guess you’re saying that BASIC is like Santa Claus? It’s a sort of “introductory magic man who grants wishes” for kids?

  105. herr doktor bimler says

    Perhaps it is because they can’t be compared to religion in any way.
    …Said PZ, doing everything he could to start a jihad.

  106. NoGood says

    Am I really the last person on earth that has ever used Forth? Great! I really am unique in spite of what my wife says….
    I think I’ll start a new religion.

  107. BobC says

    COBOL would be Ancient Paganism – There was once a time when it ruled over a vast region and was important, but nowadays it’s almost dead, for the good of us all. Although many were scarred by the rituals demanded by its deities, there are some who insist on keeping it alive even today.

    Near the end of my Cobol programming career (1969 to 1999), there was this Dilbert comic strip:

    Pointy-Haired Boss: “I need a Cobol programmer to fix the Y2K problem.”

    Dilbert: “There comes one now.” (A dinosaur is coming down the hall.)

    Pointy-Haired Boss: “Are you a Cobol programmer?”

    Dinosaur: “I’m not a Cobol programmer but a lot of people tell me I look like one.”

    Pointy-Haired Boss: “You’re hired.”

  108. David says

    Well, I guess I am a satanist as I now program mostly in VB and VB.NET, but I am learning Perl and also some Java, so I will convert to doing Voodoo and be a fundi at the same time ;-)

  109. says

    Just to help it along: VI IS BETTER THAN EMACS!!!!one!

    Also: a Mac is just a cute graphics toy useful only as a gift for young children and the mentally infirm, MS’ security sucks so bad you might as well just plug a decaying stick of dynamite into your switch and get it over with already, Linux geeks are just a buncha moon-brained overly-idealistic commie dreamers who should get real and just pay for their damned software already… And… um… Solaris is dead.

    (Postscript: as this script is written entirely Perl, it finds the metaphysical implications of this piece disturbing, and can comment no further on this subject.)

  110. says

    “In my life, I have written programs in only 2 languages:
    FORTRAN…on IBM cards.
    BASIC (no not Visual, just…BASIC).
    Fuck, I’m old.”

    In 1974, I heard a lecture at a Cambridge conference on artificial intelligence, by a distinguished AI programmer. I’ve forgotten who it was, possibly Winograd. He wanted to say something to people in the audience who still used Fortran, and the way he put it has stuck in my memory:

    Now you may be one of those who say, “Fortran was good enough for my GRANDfather, it’s good enough for me.”

    I’m with PZ, by the way. I love Pascal and Algol. Such elegance.

  111. zombie00x says

    Where is Assembler?
    ASM is for Zoroastrians. Arguably the first monotheistic religion, and now all but extinct.

  112. Sam C says

    If you go into a museum, you will find Algol 68 next to the archeopteryxes. That klumpedumpe had casts, coercions, moods, an authentically grumpy language. It’s sole raison d’etre was to cause images to appear in slices of toast.

    I remember reading some conference proceedings about Algol 68 in its early days. Even in the cold words of the discussion, it was clear that one guy was getting exasperated at the digs from various people about the new compiler (the “Malvern” compiler I think it was) he had just given a presentation on. Finally he made the rather blunt point that it was OK for other people to snark at his efforts, but at least his team had a working compiler, whereas none of the others had got beyond talking about it.

    And that sect died out…

  113. says

    It was Dijkstra, but he said it originally about FORTRAN.

    No, it was indeed BASIC. It’s in EWD498:

    It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

  114. 'Tis Himself says

    Dijkstra seems to have some strong prejudices about programming and languages. His diatribe about GOTO has some valid points, but sometimes GOTO is the optimal command to use.

    Actually, my major complaint about GOTO isn’t the “GOTO” but the “WHEREFROM.” The question is “how did I get here?” The common description of GOTO heavy code is “spaghetti code,” with the spaghetti invisible. Chutes and ladders without visible chutes or ladders.

  115. says

    Dijkstra seems to have some strong prejudices about programming and languages. His diatribe about GOTO has some valid points, but sometimes GOTO is the optimal command to use.

    But he was right: by any post-1968 standard of language design, COBOL, FORTRAN and BASIC are utterly hideous abominations. The GOTO “command” is almost never useful (I’ve survived programming in probably a dozen different languages from RISC assembly to Perl for 15 years without ever using one in a HLL) and, if you’ll forgive the ad-hom, this is Edsger Dijkstra, an ACM Turing Award laureate, we’re talking about here. It’s a bit like saying “Einstein had some valid points, but Newtonian mechanics is sometimes adequate”. His GOTO considered harmful gave rise to the “X considered harmful” snowclone with probably 50 imitators, and is still regarded as one of the seminal works in CS history. To nitpick that article is to ignore both the historical context, when unstructured GOTO-infested programming was the norm, and the its enormous influence in galvanising opinion around expurgating programming practice of GOTOs in the (vast majority) of situations where a structured approach is clearly better.

  116. 'Tis Himself says

    GOTO may complicate debugging but it makes a programming language more powerful. Some things can’t be cleanly expressed without it, like coroutines or tail calls. C left out “GOTO function(parameters);” and high-level languages using C as a compiler target have had to jump unnecessary hoops ever since. Google Cheney on the MTA.

    Henry Baker, in his paper CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A., describes a way of implementing Cheney’s algorithm using C functions that, like Charlie, never return.

  117. says

    #147 ‘Tis Himself,

    You’ve missed the point. The point is not that GOTO is never useful, or that some situation cannot be conceived where it would be really useful, it’s that when Dijkstra wrote his criticism of it, it was commonly grossly over-used in situations where it caused more problems than it solved. Nobody would argue that it’s not useful for, say, getting out of very deeply nested iterations, and, indeed, Dijkstra tips a nod to Hoare and Wirth on that point. Equally, that C doesn’t support a facility that might be convenient for people writing Lisp compilers has little or no relevance to Dijkstra’s point.

  118. Bob Munck says

    No, it was indeed BASIC. It’s in EWD498

    That wasn’t until 1975; you can find similar sentiments in his Turing Lecture in 1972 (which, btw, I heard him present, at the ACM Conf. in Boston). Well before that, he was known for not accepting as a graduate student at Eindhoven anyone who knew FORTRAN. He certainly did dislike BASIC, though, and once expressed approval that my BRUIN language replacement for it didn’t have a GOTO.

    Regarding the GOTO, I’ve been writing code for four decades — operating systems (in Ada, Modula-2, and two assemblers), accounting systems (COBOL and PL/1), word processors, graphics tools, list processors (FORTRAN II), web sites, and a huge number of other things. To my certain knowledge, I have not used a GOTO or its equivalent since Dijkstra published his note GOTO Considered Harmful in CACM in 1968. Nor have I ever wanted to; it’s a mindset.

  119. Sven DiMilo says

    Wow, quoted by Dawkins (#141); that makes my month! (True, it’s been a pretty shitty month.)
    I’m no programmer–merely an old-fashioned ecological physiologist–and I can’t keep up with you geeks on this thread. The peak of my computer-programming life was a statistical calculator that did regression, ANOVA, and ANCOVA in addition to paired and unpaired T-tests and all kinds of descriptive statistics. It had pretty good data-editing features and a quick-&-dirty XY plotting module too. This was all in GWBASIC on an original IBM PC with monochrome-green monitor, 2 5.25″ floppy slots and no hard drive. Debugging was done on dot-matrix printouts with a pencil. My PhD advisor paid me to write it one summer because he “didn’t trust” commercial stats programs.

    Fuck, I’m really old.

    back to the geek-to-geek conversation…

  120. tim Rowledge says

    We shouldn’t forget ‘Assembly of God’. It seems to quite popular, with users groups all over the place, many rich enough to afford their own buildings.

    I imagine it must be a bit tricky to debug since most users will insist the original version if absolutely correct as written and the comments are cryptic and frequently just plain untrue.

  121. says

    #149 Thus spake Bob Munck:

    That wasn’t until 1975; you can find similar sentiments in his Turing Lecture in 1972…

    Somewhat similar sentiments about FORTRAN, perhaps, but the wording Lurkbot used (#124), “it was impossible to teach proper programming practices to someone whose brain had been destroyed by exposure to BASIC”, is much closer to that from EWD498 quoted in my #144 than is is to anything said in his Turing Lecture (which is on YouTube, btw). In fact, Dijkstra seems to have been nothing if not consistent in his colourful put-downs for the languages he disliked: the wording about FORTRAN in EWD498 is virtually identical to that from the Turing Lecture.

  122. grinch says

    So its seems that the religion gene expresses itself differently in programmers (or wannabe programmers).

    As for Ada worshipers – is there a religion designed by a committee? It was a failed attempt by the illuminati to bring on a new world order.

    Is the APL mass still spoken in a foreign language?

    #define ONE_DAY 24
    #define EPOCH -6000
    #define COMMON_DESCENT 0
    #define STRICT_LEVEL 99

    C is mentioned in genesis (madly trying to find the verse “god’s word did not return void …”), I think on the first day.

    Python programmers openly worship ind*ntation and find braces anathema. One of the secret incantations (easter eggs) in python which I am bound not to divulge canonizes this. Non-devotees cannot understand. There is also a message than Zen masters will also appreciate.

    Cobol has been placed in the fossil record by the devil to test our faith.

    As for assembler, the great schism surrounding the doctrine of segmentation did not help its cause.

  123. 'Tis Himself says

    No, Emmett, I did not miss the point. I’m fully aware that GOTO was overused. I even noted a problem with GOTO that Dijkstra didn’t mention. I’m also aware that Dijkstra admitted that GOTO was the tool of choice in some limited applications. It’s just that certain people who write languages have taken Dijkstra’s objections to GOTO too far.

    I don’t think it’s really debatable that one can write really incomprehensible code with GOTO. That doesn’t prove that GOTO is bad, merely that like any powerful tool it can be used to make a big mess.

  124. says

    #154 ‘Tis Himself,

    Reread your #145 and see if you think that it conveys the same sense as #154.

    To me, it doesn’t. If you’d said #154 instead of #145, I would’ve had no disagreement, but #145 reads very much like a painfully uninformed opinion, ignorant of programming, of history, and of Dijkstra’s role in both. I think you’d probably agree if you reread it (#145) as if you hadn’t written it.

  125. says

    Ruby is like an orgy of awesome, in my opinion. I’ve done things with Ruby that no sane person should ever have to do, but it’s still a very pleasant language that shows great promise, especially now that a bunch of smart people are working on solving the slowness of 1.8 with 1.9, JRuby, IronRuby, rbx and so on.

    My other programming drug of choice is XSLT. It winds lots of people up, but I actually quite like it. A functional programming language written in XML sounds like a terrible idea, but I love it dearly.

    Also, Vim forever. Who needs the Church of Emacs when being an apostate is so much more fun?

  126. mcow says

    Python programmers openly worship ind*ntation and find braces anathema. One of the secret incantations (easter eggs) in python which I am bound not to divulge canonizes this. Non-devotees cannot understand.

    I’m guessing you’re talking about:

    from __future__ import braces
  127. YetAnotherKevin says

    “COBOL has the wrong religion. We’d need one that people think is almost extinct, has a habit of appearing in many and strangest of places, underpinning some of the more important uses of databases.”

    That’s why I’d vote for COBOL as Judaism. Old but still around, especially in financial institutions. Lots of stuffy rules kept around for no good reason. (Maybe the latest COBOL as Reform Judaism?) Unfortunately this breaks down when trying to find derived languages to compare to Islam and Christianity.

    On a more serious note, Python is “teh awesomest”, as the kids say, but I miss some of the security of static types.

  128. Bjorn says

    Yeah, put me down for Fortran too.

    It’d be some sort of ancient Soma Cult religion.

    And 8088 would be some sort of ancestor-worship.

    That’s 2 of the great programming languages right there.