Can you tell a book by its cover?
October 2, 2003 5:02 AM   Subscribe

Uh.... what? What's to discuss about an article from April 2001?
posted by PenDevil at 5:32 AM on October 2, 2003

How ironic that I only got to read this post because a problem with java wasn't letting me watch a streaming movie, and I needed something to do. Grr, stupid java.

Oops, need to turn it back on to use the spell checker... damn irony...
posted by Dillonlikescookies at 5:35 AM on October 2, 2003

So, it's a 2.5 year old article about how Java is, from a repeatedly-clarified position of ignorance, doomed. And Java has not, in fact, gone to its doom, and had, for that matter, been around for pretty healthy stretch already. I never particularly got into Java, but I do know hacker geeks who adore it.

The problems with an article based, willfully based, on superficial impressions -- oh no, it's been hyped! Hyped! And the gubmint likes it! -- by someone who lacks any direct experience with the actual language should be obvious.
posted by cortex at 5:55 AM on October 2, 2003

On the one hand, Java is the SUV of programming languages. On the other, this guy is just a bitter Lisp proponent who is working on his own programming language and has nothing useful to say. Can't we all just learn to get along (and use C++ and only C++)?
posted by Gary at 6:04 AM on October 2, 2003

Gary: But C++ is like C with object orientation haphazardly stuck on. While it's been argued that solutions like Java and C# solve this problem by creating a better language with C-style syntax, there have been other long-standing solutions that claim to be a better object-oriented C.
posted by mikeh at 6:17 AM on October 2, 2003

No one loves it

I've used Java only briefly in a real setting, and that was five years ago. However, my memories of working in the language are all pretty good, especially coming off of projects where everything was written in C. Strings! Actual strings! No pointers, just references! A well-documented library of useful classes/modules to build on. I was pleased.
posted by weston at 6:19 AM on October 2, 2003

Forth is the only real programming language. reverse polish notation sorts men from boys.
posted by Pericles at 6:27 AM on October 2, 2003

I haven't read the article, but I can tell you right now it isn't a good piece of analysis.
posted by Space Coyote at 6:29 AM on October 2, 2003

Damn straight, Pericles. Plus, the creator of Forth designs processors with names like "F1" and "Shaboom". Top that, Graham, you graybeard ninny!
posted by Kikkoman at 6:35 AM on October 2, 2003

From the article: "..present-day publishers work hard to make the cover something you can tell a book by." I'd argue that publishers work hard to make the cover something you can sell a book by.

The writer also mentions that hackers develop a good nose for determining whether a technology is good or bad. Good technologies? C, Perl, Smalltalk, Lisp. The bad? Cobol, PL/I, Pascal, Ada, C++. He also mentions that he has dismissed Visual Basic in the past. His yardstick is obviously not that of the corporate and government world. If anything, his list of liked languages seems to be those that allow (although do not necessarily require) low-level or unstructured programs, or are languages that have low acceptance outside academia, although they are seen as architecturally sound. In other words, his needs may not line up with those of the rest of the world.

Now, I will go back to coding Java for the majority of my day.
posted by mikeh at 6:35 AM on October 2, 2003

Meh. Real programmers write in machine code.
posted by PsychoKick at 6:45 AM on October 2, 2003

This article is pretty easy to figure out:

"I spent years learning all this arcane l33t g33kd0m, and now they want to go and make it readable by NORMAL people? I'm gonna be out of a job in a year!"

Java rocks. Some of the implementations (cough Struts cough) are needlessly rigid and academic, but you don't need to use them. It's very easy to use in large development environments, because reading someone else's code is fairly straightforward. I think this guy's idea of "expert hackers" is really out-of-touch with reality. There are no expert hackers, just egotistic hackers who confuse different approaches with stupidity.

Anyway, I like C# too, so I guess I'm just not cut out for the 300lb, bearded, penguin-bumper-sticker crowd.
posted by dvdg at 6:49 AM on October 2, 2003

..."corporate drones"

Not only an argument from a willful position of ignorance, but elitist drivel, as well.
posted by normy at 6:54 AM on October 2, 2003

