Poll: What's Your Most Disliked Programming Language?

358 points by mrspeaker ↗ HN
Which programming language makes you most sad/angry/annoyed/... - add a note in any comments on the language you most like, so we can do some correlation.

365 comments

[ 3.4 ms ] story [ 319 ms ] thread
COBOL is a COmmonly BOred Language!!
The programming languages that would make me the most sad/angry/annoyed I don't use, so it's difficult to make a choice. I suppose I'll have to go with Javascript because it's the de facto 'Web language' which people use to force me to evaluate arbitrary code whenever I want to read anything on the Web. Even with a sandbox that seems a terrible idea.

If we're talking about programming languages I hate but still use, I'd have to go with Python. I spend most of my time writing Haskell, and Python's dynamic typing puts me on edge. I might spend half an hour evaluating a Python script only for it to throw an AttributeError because I mistyped some function name or passed the wrong type.

Does anyone know a static analysis tool for Python? I found one a while back but when I tried it it threw (you guessed it) an AttributeError on NoneType.

pylint catches most such common errors.
Editra with the PyStudio plugin has become my favorite development environment. It runs pylint every time you save a file and highlights lines with errors.
I believe vim + syntastic should do the same
Emacs with flymake mode or pycharm both do a great job at giving you real-time feedback on issues like that.
Sublimetext 2 + sublime lint plugin makes for a very nice python programming experience
I'm going to sign in as a partisan here. I firmly believe that Python is the worst language that people actually use.

DuckTyping is the most deeply misguided aspect of python. With the discover of Hindley-Milner type inference 40 and 30 years ago, this sort of sloth is simply inexcusable.

Pythonistas will say "Oh, I don't care if it's a duck or a swan, as long as it quacks." Guess what? You can treat function calls as a statement that an object is an instance of some typeclass and that typecheck that. With a sufficiently intelligent compiler/interpreter author this is transparent to the programmer.

I enjoy Python's aesthetics and extensive libraries, but wish it had (practical) static type inference. (RPython isn't really practical.)

And to confuse matters, Python 3 added optional type annotations that are ignored by the runtime!

With fairness, no you can't, not truly. Please point me to the version of HM the works with inheritance. Plus, due to stuff like __getattr__, the interpreter may not know until the method is called if it even exists.

It would be totally possible in python to write a class where when any arbitrary method is called on a class, a function is randomly generated and called, with a random number of arguments, etc. It doesn't even have to be consistent from call to call. How on earth would H-M type inference cope with that?

I never said inheritance, or method for that matter. You can do H-M on typeclasses. Philip Wadler has a paper on it and it's alive and well in GHC: http://homepages.inf.ed.ac.uk/wadler/topics/type-classes.htm...

The fact that Python allows you to do something absurd is simply an argument against its design.

Edit: Uh oh, looks like I ruffled some snakeskin!

The point is you can't just bolt on H-M to a typical scripting language and expect it to work, like, at all. It's a pretty huge sea change, and it would warp the underlying language to the point where you'd just end up with some of non-lazy, non-pure Haskell.
(comment deleted)
(comment deleted)
Well, duck typing can still be statically checked, so I'd argue that dynamic typing is more misguided. That said, I do agree that duck typing is fundamentally flawed. I think swans actually don't quack, they honk, but so does a car. Here we can see a problem with both synonymous and homonymous verbs.

I think it comes down to namespacing: we use modules to prevent naming conflicts, allowing us to compose two modules, but if we do the same with objects their attributes conflict. In Haskell everything has a namespace — there are no methods, only functions — and type classes provide polymorphism without (henceforth) 'quack conflicts'.

Two terrible examples of quack conflicts from the Python standard library are '+' meaning both "add" and "append" (the latter being non-commutative), and the comparison operators '<', '<=', '>=', '>' actually meaning ⊂, ⊆, ⊇, ⊃ when dealing with sets.

