Flame Bait

Published Wed, Nov 24 2004 23:45 | William

Someone unnamed in a group also unnamed is taking part in a VB.NET vs. C# Debate at a unnamed user's group.  So he was enlisting help in coming up with slogans.  This was one of the ideas as a slogan for C#:

VB'ers Need not Apply

I hate language wars, particularly the really dumb ones between VB.NET and C#  - which is like arguing about BigWheel's vs Ferrari's - I mean arguing about the differences between the BMW 318i and 318e.  But I just burst out into laughter when I read this.  Not because it's particuarly true or funny (although it is) but because of the reaction that it's going to cause.   Just picture a .NET User's group with a bunch of VB.NET and C# programmers sitting around - which will unquestionably have high attendance because of the subject - and just imagine the look of the VBers when this little motto gets spit out.  That'd   be something like Jacques Chirac heading over to the Promise Keepers and telling them that France's new motto is Christians need not apply.  I want to go to this meeting so bad - with a Video Camera.  I like “You can't turn Option Explicit or Option Strict off in real langauges - and they're on by default”  Or another great one “We make more money than you - get over it”  No, I'm not advocating these motto's, I just think that if you're going to head into a group of developers and start dropping bombs - why half step?  Then again - why not go all the way “VB - the official language of the Daily WTF” or “99% of C# developers surveyed don't even know what Access is, and the one that did hates it”

Filed under: ,

Comments

# William said on November 25, 2004 6:34 AM:

Bill. why do I here an echo of "No Irish Need Apply" in "No VBers Need Apply?"

It's because if any one rule, such as your major language, is applied rigidly, your conduct as a hiring manager becomes isomorphic to that of a RACIST hiring manager.

While of course staying within the real law, which bans discrimination based on race or ethnicity, you appear as narrow-minded as the racially prejudiced.

Of course, if the candidate's ONLY language is VB and you need a C# programmer, there is nothing wrong with turning him or her down.

But for the racist hiring manager, race trumps all other criteria.

If a hiring manager actually turned down a great C# programmer because he also knows VB, then this would be as dumb and ugly as denying a qualified individual of color a job.

It's similar to the headhunter who calls a programmer "overqualified" as an alternative to understanding his background.

It is true that VB as a first language teaches bad habits, and I am currently developing my own object analyzer for understanding code in a project that declares exceedingly complex COM object As Object.

Declaring As Object is spiritually encouraged by the VB legacy of the Variant which as you know is the original Empty Suit, a sort of Dan Quayle variable which was no Jack Kennedy and instead, whatever you wanted it to be.

It is true that all of C# is Option Strict. Big deal. Each and every module of the code I shipped has Option Strict except one or two, which were written deliberately to expose one or two procedures which used weak typing to test for the presence of properties or methods.

Why is it verboten to actually discuss the code the programmer writes instead of the language?

Indeed, why is it fashionable to always rage to use a full-featured modern language when part of the Artists's Way is to make the best with the tools at hand at all times?

I'm willing to bet that a lot of C# programmers write weakly typed Option Bleegh VB code because they treat VB coding as slumming, a sort of trip to Vegas and Comdex where they can empty the minibar, rent Showgirls and then run home to Mrs. C Sharp.

The virtuous VB programmer is like the man who lives in Vegas and works as a cop or minister, avoiding the temptations of the flesh.

Thanks for letting me rant in what is YOUR space, and let me know if I am taking more than my fair share.

# William said on November 25, 2004 12:29 PM:

Edward: I think that language Nazi's are sillyl and dangerous on their best days.

"No Irish Need Apply" is something I'd love to put on my office door. THen everytime I came to work, I could see the sign and realizing I'm not wanted - go home and Play Halo II. Or better yet, I could but the sign up at my house right before the holidays - then i wouldn't have to worry about my family coming over and bugging me. HOwever upon seeing this, Dad would probably feel compelled to guzzle down a bottle of scotch, kick my door in and 'set me straight'. Then as punishment he'd make me head to church with him -- we came from the part of Ireland without a sense of humor.