java won the hearts of management. as a developer you take what you can get, and if the only language acceptable (by those that control the purse strings) with automatic memory management and a reasonably strong type system is java, then you'd be crazy not to use it. sure, the world would have been a better place is lisp had won out - but it didn't. for the second time (first being c/unix) lisp loses out to a competitior that isn't as elegant, or, fundmanetally, as good, for simple pragmatic reasons. if lisp users were as smart as they think they are they'd have learnt from their mistakes, but no, they write bitchy articles and think that renaming "let" (or whatever other trivial changes graham's much-hyped-and-long-waited-but-still-not-present-language will make to lisp) will somehow change all this. it won't.

roll on the next revolution, when we'll all start using haskell. and me? i program in ratfor for a living (excuse me while i go and shoot myself).

(incidentally, graham's excellent book, on lisp, is also available on his site).
posted by andrew cooke at 7:00 AM on October 2, 2003

normy - these are lisp users. i guess you haven't met them before?
posted by andrew cooke at 7:01 AM on October 2, 2003

dvdg - he also used that l33t g33d0m to make a shitload of money (implementing yahoo or something similar).
posted by andrew cooke at 7:04 AM on October 2, 2003

Most people I know who use Java only do so because they're forced to by the company they work for. They never say they "enjoy" the language, as compared to those associates who, for example, use Python and say that they'd rather code in Python than be given their choice of supermodel sex slave.

Who I'd really be interested in hearing from is a programmer who knows well both Java and some other language, and decides for reasons of his own to choose Java over that other language because he enjoys it, not because it was better suited or his boss told him to.

All of these "I use Java every day for work and like it" statements get contorted in my mind to "I have Java rammed down my throat at work every day and so I must justify it".
posted by ringmaster at 7:13 AM on October 2, 2003

andrew - most of the time I'm an analyst. The coders can program in Fortran, for all I care, as long as the software does what I wrote in the spec.

The biggest problems in software development, in my opinion, aren't the tools. It's 'engineers' trying to solve problems that either no-one else cares about, or they've invented, or are artificial, or have been solved before but not their way, or only exist because they haven't properly read the spec (and not documenting what they've done afterwards).
posted by normy at 7:20 AM on October 2, 2003

Here's a point by point refutation of the article:

1. Has been hyped.
Retort: What, and Perl hasn't? Linux world domination, anyone?

2. Aimed low.
Retort: So a programming language has to be difficult to be good?

3. Ulterior motives.
Retort: What's the ulterior motive of this article?

4: No-one the author knows loves it.
Retort1: I know lots of people who love Java.
Retort2: How about making up your own mind, and not relying on the opinion of others?
Retort3: The author obviously doesn't know any (good) Java programmers.

5: People are forced to use it.
Retort: I had to show my supervisor stats proving that Java was 20-40 times faster than Matlab before he'd approve of it.

6: Created by comitte.
Retort: If you want to be nitpicky about it, English was also created by "comitte". Both still work for me.

7: Bureaucratic.
Retort: Huh? It allows you to drop your memory when you don't need it, and not worry about it. How much more un-bureaucratic can it be?

8: Pseudo-hip.
Retort: Only now, 2 years later, has Sun bothered to put something on the domain. Tres pseudo-hip, my arse. Besides, this is basically the same as complaint #1.

9: Designed for large organizations, to prevent fools from doing to much damage.
Retort: You can do plenty of damage with Java, let me tell you. This is also a repeat of complaint #2.

10: The wrong people like it. People I know don't like it, that is.
Retort: You obviously know the wrong people. This is basically a repeat of complaint #4.

11: It's creator is going downhill.
Retort: Over 2 years later, SUN is still going strong. While the Lisp guru is writing bitter diatribes on the web, and Smalltalk is largely forgotten.

12: The DoD likes it, and the DoD only likes bad software.
Retort: The DoD liked DARPA enough to fund it, and they came up with a suite of software that makes up the internet. And we all know how miserably that internet-thingy failed, don't we?

In summation:
The author is obviously a moron.
Anybody who talks a lot about "hackers" and try to come across as a "hacker" is, almost by definition, not a hacker.
posted by spazzm at 7:31 AM on October 2, 2003

Most people I know who use Java only do so because they're forced to by the company they work for.

And companies choose tools purely to annoy programmers?
Most companies I know who work with Java have chosen it because their programmers are more productive with it than with C/C++. The improved productivity makes them more profitable. The profits mean they can pay the programmers.
posted by normy at 7:40 AM on October 2, 2003

Here's a more sympathetic interpretation of his point: Hackers don't want to build the kind of software systems that Java was made to handle well, i.e. database-driven web applications and enterprise information management apps. Such thins bore any real hacker to tears, and rightly so.

That said, there are many superior languages that don't get the attention they deserve from hobby / hacker programmers, because they're too stuck on the familiarity of the old standbys.

However for my current research work in hardware simulation I find Java to be just the ticket, both for its sensible streamlined object model, its platform independence and fast compile times relative to C++ and VHDL. It's also very adept at tying APIs and toolchains from different manufacturers together.
posted by Space Coyote at 7:44 AM on October 2, 2003

I use Java, not because I have to (see my previous comment) but because I like it.
It has an easy-to-use documenting interface, which means it's well documented.
It has extensive libraries.
What other language can do both high-speed 3D graphics, text-file parsing (with real String objects, not that "const char * []" crap you get in C/C++), exception handling and networking? And garbage collection on top of that?
It's faster than any scripting language, and almost as fast as C.
It's platform independent.
It's consistent.
It's object oriented, but you can still use primitives if you want to.
Whatever you want to do, there's a library already written for it, and if your platform has a VM you don't even have to think about porting said library.
None of that pointer/reference crap - it's all references.
It even has support for templates and debug assertions. What more can you ask for?
posted by spazzm at 7:48 AM on October 2, 2003 [1 favorite]

I'm no expert, but Java is a pleasure to work in compared to C/C++. Technical arguments aside, it's just more pleasant to work with.
posted by callmejay at 7:48 AM on October 2, 2003

Who I'd really be interested in hearing from is a programmer who knows well both Java and some other language, and decides for reasons of his own to choose Java over that other language because he enjoys it, not because it was better suited or his boss told him to.

well, i've written code in c, c++, fortran, lisp, python, perl, sql, ml, haskell and java (not all for pay, and not all to expert level, obviously). i chose java for a recent personal project because i thought maybe the resulting code would be more popular (it's a bit disheartening to write code in a language no-one else uses!). the choice was the result of a long (internal) debate because, as you say, it's not exactly lovable, but it does the basics well enough. it's also nice that *everything* is in there - with many cooler languages you have half a dozen competing gui solutions, none of which are fully working.

(oh, and forth and malbolge and z80 assembler and dijkstra's guarded language :o)

incidentally, i think a large part of a programmer's job is understanding the culture of the programming language. people often say you can write c in c++ (obviously a Bad Thing), but it's equally bad to try to write c++ in, say, fortran. you have to go with the flow, and what may be terrible in one language is th enorm in another (i'm particularly sensitive to this because i recently started a new job working with an ancient fortran-based language and some very smart people - it's easy to point to their code and laugh, saying "this is broken" because you're judging it by the standards of some other language...)
posted by andrew cooke at 7:48 AM on October 2, 2003

he also used that l33t g33d0m to make a shitload of money (implementing yahoo or something similar).

He started a company to make web stores implemented in Lisp which got bought by Yahoo for $45M in 1998 and got turned into Yahoo Stores. This explains why his website looks like one.
posted by zsazsa at 8:05 AM on October 2, 2003

I know java pretty okay, and I'm just ramping up on a pretty large project where I chose to use java over other languages because of its strengths in the appropriate areas, but let me tell you this: as a language, java is ass. There are good points to it, obviously, or it wouldn't have the market position it does now, regardless of how many marketing millions have been pumped into it, but as a "computer scientist", it just makes me cringe. Others have expressed the technical failings of java better than I ever could, so here are a few:

"Why I Am Not A Java Programmer", by Michael Schwern.

"java sucks", by Jamie Zawinski

"A Java Critique", by Peter Becker

My personal major peeve is not only the lack of multiple inheritance, but the innocent indignation of those who defend the decision not to include it. "What a terrible idea! Think of the problems it would cause! Etc, etc..." Poppycock. It's terribly useful in many situations, it is extremely simple to define expected behavior, and if it makes you go all oogy, then don't use it, dumbass. And no, interfaces are not a good alternative, shut up, you suck.

And jesus christ, Paul Graham. Come on. "He's just one of those Lisp guys." Whatever.
posted by majcher at 8:09 AM on October 2, 2003

And another thing:
Java finally did away with .h files - what are they supposed to be good for anyway?

"Who I'd really be interested in hearing from is a programmer who knows well both Java and some other language, and decides for reasons of his own to choose Java over that other language because he enjoys it, not because it was better suited or his boss told him to."

I've written programs in C, C++, Python, Motorola assembler, Java, ActionScript, bash, Matlab, SQL (not really a programming language?), Prolog and even (shudder) Basic as well as a language I created myself.
I am, of course, not an expert in all these languages.

Still - I prefer Java.
posted by spazzm at 8:13 AM on October 2, 2003

ringmaster - " compared to those associates who, for example, use Python and say that they'd rather code in Python than be given their choice of supermodel sex slave.

Who I'd really be interested in hearing from is a programmer who knows well both Java and some other language, and decides for reasons of his own to choose Java over that other language because he enjoys it,...

Who I'd really be interested in hearing from is a programmer who uses Python and has his own supermodel ex slave, and decides for reasons of his own to choose coding Python over spending time with that supermodel because he enjoys the coding more...

(I myself program in Java, but have never had the opportunity to code in Python or have a supermodel sex slave, so I'd like an objective evaluation of the merits of each before making a decision.)
posted by tdismukes at 8:15 AM on October 2, 2003

majcher - i think you're "whatever" must be aimed at me (since no-one else seems to make much reference to lisp). if you read my posts you'll see that i mention his book (along with the adjective "excellent", in italics). i know who he is. that doesn't stop him from being a lisp bore. there are an awful lot of lisp bores (more than lisp users, it seems like, at times). you must know what i'm talking about...
posted by andrew cooke at 8:21 AM on October 2, 2003

This is a marketing failure. When Java first came out, Sun tried to sell it as a corporate solution. They made a huge ruckus about it being "cross-platform", based on a virtual machine, no access to native libraries, etc. Remember "write once, run anywhere" and picoJava? This stuff may sound good to corporate bean counters, but to a lot of programmers it conjured up images of padded bars and baby toys. To compound their mistake, they got Java all mixed up with the idea of a web page applet, to the point that a lot of people didn't realize for years that there was anything else you could *do* with the language.

Programmers want powerful tools, because programmers (generally) enjoy programming, and are always looking for bigger, harder, and more interesting problems to solve. Practically everything Sun did to sell the world on Java made it sound like a wimpy, limited tool for solving a smaller, less interesting set of problems.

To compound their mistake, Sun pushed Java as a standard but refused to throw the spec open and make it available to anyone who wanted to reimplement it. Programmers like open systems, and they tend not to like proprietary languages all that much. With Perl, Python, and PHP having gained so much popularity in recent years, the idea of a language with only one implementation is less radical than it used to be, but back when Java came out it was a big problem.

So Sun basically did everything they could do to alienate programmers from what was, underneath all the hype, a decent programming tool. Now that the hype has faded, the general sense of distaste seems to be starting to fade too. I'm seeing an increasing number of younger programmers who play in Java and enjoy it.

For that matter, though I've never learned Java, I spend a fair amount of time in a language that works along similar lines: single inheritance/multiple interface design, garbage collection, strings as an intrinsic type, exceptions, no pointers, extensive class library, etc. It's great! I get more work done in less time. It doesn't even feel like work,really. I find it increasingly hard to do my free-time hacking in C++ when I know that if I'm willing to make one or two compromises I can get the whole thing done in a quarter of the time and never have to worry about memory leaks, dangling pointers, bus errors, etc.
posted by Mars Saxman at 8:21 AM on October 2, 2003

Mars: You mentioned RealBasic in the lickable Mac thread as well. Do you work for Real Software?

And: have you run into any problems with the cross-platform compilation? I'd love to be able to write apps once for multiple platforms and not have to use Swing to do it.

Also: what do users need to run something written in RealBasic? Do they download a runtime?
posted by bshort at 8:40 AM on October 2, 2003

Michael Schwern (majcher's link) is clearly a moron. His example of an SQL statement i Java:
"INSERT\n" +
"INTO Stuff\n" +
" (This, That, Other_Thing)\n" +
"VALUES (?, ?, ? )\n";

Which is, indeed, valid, but only if the programmer is an idiot.
A much more readable example would be:
"INSERT INTO Stuff (This, That, Other_Thing) VALUES (?,?,?)";

You can even put the values straight in there:
"INSERT INTO Stuff (This, That, Other_Thing) VALUES ('foo','bar',9)";

But if you do that, you can't bitch about Java, so what's the point?
posted by spazzm at 8:43 AM on October 2, 2003

spazzm: When you're writing really large insert statements, where there are a dozen or so columns, the formatting becomes an issue. The multiple-line format is preferred, just because it tends to be more readable. The problem here is that the readability is only evident when you're the programmer looking at the source. If adding all those additional characters is a problem with readability and maintainability, then why the hell would you do it?

Also, the fact that Schwern put "\n" at the end of every line makes absolutely no sense, since SQL uses any whitespace as a break, not just a newline. He seems to have forgotten that the newline was a formatting trick to make the statement readable.
posted by mikeh at 8:56 AM on October 2, 2003

If Java's an unloved language that's only being used under duress, how does that explain the incredible open source projects implemented with Java by the Apache Jakarta project, JUnit, Ant, JBoss, and XOM?

I've been programming with Java for years. I love the lack of pointers, multiple inheritance, automatic garbage collection, well-documented and easy to learn class libraries, servlets, JSP, and the fact I can compile a class on my Windows XP box and run it on my Linux server.

Of the languages I have used, Java wins hands down.
posted by rcade at 8:57 AM on October 2, 2003

Mars: You mentioned RealBasic in the lickable Mac thread as well. Do you work for Real Software?

Yes, I'm one of the developers. As far as cross-platform development goes, as long as you haven't used platform-specific features (like AppleScript or the Windows registry), you can pretty much just click a checkbox and cross-compile. You usually have to make some adjustments to your UI once you see how it looks on the other system, but for the most part it just works. The finished applications are single-file executables; there's no separate runtime. I'd be happy to talk about RealBasic at greater length but we should probably take it to email...
posted by Mars Saxman at 9:24 AM on October 2, 2003

paul graham wasn't saying java was worse than c or c++. his point of reference is lisp (which also has memory management, lacks pointers, has objects (and closures, first class functions, tuples, etc) and predates c++ by many years (might even pre-date c for all i know)).
posted by andrew cooke at 9:42 AM on October 2, 2003

Over twenty five years, I've programmed in dozens of programming languages, I've been using Java since 1996.

It may be true that Java isn't the language of choice for hackers, in the same way that plans and joists aren't the tools of choice for many in the building trade. However, for people taking an engineering approach to software development, Java is pretty good. It's probably not as good as Eiffel, but unfortunately Eiffel never got the backing of a major corporate.

I've run projects costing 10s of millions entirely in Java and the development teams loved it (5 years ago). They ranged from experienced guys in their 50s down to graduates undertaking their first major project. With appropriate processes in place, Java actually helps in producing systems that work.

Most of the complaints and accusations made about Java simply aren't true:
  • Cross platform unimportant - I've worked for several banks and none of them would have adopted Java in the way that they did if it wasn't cross platform
  • Programmers like open standards - ha ha ha ha ... At the time that Java came out, Visual C++, Visual Basic, etc. were where the market was going - proprietary was in big time
  • Sun alienated programmers - well maybe the programmers that you know, but the ones I knew loved the fact that there was a language that they could program in that had huge libraries, was robust and came with free development tools (and the situation has got better and better)
  • No one loves it - so how come so many people turn up at JavaOne and there are now 10 million developers?
  • It has too many cooks - come on make you mind up, should it be an open standard, or should it all be written by one man?
  • ...
By the way: "Almost 74 percent of professional developers use the Java programming language as their primary development language" (source: IDC).

Bottom line: If you spend all of your time talking to people who hate Java then you might be stupid enough to believe that all people hate Java. This has been compounded by Microsoft's (excellent) anti-Java propaganda.

P.S. When I was forced to program in Lisp, I hated it!
posted by daveg at 9:47 AM on October 2, 2003

When I was forced to program in Lisp, I hated it!

why? (i'm curious - i'd also hate anything i was forced to do, i guess, but if i had the chance to use lisp rather than java in a job, i'd probably take lisp just for the fun of getting the chance to work with it in a significant project).
posted by andrew cooke at 9:53 AM on October 2, 2003

One thing I'd like to hear is whether Java programmers who use Python like it better. Python seems to be attracting a lot of coders for the sheer love of the language.
posted by rcade at 10:10 AM on October 2, 2003

RealBasic is a great product. I've used it in my company for a small Macintosh db project.

One design direction I'd love to see RB take is to become more like Delphi/Kylix, which is my favourite RAD environment.

In Delphi, only the compiler is written in another language. Everything else: the components, the libs, possibly the IDE, etc. is written in Delphi which then directly compiled to run on the system. Because it is directly compiled, Delphi written components can integrate cleanly with other languages.

RB would be nearly perfect in my book if their future design would take them in that direction.
posted by pandaharma at 10:35 AM on October 2, 2003

I'm very surprised by the direction of the comments here.... how did everyone in the thread (with a few exceptions, granted) manage to miss the point so completely?

I read the article, thinking, "hmm, this is an interesting exploration of the various ways in which programmers decide which technologies are worth looking into, and which aren't." Instead most of you seem to be reading it as nothing more than a head-on attack on Java, full stop.

This despite the fact that he opens with, and repeats multiple times, "It's not a critique of Java! It is a case study of hacker's radar." "...let me clarify that I'm not writing here about Java (which I have never used) but about hacker's radar (which I have thought about a lot)." "Bear in mind, this is not a critique of Java, but a critique of its cover. I don't know Java well enough to like it or dislike it. This is just an explanation of why I don't find that I'm eager to learn it."

Wassammatta, those disclaimers too subtle for ya?

There are always more technologies available for a particular problem than any one person can possibly learn, and if you're going to last as a developer you have to be constantly learning new languages and techniques, or you will be obsolete.

So we have to make decisions about what we bother to learn more about -- we have to, as he puts it, judge the book by its cover. And the ways we go about that is an interesting subject. To some extent it's all about marketing, but it's a very different kind of marketing than, say, selling hamburgers or face cream. If I see a bunch of ads saying "FOO++ is hot shit! It can do six things before breakfast!" I respond, "pffft" and turn the page. If I see lots of active FOO++ mailing lists start to appear, though, and start coming across articles titled "integrating FOO++ with BarScript", "Comparing ActiveBaz to FOO++", etc., indicating that people are actually using it, I'm a lot more likely to spend some time finding out more about the thing and deciding whether it's worth taking the effort to become proficient in it.

Sure, hindsight shows he happened to be wrong about this one, but I remember being equally suspicious of Java when it first appeared. My general impression at the time was that Java was
1) slow,
2) unstable (not the language itself, but the VM), and
3) seemed to be the sort of thing you'd hear about from a manager, not from a fellow coder.

That, for me, was enough to file the language under "not worth paying attention to just yet". Turns out that enough people decided otherwise that, years later, it's still around, and relatively thriving.

Today, for example, I have the general impression that C# is
1) not different enough from Java to be worth paying attention to, and
2) primarily a marketing ploy by MS to distract attention from Java, and
3) not in very widespread use.

Am I wrong? Possibly. I've never looked at a line of C# code, I have no idea whether on its own merits it's better or worse or no difference at all. But that's the general impression I've formed, based on being a developer, keeping up with the mailing lists, and generally paying as much attention to things I might need to be able to discuss intelligently someday if my current gig ever winds down, without taking too much time away from my current gig. I know lots of Java coders. I know a handful of C++ guys. I know zero people who use C#. I figure there's gotta be a reason for that, so it's highly unlikely that I'll ever bother to learn C# myself.

Before I read this article, I hadn't really thought much about how those opinions got formed, and now that I've thought about it, I'm curious.

So, c'mon, coders: what languages have you dismissed out of hand as useless? Why? Which ones made you sit up and take notice the first time you heard of them? Why? Which ones made you take a wait and see attitude? That's what this article is about, not refuting two-year-old specifics about a language the writer openly acknowledges he doesn't speak.
posted by ook at 10:38 AM on October 2, 2003

I dismissed XSLT (which is not really a programming language) after getting a 5 minute description of it from an alpha geek. It sounds like a complete nightmare to actually use.

In contrast, I often hear about the wonders of Lisp and about how there are a number of large projects (like Sabre), although I have no real urge to try it out. Especially because most of the Lisp evangelists I've known have been real assholes about it.
posted by bshort at 10:52 AM on October 2, 2003

Now I'm all interested in FOO++.
posted by iceberg273 at 10:57 AM on October 2, 2003

bshort: see, that's a perfect example: I hated XSL at first glance, but now believe it to be the best thing since sliced bread. (It is too a language. :) (Actually had included that in my earlier post -- it's the "current gig" I was referring to -- but trimmed it because, well, logorrhea had set in.) Gives you absolute control over the presentation of the data, and enforces absolute separation of presentation logic from back-end code; I finally have a template system that gives me all the UI control I need without having to constantly tweak the underlying code. It's all good.

