Fog Creek Software
Discussion Board

Programming Language Discussion = Religious War

Let me begin by saying that I'm not trying to be a troll or start the Programming Language Version of "Mine is Bigger/Better".

I was reading the posts in another thread and once again was struck by the fact that programmers seem to be extremely sensitive to any suggestion that their programming language of choice is not The Best Choice.

This seems to be peculiar to programmers; I've never heard one accountant say to another accountant "Jeez Fred, your Year End Adjustment Journal Entries suck !" but I've seen more than one programmer say the equivalent to another programmer.

I'm curious to know your opinions as to why this happens.

Rob Leighton
Wednesday, August 21, 2002

I wanted to reply "because these programmers are incompetent", but that would cause an uproar.

This is part of the skills debate. In the modern world, your skills as a programmer are what languages you know, not how well you program.

I can and have programmed in a wide variety of languages (and op systems), some of which you have not heard of. My strengths as a programmer are not what languages I know, but what I do with those languages.

I prefer to code in Visual Basic these days, primarily because it is the most efficient way to provide solutions for my clients. I could be C++ prima donna, and code only in C++, but it would take longer, and my clients people are not C++ coders. And even if I programmed in C++, the results would be exactly the same. Yes, if required I will use C++, in one project, I had to write a bridge between a 3rd party DLL and VB.

Now, if I was writing intense network management code, I would not be using VB.

This same argument applies to Windows v. *nix. Use the best tools for the job. And since my clients all use Windows, guess which op system I work in.

Wednesday, August 21, 2002

Sometimes the person making the suggestion that the programming language isn't the best one is wrong.
And some people are incapable of telling other people they're wrong in a kind, gentle way.

Wednesday, August 21, 2002

We all want our language of choice to be positively recieved, primarily because we make a buck out of it. We are all salespeople for those things we profit from.

Wednesday, August 21, 2002

Hmmm...  I might have been happy to hear  "Gee Mister Fastow, you're screwnig your investors" from an accountant prior to 2002.  Perhaps language/process/OS flame wars aren't a bad thing.

As for languages themselves?  Hmmm.  How about:
1. The BSTR'dization of everything.  What's so bad about that?

It turns what should be a compile time error into a run time error.  Well, one could ague that this is a symptom of all scripted languages.  Good point, they all suck.  I would no more ship a product found on bash than I would one on VB.

What doesn't suck?  COM IDL doesn't suck - signatures are generated by the objects and are strongly typed.  JNI (Java Native Interface) doesn't suck for the same reason.  Make sure that your make dependencies are set up properly and voila - no run time errors that should have been compile tmie errors.

One more thing that doesn't suck: Good old make.  Because I can accurately and precisely describe the dependencies between the necessary java source and C source which will guarantee that my javah generated headers are always up to date and accurate.

2. Form over function.  Worse than what it is, is what it breeds.  Here you go, we'll give you this GUI based RAD thing, and you leave all the "heavy lifting" underneath to us.

I had to delete what I wrote for fear of violating an NDA.  Let's just say this: if you don't know how something works, it probably won't.  Your product is a product that has a competetive edge probably because you know something someone else has yet to figure out.  By handing the "lifting" over to someone else, you just did 2 things:  1. Erased your competetive advantage. 2. Became their slave.

2 memorable illustrations from college: 
One as an undergrad, Dr. Schmidt is into his second day over a servo mechanism as an illustration of non-linear differential equations.  Some student sighs, exasperated.  Schmidt says something to the effect of "it it were easy, they'd hire a chef".
Second, Purdue's infamous Dr. Delp: "You're responsible for everything in the book, everything I say in class, and everything else."

Nat Ersoz
Wednesday, August 21, 2002

I think there is such pain associated with learning a language's ins and outs, that people who only know one or two become defensive of all their pain.  If the herd decides to move to another language, then these programmers are left behind, since all they really learned were language tricks.

I know a lot of people who picked up the big QUE books which promised them arcane mastery.  I pity them so much.

BTW, when otherwise enlightened people do it, I think it's a) the language is the only one that makes programming on a certain platform tolerable, b) saved them from the pain of another language, or c) they need a vent for personal unhappiness.

Greg Neumann
Thursday, August 22, 2002

