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.
Try Finnish, Oracle hasn't bought Finland yet.
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.
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.
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
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.
You need to drop the Microsoft hate if you actually want to be employable.
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.
You're asking the wrong question.
Here is part of the right answer.
http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks
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.
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.
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.
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
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
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.
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.
Mandarin
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
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."
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
About the only way you'll get a job in future is to learn Chinese...
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..
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
Except for the whole non-portability thing.
Try this. It supports most of what the Microsoft version does, including ASP.NET MVC.
Hydraulic pizza oven!! Guided missile! Herring sandwich! Styrofoam! Jayne Mansfield! Aluminum siding! Borax!
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.
"... 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_
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.
But it's all happening in Asia these days. I suggest learning Chinese - http://www.youtube.com/watch?v=OTSQozWP-rM.
There's no best language. Choose the language that fits the job / problem at hand and fits the needs of the software you are working on.
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.
This is what happens when I omit the tags. Sorry. No, I'm not interested in Miguel de Icaza's attempts to get Microsoft's patent-encumbered technologies into Linux - always one generation behind. That's not cross platform, it's just porting the chew-your-leg off environment to Linux so you can have that fun experience over there too. I'm starting to believe that stupid is contagious. No wonder why he doesn't want to learn the Microsoft stack. He doesn't want to catch it.
Help stamp out iliturcy.
Actually - I learned UCSD Pascal on an Apple ][e as my very first programming language and it has served me very well.
Im not going to discuss the technical differences between the languages. Because these dont affect if learning a language is a good career choice.
The community of the language also can be a deciding factor, again i dont want to touch on that.
However, I would like to touch on whats important about learning a language from a career point of view, and deciding where the right balance for you is in regards to...
a. ease to find a job for that language (and location)
b. how valuable that skill is in dollar terms
c. what sort of company is using that language
In the case of a. having thousands of available jobs in that language is both good and bad. On the one hand this means that there are lots of positions to apply for, it may also mean that there is competition for that skill - ie you get paid more. It may also be an indication that you will be an easily replacable monkey on a keyboard.
The location of those jobs is a person decision. Obviously less jobs means less choice in this regard.
The value of the skill is related to a. in that if there are lots of jobs and few skilled people, they will be valuable. However on the other hand, if there are lots of people and lots of jobs - again youve become a replaceable monkey on a keyboard, and if there are heaps of people you wont be getting paid much. This is basically what is happening with Java programmers.
And jobs web sites list jobs, they dont list how many people are applying.
** So somewhere in the middle is the sweet spot for you. You want to have a skill thats rare enough to command more money, but not so rare that you cant find a job.
Everyone is learning Java in uni, and Python is cool. Both those key words do well on job search sites. But will you just be another monkey?
c. what type of company is hiring that skill?
This can be important as well. Companies have a different culture which directly influences your happiness in life as you will have to be a part of it for much of your day.
Now, Python is pretty hip currently. Its found a lot of interest with some large newer companies being very keen on it internally (ie Google, Facebook). The downside is that because everyone is coding Python, you become just another monkey with a typewriter. Just like Java programmers.
Java is also hugely saturated. Plenty of programmers, plenty of jobs, not much pay.
Infact, companies are intentionally choosing languages like Java and Python because they can get decent programmers very cheapily. Which is great for the bottom line and great for the share holder - but sucks for your mortgage.
Im not exposed enough to ruby to comment on it. I think its popular in start ups, but im not aware of any who have really hit the big time. That doesnt mean that they wont or dont exist. However, keep in mind that the funk train of Rails has long since run out of steam. Every language has an MVC framework or 3, and they all copy each others features. Im going to go with some advice, that picking a career based on a framework's features is probably unwise.
C will always do well. But you wont be programming web applications. Which you may perceive as a good thing :)
Perl; there are lots of older companies with huge investments in Perl based infrastructure. Perl is out of fashion, but lots of Perl jobs are in places like Banks and Telecommunications companies. This may not appeal initially. But consider that a. these companies are going to be more stable long term, b. they are going to pay you more and c. youll have more choices. Perl has a very active community and has excellent documentation. Lots of jobs list 'perl or python' - but actually mean 'if you program perl thats cool, but youll need to learn python'
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.
First, migration. When that ever actually becomes an issue for me, I'll let you know. Microsoft used to invent a new database access acronym every week or so, but they both support the old acronyms in perpetuity and have slowed down their pace dramatically. Except for swearing loudly at old projects using stored procedures and DataTables instead of an ORM with LINQ support (basically queries over objects that also turn into precompiled queries for the database using reified map/filter-like query expressions; look it up), I haven't had any actual problems with migrating anything. No wild goose chases even with major .NET upgrades. My legs are intact.
If you mean planning to migrate to another platform, who does that? You pick a platform you're comfortable with supporting, you build what they need and then you support it. Even if you were to specifically wean a client off of Redmond (or anything else), you're not going to "forget" that plan. They're going to come to you, or maybe you're going to come to them, and say so, and that's when you draw up the plan. You don't build things with the intent to then wildly change platforms midstream, and if you do, you damn well have a migration plan. (If you take on that sort of task and don't, you're short-sighted, by which I mean profoundly stupid.)
I didn't say a thing about portability in my comment; nor did the original parent. Either go higher ("scripting" languages) or lower (C, C++) on the abstraction scale if you want pure language portability. If you want "kinda sorta" portability, C# happens to offer that right now thanks to Mono, and it's not just academic in that there are real Linux programs being written, distributed and used with it. It's an accident of history, but the progress that's been made won't go away overnight either.
I wouldn't drown myself just in the portability of the language, though. Most cross-platform GUI toolkits suck. You end up designing for the lowest common denominator. Java is egregious with its several official toolkits at various stages of decrepitude, but it's far from the worst offender. It's a great solution, as long as you want your users to suffer equally.
I think the cross-platform toolkit people are coming around to is the web, where the parameters shift a bit. The backend (whichever server side component you use) and the frontend (the web pages) need to be portable in different ways, but both are easier to achieve. You can realistically host C# sites (with ASP.NET, including MVC) on Mono on non-Windows with good performance and support. I'm not losing any sleep over "locking in" our clients; it's usually a clear improvement to where they came from, even if it isn't exactly PHP in terms of ubiquity.
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.
Look, this isn't about you. We're here in an Ask Slashdot discussion thread where C# is outside the solution set, and it's all you guys can talk about. Hey, if you're so smart, so perceptive, so insightful, why can you not find the topic of the discussion you're posting in? The guy does not want to code for the .NET platform. Your argumentum about how it's the best thing since bacon is pointless intellectual masturbation. If you have nothing to offer to help the man, could you please get the hell out of the way?
This is probably why he doesn't want to write C# code. He's not inclined to hang with you short-bus kids with ADD who can do everything except focus on the task at hand.
Help stamp out iliturcy.
I know exactly why he was porting it. No one was doing anything new anymore in that environment. There was no new language, no new framework, nothing to make coding more productive than ten years prior aside from whatever had ground its way through Qt's world of macros or the C/C++ standards. (I'm wary of saying "easier" in that crowd. I don't mean that programs should write themselves for me, but there are easy wins to be had by simply learning from past mistakes. C doesn't need to go anywhere for the tasks it's made for. It just doesn't have to be the default for everything else, too.)
Maybe taking to porting Microsoft's previous version is alarming in a way you didn't address: there was no one looking forward except for repaving every damn layer below the window manager.
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.
I didn't start it. Someone said it sucked. I just said "nuh-uh and here's why". Someone retorted. I replied. Now you tell me, through posting a comment about something else than the topic, that I shouldn't post off-topic comments. If that's really what bugs you, go talk down dreamchaser instead, or the people who upvoted his comment.
And C# isn't even half as good as bacon. It's not even the best programming language I know of. (I mentioned Ruby, which apparently was decisively on topic, but you hadn't gotten to your "on-topic" phase yet, so you chose to bitch about the rest instead of actually cultivating the discussion, something that only people you disagree with and can convincingly describe as mouth-breathing scum should have to do.) I just agree with previous posters that it doesn't deserve most of the crap it gets, and that, as someone who also does a fair amount of other languages, share their values about keeping away from Microsoft by default and has actually used C#, I'm not as turned off as the asker seems to be. That actually seems to be on topic to me, but fair enough.
This is Slashdot: he would have gotten far fewer replies about C# had he just not mentioned Microsoft altogether. And he seems to have done alright with on topic commentary too. I'll reply to any reply I get, but I'll stop this discussion if you want. It's easy: just don't reply.
The way Nokia has been trending lately, I wouldn't bet on Finnish.
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
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.
"but you'll need to learn python"
What's to learn? You can teach yourself to be functional in it in no time.
Languages have gotten so boring, these days. I know, the languages are the same, it's just the fact that we've learned all the new concepts and the only thing really novel in most of these languages is syntax. Know some lisp, some fortran, some pascal, some java, some groovy, some ruby, and what's left? Anything new under the sun? Any real new concepts? (Not just ranting here -- anyone with some suggestions?)
We should be telling this guy to learn ARM assembler. At least that'll challenge him.
.. 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.
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
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.
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 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.
In this case, I think you omitted the option which applies:
It was a joke.
The Tao of math: The numbers you can count are not the real numbers.
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"
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.
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.
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)
Being both a lisp *and* Ron Paul fan, I got a good laugh out of this one.
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
Learn all to rule Them all.
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.
No, I'm not interested in Miguel de Icaza's attempts to get Microsoft's patent-encumbered technologies into Linux
It is always sad when people let their religious ignorance cloud their otherwise presumably functioning thought process. Microsoft in 2010 is nothing like Microsoft in 1995, but then again Java in 2010 is nothing like Java in 2008.
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()?
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.
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.
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
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.
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'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.
All that's debatable I guess (and I would debate if I thought it'd make a difference), but a good enough reason for me is that all the places I want to work are looking for Node.js developers. Erlang? Not so much.
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.