[NTLUG:Discuss] Direction Recomendations

Christopher Browne cbbrowne at hex.net
Thu Jul 20 22:46:32 CDT 2000


On Thu, 20 Jul 2000 18:44:10 EST, the world broke into rejoicing as
Steve Baker <sjbaker1 at airmail.net>  said:
> Richard Cobbe wrote:
> 
> > Start with a high-level language.  My personal favorite is Scheme (see
> > http://www.rice.edu/CS/PLT/ for an LGPLed implementation that runs on
> > Linux), but there are any number of other choices: ML, perhaps Python,
> > perhaps Smalltalk, plenty of others.
> 
> This guy specifically said that he wants to learn so he can get a job.
> 
> For that, I don't think Scheme is a good choice.  There just isn't
> enough work out there for people using it.

It's a potent tool for learning Computer Science, but I'll go along
with the "not commonly advertised for" part.

Learning Scheme would be valuable as part of becoming _REALLY_ skilled
in programming, but it is not an immediate method for "getting a job." I
suspect it's more widely used in industry than, say, Standard ML, or
Haskell, but that's not saying too much.  I use Common Lisp at work to
do set-oriented analysis, but that's _very_ secondary to my work.
(And nobody else in the organization would have a _HOPE_ of supporting
the code; I'm the only one that it's useful to.  I do "magic" :-).)

> C, C++, Java - perhaps (ick) Perl and (even ickkier) Visual Basic
> are the most commercially useful languages I think.

Those are all good candidates for being considered "widely used in
industry."

> Since we are on a Linux list here, we won't go with Visual Basic.
> 
> I personally dislike Perl - but I think even it's advocates would
> agree that it's not a good first time language.

There are some that would disagree, but I'd agree with you on most
counts.  I'd consider Python to be a _better_ "first time language."

> C++ and Java are pretty similar in many ways.
> 
> Whether you learn C first and then C++/Java or vice-versa is a matter
> of opinion.
> 
> Some people claim that having learned the 'procedural style' of C makes
> it harder to learn C++ because procedural style first has to be 'unlearned'.
> 
> Well, I can somewhat agree with that.  I had a hard time unlearning C,
> and I was writing C programs in C++ (in effect) for YEARS because of
> that.
> 
> However, for a total beginner, you are first worrying about things
> like
> 
>    x = x + 1
> 
> ...being an assignment and not a math formula!
> 
> Pointers, the mere *concept* of a loop, if and subroutine.  Variables
> and arrays...all of those things have to be learned before we even
> *THINK* about object-oriented versus procedural style.
> 
> So, perhaps learning C first is a smaller step - and taking small steps
> is the right way to learn.

K&R C is a much simpler language than ANSI C, and if you progress from
"K&R" to ANSI, many of the features that get added are the things that
C++ introduced, which means it may be a natural step to move on to
C++ from there.

> > Also, I don't really know Smalltalk or Python well enough to be able to say
> > anything intelligent about them.
> 
> Python is a LOT like C++.  You can learn it in a day if you know C++.

Python is a quite nice language; sort of a "cleaner" alternative to Perl.

> Smalltalk is to little used - and again we come back to what you'd learn
> in order to get a *JOB*.

There are some quite lucrative Smalltalk niches, but getting into that
niche is the challenge.  It might be a better idea to look at Objective
C, which puts the (fairly nice) Smalltalk "syntax" on top of C, and
provides a kinder, gentler way of adding OO capabilities to C than C++
provided.  But that's still a very "nichey" system; there is not 
_WIDE_spread hiring of Objective C folk.

I think I'd commend Java fairly highly as an option.  It has many of
the weaknesses of the other descendents of typeless BCPL (parent of C)
and class-oriented Simula (step parent of C++), but has the merit that
it is a _fairly_ dynamic garbage collected language.  While it has
some significant demerits, that is true for virtually any language you
might choose to look at.
--
cbbrowne at acm.org - <http://www.hex.net/~cbbrowne/>
"Microsoft is sort of a mixture between the Borg and the
Ferengi. Combine the Borg marketing with Ferengi networking..."
-- Andre Beck in dcouln




More information about the Discuss mailing list