I spent 4 years trying to get the company I work for to give Delphi a try. They went with VB instead. The frustrating part - and what put me in Greg's c) category for a while - was that the argument was *always* along the lines of "MS will live a long and prosper life, and everyone else will go down the drain".

Eventually, I've seen the light. At work, I now use whatever they have, and I don't even make the effort to change anything. On my own time, I use what I think is the best tool/language, and I don't give a damn about what everyone else is using.

There's little anyone can say to change my opinion about a tool/language, and I know the same happens to just about everyone else.

So, if we know we won't change anybody's opinion, why do we go on with these "language wars"? Maybe because they're fun? ;)

Paulo Caetano
Thursday, August 22, 2002

If you are truly interested in intelligent programming language debate check out

Dan Shappir
Thursday, August 22, 2002

Speaking of pain, Erik Naggum explains that in C-like languages, parentheses signal pain.  So languages like lisp seem painful to C-family programmers.

Might explain a lot of flames where one person is totally stuck on some minor detail.

Tayssir J.
Thursday, August 22, 2002

When I slag VB (or any 4GL language) it's not because I'm unaware of the increased efficiency these tools permit, it's because I honestly believe that the farther up the language 'stack' you are, the less you need to know about hardcore computer science.  Even if you did have to learn it at some point prior to graduation, this knowledge atrophies quickly if not used. 

You might be churning out some great business apps, but I still think you're doing less as a programmer, and if you are capable of working at a lower level then I think you're cheating yourself.

Now, before I get accused of being an egotistical elitist with a condescending attitude, let me explain that I used to program real-time industrial controls in C and assembly (no VxWorks for us, we wrote our own bare bones task schedulers and our feedback loops had millisecond execution times).  Currently, I'm working in a RAD environment (Borland C++ Builder 6) writing IVRs, and it's about as mentally stimulating as an episode of Three's Company.  There's a certain degree of self-loathing in my attitude, but in this market I'm just happy to be working.

