What do you hate most about your language?

brian_d_foy on 2007-03-03T20:58:38

Try this question the next time someone tries to push a different programming language on you, or even when you want to hire someone: "What five things do you hate most about language X?"

If they can't find five things to hate, they don't know the language well enough to either advocate it or pull in the big dollars using it. They might get to be an entry-level programmer, but that's up to you.

I was talking with someone this week about language advocacy. To most people, that tends to mean that if I don't choose their favorite technology, I'm wrong.

Whatever. I don't care that much. Don't want to use Perl? Then don't. Want to make an informed choice? I can help. Still don't use Perl? Fine. Sometimes the right answer is "You have a strong programming team with good practices and a lot of experience in Java. Changing to Perl would be stupid".

In code reviews for clients, I often ask "If you could start over on this project, what would you do differently?" In this fantasy land, users and programmers get to bitch about anything and everything they don't like. "I want a better interface", "I want to separate the model from the view", "I'd use this module instead of this other one", "I'd rename this set of methods", or whatever they really don't like about the current situation.

If you don't know what you don't like about something, indeed, even Hate Hate Hate about something, especially software, I tend to think you're either covering your ass and don't really use it enough. If you don't have things you hate about your own code, for instance, you probably have an ego problem and are unwilling to admit your limitations and poor decisions. Look at my older code. It's crap. In five years I'll probably think the code I wrote this year is crap. That's just life.

The same thing applies to language advocacy. When someone wants to push another language onto me, I ask them "What are five things you hate about that language." I can tell you five things I hate about Perl, certainly. I can't be an effective advocate if I'm just a cheerleader.

I'm not going to list any reasons here, but try that the next time that someone tries to push another language on you, or even when you interview people for a job.


Splitting semantic hairs, but...

renodino on 2007-03-04T00:10:48

...I'd rephrase your inquiry to "What 5 things annoy you most about your favorite language ?"

The net effect is the same, but is less confrontational. "Hate" tends to raise barriers of the religous sort; but we can all admit to occasionally being annoyed by even our favorite languages, things, even friends and family (tho its best not to admit the latter in public...).

Re:Splitting semantic hairs, but...

brian_d_foy on 2007-03-05T02:51:50

I defintely mean "hate". Annoyances are easy to get over. The things I hate make me want to stick pencils in people's eyes. :)

Re:Splitting semantic hairs, but...

sachinjsk on 2009-02-24T03:52:45

I agree with you. Hate is too strong a word.

Re:Splitting semantic hairs, but...

brian_d_foy on 2009-02-24T04:31:09

Nope, I definitely meant hate. I used that word on purpose. I don't care what annoys you, I care about what you hate about your language.

Re:Splitting semantic hairs, but...

sachinjsk on 2009-03-04T02:07:49

What I meant to say is that many people might just say that 'I dont hate anything, but there are few things which I dont like of language X'. It is arguably safe to say that if someone can say 5 things they hate of, they know the language well. But it is not safe to say that if someone can't say 5 things they 'hate' of, then they are either a beginner or can't pull in the big dollars using it. I remember once someone asked Tomek Czajka a similar question, and he said he has got nothing that he hate of c++ but he had many points which he didn't like of; and he advised beginners to start java instead of c++. You just can't say he doesn't know c++ well(he's one of the best programmers in the world), and you cant say he is not capable of pulling in big dollars using it(he's made more than 135 thousand USD just from programming competitions).

The -> operator

hackwrench on 2007-03-05T04:08:17

Period should always go across a pointer if pointer addressed. The pointer should be a part of the typing. No period returns the pointer, period returns the entire structure and period then element returns the element in the structure.

Type Vector2D
X AS INTEGER
Y AS INTEGER
END TYPE

DIM u AS Vector2D ptr, v as Vector2D ptr
# u will point to the same location as v
u = v
# u will hold a copy of the contents of the structure pointed to by v
u. = v.
#u holds a copy of the element x in the structure pointed to by v
u.x = v.x

Tool Suckage

DAxelrod on 2007-03-08T19:12:37

This is precisely what I was thinking when I wrote this journal entry.

Let's See

pudge on 2007-03-14T03:25:00

In no particular order.
  1. No try/catch facility other than eval, which is suboptimal for various reasons.
  2. Cumbersome signal handling.
  3. Slow startup time for scripts with lots of modules, etc.
  4. Performance penalties for OOP, tie, and similar, which unfortunately can limit their use in certain environments.
  5. Very hard to follow the exact relationships of classes to each other.

Things I hate about Perl...

jarich on 2008-05-09T02:08:44

Are now in my journal.