But on a serious note- I think the thinking would be about the same - writing someone off because of one criteria Whether it's b/c they're Irish or write in VB is pretty messed up. And between us - I've seen some code recently from anothter company, written in C#, that looked like it was written by my Grandfather after a long night at the Pub- back in 1945 before C# was even a language. To call it incoherent would double it's value. I wish I could post some of it b/c it would PROVE definitively that you can write some terrible code in any language, and with enough ignorance, you can write some C# code that would make most VB programmers cringe.

The quote I mention was in regard to the unofficial 'motto' of a given language and as you can see, the VB Empire fought back too.

To be honest, I wish most hiring managers would use something as sophisticated (al beit stupid) as 'what languge you write in primarly' to hire people. Too often it's stuff a lot dumber than that but Hiring Managers would be programmers if they could be ;-).

This has to be the best line I've come across in ages: "Declaring As Object is spiritually encouraged by the VB legacy of the Variant which as you know is the original Empty Suit, a sort of Dan Quayle variable which was no Jack Kennedy and instead, whatever you wanted it to be."

<<Why is it verboten to actually discuss the code the programmer writes instead of the language?>> It shouldn't be. In that same thread - one very well known developer whos' written a few books and is pretty much the man pointed out: "I think they're being silly. Programmers, not languages, cause crappy code."

<<I'm willing to bet that a lot of C# programmers write weakly typed Option Bleegh VB code because they treat VB coding as slumming, a sort of trip to Vegas and Comdex where they can empty the minibar, rent Showgirls and then run home to Mrs. C Sharp. >> Mrs C Sharp would have a brume upside my head if I ever tried this ;-) but I know what you mean - and you're right.

# William said on November 25, 2004 9:06 PM:

Some do count it a misfortune
To be christened Pat or Dan,
But to me it is an honor
To be born an Irishman.

# William said on November 25, 2004 11:11 PM:

I know VB but you almost have to in today's corporate world.

If you go into any environment where they don't produce software as their main company export you are going to run into VB. Generally really bad VB written by analysts and a lot of it will be VBA for Access or Excel. You will be presented it in the following manner "so and so in marketing wrote this but one field in the database changed and now nothing works, we need you to fix it because we do mission critical reporting off of it and the reports were due two weeks ago. So please fix it."

I wouldn't code in VB on purpose as being the language of choice for any project anywhere. Basically I wouldn't touch VB with Clinton's dick and Monica pushing. But I still have to know it pretty well so I can try and figure out WTF the idiots were trying to accomplish with their code.

I would hate for a recruiter to not hire me simply because I was forced to learn VB to bail out projects that were in the process of heading down the sh!tter.

I don't have much of a use for C# either but I would write in C# before I would write in VB.

If you look at VB and what it does behind the scenes the language itself is an absolutely amazing example of a language that reduces complexity. The group that wrote VB must have had a lot of brain power. Because they tackled some very hard to overcome issues long before the .Net languages came out. However they made it so easy any idiot could use it and mostly only idiots did. 99% of the really good developers out there don't want that sh!t wrapped for them.

It is sort of like saying you have the lego ship set, it builds a perfect ship every time but now you want to build a lego airplane. Sure you can do it with the lego ship set but it's going to be terrible. It would be better if you just built with the raw generic lego blocks. Once you can build with those blocks you can make anything you want as beautiful as you want. If all you know is the ship set then you are severely hampered when you want to build a car or an airplane. Same with users who only know VB or C# many of them can build neat stuff because they know how to use the IDE and the main features of the language but ask them to do anything outside of those preformed sets and you end up with really bad stuff.

Have you ever seen code by developers who only know C# or VB try and do multi-threading? Now they can with .Net it used to be VB couldn't multi-thread without some serious API hacking. Now it's a language feature but because these developers only know these Automation server languages they have no concept of what threading actually means especially not synchronizing. Then try and explain lock free threading theory to them and their brains explode. It's not the fault of the language they are using that's for sure.

