On Thu, 21 Jul 2005, Robi Karp wrote:
> 2. Control. You can be in full control of the environment down to
> very low levels (in C / C++ anyway).
I'm not sure that this is an advantage. You not only are in control of
the environment to that level, you *must* control it to that level.
That makes programming harder. And worse yet, it means that vendors are
going to want to do very careful validation of applications to make sure
that they don't crash the phones. That significantly raises the cost of
developing and deploying applications.
Compare the costs of developing and deploying to the general public a
DoJa and a BREW application that simply prints, "Hello world" on the
> 3. Portability. Yes, that's right portability. A language like C is
> far more portable than, say, Java. With Java you are at the mercy
> of the JVM vendor, Macromedia in the case of Flash etc. Now I'm
> not suggesting that you want to write a Java application for the
> Texas Instruments c4x family of processors, but you could in C if
> you wanted to. Pick a platform and I will find you a C compiler.
Well, that's one way of defining "portablility," I suppose, but by that
definition, machine language is more portable than C, since there are a
few platforms out there without C compilers, but there isn't a single
one that doesn't support machine langauge.
The real question is, "how much code do I have to rewrite to make this
application run on a different platform." Java is probably the winner
over C there, thought likely not by all that much, due to lack of
standardization of libraries and suchlike. (See? Suddenly the biggest
problem is not even the language any more.) However, you do save a lot
of pain when porting by avoiding problems with things such as signed
versus unsigned characters, which are irrelevant to most programs except
as obstacles to be overcome.
> What they have over C is very very good tools and very very good,
> easily accessible resources.
They are also langauages in which you spend more time dealing with the
essential complexity (the problem you're trying to solve) and less
time dealing with irrelevant complexity added by the language (memory
managment, bounds checking, overflows, etc.).
Basically, if you're not a good programmer or a good manager of
programmers, you probably see programmers and programming effort as a
fungible resource; one programmer is pretty much the same as another, as
is one language or technology versus another.
But the differences in productivity between programmers and programming
teams can easily be more than an order of magnitude; three or four smart
programmers can often work twice as fast as a team of fifty or sixty
not-so-smart programmers, testers, etc. For startups, especially, being
able to do this is important; in fact it's their chief competitive
advantage over larger companies (who have more money, people and
Curt Sampson <cjs_at_cynic.net> +81 90 7737 2974
*** Contribute to the Keitai Developers' Wiki! ***
*** http://www.keitai-dev.net/ ***
Received on Fri Jul 22 05:56:59 2005