JSP is fantastically simpler than "J2EE", which is the recommended-by-Sun way of building applications, but still it seems to be too complex for seniors and graduate students in the MIT computer science program, despite the fact that they all had at least one semester of Java experience in 6.170.
\begin{humor} That's funny. I had a couple of sophomore co-ops down here at Georgia Tech build a significant J2EE app with JSPs, servlets, and an Oracle back end in a semester. They had only one semester of prior Java experience. Perhaps you should beef up your CS curriculum up there at the "Georgia Tech of the North!" \end{humor}
In all seriousness, I enjoyed your article. I thought you were too hard on Java, but Java's honor has been amply defended in other posts.
I think you're too critical of your affinity for Lisp. After starting out with Pascal and the C languages (C, C++, Java) and discovering functional programming later in life, I find myself drawn to Lisp (and ML, and...) - especially for AI. Paul Graham has a pretty good article about the timeliness of Lisp that may make you feel a little better about your "Lisp zealotry."
The closest Dell Dimension 8300 I could configure was $1777. At $1777, the Dell Dimension 8300 has a smaller, slower disk drive and a lesser video card than the $1999 G5. When you take the aforementioned differences into account, they're about equal values.
Incidentally, I tried similar comparisons with Dell's "Ultimate Gamer" machine, and it was also about the same price as a comparably equipped G5 before taking the slower hard drive into account. Looks like Apple did their homework in pricing the new G5s in order to minimize price arguments.
The Fox project at CMU is studying the use of advanced programming languages, such as ML, for the construction of system software. They already have a web server written in ML.
The best introductory computer science textbook is "Structure and Interpretation of Computer Programs", also known as the wizard book because of the wizard on the cover. I've also heard good things about "How to Design Programs." Both of these books avoid the pitfall of focusing on syntax by using Scheme, which has very little syntax. I haven't read HTDP, but SICP is the best introductory computer science textbook I've read, and many computer science educators agree.
The comments on this post contain a great deal of emotional ranting based on similarly emotional ranting contained a poorly researched, irresponsible article written by an incompetent journalist. For all the talk about rigid bureaucracies and the gratuitous references to Orwell's "1984", many people in this discussion are trusting this half-baked article as absolute truth. chrisd, shame on you for helping to impugn the reputation of one of the best schools in the country. If you have any character at all you will research the facts for yourself and post a retraction of your absurd suggestion that high school seniors evaluating their college choices should stay away from Ga Tech.
At the heart of this issue is a student who struggled through a tough course, possiblby cheated and got caught, and whined about it. The journalist who gave this whining a public outlet is irresponsible and immature. There was a similar article in the Atlanta Journal-Constitution a while back, but shoddy journalism is nothing new for the AJC. I was surprised to see a supposedly reputable newspaper run the story. My guess is that the journalist who wrote the Post story had a bad experience with cheating when he was a student and is simply using this case to vent his own frustrations. He certainly doesn't have all the facts. Ga Tech is an excellent school with high standards and a student body taken from the brightest high school graduates in the country. In this environment many high achieving students are somewhat dismayed at the difficulty after having a relatively easy time in high school. This was my experience at the Air Force Academy, and Ga Tech is a similar caliber school with similar caliber students. This student simply needs to learn that he won't always get As, especially at this level.
Having said this, I must admit that the CS1 course at Ga Tech is experiencing growing pains. The College of Computing (CoC) at Ga Tech recently revised the course and students and faculty alike are adjusting to the new material. However, it is important to consider the fact that the CoC revised the course after conducting research in CS education. The CoC is trying to make its CS curriculum as good as it can be. The execution of the change has been rocky, but the underlying reasons for it are sound. Note also that the CoC is well aware of the problems with the new course and started actively working to improve it long before any blow hard journalists blew the rather typical stories of college students out of proportion in order to create fodder for their columns.
Now, for anyone considering applying to Ga Tech , let's inject a little reality into this discussion. Ga Tech is the number 4 engineering school in the country behind M.I.T., Stanford, and Berkeley. Computer Science is ranked 12th, but the ranking is based on reputation, which always lags actual performance. By my own observations I would place Ga Tech's computer science program in the top ten, and Ga Tech is definitely headed there. Ga Tech is a very competitive school and is constantly growing and improving. Tech is so serious about making its computer science program a national powerhouse that it has its own college within the university, not just a department of another college as in most universities. I could go on extolling the many virtues of Ga Tech, but the bottom line is that it's an excellent school and should be on your short list if you want to attend one of the nation's top institutions.
That analysis is mistaken. Java is secure, which is good for "enterprise" computing. However, it is inadequate in other metrics.
You make a good point about Java's security, which only strengthens my argument. What counterpoints can you offer to show that my analysis is mistaken? By what other metrics is Java inadequate for enterprise computing?
Java is non-portable.
Here's the short answer in the form of a simple syllogism: If a program runs on more than one platform, then it is portable. Java runs on more than one platform. Therefore, Java is portable.
Of course, that's not a satisfactory answer for enterprise computing. The platforms in question must be significant to an enterprise. Sun supports Java on Solaris, Linux, and Windows. This is more than satisfactory for enterprise computing.
I do agree that it would be nice for Java to be supported on FreeBSD, and I'd appreciate a link to your story about Sun refusing to allow FreeBSD to use their binary. As far as I know, anyone can implement a JVM. Being a for-profit company, Sun has to choose which platforms it supports directly, and I don't fault them for that. Personally, I'm very grateful for Sun's (and IBM's) Linux support, because it means that I don't have to run Windows at work.
Mono is not interested in using Microsoft's proprietary libs. Interop is not their goal.
Once again, you strengthen my argument. A lack of interoperability in.NET is yet another reason Java is the better choice for enterprise computing.
Java already delivers what.NET promises, and is truly cross platform. Micrsoft's submission of C# to ECMA is just a PR move. Microsoft still owns the libraries, and that's where the real value is for business developers. Miguel might be happily hacking away at a.NET implemenation now, but MS can and will pull the rug out from under him eventually, and then all that programming talent and effort will have gone to waste. Microsoft will use Miguel and his colleagues to create an illusion of openness, and then discard them when they're no longer helpful to Microsoft's objectives.
I don't have time here to recount all the reasons Java is a great choice for enterprise application developmnt. I can tell you that if you don't yet have a good grasp of object oriented programming and design, then you won't appreciate Java until you do. And if you haven't done large enterprise systems with other technologies before, then you won't appreciate the advantages offered by the Java platform. Let me give you a couple of high-level points to consider:
Java is (1) a language, (2) a set of standard libraries, and (3) a runtime environment (the Java Virtual Machine, or JVM). These elements combine to make a compelling choice for building an enterprise system. The language is well designed and comfortable to use, the libraries are rich, elegant, and powerful, and the JVM provides a true cross platform run time environment -- and cross platform compatibility is an esssential element of a well designed enterprise system.
Java has an extremely large, active, and talented user community. Most of the thought leaders in the OO world are using Java, and most of the better university CS programs are using Java in their core curricula (before anyone starts ranting that their wonderful school doesn't use Java, let me list a few that do: MIT, Carnegie Mellon, Berkeley, U. of Illinois at Urbana-Champagne, Georgia Tech, Texas. Basically, almost all of the top CS schools use Java). My point: Java has a lot of very talented mindshare. If you want to do elegant programming, the Java community is a great place to do it.
Thank you for pointing this out! This misuse of plural verbs has annoyed me for some time now. I believe this error results from an improper transfer of british english to american english. I have noticed that british speakers use plural verbs with nouns that refer to groups, such as company names. So I infer from this observation that this is correct in british english. However, this is not correct in american english. Ironically, most americans who adopt this misuse probably do so in an attempt to improve their own use of the language and sound more intelligent, but it has the opposite effect to an informed ear.
Having said this, it is quite understandable that americans would adopt this incorrect usage in their own speech after hearing it form british speakers, because the average brit is far better spoken than the average american. Whenever I travel to the U.K. I enjoy the eloquence of the british people, but the fact remains that british english and american english are not the same.
You make an excellent point about the disadvantages of wrapper, or "peer based" GUI libraries. The original Java GUI library, AWT, was peer based, with all the limitations you mentioned. Java's newer Swing library takes the same "draw it yourself" approach as Qt, and as a result is much better than AWT. Sun came to the same conclusion as TT in pushing Swing over AWT, and any experienced Java developer will tell you it was a good move.
Incidentally, I've worked with MFC, Borland's VCL, Perl/Tk, and Java Swing, and Java Swing is by far the best of the four. Its main advantages are that it is thoroughly object-oriented and very elegant - Java's designers are really top-notch. I've only just begun to learn Qt, but so far it looks as nice as Swing, so it's pretty exciting. Most people where I work think of MFC when they think of GUI programming in C++, which is a shame because MFC is so ugly. With Qt you don't have to automatically assume that GUI programming in C++ is painful. I'm looking forward to writing C++ Qt apps that are as elegant as my Java Swing apps.
1. Java is the most common language used to develop programs for the JVM, but nothing prevents you from writing a compiler which translates the source of any given language into JVM bytecodes; Sun does nothing to prevent this, AFAIK. See www.jython.org for an example of this which exists today.
2. Java already does JIT and native code generation. JIT is more common because it is more flexible.
3. This is the first I've heard of.NET being cross-platform. But I'll accept your assertion and point out that Java already runs quite well on every significant enterprise platform.
4. Java already has a robust security model.
5. Java servlets are already garbage collected.
6. This sounds cool but I'm dubious about it's success. Besides, you can already achieve the same goal by using Java applets or Java WebStart.
7. Java already does this, but I am glad to see Microsoft finally address the "DLL hell" problem that they created themselves.
Keep in mind that Java delivers all these things robustly *today*. It will be years before.NET will be usable for real enterprise systems. I think the point of the original posted question is that.NET is almost a wholesale rip-off of the current Java platform. There is little to nothing proposed for.NET that is not already implemented in the Java platform.
.NET is basically two things: (1) an adminssion by Microsoft that Sun is right regarding the Java platform and its goals, and (2) vaporware to try to slow the "steamrolling" rate of adoption of Java for enterprise computing. Have you noticed MS's recent ads touting their "enterprise computing." They know where the money is going, and they know who currently owns that market...*today*!
As for automatically blasting MS, either you're really clueless about Java, or you are guilty of automatically preferring.NET "just because it's from Microsoft." As a beta tester, I think the latter is more likely.
I did, however, just see a lecture by Bjarne Stroustrup in which he was talking about good vs. bad object oriented design. He used MFC as his example of how to write a really, really bad OO library.
...and are you hiring? I'll be looking for a job this summer and searches on the major job web sites turn up only about a dozen jobs which make even the slightest mention of Qt. I like Qt, and I'd love to use it on the job. Unfortunately, the vast majority of interest I get from employers seek VC++/MFC expertise. I also use C++ Builder/VCL on Windows, but it too is scarce on the job sites. Am I looking in the wrong places (Monster.com, dice.dom, and computerjobs.com)?
You are so right about PHBs favoring busy-work over thoughtful reflection. It's just the age old problem of having highly intelligent people (in this case programmers) often being supervised by less intelligent people (non-programmers, or programmers who got a classic "fuck up, move up" promotion to keep their hands out of the actual code). They don't know any better, so they want to see more "stuff" to think that a project is progressing. I think Steve McConnell nailed it on the head in his book "Code Complete" when he said (paraphrased) that he thinks less of a programmer who endlessly hacks away compared to one who spends much time just sitting and thinking. Programming is an intellectual pursuit and therefore best practiced by thinkers, not busy-bodies. - Chris
Excellent post. I don't have any ideas to improve the situation in SV, but I think I have a better idea altogether: make a new "Silocon Valley" somewhere else, somewhere more sane.
I'm really tired of the arrogance surrounding "the valley." I once saw a Silicon Spin episode on ZDTV which irked me tremendously. The topic of discussion was Michael Crichton's venture into computer gaming. The location of the new venture was North Carolina so all the "pundits" on the panel (a bunch of damn journalists who probably never wrote a line of code in their lives) declared that the venture would fail because it was not headquartered in Silicon Valley. With great unfounded confidence they explained that the only path to tech success was to locate in SV and "lock a buch of 22-year old programmers in a basement." What a bunch of crap.
I'm really tired of the attitude that all coolness and intellectual talent resides in Silicon Valley. MIT isn't in SV. Carnegie-Mellon isn't in SV. Cornell isn't in SV. Georgia Tech isn't in SV. Sure there are great minds in SV, but there are plenty elsewhere as well.
Don't misunderstand me. I've lived in CA before and I love the place. The perfect weather, ocean, and mountains are what draws companies there IMO, not any innate intellectual superiority. It's just a nice place to live.
So I say let's make a new Silicon Valley somewhere else. My top candidates are Research Triangle, NC, and Atlanta, GA. Both places have excellent universities to provide the talent pool, and their costs of living are very reasonable. Yeah, it's hot and muggy, but that just makes the sweet tea taste better!
csimpkins@midspring.com (simpkins.org temporarily out of service)
Unions are NOT the way to go. In industries such as the auto industry or even the airlines, there's a lot of homogeneity to the workforce - a riveter is a riveter, a pilot is a pilot (at least at that level). Unions assure workers of a certain level of compensation and benefits and assure the employer of a certain unit cost of labor they can use for planning. You're right: in the right places unions serve a useful purpose.
The "tech" industry is quite different. Part of the problem in perception is the wide swath painted by mainstream use of the term "tech worker." Not to incite any flames, but there's a world of difference between an HTML author and a C++ programmer. They're not in the same league. So all these reports of low tech wages are somewhat misleading. The great thing about the technology industry is that you really can get ahead by strengthening your skills if you want a better job.
As far as workforce homogeneity is concerned, anyone with any experience knows there are great differences in talent among engineers. A really good programmer should be paid more than a not-so-good programmer because he adds much more value to his projects. If unions normalized tech wages, the not-so-good programmer would get paid more than he's worth, and the good programmer would be paid less. I believe this would have a chilling effect on the whole industry. One of the great draws of this indistry is that you can really set yourself apart if you're good, and individual talent actually makes a big difference.
You may have a good idea for the "high-tech hamburger flippers" as you call them. My point is that there are many different areas of high-tech work and unions are definitely not appropriate for all of them.
csimpkins@mindspring.com (simpkins.org temporarily out of service).
I agree. I'll probably still use (X)Emacs with gcc/egcs/gdb, etc. But there are many Windoze developers who are intimidated by the traditional GNU evelopment environment, or simply don't want to take the time to learn it. For these peple, getting high profile, high quality development tools they're familiar with from the Windoze world will be a great boon for them, and for Linux.
The last somewhat decent argument Microsoft has against Linux is a dearth of available applications. Anything that helps fill this gap is a good thing. And for Linux's traditional geek following, the fact that Borland has always made great software means that they're starting from a position of respect. I've always considered Borland's tools and applications to be far superior to Microsoft's, and seeing Borland lose to Microsoft's inferior products is one of the things that made me grow to hate the whole Windows culture. (And don't give me that tired illogical standards argument.)
Finally, if Borland brings its RAD tools to Linux, the corporate development world will have one more great reason to use Linux. Lots of corporate IT shops use RAD tools such as Delphi and (ptui!) Visual Basic. Delphi is far superior to Visual Basic, so it's quite fitting that it should become Linux's RAD 3.5GL:-)
I agree. I hate what the ASCAP is doing. It kinda makes you want to buy into everything RMS has been saying all these years.
However, I also think the web site developer is getting what he deserves for lazily using frames. Sorry to sound harsh, but anyone putting up a commercial web site should take the time and expense to do it right.
Frames suck. They make printing, viewing source code, and bookmarking ambiguous, and they break the traditional "page metaphor" of the WWW. To avoid the gratuitous framing of someone else's web page, even an amatuer should know how to target the _top frame!
In other words, Open Source doesn't scale well. It's best when it's a few programmers writing gee-whiz utilities to show off to their friends.
I like to "show off" the amazing things I can do with Emacs to my windows programmer friends. Larry Wall probably gets all the chicks after showing off his "gee-whiz" Perl language. 57% of the web site administrators out there are impressed with a little "gee-whiz" utility called Apache. And a "few programmers writing gee-whiz utilities" sure impress the hell out of me with their incredible collection of GNU tools. I'll take gcc, gdb, make, emacs, and rcs over VC++ any day!
If you really meant what you said in your post, then I invite you to explore the Open Source/Free Software world in more depth. If you did you would realize how far off the mark you are. I mean this as a friendly invitation. I felt like I had been reborn when I discovered GNU/Linux a year ago. I wish everyone the same joy!
My advice: find your local Linux users group, attend meetings and ask questions. Contrary to some unfortunate things you may have seen posted on Slashdot, most Free Software/Linux people are really great people. Most would gladly give up an evening to help you install and learn Linux, and answers to your questions are never more than an e-mail away. If you've been in the Windows camp for a while you'll rediscover why you became enamoured with computing in the first place!
And if you're a Microsoft troll posting flamebait, my advice remains the same!
Chris csimpkins@mindspring.com (simpkins.org is temporarily down).
You're assuming we get the famed BSOD. We don't. We get what looks like a normal GUI desktop, but everything is locked up. This has even happened overnight with no users logged on. Perhaps directory replication was taking place with the PDC. But if this is so it casts serious doubt about NT's place in the "enterprise" - a big network will have several servers and the normal housekeeping shouldn't cause problems. Also, directory replication is a built in part of NT, not a third-party add-on. Shouldn't it work flawlessly?
And regarding your story about a third-party software package, this highlights one of the problems with NT: poor separation between kernel space and user space. If you can't run "third party" software for fear of causing system instability you've got a pretty useless OS in my view.
By contrast, I've been using Linux for a little over a year now and I've never seen a stable kernel crash. I've beat on it pretty hard, too. I do alot of programming so I'm always debugging software, much of which uses pointers extensively. I've built several beta software packages. I've reconfigured and recompiled my own kernel several times. The worse I've ever experienced with Linux is having to log on to another terminal to kill a runaway process - never a crash.
As for my "pretending" to be an NT administrator, that's just a silly statement. It's a job position and I currently fill it. To be perfectly honest, though, I'm only self-taught as a network administrator, mostly OJT. I'm a programmer by education (Comp Sci) and a pilot by training (USAF). I am studying, though and am pursuing an MCSE.
But then, I thought NT was supposed to be so easy to administer?
Actually, Dell already replaced the motherboard in this server after we had installation trouble. I don't think hardware is the issue - Dell has checked this out. Besides, it's brand new. If any computer should be giving us hardware problems it should be the old throw-away box running our Linux web server.
As for investigating the problem, we just did an out-of-the-box install, nothing special. We don't really have time where I work to investigate too deeply, but that's another issue.
Our Linux box was a plain vanilla, out-of-the-box installation as well, and it has given us no problems at all. I basically set it up and it runs with no intervention on my part.
If you're suggesting I'm not putting enough effort into system administration of the NT box relative to the Linux box then that shatters the stupid assertion that NT is easier to administer, doesn't it.
BTW, I'd never work for an anonymous coward like you.
I'm an administrator for a large (1000+ node) NT 4.0 SP3 network. I have direct responsibility for about 120 workstations and 2 servers. I can say from personal experience that NT is very unstable, and it doesn't even have anything to do with the GUI-kernel connection. Our main server, a BDC, file, and print server crashed about every two weeks for a year before we finally gave up and set the damn thing to reboot every night. The thing would be sitting there with its monitor off and users would start complaining that the file server was unavailable. We'd turn on the monitor and sure enough, the machine was locked solid - only a power down would reboot it. And when the machine comes back up all you can do is look at the log files to see about when it crashed. Other than that you get no debugging info at all.
By contrast, we have a Linux box running our very active intranet web site. We've had it up for 6 months and it has run flawlessly. Interestingly, I set up the Linux web server in the first place because I was tired of IIS failing for no apparent reason (the site had been hosted by IIS).
Oh, and the Linux box is an old P166 with 16MB RAM, the NT server is a brand new Dell Poweredge 2300 dual PII 350 with 128MB RAM, hardware RAID 5, 3 hot-swappable 9 GB cheetahs. All that reliability hardware wasted on an OS that can't stay up for two weeks!
It's certainly not for technical reasons that people choose NT over *nix.
Chris simpkins@tilc.com
(The links to simpkins.org don't work - I'm moving to a new server.)
As much as I hate Microsoft for what they've done to the computer industry, I have to admit they do have the ability to buy some good engineers. However, I think you're missing two important points regarding the relative programming talent in the Microsoft and Linux camps. First, there are plenty of terrible programmers at Microsoft as well. Steve Maguire's book Writing Solid Code alludes very subtly to this fact. (They grew so fast and there was such a shortage of qualified talent they were forced to hire less talented people.) Second, there are lots of excellent engineers working on Linux. In fact your implicit assertion that there are only "average hackers" working on Linux is rather absurd.
Everybody knows the rock stars of Linux development, like Linus and Alan, but I think there is something even greater brewing. From personal experience and contacts it seems that there is a lot of anti-Microsoft and pro-Linux sentiment in computer science departments all over the world - there certainly is in mine. I think most of the very best programmers would work for less money for the satisfaction of doing something they believe in. With Linux they can really feel like they're making a positive difference. At Microsoft the only real motivation seems to be money - they certainly don't seem to mind selling poor products to consumers.
What I'm saying is that Linux has won the "hearts and minds" battle, so to speak, for recruiting engineering talent, and the money is starting to follow as well. I think the imapct of this over the next few years will blow everyone away - especially Microsoft!
Chris simpkins@tilc.com
(BTW, the links above to simpkins.org don't work right now. I'm moving my stuff to a new server.)
I looked at Zengin's web site and, as far as I could tell, the only technical person to leave SuSE for Zenguin was Bodo Bauer. The rest look like marketing and management types - the general category of which I would hardly call a company's "best talent." Looks like the core technical staff - the real lifeblood of a technical concern - is still in place (mostly in Germany).
That's not to say SuSE isn't having growing pains as well. Last month a mysterious $80 charge appeared on my credit card from SuSE. I hadn't ordered anything recently and there is no combination of products they sell which add up to $80. The important part, though, is that they were extremely polite and helpful in correcting the mistake (thanks Jan and Ayako). I'm still a loyal SuSE customer!
I use SuSE as my main distro and have Red Hat on my Laptop. My general impression is that SuSE is much better engineered. SuSE has a clear road map, a consistent and reliable installation and configuration scheme (rc.config, SuSEconfig, and YaST), and best of all, the whole system is well documented in an excellent manual which accompanies the distro. In my view Red Hat is way behind there, which is probably attributable to my general commentary on Red Hat: they seem to be finding their way. The installation of Red Hat is excellent - probably the best (though I haven't tried Caldera's new one yet). But the system is poorly documented, major parts are buggy (mainly GNOME), and things seem to change schizophrenically - e.g. GLINT, GnoRPM. Probably the worst thing about Red Hat is that it is developing a "skip the dot-oh release" reputation. If Red Hat is our major representation against Micros~1, this could be disastrous. There is absolutely no need to release buggy "stable" versions of a GNU/Linux system. It may require more patience, but is much better for our reputation in the long run.
Also, though I understand RH's original reasoning in supporting the GNOME project, I thinks it's now mostly a waste of time in light of the new Qt license. Please, no flames, it just seems to me that the KDE developers set out to make a great desktop system first and work out the licensing issues later - which they did. Now KDE is way ahead of GNOME and probably always will be. It's stable, functional, and seems to be the way the rest of the Linux world is moving. I think everyone owes the KDE team a lot more respect and thanks for what they've done instead of the gratuitous flame wars which usually surround KDE news. I plan to contribute to the project myself when I feel my C++ skills are up to par.
In closing, I think it's a good idea to support the major Linux distros. I've bought every SuSE release since 5.2, which supports XFree86, and I purchase most Red Hats (just not the dot-ohs) which supports, among others, Alan Cox and the penetration of Linux into the enterprise - which benefits us all!
\begin{humor}
That's funny. I had a couple of sophomore co-ops down here at Georgia Tech build a significant J2EE app with JSPs, servlets, and an Oracle back end in a semester. They had only one semester of prior Java experience. Perhaps you should beef up your CS curriculum up there at the "Georgia Tech of the North!"
\end{humor}
In all seriousness, I enjoyed your article. I thought you were too hard on Java, but Java's honor has been amply defended in other posts.
I think you're too critical of your affinity for Lisp. After starting out with Pascal and the C languages (C, C++, Java) and discovering functional programming later in life, I find myself drawn to Lisp (and ML, and
Happy Hacking!
Chris
The closest Dell Dimension 8300 I could configure was $1777. At $1777, the Dell Dimension 8300 has a smaller, slower disk drive and a lesser video card than the $1999 G5. When you take the aforementioned differences into account, they're about equal values.
Incidentally, I tried similar comparisons with Dell's "Ultimate Gamer" machine, and it was also about the same price as a comparably equipped G5 before taking the slower hard drive into account. Looks like Apple did their homework in pricing the new G5s in order to minimize price arguments.
The Fox project at CMU is studying the use of advanced programming languages, such as ML, for the construction of system software. They already have a web server written in ML.
Richard Stallman wrote the GPL to protect himself (and others) after James Goslings's shenannigans with Gosling Emacs. See the history here
I don't know when Gosling started working at SUN, but I don't think SUN had anything to do with the original creation of the GPL.
BTW, Sun was growing fast, but IBM was the big monopolist of the time (and hadn't yet realized the monster they created in Microsoft).
The best introductory computer science textbook is "Structure and Interpretation of Computer Programs", also known as the wizard book because of the wizard on the cover. I've also heard good things about "How to Design Programs." Both of these books avoid the pitfall of focusing on syntax by using Scheme, which has very little syntax. I haven't read HTDP, but SICP is the best introductory computer science textbook I've read, and many computer science educators agree.
At the heart of this issue is a student who struggled through a tough course, possiblby cheated and got caught, and whined about it. The journalist who gave this whining a public outlet is irresponsible and immature. There was a similar article in the Atlanta Journal-Constitution a while back, but shoddy journalism is nothing new for the AJC. I was surprised to see a supposedly reputable newspaper run the story. My guess is that the journalist who wrote the Post story had a bad experience with cheating when he was a student and is simply using this case to vent his own frustrations. He certainly doesn't have all the facts. Ga Tech is an excellent school with high standards and a student body taken from the brightest high school graduates in the country. In this environment many high achieving students are somewhat dismayed at the difficulty after having a relatively easy time in high school. This was my experience at the Air Force Academy, and Ga Tech is a similar caliber school with similar caliber students. This student simply needs to learn that he won't always get As, especially at this level.
Having said this, I must admit that the CS1 course at Ga Tech is experiencing growing pains. The College of Computing (CoC) at Ga Tech recently revised the course and students and faculty alike are adjusting to the new material. However, it is important to consider the fact that the CoC revised the course after conducting research in CS education. The CoC is trying to make its CS curriculum as good as it can be. The execution of the change has been rocky, but the underlying reasons for it are sound. Note also that the CoC is well aware of the problems with the new course and started actively working to improve it long before any blow hard journalists blew the rather typical stories of college students out of proportion in order to create fodder for their columns.
Now, for anyone considering applying to Ga Tech , let's inject a little reality into this discussion. Ga Tech is the number 4 engineering school in the country behind M.I.T., Stanford, and Berkeley. Computer Science is ranked 12th, but the ranking is based on reputation, which always lags actual performance. By my own observations I would place Ga Tech's computer science program in the top ten, and Ga Tech is definitely headed there. Ga Tech is a very competitive school and is constantly growing and improving. Tech is so serious about making its computer science program a national powerhouse that it has its own college within the university, not just a department of another college as in most universities. I could go on extolling the many virtues of Ga Tech, but the bottom line is that it's an excellent school and should be on your short list if you want to attend one of the nation's top institutions.
You make a good point about Java's security, which only strengthens my argument. What counterpoints can you offer to show that my analysis is mistaken? By what other metrics is Java inadequate for enterprise computing?
Java is non-portable.
Here's the short answer in the form of a simple syllogism: If a program runs on more than one platform, then it is portable. Java runs on more than one platform. Therefore, Java is portable.
Of course, that's not a satisfactory answer for enterprise computing. The platforms in question must be significant to an enterprise. Sun supports Java on Solaris, Linux, and Windows. This is more than satisfactory for enterprise computing.
I do agree that it would be nice for Java to be supported on FreeBSD, and I'd appreciate a link to your story about Sun refusing to allow FreeBSD to use their binary. As far as I know, anyone can implement a JVM. Being a for-profit company, Sun has to choose which platforms it supports directly, and I don't fault them for that. Personally, I'm very grateful for Sun's (and IBM's) Linux support, because it means that I don't have to run Windows at work.
Mono is not interested in using Microsoft's proprietary libs. Interop is not their goal.
Once again, you strengthen my argument. A lack of interoperability in .NET is yet another reason Java is the better choice for enterprise computing.
I don't have time here to recount all the reasons Java is a great choice for enterprise application developmnt. I can tell you that if you don't yet have a good grasp of object oriented programming and design, then you won't appreciate Java until you do. And if you haven't done large enterprise systems with other technologies before, then you won't appreciate the advantages offered by the Java platform. Let me give you a couple of high-level points to consider:
Having said this, it is quite understandable that americans would adopt this incorrect usage in their own speech after hearing it form british speakers, because the average brit is far better spoken than the average american. Whenever I travel to the U.K. I enjoy the eloquence of the british people, but the fact remains that british english and american english are not the same.
Incidentally, I've worked with MFC, Borland's VCL, Perl/Tk, and Java Swing, and Java Swing is by far the best of the four. Its main advantages are that it is thoroughly object-oriented and very elegant - Java's designers are really top-notch. I've only just begun to learn Qt, but so far it looks as nice as Swing, so it's pretty exciting. Most people where I work think of MFC when they think of GUI programming in C++, which is a shame because MFC is so ugly. With Qt you don't have to automatically assume that GUI programming in C++ is painful. I'm looking forward to writing C++ Qt apps that are as elegant as my Java Swing apps.
Nice work, Troll Tech!
1. Java is the most common language used to develop programs for the JVM, but nothing prevents you from writing a compiler which translates the source of any given language into JVM bytecodes; Sun does nothing to prevent this, AFAIK. See www.jython.org for an example of this which exists today.
2. Java already does JIT and native code generation. JIT is more common because it is more flexible.
3. This is the first I've heard of .NET being cross-platform. But I'll accept your assertion and point out that Java already runs quite well on every significant enterprise platform.
4. Java already has a robust security model.
5. Java servlets are already garbage collected.
6. This sounds cool but I'm dubious about it's success. Besides, you can already achieve the same goal by using Java applets or Java WebStart.
7. Java already does this, but I am glad to see Microsoft finally address the "DLL hell" problem that they created themselves.
Keep in mind that Java delivers all these things robustly *today*. It will be years before .NET will be usable for real enterprise systems. I think the point of the original posted question is that .NET is almost a wholesale rip-off of the current Java platform. There is little to nothing proposed for .NET that is not already implemented in the Java platform.
.NET is basically two things: (1) an adminssion by Microsoft that Sun is right regarding the Java platform and its goals, and (2) vaporware to try to slow the "steamrolling" rate of adoption of Java for enterprise computing. Have you noticed MS's recent ads touting their "enterprise computing." They know where the money is going, and they know who currently owns that market...*today*!
As for automatically blasting MS, either you're really clueless about Java, or you are guilty of automatically preferring .NET "just because it's from Microsoft." As a beta tester, I think the latter is more likely.
I did, however, just see a lecture by Bjarne Stroustrup in which he was talking about good vs. bad object oriented design. He used MFC as his example of how to write a really, really bad OO library.
I'd like to see this lecture.
...and are you hiring? I'll be looking for a job this summer and searches on the major job web sites turn up only about a dozen jobs which make even the slightest mention of Qt. I like Qt, and I'd love to use it on the job. Unfortunately, the vast majority of interest I get from employers seek VC++/MFC expertise. I also use C++ Builder/VCL on Windows, but it too is scarce on the job sites. Am I looking in the wrong places (Monster.com, dice.dom, and computerjobs.com)?
You are so right about PHBs favoring busy-work over thoughtful reflection. It's just the age old problem of having highly intelligent people (in this case programmers) often being supervised by less intelligent people (non-programmers, or programmers who got a classic "fuck up, move up" promotion to keep their hands out of the actual code). They don't know any better, so they want to see more "stuff" to think that a project is progressing. I think Steve McConnell nailed it on the head in his book "Code Complete" when he said (paraphrased) that he thinks less of a programmer who endlessly hacks away compared to one who spends much time just sitting and thinking. Programming is an intellectual pursuit and therefore best practiced by thinkers, not busy-bodies. - Chris
Excellent post. I don't have any ideas to improve the situation in SV, but I think I have a better idea altogether: make a new "Silocon Valley" somewhere else, somewhere more sane.
I'm really tired of the arrogance surrounding "the valley." I once saw a Silicon Spin episode on ZDTV which irked me tremendously. The topic of discussion was Michael Crichton's venture into computer gaming. The location of the new venture was North Carolina so all the "pundits" on the panel (a bunch of damn journalists who probably never wrote a line of code in their lives) declared that the venture would fail because it was not headquartered in Silicon Valley. With great unfounded confidence they explained that the only path to tech success was to locate in SV and "lock a buch of 22-year old programmers in a basement." What a bunch of crap.
I'm really tired of the attitude that all coolness and intellectual talent resides in Silicon Valley. MIT isn't in SV. Carnegie-Mellon isn't in SV. Cornell isn't in SV. Georgia Tech isn't in SV. Sure there are great minds in SV, but there are plenty elsewhere as well.
Don't misunderstand me. I've lived in CA before and I love the place. The perfect weather, ocean, and mountains are what draws companies there IMO, not any innate intellectual superiority. It's just a nice place to live.
So I say let's make a new Silicon Valley somewhere else. My top candidates are Research Triangle, NC, and Atlanta, GA. Both places have excellent universities to provide the talent pool, and their costs of living are very reasonable. Yeah, it's hot and muggy, but that just makes the sweet tea taste better!
csimpkins@midspring.com (simpkins.org temporarily out of service)
Unions are NOT the way to go. In industries such as the auto industry or even the airlines, there's a lot of homogeneity to the workforce - a riveter is a riveter, a pilot is a pilot (at least at that level). Unions assure workers of a certain level of compensation and benefits and assure the employer of a certain unit cost of labor they can use for planning. You're right: in the right places unions serve a useful purpose.
The "tech" industry is quite different. Part of the problem in perception is the wide swath painted by mainstream use of the term "tech worker." Not to incite any flames, but there's a world of difference between an HTML author and a C++ programmer. They're not in the same league. So all these reports of low tech wages are somewhat misleading. The great thing about the technology industry is that you really can get ahead by strengthening your skills if you want a better job.
As far as workforce homogeneity is concerned, anyone with any experience knows there are great differences in talent among engineers. A really good programmer should be paid more than a not-so-good programmer because he adds much more value to his projects. If unions normalized tech wages, the not-so-good programmer would get paid more than he's worth, and the good programmer would be paid less. I believe this would have a chilling effect on the whole industry. One of the great draws of this indistry is that you can really set yourself apart if you're good, and individual talent actually makes a big difference.
You may have a good idea for the "high-tech hamburger flippers" as you call them. My point is that there are many different areas of high-tech work and unions are definitely not appropriate for all of them.
csimpkins@mindspring.com (simpkins.org temporarily out of service).
I agree. I'll probably still use (X)Emacs with gcc/egcs/gdb, etc. But there are many Windoze developers who are intimidated by the traditional GNU evelopment environment, or simply don't want to take the time to learn it. For these peple, getting high profile, high quality development tools they're familiar with from the Windoze world will be a great boon for them, and for Linux.
:-)
The last somewhat decent argument Microsoft has against Linux is a dearth of available applications. Anything that helps fill this gap is a good thing. And for Linux's traditional geek following, the fact that Borland has always made great software means that they're starting from a position of respect. I've always considered Borland's tools and applications to be far superior to Microsoft's, and seeing Borland lose to Microsoft's inferior products is one of the things that made me grow to hate the whole Windows culture. (And don't give me that tired illogical standards argument.)
Finally, if Borland brings its RAD tools to Linux, the corporate development world will have one more great reason to use Linux. Lots of corporate IT shops use RAD tools such as Delphi and (ptui!) Visual Basic. Delphi is far superior to Visual Basic, so it's quite fitting that it should become Linux's RAD 3.5GL
I agree. I hate what the ASCAP is doing. It kinda makes you want to buy into everything RMS has been saying all these years.
However, I also think the web site developer is getting what he deserves for lazily using frames. Sorry to sound harsh, but anyone putting up a commercial web site should take the time and expense to do it right.
Frames suck. They make printing, viewing source code, and bookmarking ambiguous, and they break the traditional "page metaphor" of the WWW. To avoid the gratuitous framing of someone else's web page, even an amatuer should know how to target the _top frame!
In other words, Open Source doesn't scale well.
It's best when it's a few programmers writing gee-whiz utilities to show off to their friends.
I like to "show off" the amazing things I can do with Emacs to my windows programmer friends. Larry Wall probably gets all the chicks after showing off his "gee-whiz" Perl language. 57% of the web site administrators out there are impressed with a little "gee-whiz" utility called Apache. And a "few programmers writing gee-whiz utilities" sure impress the hell out of me with their incredible collection of GNU tools. I'll take gcc, gdb, make, emacs, and rcs over VC++ any day!
If you really meant what you said in your post, then I invite you to explore the Open Source/Free Software world in more depth. If you did you would realize how far off the mark you are. I mean this as a friendly invitation. I felt like I had been reborn when I discovered GNU/Linux a year ago. I wish everyone the same joy!
My advice: find your local Linux users group, attend meetings and ask questions. Contrary to some unfortunate things you may have seen posted on Slashdot, most Free Software/Linux people are really great people. Most would gladly give up an evening to help you install and learn Linux, and answers to your questions are never more than an e-mail away. If you've been in the Windows camp for a while you'll rediscover why you became enamoured with computing in the first place!
And if you're a Microsoft troll posting flamebait, my advice remains the same!
Chris
csimpkins@mindspring.com
(simpkins.org is temporarily down).
You're assuming we get the famed BSOD. We don't. We get what looks like a normal GUI desktop, but everything is locked up. This has even happened overnight with no users logged on. Perhaps directory replication was taking place with the PDC. But if this is so it casts serious doubt about NT's place in the "enterprise" - a big network will have several servers and the normal housekeeping shouldn't cause problems. Also, directory replication is a built in part of NT, not a third-party add-on. Shouldn't it work flawlessly?
And regarding your story about a third-party software package, this highlights one of the problems with NT: poor separation between kernel space and user space. If you can't run "third party" software for fear of causing system instability you've got a pretty useless OS in my view.
By contrast, I've been using Linux for a little over a year now and I've never seen a stable kernel crash. I've beat on it pretty hard, too. I do alot of programming so I'm always debugging software, much of which uses pointers extensively. I've built several beta software packages. I've reconfigured and recompiled my own kernel several times. The worse I've ever experienced with Linux is having to log on to another terminal to kill a runaway process - never a crash.
As for my "pretending" to be an NT administrator, that's just a silly statement. It's a job position and I currently fill it. To be perfectly honest, though, I'm only self-taught as a network administrator, mostly OJT. I'm a programmer by education (Comp Sci) and a pilot by training (USAF). I am studying, though and am pursuing an MCSE.
But then, I thought NT was supposed to be so easy to administer?
Actually, Dell already replaced the motherboard in this server after we had installation trouble. I don't think hardware is the issue - Dell has checked this out. Besides, it's brand new. If any computer should be giving us hardware problems it should be the old throw-away box running our Linux web server.
As for investigating the problem, we just did an out-of-the-box install, nothing special. We don't really have time where I work to investigate too deeply, but that's another issue.
Our Linux box was a plain vanilla, out-of-the-box installation as well, and it has given us no problems at all. I basically set it up and it runs with no intervention on my part.
If you're suggesting I'm not putting enough effort into system administration of the NT box relative to the Linux box then that shatters the stupid assertion that NT is easier to administer, doesn't it.
BTW, I'd never work for an anonymous coward like you.
I'm an administrator for a large (1000+ node) NT 4.0 SP3 network. I have direct responsibility for about 120 workstations and 2 servers. I can say from personal experience that NT is very unstable, and it doesn't even have anything to do with the GUI-kernel connection. Our main server, a BDC, file, and print server crashed about every two weeks for a year before we finally gave up and set the damn thing to reboot every night. The thing would be sitting there with its monitor off and users would start complaining that the file server was unavailable. We'd turn on the monitor and sure enough, the machine was locked solid - only a power down would reboot it. And when the machine comes back up all you can do is look at the log files to see about when it crashed. Other than that you get no debugging info at all.
By contrast, we have a Linux box running our very active intranet web site. We've had it up for 6 months and it has run flawlessly. Interestingly, I set up the Linux web server in the first place because I was tired of IIS failing for no apparent reason (the site had been hosted by IIS).
Oh, and the Linux box is an old P166 with 16MB RAM, the NT server is a brand new Dell Poweredge 2300 dual PII 350 with 128MB RAM, hardware RAID 5, 3 hot-swappable 9 GB cheetahs. All that reliability hardware wasted on an OS that can't stay up for two weeks!
It's certainly not for technical reasons that people choose NT over *nix.
Chris
simpkins@tilc.com
(The links to simpkins.org don't work - I'm moving to a new server.)
As much as I hate Microsoft for what they've done to the computer industry, I have to admit they do have the ability to buy some good engineers. However, I think you're missing two important points regarding the relative programming talent in the Microsoft and Linux camps. First, there are plenty of terrible programmers at Microsoft as well. Steve Maguire's book Writing Solid Code alludes very subtly to this fact. (They grew so fast and there was such a shortage of qualified talent they were forced to hire less talented people.) Second, there are lots of excellent engineers working on Linux. In fact your implicit assertion that there are only "average hackers" working on Linux is rather absurd.
Everybody knows the rock stars of Linux development, like Linus and Alan, but I think there is something even greater brewing. From personal experience and contacts it seems that there is a lot of anti-Microsoft and pro-Linux sentiment in computer science departments all over the world - there certainly is in mine. I think most of the very best programmers would work for less money for the satisfaction of doing something they believe in. With Linux they can really feel like they're making a positive difference. At Microsoft the only real motivation seems to be money - they certainly don't seem to mind selling poor products to consumers.
What I'm saying is that Linux has won the "hearts and minds" battle, so to speak, for recruiting engineering talent, and the money is starting to follow as well. I think the imapct of this over the next few years will blow everyone away - especially Microsoft!
Chris
simpkins@tilc.com
(BTW, the links above to simpkins.org don't work right now. I'm moving my stuff to a new server.)
I looked at Zengin's web site and, as far as I could tell, the only technical person to leave SuSE for Zenguin was Bodo Bauer. The rest look like marketing and management types - the general category of which I would hardly call a company's "best talent." Looks like the core technical staff - the real lifeblood of a technical concern - is still in place (mostly in Germany).
:-)
That's not to say SuSE isn't having growing pains as well. Last month a mysterious $80 charge appeared on my credit card from SuSE. I hadn't ordered anything recently and there is no combination of products they sell which add up to $80. The important part, though, is that they were extremely polite and helpful in correcting the mistake (thanks Jan and Ayako). I'm still a loyal SuSE customer!
I use SuSE as my main distro and have Red Hat on my Laptop. My general impression is that SuSE is much better engineered. SuSE has a clear road map, a consistent and reliable installation and configuration scheme (rc.config, SuSEconfig, and YaST), and best of all, the whole system is well documented in an excellent manual which accompanies the distro. In my view Red Hat is way behind there, which is probably attributable to my general commentary on Red Hat: they seem to be finding their way. The installation of Red Hat is excellent - probably the best (though I haven't tried Caldera's new one yet). But the system is poorly documented, major parts are buggy (mainly GNOME), and things seem to change schizophrenically - e.g. GLINT, GnoRPM. Probably the worst thing about Red Hat is that it is developing a "skip the dot-oh release" reputation. If Red Hat is our major representation against Micros~1, this could be disastrous. There is absolutely no need to release buggy "stable" versions of a GNU/Linux system. It may require more patience, but is much better for our reputation in the long run.
Also, though I understand RH's original reasoning in supporting the GNOME project, I thinks it's now mostly a waste of time in light of the new Qt license. Please, no flames, it just seems to me that the KDE developers set out to make a great desktop system first and work out the licensing issues later - which they did. Now KDE is way ahead of GNOME and probably always will be. It's stable, functional, and seems to be the way the rest of the Linux world is moving. I think everyone owes the KDE team a lot more respect and thanks for what they've done instead of the gratuitous flame wars which usually surround KDE news. I plan to contribute to the project myself when I feel my C++ skills are up to par.
In closing, I think it's a good idea to support the major Linux distros. I've bought every SuSE release since 5.2, which supports XFree86, and I purchase most Red Hats (just not the dot-ohs) which supports, among others, Alan Cox and the penetration of Linux into the enterprise - which benefits us all!
Happy Hacking
C'mon, Duane. You don't need women. You know you'd marry a circuit board if you could :-)