Linked by Eugenia Loli on Fri 15th Sep 2006 22:48 UTC
General Development By picking the brains of Web developers and IT recruiters, eWEEK selected 10 programming languages that are a bonus for developers to add to their resumes. Even better, they're great jumping-off points, with loads of job opportunities for younger recruits.
Order by: Score:
You have to be kidding me
by areimann on Fri 15th Sep 2006 23:04 UTC
areimann
Member since:
2006-06-12

This is the title of an article? You might as well write an article called "10 Ph.D.'s You Should Have Today," or "10 Companies You Should be the CEO of." (I know, I shouldn't end a sentence with a preposition)

Sorry...I just think it's a sorry idea for an article, or at least a sorry title. The article should be titled, "10 Programming Languages that Could Push Your Career to the Next Level," or something like that.

Edited 2006-09-15 23:06

Reply Score: 5

RE: You have to be kidding me
by gnemmi on Fri 15th Sep 2006 23:23 UTC in reply to "You have to be kidding me"
gnemmi Member since:
2006-08-17

"10 Ph.D.'s You Should Have Today," or "10 Companies You Should be the CEO of."

ROFL!
My god .. you got me on laughing myself to tears !

Reply Score: 3

RE[2]: You have to be kidding me
by areimann on Fri 15th Sep 2006 23:40 UTC in reply to "RE: You have to be kidding me"
areimann Member since:
2006-06-12

"10 Ph.D.'s You Should Have Today," or "10 Companies You Should be the CEO of."

ROFL!

My god .. you got me on laughing myself to tears !


I'm glad I could make you laugh. Did this person must have having a writers block the day the wrote it.

Reply Score: 2

RE: You have to be kidding me
by Shakey on Fri 15th Sep 2006 23:56 UTC in reply to "You have to be kidding me"
Shakey Member since:
2005-10-11

You know...I was thinking the same thing. LOL!

I was like..."Yeah, I'll jump right on that. Thanks for the tip!"

If only it was that easy...

LOL

Reply Score: 1

RE: You have to be kidding me
by rayiner on Sat 16th Sep 2006 00:32 UTC in reply to "You have to be kidding me"
rayiner Member since:
2005-07-06

A Ph.D isn't something you can earn in a week. A programming language is something you can learn in a week. I remember learning TCL while preparing to give a tutorial on it ;)

That said, this article is more like "5 languages you should learn right now". You've got {C# Java}, {Python Ruby}, {Javascript PHP}, Perl, and C. Once you know Java or C#, the other is trivial. The languages inside each set of brackets behave pretty much the same way, differing only slightly in syntax and APIs.

Reply Score: 1

RE[2]: You have to be kidding me
by ebasconp on Sat 16th Sep 2006 00:46 UTC in reply to "RE: You have to be kidding me"
ebasconp Member since:
2006-05-09

"A programming language is something you can learn in a week"

I actually learned C# in two days (having a good Java base), but doing good things and do them well in certain language, takes a lot of time; months, maybe years. I just have read my first applications written in C# and they are soo crappy....

Reply Score: 1

RE[2]: You have to be kidding me
by Zenja on Sat 16th Sep 2006 01:42 UTC in reply to "RE: You have to be kidding me"
Zenja Member since:
2005-07-06

A programming language is something you can learn in a week.

The correct statement is that you can learn the syntax in a week, but it takes years to master how to use the language. Then add years for every API you interface with (ie. just because you are a guru in Win32 API, it means jack shit if you move to Carbon). Add a decade before you become a master a handfull of API's. A decade per handful, and there are thousands of API's for a single language out there.

It is not uncommon to find C level kernel/driver guru's who do not know something simple like HTML. People who have spent years mastering HTML, yet do not know Java etc etc, you get my drift.

This article is a waste of time. It's like saying "10 languages you should speak". Yeah, right.

Reply Score: 5

RE[3]: You have to be kidding me
by rayiner on Sat 16th Sep 2006 03:42 UTC in reply to "RE[2]: You have to be kidding me"
rayiner Member since:
2005-07-06

Most of the languages listed do not really differ in semantics enough to require learning that much more than the syntax. Skills transfer quite readily between similar languages. The same is true of APIs. Win32 and Carbon, for example, share a great number of similarities, to the extent that if you're a Win32 guru, you can probably program Carbon quite efficiently within a week or two.

In any case, it doesn't make sense from my point of view to spend all that much time mastering APIs. APIs are tremendously fluid, and if you spend years learning an API, the next big thing will come out by the time you're done. Given the limited time a programmer has available for learning, that time is almost always better spent mastering programming itself, instead of learning specific tools. Someone who has mastered network theory can learn what (usually small amount) of BSD sockets he needs to program a particular network app as he needs it. Meanwhile, a person who has spent an inordinate amount of time mastering the sockets API will probably never have to put all that knowledge to use at once, and will be hopeless when it comes time to actually design and implement complex networking algorithms.

Reply Score: 2

Get a Life Member since:
2006-01-01

The world is full of half-assed crap made by half-assed people that learn things half-assed and then spread their half-assed understandings to others. This "learn a programming language in a week" thing is really just an example of this. There is more conceptual effort involved in learning initial concepts than learning the particulars of various implementations (so learning Java from scratch might be considerably harder than the transition to C# which is mostly similar), but a superficial understanding of anything is just that and results in errors and lost productivity. It makes considerable sense to obtain a level of expertise in the APIs and languages that you will actually be using. It makes sense to obtain a level of expertise in whatever future APIs and languages that you will be using. This is because APIs do not change anywhere near as much as is implied by you here, and because you will be tasked with writing software that uses these APIs and your productivity is your task master's productivity. You will find the time to learn what you are doing or your software will suck hard. I also like how you've naturally associated expertise with APIs with not having any time to have gone to college and obtained theoretical appreciations for subjects. Raise your hand if you studied computer networks in class as an undergraduate.

Honestly attending a tutorial session by you when you're just reading someone else's tutorial is pretty useless. I could eliminate you and read the documentation myself--in the end I would learn more, because I am no longer limited by your understanding of the material. That is why InformIT and all of those Sams books are so utterly useless: you're obtaining the most basic, superficial information that can possibly be communicated to you by someone that probably only has half of an idea what he's even talking about to begin with and it shows in the work.

Reply Score: 5

RE[5]: You have to be kidding me
by rayiner on Sat 16th Sep 2006 06:07 UTC in reply to "RE[4]: You have to be kidding me"
rayiner Member since:
2005-07-06

This "learn a programming language in a week" thing is really just an example of this... but a superficial understanding of anything is just that and results in errors and lost productivity.

The effort required to learn a language is the efford required to map from universal concepts of programming, to specific concepts within a language. Many commonly-used languages are so similar, that there is not more than a week worths of new content for those who know a similar language to begin with.

I assert that a Java programmer can program productively and efficiently in C# (and vice versa) after not more than a weeks worth of learning. There is simply not enough of a semantic barrier between the two languages to require a greater period of adaptation than that.

It makes considerable sense to obtain a level of expertise in the APIs and languages that you will actually be using. It makes sense to obtain a level of expertise in whatever future APIs and languages that you will be using.

Sure, if you're going to spend five years doing a project in C++, it makes sense to learn C++ to a high level of expertise. However, that's not what this article is talking about. It's talking about learning languages for the sake of putting things on your resume. It doesn't make sense mastering all these languages just in the hopes you may get a job using one of them.

This is because APIs do not change anywhere near as much as is implied by you here, and because you will be tasked with writing software that uses these APIs and your productivity is your task master's productivity.

Please. Look at the APIs listed in the article. Ruby on Rails. AJAX? Do you think these will still be in vogue four or five years from now? Microsoft ships a new API every few years. Just in the last decade and change, we've gone through MFC, ATL, WTL, iterations of .NET, and now WinFX. There is no point in intensely studying each of these APIs, just in the hopes that putting them on your resume will land you a job from a buzzword-infatuated PHB.

I also like how you've naturally associated expertise with APIs with not having any time to have gone to college and obtained theoretical appreciations for subjects.

I didn't say anything about college. What I'm talking about is good old opportunity cost. Any time you spend learning one thing is time you could've spent learning something else. My point is that you're a more productive asset if you spend months studying the theory, instead of spending that same time studying the nuances of the APIs.

Raise your hand if you studied computer networks in class as an undergraduate.

Actually, I write network code only because I know the API. I've never taken a network theory course in my life. However, I'm completely aware of the fact that finding a guy who knows BSD sockets is trivial, while finding a guy who can write a network formation algorithm that converges quickly is not. Moreover, I realize that the network theory PHD can easily learn enough BSD sockets to implement his algorithm, while it'd take me a long time to learn enough network theory to design the same algorithm.

Honestly attending a tutorial session by you when you're just reading someone else's tutorial is pretty useless.

You're assuming that both parties have an equal level of experience. A person with more experience gains more knowledge from the same tutorial, because he is able to connect it with his general knowledge of programming. The content of the tutorial consists of that augmented understanding of the material, not just the bare understanding a person with no experience would glean.

In practice, the level of expertise necessary is dependent on the nature of the tutorial. A decent programmer who'd never used Matlab could easily come in and TA a "Intro to Computing in Matlab" course with little study. In fact, that's precisely what happens in some cases, as Matlab classes are often administered by the CS department for engineering majors, but CS majors aren't required to take those classes.

Reply Score: 4

Get a Life Member since:
2006-01-01

Please. Look at the APIs listed in the article. Ruby on Rails. AJAX? Do you think these will still be in vogue four or five years from now?

Rails might be quite relevant to Rails developers in five years, but as far as I'm concerned Rails doesn't exist. AJAX isn't an API. Determining the fashion of web frameworks is a different matter.

Microsoft ships a new API every few years. Just in the last decade and change, we've gone through MFC, ATL, WTL, iterations of .NET, and now WinFX.

Prior to the push for .NET the largest change in the Windows API was the development of Win32 like 12 years ago. MFC is mostly wrapper classes around the Win16 and later Win32 APIs. The WTL is an unsupported template library that wraps a few of the same Win32 APIs that MFC does without providing the same document interface, serialization, and so forth. The domain of the ATL is entirely different. Microsoft adapts its APIs incrementally regularly. That is not some wild upheaval. In these cases you are essentially contending with the Win32 API. You see more upheaval in the transition from DDE -> OLE -> COM. The NET 3.0 push will be the real next big change, with so much of the current .NET framework being interfaces for currently extant Windows APIs.

There is no point in intensely studying each of these APIs, just in the hopes that putting them on your resume will land you a job from a buzzword-infatuated PHB.

You study them because having expertise is valuable. Anyone that does anything poorly so as to tantalize a HR drone is a fool.

My point is that you're a more productive asset if you spend months studying the theory, instead of spending that same time studying the nuances of the APIs.

This is hardly ever the case, since studying the theory outside of any basic requirements will have limited application to an employer in practice. Having the prerequisite theoretical understanding to obtain expertise in the framework will benefit more from experience using the framework than continued theoretical study for the purposes of producing usable code. It is not an either-or choice, but someone that is only steeped in theory will quickly earn the derision of his coworkers when they cannot do anything of use. The point is to learn both, because that is what is necessary to construct software that isn't garbage.

You're assuming that both parties have an equal level of experience

No, I'm assuming that anyone that professes to educate me on a topic who has less than or equal to seven days of casual experience with it is more useless to me than the documentation. I will invariably ask you questions that you do not know the answer to, and you will tell me things that are incorrect. I can avoid both problems by eliminating you from the equation. Anything that you can teach me with that experience is of marginal value, like an InformIT except from a Sams book.

Reply Score: 3

RE[7]: You have to be kidding me
by rayiner on Sat 16th Sep 2006 17:27 UTC in reply to "RE[6]: You have to be kidding me"
rayiner Member since:
2005-07-06

Rails might be quite relevant to Rails developers in five years, but as far as I'm concerned Rails doesn't exist. AJAX isn't an API. Determining the fashion of web frameworks is a different matter.

Ah, so fashionable web frameworks are a different matter than fashionable APIs? So where does Java Beans, J2EE, etc, fit into all this? Beans were huge a few years ago, and you barely hear about them anymore.

MFC is mostly wrapper classes around the Win16 and later Win32 APIs.

That's an implementation detail. From a programmer's standpoint, MFC is a completely different API. And MFC experience is something PHBs used to ask for.

The WTL is an unsupported template library that wraps a few of the same Win32 APIs that MFC does without providing the same document interface, serialization, and so forth.

Again, implementation detail. WTL is a completely different API from Win32 or MFC. Each of the above APIs was created based on what was fashionable at the time. Win32 was created wen C was big, MFC was created when classic C++ was big, WTL was created to harness the new template-based C++, etc. Many of these are wrappers, but the interface provided to the programmer is very different, and just knowing Win32 isn't going to help you maintain a big MFC-based codebase.

This is hardly ever the case, since studying the theory outside of any basic requirements will have limited application to an employer in practice.

It depends on the job in question, but its a general consideration too. Most programmers I know, including myself much of the time, create ad-hoc solutions to problems. The very best programmers I know use theory to create closed-form solutions to problems, at least for the most important algorithms. The latter is far preferable, and its a skill that only comes from a good understanding of the theory.

Let me give you an example of what I mean. If you ask your average programmer to write a control loop for a thermostat, he'll likely write a little loop that turns on the AC when the temp is over the set-point, and turns on the heater when its under. If he's clever, he might realize that this algorithm is unstable, and include a dead-zone feature. A real engineer would approach it completely differently. He'd write out the differential equations involved, then use control theory to create a PID controller, choosing the proper gains based on the response characteristics he desires. He'd not only be able to tell you whether the algorithm is stable, but its frequency response, etc. This might not matter for a house thermostat, but it definitely does for something controlling a chemical reaction. Heck, it even matters for brewing coffee:

http://www.murphyslawonline.com/silvia/

No, I'm assuming that anyone that professes to educate me on a topic who has less than or equal to seven days of casual experience with it is more useless to me than the documentation.

We're not talking about you ;) Back to my Matlab example, most engineering students, when you throw the Matlab manual at them, won't know what to do with it. Descriptions like "this is how Matlab does a loop" are lost of them, because they don't know what a loop is. That's why even someone who has a basic knowledge of programming can digest the material and present it in a much more understandable manner.

Reply Score: 2

RE[2]: You have to be kidding me
by areimann on Sat 16th Sep 2006 01:29 UTC in reply to "You have to be kidding me"
areimann Member since:
2006-06-12

Yes...I have friends that can pick up a language very quickly... I am not that type. It took me forever to pick up PHP, and now trying to learn Ruby.

I just think it is funny that the article says "Right Now." As if you should start learning all 10 at once.

Reply Score: 1

Get a Life Member since:
2006-01-01

Picking up programming languages is usually pretty easy when you're dealing with similar conceptual models to languages that you already know. Learning them in a week is a gross overestimation of one's abilities or a testament to how much of that week is obviously being spent to learning the idiosyncracies and variations from that which you know. Especially with absurdly complicated languages like C++, anyone that says that they've learned the language in a week should prepare themselves for some serious quizzing by me. I know very many programming languages, and not one of them did I obtain any meaningful expertise in within one week's time. Recognizing similar constructs and picking up syntax is trivial, but actually knowing a language well is usually a bit more involved. It probably shouldn't take that long, though, unless it's one of those ridiculously complicated languages with so many corner cases you question the existence of justice in the world.

Reply Score: 4

RE: You have to be kidding me
by wyth on Sun 17th Sep 2006 05:24 UTC in reply to "You have to be kidding me"
wyth Member since:
2005-12-28

As of a few years back, it's now okay to end a sentence with a preposition, according to the Oxford English Dictionary. The preposition thing was based on Latin grammar, and modern English only borrows elements from Latin; a lot of its grammar still derives from Anglo-Saxon (like the little connector words), which has more in common with Icelandic than with Latin.

You can be the CEO of anything you want to be the CEO of.

Reply Score: 2

...
by Mitarai on Fri 15th Sep 2006 23:14 UTC
Mitarai
Member since:
2005-07-28

No Object Pascal?
No C++?

bad article.

Reply Score: 5

RE: ...
by abraxas on Fri 15th Sep 2006 23:22 UTC in reply to "..."
abraxas Member since:
2005-07-07

No Object Pascal?

I don't see many job opportunities for Object Pascal. Most of the listings I see are for exactly the languages listed in the article.

No C++?

That is a good one to know but I don't think it is going to get any more popular at this point. There are a ton of better object oriented languages out there that don't have all the problems that C++ has today. I don't see many people starting projects with C++ anymore, mostly just maintenance.

Reply Score: 2

RE[2]: ...
by Mitarai on Fri 15th Sep 2006 23:24 UTC in reply to "RE: ..."
Mitarai Member since:
2005-07-28

Well im sure Qt/KDE developers won't aggree with you.

and btw, I make a living making programs with Delphi aka Object Pascal.

Reply Score: 5

RE[3]: ...
by WorknMan on Sat 16th Sep 2006 00:26 UTC in reply to "RE[2]: ..."
WorknMan Member since:
2005-11-13

and btw, I make a living making programs with Delphi aka Object Pascal.

The problem with Delphi is that if Borland ever tanks or decides to end support for it, you're up shit creek without a paddle. What else are you going to do with your Pascal knowledge? Are there many jobs available for Freepascal programmers?

At the moment, I'm learning C#, and that (with the .NET framework underpinnings) is quite a task, so I'll be on this one for awhile. I'm sure I'll get around to the other 9 eventually ;)

Reply Score: 1

RE[4]: ...
by dStreSd on Sat 16th Sep 2006 00:48 UTC in reply to "RE[3]: ..."
dStreSd Member since:
2006-09-16

Ummm ever heard of lazarus?

Reply Score: 1

RE[3]: ...
by abraxas on Sat 16th Sep 2006 13:58 UTC in reply to "RE[2]: ..."
abraxas Member since:
2005-07-07

Well im sure Qt/KDE developers won't aggree with you.

I can say with 100% certainty that I have never seen a job listing for "KDE developer". What I can say is that I have seen listings for C++ maintenance programmers, a lot of them. Maybe things are different where you live but here the list is perfectly sensible.

Reply Score: 1

RE[3]: ...
by EliGottlieb on Sat 16th Sep 2006 16:35 UTC in reply to "RE[2]: ..."
EliGottlieb Member since:
2005-10-30

And I program an operating system kernel in Object Pascal. People may not want to admit a Pascal into Cori Celesti, but it's still a Real Language.

Reply Score: 1

RE[2]: ...
by DjLizard on Fri 15th Sep 2006 23:26 UTC in reply to "RE: ..."
DjLizard Member since:
2006-06-28

Delphi user here, too. Object Pascal is a brilliant learning language. No beginner should be without it. BASIC is a crappy learning language.

Reply Score: 2

RE[3]: ...
by Clinton on Sat 16th Sep 2006 04:10 UTC in reply to "RE[2]: ..."
Clinton Member since:
2005-07-05

I agree with you on Basic, and would go so far to say it is a crappy language for anything.

I think Object Pascal is a good language to learn on, but I think other languages, like Python for instance, are better.

Reply Score: 1

RE[2]: ...
by gnemmi on Fri 15th Sep 2006 23:35 UTC in reply to "RE: ..."
gnemmi Member since:
2006-08-17

I don't see many people starting projects with C++ anymore

I wonder what the gaming industry would say about that ..

Reply Score: 5

RE[3]: ...
by jessta on Fri 15th Sep 2006 23:39 UTC in reply to "RE[2]: ..."
jessta Member since:
2005-08-17

oh, haven't you heard? Quake 5 is going to be written in Java. ;)

Reply Score: 5

RE[4]: ...
by gnemmi on Fri 15th Sep 2006 23:41 UTC in reply to "RE[3]: ..."
gnemmi Member since:
2006-08-17

rofl, again !!!
that's exactly what I thought !!

Reply Score: 0

RE[4]: ...
by ma_d on Sat 16th Sep 2006 00:23 UTC in reply to "RE[3]: ..."
ma_d Member since:
2005-06-29

It'd be funnier if the lead developer at Id hadn't been experimenting with Java for mobile games recently. Although since they sold the rights to Quake I doubt there will be a Quake 5...

Reply Score: 1

RE[3]: ...
by rayiner on Sat 16th Sep 2006 00:34 UTC in reply to "RE[2]: ..."
rayiner Member since:
2005-07-06

Hell, any industry. C++ is still the language people start from, outside of the web-development or business applications community.

Reply Score: 1

RE[3]: ...
by Get a Life on Sat 16th Sep 2006 05:31 UTC in reply to "RE[2]: ..."
Get a Life Member since:
2006-01-01

That C and C++ are the development languages of choice. Unless you're one of those mobile Java developers working on games for cell phones. I have absolutely no experience with that, however.

Reply Score: 3

RE[2]: ...
by tejaskokje on Sat 16th Sep 2006 00:04 UTC in reply to "RE: ..."
tejaskokje Member since:
2005-07-18

Hmm...What do you have to say for complex system software. Are they going to be written in Java,PHP, Perl or C#.

I used to work for a networking company who implemented all their network protocols in C++. I was also intern at research institute who had all their testbed code in C++.
I don't think C++ is loosing ground.


Tejas Kokje

Edited 2006-09-16 00:04

Reply Score: 2

RE[2]: ...
by MORB on Sat 16th Sep 2006 09:29 UTC in reply to "RE: ..."
MORB Member since:
2005-07-06

Someone mentioned C++? Quick, to the fudmobile!

Reply Score: 1

RE[3]: ...
by abraxas on Sat 16th Sep 2006 14:07 UTC in reply to "RE[2]: ..."
abraxas Member since:
2005-07-07

No one has actually provided any proof to the contrary. From where I'm standing, and from what I've heard from friends living elsewhere, C++ jobs are easy to find but consist of mostly maintenance coding. Most new projects use Java. Posts about individual usage of C++ aren't an argument at all. Just look up programming jobs in Careerbuilder or check your local newspaper. We're talking job prospects here, not the popularity of the language itself, and personally I wouldn't want to end up like all those COBOL programmers.

Reply Score: 1

RE: ...
by nivenh on Fri 15th Sep 2006 23:27 UTC in reply to "..."
nivenh Member since:
2005-07-06

yeah it wasn't too great.

fact is at least half of those are just the current buzz words in the industry. a year from now they'll be replaced with new buzz words and continue the vicious cycle.

and not that i really think their "job availabilities" number is accurate, but how could someone say you should run out and learn ruby/rails as fast as you can if there are only 210/54 jobs available compared do the 6,000+ C positions. sure ruby is getting alot of press lately because of rails, but "learn right now"? c'mon.

Reply Score: 3

RE: ...
by Trollstoi on Sat 16th Sep 2006 02:00 UTC in reply to "..."
Trollstoi Member since:
2005-11-11

Stop living in the past, I guess.

Reply Score: 1

RE: ...
by Babi Asu on Sat 16th Sep 2006 02:03 UTC in reply to "..."
Babi Asu Member since:
2006-02-11

No Objective-C?

Reply Score: 3

RE: ...
by fithisux on Sat 16th Sep 2006 08:22 UTC in reply to "..."
fithisux Member since:
2006-01-22

No tcl, no jython, no lua ? Bad article!!!

Jython is invaluable for very rapid Java scripting.
TCL is the temple of scripting.
Lua for embedded scripting in C,C++.

ObjectiveC -> I think there is an OS called MacOSX.
FPC (Pascal) -> I think Delphi migrates to .$H1T

Reply Score: 2

Mono
by Excel Hearts Choi on Fri 15th Sep 2006 23:44 UTC
Excel Hearts Choi
Member since:
2006-07-08

If C# is on the list, would that mean that Mono would a language worth learning?

Reply Score: 1

RE: Mono
by gnemmi on Fri 15th Sep 2006 23:47 UTC in reply to "Mono"
gnemmi Member since:
2006-08-17

Not sure, but to be honest, and as far as I'm concerned, if C# is on the list, it only means that you should stop reading the article and do something better with your time ..

I did that ...

Reply Score: 5

RE[2]: Mono
by kernelpanicked on Fri 15th Sep 2006 23:58 UTC in reply to "RE: Mono"
kernelpanicked Member since:
2006-02-01

Agreed. I skimmed it over and saw C#, VB.Net, and Java. No need to keep reading in my opinion.

Reply Score: 2

RE[3]: Mono
by kmarius on Sat 16th Sep 2006 07:49 UTC in reply to "RE[2]: Mono"
kmarius Member since:
2005-06-30

The article was talking about job availability, and Java is a very popular language.

Java: 14,408
C: 6,164
AJAX + Javascript: 5,512
C#: 5,111
Perl: 4,810
VB.Net: 2,090
PHP: 1,152
Python: 811
Ruby+Rails: 264

Reply Score: 1

RE[2]: Mono
by sappyvcv on Sun 17th Sep 2006 14:32 UTC in reply to "RE: Mono"
sappyvcv Member since:
2005-07-06

Yeah, why the hell is C# on the list?!





Oh, yeah, because knowing it makes you much more attractive to a large number of employers. That is pretty much the point of the list, not which languages are cooler, or which languages YOU like.

Reply Score: 1

RE: Mono
by aesiamun on Sat 16th Sep 2006 00:45 UTC in reply to "Mono"
aesiamun Member since:
2005-06-29

Mono isn't a language, it's a framework...you would still need to learn C#, VB, python, etc...but yeah Mono is a great way to learn the basics of the .NET framework.

Reply Score: 2

lol
by Claymore on Fri 15th Sep 2006 23:45 UTC
Claymore
Member since:
2006-06-14

answer to quake 5 in java ;)
lol it would be insanly slow if it was true ;)
dynamic languages are terrible for aplications that are performance dependable, games are such, and by the way, gaming industry at the moment, profits more that films industry ;)