I think every developer should have to learn Lisp or Scheme first to learn the basics of programming theory. then they should have at least one semester on machine code and assembler. Then they should have to learn C, then C++. Then they should get a choice they could learn Java or C# whichever they prefer to learn. Then once they get into the work place they can pick up whatever else they wish because by then they will have the basic building blocks down pat. But that would be a perfect world and we don't live in a perfect world. We live in a world where most of the people using VB aren't programmers they are analysts and other people using the easiest tool they can find to automate their work. They are just users with cooler tools. As long as we live in an imperfect world hacks like this will continue to churn out bad code faster than the rest of us can fix it. Just look at it as job security as long as these f#cks are around they will always need regular developers to bail them out. Besides VB gives us C and C++ coders someone else to bag on. Before that it was Lisp versus C.

The wars will never end. I'll comment on the wars themselves in a forum such as you blog because I'm cool with that but I won't ever actually engage in one. To me they say "this person has way to much time on their hands". Most days I won't even comment on the wars because I haven't the time but today I actually do have a bunch of free time to type because my kids are watching Charlie Brown.

Bjarne said it best when asked about language wars he said: "learn not only C++, but also other languages, systems, and techniques that might be helpful to your work and intellectual growth. A closed mind is a recipe for bigotry."

# William said on November 25, 2004 11:43 PM:

My experience is that very few programmers are motivated to write truly clear code for actual use. I see the same mistakes in all languages...magic constants, too-wide scoping, weak typing, repetition of blocks of code and no comments (or tons of outdated comments).

And, the defense is always the same, couched in a special language of "theoretic practicality": the defense runs something like "Professor, your objections are all very well, but we have a business here to run and we need to be practical. Our programmers have, we agree, done a poor job, but, our users are for the most part happy and we get paid."

[Because of my abstracted air, on many jobs I get called Professor, sort of like the guy who plays piano in the Western whorehouse and ducks for cover when the bad guy walks in.]

In the case of code, where care was obviously taken to name "magic constants" and to factor properly, I have, in many instances, actually seen the programmer called on the carpet and told that while her code was very fine, there was a suspicion, based exclusively on the beauty of her code, that she did not sufficiently prioritize "business needs" as opposed to her excessively narrow, "ivory tower" concerns, which in the language face each other in a binary opposition...an opposition which disregards the very practicality of naming constants, etc., and also masks the fact that in many offices, "business needs" name the "needs" of the managers.

At Bell-Northern Research in 1985, a highly skilled professional manager and developer came to me in tears. She'd enforced company standards for good practice and in her poor performance review was informed that her enforcement "slowed things down".

This used to trouble me, and I spent years pondering the merits of such common business saws as "today is more important than correct", "the good is the enemy of the best", "let's not reinvent the wheel", and "keep it simple stupid" (where "simple" in context means "the boss understands it").

Then, at the turn of the century, several apparently unrelated events occured!

First of all, I read a short book by Kant entitled "On the Old Saw: This is All Very Well in Theory but It Won't Work in Practice".

In this book, Kant showed how once "old saws" predominate, they themselves become theories, and if the "old saw" is one that recommends cutting corners to get "it" done, then it can be used for all sorts of mischief, most of which has nothing to do with the business and quite a lot to do with the personal self-interest of powerful players.

Then, the US Supreme Court used pragmatic arguments to accept the election results of 2000, and the administration so elected used similar arguments in its justification for war.

Professional, polished intel reports from Tenet's CIA were dismissed precisely because they were professional, polished, cool and neutral, and replaced by passionate arguments about what could happen based on a pragmatic agenda.

Practice, the implicit drive of the Administration towards unseating a man who'd tried to kill Bush's Daddy, grabbing the oil, and converting Moslems to Protestant evangelical Christianity, became the theory, and today, the professorial theorists at the CIA, with their oh-so-fancy Princeton backgrounds and their "preconceived notions" about how to write solid structured intel, are being escorted out the building.