But there's no way that you'll convince me that a programmer is a programmer is a programmer (and if you use the words "HTML" and "programmer" consecutively in the same sentence, I'll unapologetically stab you in the throat will your FrontPage CD jewel case).

Dunno Wair
Thursday, August 22, 2002

But in terms of real world value and return on investment you haven't sold one over the other. One app is written in C to control industrial conrols such as Coca Cola uses in their bottling process and the other is a business application written in VB to route and track shipments for a large business such as UPS. Both are mission critical, but using your logic one is better than the other and was created by "real programmers".

I'm playing devils advocate here defending VB, but it's worth pondering. Does one language have a significant advantage over another that can actually be quantified or qualified without using opinion?

Thursday, August 22, 2002

I would just like to add my two cents and say Java and C# are my two favorite languages at this time. I like the syntax and between the two I can cover all the platforms I like to cover and build all the applications I want to build.  I think we have a long way to go in the middle/upper tiers so it remains enjoyable. A good middle ground between the real time "bare metal" fanatics and the GUI "I dont want to touch the worm, can you put it on the hook for me?" I think.

Thursday, August 22, 2002

No time for serious debate at the moment I'm afraid, the day is over and beer and patios await, but when was the last time you saw a VB app lose control of a circular saw eight-feet in diameter and spew, at hyper-velocities, deadly fragments of wood and iron in all directions, shredding an otherwise perfectly presentable lumber mill?

(OK, it never happened, but it was one of our possible disaster scenarios.)

Dunno Wair
Thursday, August 22, 2002

And again, I'm not talking about the languages themselves, but rather the knowledge and skillsets required to use them effectively.

Dunno Wair
Thursday, August 22, 2002

It is because we are all just big, bald apes. Watch the nature channels and see what I mean.
The pecking order in technical organizations (not the org chart) is based on knowledge. If I know more than you do, I get more respect from my peers, and I am higher up. It is a tyranny of knowledge.
When someone says I am not using the latest or best tool, it is like one baboon showing the red ass to a rival. I have to defend my territory or my whole social structure will collapse. We have nothing to blame but evolution.

Doug Withau
Thursday, August 22, 2002

"...when was the last time you saw a VB app lose control of a circular saw eight-feet in diameter..."

So now the argument is that the "Real"-ness of a programmer is judged by the amount of havoc his/her code can wreak if done incorrectly?  I would have maybe guessed the Big-Oh of one's algorithms, would have been a decent one, but what do I know.

Dunno, you're right the further up you move in languages and layers of indirection, the less you need to know about hardcore computer science stuff.  (For some reason this smacks of a Joel article, something along the lines of some Schlemeel the Painter, or somesuch.)

But so what?

#1, there is a place for languages that ease the transition of business logic into code, such as VB.  That's unarguable.  That's why VB is so popular, and why companies make money releasing VB apps.  People enjoy moaning about how it's not real programming, but they're mostly programmers, and not representative of the target market.  I challenge you to find some business manager saying "We can't release this app!  Profitability be damned, It's not REAL programming for God's sake."

#2, these people should be doing nothing but making you look good!  I have seen some ugly, hideous VB code from guys who obviously don't know what their doing.  Even elementary stuff, like not using option explicit, not typing their variables (and having ridiculous slowdown/memory use from having even their loop counters be Variants).  But that's just fine, because in a crunch time, those guys will go *way* before you do.

It's nice because I can use VB for GUI stuff, cranking code out, and then, if it can't do something I need... spit out a COM DLL in C++.  Problem solved.  Best of both worlds in my opinion.

"...the day is over and beer and patios await..."

Is this some kind of universal thing?  That's *exactly* where I'm headed.

Thursday, August 22, 2002

Dunno Wair,

Let me see if I get what you are saying correctly.

Haiku in any language other than Japanese isn't real Haiku?

It does not matter what language you use, as long as it is appropriate to the task at hand.

If you are doing business apps, you should be using VB rather than C++, as your productivity will be that much greater.

If you are doing industrial control, you probably should not be using VB for the actual control. But you could use VB for the user interfaces.

Each language has it place. No language is better than any other, as they all have strengths and weaknesses.

In the Microsoft world, now that VS.Net has been released, it really does not matter if you mix and match languages in a project.

And since I am a professional contract programmer, whatever makes me more productive for my clients is what I use.

Thursday, August 22, 2002

I'll say right off the bat, It doens't take a genius to be good at java.  Its programming for dummies.  Yet, the company I work for has the incredibly hard task of writting large scale integrated applications that scalable, modular, and still under budget.  Sure, none of us are doing algorithm optimization, or tracking down memory leaks, but is our job any less challenging then Wair's industry controls?  No way.  Its just different.

Vincent Marquez
Friday, August 23, 2002

I think all of the challenges faced within programming pale in comparison to actually delivering a project on time, within budget, and meets the clients needs. The challenges of a project might require a lot of brain power, but that still doesn't ensure success. Programming success is not restricted to choice of language. They are simply tools for builders to build. One piece of this puzzle we try to piece together day in and day out.

Friday, August 23, 2002

and in the end...python rules ;-)

Dan Sickles
Friday, August 23, 2002

Python indeed, does rule.

Nat Ersoz
Sunday, August 25, 2002

Programming language choices do make a difference - for one thing, some languages are simply more productive than others in terms of the developer's ability to deliver a finished system.  The best numbers on that are at this site:

I fall on the dynamic (as opposed to static) typing side of things, but the best idea is to simply try new things out - give Python, or Ruby, or Smalltalk a try.  For Smalltalk, look at these sites:

James A. Robertson
Tuesday, August 27, 2002

I just recently read "Influence: The Psychology of Persuasion" ~ thanks Joel!

So, here's some theories as to why programming language debate approaches that of religious wars:

1. The effort and pain (sometimes) involved in learning a programming language, is somewhat akin to those weird initiation rituals american college fraternities have. After going to that effort, do you want to hear that maybe it wasn't the best language to learn after all? (Whether the assertion is true or false...)
No way! You justify to yourself that you wouldn't go to that effort unless it's a really -good- programming language.
I also wonder if this explains some of the fanaticism of many linux users...

2. The more familiar you are with something (say a language), the more you are inclined to like it. If there is a language you -have- to use frequently (say, at work) and you do not have an actual hate or dislike of it (which will merely be aggravated by increase contact) you'll start liking it more due to familiarity.

3. It's like sports teams. People associate their language with their own identity. If their favourite language is seen as being better, it's a personal victory.

Blah. *Hits head repetitively*
Apologies, I'm regurgitating "Influence: The Psychology of Persuasion" at everyone I know...

Friday, August 30, 2002

*  Recent Topics

*  Fog Creek Home