BTW, if you know the basics of programing ways, you can easily learn any kind of language, will it be imperative, logical, functional or object oriented, dynamic whatever language, leanr the basics and you can program anything.

Edited 2006-09-15 23:46

Reply Score: 2

RE: lol
by bytecoder on Fri 15th Sep 2006 23:52 UTC in reply to "lol"
bytecoder Member since:
2005-11-27


dynamic languages are terrible for aplications that are performance dependable, games are such, and by the way, gaming industry at the moment, profits more that films industry ;)

First of all, Java is far from a "dynamic" language. Secondly, there's no reason a "dynamic" language can't be fast, see: common lisp.

Edited 2006-09-15 23:58

Reply Score: 5

RE[2]: lol
by rayiner on Sat 16th Sep 2006 00:37 UTC in reply to "RE: lol"
rayiner Member since:
2005-07-06

Common Lisp will usually get you 80-90% the performance of C, but game developers want that last 10-20%. On the other hand, these days, the GPU does so much of the work, that it might not even make a difference.

Reply Score: 1

RE[3]: lol
by Get a Life on Sat 16th Sep 2006 06:17 UTC in reply to "RE[2]: lol"
Get a Life Member since:
2006-01-01

In general game developers desire predictability and the ability to optimize critical sections. This motivated Naughty Dog's design choices with respect to GOAL, which any true Lisp zealot will drag out for all to see that Lisp can be used to develop games that people will actually play. However the one thing not even writing your own Lisp dialect will do is provide you with programmers that are experienced at writing games in Lisp. You have to see some serious productivity gains from the language to makeup training developers, limiting your dev tools, and possibly incurring all of the R&D expenses.

