[Tutor] Question

Alan Gauld alan.gauld at btinternet.com
Sun Jun 20 16:19:45 CEST 2010


"Mark Lawrence" <breamoreboy at yahoo.co.uk> wrote
> ...I take issue with this "learn a language in five minutes" bit. 
> It took me five years to get to grips with plain old C.

C is non trivial but not hard (certainly compared to C++)
But 5 years is enough to do a lot more than "get to grips with"
a language, that's what I'd expect it to take to become fully
fluent, maybe even the office expert!

> Assume that the same applies to all other languages

No, the diffference is huge between languages. I learned both
awk and Logo in a week. Smalltalk took me three attempts and
I still struggle every time I go back to it after 24 years!  Same
with Lisp, I am still learning Lisp  despite having written production
code in it 15 years ago! (Fortunately I have 3 Lisp guru's, one of
whom was on the standards comittee, to whom I can turn for help!)

But C only took me about 6 months to become proficient(*).
COBOL about the same. Forth is easy to learn but difficult
to master.

(*)By which I mean good enough to write a control system
for a cable extrusion line in a factory and a data encryption
card for the original IBM PC, including intercepting BIOS
calls etc. A guru C programmer could find lots of faults in
my code but it worked and the clients paid money for
the results!

C++ took me about 2 years to feel comfortable and
about 5 years to become one of  the office gurus.
The biggest system I've ever been involved with was
primarily written in C++ - about 3 million lines of code.
It only took about 2 years away to lose that skill again!

> to make it simple, that means for me to get to grips with 30 
> languages takes 150 years.  I don't think I'll live to do that.

To me, "get to grips" means good enough to write effective
working code that can be used in professional production systems.
A professional programmer often has no choice but to learn a new
language and a new start will be lucky to get more than a
couple of months to get up to full speed. You will be expected
to be writing code within a couple of weeks, albeit with the
manual permanently by your side.

As I said earlier I've worked on single projects with over a
dozen different languages going at once, if we'd waited for
5 years for each language we'd still be studying yet! As it
was the total project time was only 3 years. And some of
those languages were bespoke creations for that project.

You don't need to be an expert in a language to be productive.
And learning new languages invariably improves your skills
in the ones you already know. That's why I've learned several
languages that I've never used in projects - but the concepts
they embodied were significant (Smalltalk is a good example.
A colleague was using it in 1986 and I was fascinated by
this new OOP paradigm so I started to use his environment
during lunches and so on and learn the basics, but I have
never use Smalltalk myself in a paid project - but I learned
a lot from it. Haskell is another in the same category)

Learning multiple languages is a way of improving your
skills in your existing languages. It makes you a better
programmer.

But, it only works once you understand the basics and for
that sticking to a single language is probably best.
And Python is an ideal starter.

Alan G. 




More information about the Tutor mailing list