The language of the Enlightenment is itself twisted to characterize men empty of thought as deeply "re-thinking", deeply "re-engineering", indeed "revolutionizing", whether the CIA, the DOD, or an MIS shop...men who produce gibberish and bad PowerPoint but where it is fatal to career to find any flaw.

Another world is possible. Indian and Chinese developers are genuinely enthusiastic about pure "theory"...and would never write a computer book called "Don't Make Me Think!"

And Sgt Peralta didn't have to die in Iraq last week by throwing himself on a live grenade to save his squaddies...exactly as did Milton Olive of Chicago in 1969. Hans Blix's professorial hesitation would have, I believe, disarmed Iraq so that Peralta's Mom wouldn't have to cry.

In the large and in the small, America has become the empire of "Don't Make Me Think!" Guess who pays? Us grunts, that's who...whether in relative comfort (but in the server room on our daughter's birthday, missing her party because there is a random time-dependent failure in the object which was declared As Object, of course), or in Hell.

If I were younger and stupider, I'd have emptied the minibar before writing this essay, Bill. But I actually own Showgirls being at this time a bachelor.

# William said on November 25, 2004 11:58 PM:

Andy, on the whole I agree with you. I learned machine code first, but this allows me today to use VB with skill, in my own opinion.

But there is a central problem here.

The core principles of programming, starting with respect for truth-as-correctness, need to be taught in strict independence from any one implementation.

In my ideal Programming Boot Camp, boots would write and deskcheck until their ear hair fell out, without being permitted to use ANY mechanical aids.

The central Programmer Discontent is that We Programmers know that we are highly skilled professionals...but nobody outside gives a damn, and most of the elite believe we're clerks.

And the situation isn't about to change, because instead of expanding its notion of who deserves to be considered a pro, the elite is narrowing it, as in the case of the CIA, where skill at writing solid, structured intel is discounted in favor of being a yes-man.

Therefore we fight amongst ourselves like children as to who is better and use superficial criteria such as the language.

We need to identify less with the elite and more with the people who pick up our trash while we're debugging that bozo code.

As to your point about multiple threads...it simply ain't so.

Dan Appleman is a VB specialist and he knows threads...read his book Moving to VB.Net.

I am, I think, qualified to say this because way before I became a VB or Basic user, and when I used C, I pulled an A in my classes from Dr. Epp on Computer Architecture and Operating Systems and in both Dr Epp had us study the applicable theory.

However, I may be wrong. Take a look at the practices I use in my book and let me know if I've missed something.

I have TREMENDOUS respect for what appears to be your background in the more theoretic aspects of our field because that's the whole ballgame. Not just "application" but application of theory to the real world.

# William said on November 26, 2004 11:07 AM:

Edward - isn't Don't Make me think that book on UI Design? I think I remember John Robbins mention it b/c he was criticizing developers that think because they can program their UI Ideas are good and they often make terrible ui's.

BTW, a fomer co-worker of mine went to Georgia Tech. He was a Regex guru - but he learned Regexs on paper - wasn't allowed to use a computer for the first three weeks of his class on Regexs. I think your idea for boot camp would be wonderful - make sure you send me and invite if you ever host one ;-)

# William said on November 26, 2004 5:45 PM:

Edward,
Perhaps I am not stating my case clearly or I am being to harsh then. I have no problem with VB as a language I think many of the concepts it supports are pure genius and came about way before their time. I know people hate Variants but that data type allows the possibility of Lisp like containers and run time typing which is a very, very, very cool thing but it has been so badly misused that now people hate what can be a very effective tool for problem solving.