In non-critical areas it isn't entirely uncommon to see various DSLs or general purpose scripting languages used in games that are many times slower than any Common Lisp compiler's output.

Reply Score: 1

RE[3]: lol
by bytecoder on Sat 16th Sep 2006 15:59 UTC in reply to "RE[2]: lol"
bytecoder Member since:
2005-11-27

That's by default. It's not impossible to create a compiler for a dynamically typed language that can be completely overrided by the programmer at a cost of flexibility. Basically, C/C++ force you to care about performance from the start, whereas dynamic languages default to flexibility but can be overrided. The only reason you don't see a lot of the latter is that programmers tend to be a lazy lot, and apparently compiler writers don't mind shoving complexity onto the user (programmer) rather than doing it themselves.

Reply Score: 1

RE: lol
by Ford Prefect on Sat 16th Sep 2006 00:02 UTC in reply to "lol"
Ford Prefect Member since:
2006-01-16

Why not Q5 in Java?

http://www.bytonic.de/html/jake2.html

This is far from insanely slow, it's just showing decent performance, I tried it out myself.

Microsoft even wants to replace DirectX with a managed environment.

Reply Score: 2

RE[2]: lol
by Get a Life on Sat 16th Sep 2006 06:29 UTC in reply to "RE: lol"
Get a Life Member since:
2006-01-01

