7 ms·
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 lan
by crntaylor 15y ago
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/TPjSPPd1sLu https://plus.google.com/114134834346472219368/posts/TPjSPPd1...
- icebraining 15y agoBrainfuck 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.
- andersh 15y agoBrainfuck has the goal of being a bad language.
- vault_ 15y agoThe 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.
- seanmcdirmid 15y agoI 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.
- gamache 15y agoI 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.
- fleitz 15y agoThe 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.
- pgroves 15y agoThe 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.
- irahul 15y ago> 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).
- mtkd 15y agoYou 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.
- pgroves 15y agoI 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.
- locopati 15y agoOut of curiosity, what is your favored alternative for web applications? Server-side rendering of complete pages? Client-side manipulation of pure HTML?
- pgroves 15y agoI don't know of a good alternative. Thus my grumpiness.
- batista 15y agoA 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?
- LesZedCB 15y agoThat'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.
- jlaurend 15y agoTrue, 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.
- attractivechaos 15y agoI 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.
- dheerosaur 15y agoExactly. 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.
- pak 15y agoYou'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.
- poloniculmov 15y agoI 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.
- bloblaw 15y agoThe 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.