Number of languages known [was Re: Python is readable] - somewhat OT

C

Chris Angelico

The typical developer knows three, maybe four languages
moderately well, if you include SQL and regexes as languages, and might
have a nodding acquaintance with one or two more.

I'm not entirely sure what you mean by "moderately well", nor
"languages", but I'm of the opinion that a good developer should be
able to learn a new language very efficiently. Do you count Python 2
and 3 as the same language? What about all the versions of the C
standard?

In any case, though, I agree that there's a lot of people
professionally writing code who would know about the 3-4 that you say.
I'm just not sure that they're any good at coding, even in those few
languages. All the best people I've ever known have had experience
with quite a lot of languages.

ChrisA
 
S

Steven D'Aprano

I'm not entirely sure what you mean by "moderately well",

I mean more than "poorly" but less than "very well".

Until somebody invents a universal, objective scale for rating relative
knowledge in a problem domain (in this case, knowledge of a programming
language), we're stuck with fuzzy quantities like "guru", "expert", "deep
and complete knowledge of the language and its idioms", all the way down
to "can write Hello World" and "never used or seen the language before".

Here's a joke version:

http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html


and here's a more serious version:

http://www.yacoset.com/Home/signs-that-you-re-a-bad-programmer

nor
"languages", but I'm of the opinion that a good developer should be able
to learn a new language very efficiently.

Should be, absolutely. Does, perhaps not. Some good developers spend
their entire life working in one language and have become expert on every
part of it. Some learn twenty different languages, and barely get beyond
"Hello World" in any of them.

Do you count Python 2 and 3 as the same language?
Absolutely.


What about all the versions of the C standard?

Probably. I'm not familiar with the C standard.

In any case, though, I agree that there's a lot of people professionally
writing code who would know about the 3-4 that you say. I'm just not
sure that they're any good at coding, even in those few languages. All
the best people I've ever known have had experience with quite a lot of
languages.

I dare say that experience with many languages is a good thing, but it's
not a prerequisite for mastery of a single language.

In any case, I'm not talking about the best developers. I'm talking about
the typical developer, who by definition is just average. They probably
know reasonably well one to three of the half dozen most popular
languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL,
and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk,
Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ...

Or even in most cases *heard* of them.
 
S

Steve Howell

I dare say that experience with many languages is a good thing, but it's
not a prerequisite for mastery of a single language.

In any case, I'm not talking about the best developers. I'm talking about
the typical developer, who by definition is just average. They probably
know reasonably well one to three of the half dozen most popular
languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL,
and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk,
Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ...

I love how you can rattle off 20 or so languages, just off the top of
your head, and not even mention Ruby. ;)

(Although Perl was close enough.)
 
S

Steve Howell

I'm not entirely sure what you mean by "moderately well", nor
"languages", but I'm of the opinion that a good developer should be
able to learn a new language very efficiently. Do you count Python 2
and 3 as the same language? What about all the versions of the C
standard?

Not only is it hard to define what we precisely mean when we say
"[knows] moderately well" or "[n number of] languages", but what in
the world are we talking about with respect to "the typical
developer"? How do we even begin to define that term?
 
D

Dennis Lee Bieber

I love how you can rattle off 20 or so languages, just off the top of
your head, and not even mention Ruby. ;)
Ruby -- a translucent to transparent reddish stone in the corundum
family... Extremely hard; poorer specimens grate and cut softer
materials, but sometimes can be found in polished and highly attractive
form.
 
C

Chris Angelico

I love how you can rattle off 20 or so languages, just off the top of
your head, and not even mention Ruby. ;)

If I were to rattle off a couple dozen languages, it probably wouldn't
include Ruby either. Never learned it, don't (as yet) know what its
advantage domain is. My list "runs somewhat thus": BASIC, 80x86
Assembly, C, C++, Java, REXX, Pascal, Pike, Perl, PHP, Javascript,
DeScribe Macro Language, Scheme, Python, ActionScript, DOS Batch, Lua,
COBOL, FORTRAN, Ada, Modula-2, LPC, Erlang, Haskell... and that's not
counting things like POV-Ray or LilyPond that aren't exactly
_programming_ languages, although in some cases you could shoehorn an
application into them. Granted, I do have some rather strange and
esoteric interests, and I'm sure that Ruby is far better known than
DeScribe Macro Language (!!), but I think first of those I've used,
and then of the most famous.

Sorry Ruby. No slight meant! :)

ChrisA
 
S

Steve Howell

I mean more than "poorly" but less than "very well".

Until somebody invents a universal, objective scale for rating relative
knowledge in a problem domain (in this case, knowledge of a programming
language), we're stuck with fuzzy quantities like "guru", "expert", "deep
and complete knowledge of the language and its idioms", all the way down
to "can write Hello World" and "never used or seen the language before".

Here's a joke version:

http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html

and here's a more serious version:

http://www.yacoset.com/Home/signs-that-you-re-a-bad-programmer


Should be, absolutely. Does, perhaps not. Some good developers spend
their entire life working in one language and have become expert on every
part of it. Some learn twenty different languages, and barely get beyond
"Hello World" in any of them.


Probably. I'm not familiar with the C standard.


I dare say that experience with many languages is a good thing, but it's
not a prerequisite for mastery of a single language.

I agree. It's certainly true for spoken languages. The only
programming language that I ever learned without experience in other
languages was BASIC (because only one language can be our first). I
believe I mastered BASIC, not that that is saying a whole lot.
In any case, I'm not talking about the best developers. I'm talking about
the typical developer, who by definition is just average. They probably
know reasonably well one to three of the half dozen most popular
languages (VB, Java, C, C+, Javascript, PHP, Perl?) plus regexes and SQL,
and are unlikely to know any of Prolog, Lisp, Haskell, Hypertalk,
Mercury, Cobra, Smalltalk, Ada, APL, Emerald, Inform, Forth, ...