I think that you are mischaracterizing Microsoft's intentions with respect to DirectX and .NET. MDX and XNA do not replace DirectX--they are essentially wrappers for it. Those wrappers are not at least currently intended to replace the development of applications with C++.

Reply Score: 1

Non Windows or Web apps?
by MikeGA on Sat 16th Sep 2006 00:09 UTC
MikeGA
Member since:
2005-07-22

Well, according to this list, if you want to develop a non-Windows, non-web-based app without using Java, you're stuffed.

I'd say there's plenty of money to be made with Cocoa for a start. And, there's plenty of opportunities available on the Linux side.

Reply Score: 4

Funny
by youknowmewell on Sat 16th Sep 2006 00:14 UTC
youknowmewell
Member since:
2005-07-08

I guess the point of this article is to tell people which programming languages are the most popular (and therefore will get you the most jobs). However, if you ask other, perhaps more enlightened, hackers out there, the list would most likely be very different. I imagine Smalltalk, Lisp, Haskell, and other less mainstream languages would be on the list. Instead of just getting jobs for you, these languages would teach you different ways of programming, making you a better programmer.

The languages in the list, for the most part, don't really offer new ways of programming, but simply different syntax for the same way. PHP5, Java, C#, VB.net, and Ruby are all object oriented (though PHP programmers probably don't do must OOP considering PHP4's object system). Wouldn't be better to learn Smalltalk, the language all of these other languages got their goodies from? Who wants bad copies when you can have the original? Lisp has no equal in this list.