It does feel ass-backwards at first, though, to have to use recursive logic for everything, and it's not the sort of thing you can hand to your average GUI designer and say, here, build us some templates. And it just looks ugly: it's repetitive and verbose and all those nested tags will give you a headache. The five minute intro to XSL always fails; I know, I've given it several times myself.

I love it, and think it's objectively better than any other template system I've ever seen. But I expect it to fade into niche use if a viable replacement ever comes along: it makes a lousy first impression, and the people who could benefit most from it probably don't have the left-brain chops to grok recursive logic.

Don't tell my clients I said that, though; I'd like it to stick around at least until my current contract runs out.
posted by ook at 11:28 AM on October 2, 2003

(iceberg: yeah, it was hot for a while, especially the perl binding, but FunSoft's compiler never made it past beta and that sort of killed the buzz.)
posted by ook at 11:41 AM on October 2, 2003

Of the languages I have used, Java wins hands down.

rcade, stop lying--we all know that UserTalk is the object of your lust and affection!
posted by billsaysthis at 11:44 AM on October 2, 2003

Good point, ook, and an interesting question.

My reaction to C# was similar to yours; it's a marketing-driven technology in search of a purpose, a Java clone with a few tweaks invented because Microsoft doesn't like to share. I can't think of any reason to learn it.

I learned Perl because there was a huge hacker-friendly buzz about it and several people I respected spoke highly of it. I'll chalk this one up as a mistake; it is the ugliest language I have ever seen.

I learned PHP because my web host had it and I wanted to write some scripts. Pure pragmatism. There's a nice, humble friendliness to the user community that puts me at ease.

One of my coworkers speaks highly of Python; I gave it a look but couldn't find anything I could actually use it for. Same with Eiffel; a friend thought it sounded like some language-design ideas I'd been advocating, but after about ten minutes I decided it was useless for the kind of work I wanted to do and dumped it.

When Java came out, the suits were all full of marketing rah-rah, but all I heard from other programmers was how badly it sucked. I took some notes from the design but never had any interest in learning the language.

I refused to learn C for several years after one too many condescending comments along the lines of "you need to stop playing around with Basic and assembly if you want to become a real programmer". I never did learn C, really; I went straight to C++ after I figured out what OOP was all about.

Pascal: never met anyone who programmed in it, always seemed to be a dying language.

Forth: same.

Lisp: everyone who promoted it always seemed to be a whining snob. It sounded like the sort of thing that was great in theory but a royal pain to do real work in.

68k assembly: learned it because I had an obsessive curiousity driving me to get as close to the bare metal as I could. Also, assembly programmers were the Real Deal back then.

PowerPC assembly, x86 assembly: learned 'em because I needed to write compiler backends for them.

VB.Net: I've learned it in order to steal all of its good features for REALbasic. I don't know of anyone who actually uses it.

Objective-C: hated it on sight because all these former NeXT people who had just taken over Apple were looking down from on high granting us benighted Mac OS mortals the gift of their precious language. Now I think it is a nice simple language with a couple of good ideas that would probably be worth learning, but I still have a chip on my shoulder about it.

In conclusion, it seems that my impressions about the people who are promoting and using a language have more to do with whether I actually learn it or not than anything about the language itself. This doesn't seem to be a particularly accurate sort of radar, but I suspect it's the sort of thing that improves with age and experience.
posted by Mars Saxman at 12:21 PM on October 2, 2003

reads like something from egg troll.
posted by lilburne at 1:33 PM on October 2, 2003

From the Python side--I leaned PHP first but had to pick up Python for a class. While Python has some entertaining quirks, I have found it to be the easiest and most readable language and now do most everything with Python.

I also picked up Java, mainly Swing, for a class. I can see the appeal for rapid prototyping, extensive libraries, and recycling code and am definitely interested in spending more time with Java. However Python does everything I want to do and does it well. So I would have to give a qualified yes to Python over Java for my modest needs.

Perhaps I was spoiled by Python or perhaps I have only been exposed to poorly written Perl, but reading it gives me a headache—thus I have little incentive to learn it.
posted by Fezboy! at 2:06 PM on October 2, 2003

ook: Just because someone claims something at the beginning of an article doesn't make it true. It appears to me that Paul Graham has strong (unstated) reasons for attacking Java and persuading people that other choices would be better. His article may not strictly be a critique of Java, but it is certainly a critique of people who use Java.

I think that the reason that the discussion took the direction it did was because the article was a very poor critique on what many thought was an interesting topic. Providing reasons for making stupid uninformed decisions doesn't seem to me to be particularly clever!


I disliked Lisp because it gave so little flexibility in the way that you could do things - debugging complex recursive code is a nightmare.


FORTRAN (IV, 77, 90), BBC Basic, algol68, pascal, forth, lisp, parallel pascal, Occam, Eiffel, prolog, C, C++, Objective C, Modula (2, 3), PHP, Visual Basic, Python, Smalltalk, Ada, Perl, Oberon, Logo, postscript, APL, Cobol, POP3, Simula, PL/I, Bliss, Shell scripts (bsh, csh, tcsh, ...), TCL / TECO

Forth had the most appeal when I was young for two reasons:
  1. It was designed to be used to control radio telescopes
  2. It was almost entirely unreadable once it was written (if you didn't get it right first time, you might as well give up and start again). The classic story was of a telescope engineer who was maintaining some control code, but could find no purpose behind a particular page of code. He removed the page, and the program inexplicably stopped working, so the page went back in ... When I was hacking into mainframes in the 70's this was the sort of thing that appealed to me.
posted by daveg at 2:48 PM on October 2, 2003

Guess we just read it differently, daveg.

Several of his points (9, and 12 particularly) certainly seem biased in favor of cool-hack languages as opposed to enterprise-level development -- fair enough, not everybody writes enterprise software -- and several others (4, 5, 11) may have been true at the time, or true for the people he happens to hang out with but not for the people you hang out with. Well, fine.

But many of the things he cites as issues that made him less enthusiastic about the language -- excessive hype, appeal to suits rather than coders, ulterior motives, etc -- definitely ring true for me; they're the same sort of thing that made me skeptical about Java when it first appeared, and they'd still make me wary if I heard them about the next flavor of the month. Mars' point about the attitude of a language's proponents being an important factor is another good one, and especially interesting in that it's very common, yet not very much related to the language itself!

Guess my point is, we all have to make uninformed decisions; it's simply not possible to take the time to learn enough about each and every new technology to make a perfectly informed decision about it. And it's interesting to me to look at the ways in which people go about making those decisions -- even when they happen to be the wrong ones in hindsight.
posted by ook at 4:52 PM on October 2, 2003

debugging complex recursive code is a nightmare

would it have been better with a more helpful type system? i found the same with lisp but, having persevered with haskell, now find recursive code both natural and relatively bug free (once it compiles, it tends to do what i told it to, and what i've told it to do is usually pretty clear, given the declarative nature of the code). however, using it only on personal projects i've never had the chance to experience this on "big" problems.

part of my problem with lisp was that things would compile even though they made no sense - that doesn't happen with haskell (or ml) to anything like the same extent because it's statically typed. but i've been around long enough to know i might be fooling myself - it could as easily be that i just have more experience, or that i didn't know techniques in lisp that make the problem more manageable (eg avoid tuples, recursion, or higher order functional programming - lisp provides alternatives to all those).

what i miss most in java is closures, i think. i know anonymous functions do a similar thing, but they're clunky. i also miss the conciseness and declarative flavour of haskell (or any other of a bunch of decent modern languages; haskell's syntax is particularly sweet, though) too (but am not for a moment arguing that i could do everything in haskell that i do in java).

incidentally, a good book for anyone interested in haskell and/or functional programming after reading this thread (assuming you already know a far amount of imperative programming, i guess) is "the fun of programming".
posted by andrew cooke at 6:55 PM on October 2, 2003

I too am digging Python. That is all.
posted by wobh at 7:42 PM on October 2, 2003

Huge-ass Multiline SQL queries?

The prefered syntax is :"Exec myStoredProc"

Why would you put SQL directly into your code anyway?
Anyway, java rocks and this guy can eat a cock.
posted by delmoi at 11:50 PM on October 2, 2003

I've written my fair share of code, but more of my experience is as (amongst other things) the guy who researched and recommended technologies and languages and so on to managment, based on the projected arc of product requirements from clients - a translator between the sprocketjockeys and the suits, who could speak both their languages.

At the end of the day, the short answer is that a piece of software should be created using the tools best suited for the environment in which it will be deployed, and the uses to which it will be put.

If you see a nail, pull out the hammer.

Which may seem pretty much 'duh' territory, but it's incredible how often it is overlooked in the welter of words.
posted by stavrosthewonderchicken at 2:06 AM on October 3, 2003

Please, people. Everyone knows multidimensional compiling languages are the wave of the future.

Befunge (original site here, but I can't get it to work right now). That's all you need.

You can start bragging when *your* language of choice has TIME TRAVEL, but until then...
posted by qDot at 6:51 AM on October 3, 2003

A lot of people may program in Java, but I personally go out of my way to just not use Java apps whenever possible. Invariably, their UI's suck and they're slow, and they also take a long time to start up. I've played around a few stand-alone java games (one even with fullscreen opengl, which surprised the hell out of me,) been frustrated at hundreds of java applets on the various sucky webpages of yore, beaten a java applet included by apple in their whole MRJ for OS 9 thing... in Tic-Tac-Toe. More recently, I've had to deal with dumbass users installing Limewire and Freenet and other java crap like that on my company's computers. Nothing is more amazing than watching a 2 ghz P4 struggle to refresh an UI.

And it's not as if all Java apps magically work on multiple OS's. I've seen single-platform Java apps before. Most telling is how virtually no commercial games are developed in Java - you'd think with one dev team outputting one source that'd compile and run on Mac, Windows and Linux without porting would be worth it for the game companies...
posted by Veritron at 9:07 AM on October 3, 2003

« Older ??   |   The Weasel Awards Newer »

This thread has been archived and is closed to new comments