Sorry for conflating duck typing with dynamic typing. I appreciate the correction!
The more common a language is, the more hearts it's gonna break along the way. PHP all the way baby.
Why so little hate for C then?
because few people develop in C compared to the number of people that use the end product of C programs.
Because IMO C is the mother of all languages...
That stuff that is used in Autotools, ugh ... What did they call it? M4 I think?
Yeah, most people know M4 from Autotools, which is a poor use of it really. M4 was created by Brian Kernighan and Dennis Ritchie, the same team that created C. So there was some expertise behind its design. I've only use it for assembly programming, where is was very handy. But yeah, Autotools is probably why most people hate it.
I don't dislike any programming language... except COBOL.
PHP will be at the top of this poll and the other poll of favorite languages.
It won't be at the top of the other poll. It's getting about as much votes there as Haskell. If we consider the size of userbase for both languages, it's pretty clear that it's not liked in this community. With good reason, it's utterly mediocre.
(comment deleted)
That because many PHP devs (including yours truly) have a hate/love-relationship with the language. I voted for PHP in both polls. :)
You missed the worst one in the world - Mumps (or M).

Terrible language that produces (seemingly automatically) terrible software. It also rots the brains of those that are forced to use it.

All of those listed have their charms - seems hard to dislike them in the main.

thedailywtf.com usually posts horrible code bases that developed gradually over time. But their collection of MUMPS horror stories has convinced me that any project in MUMPS is already doomed. http://thedailywtf.com/gsearchresults.aspx?cx=00708007008730...
If only. There's a good chance that some of the important systems at your friendly neighborhood hospital are running on MUMPS.
Those are horror stories, recall. If you want to write bad code then you can do it in any language. These stories don't resemble what I have experienced. (I work for a healthcare software company in Wisconsin.)

In particular, a sensible coding style and sensible development practices (yes, name your variables sensibly! yes, use source control! yes, have code review and automated tools to catch common errors) can remove the bad. It also helps if your company wrote its own (quite good) IDE for the language so you don't have to use Intersystems'.

