Your programming language sucks

Submitted by reeses on Thu, 2004-07-08 12:07. | |

http://www.astrogoth.com/~reeses/media/ruschalisp.jpg

(lisp)

I read an article about autoboxing surprises in Java 1.5/5/V/quinquies/five-o a week or two ago (that link is a repeat that came up when I googled), and noticed a few links back to the conversation in lambda or whatever.

What amazes me is the infernal stupidity that makes this an issue. Seriously. It constantly baffles me how horrible a programming language Java is. Sure, I rant about this a lot, but wtf is this even still a problem? Why are object and reference/pointer identity still confused?

So, I was thinking, it's obviously because Java programmers are, as a rule, stupid. Everyone started programming this Java stuff (self not excepted) because it's an easy way to rack up cash. I earn more because I know Java than I would have with C/C++/Objective C/Lisp/Smalltalk/SQL/Ruby/Perl/Haskell/OCaml, and that's a tough thing to give up or pass up. Lots of the people "programming" in Java generally have no math or CS background, and don't really have the aptitude to pick it up. (Yeah, I was a french major in school for hockey and chicks, but I am snotty enough to think I have the Wallacean "medium strong amateur interest" in math and CS.)

Which programmers suck the most? I'm not really sure yet.

I would say the programmers about whom I am qualified to make value judgements are those working in the following languages.

  • Java
  • Visual Basic
  • C
  • C++
  • C#
  • Smalltalk
  • SQL

I say qualified because of two factors: my personal ability with the language, and the number of developers with whom I have worked, or whose code I have seen. My Lisp and Objective C abilities are again "medium strong amateur", and I couldn't name ten people for each with whom I have worked, so they're not on the list.

My ranking would probably be, in terms of pressure, SQL, Smalltalk, VB, Java, C#, C, C++.

SQL is worst for the following reason: I have worked with so many DBAs who claim that "SQL isn't a real programming language." Mind you, I worked in the frickin' SQL Server group at MSFT. I know what people can do with SQL. I've seen people do Travelling Salesman in SQL. (no, not a solution.)

Of the rest, only Smalltalk's position should surprise you. I have never seen a group of people so convinced of their ability to solve "any computational problem" that they kept confusing themselves and getting in over their heads. The number of people constantly failing at difficult tasks is why I'm penalising them all. That said, they can do closures and you probably can't.

As for the rest, I can give the following reasons:

VB is easier than Java. Most of the "I want to make six figures ASAP" programmers in Seattle (i.e., working at or for (directly or indirectly) MSFT) picked up VB In Variant Days and started billing. I've had people billing $85/hr ask me how to write parametric for loops. ("I know how to make it run 17 times, or 9, but not whatever number the user types in.")

Java has a critical mass of morons, so it's slightly below C#, just because you have to be a little interested in trying new things to stretch and try C# right now, and that's usually a sign of above-average aptitude. It also helps that several of my friends have been implementing a C# compiler and open-source CLR.

C# still has a lot of the post-Java and post-VB morons, though. It's basically J++, so the barrier to entry is pretty low.

C? I had a traumatic experience at another employer, where I inherited a pile of code with an average function length of about 700 lines. With gotos. Written in the late '90s. I s--- you not. I won't tell you who the employer is, but I guarantee your money has gone through this code. Guarantee. Still, it's harder to write production C, so people doing it usually have some concept of memory management, instruction cost, computation model, etc.

C++, well, I have been fortunate enough to work with people trying very hard algorithms in C++, and writing fantastic code, and not a lot of the other kind. I.e., I haven't been exposed to a lot of bad C++ code other than various crap open-source projects that were written in a weekend anyway. I think my C++ code is probably the worst I've actually worked with.

Now, I'm not including ASP/JSP/JHTML/Javascript/etc. as discrete items in my list, but they were considered as part of their parent language. (VB, Java) I suppose that isn't fair, because the barrier for web page scripting languages is even lower. The programmer doesn't even need to compile anything!

Getting back to my point, (as if I actually had one) I'm not sure what the solution to the object vs reference/pointer identity confusion is. I know what I'd do, though.

Ixnay on the ouble-day-equals-pay. Strike it completely from the language.

For object identity, I'd do the following.

Object.equals(Object)

For reference identity, I'd do exactly the same thing.

Object.getReference().equals(Object.getReference())

Yeah, it's kinda goofy in Java, since you're actually working with references all the time anyway, but you Java people have proven that you can't be trusted with double equals, so I'm taking it away from you.

So there.

Submitted by Anonymous on Fri, 2007-11-09 03:21.

i want to know its security , reliability and easy to use interface

Post new comment

Captcha Image: you will need to recognize the text in it.
Please type in the letters/numbers that are shown in the image above.