One vote per person. Posts that appear to be bot generated or same person will not be counted.
I'm going with java(and by that I really mean java+eclipse). Programming without eclipse is like putting a screw into hard wood without pre-drilling a hole.
Name:
Anonymous2009-07-15 1:47
I've been getting depressed lately because I think I have no favorite language anymore.
C just needs too much boilerplate for a basic object-oriented framework (which is what all large projects boil down to anyway). You lose the logic in the thousands of lines of code. Same goes for all the old languages, e.g. Fortran, COBOL, etc.
C++ is too god damn huge. This is the depressing part; any attempt to wrap up the boilerplate of C results in incredibly complex rules on construction/destruction, etc. Then there's STL, which is fucking horrible, but it would hardly matter even if it was awesome because everyone writes their own anyway and it still sucks.
Java is horrible. Horribly, horribly god damn needles-in-my-eyes fucking HORRIBLE. Worst language on this list, bar none. I won't even bother describing why. Feel like finding out on your own? Try, say, making a generic array slice function (then try doing it in J2ME). Go for it. Failed yet? Not only is it not high-level, it's not even low-level. It's just fucking trash.
C#, D are somewhat better than Java, but still have many of the same problems. They're quite similar under-the-hood, which is where many of the problems stem from.
Objective-C is a horrible language. It's just C with an external object-oriented framework stapled on with bizarre syntax. Runtime method dispatch through a hashtable? God damn, that's slower than Java.
Lisp variants seem to have nice syntax, until you realize they're really just turing tarpits and you can't actually make anything scalable with them. The syntax also misleads you about how powerful they are wre introspection, reflection, etc. They aren't.
Haskell is, honestly, a joke. Let's make all functions pure. Great idea! Aw fuck, we have to interact with an *environment*, and take input from a *user*... What a hackish kludge of a language, where interactivity is barely a second thought.
bash->awk->Perl->PHP are all one and the same, freaking shell scripting languages, I don't care what anyone says. No one should ever have written more than a handful of lines of code in them, and the only reason they did is because CGI was built by hackers who didn't really like to program.
Python is closest, but I've slowly been drifting towards believing that python's raw power is actually a hindrance to the maintainability of code. *Everything* is a first class object, modifiable at runtime: runtime code compilation? of course check. modifying the function list in a module (as a simple dictionary)? check. changing the methods on individual instances of objects, including operators? check. trivial expansion of arguments, etc? check. trivial introspection of variable lists on objects? check. It's just crazyness. You know things people *shouldn't* do get done anyway because it lets you solve your problem in four lines of code instead of forty, so you end up with a huge mass of spaghetti.
Christ. Here I am thinking I made a terrible career choice. Fuck this shit.
Name:
Anonymous2009-07-15 1:52
>>78 Lisp variants seem to have nice syntax, until you realize they're really just turing tarpits and you can't actually make anything scalable with them.
Tell that to ITA. Lisp has been scaling for decades. I don't think it's going to stop for you.
Name:
Anonymous2009-07-15 1:56
>>76
But this problem doesn't disappear just because functions have a separate namespace. What about index variables? i, j, k... standard index variables in simple circumstances but it's the same problem, you are just accustomed to using i and j and not "list" and "rep[resentation]" or etc.
Name:
Anonymous2009-07-15 2:32
>>80
Yes, it would be nice to solve that problem as well. But you do need to consider that in most programs, all variables with generic names are local. Meaning in the case of a collision, any offending variables can be changed to coexist while still avoiding stupid names. You're not going to go renaming global functions to fix a naming problem in a three-line function.
>>78's problem is likely that he never fully learned some of the mentioned languages, maybe he'd have better opinions of some of them if he knew them fully
>>79
Oh wow, you've found one company that uses Lisp for one application alongside C++ AND Java AND Python. You've completely proven me wrong!
I will grant that 'scalable' was not the right word. I admittedly don't have very much experience with lisp, so I'm not really making a fair comparison, but the language just feels extremely limited and not as powerful as modern languages.
>>86
Yeah, Javascript is nice and all, and I admit I have very little experience with it, but if it's such a good language why in all these years hasn't anyone made it standalone? Would it really have been so difficult to make a command-line interpreter, like every other fucking language in a typical Linux distribution? This leads me to believe that it's not actually as good as everyone says (along with the fact that I only ever hear this from web developers).
>>87
Yeah, bullshit. Been programming for over 15 years. Aside from lisp, haskell and D, I've used every single one of those languages *in industry*. I have the experience to back it up.
>>88
No. VB was gracefully left off the list. It does not belong in any comparison list for favorite language (then again, neither does Java).
Name:
Anonymous2009-07-15 21:48
Yeah, Javascript is nice and all, and I admit I have very little experience with it, but if it's such a good language why in all these years hasn't anyone made it standalone? Would it really have been so difficult to make a command-line interpreter, like every other fucking language in a typical Linux distribution? This leads me to believe that it's not actually as good as everyone says (along with the fact that I only ever hear this from web developers). http://en.wikipedia.org/wiki/List_of_JavaScript_engines
I found that ECMAscript is awesome once I learned what it really was: an Algorithmic-Language-Scheme-inspired language with C-inspired syntax. If you don't understand what this means, then you really don't have much hope understanding ECMAscript's potential.
Name:
Anonymous2009-07-15 21:58
Python is closest, but I've slowly been drifting towards believing that python's raw power is actually a hindrance to the maintainability of code. *Everything* is a first class object, modifiable at runtime: runtime code compilation? of course check. modifying the function list in a module (as a simple dictionary)? check. changing the methods on individual instances of objects, including operators? check. trivial expansion of arguments, etc? check. trivial introspection of variable lists on objects? check. It's just crazyness. You know things people *shouldn't* do get done anyway because it lets you solve your problem in four lines of code instead of forty, so you end up with a huge mass of spaghetti.
The problem here isn't the Python language, the problem is solely in the software developer's skills. If you're writing spaghetti code making use of all these features, I would be considering the coder's programming skills first as most system designs are never going to require such functionality all in the same system.
In my experience, it's the programmer that fails write code according to a formally designed system that leads to unmaintainable code.
Name:
Anonymous2009-07-15 22:36
>>84
No, it's not, because we're talking about scope. In most programs there are lots of global functions (the ones provided by default, at least), but not so many global variables with short, generic names. You're not going to go renaming global functions to remove name collisions, but local variables can easily be named to accommodate each other. Not to mention you're only going to have a few local variables, but will have potentially hundreds of global functions.
And look, I'm not saying that having the possibility for collisions is ideal. I'm just pointing out a few reasons that they're easier to cope with when local variables are the only thing you need to worry about.
Name:
Anonymous2009-07-15 22:47
>>89 Oh wow, you've found one company that uses Lisp for one application alongside C++ AND Java AND Python. You've completely proven me wrong! I will grant that 'scalable' was not the right word. I admittedly don't have very much experience with lisp, so I'm not really making a fair comparison, but the language just feels extremely limited and not as powerful as modern languages.
So, let me get this straight. The fact that I was easily able to list a major company that has delivered a large-scale product you may have used yourself (via Orbitz) and is currently working on a reservation system (500,000 LOC, not including libraries — and these are Lisp LOC, not like in C where people write a thousand lines for no particular reason) for Air Canada, counts for nothing against your vague feeling that Common Lisp is limited and not as powerful as “modern languages”. Despite the fact that you, admittedly, have little experience with Lisp.
Did you have some particular power in mind that Lisp lacks?
>>93
I don't see why he would say it doesn't scale. What he probably meant was that a company would have trouble training some Java monkeys to use it, or that they'd have trouble finding new experiencedcoders to maintain the project.