If you want to be a mediocre-decent programmer, then these languages are fine. If you want to be a good programmer, an excellent programmer, then you need to expand you horizons a bit and check out more interesting, yet unpopular, languages. You probably won't get a job programming in them any time soon, but you'll be able to carry the knowledge learned from them to other languages.

Reply Score: 5

RE: Funny
by Malcolm on Sat 16th Sep 2006 10:51 UTC in reply to "Funny"
Malcolm Member since:
2005-07-25

I wholeheartedly agree. I think a good programmer is one who seeks to broaden his views, learn new ways of solving problems, new perspectives. Learning languages that vary greatly in syntax and "way of thinking" will make a programmer improve even if she/he never uses those anymore after having learned them. Curiosity is very important there, I think.

Learning a wide range of languages that all look and work alike without needing to is probably a waste of time. I think the article is more about "Languages you should know to get a job right now" rather than "Languages you should learn". In any case, most of those can't really work as "bonus" to add to a resume.

Edited 2006-09-16 10:52

Reply Score: 2

For myself...
by werfu on Sat 16th Sep 2006 00:27 UTC
werfu
Member since:
2005-09-15

#1 C++
#2 Java
#3 C# (or VB.Net essentialy the same)
#4 Delphi
#5 Perl
#6 PHP
#7 Python
#8 COBOL (I know this is furious pain in the arse, but $$$)
#9 ASM
#10 Javascript

