Forum OpenACS Q&A: Response to A Technical Paper on Java

Collapse
Posted by Todd Gillespie on
Kevin: this is going to come off as marginally insulting, so I want to warn you up front.

I live and work in the SF Bay Area, and the phrase on everyone's lips here is "We're building applications that just happen to use the web". So I hope you won't hold it against me if I take your last paragraph to be marketing rather than engineering.

Sensitivity warning mode off.

Kevin, you have what appears to be a fatal flaw in your reasoning, and it's right here:

"...as local desktop apps, and if you were writing them in that context, you wouldn't think of doing it in TCL. You might choose C or C++ or Java or Smalltalk or Lisp, but almost certainly not TCL. Programming complex applications without real data structures just seems like madness."
If you were writing a, eg, Win32 app, you'd write it in C or C++ because the GUI libraries are in C and C++. Your choices are limited to the native languages, the languages they have wrappers for, or the wrappers you can write on your own (while staying on timeline). Even then you don't have any good choices, since the wrappers and the mixed language semantics most often cripple speed (the old gtk-- maintainer wrote some excellent analyses on this issue) which is verboten since the GUI enviroment demands response time of a tenth of a second or less. So you're stuck with C/C++. 'Real data structures' are a distant secondary matter in language choice.

"there are also things that a "real" language is better for."
Arrrggh. The 'real' language sling has been used against every interpreted language since the Epoch. I don't think it has any foundation; the languages you term 'real' would be more correctly termed 'system' languages. Having to bash bits does not a more 'real' language make.

I fear you also misunderstood my point on strong typing. It may be more illustrative to use the recent functional language Haskell -- its typing system is much, much, stronger than Java's (and yet pleasing unto the eye of the theorist. Fun, too.). What is found at the conclusion of this spectrum? Proof of my point -- Haskell, standard, is almost totally crippled for I/O. Any interaction with the outside world is packed into a monad where the type system is different; often they are linked languages (the Haskell/C++ combo made a strong showing at this year's ICFP). The point here is a strong static language is excellent in its own little box, but poor for the job of overseeing many components and dealing & processing variable foreign data. It's called the component architecture -- I hear it's becoming quite popular.