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

V = I * R and the rest (Re: OT: C++ Newbie and KDE/QT)



On Tue, Jun 26, 2001 at 12:06:50PM +0200, Brendon wrote:
> what did you start with when learning C++?

> any suggestions are appreciated.

No suggestions, but you get a free ticket to a gratuitous rant:


Start with a soldering iron and develop a practical feeling for
electronics.  The basics are very simple, really.  It is necessary
groundwork and also an excellent way to learn how simple things can work
or not work, and how to work with that.

Then learn assembly, read Tanenbaum and a few architecture reference
manuals, too.  Debug assemly code, in your head and maybe also with
a tool.  Make it work in reality, repeatably.  Dig up a cbm-64 from
a landfill, because they're still great for this purpose.  Or install
vice, a complete cbm-64 emulator for linux.

Then learn C, the unix api and libc basics.  Read some classics.  K&R,
Stevens, McKusick et al. spring to mind.  The glibc docs are freely
installable on your debian system, as is the documentation in the linux
kernel source.  You don't have to know every detail, but these concepts
are precious knowledge.  Watch the McKusick video too, if you can,
because it is very entertaining.

Then learn how to effectively use the standard userland tools:
sh, sed, awk and friends.  Learn how to prototype an arbitrary
to-be-written-in-<insert pet language> program in these tools, it's good
for creativity and your for your understanding of the difference between
"job" and "tool".  Then go out and learn to program intricate C code
that does these things much faster and more bug prone.

Read lots of freely available source code.  Such beautiful children were
born from the marriage of free software and the internet.  Read mailing
lists, faqs, howtos, manpages, drink freely from this fire hose.  When you
have done all of that, go ahead and read Soustrup's book and maybe some
others (but don't get lost in highly academic stuff).

When you have mastered all of the above, only then learn to use C++
and Java.  It should be very simple by now, because you already know most
of the syntax and semantics, because you know their roots.  And because
you first learnt C and then read Soustrup, you know what the concept
was about.  And because you have a bit of hands-on experience, you
are familiar with the tradeoffs between design elegance and conceptual
overhead.

Working your way through all of the above shouldn't take more that
20 years, if you're eager and quick to learn maybe even 10, but you
would still be weak on the experience side.  I went through some of the
above points in a suboptimal order, and I guess that I'm not even about
halfway now.  Maybe not even a tenth of the way.

Other people will say that I'm violently wrong and that you should first
learn pascal, logo or some flavour of paradigm-quiche.  But I think that
computers just don't work that way and that you should not hide this.
Maybe these people should first figure out how people really work and
then try to match that to how computers work before they conceptualize
away into nowhere land.

Maybe all this will be different in 50 or maybe a 100 years from now.

Maybe a lot of it will have turned out to be clumsy and arcane, and
be succeeded by more elegant insights and methods.  Who knows what
"computers" look like, by then.  Maybe all devices will run object-forth
natively (just kidding).  

Maybe only a few will know, because after the big gpl-trial, microsoft
will own all the copyrights to all software still available on the
microsoft inter.net, and besides that, also all the patents to any
ideas conceived since 2004, granted to them by the global corporation
in exchange for access to some of microsoft's property -- your documents
and emails (just kidding, I hope).

But the learning curve will surely only steepen more and more, as long
as more sophisticated machinery is created primarily for more features,
instead of less.

Because the ar^Hct of automation is a fundamental activity, unlike most
other human activities that require an extensive knowledge of facts and
concepts, the world needs many people who have excellent automation skills
and many many more with good automation skills, whereas a relatively
small group of excellent greek scolars can fullfill the world's current
demand for knowledge and applied skills in their area.

If the demand for interpreters and performers of classical greek mythology
was as high as the demand for computer professionals, then surely we would
see a constant churning out of Certified Story Tellers, who had learnt
"Visual Hellenic +- in 30 days" (watched a few videos of contemporary
greek television quiz shows and could remember the names of some of the
contestants afterwards).

Hopefully there would be a Free Sanskrit Foundation, where the thirsty
may come for clear sources and to seek refuge from the senseless crap
that was being sold for culture to the unsuspecting masses.  And before
anyone thinks I dislike greek literature, you wouldn't like euripides very
much anymore either after it were "adapted to better suit the sponsors".

If you choose to ignore its genesis, you'll likely only give C++ even more
of a bad name.  And most of all avoid "Visual" anything like the plague,
unless it refers to a so-called "visual editor" (for quiche eaters,
real programmers still use ex(1) on their trusty teletypes).  :-)

Cheers,


Joost



Reply to: