Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Education Java Perl Programming Python

Which Language To Learn? 897

LordStormes writes "I've been a Java/C++/PHP developer for about 6 years now. However, I'm seeing the jobs for these languages dry up, and Java in particular is worrisome with all the Oracle nonsense going on. I think it's time to pick up a new language or risk my skills fading into uselessness. I'm looking to do mostly Web-based back-end stuff. I've contemplated Perl, Python, Ruby, Erlang, Go, and several other languages, but I'll put it to you — what language makes the most sense now to get the jobs? I've deliberately omitted .NET — I have no desire to do the Microsoft languages."
This discussion has been archived. No new comments can be posted.

Which Language To Learn?

Comments Filter:
  • FORTRAN (Score:3, Interesting)

    by betterunixthanunix ( 980855 ) on Saturday November 13, 2010 @07:18PM (#34218038)
    Same as above.
  • Tiobe Index (Score:5, Interesting)

    by bradgoodman ( 964302 ) on Saturday November 13, 2010 @07:18PM (#34218042) Homepage
    See the Tiobe index:

    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html [tiobe.com]

    Java (as much as I hate it) - and C++ (as much as I lothe it) aren't going away or drying up - but they have flatlined

    You can see the "fast risers" like Ada (WTF?), Objective-C (i.e. iPhone/iPad), etc. - but these are generally very vertical (specfic-purpose) languages.

  • Scala, Haskell (Score:4, Interesting)

    by j1m+5n0w ( 749199 ) on Saturday November 13, 2010 @07:30PM (#34218160) Homepage Journal

    If you want to learn something new without throwing away all your java experience, you might try Scala. I've heard good things about it (though I have no personal experience with it myself). As functional languages go, I prefer Haskell [1] as my default problem-solving language. You might have trouble finding a Haskell job, but it will teach you things that will be relevant in other languages.

    Erlang is an interesting language. I view it as kind of a one-trick pony, but for distributed systems I've not seen anything better.

    [1] Learn you a Haskell for great good [learnyouahaskell.com]

  • by kainosnoema ( 1939984 ) on Saturday November 13, 2010 @07:32PM (#34218174)
    The fastest growing, hottest languages on GitHub right now [github.com] are Ruby and Javascript. Partly that's due to the amazing Node.js server-side platform that runs on Google's V8.
  • Re:Really? (Score:5, Interesting)

    by bmo ( 77928 ) on Saturday November 13, 2010 @07:40PM (#34218212)

    Ditch digging is shit labor and shit money?

    Have you _seen_ what a unionized heavy equipment operator gets?

    Or how about up in the frozen North where they dig for oil? $2K/Week TAKE HOME (canadian, worth more than USian now) just for digging a great big ditch.

    Yeah, I'll take digging a ditch right about now.

    --
    BMO

  • by Aron S-T ( 3012 ) on Saturday November 13, 2010 @07:43PM (#34218232) Homepage

    As someone who has worked in software development in various capacities for over thirty years, I find your comments puzzling and your concotenation of those three languages even more mysterious. If you are talking about the corporate world then please be aware change comes exceedingly slowly. COBOL and Fortran were king into the nineties. Now Java and C++ have replaced those two and aren't going anywhere- Java for enterprise business applications (with or without a web front end) and C++ for anything where performance is of the essence. Microsoft tried ton replace Java with .net and failed. Nonetheless, it still is the number two platform in the corporate world. So having skills in the enterprise version of Java and/or being a c++ wizard guarantees you a programming job for the next 20 years. I don't know where you have been looking, but jobs haven't fallen off in those two domains and won't.

    PHP is a whole different animal and really shouldn't be mentioned in the same breath as the other two languages. PHP was the choice language for web development for mom and pop sites (yea, yea I know, yahoo) and startup quick and dirty websites. Ruby became the platform that "cool" web developers came to prefer, so yes if you aren't interested in the corporate world, learn ruby and rails. Of course, since I pay less attention to that sector, maybe there is something newer and cooler these days.

    Python should be in every programmers tool set because it is such a versatile tool. Unfortunately it's not enough in most cases for a guaranteed job.

  • Re:Really? (Score:1, Interesting)

    by Anonymous Coward on Saturday November 13, 2010 @07:50PM (#34218296)

    I take home $2k/Week programming in that evil .NET platform. I find it easier than digging ditches.

  • Re:Really? (Score:5, Interesting)

    by BeanThere ( 28381 ) on Saturday November 13, 2010 @07:52PM (#34218316)

    Speaking of staying relevant. While there are certainly languages that are way down there in terms of jobs, I take the general view that if you keep yourself *good* at whatever language you choose, you will have a job. That is certainly true of PHP, of C++, and probably will stay true of Java for a long time. Still, I suppose not everyone can be motivated enough to stay top of their game.

    Submitter also doesn't seem to realise .NET isn't a language, it's a platform (more akin to an API than a language), and you can code for .NET using many different languages, and you can't code "in .NET", since there isn't such a language. I presume he made the common beginner mistake of conflating "C#" with ".NET", and I'll infer he meant C#.

    As anti-MS as I am, it seems odd to me to avoid C# if you like Java though, given it's probably more similar to Java than anything else. Also, from what little I know of it, technically it seems like quite a decent language (and the API much better than the old Win32 .NET replaces), with quite a decent development environment too. It didn't really replace the C++ 'niche' though, it replaced the VB segment ... C# is basically "the new VB"; rapid medium-skilled and medium-complexity development with a broader pool of (on average) less highly-skilled programmers to choose from (not dissing the good C# programmers that do exist, but it's certainly a more forgiving environment to less technically skilled programmers than say C++).

    If you're really good at what you do, then you can afford to be picky about your "ideology" and avoid a particular language. If not (which I more suspect to be the case here) then I would recommend to the question asker to best keep more options open. Otherwise it just seems more like a bad carpenter blaming the job environment.

    Me, I love C++, and I haven't noticed jobs drying up, on the contrary, my C++ skills continue to open interesting doors for me, I can literally go almost anywhere in the world.

    There are lots of C# jobs out there, and lots of C# programmers; while you can be an excellent C# programmer, I'd say it's probably slightly easier to 'distinguish yourself' in the C++ world.

    PHP is still also massive though, and will be for a long time.

  • by Sarusa ( 104047 ) on Saturday November 13, 2010 @07:53PM (#34218336)

    First, you're limiting yourself far too much. This seems like a 'narrow the parameters down so far that when I fail it's not my fault' question.

    A good programmer can pick up any similar language in short order. I won't say it's easy for a C++ programmer to pick up one of the LISP-likes, or vice versa... it's not. But a C++ programmer such as myself has little problem with Java other than the API bloat. I prefer Python to Ruby or Perl but can work in any of those. And PHP is the retarded brother of C, $so $that's $doable $it's $just $syntax $issues.

    You want to limit yourself to web backends? Fine, go Ruby and PHP, but what you really should be doing is just picking a language and learning the /algorithms/ and interfaces to actually solve real problems and learn how to work with third party things like PostgreSQL or memcached. And learn JavaScript. You can't do well on the backend if you don't understand what's going on with the frontend. It's all an ecosystem, and the interactions are far harder than the mere syntax of a language and its APIs.

  • by Billly Gates ( 198444 ) on Saturday November 13, 2010 @07:54PM (#34218342) Journal

    Not to sound assholish, but if I were a PHB why would I want to pay you $40,000 a year to make intranet and internet sites when I can go to Vietnam or India and get the same job done for a few hundred bucks? Go to elance.com? They are filled with people paying $100 for formally $15,000 worth of work and people are dying to take these.

    Intuit offers customers a website for only $29.99 and $15 a month. Why hire you or your employer to write it?

    Do what is needed here at home which deals with business processes. Go back to school and get a supply chain management endorsement on your computer science degree and specialize in business process programming. This has been outsourced but is coming back because you can not outsource business processes duh. A business or software analysist is nice if you get an MBA. I would aim for that route. This is the new global economy and management positions are the only jobs left that are white collar and safe.

  • by Krishnoid ( 984597 ) * on Saturday November 13, 2010 @07:55PM (#34218346) Journal
    One interesting point that stuck with me was that the Python evangelist sitting on that panel suggested learning JavaScript, by pointing out that it runs on something like a billion devices. It can even run on the back-end, using node.js [yahoo.com] -- watch near half-way through to see how it can even provide the same interactivity whether JavaScript is enabled or not, by converting client-side interactivity to server-side POSTs.
  • Re:What jobs? (Score:1, Interesting)

    by Anonymous Coward on Saturday November 13, 2010 @08:06PM (#34218436)

    Exactly what I was thinking. Okay, there are still jobs, but outsourcing is going to start trumping market growth - you can here the train coming..

    So my suggestion : Learn DNA. Not exactly what you meant by programming language, but bioinformatics (along with most other ___informatics and computational ___ists) are far more secure and better paying than "software development".

  • D and Scheme (Score:5, Interesting)

    by turgid ( 580780 ) on Saturday November 13, 2010 @08:13PM (#34218498) Journal

    I'm a C/C++ developer (mainly C) and I enjoy it. I don't enjoy C++, but I'm paid to use it, so use it I do.

    I've been dabbling with scheme [schemers.org] for fun. It's very different to C, C++ or any of the other languages you mention, but a couple of hours reading about it and playing with it will really open your mind and be a bit of fun.

    By ignoring the .NET languages, you are obviously intelligent and discerning; you don't merely want to follow the heard into a boring, run-of-the-mill job. Good for you. 15 years ago I started to learn Linux when everyone was laughing at it (and me for using it) but I'm in a great position now.

    The other language I'm about to try is D [digitalmars.com] which was deliberately designed to address many of the shortcomings of C++. It's a lot simpler and much more pragmatic that C++, by the looks of it. For a start, it doesn't pretend to be backwards-compatible with C, bit it is ABI-compatible. It has a clean syntax, fast compile times and some interesting concepts borrowed from ruby and python.

    Ruby is the scripting language I'll be looking at next. I learned PERL a while back for work, and it is a nightmare, but a very useful one. Ruby is much less of a nightmare and much better than PERL at what PERL was intended (notice I didn't say designed) for.

    Whatever language you choose next, pick an interesting one... How about creating your own for a challenge?

  • Re:Really? (Score:4, Interesting)

    by SpryGuy ( 206254 ) on Saturday November 13, 2010 @08:23PM (#34218574)

    Actually, no it doesn't. .Net is a decent platform, C# is a very good language, VS+ReSharper is a great development environment, and ASP MVC is a decent web development environment.

    Of course, if you're looking at classic ASP.NET, I can see how you'd think it sucks. But dont' judge the entire stack because of that.

  • Re:Really? (Score:3, Interesting)

    by Daengbo ( 523424 ) <daengbo&gmail,com> on Saturday November 13, 2010 @08:32PM (#34218638) Homepage Journal

    Two months after taking a job teaching math at the worst high school in the district, making $42k and working 7:30 - 7:30, I walked by a Wendy's posting wanted signs for a manager at $55k. Sigh.

  • by Angst Badger ( 8636 ) on Saturday November 13, 2010 @08:53PM (#34218738)

    Poster obviously has no desire to be employed either. Love it or Hate it C# is pretty much the only langauge in demand by big business these days in the UK unless he's perfectly happy doing small freelance jobs etc which PHP is fine.

    I've seen people make remarks like this -- apparently in all sincerity -- for the last twenty years, and they're generally wrong, usually because they're generalizing from personal experience, which is almost always narrower than you think.

    The fact is that if you aren't too picky, there are always openings for programmers in about a dozen languages. The proportions vary from time to time and by industry and company size, but no language commands more than a modest plurality at present. There are still openings for people to write new code in COBOL and RPG if you know where to look.

    The key is not being too picky. If your main concern is making as much money as you can, your choice of languages and platforms is going to be constrained by that requirement. If you're content with making a comfortable but not fantastic middle-class income, you can count on finding a job coding in all but the most obscure languages. It will just take longer to find and probably pay less than the latest high-demand stuff. On the bright side, there will be less competition for the job.

    In the end, it just depends on what matters most to you.

  • by Bengie ( 1121981 ) on Saturday November 13, 2010 @09:09PM (#34218852)

    hah, outsourcing... horrible idea. well, you get what you pay for.

    The job I recently came into had some outsourced internal tools to India. These were tools that could save us time and offer useful functionality, but were not central to our job. Over time, some of these programs became fairly common. Well, these programs had a long turn around on added features and the code was huge. Easy to read, well documented, but lots of it.

    Eventually, with the market down turn, my company dropped the India team. Someone else had to pick up fixing bugs when found and adding features. Eventually that person moved on and the job got passed down to me. I decided to start from scratch because the logic was hard to follow. The code was clean, but the logic was horrible.

    They typically took 2-4 weeks to add features or fix bugs. In 1 week, I flow charted the program and reduced the logic to something more flexible and natural to follow. In 1 month, I had a re-write that I could debug every bug so far in under 15 minutes and added new features in under a day. The code scales crazy better to. A small dataset runs about 250 times faster, a larger dataset runs about 1200 times faster and the memory allocation is about 1/5-1/10 the amount. The server admin likes that the app doesn't bog down the servers anymore. From 45min down to 10 seconds. My code is C# .net and their code was VB .net.

    Well, that's my experience anyway.

  • by sir lox elroy ( 735636 ) on Saturday November 13, 2010 @09:22PM (#34218934) Homepage
    And some of us still love using Perl for our web backends, or other projects, even today. :-)
  • Re:Really? (Score:3, Interesting)

    by Tacvek ( 948259 ) on Saturday November 13, 2010 @09:32PM (#34219016) Journal

    There are large companies out there that tell you to avoid the STL portions of the standard library whenever possible.

    That is usually based on an edict from back in the day when many compilers had issues with templates, and certain uses of the supplied STL would actually choke the compiler. On old compilers, even when the STL worked, the optimizer did a terrible job on templated code, so the code was far less efficient than code that avoided it.

    It also stems in part in many places from the fact that the average coder with an associate's degree may never have even touched the STL in any class. I mean I went to very good private four year college, and the level of C++ taught there was not great, considering all that should be taught.

    I've learned the intricacies of templates, how to prperly handle const-correctness, and other "advanced" topics outside of school, in my case mostly thanks to the Cline's C++-FAQ-Lite, and my following of the comp.lang.c++, comp.lang.c++.moderated, and comp.std.c++ newsgroups for several months. Oh yeah, Meyers' Effective C++, More Effective C++, and Effective STL were also critical in developming my undertsanding of some of the more dark corners of C++.

  • Re:What about SQL? (Score:3, Interesting)

    by Kjella ( 173770 ) on Saturday November 13, 2010 @09:39PM (#34219062) Homepage

    I don't know about the market for developers with/without SQL but there's definitively room for people on the reporting/BI/data warehousing side that know pretty much only SQL and the procedural variants like T-SQL, PL/SQL and so on. If you have a proper OLAP server then MDX is a must but it'll translate from SQL quickly. Throw in integration services or business objects too and you got plenty in that area, just look out so you don't become the one fixing up the layout on the TPS report.

  • Lots of Android jobs (Score:3, Interesting)

    by OrangeTide ( 124937 ) on Saturday November 13, 2010 @09:52PM (#34219146) Homepage Journal

    Lots of jobs doing Android work, so Java will still be around for a while.
    And if Java does go away, those already in the Android industry will just learn whatever it replaces it (Go or who knows). The language syntax would change for them, but the overall system architecture wouldn't be much different.
    And there are a fair number of Android C programming jobs, if you get in on the device side working for one of the phone manufacturers (I think everyone but Nokia) or a mobile chips vendor (TI, Qualcomm, Freescale, NVIDIA or possibly Marvell). Those companies have a presence on the west coast (California and Oregon mostly), Texas and a few of them on the east coast as well. And there are areas for Android development outside of the US too, too many to name.

  • Re:Really? (Score:1, Interesting)

    by Anonymous Coward on Saturday November 13, 2010 @10:28PM (#34219356)

    No, but Ballmer does.

    Anyone who makes their living with C# must use Windows. Sure Mono is like 95% compatibility; but it's that last 5% that counts. It's like the difference between humans and apes.

  • by FutureDomain ( 1073116 ) on Saturday November 13, 2010 @10:28PM (#34219360)

    Great post, and I'd like to add a couple of other points.

    Instead of just downloading the compiler, download Visual C# Express [microsoft.com]. It's a great way to get introduced to Visual Studio and it has a lot of tools and features that make it better than hand typing it into Notepad. I'd still recommend learning what's going on under the covers (use ILdasm, Reflector, and check out the x.Designer.cs files), but if you're going to do any .NET programming in the enterprise setting Visual Studio is going to be used.

    It's good to be a jack of all languages, but you also need to master at least one. I've learned assembly, C, C++, Java, VB 6, VB.NET, C#, ASP.NET (WebForms and MVC), SQL, Ruby, Perl, Python, and PHP, but I still picked my favorite (C#) and mastered it and it has given me most of my paid jobs.

    Whatever you decide to do, don't tie yourself down. Learn as much as you can about different languages and what's going on behind the abstractions. Pick your favorites and any that you need for work and master them, but don't get too hung up on a particular language.

  • Re:Definitely Scala (Score:3, Interesting)

    by M. Baranczak ( 726671 ) on Saturday November 13, 2010 @11:24PM (#34219596)

    Scala looks nice, but it runs on top of a JVM. If Oracle manages to destroy the Java platform (which is a real possibility), then Scala programmers are fucked. Remember, this is one of the reasons why the guy said he wants to get away from Java.

  • Re:Really? (Score:1, Interesting)

    by Anonymous Coward on Saturday November 13, 2010 @11:30PM (#34219632)

    I've done grunt labour outdoors, in low-40s heat (110+ degrees Fahrenheit) - and I'd still rather go back to that than compromise my principles by supporting a closed language. (Of course, it helps that the money in mining labour jobs is actually pretty good.)

  • by jwthompson2 ( 749521 ) * on Sunday November 14, 2010 @12:45AM (#34219958) Homepage

    I'm a Ruby developer in New Orleans, LA and I wouldn't want it any other way here in this city. My skills are in high demand, but that is the state of things here in New Orleans. There is demand for other language developers, mostly PHP, but not nearly the quality of jobs as what is available for a Ruby developer. I suspect that the right answer to this question is highly contingent on the place where one wants to live and work. In San Francisco I know the situation is even more exaggerated than it is in New Orleans with Ruby developers being even more highly in demand.

    The answer to this question is always to look around and see what is needed where you are. If you want to move then look at what is in demand where you'd like to move to. In either case, answer the market by adapting your skills. And why choose one language when you could choose multiple. Be a polyglot and pick up Python, Ruby and Erlang. Paired with a knowledge of C/C++ and Java those five languages should keep you in demand in most major markets. PHP developers are a dime a dozen, and the pay reflects that. Only the best PHP developers make good money, and even then I've found it more lucrative to know Perl, than PHP.

    But that is just what I know.

  • Re:What about SQL? (Score:2, Interesting)

    by EoN604 ( 909459 ) on Sunday November 14, 2010 @03:46AM (#34220582) Homepage
    Yes, a LOT of web programmers highly overestimate their SQL skill. I've worked at a couple of companies who place a lot of importance on it. At my last workplace, if an interviewee couldn't make sense of (for example) a 50 line T-SQL query with, 5 inner joins, 5 left joins, a sub query, some case statements, grouping, ordering and a COALESCE() function here or there, they wouldn't even be considered. Almost all web programmers are able to "interact with a standard relational database" at a basic level. But they're completely unskilled at the more advanced stuff. I've seen this time and time again at work, and on irc & forums - even people who are very smart/efficient with their language of choice, can be really poor with SQL, and they don't even know it. The reason they don't know it is because you can "get by" with minimal sql knowledge, by writing inefficient round-about, bad code to deal with the data and achieve the same end result (but just with far uglier, less efficient code)
  • Re:Python is nice (Score:1, Interesting)

    by Anonymous Coward on Sunday November 14, 2010 @09:40AM (#34221678)

    If you're looking for web backend, first of all, I wouldn't choose Go for anything. It's too young and too prone to change in weird ways, and it's got an exception handling mechanism that's... exceptional. Like nothing you've seen before - for good reason, I believe.

    Here's why... [golang.org]

    We believe that coupling exceptions to a control structure, as in the try-catch-finally idiom, results in convoluted code. It also tends to encourage programmers to label too many ordinary errors, such as failing to open a file, as exceptional.

    Never throw an exception when an assert would do! I have a few issues with Go, lack of exceptions is not one of them. Especially when Go's mechanism [golang.org] makes more sense for concurrent program execution than exceptions.

    Currently I'd probably pick Node.js over Go for a web app. Python and Ruby would be towards the bottom of my list of candidate languages and I was using Ruby long before the Rails hype.

  • by SuperKendall ( 25149 ) on Monday November 15, 2010 @04:01AM (#34228736)

    I'd still rather go back to that than compromise my principles by supporting a closed language.

    First of all, there are no closed languages. I don't like C# because (a) I think it's under a potential patent cloud from Microsoft, and (b) I think they stole ten years from the computer industry by competing with Java in parallel, instead of working with the JCP to make Java, and Java tools, stronger. But even C# is not a closed language - it is an ECMA standard, however much the direction is obviously driven by Microsoft.

    All that said, even if for some reason you have to compromise principals to work with a language - well the practical reality is you will never have to, it's a false choice. There will always be enough variety of languages and work in them that it's easy to make a statement like that, because you'll never have to face it.

    Lastly though, even if for some reason only a "closed" language was left, I would still work against my principals in that language, keeping strong in it so that I could turn support to something that I did agree with when it came along and show a clear migration path from the old to the new. There's a lot to be said for being a mole, at the right place at the right time.

  • by LostMyBeaver ( 1226054 ) on Monday November 15, 2010 @06:26AM (#34229130)
    It's like saying I will only buy a car made in America by American labor, I'll buy a GM. You'd have been better off buying a Toyota. First mistake was saying American, that includes Canada, Mexico... hell the entire North and South American continents. But if you're looking for a car made in the U.S. by U.S. citizens, then you'd buy a Toyota, though if you wanted to play it real safe, you'd actually research it first and find out there are a handful for U.S. brands actually producing IN the U.S.. Otherwise you might end up with a car which is 95% manufactured in canada, mexico or china and the assembled in the U.S. by machines.

    C# is a programming language. From a programmer with nearly 20 years of system level (meaning real code, none of this database and web stuff :)) programming experience, I can say that as a language C# is wonderful, I'd love to have a job programming in it if I could just find a company that isn't scared of it being a "microsoft language". .NET is another beast. It's big, it's nice, it's beautiful. I have written high bandwidth real-time video packetizers and even an H.261 CODEC in it using C#. I LOVE IT. It's fast as hell, it's efficient and it's just overall, a well written system.

    There are of course two major problems with it.

    1) It's made by Microsoft.
    I can live with this, there's mono and other environments.

    2) Any piss-prick who can move a mouse and type their name can use it to pretend they're a programmer. Then they can go out and say "Hi I'm a .NET programmer" when in fact, they couldn't tell the difference between a linked list and a john deere tractor. There's a terrible reputation that builds when there's a programming language which anyone can use.

    The fact is, a programmer doesn't need to know a specific language. He/She should find a job working for a good company with good people and a nice environment. The language shouldn't make much of a difference.

    As for learning how to do programming for web back-ends on a specific platform, well that's a different story. It takes time and experience to learn how to do these things. You need to understand how the web works. But it's not rocket science. It's more important that he knows how to write good stored procedures, triggers, etc... glue languages (possible with the exception of Perl) are all the same. PHP is good language with the worst set of libraries ever. Perl is... bah... Python is just another language with a gazillion features... Ruby is well, it's a religion as opposed to a language, but it's ok for most things, C# and .NET is a very pleasing experience, but it's Microsoft. There's just no ideal solution.

    The important thing though, is that ideals are great if you're looking to get a job like "Let's try and work at Red Cross so I can help suffering people around the world.", it's just sad and lame when it's like "I don't want to program for this bank because I'd be falling into a Microsoft trap".

    Get real. Get a life.

The one day you'd sell your soul for something, souls are a glut.

Working...