Seriously... I named 10 langage here, and with those 10 I can almost program on any plateform existing (especialy ASM) and get a nice job with it. I didn't put Ruby here because I find it overhyped for the moment, even if it DO the job perfectly well. Also note that the 4 first will get you through almost 80% of programming job offer, if it's not more.

And as I always say, keep in mind that once you learn a programming paradigm, you can learn any langage using this same paradigm, i.e. C use procedural, so is PASCAL and BASIC; once you've learn object oriented, C# and Java is a breeze... you all know the catch. This is why usualy procedural programmer tend to have hard time to learn object langage (as I did when I switched from C to OO C++).

I'm still wondering what will future programming paradigm...

Reply Score: 3

RE: For myself...
by DoctorPepper on Sun 17th Sep 2006 02:15 UTC in reply to "For myself..."
DoctorPepper Member since:
2005-07-12

The problem with learning COBOL is you also need to learn the mainframe environment (and JCLs if you are on an IBM mainframe). To get good with them takes years, AND you have to have access to a mainframe environment.

I worked as a consultant for Merrill Lynch for four years, with a large group of mainframe programmers (COBOL and JCLs on an IBM mainframe) (I was on of the few "PC" programmers on the floor), and I can say with certainty that you won't pick up COBOL, JCLs OR the mainframe environment in a week. Or a month. Or a year. That is going to take a lot of time and effort.

Probably the best bet would be to go to a community (junior) college that still offers mainframe courses. At least then you'd have a shot.

Reply Score: 1

programmimg
by happycamper on Sat 16th Sep 2006 00:28 UTC
happycamper
Member since:
2006-01-01

I would prefer to focus on this eight languages instead.

Python
JavaScript
Perl
C
C++
PHP
LISP
XML

Reply Score: 2

RE: programmimg
by kernelpanicked on Sat 16th Sep 2006 02:42 UTC in reply to "programmimg"
kernelpanicked Member since:
2006-02-01

Nice list, though mine would be slightly shorter.

Python
Perl
C
PHP
XML

Reply Score: 2

Languages are oart of the work..
by RobPolding on Sat 16th Sep 2006 00:28 UTC
RobPolding
Member since:
2006-09-16

When I get a new project I program what the stakeholders in the project require, or what I suggest, if I can. Different tools for different jobs. Part of computing I like is new challenges to be honest.

Reply Score: 1

rx182
Member since:
2005-07-08

I see no functionnal programming languages in their top10. I thought everyone knew by now that knowing Lisp or ML or Scheme or ... makes you a better programmer.

Seriously, learning PHP or JavaScript or Perl or ... to get a job is like asking for a boring job with a low salary. Learn concepts, not languages.

I think learning C then Java or C# then Lisp or ML is the way to go. It's all your need: you will learn the 3 big paradigms. If you have some more time in your hands, don't learn more languages, learn more concepts. GUI programming, multi-thread programming, network programming, distributed stuff, etc. Printing "Hello World!" in 50 languages won't give you a job. However, if you know many concepts, you will be a better candidate.

Too bad most people don't know that. But the truth is that making an multi-thread application with a GUI that also operates on a network is much harder to do than learning 50 more programming languages.

My 0.02$

Reply Score: 5

happycamper Member since:
2006-01-01

In other words focus more time learning Operating system concepts then many languages

Edited 2006-09-16 03:20

Reply Score: 1

Get a Life Member since:
2006-01-01

Focus more at being able to make things, and make them well--preferably in topic areas where people are willing to exchange money for your work. Ignore random websites professing to tell you how to succeed with formulaic gimmicks.

Reply Score: 1

Their number
by Seth Quarrier on Sat 16th Sep 2006 01:09 UTC
Seth Quarrier
Member since:
2005-11-13

I skimmed the article and am not in the CS job market so I may have missed something, but I wonder where they found their job availability numbers, they seem suspect. Also I have to wonder how many people would get a job programming in e.g. just Perl anyway as opposed to using it in conjunction with other languages. This seems like a pointless article.

Reply Score: 1

samad
Member since:
2006-03-31

"One of my mentors once told me that a programming language is just a programming language. It doesn't matter if you're a good programmer, it's the syntax that matters..."

Actually, I knew some very talented programmers using VB. I knew a guy who wrote a sophisticated algebraic expression evaluater in maybe 50-100 lines of code. Another guy wrote a Sonic the Hedgehog/Mario type scolling game in very concise and simple code. I've known some very awful programmers using C. I once tested a C program that used a data structure a library implemented. The memory usage jumped from 100k to 5mb easily. The guy who wrote the library was awful at checking for memory leaks. Personally, I'll never stop enjoying the simplicity of C. But again, syntax doesn't really matter when it comes to procedural languages in determining how good of an engineer you are.

Reply Score: 1

Concepts
by thavith_osn on Sat 16th Sep 2006 03:10 UTC
thavith_osn
Member since:
2005-07-11

I've had to "re-train" programmers so many times who think they know Java (or Delphi etc), but don't really understand MVC concepts for instance or even OO etc... Any programmer worth their pay can pick up syntax very quickly, but picking up concepts is another matter...

I would prefer someone understood the concepts needed for a project over the language (if I had to make a choice - of course if they knew both, then that's a bonus :-).

Reply Score: 1

Must Know Languages
by binarystar on Sat 16th Sep 2006 03:16 UTC
binarystar
Member since:
2006-06-15

If I was to suggest to someone starting out or to design a programming course this would be what I would suggest

1. Python or Ruby - Start with an easy to learn langauge to pick up the basics ( control structures, functions, classes etc) with little programming overhead
2. C - So many fundamental concepts you pick up learning this language eg understanding of low level mechanics, typing and memory management
3. Haskell or Lisp - Functional programming concepts
4. Java or C# - For OO programming - data hiding, interfaces, abstract classes etc

Edited 2006-09-16 03:17

Reply Score: 1

RE: Must Know Languages
by rayiner on Sat 16th Sep 2006 03:56 UTC in reply to "Must Know Languages"
rayiner Member since:
2005-07-06

Here is the way I'd do it, in chronological order:

1) Scheme or ML. Start pure, don't get the important CS concepts mixed up with hardware-stuff better left to the computer enginering guys.

