Post by Andrew LentvorskiPost by Christopher SmithPost by Andrew LentvorskiIt's the C++ folks who should feel the threat. C++ really needs to
die at this point.
Yes, they should be really threatened by all the other languages that
have been used to implement full featured browsers. Languages like......
Okay, maybe they aren't so worried. ;-)
Yet businesses who are running much larger codebases seem to be all
Java based. Gee, I wonder why ....
You of course would be referring to business like Google, Adobe, Yahoo,
Microsoft, Symantec,..... ;-)
Post by Andrew LentvorskiOr maybe, that means we should use a language like C++ for really
large, complicated systems like ... say ... operating systems? Hmmmm,
no that doesn't seem to quite fit either since no large operating
system has been written in C++.
I guess that depends on how you define "large" and "operating system"
(one might claim Linux is written in C, but KDE sure accounts for a lot
of the code ;-), but certainly there are a number of operating systems
primarily written in C++, and they have been high quality
implementations with comparable capabilities to their C breathren.
Post by Andrew LentvorskiDon't confuse arguments of merit vs. arguments of inertia.
Oh, trust me, I wouldn't.
Post by Andrew LentvorskiEvery current browser that I can think of has a code base that stems
from a time when the only really commercially used languages were
Cobol, FORTRAN, C, C++, Lisp, and Ada. When you then factor in the
price of language compilers other than GNU C/C++ back in the 1988-1994
timeframe, you have a whopping codebase built around machine
assumptions and economic conditions that haven't held for almost 20
years.
Yes, unfortunately back then you could only get free fortran, LISP, and
Ada implementations, so I guess that the only reason we haven't seen the
great Cobol browser is because it wasn't available for free.
There were lots of programming languages one could aspire to write a
browser in back in that era. Heck, before Java took over the scene
everyone was trying to be the "alternative to C++". Certainly, there
were also quality implementations of Objective-C available for free. You
could get Digitalk Smalltalk for $100. Visual Basic was available at
competitive prices. Perl was free. Free versions of Haskell and ML
existed (in the case of ML, even decent ones were available). I don't
recall a free version of Eiffel, but there was Sather. Pascal and Object
Pascal were available (Borland's Delphi showed up right when Java did,
IIRC). Oberon-2 was available. Implementations of Modula-2 and -3 were
available. Python was available. Ruby was too, but I don't think anybody
outside of Japan had heard of it yet (but that wouldn't stop the
Japanese with coming up with a browser). There were several free
implementations of LISP/CLOS and Scheme available (and in the case of
Scheme, you could pretty much build your own in the course of a week),
not to mention some reasonably priced LISP/CLOS implementations. You
could find free versions of Simula and it's descendant: BETA. Sure,
there are better implementations of a lot of these available at lower
costs today (well, those that survived the Java onslaught at least), but
the same is true of C++.
In fact, browsers were written in many of the languages I mentioned, and
they all tended to suck compared to Netscape or even second tier browers
like Mosaic, IE, and Cello. There was a reason the Netscape folks chose
C++ from all the language choices they had back then.
In truth, modern browsers are built on codebases that were largely
rewritten from scratch in the late 90's, so there was a chance for a new
language champion to emerge. Furthermore, the codebases of older
browsers were so small that it didn't take much effort to reach feature
parity of them (indeed, there was an old Dilbert comic strip that
jokingly made reference to the notion that typing randomly at your
computer for a few days would produce a functional web browser).
Java in particular has no real excuse beyond language limitations. The
HotJava browser was written in 1994 and released in 1995 (oh, and Java
was available for free in 1995 too). It was briefly successful due to
its unique support for Applets, but rapidly lost favour once other
browsers obtained the capability. Sun made various attempts to
revitalize the project, and never drew much interest. At the same time
that the Mozilla code base was open source, Netscape open sourced
"Jazilla", their own in-house Java-based browser effort.
While having most modern browsers implemented in C++ doesn't prove much
of anything in terms of its superiority, it does prove much with regards
to arguments about its inferiority. If other languages were so obviously
better than it, surely we wouldn't all be using C++ browsers, e-mail
clients, word processors, spreadsheets, etc. Surely the huge technical
disadvantage you suggest would ensure that developers would come up with
better solutions in other languages, or never think to choose C++ for
their projects to begin with.
Post by Andrew LentvorskiOf course, since C++ doesn't even play well between different
compilers, it's no surprise that those who use C++ are trapped with it.
I grow tired of this silly statement that you raise again and again.
Heck, most Java implementations are built from the same reference code
base, they have a massive conformance test for branding, and yet you
still run in to problems between the different versions (and the ones
that are from unique codebases are even more problematic). Heck even
Java compilers, despite largely being glorified parsers, run in to
problems (I still recall Sun simply refusing to fix a bug in their VM
back in 2000 on the grounds that the byte code sequence in question
would never be produced by *their* compiler). I've seen first hand the
problems that spring from different implementations in C, Smalltalk,
LISP, ML, Haskell and even Perl back in the early days of the
ActiveState fork (and they had the advantage of full access to the
original version). I'd argue that having such issues is actually a sign
of a language maturing to the point where multiple competing
implementations exist. Eventually, with additional maturity, those
issues begin to diminish (as they have with C++).
--Chris