Re: C++ & gnome (was: Re: opening Gnome to multiple (windowing) systems)

Miguel de Icaza <> writes:

> I would like you to comment more on why "programming with widgets is
> much more natural in C++".

If you have done a lot of coding with C++, it is very natural.  If you
haven't, it's a drag.

With a good editor (like emacs), a C++ junky can code at the same
levels of abstraction, and at the same speed, as a Scheme junky using

> I firmly believe that the right solution for doing faster GUI
> applications is not coming up with yet-another-widget-model for some
> arcane object oriented language, but rather to raise the programming
> level.  Tcl/Tk raises the programming level;  Perl and Scheme bindings
> for your favorite toolkit are going to give you more power than any
> OO-widget setup.

I agree, somewhat.

I like to think in terms of "expressiveness".  If we can develop
languages on top of languages that really fit the idea at hand,
application development can proceed at the speed of thought.


The reason application development goes slow is that most programmers
spend 95% (or more) of their time learning new stuff.

Somebody who knows C++ may find it easier to be expressive with some
new libraries built onto C++.  When you add libraries to an object
oriented language, you are increasing the expressiveness of that

Telling them to switch to another language/environment (ie. scheme)
will slow them down, as they have to start from scratch - so they aren't
going to be immediately more expressive.

You can supply them with a high-level, single-purpose, abstracted
language (ie. HTML, XSL), and that may be more productive for certain
tasks than coding in a general-purpose language.  But the size of the
"problem space" at the higher levels is absolutely huge, and there are
very few "standard" high level languages to handle them.

So the bulk of the work still needs to be done at lower levels with
more general-purpose languages.  This is going to be the case for
decades, I am sure (until we get close to real "AI").

Scheme, Perl, C, Objective-C, C++, etc are good general-purpose
languages.  It's a matter of advocacy as to which ones are more
"expressive".  Most things you can do in one; you can also do in the
others.  So I tend to favour building on top of all of them.  People
should use what is most familiar to them.  When those languages reach
their limits, then they can go to the considerable effort of learning
something different.

There are lots of examples of "dead" languages that couldn't reach the
higher levels of expressiveness.

But C++ is anything but dead.  Same goes for Fortan, Basic, and COBOL
(which is employing millions - at least until the Y2K scare is over).

You can't judge the expressiveness of a language by the number of
keystrokes involved - COBOL programmers tend to be fast typists,
that's all.  And a top-notch COBOL programmer could probably crush a
top-notch Scheme programmer at certain types of application problems
(if they were to race head-to-head, starting from nothing).


 - Jim

PGP signature

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]