2) Lisp. Not from the functional angle, which would've been introduced adequately in the previous class, but from a "practical programming" angle. Even though Common Lisp is not commonly used, tremendous amounts of real world things (design patterns, OOP, design of APIs, etc) can be expressed very conveniently in Lisp.

3) Smalltalk or Java or C# (in that order of preference). For OO programming, etc.

4) C or C++. I put this here because learning C/C++ will ruin somebody who doesn't know Lisp, Scheme, or ML first. A computer scientist should be thinking in terms of functions, values, and types, not pointers, blocks of memory, and word sizes. I always wish I'd started with something like Scheme first, because to this day I have to fight the urge to think about pointers and blocks of memory.

I'd also throw in some special topics for a vector programming language (eg: APL), a logic programming language (eg: PROLOG), and a concurrent programming language (eg: ERLANG).

Reply Score: 3

What aN article
by lustiouss on Sat 16th Sep 2006 03:21 UTC
lustiouss
Member since:
2006-07-26

I wonder why on earth the author feels the need to push languages as though it is best to learn "x" language for an easy in or better paying job.

My foolish advice stick with what interests you and learn everything around that language as well as patterns -- can't stress that enough. Writing code is one thing but actually knowing how to design in a widely accepted structure will be good for not only you but the people you work with, plus you will definetly stand-out from the crowd.

Reply Score: 1

Assembly
by zlynx on Sat 16th Sep 2006 04:03 UTC
zlynx
Member since:
2005-07-20

No one mentioned assembly. I believe no programmer should be without it. If you cannot produce a reasonable description of how your Java or Ruby or Lisp program actually executes on the CPU, then you're not a real programmer in my book.

You'll never be able to work with embedded systems, kernels, drivers, or write a really good audio/video codec or high performance video game without it.

Reply Score: 5

RE: Assembly
by rayiner on Sat 16th Sep 2006 04:55 UTC in reply to "Assembly"
rayiner Member since:
2005-07-06

Thats not really true anymore. These days, "embedded" systems can be quite powerful. I worked on some code that targetted the JTRS spec for military radios. It had to be fully portable, using an OS-agnostic and language-agnostic CORBA-based framework. We're talking about everything down to handheld radios here, running a full CORBA ORB. No ASM in there!

Most kernels these days have minute amounts of ASM hidden behind a few macros, and that doesn't require the ability to program in ASM so much as it requires a rudimentary understanding of it, and the ability to use a manual.

As for games --- even as of Quake III, the assembly code was limited to a few functions, and only then because they needed to leverage MMX and SSE. These days, the GPU does so much work, they may not have even that.

Edited 2006-09-16 04:58

Reply Score: 3

Do your best
by andyleung on Sat 16th Sep 2006 04:33 UTC
andyleung
Member since:
2006-03-24

I am a Java programmer and I always spend my time on Java programming from design pattern to API exploration because I always think that even I can use Java to make a good application, learning a language needs endless time to create second-to-best applications because I believe there is always a better way to do things so there is no best way. However, when I need other programming language to help, such as J2EE web app + AJAX(or simple javascript), I just use them. Being a programmer for some time now, I would say:

1. Master(program without thinking on API usage) a language and some most common design pattern
2. Learn other languages that can fill out the holes of the language you master

Like Java, I can do almost all business applications using Java but when I do game programming, even I can code the rendering part in Java in few minutes, I would still rather choose C++ to do event handling because Java event handler has too many overhead; I program web applications in Java but with Javascript's help as well. I think the article is a bit misleading, it should be: 10 important modern programming languages and you should learn at least one of them.

just my $0.02

Reply Score: 2

C++
by CrazyDude0 on Sat 16th Sep 2006 04:49 UTC
CrazyDude0
Member since:
2005-07-10

C++ was my favourite language for sometime before i got to know more about it. Here's why i hate C++

1. templates...really they are so hard to read and once you have nested templates the brain needs to be a compiler to understand it.
2. polymorphism, virtual functions and compiler dependent implementations...no fun
3. exception handling...i know some people love exception handling but for me it makes the code so difficult to debug specially if the exceptions are handled in an outer function. As soon as you hit exception you can jump out of several functions unwinding their stack and doing so much that probably was important for you to debug...

there are many more things like this which make C++ hugely complex actually to the point that i now equate it to Perl.

It is a good language but because of all the things it can end up being so complex....just look at boost libraries if you don't know what i mean.

Reply Score: 2

Kind of surprised
by deathshadow on Sat 16th Sep 2006 05:31 UTC
deathshadow
Member since:
2005-07-12

Visual Basic made the cut... I mean seriously, anyone who tries to make a serious commercial application in Visual Basic needs to be taken around back of the woodshed with a 30-06. It's a cutesy learning tool for creating horribly bloated crapplets (the infamous one meg 'hello world' comes to mind), NOT a serious development platform.

Reply Score: 4

RE: Kind of surprised
by Get a Life on Sat 16th Sep 2006 07:25 UTC in reply to "Kind of surprised"
Get a Life Member since:
2006-01-01

VB is still popular and so it "made the cut." If you should be surprised by something, it should probably be the presence of Ruby and maybe Python. Further the version of VB selected is the .NET incarnation, which has the same overhead as C#.

Come to think of it, I think UnrealEd was orginally written in VB. Better load up your boomstick and take out Epic for its previous crimes against humanity.

Reply Score: 1

RE: Kind of surprised
by Kroc on Sat 16th Sep 2006 18:15 UTC in reply to "Kind of surprised"
Kroc Member since:
2005-11-10

And people who are ignorant about languages should be shot too.

Reply Score: 1

forgot sql
by grrr on Sat 16th Sep 2006 06:31 UTC
grrr
Member since:
2005-09-03

very important and also really different from the other languages.
and how about xslt?And English ;-)

Reply Score: 2

Dangerous list
by Legend on Sat 16th Sep 2006 07:35 UTC
Legend
Member since:
2006-07-27

If something who didn't do any coding at all reads this and starts to learn 10 languages - ouch.

I would tell him to pick one language or two and lern those well. The rest are a lot easier then.

Reply Score: 1

Try Euphoria first
by Xaero_Vincent on Sat 16th Sep 2006 08:23 UTC
Xaero_Vincent
Member since:
2006-08-18