On threading I did not mean to suggest that anyone who uses VB can't thread so if it was taken that way I apologize. I have nothing but the utmost respect for you and Mr. Appleman. You guys were both writing great code before I was even born. I also use VB and I consider myself pretty capable at threading. I only mean that the average VB user ( not a developer who uses VB ) I encounter has a brain implosion when they try and comprehend threading. When I say VB user I need to make myself clear. I am not talking about developers here. I am only talking about users who have started using VB to automate things and now think of themselves as developers but ( insert your automation server language of choice here ) is all they know. They tend in my industry ( telecom ) to be analysts and the language is generally VB. These are the people that most of the WTF code I see comes from. They have zero grounding in how computers or languages work and only use VB because it so simple they can more or less make it do what they want. VBA being the extreme example because it's already included into office so they can learn by trial and error and never really understand what it is they are doing.

On the other hand we have where I work a developer who uses VB exclusively in his daily work. It's immaculate, he writes absolutely beautiful stuff. But he learned to code as a Comp Sci major he started with machine language. He has the basics already, VB is the simply the way he chooses to express his work now.

VB has unfortunately become associated with the majority of it's bad users and has been given a bad name as such. It's like I said in my previous post. There is nothing wrong with the language itself, it can be a first rate programming language just like any other language can. I don't care to use it as my primary language but not because I think there is anything wrong with it, it simply doesn't suit the way I work through problems. I can model problems in the C languages, specifically C++, better than I can in VB. So I choose to use them over VB, C#, Java, python, FORTRAN etc.

My Dad on the other hand loves FORTRAN he can code in other languages but the way he thinks, he can model best in FORTRAN. He is heavily into math and complexity theory so he loves working in FORTRAN. So much so that he even wrote a Word processor for a company he worked for entirely in FORTRAN so they wouldn't have to buy Word Perfect for all the employees at the time. I guess they must have loved it because they used it as their main editor for years even after MS Word had come on the scene.

My point is good code is language agnostic. As you suggest in a perfect world every new coder would start on paper writing in pseudo code with no compiler specific boundaries.

I have a friend that was for many years a professor and his classes started on paper. The assignment was to write a set of instructions that a computer could read and get the contents of a pitcher of water from the pitcher into a glass. The professor was the computer and he would read each students work and execute it. Needless to say the floor was often covered with water by the time class ended each day. The students never saw a computer screen until every one of them could get the water into the glass. This, he said, sometimes took a whole quarter depending on the class. The man is an absolute genius and the teaching world lost a great man when he quit teaching to take care of his aging father. He still runs a web site that focuses primarily on VB, because he really, really, likes VB and sees it's potential.

This is why I won't get into language wars. I don't think good code cares what it's written in so long as the tool suits the job. I think it would be the coolest thing in the world if their were a Common Lisp or Scheme interpreter built into Windows along with VBA. Many things are better modeled as Lists vice Objects, but today's craze and buzzword is OO programming. And most people won't think beyond that, they say oh look everything in MSDN magazine is about OO programming so I will do that, never taking the time to actually think how their problem could best be modeled.

