Which Language To Learn?
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."
I mean, I don't see php or C++ going anywhere anytime soon....
-- www.RoachMcKrackin.com
Still in demand and it will not die.
Industry constantly tells the Universities they need more C/C++ programmers for industrial systems. If all you are looking at is web based development, you are seriously limiting your options. I suggest a less restrictive filter on your search parameters.
Every mans' island needs an ocean; choose your ocean carefully.
80% or so of all web-backend postings I see are PHP/Java/.NET or the like. The other 20% are all Python (usually Django, though I prefer Pylons myself) and Ruby. If you want to pick up another language just so you can be future-proof, go with Ruby. I haven't learned it yet (I do javascript myself, and use PHP or Python when I do backend), it seems to be a more common request than any of the others you listed.
I am become
Same as above.
Palm trees and 8
"What language makes the most sense now to get the jobs?" What jobs?
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
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.
.NET development is taking off whether you like it or not. With oracle serving up a shitstorm over Java it's only going to gain more traction. Omitting an entire language and framework simply because it's developed by Microsoft is a pretty poor reason especially when it's gaining use in the very type of work you're looking for (web-based back end stuff). Honestly if you're looking for a job, consider learning C# and familiarizing yourself with the .NET framework
The obvious solution is to make a language that ultimately trounces all others, and then write a white paper declaring this. Game, set, match.
Engrish?
Have you thought about one of the languages spoken on the Indian sub-continent?
Nate
It's more popular than ever. Don't belive the nosql hype.
I would go for Chinese.
Objective C
Erlang is fast, writing concurrent code is almost trivially easy, and (my personal favorite) has a database that uses Erlang as the query language. Writing web applications in it is surprisingly easy too.
Not sure on the long-term outlook, but Erlang popularity certainly seems to be on the way up.
Try Finnish, Oracle hasn't bought Finland yet.
Learn them all.
Dood, like learn Mandarin, or whatever. You can make much more knowing that. Six years and you can name your price !!
Or at least you will look real cool to new dates when you order in chinese at City Wok !!
I've deliberately omitted .NET — I have no desire to do the Microsoft languages.
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. Other languages he's mentioned are all pretty much unused apart from in the domain of nerds but certainly not by the majority of the companies recruiting. Ironically enough I reskilled from C# and other .NET oddities to PHP a few years ago purely out of personal preference.
Last I checked, being able to create apps with native hooks on the Mac platform is the hottest shit steaming right now.
I would suggest Python - being a parselmouth is indispensable in fighting the Dark Lord and his Death Eaters.
Win or lose, either way you'll earn money.
No language is more universal. No language is more direct. It will never die. It transcends trends. It is the only decent language to me, having tried way too damn many in my life and always left wanting until I return to C.
It is the perfect language. People might gripe that it's somehow "obsolete" or missing "modern" features, but to me, that's part of its appeal -- you get to do with it exactly what you need to do, and that is the essence of programming to me. Leaving too much to the language makes me feel powerless and less in control.
I love C. If it was legal, I'd marry it.
If you're looking for a very high-level language and your main target is web development, you probably should give Ruby a try. Ruby/Python/Perl have similar features, but Ruby definitely has the edge for web-related capabilities.
A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
That's why I'm one of a small but fast growing number committed to voting for Ron Paul in the 2008 Republican primaries.
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
I don't understand these people who decide to focus on only one language or platform. It's just a tool, for crying out loud. If you're a good programmer, then you'll have many such tools in your toolbox. You won't go asking "What language to learn?" on Slashdot, of all places. If a tool looks like it might be useful, you sit down and try it. If it's useful, you keep on using it. If not, throw it out!
Even a shitty programmer working full-time should be able to easily pick up Perl, Python, Ruby and Go within a few months. Erlang may take slightly longer, if you're not familiar with functional programming. If it takes you longer to pick up the fundamentals of such languages, or it requires so much effort on your part that you need to only focus on one, then maybe it's time to investigate another profession.
The fastest growing, hottest languages on GitHub right now are Ruby and Javascript. Partly that's due to the amazing Node.js server-side platform that runs on Google's V8.
".NET languages"
.NET. There is a reason for that.
Do you really want to be a monkey for Microsoft? Most of Microsoft's own software is NOT written in
"Tying one's career to ideology isn't always a smart thing to do."
Tying one's career to careful thinking is always smart. Do you really want people easily de-compiling your code? Microsoft is the British Petroleum of software. Eventually there will be impossible problems.
A full, complete version of Microsoft's operating system, Windows 7, costs $300, about half the cost of some laptops. Eventually Microsoft's abusiveness will cause an Enron-style breakdown, in my opinion.
C++ is way out of favor for web-based back ends, but it still has a strong life in the world of game servers and the like.
If you really want to stay in web-land, you are looking at .NET, Java, or PHP, with PHP being shunned by "serious" businesses, and .NET being used by both the top and bottom of the line. Non-MS shops are still leaning on Java for anything robust.
The Python frameworks are starting to take away from the PHP sector of the industry, but they're not impacting the places that previously already went with Java or .NET.
You need to drop the Microsoft hate if you actually want to be employable.
Don't fool yourself, Node.js is nothing but a shitty reimplementation of Erlang. You get a shittier programming language, a shittier standard library, shittier performance, shittier support for developing massively-parallel software systems, shittier support for developing distributed software systems, shittier portability, shittier reliability, and, of course, shittier developers.
Any sensible person just goes ahead and uses Erlang. Why subject yourself to so much shitty by using JavaScript and Node.js?
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.
A lot of web based back end stuff has shifted over to python (thanks to Django and Pylons). They are very powerful web frameworks, and an expertise in python would help your chances for employment, much more so than Ruby (on Rails).
Python is also a very powerful scripting/glue language (much easier than Perl and as powerful).
I don't see Go coming into prominence any time soon.
Erlang is a strong competitor if you want to really dig deep into DB stuff (but since you're not a databases expert, that's probably not the way to go).
You're asking the wrong question.
Here is part of the right answer.
http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks
Why? Well, because WHY are websites written many times?? To profit via some form of transaction (and not just e-commerce related sites either)...
So - What does transactional db work the best & easiest (& most all major DB vendors support it)? SQL, no questions asked.
(Now, relationally designed SQL utilizing DB's may not read quite as fast as say, an older ISAM DB, but it writes & does indexed searching, much faster by far & is quite near "universal" nowadays and for the past 20 or so years++ in information systems work).
APK
P.S.=> Nicest part is, however, that aside from TSQL in SQLServer or PLSQL in Oracle (& whatever else)? Besides the DB engines knowing SQL (especially stored procedures leveraging), most all programming languages have interfaces like ADO into those DB engines, using ANSI-STD SQL, @ least that, client-side (or building parameterized stored procedure strings & sending them DB stored proc side), AND/OR, the DB vendor provides fairly easy to use interfaces & examples also... can't beat it, it's "everywhere"... apk
Then you have just limited your career. But don't let me stop you, the rest of us want jobs too.
---- Booth was a patriot ----
"Even a shitty programmer working full-time should be able to easily pick up Perl, Python, Ruby and Go within a few months."
That's an exaggeration, unless "easily pick up" does not include "learn all the weird quirks".
Why should we all wrestle with different languages? Why can't there be one language that handles most of the cases?
I think every serious programmer has, at one time or another, written an editor or a compiler. I wrote a compiler for some early HP data collection hardware. But I don't have one editor that does everything I want and editor to do, and here we are, discussing which language to use, because we aren't happy with what we have.
We need better management of C++. We haven't had good management: Good leaders are not *always* good leaders. "... while Bjarne Stroustrop was a good leader when C++ was introduced, he has basically exercised too little power in the last 20 years in making sure the C++ language and libraries developed rapidly enough, and in the correct direction. "
PHP. But, I'd recommend learning programming/software engineering concepts using a variety of languages. When I was starting out many decades ago it was hard to get one's hands on a compiler and even harder to get time on an actual machine. These days you can get solid compilers or interpreters for most every language 100% FREE. If you understand how computers work, how programs are written, compiled, or interpreted, and you have a decent mind for math and problem solving you should be able to learn any language you want to quickly.
Befunge, FTW!
I am the penguin that codes in the night.
10 print ".net would land you a job in no time."
20 goto 10
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.
If you knew .NET I'd have a job for you right now. Love it or hate it, MSSQL is still the fastest kid on the block, and its .NET reporting tools aren't going anywhere anytime soon.
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.
http://saveie6.com/
You should learn Chinese.
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 -- 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.
A competent C# or Java programmer can pretty much stay gainfully employed for as long as they so desire, but the work is usually enterprise software development, which isn't always the most interesting environment (think "process enema").
If you want to do interesting web-based stuff, JavaScript is the place to be. If you're already doing Java, look at Groovy. I've got almost a decade of hardcore Java experience, but my free time now is spent with JavaScript and Ruby.
You might want to spend some time on jQuery and other tools for building more interactive web UI's. While there are promising newer languages for the backend, it's not yet clear that they're going to take over from Java, PHP, and .NET. But the Javascript, client-based side of things is definitely growing and new tools are being developed.
People have been saying that for years, since .Net came out. And yet, .Net has never really taken off. Slowly growing, yes, but not at any point "taking off" as keeps being said year after year. It's sort of like saying this is the year of Linux on the desktop, it keeps being said but has never really happened.
If all you care about is being the most employable, PHP/Java/.NET and JavaScript are your best options.
As for something which has a future, I like Ruby. The mainstream implementations are all open source and (so far as we know) patent-free. I'd seriously consider deploying to JRuby these days, but it's reasonably compatible, so you certainly wouldn't be locked into Java.
Python would be another good choice, but I think Ruby has it better in terms of the number of entirely distinct implementations. If Oracle sues JRuby out of existence, there's still the mainstream C implementation (MRI) with multiple interesting branches, MacRuby is looking interesting, and IronRuby strikes me as at about the stage Jython is.
Don't thank God, thank a doctor!
Define "drying up". If you look at the percentage of non-Microsoft web-based development positions based around Java and PHP...its a pretty high percentage. Personally I wouldn't waste my time learning a niche language/framework like RoR. Learning to do Android or iPhone development would probably be useful.
Smalltalk is an amazing language, and it is really unlike anything else.
Squeak Smalltalk is Free and available now. Requirements are lean, and it is really nice as a benchmark for what a *REAL* object oriented OS should be.
over the last 5 years, all i have seen had been hourlies for php coders get higher and higher. now even indian outsourcing companies charge much higher rates compared to 5 years ago.
Read radical news here
You should try going with Haskell. I personally don't know the language, but I have a friend who decided that he was going to learn it and make a text editor program on Linux (that fits his needs) and it turned out to be really well written. There's a lot you can do with the language, and I'm sure that there really aren't too many people who actually know the language in depth like some do Java and C++. If you learn that, I'm sure there will be a greater demand for your skills. In terms of it being in demand in the current market? I've no clue.
It probably depends a lot on where you live but Rails developers are in desperate demand in the Seattle area. If you want to be a good developer you should always be learning a new language though. Clojure and Scala, and Node.js are probably some things to be looking at if you want to do some work on the cutting edge in the near future. As for all the .NET fanboys out there; you should realize it's perfectly reasonable to not want to learn that framework. Quality of work-life is important to a lot of us and we're not just looking for any job. Being stuck in the microsoft ecosystem can be soul crushing for a developer, it also limits your future growth into other areas. There are a lot of people who need you to be savvy in POSIX, and MS developers tend to be lost in that 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 think you're missing a big part of the point of the article. Plenty of us with Java Enterprise and C++ experience are finding actual job prospects to be pretty scarce, especially if you want to be choosy about location or salary.
-fb Everything not expressly forbidden is now mandatory.
Try learning and getting experience in any of the Pick based systems - the age of the average programmer is getting close to retirement age, so there's increasing demand.
That's why one becomes proficient in Perl and Ksh.
Speaking as a constantly employed for 25+ years Unix (and, sigh, Windows) sysadmin and application/system programmer anyway. Obviously C, Java, TclTk, Javascript, BAT/CMD, VBScript, and a bunch of others here and there have helped, but they're gravy. Of that "extras" list, C, Java, BAT/CMD and VBScript have been the biggest help, in that order.
As for Python. I've never used it, and never needed to. Now, if I need to do some BEA/Oracle Weblogic appserver programming, then I'll need to pick up Python.
Personally, I'd like to go back into research using LISP and Prolog again.
It must have been something you assimilated. . . .
I guess the place I go that pays me money is merely a figment of my imagination.
Depends on what you're looking for. Python also has the added bonus that it's a pretty good pack mule for server management and tasks where the web application has to transfer work load to the server below via the command line.
The coder/programmer/software engineer job market is in a glut because there are so many skilled coders out there and so few employers that want to hire experienced coders right now. The reality is the employers continue to want to hire fresh out of college university people because they cost peanuts while the other more experienced coders usually demand a respectable salary because of all the personal time they have sacrificed to learn the coders skills. Because of this lack of appreciation for the experienced coder skills, and because the universities continue to churn out more coders, there will always be an oversupply of coders all over the world. This is certainly a blessing for employers, but these are hard times for experienced coders.
If you enjoy coding, you will find a way to code no matter what other job you do in the meantime to pay the bills. That is if you can find a job. In the meantime, you'll have to resort to doing exercise and getting out of the house in order to avoid going crazy.
For as long as you don't own the business, there will always be the risk of losing your employment. If you do have your own business, you already know business is always a yoyo going up and down and you hope that the up time will bring in enough revenue to get your through the down periods. From what I can see, employers everywhere are going through a down period with a few exceptions with respect to those that got government taxpayer bailout money somehow. The system is unfair in that way because everyone should be getting taxpayer bailout money equally. The government however always likes to use the "It's for the greater good." slogan to justify these bailouts which aren't agreeable to most taxpayers. Government policies are at fault everywhere in the world. I observe protectionist attitudes from many countries. The worst part of it is many countries have placed many constraints to restrict people from working elsewhere unless they have the required paperwork. For the great majority of people, the required paperwork is too difficult to obtain which ultimately stops them from having the right of mobility which is the right to work anywhere in the world. Eventually this is going to have to change. Everyone in the world should have the right to work anywhere in the world and that is presently not the case. The paperwork proves the worlds' government immigration and work policies are shameful. Not everyone has the privilege to have a degree and most govs/businesses require one to work everywhere. It makes mobility a privilege and not a right which is shameful. It's a given everyone can learn a skill given the guidance, but gov's and businesses everywhere don't care. Gov's and businesses everywhere are shameful in that respect.
If the gov's and business changed these policies to "degree-less skill mentorship work anywhere in the world" policies, the economy would spark up.
Move to another city or country for a meaningful job opportunity. My father gave me one piece of advice which was handed down from his father. "You go wherever you need to in order to get a job."
The other piece of advice that I recently acquired from someone special is: "Once you do have a job, do everything you must to keep the job as if it is your last job opportunity."
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 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 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?
Stick Men
Hmm, you want a job and (mistakenly I think) believe that the languages you've learned are under immediate economic threat. I'd argue that the reason those specific languages are under a perceived future threat is because of their mongrel ancestry But you discount the one set of languages that are free from such problems.
For the mere-mortal programmers out there, those that often end up settling on scripting languages, I think C#.NET is a great choice. None of the lax, frankly amateur programming styles of perl and php and much of the structure that allows you to write something that will genuinely be useful to the guy who replaces you.
I'm an ANSI C refugee who never really got on with C++ and moved to all sorts of rubbish in the intervening years. I've now settled back with C# and find in it a great structure that allows me to get on and write GOOD CODE.
Honestly, if you discount .NET I highly recommend Java or php - anything else and you're niche. Sometimes the niche might be well paid (Cobol comes to mind!), but mostly you're more marginalised than you started out.
Python, definitely Python. If Jesus was to stage his second coming these days and if he decided to come back as a developer he'd only write Python code. Every Python developer I know says so. Mind you all the Perl developers I know say the same about Perl. It was major fun to watch when they meet up a while ago and start talking about it. The whole thing ended in a godawful riot where a bunch of people were beaten up pretty badly. Finally the two sides got tired of it and realized that they are too evenly matched for either side to win and besides, Python and Perl both begin with the letter 'P'. Soooooo... after that startling realization they made peace and celebrated it by going down to the local pub and getting pissed. That in turn resulted in the whole mob mounting a crusade against those Ruby coding heretics after somebody (don't look at me, I'm a C developer which makes me some sort of pointer wielding Pagan wizard to those guys) mentioned that the Ruby freaks had been spreading false rumors about Ruby being Jesus' favorite language. Thankfully they were all arrested for 'unsettling of proper order in a public space' before anybody got killed which was especially funny because the Ruby guys didn't even know why they were getting their asses kicked.
Tying one's career to ideology isn't always a smart thing to do.
But it is a smart thing to do to get a post on ./'s frontpage!
I intentionally tried to avoid MFC, and learned it anyway. I avoided .NET like the plague, and work moved me right back to the plague.
Since .NET 2.0 it's been a stable API, and if you're going to do web or web/desktop development, it's a good thing to have in your back pocket. And I'm saying this as someone who intentionally avoided it.
I picked up Prosise's MFC book so I'd know what MFC was doing behind my back, and I dropped wxWidgets once it became clear it was an MFC "port" - if you don't believe me read the wx history. I intended to stay classic MFC all the way, and learn something else - anything else (but Java, that's my ideology and just as unfounded). Qt and... whatever the dominant web language was in 2001.
I write .NET for a living. If nothing else, you can be read-only with .NET like I am with Java. I can search for an algorithm and find a public domain or otherwise compatible implementation, and if it's Java I can port it in a few minutes and have what I need - whether it's .NET or C/C++, which is where I prefer to work.
Learn .NET, even if you are working in a full open source shop. There are lots of open source programs available only in .NET, and a free compiler (not the GUI, just command-line).
I don't have mod points, so I'm just backing up dreamchaser (49529). I can write x86 assembly (att or intel), C (K&R, C89, C99), C++, VB5/66, VB.NET/C#, ASP 3, JavaScript, VBScript (cscript and IE), SQL (MS and Oracle) and lots of others less proficiently... so it's not like you can't learn multiple languages. In fact, the more you know the better. I write better .NET code because I think in assembly when performance matters. I write better ASM code because I think in OOP when code clarity matters. Yes, I probably need mental help, but the more you know the better you will be. The more ways you can think about something, the more solutions you can weigh when you have to actually implement something.
Here's the best part. Learn what .NET does *wrong* and avoid implementing that in your apps, or avoid using constructs like that in whatever language you get paid to use. Learning .NET has made me a better C++ programmer, far more than any other experience in my life. Both for the good parts and the parts that could be better.
You'll want to learn to use ILdasm if you go this route, no question. Obviously my vote is .NET.
Search sourceforge for stuff in .NET languages, C# is probably going to be more familiar, download the free compiler from MS, compile, make changes, and start reading.
Seriously. My life is made hell by one stupid microsoft idiocy after another day after day (I manage a server farm of Microsoft VMs). The fact that they treat their development community like crap (Classic VB, f'rinstance) and abandon products with... abandon doesn't help much.
Despite this, that's where the jobs are and all the crabbing of myself and the development community hasn't changed that. I hated MS in 2000. I hate it in 2010. I expect to hate it in 2020. And it's not going anywhere. Profits are up. Like the air, it exists. And I'll still be cranking out C#, ASP.net, or VB.net or whatever is called for.
Please do not read this sig. Thank you.
Seriously, this same topic... AGAIN?
I like how you have put perspective into this conversation. Most software engineers build up their design time skills - documentation, proposals, test plans - or the management side of software development. Take a good technical writing course is what I would recommend across the spectrum. Follow that up with a Dale Carnigie (sp?) public speaking program. The better you communicate with others, the more in demand you will be. It really isn't having "mad skillz" that ensures our sucess; we've proven ourselves countless times before!
C# is a mostly proprietary language, tied to the internal politics of one company that has a history of making decisions that are unpleasant for its customers. (Such as releasing Vista, when Microsoft managers said it was not ready, according to a court case.)
This is a measure of how much people are talking about a language online, not a measure of how many jobs there are for it. I don't think that there are many jobs available for NXT-G despite it being a fast riser :)
So, don't bother with lisp. .NET is popular, but not enough to get over the M$ factor. And unix at 666 W.T.F.??? Looks like C and SQL, same as last decade!
Red to red, black to black. Switch it on, but stand well back.
If you know Java, C++, and PHP for 6 years, and cannot pick up any arbitrary language in a weekend, then you should find another business immediately.
You've clearly failed to grasp the concepts of programming.
I've always been puzzled about the focus on languages. A language is just a tool or a palette. The important thing is being able to design software in a clear and efficient manner. Languages can typically be picked up in a very short period of time. I understand that the people who only understand buzzwords are blindly seeking a particular match, but if they were smart, they would look instead for a person who was a skilled designer of software, rather than a person who knew a particular language.
In my career so far (I'm sure that many others have a much broader list), I've had to write software in: assembler (IBM mainframe, 6052, 8085, Z-80, 8051, Z-8, 68K, X86), BASIC, FORTH, FORTRAN (4, 66, 77), RATFOR, lisp, C, C++, PASCAL, PROTEL, perl, tcl, python. Java I've written a couple of example programs in, but have never written in it professionally. But I presume it is no harder to become proficient at than all the others. ADA is a good language; people are starting to realize the value of the rigorous protections it applies. But yeah, we were writing ADA code back in 1995, and it didn't seem widespread outside the military at the time.
If you've got Java and C++, presuming you're fully using the power of these languages, then you should move to Scala. Not to slam any language but in terms of experience if you've only programmed in PHP you'll find Scala "complex". A Java programmer will find Scala complex at first and absolutely wonderful as it soaks in. A C++ programmer already has enough grasp of language subtleties that Scala will not be a problem.
My take on it is it is a sophisticated tool for sophisticated applications, having levels of richness and expressiveness that I haven't experienced in years... got the same feeling as when I moved from C++ to Java when it was new.
I've been using it for about 6 months having written 1000s of lines of code now. Absolutely loving it--and even though I was happy working in Java, I wouldn't go back. (The longer I use Scala the madder I get at Java--why aren't some of the low-hanging language features in Java by now? For Java7 they're talking about strings in switch statements and I'm supposed to be impressed, like they're doing me some great favor?)
Scala-to-Java interoperability is fine... not quite as seamless as the glossy brochure leads you to believe but not at all bad. I've written EJB web apps in a mix of Scala and Java, utilizing a number of 3rd party libraries in both languages. No issues. Actually the only issue I had was with Scala's actors I was trying to use in an EJB. Since actors are basically fancy threads and you're not supposed to create threads in an EJB, I got the trouble I deserved. Actors outside the EJB container work great.
It's a risk--few enterprises are aware of, or ready for, Scala (or other "alternate" languages for that matter), but think about it and it seems inevitable that Scala will capture some enterprise share due to its Java interoperability and strong typing (I love loosely typed script languages too, but I wouldn't want a 50K-line enterprise app done in one).
If you want to be another common fish in a huge ocean, learn C# and sharepoint development. If you want to be hip and cool, but are willing to compete with low price coders from developing countries, go with LAMP development. If you want to be a big fish in a small pond and can self promote and communicate well enough to pull it off, pick something painful but useful to corporations ( Rational / Websphere / Oracle / Siebel / SAP development ).
I do most of my client based work using Lotus Domino as a back end server and data platform. The development IDE is freaking horrible compared to visual studio or pure eclipse. The documentation is poor at best. There are a lot of workarounds you have to know. In many respects, it's a terrible thing to have to learn. HOWEVER, I've been doing it for a long time and am very very good at it. I'm never short of work, and I can accomplish things with it for my clients in less time and at less cost than any other platform I've ever found. I also use visual studio to build desktop applications, c++ to write custom modules for my Asterisk servers, javascript for web front end stuff, bash shell scripts for linux back end stuff, etc etc etc.... Right tool for the job and all that.
I know by writing that I'll draw a bunch of crap from cool kids that hate the platform I use to make a living, but I'm willing to bet most of them would trade annual incomes with me in a heartbeat if I gave them the chance. I've managed to have my own business for close to 18 years by focusing on what works rather than what's cool -- and by never letting myself be just another commodity programmer among a giant pool of people with similar (and frankly better) skills.
The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
ICI
I only chose that because I know - without trawling through all the other comments that are so well thought out and have properly answered the question - that nobody commenting will have picked it yet.
Check out, for example CeeLanguage. When googling around for infomration on languages, c2.com comes up all the time. There's a lot of interesting "jumping-off points" on that site.
Learn Forth and Lisp. Learn one C-like language. You don't have to write huge swaths of code in them, just understand the issues. You'll start to think about the hidden Forth in C, and why you find yourself doing something like closures (Lisp) in C if you program it long enough. See the commonalities in languages. Then, you'll understand that the language is just a hazy window through which we see programming.
Alas, none of these windows is perfectly clear. Forget about the windows (no pun intended). Think about what's on the other side of the glass.
Objective-C and C#, mobile app stuff is hot. Everyday I get coffee and pass by someone pitching their new social networking app or similar.
Also Google's "Go" language might not hurt if Java really gets screwed up.
Your fundamental ability is programming not any specific language. If you can program, learning a language to a decent level of proficiency is a one week task, and learning all the best practices for engineering within that language another month's effort. So don't worry about learning a language unless and until you have a need for it.
You're asking the wrong question. The question you're asking should be: What kind of work do I want to do? Find a company whose products and work you like, and submit your resume. Then, be open to learning whatever language they use on the job. You should also try .NET before you make up your mind, I had similar reservations as you but actually enjoyed working with the language. That and my skill set commands a pretty decent salary these days.
Machine code... Assembly is as high as I would go... Everything else is fluff
For justice, we must go to Don Corleone
MS tech is failing on many levels. Linux is growing in the server space. Overseas - many countries are developing national OS's based on Linux. Google and Apple are gaining control of the mobile space and MS's latest attempt isn't - so far - setting the world on fire.
MS wont disappear - but its reasonable to think that it will slowly fade into less relevance.
If you believe that MS is a losing bet - it reasonable to not consider the MS set of languages.
There is (in my experience) actually a lot of work out there for companies that try MS and then find it wont scale to their needs.
as for me - seeing a company using only MS tech is a huge warning sign about their lack of really understanding IT (or being so small as to not have a lot of interesting opportunities !)
But if you don't want to, you don't.
Help stamp out iliturcy.
I'm looking to do mostly Web-based back-end stuff. I've contemplated Perl, Python, Ruby, Erlang, Go, and several other languages
And millions of other people are looking for the same jobs.
but I'll put it to you — what language makes the most sense now to get the jobs?
If there is currently one language to learn AND get the job, it's Objective C. The company where I work is having difficulty hiring Objective C programmers because all the good ones want to work for Apple and Adobe, and the rest, well, the rest can't spell the name of the language right. Personally I kinda hate it's syntax (and all the obsessions with late binding), but if that's not repulsive to you, it could even become your favorite language.
Sir, Microsoft is where the jobs are if you are a mediocre chum.
Go away.
To each his own, but may I ask what drove that decision? Love or hate Microsoft, but C# is pretty much the pinnacle of C-style programming languages.
I'm a 2000 man.
Then you are a tard.
Mandarin
Except for the whole non-portability thing. And the chewing a leg off every five years because they forgot to plan a migration strategy thing. Other than that, yeah.
Help stamp out iliturcy.
Programming is entry level for 85% of us. 10% switch into other careers or have babies. The remaining 5% become "architects" that can't program for shit, but make lots of cash.
The shortest way to more cash, while still being in software development is to study and get a PMP from PMI.
I would argue that at this point ObjC is not at all purpose specific, as you can either be doing mobile programming (iPod Touch/iPhone), tablet development (iPad) or real desktop work (Macs).
Some people have even done ObjC server side, though I'm not sure how widespread that would be outside Apple anymore (WebObjects had some traction for a while).
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Java = Android, Android = Money.
I've deliberately omitted .NET — I have no desire to do the Microsoft languages."
Stop right there. You need to learn something, and it's not just a programming language. If you want to get a good job, you need to learn a new attitude, and stop putting idealistic considerations ahead of what is in your best interest educationally and financially.
Deciding not to learn something because you have an uniformed preconceived opinion about it, is a form of close-mindedness that will not serve you well, and managers/interviewers won't tolerate it, if you tell them you intentionally avoided learning .NET.
It doesn't make sense... it doesn't seem rational, seems totally idealistic and self-destructive.
Its kind of like wanting a job as a PC repairman, but idealogically refusing to learn about Windows,
and wondering why you get so little business supporting Linux workstation installs.
If you want to get a good job and don't have one, the first thing you need to learn is that You learn what the market demands. And that: the skills the market demands of programmers have is more important than the programmers' personal views on which languages are "best", "okay", or "ugly", when it comes to getting a job.
I'm sure it will always be possible to get a job as a PHP/C++/Java programmer still, you just have to be really good at what you do -- because there are still a lot of PHP/C++/Java programmers, competing for a waning pool of jobs available to them.
So basically... your choices are Learn .NET, because it's what is most in demand, be content waiting longer to get a job
for something less in demand, or switch to another field.
As to the general question of what languages to learn: I would strongly urge you to learn .NET, ASP.NET, JavaScript, jQuery, ExtJS, MooTools, ProtoType, Google Web Toolkit, Dojo, Python Django, Zope, TurboGears,
Ruby, Rails, Perl, HTML::Mason, ColdFusion / CFML .
If you are really itching to learn something new, how about wandering out on the bleeding edge of Web and really dive into technologies, you have used, but not really mastered... it's also a great gateway to understand how to tailor site output for iOS and Android devices.
Outside of that, I'd learn Lisp as it will improve your programming in all languages.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Sorry someone had to say it. :-)
Kosh: "Understanding is a 3 edged sword, your side, their side, the Truth."
Python is a really easy language, you could probably learn most of it in a weekend with your experience. So even if you learn one of the others you might want to learn python just for the fun.
You may not be looking at where the money is going. It would appear that there's quite a bit of development dollars being spent on iOS (Objective-C) and Android (Java) apps. US developers might also be impacted by offshore developers, who have drastically increased in number and radically improved their internet presence during just the last five years. Entire software development teams have disappeared from the US and appeared in China (altho the relevant coders did not).
So you can say "pardon my french" and mean it.
Mentioned FORTRAN to a student the other day and he thought I was talking about 4chan.
Definitely Not. The. Same.
I never hear about out of work SAP developers.
Profits might be up. Market share is down. If you're looking for a new language better to go for something that is on the way in rather than the way out.
...if you work so much indoors: http://www.vitamindcouncil.org/treatment.shtml
Adequate vitamin D may help prevent the flu, too.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
Pick a task first and then learn the relevant languages? There are so many languages around these days but in just a few different categories they are very similar. I'd say it's better to learn a little of everything and a lot of the underlying mechanisms. I've found Perl and Python extremely useful for example, but learning them was a matter of spending a few days accomplishing what I wanted accomplished. Of course there is infinite modules left to learn, so I'm not sure what "learning" should mean here.
Again in my limited experience, the windows world is mostly a matter of learning to understand windows. After you understand what kind of things are available to you on the OS level, does it really matter that much if it's Visual Basic, Visual C++ or Visual whatever?
Then on another side of course one needs to know things like object oriented development, but is that a matter of just "learning" something or isn't it rather a question of years of experience? Between two different sets of "years of experience" I suppose it makes a bit difference whether it's been in Java, C++ or some Visual Crap. But "years of experience" is unfortunately not something you can sit down and learn.
</musings>
You ask a question "what language makes the most sense now to get the jobs", but then you don't want to hear the answer (C# and web based .NET frameworks). How can you expect anyone to take this question seriously then? It's like a smoker going to the doctor and saying "I want you to tell me how I can get rid of this cough, but I have no desire to give up smoking, so I've eliminated that as an option." The doctor would have nothing to say.
Australian running a company that does C# / C++ / Java / SQL / Python / Mathematica
Microsoft trying to figure out why so many people use languages other than .NET stuff..
Maybe you should focus on being a better engineer using the languages that you already know. There is no drying up of jobs for people good at what you say you work with. If you can't find a C++/PHP/Java job, it probably has to do with your skill level and not your choice of skills. It's doubtful that switching to another language/toolset now will help you.
Chinese if you plan to go into business. Hindi if you plan to go into IT or Farsi if you plan to go into intelligence. Oh wait...
About the only way you'll get a job in future is to learn Chinese...
I used to hate JavaScript, but I'm a big fan now. I'd highly recommend learning it. Don't get me wrong - I don't expect it to get you many jobs for another 5 years, but keep your eye on it.
Why does a specific programming language have anything to do with your marketable skills? Languages are easy to learn. If knowing a language is all you are putting on your resumes.. well..
Consider getting out entirely. Do you really want to spend your life in a cubicle farm building stupid ecommerce or intranet apps? Whether it's .NET or not doesn't matter, it's all the same stupid shit.
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.
“Common sense is not so common.” — Voltaire
You gotta learn Pascal, man.
Oh wait, (checks calendar sees that it's not 1984 anymore), well nevermind, scratch that.
And no, your "knowledge" of C++ does not count. If anything, knowing what C is will give you an idea what pieces of C++ are from a completely different language with a completely different design.
Contrary to the popular belief, there indeed is no God.
C, C++, C#, Java, Php, Python, Ruby, Go, D, Perl, etc., are all dead, most programmers just don't know it yet. They're dead because they cannot easily adapt to the new multi-core reality. Quad core machines are common place now. 16 core machines will be common within two years, with hundred core machines not far off. The only way to make good use of this power is with a language that has no deadlock cases and no critical sections. There are few languages that meet those requirements. There are even fewer that can continue operating despite bugs and can evolve without down-time. Erlang is the only language I know that meets all these future necessities. Coding in anything else means a short system lifespan.
Here's a great article on the subject. Take your current PHP knowledge, and apply it to a fast growing segment. http://news.cnet.com/8301-13846_3-10458748-62.html
"... Java ... swearing at the damn abomination of language."
I would like less swearing and better management. I'm tired of having to learn new quirks. Maybe a language like Java can be a compiler switch in a C++ compiler, that forces programmers to use a limited set of features useful for application programming.
We need a language that belongs to all of us, a language that is not dependent on the actions of billionaires like Larry Ellison or Steve Ballmer.
Of course.
``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
Spanish. Definitely Spanish.
I don't see why you should worry about Java given that Apple and Oracle have both committed to the OpenJDK initiative.
http://www.apple.com/pr/library/2010/11/12openjdk.html
So this means that both cross-platform java desktop apps and web services are safe.
I have to ask though, why the avoidance of .NET? If you are "working" for a living then you should be willing to work with whatever tools/languages are required. Leave zealotry at home and don't bring it into the workplace.
Jesus was a compassionate social conservative who called individuals to sin no more.
Why can't you find the topic? This is an Ask Slashdot, and the question isn't "How can you defend C#?" The question is "What's the best language to learn that's not in the Microsoft set?"
I mean Jeez. Talk about being unhelpful. If I could I'd mod every single one of you off-topic. What part of "C# is outside the solution set" got away from you?
The OP wants help, not argument.
Help stamp out iliturcy.
Yes. Learn Scheme. It'll give you a new understanding of what it can mean to program. I recommend starting with tehe book "How to Design Programs" and the Racket implementation.
If not Spanish ....
Python all the way.
It became my new favorite within 30 min of coding.
Great post, and I'd like to add a couple of other points.
Instead of just downloading the compiler, download Visual C# Express. 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.
Hydraulic pizza oven!! Guided missile! Herring sandwich! Styrofoam! Jayne Mansfield! Aluminum siding! Borax!
You are thinking like a 20-something techie. Start thinking like a 40-something with kids. Learn how to be a leader, how to manage projects & customers and how the business operates. Look around your office and find the 45 year old developer grinding away in the corner - then ask yourself: "Do I want to be that guy in 20 years?"
I would add to that: Project Management and "Software Engineering" skills.
Before you die of laughter.... the languages you already know are good server side languages for web development.
But, you're missing the client (web browser) side. As google is proving, more and more apps are being moved into "the cloud" and run out of a web browser. It may not be as glamorous or whatever, but I suspect that there will be a huge glut of jobs in that space as more companies attempt to migrate their legacy client + server apps to the browser.
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
If you're not seriously considering PHP then you're crazy. It's easy to learn, widely used, and jobs are always available for it (assuming you're local tech economy is decent). It powers most e-commerce sites and tons of others. I've been employed as a PHP developer for over 4 years with no gaps in employment. Ruby and Python may be fine, but neither is hiring like PHP. If .NET is off the table, PHP is the way to go, at least for starters.
Were you doing hand-coded Swing, or using a GUI builder like Netbeans' Matisse?
And how do the GUI tools on .NET compare?
I'm not a lawyer, but I play one on the Internet. Blog
Don't laugh but there's still a lot of old assembler code out there that many major corporations depend upon. With very few people under the age of 40 able to modify said programs anyone with the skill set is going to be in high demand.
Download a copy of the Principles of Operation manual from IBM's web site and take a gander at it. http://publibfi.boulder.ibm.com/epubs/pdf/dz9zr008.pdf
If you want to assure your future, learn SQL, PL/SQL, Oracle Forms, and the Oracle report writers. And if you are so inclined become an Oracle DBA. Best is to learn all of it. You may not like the Microsoft products, but there's demand for it, so pickup .NET. Forget
your anti-microsoft prejudices, they aren't helping your pocketbook one bit. Good luck.
How about mandarin or hindi? Even spanish would open a lot of job opportunities down south. I know, I know, some of you were mentioning not wanting shit jobs, but believe me, some of these places are not as bad as they seem in a struggling economy. And in terms of programming languages, you're probably good to go.
Go for Scala, Clojure, Erlang or something else _not_ solely from the Algol-derived world you are comfortable with.
Personally, I am writing an application in Scala now, and the codebase is much, much smaller than the equivalent java codebase. This is a good thing.
You see, it doesn't really matter to me if you know e.g. Scala. I can't find people with that skillset anyway. What matters to me is that you know how to learn yourself new stuff, and that you are fun and challenging (in a good way) to work with.
Perhaps I'm in the minority, but I'm glad they killed classic VB. It was far from perfect and getting awfully outdated when it got replaced with .NET. Then again, if the change had caused me unending pain in rewrites, I might think differently.
I like being miserable. Now what?
I've played with it and it will do. Ruby I don't know, but it seems workable and there are Jobs postings for it so somebody needs it.
May as well manually drag this discussion back on topic.
Help stamp out iliturcy.
WTF?
Google this: .net do wrong
what does
Expected to see a reply from miguel by now, but keep in mind you can love C# and never use Microsoft stuff. The Mono (mono-project.com) ecosystem and community are amazing, and between MonoDevelop, MonoTouch, and even things like Moonlight, you can work on the various stacks (web, client, mobile, etc.) without using Microsoft stuff. You can also use the Microsoft stuff for free with the various Express versions (www.microsoft.com/express)
Having done tons of both Java and C#, if you already know Java and haven't already learned C#, you're really doing yourself a disservice. A good example of someone that does Java for their day job and still learned (deeply, obviously) C# is Jon Skeet - you can find him via Google, where he also works ;)
no really. seriously. Learning Chinese is going to be more important than any particular coding language. In the very near future they will nationally graduate more computer programmers than english speaking countries will have total graduates.
The way Nokia has been trending lately, I wouldn't bet on Finnish.
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.
I have made mostly embedded realtime systems, I love to code with C. but I have had to do many other things too, I've beeing doing some porting work from c to java or c-to-lisp, or lisp-to-java, I didnt know these other languages but I managed well, because I have this programmers mind, I can concentrate and do everything it takes. if my boss asks me to do some thing in other language, I will do it.you dont have to know everything about some landuage, if you are good, you can solve it. I dont need many minutes to port my work to some other language. I have also done one project for incurance companies with cobol. its used today too in many companies
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.
Even if I knew that tomorrow the world would go to pieces, I would still plant my apple tree. -Martin Luther
Study data structures, algorithms, distributed and concurrent systems, and other core Computer Science. Programming language skills quickly become commoditized, but the aforementioned knowledge hasn't gone out of date for decades, and in the case of algorithms, centuries.
as a good developer, not a good [insert language here] developer. I just graduated from college in May. I know Java, C++, and all the other usuals. I was hired into a full-time position where I write code in Erlang. I had never written a single line of Erlang before, but I got the job because I marketed myself well. I'm sure plenty of other CS types could outcode me head-to-head, but I marketed myself as an I'll-do-anything-you-throw-at-me programmer and plenty of them still don't have jobs in their field.
Python is a beautiful language - concise, productive and virtually self-documenting. And Appengine is the future of web app development - scalability and system administration suddenly become Google's problem, and I'm not delusional enough to believe I can do either of those better than them. If your app hits the big time overnight, you're popping champagne corks - not blood vessels. Likewise the vulnerability du jour doesn't have you scrambling to patch all your systems. Bottom line you spend your all time writing beautiful python code, instead of spending half of it managing systems.
Do as you would be done to.
Where I work, I currently do one interview a week. I only said "hire" twice in the last year or so. Truth is, 95% of people I have interviewed so far couldn't write decent code on the whiteboard if their life depended on it, in _any_ language. Your fear is misdirected. No decent employer gives a shit about languages in a job interview. They care about whether you can write the fucking code, in the laguage of your choosing, and whether you have experience in the areas you're applying for. I.e. if you bill yourself as a backend dude, they'll want to see if you know e.g. distributed systems, and have the backend mindset. If you're a frontend guy, that's another set of skills entirely, but still very little (if anything) depends on the language. You can learn the syntax in two days. You can learn the libraries and language-specific idioms / patterns in 2-3 months (if you're proficient in at least a couple other languages). It's not that hard.
And if the employer makes the assumption right away that you _can't_ learn e.g. Ruby on Rails, to hell with them. You wouldn't like working there anyway.
COBOL to rule them all
.. and then use the one that is adequate for the task at hand. Seriously, do not get so worried about which language; knowing c++, you should be able to grasp any of these in a couple of weeks. If you have extra time, use it to learn more about algorithms, patterns, software architecture, etc instead.
I haven't been reading slashdot for a long time because of comments exactly like 75% of the ones on this page. The anti MS, pro open source BS of this sites fan base destroys any hope of objective, productive discussion. This is it for me and /. When did nerds stop being smart?
Lately in interviews I would have been happy if the candidates had just mastered English.
I'm not trolling, either... I work for a company in the Bay Area, CA. My team has some great engineers originally from Germany, India, France, China, Japan, Russia, Jordan, Korea, Indonesia, and more as well as the US.. And none of them wants to hire someone they can't communicate with in English.
Firstly, if you're not an agile programmer, correct this mistake. BDD programming is the way to go. Spend your time there and it'll make a difference. Here's a hint. You pair program during your interview at my company with the VP of engineering. If you can't do it, you're toast.
On the language front, clojure with castalog for map/reduce and rails are a very strong place to be.
Javscript is the language of internet, and internet is the platform.
It's crappy, it has a lot of quirks, and it looks like fucking c, but it's getting a lot of love by Mozilla, Apple, Google, Opera and all the browser makers. In the last years, it's seen a continuous performance boost and it's slowly approaching the speed of traditional compiled langguages (check v8, Jaegermonkey, carakan, nitro, etc...).
And thanks to jquery mobile and PhoneGap, you can even write javascript apps that work like native mobile applications.
Dice.com: search for java:
1 - 30 of 14750 results
with backend or back-end, about 1K results.
Maybe you're just not looking hard enough?
For all of oracle's silliness, java is not going away. IBM would never let that happen, and they have the power to prevent it.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
Strictly personal:
It depends on what services you want to provide.
For the web, JavaScript and PHP is best and getting better over time.
HTML5 and CSS3 will be massively supported in a year of two. A new market will emerge.
The web is going to eat the share of simple desktop based apps away.
Bet on the future, look for existing ecosystems and products.
Consider PCs, clouds, mobiles, web, Industrial systems, etc.
Anyway, If you know basic programming tricks and techniques, the languages become easier to switch.
The thing this recession taught me more than anything is that corporations have no morals, no ethics, and really, no just claim to fair treatment. They are not humans, and not deserving of anything more than that for which they pay. Not a dime.
Corporations - particularly large, publicly traded ones - routinely use "the recession" as an excuse to treat their employees like dirt. Get off your high horse - bowing down to your corporate masters so you can "have a job" only screws yourself and your fellow employees. Do us all a favor and stop working - or at least demand the respect that you, a human being, deserve.
The fact that the economy is in the toilet doesn't change the fact that you're a human being and deserving of the respect due a human being. If you think otherwise, well, you're just as much a part of the problem as the companies which exploit the poor economic situation.
The society for a thought-free internet welcomes you.
nm
Classic VB was a crime against software development. The OP should consider C# if he wants a job.
The language I enjoyed the most hands down has to be Perl, the community was awsome. (Hit a few YAPC events to meet them). london.pm the irc channel is almost always helpful now days (as aposed to the sarcastic replies you used to get).
Perl/Catalyst for the win.
Java > 1000 jobs (dunno how much greater) C# > 1000 jobs (again, dunno how much greater) Cobol = 249 jobs As a job-seeker we want an imbalance in supply and demand where demand greatly exceeds supply. This gives us choices and to some extent leverage when negotiating compensation. I do not know how many COBOL programmers there are, but I would hazard a guess that they are dying faster than they are being created. The supply may very well be shrinking. It's certainly not considered a cool language by current CSci students. So, if you want to find a niche where you can find work from age 45-65, maybe COBOL is not such a bad idea.
Since .NET 2.0 it's been a stable API
Not really. I mean, it is stable in a sense that things don't go away - kinda like AWT is still there in Java. But .NET moves on faster than Java, and every new major release adds brand new APIs, sometimes for the same thing.
To be more specific: .NET 2.0 -> .NET 3.0: added WPF (supersedes WinForms), WCF (supercedes ASP.NET Web Services), and WWF. .NET 3.0 -> .NET 3.5: added LINQ as a feature; and boy it's a big one for someone not familiar with the concept from other languages! Added LINQ to SQL (partially supersedes ADO.NET). .NET 3.5 -> .NET 3.5 SP1: added Entity Framework, which supersedes LINQ to SQL; and WCF Data Services. .NET 3.5 -> .NET 4.0: added DLR (and "dynamic" keyword in C#/VB). Major updates to Entity Framework.
That's without even mentioning ASP.NET MVC (because it's a separate product, not part of .NET) and Silverlight...
You can keep using WinForms into 2011 if you want... but most new .NET projects I've seen use the new stuff, which is not surprising. This has both good and bad parts.
The obvious good part is that the new stuff is usually better - often not right away (WPF was kinda meh when it was first released, though you could clearly see the potential), but eventually it matures. Due to .NET's faster feature cycle, you end up routinely using stuff which Java guys don't even dream of. It's literally 10 lines of C# code for the equivalent 100 lines of Java.
The bad part is that you have to be able to keep up. If you fall behind the technology curve, you end up maintaining some legacy .NET 1.x project somewhere - which will pay the checks, but is usually quite boring as far as work goes. But then this isn't something that your average /. reading nerd would be worrying about, right?
Anyway, it seems that the original question had an explicit "no .NET" request not because the guy has an ax to grind on the technical side, but because he does not want to support Microsoft; i.e. it's purely an ethical issue. And he is certainly fully entitled to that.
If you are a good programmer than you should be able to learn any language in a reasonable time. A good programmer is person defining itself through analytical skills and but not primarility through a programming language.
I would never hire a person like you.
I agree with most when they say that .Net is a waste of time. Although it can be useful for shortcuts, the number of people using .Net for their applications is overwhelming... they are in fact "a dime a dozen" and most have little to no experience in programming for the real world. There is always good paying work for C++ and VB6.
It's all about the frameworks. It doesn't matter if your language is C, Java, C#, Ruby, or VB as long as you develop your apps using the proper frameworks, that delivers as much a possible in as few lines of code as possible - hereby minimizing costs and risk of programming errors. Noone will pay a some nerd creating something from scratch, that a framework delivers in one or two lines of code.
You're paid to create business value for those who hire you, not to demonstrate that you're a skilled programmer. No employer or end-user can tell the difference between a out-of-the-box framework-based app and some home-made stuff wich is 10 times as expensive.
So get to know them all: Rails, Spring, Hibernate, .Net (best and most comprehensive of them all - you cannot avoid it) etc. and pick up the programming language skills needed to do the glue-code between the frameworks.
If you had asked what languages are good to learn to broaden your horizons, get some fresh ideas etc, well then there is a long list. But that topic has already been discussed here many times.
But you didn't. You asked which languages to learn to stay relevant in the job market. In which case I don't see why you need to do anything. Neither Java nor PHP are going away anytime soon, no matter what Oracle does.
Even if they start to fade away, for things as popular as those, it will take decades of slow graceful migration to newer stuff. I am confident that, 30 years from now, there will still be jobs for Java developers to maintain the huge legacy applications, especially in business and finance.
How about, stick with what you know. Team up with an unemployed designer/visionary and build something which will earn you a living/improve the software ecosystem.
That way you can use and target whaterver APIs and platforms siut your skills and the needs of the project.
Start now while there is still work around, because nothing has been solved. Just postponed until we cant afford the next bailout.
A lot of COBOL programmers are retiring and the companies they work for can't or won't switch to more modern languages, this is driving COBOL programmers salaries to obscene levels. Or so THEY say.
Find a good job first use whatever they want you to use. A good job where you're allowed to be creative and not Micromanaged. Find that job and usually they'll have enough sense to use development tools that give them a competitive edge. I've had crappy jobs at crappy companies. Usually they used crappy development tools. Currently, I have a good job with a good company. I write Python and C++ code for high performance Linux systems. If I came up with a good business reason to use another language the company would most likely go with it. So find the good job and the rest will follow.
Sorry my bullshit sensor overloaded.
That's hilarious.
When confronted with one problem, some think "I'll use recursion". Now they are confronted with one problem.
There's always a "COBOL wanted" ad on the job boards somewhere.
No sig today...
I prefer C++. It's a better C.
"Sum Ergo Cogito"
Have you ever tried Digital Mars D (2.0)? It's a wonderful language. It support C (and some c++) libraries. Now swig is going to release a frontend for D on next version...
the most useful languages I've learned are Bash and Python. Bash for anything shuffling files around a lot, changing access rights, running Git commands in several repositories, and creating symlinks. Python was the first language where implementing ideas outside of Bash's scope (vCard validator, Delicious filtering) didn't feel like a chore. List and text handling is especially beautiful, as long as you don't have to deal with Unicode (I did, and it took quite a while to get reasonable unit tests that didn't fail). 3.0 should fix that though. In short, Python is the most fun language I've ever used.
100.times do
subject.read
end
Before anybody shoots me for this, read it first. Learn COBOL, and this isn't a joke either. Most old financial systems are still written in COBOL and there's still a demand for COBOL programmers cause of that. It pays well, quite some job opportunities, .... Obviously there are moral issues with promoting COBOL and its usage. If you don't want to go down that road go for C/C++ and X86 assembly. Skilled assembly programmers won't be lacking a job either most of the time.
Node.js!
Seriously the latest ASP.net mvc stuff is great too
Javascript on Node.js & Coffee-script
:T:R:A:N:S:
I have no desire to do the Microsoft languages.
You learn, understand, speak or write a language. Or you may loathe or love them etc... But you don't "do" one.
I'm not a grammar/spelling/style Nazi per-se but making half an effort would certainly suit you, sir.
Ever tried being sloppy when programming? Ever tried calling an inappropriate method on an object? Chances are the compiler will be more picky than me here.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
Java for example, sure there is a lot of bad politics about Java going on these days, but it does not worry me as a developer, because Java currently is without competition: platform-independent, fast, great frameworks. Oracle knows that and will continue to invest in it.
PHP, there is so much stuff written in PHP (including Facebook), it won't fade any time soon.
C++/C, only real language for hardware related stuff.
Of course it always depends on what you want to do: for the Web the biggest alternative is propably Ruby+Rails. Will Rails replace PHP one day? hopefully. Will it replace Java? unlikely, since Rails is simply to slow for high duty apps.
I think PHP is the present and the near future of server-side web programming.
But if I have to predict what language will predate the web servers of 2015, I say JavaScript.
The reasons:
- It will be fast: See the evolution of JavaScript engines in the last 5 years and specially in the last 2 years.
- It will be solid: See the evolution of ECMAScript, which JavaScript is based on.
- It will be feature complete: See the evolution of JavaScript itself.
- It will be understood by many: See the evolution of web browsers; becoming the new desktop; making every desktop programmer to have to learn JavaScript.
- It will have an "echo" function, so you don't have to type "document.write" to send characters to the client...
I guess that means you won't be sympathetic to "Micro-Soft is the Anglo-Iranian Oil Company of software."
I'm not a lawyer, but I play one on the Internet. Blog
"Tying one's career to ideology isn't always a smart thing to do."
Yeah, good point bud... and if the world had really been focused on cheap production in the 19th century they wouldn't have been so quick to dismiss slavery as an option. What fools they were. Tying themselves into an ideology cause them all kind of problems. Idiots.
There is more to making a choice like this than maximising your immediate chances of getting work.
The overwhelming majority of the population just go with the flow and deserve what's coming to them. It is always only a small minority who bring about change. You most definitely belong to the former. It's nothing to be proud of.
Learn all to rule Them all.
rots a ruck
For my own purposes, I put together a query on Indeed to show the job trading for seveal up-and-comng languages:
http://www.indeed.com/jobtrends?q=perl%2C+PHP%2C+Python%2C+Rails%2C+Grails%2C+ruby%2C+C%23&l=
You can also look at the TIOBE Index:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
That's why one becomes proficient in Perl and Ksh.
Your comment doesn't make much sense. Python and Perl really are sort of on the same level in functionality/performance characteristics (there is some string parsing that would definitely be easier in Perl, but it's not a huge gap). I reckon what the GP was getting at is that they're all somewhat slow for certain tasks (where you would grab java, C++ or C in that order of increasing need for performance).
Really, the OP should just learn one of (python, ruby, perl) and be done with it. One can get along fine in the job market for now with java/c++, but I can only imagine how he handles common scripting tasks. Definitely a gap there.
Honestly. You are a fool. Moving from Java to C# is dead easy, in many cases you can almost copy and paste code between the two. In addition C# fixes a number of silly problems with Java (like the dumb-ass autoboxing implementation) and improves on it in a number of other areas. Coding in C# is actually almost as fun as coding in Ruby.
Seriously, to let your ignorant religious views ("I don't want to do .NET") determine what you do is about as dumb as it gets if finding a job is your objective. Take it from someone who was part of one of the first companies to deliver commercial software written in Java and who has done real, deployed, commercial software in Java since 1998. .NET is not at all bad, and I will take .NET MVC while having a non-sedated root-canal over (for example) Seam and JSF any time of the day.
Pick a direction.
If you like web dev, don't look at a language, look at a path. If you want to stay relevant in the front-end coding, Javascript, getting good with HTML5, and one or more of the various things that feeds both (Python, Ruby) is good. Do it via learning some widely used package of functionality. Write something missing, and release it (Django tagging system, with a Canvas tag cloud?) Having released code makes you much more employable. On the back end, well, Python or Ruby + knowing the oddities of one of the NoSQL tools is nice. (And by "knowing", I don't mean read the O'Reilly book, I mean put them under pressure and see how they fail.)
If you want to become a better programmer, learn Lisp. Really, no shit. It changes how you look at things.
If you want to become a better programmer, but don't want to invest in Lisp, pick pick up a functional language, like Haskell or ML. But do Lisp first.
If you hate the idea of either of the above, get better with your current language of choice. Write an ORM, or a templating language. Nobody will care, but you'll learn why everyone hates but still uses the ones we have.
Learn Objective C, or the Android API, and write something for a phone. We're just past the "here's my todo list, here's my Tetris clone" phase, and it is new territory, and one of the few genuinely interesting things to come about since the mid-90s. If you show some initiative, you can land a safe spot doing this. By about '15, I expect most folks to have a smart phone and be sorted as to expectations, so that's about three years to get good at things and maybe do something interesting to set yourself apart, at the most.
If all you care about is shooting for the center of mass, learn either Microsoft or get good with PLSQL + the weird crap Oracle makes you do to bundle Java up for database deployment. I don't know what Microsofties do, but if you get good with server-side Oracle code, know your shit with performance issues, memorize various oerr codes, and can parrot back whatever whitepapers Oracle released recently about X And The Enterprise (you know, Private Enterprise Cloud Computing, or whatever), you're very employable. Bonus if you've lived a clean enough life to get a security clearance. Check your ego with the receptionist and pee in this cup, please.
I forget what 8 was for.
I don't miss VB. The .net framework has been a massive improvement. It's not just developers who were inconvenienced. Thousands of business owners with specialized software were forced to look for alternatives.
Please do not read this sig. Thank you.
I honestly don't see much difference between c-form and vb-form languages. It's just a code interface to the system. I'm not defending classic VB, mind you. I just don't think the specifics of how you implement an if-then matter much. This is particularly so in vb.net and c-sharp. Most of the code looks almost the same.
Please do not read this sig. Thank you.
XSLT2
Eventually Microsoft's abusiveness will cause an Enron-style breakdown in my opinion.
You are saying that Microsoft is mis-handling their finances, and incorrectly reporting their profitability to the SEC and to their Share Holders? Holy SH*T you should call the feds right now! Oh, wait you are talking about monopolies laws that they have already been accused of and have either lobbied down or paid off... Old news. Like 10 years ago.
What about companies oh... I don't know... GE who has been around for like 118 years, and has been hit with far more Crap then Microsoft ever did. Microsoft is here to stay, it is no longer the young trendy sexy company but it will be a force for many years to come.
Why are you so worried about someone de-compiling your code? Is that an impossible problem? Yea let use Unix or Linux... Oh wait there are programs that show all the system calls that are happening in real time. So what, no big deal, it is part of Computer programs not .NET or Microsoft.
The reason why MS. doesn't do some of its programs in .NET is rather simple. .NET so a lot of their stuff is done in .NET .NET isn't the fast language. We know that. .NET is good for those programs that can be placed on systems where you can scale by adding more hardware, programs that need to be developed fast.
1. They are upgrading older legacy systems (Office, Windows... ) So they are more or less stuck with the langue it was written in.
2. Their consulting unit who makes custom application actually does use
3. Performance is key, so
Sure Office my be the best candate to be made into .NET but there is issues of that Office is old and its core wasn't in .NET
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
I'm puzzled by what you mean by "drying up". I'm constantly seeing Java and PHP jobs. Granted I'm in a tech hub (Austin), but there are tons of unfilled jobs. The fact that Android runs a java variant puts Java even more in my demand. I'd suggest adding Objective-C and Javascript and you'd have pretty much every current desirable tech skill.
Have you considered that the problem isn't your technological skills, but where you live?
Previously discussed and still have it bookmarked: http://slashdot.org/article.pl?sid=08/03/18/1633229&from=rss
I'll never understand this sort of attitude. I would hazard a guess that this person has never programmed using Visual Studio and C#. If he's worked in it for a while and doesn't like it, that's one thing, but I bet he hasn't ever brought up VS. I've met a lot of people like this. FOrtunately for them, they worked for the govt. and it didn't really maater what they programmed in because they wouldn't produce much and the project would fail in two years, to be replaced by another.
I've programmed in many languages, only one did I absolutely hate, and that was Ada. But,, even though I hated the language, I saw an opportunity to do a set of binding to X Windows. I spent two months writing that, then sold through a compiler vendor. The language was dying, but most government programs were required to buy the compiler and the bindings. They would then stick the thing on the shelf to gather dust. I would get a check for about $5k a month for royalties on a piece of software that no one ever used. This went on for two years, before the market finally died.
I've programmed in many languages, C#, Java, C++, C, FORTRAN, Lisp, PL/I, COBOL, Ada, Smalltalk, assembly, and a smalltalk variant that I devised at one point. I've learned something from all of them. Well, with Ada, I think all I learned is how not to design a language. I think changing languages every now in then ultimately makes you a better programmer.
Personally, I like C# and the whole .Net environment. I like it a lot better than Java. I think the new language additions like linq and lambda expressions are awesome. It's almost artistic to put together a well crafted linq query or use lambda expressions to do multithreaded programming using the new language extensions. And now with .Net 4.0, the dynamic language runtime has been added. I haven't really used this much as of yet, but I think it's an interesting feature. Plus there is the whole MVC framework for web pages. I am learning this now and so far like it a lot.
Learning .Net may be a good thing to do just as a hedge. Not sure where Java is going. Sun has been a zombie for a while now, and who knows what Oracle will do. The language has been pretty stagnant for a while. There is no one really moving the language in new directions like Microsoft Research does with C#. That's a shame. Java brought lots of great new ideas into the main stream of programming, but now it's about 2 generations behind where C# is. If it continues like this, C# or some other new language will just eclipse it like Java and C# did to C++. THen the Java programmers wll be scrambling to learn something new.
Having said this, if someone came to me and offered me double what I make today to work in Java, I'd take it. When it comes donw to it, If I wasn't get paid, I wouldn't go in and sit in a cube every day and write code, i'd find something else to do, so why not make the most I can. I may not like working in Java as much as C#, but it won't kill me and the reality is, the project, the people and the environment are more important for a good job than whether you code in C# or Java.
Python is a great language and I expect to see growth in python programming job opportunities.
The place where I work has been moving toward Python and Django for web services and away from PHP. Some of the old PHP code is being maintained and updated, but all noteworthy new development is going forward in Python.
Python is easy to learn and read but there still a difference between those who have dabbled with it and those who have a much deeper understanding. I say this as someone who has only dabbled but have worked with some experts.
I usually work in C++, but whenever I get to do some Python programming I have two very common experiences:
(1) I typically finish my python code before I expect. I'll be typing along and then suddenly get to a point where I realize, "Hey, I'm all done. This code is complete." With C++ the work almost always takes longer than I expect.
(2) When I'm done I think, "That was fun! I'd like to program in Python every day."
Religion is poison to rationality, and we lose sight of that at our own peril. -- Lurker2288
JavaScript is already in the browser, and making inroads on PHP.
It many not have the PHP stdlib, but it's faster. Way faster. And awesomer.
Do daemons dream of electric sleep()?
Life is short. If you hate your job so much perhaps its time to seek other work.
I think you are barking up the wrong tree; a programming language is only a tool that enables you to program. If you can program well enough to earn a living, then you can pick up any new language more or less as you go along.
If you want to learn something new, go and learn something like new methods. The languages you list suggest that you have been working with application servers and J2EE, so perhaps you know all about web aplications - then, perhaps you should move towards embedded or drivers, if you are fed up with what you are doing? Or mainframes; that is seriously different, and not going to die any time soon.
Having in mind how versatile (albeit not necessarily the best performing in terms of speed) is the Rails web framework, and the absolute ease of use of Ruby (and Rails), I will recommend it any day. It has its drawbacks, but then again, so does every framework/language. Being more concrete, I will choose Ruby/Rails above Java/WhateverWebFramework every time. :-)
Good luck with your training!
Chinese
Agreed (from what I've read about Python). Perl is a bit more prevalent and has a longer history, meaning there may be more people/places using it and there's more code out there (not just CPAN).
From a functional point, if you know one you don't need the other, but if you don't know either, I'd suggest Perl. I know there's a little religious waw between the two, but it seems silly. That said, I think the white-space delimited block syntax in Python (and other languages) is really stupid. I know you Python people will chomp at the bit about that, but I'm right about this, Guido is a snob about this, and you know it - let it go. Anyone who's had their Makefile blown because of a lost tab, or bitched because X converted tabs to spaces in a copy/paste knows what I mean - and yes, get off my lawn :-)
It must have been something you assimilated. . . .
I'd be more interested to hear about a language that we're currently missing: a strong alternative to JavaScript.
With more and more of the work we do being web-based, JS is currently the only real option we have to do our client-side code in.
Digression:
I know you'll mention java applets and ActionScript, but they're both plug-in based and not everybody is happy about using them.
- I'm happy with Java (being an SCJP), but not everybody is happy about the "plug-in" thing and it hasn't really caught on client-side.
- I tried to dig into AS3 but my instinct tells me it won't catch on. My hunch tells me HTML5 will phase Flash/AS out in the end. Then again, the damn thing compiles into SWF, so dead-end here.
Back in (my) topic: I mean real client-side code, that will run on a browser without any plug-ins. A language with better OO than JS and one that would allow more skilled coders to do stuff. With JS I feel it's more art than science... I feel the language can only reach *this* far and we need something stronger / more expresssive...
I dunno if anybody else shares my concerns, but if anybody is listening, I feel that this is a good time to start rolling something out...
I'm no longer fed up with MS Windows: I go rid of them
You can write unreadable Perl, but it's not that hard to write fine code. PHP on the other hand ... So much line noise for so little expressiveness. Java or Perl? PHP's got the worst of both worlds.
Believe it or not, I don't care what programming language you think that you have learned. If you don't understand what we're telling you then your code is worthless.
Just a few comments as the owner of a small software company: 1. I can't speak for the rest of the industry, but we're currently struggling to find sufficient decent php developers. There's much more demand than supply. Same goes for several other areas that we work in, including mobile app developers. 2. We're currently working with some of the local community colleges in our area to build programs that train people in areas that are particularly "hot" at the moment. That includes the broad spectrum of "open source", and particularly web platforms like Drupal. Good Drupal developers make a decent amount of money these days. I know because I sign the cheques. 3. With regards to offshoring - I've tried on a number of occasions to open up shop in places where labour costs are cheaper. I eventually gave up because of the frustration of trying to manage across time zones and cultural/language gaps. That could be an issue of my team's ability to manage people in general, but I've spoke to enough other people with the same issues. As a result, I find it _cheaper_ to hire North American developers for real salaries. Net result as I see it - if a) you have a palette of a few development skills that are commonly used, b) you write clean, maintainable code, and c) you're willing to learn new things as you go along, I don't see any reason why you would have trouble finding well paying work anywhere in the world.
or Intercal. No, definitely Malbolge. Yeah, that's the hot new programming language of 2010!
Nathan's blog
OK, I give up. A few hours after the discussion starts, and suddenly lots of posts that are critical of MS are getting downmods in rapid succession, while posts that are obvious FUD or overstatements of Microsoft's advantages are getting upmods? I admit my tone in the parent post wasn't terribly mature, but the points are still valid, and in any case I was no more hostile or vague than the various upmodded pro-MS posts in this discussion. How long does it take for Google alerts to notify the MS marketing people to come and hijack the discussion?
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Is not. Case in point --
f 3
What does this mean? In C, fairly simple. C++? Not so much. And that's only the start.
Just another "Cubible(sic) Joe" 2 17 3061
Or are they like 18 years old?
Work is work, .NET is just a word. It's not religion or a way of life. I hardly notice the difference between all the languages I flit between anymore.
But I guess you can choose what you want and try and find work in that. I just don't think that question is worthy of a topic here. Sounds like such a prima donna type attitude. I guess that's why I don't have trouble finding work.
I've just finished a few years of C++/C#.NET work and doing Objective C and ABAP now.
Languages are just a tool. It's like asking what genre novels to learn to write as long as you don't have to write it with a Logitech keyboard.
The number of Java jobs versus C# has increased steadily for years. Java is open source and it is fast and efficient.
I have been blessed to have not to have to have dealt with much PHP code, so I don't have a strong opinion. From everything I hear though, I really dread the prospect.
Need a Python, C++, Unix, Linux develop
...and according to the nginx-folks its blazing fast and can do wonderful stuff ontop of the already nice config script foo.
If you plan to do (performant) webapps, you should have a look at that.
Here's the ngx_lua module.
That said, I think the white-space delimited block syntax in Python (and other languages) is really stupid. I know you Python people will chomp at the bit about that, but I'm right about this, Guido is a snob about this, and you know it - let it go. Anyone who's had their Makefile blown because of a lost tab, or bitched because X converted tabs to spaces in a copy/paste knows what I mean - and yes, get off my lawn :-)
Of all the problems with python, whitespace delimitation really doesn't rank very highly. You get it wrong a couple of times when you first start out in the language, after that it really doesn't tend to bother you anymore. It's really nothing like Makefiles, since the interpreter can afford to be a lot smarter and you will get a warning much sooner than in Makefiles. Not to mention that you set your editor up once and then you always indent te same way (even auto reindenting works most of the time in vim).
I think It's all personal taste really. I find python code more readable, but I've known people who said the reverse. I think we can agree that people should know a midlevel scripting language like this, in any case.
From Wikipedia article on "Measuring programming language popularity": "Combining and averaging information from various internet sites, langpop.com claims that in 2008 the 10 most cited programming languages are (in alphabetical order): C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, and SQL." Checking the site now, this set of languages appears to have held steady ever since then. Also the TIOBE index is good, but it based solely on search frequency. However it is updated once a month: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
MFC is bad, and C# is good, for opposite sides of the same reasons. MFC is a C++ wrapper around the Window API intended to "Give access to the API". BUT: Any really good C++ programming framework for Windows programming would also be a system where the applications would be portable to another OS! Oh Heavens! There are good C++ frameworks that allow that sort of portability. GTK and QT come to mind. They avoid being Stamped with the Windows API. No baloney about "Giving access to the API". Enter C# and .NET: Here, quality is not the enemy of Microsoft, but the friend, since only minimal development of C# apps can work on outside of Windows. It's very nearly a captured system. So they produced a very nice language and a very nice set of runtimes. The quality binds the coders to the OS, and the code is nearly as unportable as MFC: The best of both worlds, for Microsoft.
If you're a young software developer, go with Ruby, it will improve your mind. Either that or Erlang, to master concurrent, multi-core programming.
But if you need to make more money in your current career path, perhaps your wife is pregnant; take courses in management instead.
I18N == Intergalacticization
Telugu, Urdu, English - official languages of Hyderabad, where your future lies.
Also thumbs up to someone who already geussed Chinese.
On a more serious note, Python or c-sh$% if you prefer the dark side ;-)
I used Scala for more than a year now and I love it. You have the ability to use almost every library from the Java world and it's not bloated as Java came to be. In fact it is quite concise, reminds me a lot scripting languages like Python. It is an interesting mix of functional and object oriented programming. It is still relatively new but it is used by some big players and i hope it will be more mainstream soon!
I've been a Java/C++/PHP developer for about 6 years now. However, I'm seeing the jobs for these languages dry up
Where are you??? For Boston, where I live, there are currently 527 jobs listed on Dice for Java, 221 for C++, and 107 for PHP. I'm a big fan of Python, and I highly recommend learning it, but I think that most software in the future is going to be for VMs. I.e., for the JVM, .Net, and JavaScript, which is the defacto browser VM. For the foreseeable future, there's also always going to be demand for good C++ programmers, since you often need to get down to the metal.
So, the executive summary is that you're doing fine. Though you should definitely also learn Javascript. I recommend the book Javascript: The Good Parts. It's a great book, and it's short, and it shows that Javascript is actually a fine language if you ignore the bad parts. For Javascript, you should also learn jQuery, which is a library that makes manipulating the DOM much easier.
Personally, I've moved recently from doing mostly C++ and Python to doing mostly Java, due to my belief that most development is going to be done for VMs. I'm also learning Clojure, since it gives you the beauty and power of Lisp, and the huge library of stuff available for the JVM. I'm also going to learn Scala, which is also a JVM programming language. I don't expect that I'll have zillions of job offers for either Clojure or Scala programming rolling in anytime soon, but it's fun to learn better ways to do things.
|>ouglas
Most employers that I know of tend to pad the job description. Things like '5 years experience' or '3 years experience with x, y, z, a, b AND c'.
Most of the time what they really mean is 'applicant to have a suitable level of understanding in x and y to be able to undertake duties of a and b'.
For most people this level of knowledge and experience can take 2 to 5 years to develop. For some people, it never does (see: Daily WTF).
If the position title has 'senior' in it, then it may be reasonable to expect 5 years of experience, or the equivalent. Otherwise, if the job requirements seem a little extreme then assume the employer may be advertising for multiple positions, or may be overstating skills required to see what fish take the bait.
On the other hand, they may indeed require someone with SQL Admin, Windows Admin, advanced ALM and coding skills in language z, y or z (applications for this one have closed :-) )
In reference to the OP, Java is still highly in demand around here. Not that you'll ever see an external opening as they are all filled internally before the external engagement process can be started.
Lastly, Good Luck!
You have a sick, twisted mind. Please subscribe me to your newsletter.
At what point do we abandon a language? What obligation does MS or Oracle have to continue to support a language or platform once better alternatives appear? What obligation doe the OSS have to continue to support a language or platform? None. Those poor CADOL and SNOBOL programmers had to port their apps to new platforms and languages, as did the dBase II, and Fortran IV guys. Some had a good upgrade path, others didn't. For some (VB Classic) it's a wash. I don't feel sorry for the losing the old platforms (Netware) because there are newer, better, more inovative platforms ahead.
I hear Spanish is a pretty useful second language to pick up, and Mandarin is getting more and more useful to know.... everyone else replies based solely on the headline too right?
Scheme is a nice toy language, but its lazy evaluation and loose typing makes it impossible to debug anything substantial. Also, the language structure makes it hard to find a misplaced parenthesis or arguments.
In declarative languages, complicated passages are broken down into a list of steps, with intermediate results stored in aptly named variables:
step1 = a(2)
step2 = b(step1, 3)
etc.
and it's easy to trace and debug. But, variable use is avoided in functional programming, and you get terrible nested functions.
In the following line, can you find what function 53 is an argument to?
(a 2 3 (b 2) 4 (c (d e 2) (f (g)) h (i (j (k 2 (l) (m 2) 3) 443) 53)) (n 23))
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.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
"I've deliberately omitted .NET — I have no desire to do the Microsoft languages." ---
That, my friend, is called cutting off your nose to spite your face.
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.
:)) 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.
.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.
.NET is a very pleasing experience, but it's Microsoft. There's just no ideal solution.
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
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
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
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.
n/t
To have a right to do a thing is not at all the same as to be right in doing it
Learning Python makes a lot of sense.
It's well-designed and organized, and teaches several important lessons - importance of clarity while maintaining brevity; having a standard way to solve standard problems; smart module management; painless introduction to functional and lazy programming.
I can only speak for web development, having experience in a range of technologies, whether MS or not (Perl, Java, PHP and mostly in .Net), and I have only a view on the situation in (mainland) Europe
I understand many coders hate MS from an ideogical point of view (as much as I hate Apple today for that reason), but that should not influence your objective view on the qualities of its technologies .Net & SQL Server are far from mediocre technologies
I think MS had a pretty good track record for making crapware in the past - I only need to mention Frontpage Extensions, and I wasn't for instance amused by the flood of bugs encountered during recent Sharepoint dev projects, but compared to what the competition offers (as far as I can judge), I believe
I can agree with remarks on the .Net dev crowd being "average" (I would rather situate myself in there, frankly), I think the same applies to PHP
Ruby seems very hot today (as is NoSQL for data storage), and I don't think it's here to disappear
but if I was starting as a web developer today, PHP would be a good idea for choice of jobs, Java (and perhaps .Net) for salaries, Java (because of Oracle) and .Net being more a question mark for the longer future, as MS seems to loose its grip on the consumer market
Windows (thanks to a decent 7) is still there, the question is: will be the majority of consumers use a classic (Windows) pc to browse the web in 5 years? not sure
and who knows what will happen then in the enterprise world?
I've check a number of websites, and one thing that stands out consistently is that the most impressive sites seem to be programmed in Ruby. I don't know if it's because the language allows more impressive stuff to be developed or because the best developers choose it, but if I were to develop web back ends (I don't) I would choose to learn Ruby of PhP or any of those other web server scripting languages.
I've deliberately omitted .NET — I have no desire to do the Microsoft languages.
I am no huge fan of Microsoft. Nevertheless, I think this is a foolish statement. You should not omit any platform or language from your repertoire.
Proverbs 21:19
I agree with some of these points, you're factually wrong on others, but the point I made was that learning Scheme will teach you a new way of thinking about programming, and that still holds.
Details.
Scheme is *not* a lazy-eveluation language. There are facilities to do lazy evaluation, but you have to ask for them. Perhaps you're mixing it up with Haskell, which I find practically useless for exactly the reason you mention.
Its dynamic typing is a problem. I prefer secure, statically typed languages, like Algol 68 or Modula 3, or, for that matter, the experimental typed scheme. What's interesting about typed scheme is that is implemented using regular Scheme. Yes, that's the kind of thins Scheme programmers do, and it's the kind of expansion in the way its users think about programming that I was talking about.
There's nothing keeping you from using a series of bindings to local expressions -- much as you did in your so-called declarative language.
Still, I agree completely with the parenthesis-matching problem. The principal palliatives Scheme afficionados use to argue that it's no problem are:
(1) a specialized editor that shows you how parentheses math while you're editing.
(2) an editor that manages indentation and layout for you to make it more obvious,
(3) Multiple kinds of brackets, such as square and curly, and then having the implementation enforce that brackets match only their own kind.
(a 2 3 (b 2) 4 (c (d e 2) (f (g)) h [i (j (k 2 (l) (m 2) 3) 443) 53]) (n 23))
You use this whenever things get confusing. I don't have this option with, say, matching BEGINs and ENDs in Pascal.
Finally, it's possible in most Schemes to define your own syntax. Most serious programmers do this for any substantial piece of code. The point here is not that Scheme can be used to implement programming languages, it's that it's fairly easy to define complex and useful notations while remaining within the language. And that's another part of the new understanding I mentioned.
Have a look, in particular, at PLT Scheme, recently renamed as Racket. Or look at Gambit, designed for easy interoperation with C.
I don't miss VB. The .net framework has been a massive improvement. It's not just developers who were inconvenienced. Thousands of business owners with specialized software were forced to look for alternatives.
Plenty of businesses have staunchly refused to look for VB alternatives, at least for internal apps. They just pay consultants like me to maintain them (it's not fun, but it pays the mortgage). They'll keep doing this until MS drops support for VB6 applications (meaning whenever they decide to drop MSVBVM60.dll). Even then, many businesses will decide to keep an old Windows 7 (or 8 or whatever) box around just to run those internal apps. They won't look for alternatives until it becomes absolutely necessary. Every alternative essentially means a costly rewrite of what is pretty much always an undocumented organically grown hodgepodge of code soup written by a multitude of individuals having as little understanding of the software as possible to achieve yet another marginally functional stove-piped feature implementation to pass on to the next victim.
If you have good control over your gag reflex and want job security in a decade or two, don't let yourself forget VB6. When MS finally does drop VB app support, there will be a lot of ugly yet lucrative work to be done. Either that, or someone's going to develop a really good VB-to-anything-else language translator (no, the MS .Net conversion wizards are a non-starter, or at least they have been so far).
- T
Wow, really? As both a developer and a small business owner, I'm fairly repulsed by this attitude. How, in this economy, would you not be willing to learn technologies that would provide you the most job opportunities. How would you respond if an employer insisted you learn .NET? If I encountered someone with your attitude while interviewing job candidates, I would end the interview on the spot. Enjoy unemployment and obsolescence, dipshit.
Yes... I'm sure you already use SQL already to some degree... but I think that having excellent database skills in general is the way to go. If you learn one dialect of SQL you can very easily pick up another.
Besides that... having worked as a programmer, business analyst, and development lead... I find that the most important skill to have is being able to understand business models effectively so that you can translate them into good design. If you have that skill... the languages you know become irrelevant for the most part.
Check out Smalltalk. Go Pharo-project.org
So you hate Microsoft so much that you refuse to learn .NET, therefore missing many oportunities to make money / gain experience..
I am a stereotypic open source, communistic programmer, but having had to use C# for interesting graphics and human-computer interaction research, it's constructs, like "properties", are quite clean and consistent, not nearly as dry or limited from a linguistic point of view as Java. If I were going to recommend a language to learn to expand your consciousness it would be Erlang. If you want to have fun and have a wide array of application, I would choose Python. In my opinion, there are plenty of C++ old timers out there and there's really no general reason why you should aspire to complete mastery of it's more mystical capabilities. In reality, what you want to program is a constraint. Eh... Choose Python.
your existing skills .... Android.
You'll be in a new environment with a bunch of new toys (gps, accelerometers, radio antennas, camera, etc), rapidly accelerating market (100,000 new users per day), and best of all your existing skills are perfect.
enjoy