[comp.lang.misc] Languages in the the REAL world -- Listing

galvinp@lafcol.UUCP (Galvin Paul ) (11/03/88)

I would like to thank the many many people who took time out to reply to
my posting regarding the use of languages out in the REAL world. The
following is all the information I received in capsulated form.


There are three languages that seem to dominate the computing world:

     Cobol - used in nearly all "data processing" applications.
             Anything that has to do with the business world seems to have Cobol
             involved in it in some way, shape, or form.

     FORTRAN - this is fairly obvious.  Used for scientific
               applications, though there were a number of replies
               indicating that this would change in the future. 

     C - used for everything else.  Especially, "systems programming."


Various other languages were mentioned as well (actually, many).  LISP
and its derivatives and look alikes are used exclusively for AI
programming.  Pascal is used to teach structured programming. 
Assembly language is used for optimizing code.  ADA is being pushed buy
DoD.  Modula II fits in somewhere, but not all that well.

By far, the most important point made, was that it is more valuable to
learn data structures than it is to learn a language.  Apparently,
anyone can learn a language in a week or less.  Equally important, is
the ability to communicate ideas well, and to be able to work well with
others in large projects.

Thank you all for the replies sent to me.

Paul J. Galvin
(lafcol!galvinp)
 

bpendlet@esunix.UUCP (Bob Pendleton) (11/07/88)

From article <325@lafcol.UUCP>, by galvinp@lafcol.UUCP (Galvin Paul ):

> By far, the most important point made, was that it is more valuable to
> learn data structures than it is to learn a language.  Apparently,
> anyone can learn a language in a week or less.  



> Equally important, is
> the ability to communicate ideas well, and to be able to work well with
> others in large projects.


This sentence should be inscribed in gold and hung above the entrance
to every computer science department in the world.

			Bob P.

-- 
              Bob Pendleton, speaking only for myself.
An average hammer is better for driving nails than a superior wrench.
When your only tool is a hammer, everything starts looking like a nail.
UUCP Address:  decwrl!esunix!bpendlet or utah-cs!esunix!bpendlet

daryl@hpcllla.HP.COM (Daryl Odnert) (11/11/88)

> By far, the most important point made, was that it is more valuable to
> learn data structures than it is to learn a language.  Apparently,
> anyone can learn a language in a week or less.  Equally important, is
> the ability to communicate ideas well, and to be able to work well with
> others in large projects.
> 
> Paul J. Galvin
> (lafcol!galvinp)
 
----------
Let me add another two cents worth for all undergrads:

Please, take advantage of the opportunites available during your college
education and take some non-mickey-mouse classes in areas outside your major.
(That does not include taking math classes if you're a computer science major!)
Computer nerds come a dime-a-dozen.  Talented, resourceful, and
well-rounded engineers are hard to find... but are exactly what the best
companies to work at are looking for.

Daryl Odnert
daryl%hpcllla@hplabs.hp.com
Hewlett Packard
Information Software Division

steve@ragman (Steve Stevenson) (11/11/88)

From article <1290001@hpcllla.HP.COM>, by daryl@hpcllla.HP.COM (Daryl Odnert):

> Please, take advantage of the opportunites available during your college
> education outside your major.... Computer nerds come a dime-a-dozen.
> Talented, resourceful, and well-rounded engineers [ and scientists ]
> are hard to find... but are exactly what the best companies to work
> at are looking for.


As a professor and long time industry habitant, let me add a hearty AMEN
to the above comments.  The biggest piece of feedback we get from our
graduates is ``you didn't tell us that we'd have to do something besides
program.''

A personal anecdote --- When I was with Bell Labs, they began in late
1979 or so to NOT hire undergraduate computer science students.  This
was because those folks could not interact with the rest of the Labs.
That policy is still in effect, I think.

shurr@cbnews.ATT.COM (Larry A. Shurr) (11/15/88)

In article <1290001@hpcllla.HP.COM> daryl@hpcllla.HP.COM (Daryl Odnert) writes:
>Please, take advantage of the opportunites available during your college
>education and take some non-mickey-mouse classes in areas outside your major.
>(That does not include taking math classes if you're a computer science major!)
>Computer nerds come a dime-a-dozen.  Talented, resourceful, and
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 They're on sale two-for-one around here.

>well-rounded engineers are hard to find... but are exactly what the best
>companies to work at are looking for.

Well said Daryl!  And this should include dropping that give-a-sh*t dodge
you took for your English composition requirement and doing what it takes
to learn how to use that language as well.  The field is full of inartic-
ulate bozos who think that they should get a senior staff position just
because they can bang two bits together.

(My apologies to those of you who have made an effort to learn all of the
skills it takes to be a good engineer, it's just that the bad ones are
SOOOOOOooooo bad!)

regards, Larry
-- 
Signed: Larry A. Shurr (att!cbnews!shurr or osu-cis!apr!las)
Clever signature, Wonderful wit, Outdo the others, Be a big hit! - Burma Shave
(With apologies to the real thing.  Above represents my views only.)

scottg@hpiacla.HP.COM (Scott Gulland) (11/17/88)

/ hpiacla:comp.lang.misc / stachour@umn-cs.CS.UMN.EDU (Paul Stachour) /  7:26 pm  Nov 12, 1988 /


>   To the languages comment:
>>>> anyone can learn a language in a week or less.  
> 
>   NO-WAY!  How long did it take you to learn English? Or German?
> Or French?  Yes, you can learn enough to get along as a tourist
> in a week, but not enough to spend a lifetime in a culture.

As everyone knows, English, German, etc. is far more complex by at
LEAST a factor of 100 then a programming language.  So the statement
above taken in the context of programming languages is totally 
meaningless.

>   I can learn enough "CMS-2" (just to cite one quite-used, but
> obsure to most) in a week to enable me to read (and even write!)
> in it.  But it will take me (I have a Ph.D. in computer science,
> and 25 years of programming experience) more than a year to be
> good-and-fluent [See Boehm's book on software engineering estimation
> for some language-learning factors and effect on total project-costs
> You may be very amazed].  We do ourselves and our profession
> a disservice when we say that one can "learn a language"
> in a week.   ...Paul

Each of us have unique gifts which allow us to excel in some areas
while in others ... well we don't do quite so well.  It may be quite
true that you are unable to become fluent in a language in just two
weeks, this could very well be the norm.  I'm sure there are other
areas you excel in.  However, I have had to write large modules (5K+
lines of code) in four different languages over the last three years.
It took me at most 2 weeks to become fluent in each language and
usually only one week.  I do mean fluent here, not just competent in
the language.  There are many other people I know who also have
this ability.  

So although a week may be a little short, a competent software
engineer should be able to become good-and-fluent in ANY new language
in less than 6 weeks with most learned in 1-3 weeks.

kwalker@arizona.edu (Kenneth Walker) (11/19/88)

In article <4950001@hpiacla.HP.COM>, scottg@hpiacla.HP.COM (Scott Gulland) writes:
> 
> So although a week may be a little short, a competent software
> engineer should be able to become good-and-fluent in ANY new language
> in less than 6 weeks with most learned in 1-3 weeks.

Not ANY new language. A person can be a competent software engineer and
only know languages like Fortran, Pascal, and C. A person who has programmed
only in such languages for several years may find it very difficult to
master languages like PROLOG and Icon, that have fundamentally different
underlying paradyms. While it is true that such a person can quickly learn
to use Icon because it allows them to almost ignore the underlying
goal-directed evaluation, that is not being "good-and-fluent" in the
language. PROLOG, however, **requires** thinking about problems in a very
different manner.

stachour@umn-cs.CS.UMN.EDU (Paul Stachour) (11/21/88)

  ...
>As everyone knows, English, German, etc. is far more complex by at
>LEAST a factor of 100 then a programming language.  So the statement
>above taken in the context of programming languages is totally 
>meaningless.
One has to start somewhere in an analogy.  I know that natural
languages are definitely more than an order-of-magniture 
more complex than programming languages, and will accept your
100+ times.  But I can't accept that the analogy is meaningless.
  ...

>Each of us have unique gifts which allow us to excel in some areas
>while in others ... well we don't do quite so well.  It may be quite
>true that you are unable to become fluent in a language in just two
>weeks, this could very well be the norm.  I'm sure there are other
>areas you excel in.  However, I have had to write large modules (5K+
>lines of code) in four different languages over the last three years.

I don't call 5k+ lines of code "large modules".  In fact, I suspect
that they are not modules at all, but incorrectly modularized
subsystems.  A 5K+ lines "module", if it really is a module,
is very interesting.  Grady Booch has over 500 components in
his set, and none of them is anywhere near that size.
Yes, I can write a 5000+ lines-of-code, but that hardly
tests fluency.  How big are full-length novels in natural languages?
And even they use a very small subset of a natural language.

>It took me at most 2 weeks to become fluent in each language and
>usually only one week.  I do mean fluent here, not just competent in
>the language.  There are many other people I know who also have
>this ability.  
   Who considers you fluent?  You or a "native speaker"?
   I know hundreds of people who consider themselves fluent in "C".
Yet, when I ask them questions like:  "What method do you use in
C when writing modules to avoid the name-clash problem?" they
stare.  And it usually takes 20 minutes to explain the problem.
And when I ask questions such as "Under what circumstances you
use '#define' versus 'typedef ENUM'?" they don't know.  And when
I ask them "Does your dialect of C support bit-fields, and if so
in what way?" they've never looked it up.  I could go on and on
with my questions, but I have discovered that most people who think
they are fluent in a language aren't.  They are like the people who
programmed in FORTRAN for 10+years, and got suprised by the way
in which the values of their variables no longer persisted between
invocations of a subprogram on a different machine.  They were even
more suprised when I pointed out that the FORTRAN 66 standard didn't
even mention the semantics question, and that their FORTRAN vendor
was perfectly legal.


>So although a week may be a little short, a competent software
>engineer should be able to become good-and-fluent in ANY new language
>in less than 6 weeks with most learned in 1-3 weeks.
   You may indeed be the programming-language anologue of Charles 
Berlitz, who can "learn a new language in two weeks". IF you are,
I'd like to have you working where I do.  But I do suspect that
you are "merely" one who learns the initial portion of languages fast.
I, for one, will accept the studies of Barry Boehm, as shown in
his Software Engineering Economics Book.  It's the best set of
hard-data that I know.

   But why should I judge?  Why don't you post what the languages
were that you learned in two weeks?  Along with that, post what
was the "hardest semantic" of that language for you to learn.

   I still have trouble in French not confusing "ecouter" with
"entendre". (I don't have a French book here, and may have spelled
them incorrectly.)  They mean "to hear" and "to listen"; and I 
somtimes confuse the two.  And I also have cross-language problems,
sometimes saying "gare" (French for railroad-station) when I mean
Bahnhoff (German for railroad-station).  And, in programming languages,
I sometimes write "\=" when I mean "/=" for not-equals (or was it
"!=" or "^=" or "~=").  Someone totally fluent in a language does not make
that kind of mistakes, but someone who is only partially fluent does.

  In conclusion, there is a lot more to a language than just learning
the syntax:  There's the subtle semantics, the language interactions,
and the fact that what "always works" in C doesn't all of a sudden
when you go to another world (say VAX-VMS) and discover that one of
the ways-of-working that you always implictly thought was part of the
language was "just a subroutine convention" and it doesn't work there,
just as natural language changes in subtle ways between British-English
and US-English and Australian-English and ...

scottg@hpiacla.HP.COM (Scott Gulland) (11/22/88)

/ hpiacla:comp.lang.misc / kwalker@arizona.edu (Kenneth Walker) /  4:30 pm  Nov 18, 1988 /
>> 
>> So although a week may be a little short, a competent software
>> engineer should be able to become good-and-fluent in ANY new language
>> in less than 6 weeks with most learned in 1-3 weeks.
>
> Not ANY new language. A person can be a competent software engineer and
> only know languages like Fortran, Pascal, and C. A person who has programmed
> only in such languages for several years may find it very difficult to
> master languages like PROLOG and Icon, that have fundamentally different
> underlying paradyms. While it is true that such a person can quickly learn
> to use Icon because it allows them to almost ignore the underlying
> goal-directed evaluation, that is not being "good-and-fluent" in the
> language. PROLOG, however, **requires** thinking about problems in a very
> different manner.

With languages which have substantially different underlying paradyms such
as PROLOG, I would expect a competent engineer to take torwards the longer
side of the estimate to learn the language (eg 6 weeks).  Remember the 
professional programmer has 40hrs/week to concentrate on comming up to 
speed on a new lanuguage.

sjs@jcricket.ctt.bellcore.com (Stan Switzer) (11/23/88)

In article <4950002@hpiacla.HP.COM> scottg@hpiacla.HP.COM (Scott Gulland) writes:
> With languages which have substantially different underlying paradyms such
> as PROLOG, I would expect a competent engineer to take torwards the longer
> side of the estimate to learn the language (eg 6 weeks).  Remember the 
> professional programmer has 40hrs/week to concentrate on comming up to 
> speed on a new lanuguage.

Only hermits get to devote full time to a single task.  Unfortunately,
in the real world there are other demands on one's time.  You have to
make an extra effort to invest in yourself.

However, I generally agree with the sentiment that a competent
engineer should be expected to learn (and become proficient in) new
tools when necessary.  One with a _professional_ attitude will learn
new tools simply in order to stay current in the field, not just when
needed.

Stan Switzer  sjs@ctt.bellcore.com

scottg@hpiacla.HP.COM (Scott Gulland) (11/23/88)

/ hpiacla:comp.lang.misc / stachour@umn-cs.CS.UMN.EDU (Paul Stachour) /  2:58 pm  Nov 20, 1988 /


>>Each of us have unique gifts which allow us to excel in some areas
>>while in others ... well we don't do quite so well.  It may be quite
>>true that you are unable to become fluent in a language in just two
>>weeks, this could very well be the norm.  I'm sure there are other
>>areas you excel in.  However, I have had to write large modules (5K+
>>lines of code) in four different languages over the last three years.
>
>I don't call 5k+ lines of code "large modules". 

Note that I said 5K '+' lines of code.  5K is the lower limit.  Many
of these modules are much larger.

>In fact, I suspect
>that they are not modules at all, but incorrectly modularized
>subsystems.  A 5K+ lines "module", if it really is a module,
>is very interesting.  Grady Booch has over 500 components in
>his set, and none of them is anywhere near that size.

The term module is simply referring to code which provides a solution
to some specific task.  This task can be arbitrarily complex.  The term
module does not imply any structure and is definitely not a single peice of
code 5K lines in length.  It may consist of any number of component peices.
Subsystem could also be an equivalent term for it.

>Yes, I can write a 5000+ lines-of-code, but that hardly
>tests fluency.  How big are full-length novels in natural languages?
>And even they use a very small subset of a natural language.

I agree.  It is the comprehension the the language which counts.
Its knowing how to use the all of the features of a language correctly
even though any given project may use only a subset.  This I have been
able to do.

>>It took me at most 2 weeks to become fluent in each language and
>>usually only one week.  I do mean fluent here, not just competent in
>>the language.  There are many other people I know who also have
>>this ability.  
>
>   Who considers you fluent?  You or a "native speaker"?

Why a "native speaker" of course.  I thought I made that clear.


>   I know hundreds of people who consider themselves fluent in "C".
>Yet, when I ask them questions like:  "What method do you use in
>C when writing modules to avoid the name-clash problem?" they
>stare.  And it usually takes 20 minutes to explain the problem.
>And when I ask questions such as "Under what circumstances you
>use '#define' versus 'typedef ENUM'?" they don't know.  And when
>I ask them "Does your dialect of C support bit-fields, and if so
>in what way?" they've never looked it up.  I could go on and on
>with my questions, but I have discovered that most people who think
>they are fluent in a language aren't.  They are like the people who
>programmed in FORTRAN for 10+years, and got suprised by the way
>in which the values of their variables no longer persisted between
>invocations of a subprogram on a different machine.  They were even
>more suprised when I pointed out that the FORTRAN 66 standard didn't
>even mention the semantics question, and that their FORTRAN vendor
>was perfectly legal.

I'm glad that none of the members in my team nor myself fall into
this catagory.

>Berlitz, who can "learn a new language in two weeks". IF you are,
>I'd like to have you working where I do.  But I do suspect that
>you are "merely" one who learns the initial portion of languages fast.

Your suspicions are wrong again.

>   I still have trouble in French not confusing "ecouter" with
>"entendre". (I don't have a French book here, and may have spelled
>them incorrectly.)  They mean "to hear" and "to listen"; and I 
>somtimes confuse the two.  And I also have cross-language problems,
>sometimes saying "gare" (French for railroad-station) when I mean
>Bahnhoff (German for railroad-station).  And, in programming languages,
>I sometimes write "\=" when I mean "/=" for not-equals (or was it
>"!=" or "^=" or "~=").  Someone totally fluent in a language does not make
>that kind of mistakes, but someone who is only partially fluent does.

You know, I make the same kinds of mistakes.  Even in English, my native
language.  I frequently mis-spell words and my punctuation stinks.  It seems
by your definition of fluent that less than 1% of the American public would
be considered fluent in English.  

>  In conclusion, there is a lot more to a language than just learning
>the syntax:  There's the subtle semantics, the language interactions,
>and the fact that what "always works" in C doesn't all of a sudden
>when you go to another world (say VAX-VMS) and discover that one of
>the ways-of-working that you always implictly thought was part of the
>language was "just a subroutine convention" and it doesn't work there,
>just as natural language changes in subtle ways between British-English
>and US-English and Australian-English and ...

Agreed.  That's why I do my homework whenever I move to a new architecture.
I learn those differences first thing.