You are right about the "don't make me think". It has become pervasive in our culture. (Don't get my Dad started on this one he'll go on for hours.) If you really look at it .Net is a very good example of "don't make me think". It's very easy to use and for most automation tasks there can be zero thinking involved. "This dot this dot this using this" makes magic and the user never has to understand the thousands of lines of code and thought that went into making their simple line work. They can choose to try and understand it but .Net makes it possible for them never to have to look any deeper if they don't wish to. There is little or no penalty for badly written code and you can beat almost anything into running. It also makes them completely dependant on the ones who wrote .Net and the clr. That is kind of scary it means you have no access to areas of the machine that the writers don't want you to. By giving in to the "don't make me think" you are also giving up your freedom. Just like Americans blindly following the sweet sound of rhetoric vice the rule of logic. They don't have to think, the rhetoric sounds good but they are giving up their freedom. Our public school system is so bad in this way the kids now simply memorize how to take certain tests. They no longer have to think only memorize what they are told. The same with .Net if you memorize which classes do what, you never have to think on your own if you don't feel like it, just string it together. These languages weren't designed with this in mind, I would hope, but it's what they get used for more often than not. Just like VB it wasn't designed to allow people to think less but that's the way many people use it. It's the nature of the beast I guess most people are lazy, if they don't have to think for themselves they won't. That's why tv is so popular it feeds their active minds without requiring them to think. The perfect visual drug. The Soma of my generation. To quote from one of your essays "Data base designers do not read de Saussure" - from (On the Culture of Data Base.). I would go further not only don't they read him they don't even know who he is or why linguistics theory is deeply tied into how we interact with machines, create programming languages, develop spell checkers, and the actual theory behind SQL. I realize I am taking that statement slightly out of the context in which it was written but it does fit into what I'm talking about. The pervasive laziness which has encroached into every level of American society including programming. That laziness takes advantage of whatever it can, it's not the fault of the language or it's writers. The root of the problem is much deeper into society than that. But given the way society works I don't see this trend turning around anytime soon. Like Machiavelli talks about in The Prince too many people profit by the way things are currently. To turn it around would be to rock the boat and in rocking the boat you put yourself on the line like the lady you talk about who got the bad review. Society does not like boat rockers, a lazy society likes them even less. It's why thinkers throughout the ages have been persecuted.

I think it would be more interesting rather than arguing which language is better for what reason; to instead discuss why people feel the need to argue which language is better in the first place. Is it like Paul Graham said in one of his essays, that humanity is like a person treading water we feel we must constantly push the other down in order for us to remain afloat? Is it simple bigotry? As long as humanity has existed people have felt the need to say "my X is better than your Y", from religion to politics to programming languages. These battles rage all over the internet, sometimes they even start wars. To what end, if some one does finally prove to the whole world that their X is better than the other man's Y what have they gained? So why do we do it?

# William said on November 27, 2004 2:53 AM:

GREAT post, Andy. Thanks for hosting it Bill.

Your Dad and I sound like peas in a pod. Tell you why. In 1986, I was hired into the "advanced research" team at Rainier Bank in Seattle to "develop a business rules compiler".

I had to write several reports but didn't have a PC, instead I had IBM mainframe TSO, so I...get this...wrote a word processor in Fortran.

There's a lot of guys like me, midlevel types who worked hard for years doing the best we could, and who now take a Dim View of practically everything. One nice thing about being in China at the age of 55 is the natural respect Chinese have for old farts, even young old farts like me.

One myth: old farts can't or won't code or do math. John Nash is doing original work in his seventies and I still code. Perhaps I use VB because of a touch of Alzheimer's, or perhaps because I usedta be an art student.

A mentor, who worked for IBM in the 1950s, told me how he and his buddies in fact wrote several parsers and compilers for the IBM 7040, a business mainframe, just to be able to adapt to user needs in the railroad industry, which was in the process of rapid change, and consolidation in the 1950s. They were able to do so despite their platform, which was unglamorous in the IBM tech pecking order of the time; the prestige machine was the scientific giant brains 709 and 7094.

Today, programmers in all languages are ideologically trained in school to do "what the user wants", excellent advice...which completely forecloses the very idea that no ONE solution exists in a time series of changing problems.

The highest creativity in any language, no matter how humble, is to give a person, not a fish, but a fishing rod.

For his efforts, my mentor was made a manager, like so many programmers who want to become truly Senior Programmers but instead find themselves managers.

But, it's an old story. Intellectuals always want to run things. The trouble is, ya give 'em a shot, as in October 1917 in Russia, they too often make a mess of it.

At the same time, programmers have a right to some greater control over their work.

Search

This Blog

Tags

Community

Archives

News

My other sites

Cool Stuff

Book Stuff

Security

ORM

Data Access

Funny Stuff

Compact Framework Stuff

Web Casts

My KnowledgeBase Articles

My MVP Profile

Design Patterns

Performance

Debugging

Remoting

My Fellow Authors

My Books

LINQ

Misc

Speech

Syndication

Email Notifications