Honestly the most fun thing about M/MUMPS/Caché is that there's very little boilerplate and you can write sensible code quickly. It's like being stuck with Java and then suddenly moving to Python or Ruby. (With, yes, a few pitfalls that these languages don't have, and quite a few features missing. I still prefer modern languages for personal projects. But you quickly pick up a sense for practices to avoid.)

I can't say all companies that use Mumps are great places to work. But mine honestly is. </soapbox>

MUMPS still has a healthy user base at that. MGH is obviously a large user base (interview with a hospital in Boston and it'll eventually come up in conversation), but the fun is when you get into the dialects of it. For example, MEDITECH has their own dialect named MAGIC, and at least one of their employees has attempted to make things better.

I should try to get him to post to talk about it, but he created an object-oriented version of MAGIC that supported longer identifier names and other more modern constructs, as well as an interpreter that spewed out perfectly standards-compliant MAGIC. Originally he was barred from using on existing, but eventually got approval to use it on new projects and I guess some portion of the MEDITECH developer population uses it over plain-jane MAGIC now since it's substantially easier to write and maintain.

Though recently he's reached out asking about the job market. He's been there since his early 20s and now is in his mid-30s and feels as if he's dead-ended himself on the job market unless he gains familiarity with something else. I think he's finally looking to break away from MUMPS.

Had to look this one up. It's amazing that after 15+ years of programming I keep coming across technologies that seem to live in a parallel universe.
I use Perl a lot, but I have a problem with it. And it's not for the usual reasons. I dislike Perl because it amplifies how much I dislike working with other people's code. In something that constrains expression like C, it's easy to read most people's code. And in more expressive languages like Python, I at least feel like we're communicating. But to read someone else's Perl code, you have to get inside their heads! It's like you're not even speaking the same language.
I haven't noticed this, and I've worked on a lot of other people's Perl.

Like anything, practice makes perfect. Read more Perl and reading Perl will become easier.

Javascript because I just don't have the choice to not use it.
You have to stop worrying and learn to love the bomb ;p In all seriousness, I feel that a lot of people(me included) go through a period of hate for javascript until they find that it's actually has some impressive expressiveness using very small set of things.
You must be right. It is like I still have the stigma of the early days of Javascript in the browser.

I do mainly PHP so it's not like I can't overcome bad design. I routinely try to get a fresh perspective of JS but it does little. I praise jQuery everyday though.

Get a hold of Douglas Crockford's 'JavaScript: The Good Parts' book. JS is so incredibly pervasive you're going to have to put up with it, so you may as well see if you can get along with the nice features like closures, functions as first class objects and prototypal inheritance.
I definitely have a very strong love / hate relationship with javascript. On one hand, you can be very expressive with Javascript and it absolutely can be an incredibly flexible language with a lot of power.

On the other hand, there's a LOT of warts in the language. Random reserved words like 'class' that don't even fit the language's approach, variable scoping that can very easily bite you in the ass if you don't know what you're doing, optional line terminators that seemingly exist for no reason other than to create bugs, stuff that should be avoided at all costs like 'with'. And that's just scratching the surface.

Yeah I agree on a lot of the points you mentioned. Block scoping would have been better in my view also. But there are tools, like in other languages, to ease that pain. I never forget a semicolon due to using js2-mode which makes missing semicolons stand out. JSLint and other tools of the sort help find bad code too. And the in browser tools like the Chrome dev tools with a debugger,tracing,console really make it much easier.

Javascript without the tools would be a real pain.

You know, what I hate is the JS community. It seems JS is split into two camps:

1. Ordinary people trying to get something done. Often not professional programmers. These people account for most JS on the internet.

2. JS hipsters. The kind of people who use Node.js and worship Crockford. They refuse to accept that anybody might want to use a language other than JS on the web, or that if you only accept the "Good Parts", you'll be set for life (where's my static typing, bitch?).

Languages are as much people as they are technology. I use Python because I like the people who use Python. I use Haskell because the people who use Haskell are really gentle and humble.

Good, reasoned people lead to good, reasoned code. I don't see that with the JS community.

Perhaps the JS community you portray doesn't just exist in two discrete attitudes. As far as I see it, JS is a fact of the current web so trying to get the best from it is the easiest way to dull the pain of what is often clumsy and irritating. There are certainly places and uses where static typing would be great and the web is no exception but JavaScript isn't suddenly going to go away just because it's easy to write bad code, or because a load of 'hipsters' are making some flavour of it popular at the moment.
What, no RPG III? That is really at the top of my list, even above perl.
I think C++ is a terrible language but I actually like that it exists because it distracts people from adding all of the crazy features to C :)
Actionscript, Java, Objective C, Rexx, Visual Basic and any language that claims to be god's gift to developers without delivering. But my most hated has to be Java for all the extra condescending syntax and verbosity, enterprise "mambo-jambo" cruft, native code through jni circus, and general ugliness...
VBScript is the most awful language I've ever used. Thankfully I've forgotten most of the pain it caused me.
Haha, why the hate?

I use VBScript almost daily because I support an old proprietary system that offers 3 choices for business logic scripting (VBScript is actually the best of the three).

Anything .NET, because I don't see the point of learning a proprietary non-cross platform language.
Agreed 100%. In addition software written in it seems to have the following other problems frequently

- Using Oracle - Rarely contributing to FOSS - Using very non-agile development methods - 9 to 5 corporate culture - Bad UIs and boring software overall - Terrible web accessibility and standards conformity - Hearing people say, "Its better than Delphi" as a comparison point

But those are just my experiences in working with teams using .NET. My run-ins with .NET have only gotten worse since I moved to Columbus, Ohio. I don't know anyone in the Valley using it, but people working for insurance companies seem to love it.

I was originally taught VB in school and thought it was amazing. Of course, I needed to get a student license for Visual Studio...and I needed to wait an hour to install it everytime I bought a new computer...oh and what I created could never be used by anyone on a Mac or Linux system.

A couple weeks later I discovered the wonderful world of Linux and never looked back.

