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.
- Log in to post comments
More like this
Religion's voice is that of a spoiled child having a temper tantrum.
I have been accused by PalMD of lacking empathy for believers; that's not quite right. My response to the Islamic uproar over the Florida preacher who was planning to burn the Koran on 11 September was to say that that's too bad…
You're bored with it? I'm bored with it. All bored now. But since the discussion is still going on everywhere, and I'm frothing rabid (as everyone knows) and always ready to snarl and bite even when (especially when?) I'm beset with ennui, I'll call your attention to Greg Laden again. He's pointing…
Draw your pocket protectors, it's a geekout!
Janet, our lovely resident ethicist has challenged all of the ScienceBloggers to [a geekout][geekout], to determine who, among us, is the geekiest. How could I, a *math* blogger and computer language geek, pass up such a challenge? (Incidentally, Janet,…
User:William M. Connolley/The science is settled is a copy that I made of a wiki article that got deleted. I think I'd stick now largely with what I said then, 8th February 2007: Keep: its not the worlds greatest page, but its useful. Lee Vonces vote is a good example of the reason for keeping it…
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."
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.
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.
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.
I chime in to support Andrew's (#3) comment: No Algol? What is wrong with them?
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.
Redundant humor. Programming languages are already religions. :-)
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.
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.
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.
hurrah! i'm a satanist!
And genetic algorithms (yes, I know, not actual languages) would be the religion of, you guessed it, Darwinismwork.
Glen D
http://tinyurl.com/6mb592
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
So, because I use PHP in my web design now I'm a programmer??
Woo hoo!! I'm going to ask for a raise.
:)
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!)
Sadly, Pascal does not support the concept of a wager directly in the language. If it did I suppose it would have found more adherents.
Pascal? People still use that? Or are you living in some time-warp where flares, platform shoes and eating quiche are still in fashion?
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.....
I am with you PZ
Delphi (Object Pascal) is awesome!
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...
I predict this thread will get to 500 comments in an hour.
Just to help it along: VI IS BETTER THAN EMACS!!!!one!
Your taste in programming languages sounds like Jerry Pournelle's. Not that it's a bad thing.
@sven:
"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.
"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."
If C is Judaism and Pascal came before C then would it be Zoroastrianism? They do share many similar traits.
This is a long set up for a "visual basic sucks" joke.
Funny, I don't look Jewish.
For what it's Wirth, what about Oberon..? Of course, I'm a bit of a C++ jihadist, so...
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.
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.
That was about when I started. I also added Pascal and Apple 6502 Assembly before I gave up programming.
#3:
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
Me too!
Pascal (now, delphi)!!!11
Python and Java on Linux.
Pascal sucks. The only thing worse is the bastard offshoot Delphi. Or perhaps Fortran.
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*
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.
And if programming languages were scientific theories, Brainfuck (http://en.wikipedia.org/wiki/Brainfuck) would be quantum mechanics...
not sure which religion that would be though... possibly all of them.
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.
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.
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.
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.
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.
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.
program Thanks (input, output);
begin
writeln ("Thanks, PZ!!);
end.
Assembler is paganism,polytheism,what everyone did before Abraham came along....
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.)
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.
Is it possible that there is no programming language?
#28:
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").
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...)
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.
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.)
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.
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).
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?
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"
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.
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).
wait, what if languages were carols?
http://changelog.complete.org/archives/825-if-programming-languages-wer…
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.
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?
Djur:
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 :)
or am I just looking in the wrong places?
Definitely the wrong places. I've seen some pretty nasty Java/Ruby ones just this past year.
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.
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.
No, no, no! Pascal? Modula-2? This won't do...
Language War! Language War! Language War!
God wrote it all in Lisp:
http://www.mp3.com/artist/songworm/summary/
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.
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.
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!
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.
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.
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.
Those of you bitching about Python's indentation semantics
Another characteristic that programming languages and religions share: pre-emptive offence-taking! Cool.
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.
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.
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.)
Another characteristic that programming languages and religions share: pre-emptive offence-taking!
You mistake exasperation for offense, sir.
@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.
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!
HEY! I happen to like Visual Basic!
Oh well....hail Satan, I guess.
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.
@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*.
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.
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?
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.
@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.
I support the comparison of Brainfuck to Cthulhu worship in the comments over there.
(I have no idea what Malbolge is, though.)
"A plague on both your houses!"
I love Java and I curse it every time I use it.
@62
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.
@70
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.
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.
*shakes a dying chicken*
Hey, don't mess with us voodooists -- we'll turn your server into a zombie.
WetMogwai:
And remember what Yaweh saith: "Goto, let us go down and confound their language!"
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
Basic
Logo
Pascal
Fortran
and scripted in
AppleScript
Dos/command line batching
VB Script
and a tiny bit in SQL
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.
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?
sun worship?
and if anyone ever programs a useful program in LOLCODE, I want it!!!
#96: No, COBOL isn't sun worship. Rather, Java is SUN worship.
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.
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.
Great, I'm trained in Fundamentalist Christianity and Islam.
Pascal?
Er...
As a programmer I have earned my living writing code in a couple of dozen languages, including Pascal.
Would I rate Pascal highly?
No.
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.
Cheers.
Mark
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.
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
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.
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 :)
I can't decide if this string of comments makes me glad I focused on systems and security instead of programming or not.
Assembler would be primitive animism: one god for every tree, big rock, stream, valley, or wind.
APL, now... is there a Theory of Everything among religions?
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
difficult.)
Lisp is the only true religion.
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.
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.
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)"
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)
Tony @ 109
No mate, that'd be Smalltalk.
Cheers.
Mark.
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.
I believe, I believe in teh [sic] powah [sic] of Perl.
Fraser,
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.
*purchasesCopyOfProgrammingLearningPerl*
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?)
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.
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 :-)
I was wrong. Ada can't be BAAL worship. Seperation of church and state implies Ada is atheism. Wait a second ... that means Matt Barber is right.
Rev BigDumbChimp said:
So now we know who really hacked talkorigins.org. This guy is always trying to frame me.
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.
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.)
@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!
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.
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.
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.
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.
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."
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]
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.
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.
Graculus,
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?
Perhaps it is because they can't be compared to religion in any way.
...Said PZ, doing everything he could to start a jihad.
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.
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."
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 ;-)
@ Graculus
RPG is not dead and lives on.
Heretic!
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.)
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:
I'm with PZ, by the way. I love Pascal and Algol. Such elegance.
Where is Assembler?
ASM is for Zoroastrians. Arguably the first monotheistic religion, and now all but extinct.
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...
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.
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.
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.
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.
#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.
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.
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...
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.
#149 Thus spake Bob Munck:
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.
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?
#ifdef FUNDAMENTALIST
#define ONE_DAY 24
#define EPOCH -6000
#define COMMON_DESCENT 0
#define STRICT_LEVEL 99
#endif
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.
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.
#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.
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?
I'm guessing you're talking about:
from __future__ import braces
"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.
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.