I think Euphoria would a good language to teach people how to program and establish that foothold needed to migrate to the more complex mainstream languages.

Reply Score: 2

No Fortran?
by tristan on Sat 16th Sep 2006 09:46 UTC
tristan
Member since:
2006-02-01

No, I'm not kidding. If you're wanting to do anything in scientific computing then you'll need Fortran90 and C.

Okay, so I admit it's fairly specialised, but I'd be surprised if there weren't more jobs available than for Ruby on Rails. And probably better paid, too ;)

Reply Score: 1

Real life
by gonzalo on Sat 16th Sep 2006 10:32 UTC
gonzalo
Member since:
2005-07-06

The list is cool in a trendy kind of way, but hardly reflects trends in the real world now.

I'd say (keep in mind I'm talking about my country, which will probably differ from yours):

- If what you want is a job, learn either COBOL or Java. This will get you a job. Probably not a very interesting or high-paid one, but a job nonetheless. If you go the Java way, back it up with some Spring, Hibernate, Struts, JUnit knowledge and you're all set.

- If you want a web job, which also won't have a very good salary, learn very very well HTML, Javascript (and those trendy AJAX concepts), CSS and at least some basic design concepts.
You could go for some middle ground complementing that HTML+Javascript with something like PHP or Java.

- Instead of Java, go for C#. Not so many job offers right now, but with some ASP.NET you can find some.

- If you want something better paid, but harder to find, try C++ or C. Delphi may get you a job at a smaller, more traditional software company, but I don't know about salary.

- Languages which may not get you a job but will probably be a nice complement and increase chances: SQL, XML, XSLT, Perl, Python.

- Languages which you should learn for your own good: Lisp, Assembler. I'm tempted to put Ruby here too, but maybe it's just because it's what I'm learning now. It does look fairly interesting, beyond all that hype, and it does give you a good insight into languages in general.


Just my 0.02€

Reply Score: 3

My suggestion
by Morin on Sat 16th Sep 2006 15:28 UTC
Morin
Member since:
2005-12-31

IMHO, a good combination of languages would be:

- Smalltalk, to learn OOP. This might be a good starting point. Get some experience.

- Haskell, to learn functional programming. Also understand why it's inherently slow, and how this is treated by modeling side effects again.

- Lisp / Scheme, to learn the power of domain-specific language extensions. Understand why it's not a functional programming language. Also learn to deal with an ugly syntax and understand why it is useful.

- Assembler, to understand how computers work. It helps a lot to understand performance issues, as well as technical terms such as "memory leak". Don't learn this too early. Understand how other languages are compiled to ASM.

- Java / C#, because it's still one of the best tools to get real work done. Apply the experience from the previous steps here.

Reply Score: 1

Overwhelming Lameness
by Sphinx on Sat 16th Sep 2006 17:32 UTC
Sphinx
Member since:
2005-07-09

No XSLT? Everybody who thinks AJAX is a language raise their hands. The section on php made me laugh til I cried.

Reply Score: 2

mickrussom
Member since:
2006-05-13

Scheme/lisp would really help learning the rest a bit more trivial, plus, knowing lisp would really help out a lot with those using emacs (most developers use this tool).

Also, a dash of assembly for any modern CPU would help a bit too. Too much detachment from the fundamentals of CS leady to bulky inefficinent code.

Reply Score: 1

Industry-guided List
by jonas on Sat 16th Sep 2006 19:06 UTC
jonas
Member since:
2005-07-08

This list is very industry-guided. It takes a look at what is really popular *right now*, and to some extent I guess it hits the nail right on the head. I don't know if the list was made in any particular order, but I think some languages are currently losing their 'hotness' (perl and php) and some are still gaining (javascript/ajax.. this really should not have been two entries).

Something that gives me hope is that a few of the languages on there came from very programmer-centric pushes. In particular, Ruby is admired for it's elegance by experienced programmers and Python's syntax is admired for it's elegance by experienced programmers and computer scientists. It makes me feel as though we're finally getting out of that age where everything has to be written in (X) language because everything else is written in (X) language.

There's much more of a consensus these days that you chose the right tool for the job, which I would imagine is going to lead to a few very positive results. New programmers will start to learn more complex but useful high level semantics as they learn their trade, and they'll learn how to "think" better because of it. New programmers won't trip up as much, and won't be caught in horrible (or complex, or you could argue they are equivalent) languages because of some pre-existing cargo cult.

As time passes I think, if you hold your ear to the ground in the OSS circles and see stuff like RoR or Django start to steamroll into popularity, you will be able to make up a list like this 3 years before someone like eWEEK does. This is particularly excellent for the future of software and programming, because OSS programmers are those who love to program and who love to make good programs in beautiful ways.

Reply Score: 1

Not Worth Learning
by Mystilleef on Sat 16th Sep 2006 20:18 UTC
Mystilleef
Member since:
2005-06-29

There are 7 languages I feel are worth learning.

Python - In a utopia, we'd use Python for everything
C - libraries and drivers (you just need to know it)
Haskell - programming without side effects (functional programming)
Scheme - cleanest syntax ever (functional programming part 2)
Erlang - concurrency and scalability (All languages need to bow down to the language that solved the concurrency problem)
Eiffel - superior OO techniques (design by contract)

These languages are worth learning not because they are hyped, but because they introduce you to different important programming and design paradigms. Exposing yourself to different paradigms stretch your problem solving prowess and experience.

Then again, these days a language is almost irrelevant if it doesn't have good libraries. So I understand the choice of languages in the article.

Edited 2006-09-16 20:19

Reply Score: 1

And 10 years ago...
by monkeywork on Sun 17th Sep 2006 00:57 UTC
monkeywork
Member since:
2006-05-19

1. vb script
2. basica
3. foxpro
4. batch language
5. html
6. turbo pascal
7. powerbuilder

Reply Score: 2

Delphi/Pascal should rather be No. 10
by neo_0531 on Mon 18th Sep 2006 00:50 UTC
neo_0531
Member since:
2006-08-03

As far as I am concern Delphi is better than VB .Net, Delphi handle Client/Server application more efficiently than VB. The codes are flexible and provides a straight forward coding without any standard dependancy, the syntax are even cross-platform, running even on unix or windows. With the Intraweb components of delphi you can already manage a server type application, programmers know that.
It's also Memory efficient and code are organized to provide an easy execution.

Reply Score: 1