yep, forgot about .Nyet and all those C# fanboys Despite my hate for Java, I have to admit Java > .Nyet +1
Mono Project www.mono-project.com
Easily Visual Basic for me.

My first exposure academically to a programming language was Visual Basic. This was what they "force-taught" at school.

I already had experience with Java/PHP/C, and just wreethed inside with disgust at the rationale for learning Visual Basic. It was a horrible experience that was forced upon me by my school's teacher. (I was about 16-17 at the time I think).

As a form of silent defiance, whenever I had to declare a variable, I would call it `dim $%something%`. Ha.

my first academically forced language was Java and now I hate java the most. I wonder if more people hate the first language they got taught.
I imagine it varies considerably based on the teacher and other circumstances.
My first academic (and non academic in fact) language are C... and I still find it nice ! And for the short exposure of Java, I find it distastefull with lot of cruft. Especially since I've met Common Lisp and Haskell...
When I was in college everyone hated C but I loved it.. but when Java came across, all those hated C loved Java but I never liked it.
You may be on to something there. I despise BASIC and would never use it as an introductory language to someone learning how to program.
My first language (after basic) was 68000 assembler (unless you count digital logic), followed by C and C++. When I went to college, they were imposing Object Pascal, which seemed a clunky and pointless language overall. It's possible that the language wasn't as bad as I made it out to be, but first impressions tend to be lasting impressions.
Had a similar experience when learning languages at the school I went too. There tehy started out with Perl (ya I dont' know why either), then VB6, and then ended with Java. It's probably the only time I've ever looked at Perl or java so fondly, and the VB6 experience was so bad it tainted my opinion of the .NET platform for years afterwards.
Node.js because it's very horrible concept for 1000 reasons.
Maybe you would want to elaborate on that?
Could you elaborate on this? I think node is great for quickly prototyping evented applications.
Java, I was force-fed it in school. We actually had to develop web applications with it.

I wouldn't have cringed so much if I hadn't have been developing in nodejs and php prior.

Web application with Java? Oh high school.
Objective-C. The syntax of this language is hideous. In most cases with languages like C#/Java/Python/Ruby etc. even if you don't know them you can understand a few things by looking at the code. Every-time I look at Objective-C code it hurts my eyes. What a convoluted piece of crap.
I'd encourage you to play around with Obj-C a little more before writing it off. It's actually a pretty simple, compact and concise language once you dig into it. Apple's APIs, on the other hand... :facepalm:
I’d give it a try if it worked on Windows or Linux. I’m not willing to buy a Mac just to be able to study a language-I could build a Hackintosh but it’s too much trouble for what it’s worth. Most of the languages out there work on any platform. Even C# works on Unices through Mono. But for Apple’s products its always the same story, our way or the highway.
Someone can correct me if I'm wrong, but I believe the language itself can be used on almost any platform with gcc, not just OS X.
You are correct. GNUstep would be the most well known project to make use of ObjC outside of the Apple world. Also, since it implements the OpenStep API, you could use it to get a basic feel for Mac development without jumping in to the Apple fog.
You're quite right, though of course you don't get the Cocoa libraries. GNUStep might give something of the same flavor, perhaps.
Which APIs do you dislike? I think Apple's Cocoa and Cocoa touch frameworks are some of the best. Cocoa is old and less polished, but Cocoa touch is pretty awesome.
I'd agree on Cocoa Touch, but Cocoa seems like a mess to me. I hope Apple will clean up the Cocoa API at some point in the future ...
Objective C is the 6th C-like language I've used professionally. It took a bit of getting used to, but now that I know the overall design goals, and how everything's implemented under the hood, I find it to be quite an elegant language. Properly designed APIs are a joy to use in Objective C since it's very easy to describe your intent.
(comment deleted)
I don't expect that the responses to this will be enlightening. In fact, I can predict right now that the winner of this poll will be the most commonly-used language which isn't widely considered to be "nice". Depending on the precise demographics of this site, that's either going to be Java, C++ or Javascript, despite the fact that there are clearly worse languages out there (Fortran, COBOL, Brainfuck...)

The reasoning is explained well in a post by Terence Tao [1] in the context of 'List of the worst movie of all time'. Briefly, assuming that there is at least some correlation between programming language quality and uptake of that language (which doesn't seem to be controversial, especially among the users of HN) then you expect that languages which are generally worse will not be used so much, and so there will be fewer people who are able to vote for them as being "the worst".

For example, I have never used Delphi (to pick an example at random). I know literally nothing about it. It could be a stinking ball of crud that irreparably crushes the soul of anyone who tries to use it, but because it's not that popular, I've never used it, and so I'd never get to vote it down for being the horrendous pile of fecal matter that it may well be (I repeat again that I know nothing about Delphi, and it might be wonderful - I'm using it to illustrate a point).

If you make some simplifying assumptions about the probability that someone has used a language given its quality, then you can demonstrate that the language which will end up topping polls like this is whichever one is "just good enough" to be popular - which in this case means Java, C++ or Javascript.

[1]: https://plus.google.com/114134834346472219368/posts/TPjSPPd1...

Brainfuck is not a bad language, it just has different goals. Esoteric languages in general can't be compared with general purpose languages designed to be useful.
Brainfuck has the goal of being a bad language.
The goal of brainfuck is to be as minimal as possible. Being bad is just a side effect of that.

If you want a language that was designed to be bad look at Malbolge or INTERCAL.

No, youre right - brainfuck is a good language.
After looking at those I take back anything bad I ever said about Brainfuck (and also C++).
I would call Brainfuck (and other esoteric languages) as an instance of what "critical design" as described by Anthony Dunn. The goals of critical design are to produce artifacts that get you to think vs. "affirmative design" which is meant to create usable artifacts.
I refute that Fortran is axiomatically worse than Java. I've spent a few years working in each, so I got to know them decently well.

Fortran is like C with great math support; that is to say, C is like Fortran with great systems facilities. In each language's domain, it is more expressive and more performant than Java. Outside its domain, you don't want a bad programmer going near it for too long, but you can absolutely still get things done.

On the other hand, Java fills me with such dread that I would write a post defending Fortran just to kick it in the nuts.

The issue is that both C (portable assembler) and Fortran (portable math library) solve some problem pretty well.

What problem is it that Java solves well? That is what makes java such a shitty language to program in, for any particular problem you encounter there are much better languages to solve that problem in, C# comes to mind immediately as to what Java should be.

Note: Yes I realize that Java has excellent cross platform support and a huge ecosystem, but we're talking about languages, not the ecosystem.

The goal of Java was always to be able to "write large programs quickly." In some ways that sounds terrible by itself, but I think it turns out to be legitimate.

I've been on python projects that need to grow but struggle b/c all the things that make it easy to get a lot done the first few weeks become liabilities very soon. Adding developers to a project that doesn't declare types and encourages just passing around hashmaps is brutal. All the stuff you can't do in Java makes it easy for someone else to understand it and edit it.

I would believe that C# might be a bit better but only being fully supported on MS is a non-starter for many server side situations.

> The goal of Java was always to be able to "write large programs quickly."

That wasn't the goal of Java, not by a mile. The goal of Java was to build a language that runs everywhere, and to facilitate Sun's "everything(your watch, toaster, pc) is networked" ambition.

All the things that people flout about Java saying that how it helps them manage large projects(completion, re-factoring, ide integrated debuggers, good libraries) wasn't even a twinkle in anyone's eyes who was involved with Java development. Java's initial release was terrible - it didn't even have decent stdout facilities, was interpreted and as a result dog slow, took a long time to load the jvm, and essentially failed it's "write once, run everywhere" motto as it became "write once, debug everywhere" in practice.

Java has evolved, mainly because people bought in the hype. I don't know why people stopped questioning the hype.

"Look, we are totally object oriented."

I am not sure what it means for me as a developer. So, what about classes? Are they objects? Packages? Are value type objects?

"Ummm. No it doesn't matter. Just listen to us. We are object oriented."

"Our goal is 'write once, run everywhere."

Your awt looks like dog shit on both windows and linux, and is slow.

"Hey. We didn't say anything about 'looking good'. I can bet it looks equally crap. That's platform independence."

> In some ways that sounds terrible by itself, but I think it turns out to be legitimate.

If that's the actual goal, it isn't terrible at all. Why do you think writing large programs quickly is a terrible goal?

> I've been on python projects that need to grow but struggle b/c all the things that make it easy to get a lot done the first few weeks become liabilities very soon.

And those things which make it easy to get lot done in first few weeks but are liabilities would be?

> Adding developers to a project that doesn't declare types and encourages just passing around hashmaps is brutal.

I understand time complexity, space complexity, and api of dictionaries. If you needlessly wrap it in your class, I couldn't know anything without reading through your wrapper. What exactly do you gain by wrapping dictionaries?

> All the stuff you can't do in Java makes it easy for someone else to understand it and edit it.

Examples please. If your developers have an easier time understanding implementing an interface to sort, rather than saying persons.sort(key=lambda a: a.name) then I don't know how that can be remedied.

> I would believe that C# might be a bit better but only being fully supported on MS is a non-starter for many server side situations.

The list of things which aren't supported on mono is small, and basically includes things which won't run outside of windows(office interop) or are deliberately dropped(WPF).

(comment deleted)
As my colleague once said: "Java is the only modern language in which it possible to write millions lines of code".

I agreed with him.

Minute later he understood what he said <grin/>

"What problem is it that Java solves well?"

The aging Cobol cohort.

> Yes I realize that Java has excellent cross platform support and a huge ecosystem

Java's cross platform support is awful if you go anywhere beyond Windows, Linux, OS X and Solaris (and even there both OS X and Linux have second-class status at best and suffered from serious issues at least until recently). Even Python and plain old C (if you know how to write portable code) are much more portable than Java ever will be.

And many would say the "huge ecosystem" of incredibly big and complex "frameworks" and tools is part of the problem with Java, or at best one of the symptoms of Java's problems. As others have pointed out, IDEs are language smells, and with Java using the language and surviving in its 'ecosystem' basically requires it.

I personally would even say that Java the language is considerably better than Java-the-ecosystem, but using the first without the later is almost impossible, and there are much better languages around anyway.

This has probably been the most senseless post I will read in a while:

- C only got a memory model in C11. So you can't be sure your code does what you think it does, without compiling and testing with every compiler for every platform you intend to target. - C is a low-level language which has its niche. But most of the time you want quite different features, like runtime monitoring, inspection and debugging. - In C you can't just move your binary to a different architecture and run it there, same thing in Python: You can't just deploy your pyc or pyo files on a different machine and expect it to work, especially not if the versions differ. - You can't even do that for source files: Python breaks compatibility frequently, and because it is dynamically typed, you can't just check the signatures that nothing has changed and chances are you won't even see breaking changes until it crashes at runtime. - Python is not nearly as fast as a decent JVM. - Both languages lack a cross-platform UI toolkit, although yes, AWT and Swing suck, and JavaFX isn't that great either.

I agree though, that the whole "framework" stuff has grown out of proportions in Java. It is just a disease if a simple application ships with 40 MB of JAR files because the developer couldn't write any non-trivial functionality himself.

> IDEs are language smells

This smells like envy from someone whose "favorite" language lacks good IDE support, but yes, Java-the-language is just outdated.

> Java the language is considerably better than Java-the-ecosystem

WUT? Java-the-language is the weakest part. You don't have to use any Java library or framework at all and Hotspot is probably the only freely available VM which is fast, mature and stable.

>>Even Python Why "even"? Python is the most portable language today. It's portability between OSes superb and it "almost portable" between VMs (IronPython, Jython, PyPy).
Java solves garbage collection well, better than any other language I know of.
Java is good for enterprise IT consultancies. It requires a lot more detail to attention to implementation most enterprise app features, yet it still works acceptably in the end, maximizing consultancy fees.
In the end it rarely works acceptably, but that just helps sell support contracts, so it is also good for enterprisey software vendors and consultancies.
I think fortran77 should have been listed separately.

Any language that requires six spaces at the start of the line in order to maintain legacy punchcard compliance makes me gag.

fortran90 or hpf on the other hand are pretty useful in their domain.

In general when people hate on Fortran I assume it's because they had to deal with f77. 90/95/2003 aren't perfect or anything but aren't generally offensive.
You can't ignore context. Fortran is a very strong language for a specific application - you can't compare it to Javascript.

Delphi was a framework using Pascal. It was a revolution at the time - and you can see it's influence in many software tools available today.

You could argue that the current SQL/Rails API/JSON/Backbone/JQuery/CoffeeScript/HTML/CSS abomination we've created could be improved or replaced with something as disruptive as Delphi was at the time.

I wish there was some way to vote for that abomination in the poll. Personally, writing Java/Html hybrid templates that are served as html documents and then further manipulated by dynamically altering the DOM in javascript on the client is the stupidest programming style I can imagine.
Out of curiosity, what is your favored alternative for web applications? Server-side rendering of complete pages? Client-side manipulation of pure HTML?
I don't know of a good alternative. Thus my grumpiness.
A redesigned transport model other than HTTP? Continuations? A saner front-end language that can also be used at the server side and it's not the Node.js failfest?
That's a good point. How come we are still using http? I mean, the closest we've come AFAIK to something almost useful is ajax, but that's still not very good considering it's javascript... Maybe I'm unaware of some secret google development.
There's Google's SPDY, but it doesn't fix all that we might like from HTTP, mostly performance stuff.

I guess, it's the agreeing on something and then adopting it and then having it catch the market part that's making this difficult.

On another field that I follow, we haven't had anything better replace MIDI for like 30 years...

Is MIDI bad? I mean, why do you think it should be replaced? I am not familiar with this area but I am honestly interested!
MIDI is very slow and has a very limited message set. There are better alternatives, like OSC, but it seems like the chances of the music industry collectively acting in its own best interest again and approving a new standard are very slim.
Well, the biggest limitation is that it has granularity of 0 to 256 for message data.

That means if you want an analog like continuous change from 0 to max for some audio property, you get stepping instead.

It's also not very fast for todays work with tons of channels.

I doesn't know about audio at all, etc.

OSC is a better replacement, but not widespread enough.

You can replace HTTP with anything you want using WebSockets, but I never got what's wrong with it.
Given that websockets don't even work reliably yet, and are not even implemented in all popular browsers of the day, that's hardly a proposition. Not to mention that everybody implementing his own HTTP replacement from scratch with websockets instead of a common standard is a highway to hell.

As for what's wrong with it:

- better support for non-blocking requests - better support for streaming media - better support for caching - better content negotiation (e.g for "retina" x2 assets) - better authentication mechanisms - better support for encryption

Also check: http://static.usenix.org/event/usenix99/invited_talks/mogul....

True, but the original question was not "what is the worst programming language" but rather "what is the most disliked". So I do believe we'll get the results that you've predicted (you should add PHP to the list) but at least we're answering the question at hand.

We wont be incredibly enlightened but it will be interesting to see the results and what that tells us about HN readers. Perhaps we'll learn some interesting stuff from the comments as well.

I agree this poll by itself is a little misleading, but if we take this poll and the poll on the favorite languages, we will get a better picture of what people are thinking. Here are the numbers for a few popular ones, as of now: C:780,22; C++:424,213; C#:658,42; Haskell:431,14; Java:435,389; Javascript:1125,149; Python:2484,39; PHP:516,334; Ruby:1373,84; VB:34,249. There are still multiple ways to interpret the results, but I really think this poll is extremely enlightening combined with the other poll. I like them.
Exactly. A bird in the hand is worth two in the bush. The languages you know are always better for doing stuff than the ones you don't know yet.
You're actually not too far off on your assessment of Delphi. Compared with all the .NET languages that sprang up to replace it, it's painfully verbose, inexpressive, and starved for community support.

On the other hand, what it still does well, decade after decade, is pump a 30MB native standalone executable from millions of SLOC in minutes, one that will run on any Windows box without installing any libraries or runtimes. That is, in its own way, impressive. Many businesses still depend on it and instead of an OSS community you wind up licensing libraries from the few remaining dev shops.

I don't know what the state of Delphi is now, but I remember there was a good community around it 6-7 years ago, plenty of Open Source components that filled the gaps in the VCL.

And back in the day, when .net was awkward to use and Java was too slow, Delphi was the king of RAD. Unfortunately they didn't even try to keep up with .net/Java, for example, proper Unicode support wasn't added until Delphi 2009.

The current state of Delphi is very good. I picked it up about 6 years ago, and it's a wonderful language to use for native Windows development. They just released cross-platform compilation for native OS X GUI and console applications, have 64-bit and 32-bit support.

In fact, the same person that invented C# first created Delphi (Anders Hejlsberg), and you can see how C# has borrowed much from Delphi.

Delphi, in the past 3 releases, has added native generics, anonymous methods, Unicode throughout the language by default, compiling native OS X applications, compiling iOS applications, and writing native 32-bit or 64-bit applications.

In addition, Pascal (and Delphi) does not have many of the serious security issues C/C++ developers have experienced, by design; e.g., format string bugs are non-existent because Delphi allocates strings on the heap.

Also, the Delphi community is alive and well over at StackOverflow. Unfortunately, many new developers in the US aren't familiar with Delphi...but it's extremely popular in European countries. It really is worth considering if you are writing native Windows applications that require complex GUI's done easily.

PHP, because it's unreadable, awful, and unmaintainable.
Easily C# and Java, I don't think the virtual machine adds anything other than another abstraction layer to get in the way. Just because code is native doesn't mean you can't have all sorts of built in bounds checking to ensure safety, but when you're in a VM, taking off the training wheels when you need to actually make shit fast is such a pain.

I especially don't understand the point of a VM like the CLR that only runs on one platform. It's fucking retarded.

On top of that, after having worked in an "enterprise C#" project for an unfortunate year, the kind of person who thinks C# is a really neat idea just doesn't get along with my style of programming.

I had to reiterate constantly "Do the simplest thing that will work". And they would get pissed at me whenever I inserted something at the wrong layer of their pointless abstraction hierarchy. Delegates, XML, and design patterns abstracting ONE thing where everywhere. It was fucking horrible and it took the team forever to get anything done.

How much of your rant has to with the actual language C# as opposed to the VM, other people, XML and patterns?
Good point, the language felt like Visual Basic wrapped in Java's syntax, or maybe a reaction to Java with subtle improvements. There were some nifty things baked in like events and lambdas, but for the most part it didn't feel like I was exploring any fundamentally new constructs or gaining much in the way of expressiveness over C++ with boost. The whole language just feels milquetoast.

It was also difficult to get stuff across the managed/unmanaged boundary without a lot of verbosity and overhead, so optimization was unduly difficult.

But really, it's not the language I hate, the language is mediocre, its the ecosystem around it that's terrible.

I work in C# quite a few days a week, and I share your pair regarding the simplest thing. We have a couple of astronaut architects on the team (both of whom are actually good programmers, but they tend to get starry-eyed about MS frameworks and patterns), and I have trouble understanding why even a relatively "simple" web application requires nearly 30 Visual Studio projects.

Personally, I don't mind C# much (I do work at an MS-centric shop), but some of the baggage that comes along with the .NET framework can get bothersome.

I have had the same experience with C++. But it is not the language’s fault. It is people who use it and call themselves “architects” who know shitload of “patterns” and “good practices”, and make all these unnecessary abstractions and distractions.
Sounds like your complaint is against mediocre programmers and enterpriseyness, not C# (which in my opinion is a technically superior language to Java). I use it all the time for simple one-off tasks and while it can be a bit verbose it's never really been a hindrance.