[Tutor] help

alan.gauld@bt.com alan.gauld@bt.com
Thu, 17 Aug 2000 12:49:38 +0100

> old-timer (though new to Python), - forget this 'as many languages as
> possible' business. Firstly, learn one language at a time, 
> and secondly, you won't need to know very many. 

Hmm, I'm afraid I disagree with this.

Most of the bigger projects I've worked on(*) had more than 
3 languages within the single project. The most complex had 
at least 7 languages being used.

Also each language teaches you somethjing about programming. 
For example the Smalltalk view of OOP is very different to 
the C++/Java/Object Pascal view. And LISP does it differently again.

Similarly languages like Haskell and Prolog take a still 
different approach.

But all of these approaches can be used in vanilla C, say, once 
you are aware they exist! If you are stuck with only a few 
languages - especially if they are all imperative in nature 
you will be faced with the real danger of "If all you have 
is a hammer every problem looks like a nail" 

> It's better to know three or four well than 20
> badly. 

I do agree however that you should know 3 or four very well.
And knowing 20 badly, in the sense of trying to force every 
language to behave like the ones you know already is no good. 
But you can learn and use lots of languages at a less than 
expert level and still understand the underlying concepts 
that make them different. (eg the massive use of mixins in 

> Provided that they are the right three or four, that is!

Which is the difficult bit. How do you define 'rightness'?
Is FOCUS right? or COBOL? or C++?
Both are very effective languages for their particular domain
but would probably not help a web developer very much...
Or do you go with the marketability, in which case it might be:
VB, C++ and Java.
But I doubt you'd get any big insight or improvement in programming 
skill by learning those three!

Alan G.

By bigger I mean more than say, 100,000 lines of code.
Certainly every project of more than 1,000,000 LOC will use 
multiple languages, its almost impossible to avoid. Whether 
it be (COBOL, REXX, JCL, SQL) on MVS or (C++, Perl, Shell, SQL) 
on Unix or whatever.