Complete.Org: Mailing Lists: Archives: discussion: March 2000:
[aclug-L] Re: Weekly C quiz

[aclug-L] Re: Weekly C quiz

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: discussion@xxxxxxxxx
Subject: [aclug-L] Re: Weekly C quiz
From: Tom Hull <thull@xxxxxxxxxxx>
Date: Sun, 12 Mar 2000 15:50:50 -0600
Reply-to: discussion@xxxxxxxxx

Larry Bottorff wrote:
> It failed for me too, but it's the thought that counts, and I appreciate
> the opportunity to explore. I'm taking an algorithms course (CS300) at
> WSU. These questions are tangental to something we're doing usually. I'm
> learning a lot of C, but I'd like to ask some of the folks out there why
> in this day and age I should strive to become a crack C programmer?

If you want to be a programmer, learning C is obligatory. C has displaced
assembler as the bedrock of all significant programming. (Of course, it's
good to learn a little assembler, just to get a whiff of how CPUs actually
work, but unless you're writing compiler back-ends or doing architecture-
dependent kernel optimization, you won't actually be working in it.) Look
at what all is written in C: kernels (Linux, all Unix), compilers, almost
all GNU utilities, the networking utilities, X, emacs, most language tools
(e.g., Perl is written in C). The GNU coding standards still specify that
thou shalt write free software in C.

If it matters, almost all Microsoft software is written in C. Hell, VB is
written in C. When you want to extend it, you write in C.

The second point is that once you decide to learn C, you might as well
"become a crack C programmer". It isn't that hard, there isn't all that
much to it, and it'll pay dividends in the future. Even if you wind up
spending most of your life writing in C++ or Java or Lisp or Prolog or
God-knows-what, a solid understanding of C will prepare you.

> After all, everyone knows the best language is Perl, or Java, or C++, or
> Modula-X, or, or....

C++ is just C plus some techniques for building large applications by
leveraging abstractions. You can learn it after or concurrently with C,
but even if you work exclusively with C++, you will be better off if
you understand the differences between C and C++.

Anyone who tells you Java is a better language is dreaming. Anyone who
tells you Perl or Modula-X is a better language is just giving you bad
advice. (Although there are places where Perl is perfectly adequate.)

Dennis Ritchie was recently quoted as saying that even though C is
rarely the best programming language for a given task, it is often
the second best.

> I looked at the Mozilla site and saw a lot of
> interesting things being blended (XML, CORBA, a new widget set), but
> mainly with C++ (as far as I understood).

Mozilla is written in C++, which makes sense for a large application.
XML is for doc. The other things you mention aren't languages.

> In addition, a big knock
> against Linux on the desktop is the relative primitiveness of the
> development tools.

This is completely false. Linux is so much superior that most Linux
programmers do not need (nor want) an IDE.

> MS has pretty IDE's for high-level languages. Your
> average Joe programmer can do a VB app fairly quickly,

What kind of app? VB is fine for hacking out a restrictive user
interface, e.g. to a database, the same sort of thing that one
would use QBF to do 20 years ago. OTOH, it is extremely difficult
to write a good, solid, flexible, extensible program in VB.

> and now Java is
> trying to unseat VB in that category. I don't mean to ask "hey, where
> are the jobs?", because I know the answer to that: database. But where
> is C going? Can you realistically base a career on it, and not have be
> highly specialized and move to Silicon Valley to find work? Actually, me
> and a few others at WSU want to know.

C is not going anywhere. It is the bedrock of almost all programming
done today, and that will continue long into the future. It's a sound
move to learn it, and learn it well. Once you learn C, anything else
that you need will be that much easier. (Especially C++.)

On the other hand, languages like Basic, Pascal, Cobol, and Fortran
tend to give you bad habits that are hard to unlearn.

I think that most applications programming will eventually move to C++
(pace Java), and that there will be a big skill gap between people who
design/implement C++ modules and people who use them. (Cf. MFC and
Visual C++ for an example of this.)

And there will be lots of boutique script languages for specialty niches
(e.g., PHP). You can spread these things out on a scale from your hard
core systems programming to applications to end-user programming, going
from the hard stuff to the easy stuff. My best career advice is to shoot
for the hardest stuff you can handle, then back off a bit if that gets
to be too much hassle. But whatever skills you do manage to learn will
just make the easy stuff that much easier.

 *  Tom Hull * thull@xxxxxxxxxxx *

-- This is the discussion@xxxxxxxxx list.  To unsubscribe,

[Prev in Thread] Current Thread [Next in Thread]