VB, Java, C, C++, JS, PHP, and Perl are all 20th century languages
FWIW. PHP, Java, and JS all emerged circa 1995 (17 years ago); C, C+
+, and VB are even older. (And so is Python.)

A future version of Python itself, or some language largely inspired
by Python (CoffeeScript 3.0 maybe?), will eventually squeeze out Perl,
PHP, and JS in the popularity contests. At least I'm crossing my
fingers.

VB will die with no obvious successors.

C++ was never very distinct from C to begin with, and the two
languages will eventually converge, die off, or be supplanted.

In ten years we'll basically have only three 20th-century-ish
languages in the top ten: Python', C', and Java'. The rest of the top
ten most popular languages will be something truly 21st-century.
They'll be languages that either haven't been invented yet or
modernized derivatives of languages that we view as "fringe" today
(Lisp'/Haskell'/etc.).
 
S

Steve Howell

If I were to rattle off a couple dozen languages, it probably wouldn't
include Ruby either. Never learned it, don't (as yet) know what its
advantage domain is.
Hype?

My list "runs somewhat thus": BASIC, 80x86
Assembly, C, C++, Java, REXX, Pascal, Pike, Perl, PHP, Javascript,
DeScribe Macro Language, Scheme, Python, ActionScript, DOS Batch, Lua,
COBOL, FORTRAN, Ada, Modula-2, LPC, Erlang, Haskell... and that's not
counting things like POV-Ray or LilyPond that aren't exactly
_programming_ languages, although in some cases you could shoehorn an
application into them. Granted, I do have some rather strange and
esoteric interests, and I'm sure that Ruby is far better known than
DeScribe Macro Language (!!), but I think first of those I've used,
and then of the most famous.

Sorry Ruby. No slight meant! :)

If you're that adept at learning languages, then I recommend learning
Ruby just for kicks, but you're not missing *that* much, trust me.
I'd skip past Ruby and learn CoffeeScript.

Of the languages that are in the scripting family, you already know
REXX (supreme elegance for its time), Perl (I hate it now, but loved
it before Python), PHP (truly easy to learn, you can never take that
away from it), and Javascript (horrible syntax, awful platform, but at
least they have first-class functions).

You have the Assembly/C/C++/Java progression--definitely good stuff,
even if the ending to the movie was a bit of a letdown.

COBOL/Fortran/Ada gives you instance "old school" street cred.

Haskell/Erlang/Scheme means you can hang out with the cool grad school
kids in the CS/Math departments (no oxymoron intended).

I confess--I've never learned LilyPond, Modula-2, or LPC! I mean, of
course they're on my resume, just to get by HR screening, but that's
just between you and me...
 
C

Chris Angelico

If you're that adept at learning languages, then I recommend learning
Ruby just for kicks, but you're not missing *that* much, trust me.
I'd skip past Ruby and learn CoffeeScript.

Sure. When I have some spare time... lessee, I think I have two spare
minutes in the year 2015 that aren't allocated yet! Oops. There they
go.
Of the languages that are in the scripting family, you already know
REXX (supreme elegance for its time), Perl (I hate it now, but loved
it before Python), PHP (truly easy to learn, you can never take that
away from it), and Javascript (horrible syntax, awful platform, but at
least they have first-class functions).

You have the Assembly/C/C++/Java progression--definitely good stuff,
even if the ending to the movie was a bit of a letdown.

+1 on the description, heh.
COBOL/Fortran/Ada gives you instance "old school" street cred.

Haskell/Erlang/Scheme means you can hang out with the cool grad school
kids in the CS/Math departments (no oxymoron intended).

Ehh, the ones from COBOL on were because I ran out of languages that
I'm really familiar with, and enumerated a few famous ones. But the
rest, I do actually know, and that's why I thought of them.
I confess--I've never learned LilyPond, Modula-2, or LPC!  I mean, of
course they're on my resume, just to get by HR screening, but that's
just between you and me...

GNU LilyPond is a music publishing language (it's to music what TeX is
to English, kinda). Awesome language and system. I can show you a few
pieces I've done with Ly, it's beautiful music score from a very clean
input file. Modula-2 is a Pascal-derived language that I haven't
actually used, but it's cited as an influence in the development of
several others that I have used. LPC is Lars Somebody's C, originally
written as the basis for Lars Somebody's MUD or LPMUD, and was the
basis for Pike (with which I'm very familiar, as readers of this list
probably know).

Half the above languages aren't on my resume, mainly because I don't
really care about HR screening :)

ChrisA
 
P

Prasad, Ramit

I confess--I've never learned LilyPond, Modula-2, or LPC! I mean, of
course they're on my resume, just to get by HR screening, but that's
just between you and me...

You mean, you, him, this mailing list, and anyone that looks on the
archives...

Ramit


Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 Main Street | Houston, TX 77002
work phone: 713 - 216 - 5423

--
This email is confidential and subject to important disclaimers and
conditions including on offers forthe purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.
 
P

Prasad, Ramit

Logo. It's turtles all the way down.
I had forgotten all about that, I should add that to my resume!
I wonder what kind of job I could get writing primarily in Logo?

Ramit


Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 MainStreet | Houston, TX 77002
work phone: 713 - 216 - 5423

--

This email is confidential and subject to important disclaimersand
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,906
Latest member
SkinfixSkintag

Latest Threads

Top