Is It Worth Learning a Little-Known Programming Language? 267
Nerval's Lobster writes: Ask a group of developers to rattle off the world's most popular programming languages, and they'll likely name the usual suspects: JavaScript, Java, Python, Ruby, C++, PHP, and so on. Ask which programming languages pay the best, and they'll probably list the same ones, which makes sense. But what about the little-known languages and skill sets (Dice link) that don't leap immediately to mind but nonetheless support some vital IT infrastructure (and sometimes, as a result, pay absurdly well)? is it worth learning a relatively obscure language or skill set, on the hope that you can score one of a handful of well-paying jobs that require it? The answer is a qualified yes—so long as the language or skill set in question is clearly on the rise. Go, Swift, Rust, Julia and CoffeeScript have all enjoyed rising popularity, for example, which increases the odds that they'll remain relevant for at least the next few years. But a language without momentum behind it probably isn't worth your time, unless you want to learn it simply for the pleasure of learning something new.
No. (Score:5, Insightful)
Re: (Score:3)
On the other hand, once you learn a few programming languages, it becomes easier to know others, (assuming something that isn't completely different, such as a procedural language (C or Java) versus a functional programming language (Lisp, Scheme), versus assembly language.
If you know C, you can consult the camel and make functioning perl code. So, it might not hurt knowing a non mainstream language, and may not take too much of your time, relatively.
Re: No. (Score:2, Interesting)
Every language has tradeoffs, otherwise we'd all just use the one that didn't make any sacrifices.
Ruby excels in productivity, developer workflow, infrastructure tools and flexibility but it's tradeoffs is actual speed and concurrency.
Go excels in concurrency, portability, team development and keeping you close to the metal but it's tradeoff is a much slower working speed for everything around HTML as well as a different way of thinking about problems.
Java excels at speed with the tradeoff of severe lack pr
Re: (Score:2)
Everything has tradeoffs.
I agree [thealmightyguru.com].
Re: (Score:2)
Here's one you missed:
Python excels at being the jack-of-all-trades, though most of its trades have other masters (see above.)
Re: (Score:2)
Python excels at quick-and-dirty. Unlike many of the scripting languages, it's applicable to a wide range of environments and usages. It doesn't require the time devoted to rigor that Java does nor the time devoted to avoiding pitfalls that C/C++ does. It's not "write-only" and the syntax isn't littered with cryptic constructs. It doesn't induce writers cramp like COBOL and it handles strings more graciously than FORTRAN. If you have one-off tasks that don't need polishing, what you hacked out in a short pe
Re: No. (Score:4, Funny)
And it becomes even less productive than it already was when it becomes necessary to hire Java, C# or even PHP devs
Yeah, I've noticed how everything written in Java, C# and PHP are brilliantly fast and bug free.
Re:No. (Score:4, Insightful)
There is enough similarity between programming languages that there really is no point in learning any more than what you need.
That's true with a lot of the "C-with-X" type programming languages that are out there (e.g. if you know Python/Perl/Ruby you probably don't need to also learn Ruby/Python/Perl unless you have to), but there are also programming languages that are built around a wholly different philosophy, and I would argue that people *would* benefit from learning one of them, even if you don't actually ever use it.
The canonical example is Prolog. Not used for anything much in particular, but a completely different way of thinking about programming, and something that will definitely make you a more well-rounded programmer if you do learn it. Likewise, if you've never worked with a functional programming language, learning Scheme or Haskell will be a benefit. Something like Eiffel is good to learn design by contract. Heck, even esoteric languages like Brainfuck and Unlambda can be worth learning (but never using) for the different perspective they give on how to accomplish a programming task.
Of course, by "learn" here I don't just mean learn the syntax. By "learn" I'm referring to knowing the concepts behind the programming language, and understanding what is "correct" or idiomatic for that programming language, rather than "can I transliterate this FORTRAN program into Scheme syntax?" It's not "will I ever use this language" or "will this look good on my resume" but "what is the philosophy of this programming language, and what can I learn from it"?
Re: (Score:2)
There is enough similarity between programming languages that there really is no point in learning any more than what you need. If you find yourself in a position where you need to learn a new one, as long as you have a pretty broad background it usually only will take a couple of days to get going and a couple of weeks to get really good.
As a programmer, I can somewhat agree but if you're trying to get hired as a COBOL programmer chances are that you'll move
to the top of the stack if you actually know COBOL and can list it on your resume.
Also, just because you've been coding in one language for years and you can start writing functional code in a different language
after a couple week, you're not going to be as skilled at the nuances of that language as someone who has been using it for
several years.
I consider myself an expert in c, c++, and
Re:No. (Score:4, Interesting)
There are probably less than half a dozen basic language syntaxes. COBOL/Fortran/Python, Algol/Pascal/Modula/Ada, C/C++/JavaScript/Perl/PHP, LISP/Scheme, RPN/Forth/Smalltalk. and so forth, not even touching other relatives of the forms I've just named.
What makes them different languages isn't the language, and it isn't really even the support llbraries (if any), It's the way of thinking that comes along with the language. Whether it's object-oriented, message-oriented, parallel-optimized, Functional, whatever, each language has its own characteristics.
As the old adage goes (something like) being able to write COBOL in 17 different languages. Yes, you can pick up the syntax in a few days and begin to get a feel in a few weeks, but most people won't think naturally in a language's mindset unless they've spent several months at a minimum at it.
Re: (Score:2)
The thing is, HR departments don't understand that learning a new language, if you already are good with a few, is no big deal. HR people ask for things like 10 years of experience in Language X and they don't listen to reason, even if Language X has only been around for 2 years.
Re: (Score:2)
Yeah, even if you have 5 years experience in Language Y, which is very similar to X. :-P
Re: (Score:2)
There is enough similarity between programming languages that there really is no point in learning any more than what you need.
Well, there is a point, but it is a stupid one. If you are trying to get a job and the new company needs people who know $new_unproven_language and you only know 100 other languages, then HR won't let you through the gate, even though someone who has learned 100 other languages obviously could learn a new language in a few days or weeks.
Haskell (Score:2)
Re: (Score:3)
Different langaguages are different.
OTOH, I disagree with the basic premise of the article. It is my belief that one shouldn't learn a new language to improve ones job prospects, but rather to improve ones skills as a programmer. So if you know C++, then you don't learn C# or Java, but rather Eiffel, Lisp, or Haskell, or possibly OCaML.
OTOH, If you already know C++ or Java, it's certainly easier to learn Python or Ruby. So easy that a basic knowledge can be learned in a day. So if you're tight on time,
Programming languages are for luddites. (Score:3, Funny)
Apps!
Re: (Score:3, Funny)
Only Windows 7 luddites use programming language. Modern app appers app apps apped in Apple's App apper!
FTFY. Next time at least do it right.
Doing it now... (Score:3)
Bread and butter has been C# the past few years, currently enamored with f# and racket. I don't think I'll be able to find a job with these, but it certainly has returned me to a "fun" mode.
Re: (Score:2)
Re: (Score:2)
mono wants a word...
Re: (Score:3)
When an app dives into one of the Windows-only assemblies, Mono's word is "broken". .Net and Java are a lot alike. Both are "universal" platforms (originally) sponsored by vendors of operating systems. But .Net is turned inwards whereas Java is turned outwards. Indeed, the only reason .Net exists is because Sun wouldn't let Microsoft weld Windows-only functionality into their version of Java.
Re: (Score:2)
Re: (Score:2)
Not true, C# has been off of Windows for a long time by way of Mono.
Microsoft is open-sourcing .NET Core, which supports ASP.NET v5 on Windows, OS X, and Linux.
Kerbal Space Program is an example of a game that was written in .NET (I believe specifically in C#) but is available on OS X and Linux. External plugins can be created in C#.
Xamarin provides a way to write native cross-platform applications using shared code and native user interfaces.
I think it's fair to say, we're well past the day where anyone c
Re: (Score:2)
Not true, C# has been off of Windows for a long time by way of Mono.
Mono with .NET support is at the whim of Microsoft's choice to release the .NET framework into open source.
Not to mention that Mono exists at the pleasure of Micro$oft who could easily kill it with a simple infringement lawsuit. I'm not saying they'd win, only that such a suit would kill Mono which has no resources to fight such a thing.
Re: (Score:3)
I think it's fair to say, we're well past the day where anyone can claim that C# is completely locked to Windows.
The word "completely" seems like a pretty strong hedge here. Sure, Mono exists, but it seems to be a bit of an unloved stepchild of the Open Source world, which generally seems to regard all things with any relation at all to Microsoft with some combination of hostility, suspicion, or at least disinterest. So, is Mono "a real boy" now in terms of being a full-fledged alternative to .net at all levels including features, libraries, tools, etc., or is it actually an unloved stepchild, as I seem to have perc
Re: (Score:2)
If you're expecting Mono to cover every aspect of the .NET runtime you're missing the point. I look at Mono as an excellent, open source, managed runtime environment and language that also happens to follow the ECMA standards Microsoft released for the .NET CLI and C#.
People expect Mono to be able to run any .NET app under the sun on any platform. That sometimes works, sometimes doesn't depending on the app. It's much more suited developing a new apps that you want to be cross platform.
As other posters poin
Re: (Score:2)
Not true, C# has been off of Windows for a long time by way of Mono.
The conventional wisdom here has been that Mono is always a few steps behind MS's implementation of C#, so it's not fully compatible.
I don't know if that still holds true, but it used to be the general understanding.
Re: (Score:2)
My only problem with C# is that pesky vendor lock in. For now, you gota run that on Windows. I don't mind Windows, but I do mind being forced to use it.
Ermm..... C# and VB.NET are Apache-licensed, open-source projects, hosted on Github [github.com], built with Jenkins. running under Linux and Mac OS X as well as Windows. Forking is encouraged, pull requests are taken, and you can talk directly with the Microsoft people who're paid to work on this stuff in a Gitter chat room, through issues on Github, and so on.
And yet people still drone on about vendor lock-in with these languages. Amazing how little fact-checking people do before posting sometimes.
Re: (Score:3)
If I read the article announcing the release correctly, then while the basic C# language is (probably) open source, it's definitely not free. You can't make a version of it without the agreement of MS, and the released version by MS is ... incomplete. Parts of it are portable, others aren't. So you can only use it as MS desires.
IIRC the release agreement said something like "permission is given to any full and complete implementation that fully implements the specifications" I forget whether the specifi
Re: (Score:2)
little-known programming language (Score:4, Informative)
APL
Re: (Score:3)
Many of the problems with APL have been fixed in J, of course if you are going to work on old APL systems it would be your first choice.
http://www.jsoftware.com/ [jsoftware.com]
Re: (Score:2)
At least most people have heard of that language. Check out Databus (http://en.wikipedia.org/wiki/Programming_Language_for_Business [wikipedia.org]), sometime. Yes, people still use it; I had to go to work early, this morning, to fix a problem that was caused by one of its many limitations.
A good point (Score:3)
The answer is a qualified yes—so long as the language or skill set in question is clearly on the rise.
Very much this. There is a reason why I, and many of my colleagues, leave Ada off our resume. I know more than one person who's stuck doing maintenance work on defense projects that haven't been cutting edge for more than 20 years because they hitched their wagon to obsolete languages.
The better companies are innovating and looking towards the future. Learning a new language that is on the rise is a good idea. Even if it doesn't pan out, the experience isn't always wasted. And you can demonstrate to future employers that you a good hire because you're good at learning new things in new environments.
Re: (Score:2)
The answer is a qualified yes—so long as the language or skill set in question is clearly on the rise.
Very much this.
Not just this... If it is rising faster in programmers then it is in the market (which happens a lot with highly hyped languages) than you will be in a flooded market. Unlike the "dieing" languages that keep people in them forever because the need is so great. Obsolete languages can pay VERY well, and you can take your pick of jabs and locations.
Re: (Score:3)
Ooooh ... poke me in the elbow again!!
Re: (Score:2)
and you can take your pick of jabs and locations.
Yah, I could get one of dem dere jabs in Chicago. Den I could watch da Cubbies, da Bears and, of course, da Bulls. ;)
Re: (Score:2)
Question: is some other language actually replacing Ada for aerospace, DoD projects, and other mission-critical type projects, or is it you just don't want to work on those projects anymore?
Re: (Score:2)
Send me some job links. I'm in my 40s and looking to get off the cutting edge and settle down into maintenance mode code bases. I was *built* for drudge work.
Re: (Score:2)
Yes (Score:2)
Learn Forth now. Or something else.
Re: (Score:2)
The Forth day was yesterday. Today is the 5th.
Re: (Score:3)
I think you meant "now Forth Learn".
Precisely!
Sure. (Score:4, Interesting)
Nice that TFA titled, "Should You Learn a Little-Known Programming Language?" shows a screenshot of JavaScript, but I digress.
Little known languages aren't always actually little known or used, just less and/or not main-stream. They are often languages used in specialized areas or use less common syntax and or structure - like PROLOG and LISP. As such, using them can often help a programmer think and problem solve in new/different ways that may help programming in more common languages. I know learning LISP help my recursion skills.
My LISP and PROLOG skills two are a bit rusty, but I've used (and was proficient with) several dialects of LISP and would probably enjoy a job using either language again.
Is the Lobster an auto-post? (Score:4, Insightful)
Every week I seem to see a slight variation on:
"Is learning %s worth it?"
"What is value of learning %s vs. %s?"
"Would you learn %s to switch jobs?"
I'm beginning to think this Dice account is just an autopost with a random list of possible values.
Re: (Score:2)
I've started wagering with myself about whether a particular "Slashdot article" will have a Dice link in it after reading the first line. I can guess with about 90% accuracy now.
Oldies but goodies (Score:3)
I'm very well versed in PPC assembly. I've found a quite wonderful niche working on automotive controllers. I also have several subordinates well versed in Tricore (Infineon automotive CPU) assembly.
Neither of those will ever make it onto any list of "popular" anything, but we all make plenty of money doing it.
As important as those two languages are to what we do, I've never hired anyone that listed either of those things on their resume. The ones that did list them specifically had at best a rudimentary understanding and little other practical background that would make them useful.
Don't learn something because you think you can make money with it. Learn something because you like it and want to use it. Then, find an employer that values your talents and willingness to learn whatever they need you to learn.
That's the best path to a good paying job.
Re: (Score:2)
Working in niche areas is great while it lasts (I know because I do too), but there's always a high chance that something new will entirely invalidate your niche's entire reason for existence within a year or two, especially if is all based around knowledge of one particularly obscure tool or technology.
Enjoy the ride but stay fresh with other more geneally marketable skills too, so that when the bubble inevitably bursts you're still employable for youir other skills
old stalwarts (Score:2)
Cobol -- there's old apps that keep on running that are valuable enough to companies to keep maintaining, yet they aren't willing to rewrite
RPG4 -- same boat as Cobol--although arguably one of the least pleasant language environments
CL -- many existing apps, plus there are companies writing brand new stuff with it, it's just as powerful as ever, and quite nice to work with
I'm sure there are others
The answer depends on your reason (Score:2)
if its academic or for fun, yes.
If its just to get a job then no, unless you want to gamble with the chance of getting a job in a niche market.
The question ain't "is it on the rise" (Score:2)
The question is "is it here to stay".
Take Ruby on Rails. Was the craze not even half a decade ago. Everyone was on Rails. Too bad they led to the chasm and nobody bothered to build a bridge over it.
So learning a language because some startups are crazy about it isn't worth it. But what is? How can you tell whether a language "gets big" or is a tempest in a teapot?
Easy. It ain't the language, it's the people using it. It's the movers and shakers of an industry that decide what will grow and what will perish.
Swift is little known??????? (Score:2)
It's only the language that a company with a $700 Billion market cap has decided should be the way to go to program all of their mobile devices.
If you play in the Apple ecosystem, then learning Swift is not "may be useful for a few years", it is a must for the future.
It's not about the nail (Score:4, Insightful)
Lisp-likes and CS background (Score:5, Insightful)
Start with How to Design Programs [htdp.org] and work it through, from beginning to end, even if you are a good programmer.
Then go to Structure and Interpretation of Computer Programs [mit.edu]. Work through the chapters that you find interesting.
Then start with learning Common Lisp. Even after 30 years existence, there is still no other programming language which implements everything that is possible with CL. There might be programming languages which are more specialised in certain language subsets that are also part of Common Lisp, but none includes everything that CL includes.
Then learn Common Lisp macros, and realise that to get at the same level of possibilities in other programming languages, you need to embed a Lisp system. But that will be a slow interpreter, and Common Lisp can compile.
Won't hire 'monolingual' developers (Score:2)
I explicitly will not hire any programmer who knows only one programming language (C and C++ count as 1 for that score.) Learning a different programming language introduces you to alternative ways to think about problems and solutions. Lisp or Scheme, Ada or Eiffel, COBOL or MUMPS, all provide a different perspective on software design, coding, test and integration.
Too many hiring managers play "buzzword bingos" in search of "flying purple unicorns," candidates whose buzzwords match their current search
Re: (Score:2)
My experience (35 years worth) differs from Mr Anonymous.
Learning new mindsets (Score:5, Insightful)
Over the years, I've worked with about 20 different languages. I learned a lot of them purely out of interest. Even if you won't need it for any "serious" or paying work, it can be useful to learn a new language that is different from the languages you know. For example, if you know C# you won't learn that much by working with Java; they're too similar. By contrast, if you try learning a language like Haskell or Go instead you'll get introduced to new ways of thinking.
In almost all languages, there are things you can do easily or "naturally" in it. These language (and framework) features usually influence how you would design a program in that language. And it's these concepts that are worth learning. For example, when I learned Ruby and later Haskell, I learned how powerful concepts like map/select or working with closures are.
This knowledge then transferred to the languages I usually work with; my designs in my "traditional" languages changed because of the things I learned while working with other languages.
So even if the new language is not "one the rise" it might pay off by indirectly improving your skills in the languages that you do get paid for.
Re: (Score:2)
For example, if you know C# you won't learn that much by working with Java; they're too similar. By contrast, if you try learning a language like Haskell or Go instead you'll get introduced to new ways of thinking.
"A language that doesn't affect the way you think about programming is not worth knowing." — Alan Perlis
It is worth it. (Score:2)
They might not be programming languages per se, but I've spent a lot of time with autohotkey, NSIS, apple applescript and the like. The one thing all of these have in common is quick, clean looking applications with a narrow degree of focus; automation and deployment.
I've done some pretty nice tricks with them, mostly from a IT side of things. I've done a few applications with autohotkey. One startup I worked at couldn't really customize their helpdesk system, but wanted more info from tickets. I made
Sometimes (Score:3)
Several years ago, I fought tooth and nail over selecting the new test automation framework we were going to start using at work. I wanted a nice, modern, resume-building language like Python/Ruby/Java. What did they pick? - a legacy internal system written in Perl (and abandoned by the original author who had left the company).
Over the last year, I've become a moderately skilled, OO Perl programmer, and it's worth six figures to me. Good enough. :)
- Necron69
Re: (Score:2, Flamebait)
To quote Adam Smith:
THE five following are the principal circumstances which, so far as I have been able to observe, make up for a small pecuniary gain in some employments, and counterbalance a great one in others: first, the agreeableness or disagreeableness of the employments themselves; secondly, the easiness and cheapness, or the difficulty and expense of learning them; thirdly, the constancy or inconstancy of employment in them; fourthly, the small or great trust which must be reposed in those who exercise them; and, fifthly, the probability or improbability of success in them.
So, if you're making six figures writing Perl, are you sure you're being adequately compensated for its disagreeableness? :)
Apex/Salesforce.com (Score:2)
It's always worth learning a new way of thinking (Score:4, Insightful)
Even if you never make use of the new programming language it is almost always worth getting your head around a new way of thinking about problems. You may not ever need to write code in Lisp but understanding what a functional language is and isn't good for is helpful in other languages. If you're building flight control systems then Python might not be the language to do it in but getting deep into it and start understanding why you'd want a metaclass in the first place can help you stricture your code better. There aren't a ton of job openings for Erlang programmers but there are lots for people who understand High Availability and Disaster Recovery and the background knowledge will stand you in good stead.
In short, yes, it's worth learning all the languages your brain can handle. Even if you forget the details the concepts will stick around and help you later.
Success Story (Score:2)
Past paid experience with obscure and legacy languages saved my arse after the dot-com crash dumped tons of coders back into circulation on the west coast. I got no offers until I down-played my web experience and highlighted pre-web experience and languages. You never know what experience will come in handy. It's similar to investing advice: diversify your portfolio.
It depends on your goal (Score:2)
If you simply have intellectual curiosity, why not? But if you want to use your knowledge commercially, you might want to focus on languages that businesses actually use. A language is much more than a set of syntax, it's an ecosystem. Try finding code snips on StackOverflow for your new language...good luck with that! The majority of the benefit of using a particular language is not the syntax, but the community support.
REXX RULZ! (Score:3)
Nope (Score:3)
Depends (Score:2)
As always, the answer is "it depends on a lot of things":
1. Is the language little-used because it's a special-purpose language? UnrealScript probably doesn't crack the top twenty as far as general programming languages go, but in the game dev field it's probably one of the biggest. Using a specialized language for a specialized task is fine - usually even a good thing.
2. Is the language little-used, but library-compatible with a more common language? Clojure is a rare language, but it can call Java librari
No...but faking it before a job interview is ok. (Score:2)
I'll assume the main reason to do this is to get a job, one that in particular advertises for a specific set of skills. One of which is an obscure programming language. Unless you have nothing to do it's probably more worth your time to spend a day before said interview learning enough to fake it. If you want to lie or be honest about this on your resume or in your interview that's up to you and how well you think you can pull that off but if you want your resume to get past HR and make a short list AN
Stop trying to predict languages, follow paradigms (Score:2)
Predicting the future is hard and often just look. But you might want to learn an new paradigm. E.g. functional programming. If you haven't done, it will be eye opening. Or a different environment, esp. if you have only programmed in a MS environment look at non-MS languages and IDEs. People who can work in both are in the biggest demand. Or network databses vs relational databases (though you can build a network schema in a RDB, since a network is a relation), etc.
Look for differences and analogies and ana
Productivity and solution breadth are reasons (Score:2)
I think most languages are the same. There is a productivity vs. speed tradeoff, but:
A functional programming style, can be done in C if you just accept that minimizing global variables and pass functions by their pointers. Learning a functional language is likely to improve your C style and pointer management faster than how you might develop a functional style out of your own assumptions of what it might mean.
Class based OOP programming can also be done with C implementations. The only benefit of OOP i
Yes (Score:2)
I'm firmly in the yes camp.
Since I began programming in 1985, I've encountered dozens of languages. The popularity of every language waxes and wanes, and occasionally it will wax and wane a second time (perhaps like Java is doing today). Programming languages never completely disappear, but the trend in usefulness of languages is on the rise due to more sophisticated toolkits.
Knowing these facts, it's never a bad thing to learn a new programming language. Since languages never completely disappear, you neve
It boils down to luck (Score:2)
I was lucky enough to learn how to program in Neuron Data's toolkits before the 1.0 release of the GUI components were released to the public. I rode that gravy train for about 15 years before the market imploded, with a peak of $120/hr. in the mid-late '90s.
But I didn't choose that route -- I got lucky that something I knew well turned out to have relatively high demand (at least compared to the number of people who really knew that tool well.) I could just have easily been unlucky enough to learn one
Is Java really a programming language? (Score:4, Insightful)
Or is it a punishment?
Re:Yes if you can afford the time (Score:5, Insightful)
ADA? (Score:3)
COBOL is an excellent example, it has become niche, but will be in use on "mission critical" systems for years to come. Perhaps ADA would be another example?
Re: (Score:3, Insightful)
I think ADA is finally on its way out. COBOL and Fortran will still be around for years though. and anyone who knows their way around MATLAB will also be in high demand for years to come. Pick any language on which deployed hardware depends, and you've got a language that will need people who understand it for years to come.
I once new someone who helped a Telecom deploy their COBOL stack -- she was pulled out of retirement some 20 years later to help them migrate it to a more modern platform, as she was
Re: (Score:3, Informative)
I was under the impression that Ada is still widely used in many mission-critical systems [gwu.edu]. For example, the latest Boeing planes' software (777 and 787) is nearly all written in Ada. I haven't heard about another language making inroads in those applications, but I suppose it's possible. More likely IMO is that the relative percentage of mission-critical software has shrunk compared to the explosion of commercial software.
Keep in mind language "popularity" is very industry-specific, so it's often a bit m
Re:ADA? (Score:5, Interesting)
COBOL is an excellent example
Is it? How come I never see job ads for COBOL programmers? I know no one who uses it. I have often heard that it is used in "banks" or for "business" programming. But I know several people that work as programmers at banks, and none of them use COBOL or are aware of it being used at all. They are all Java shops. Same for programmers writing business logic. So I think that all these myths about demand for COBOL programmers is a load of hogwash.
Perhaps ADA would be another example?
Ada was oversold in the 1980s, and quickly developed a reputation for poor performance, and heavy resource requirements. Few systems were written in it, and even mission critical military systems (which Ada was designed for) could commonly get an exemption to use something more sensible.
Re:ADA? (Score:5, Informative)
Re:ADA? (Score:5, Insightful)
If a skill set is sufficiently rare then it's not very cost-effective to advertise for it on the open market - but that doesn't necessarily mean it's not a very valuable skill set.
Re: (Score:2)
What region are you in? Most of the COBOL stuff I've been exposed to are with .gov contracts. The USPS still has mainframes and the shop I used to work at had around 15 graybeards (and one quickly graying 30 something developer they poached from another team). FedEx may still have a COBOL team if they haven't migrated from their mainframes yet (they may have completed their migration to java), and that whole DC/VA corridor is apparently full of government contract companies that still write and maintain
Re: (Score:3)
"But I know several people that work as programmers at banks, and none of them use COBOL or are aware of it being used at all."
Probably they're only average programmers, so they are assigned to safe areas like user interfaces and web sites.. You don't need software engineering for *every* problem.
Re: (Score:2)
COBOL is an excellent example
Is it? How come I never see job ads for COBOL programmers? I know no one who uses it. I have often heard that it is used in "banks" or for "business" programming. But I know several people that work as programmers at banks, and none of them use COBOL or are aware of it being used at all. They are all Java shops. Same for programmers writing business logic. So I think that all these myths about demand for COBOL programmers is a load of hogwash.
Perhaps ADA would be another example?
Ada was oversold in the 1980s, and quickly developed a reputation for poor performance, and heavy resource requirements. Few systems were written in it, and even mission critical military systems (which Ada was designed for) could commonly get an exemption to use something more sensible.
In my current city there is a company that writes software for mortgage companies. Their back end systems were all written in COBOL. They pay a small fortune for experienced COBOL developers, but they are transitioning all of their code over to Java. I also worked on a project for the Department of Defense that was originally written in Fortan, then had new code added as ADA and my company at that time worked to convert all the ADA and Fortran to C. That was about 6 years ago, though.
Re: (Score:2, Insightful)
Not quite.
The simple answer is that once you learn how to code it doesn't matter what the language is. Sure you need to learn where the limitations are, efficiencies of the language, syntax, etc but at their core most programming languages are the same.
I taught myself PHP/JavaScript/etc back in the day, took a few courses with Java but never touched a lick of .NET/VB/ASP. Without knowing anything about how someone had coded a page in ASP.NET, simply looking at the output times, I was able to diagnose an i
Re:Yes if you can afford the time (Score:5, Insightful)
The simple answer is that once you learn how to code it doesn't matter what the language is.
I couldn't disagree with this more. I don't mean to be flippant or argumentative; I simply want to say that my experience has been quite different. I think the langauge you write programs in is incredibly important. You want the right language for the task at hand. Just as an example, I often prototype new ideas for algorithms in Perl as a prelude to rewriting them in C. Perl (and I'm sure Python is as well) is great for a quick prototype and for proof-of-concept testing. But it's terrible for speed (compared to C/C++), and is also terrible at type-safety. When I rewrite something in C, it often runs 100 or 200 times faster than the Perl version. (Not for parsing and string-based stuff, but for integer numerical analysis stuff). But exploring the data structures and getting them worked out first is easier in a high-level language like Perl, with its dynamic arrays, hashes, autovivification, and so forth. Anyway, I rarely prototype something C, and I rarely write production code in Perl. For me, the choice of the language is one of the most important decisions I make on a daily basis.
Re: (Score:2)
I wonder how your performance would compare if you wrote that code (the production code I mean) in C++ rather than C. C is missing all those features, whereas in C++ you can get most of them using the appropriate library. Lots of C++ libraries have hashes (I like Qt's implementation personally), and it also has autovivification [wikipedia.org].
Re:Yes if you can afford the time (Score:5, Insightful)
The simple answer is that once you learn how to code it doesn't matter what the language is.
I couldn't disagree with this more. I don't mean to be flippant or argumentative; I simply want to say that my experience has been quite different. I think the langauge you write programs in is incredibly important. You want the right language for the task at hand.
I don't disagree with this at all. My point was that you don't need to go out and learn an entire language just because you think it might be useful to do. Once you know one or two languages it's not important that you know other languages, just that you know what situations other languages would be better suited for. When you run into one of those situations, it's just as easy to pick it up on the fly because you already have the core knowledge from the existing language(s) you've learned.
I think of it this way... a decade ago my professor gave us a little anecdote about how, if you learned 10 new methods in Java every day for the rest of your life - you'd be dead before you learned everything that was in Java. Since you can't "know" a language because it's constantly being created/changed/etc the best thing to do is understand rather than know.
Re: (Score:3, Interesting)
I agree, but I'd like to expand a bit.
It's not important to know a bunch of languages deeply. I think it's important to learn two or three languages fairly deeply and a few more at a shallower level.
One doesn't really know the right tool for the job until there's some experience with multiple tools. The more different the other languages are from you main language, the better one can judge the best tool. There are lots of different types of languages, and knowing a few types, their advantages, and their dis
Re:Yes if you can afford the time (Score:5, Insightful)
Re: (Score:2)
Throw that same programmer into a FORTRAN, LISP, or eris forbid Prologue, and there will be a larger learning curve than just the syntax and limitations.
Modern FORTRAN won't be that big a deal for anyone familiar with C and bash. Same looping structures, free-form code (indent however you want), etc., but just no braces to mark blocks.
Re:Yes if you can afford the time (Score:4, Insightful)
The reality is (and the GPs point) learning a new language shouldn't take you very much time. If you have to ask whether a language is worth learning, the answer is 'YES' because at that point you need more experience learning languages.
Re: (Score:2)
Well said.
Re: (Score:2)
I find this one of the great tragedies of software development. I'm not saying the alternative would be better. I don't know how it would play out. I'm just commenting here.
Any of the 'big' languages (c, c++, java, c#) have all the ability to make things really easy.
Heck, I recently started using c# as my main scripting desktop scripting language (cs-script). I end up writing slightly more convenient wrapper so you don't end up worry about exceptions as often and polluting scripts.
You could for example have
Re: (Score:3, Insightful)
Re:Yes if you can afford the time (Score:4, Insightful)
Actually, this is a good analogy. You can get from Texas to New York using an F150 or using a Yaris. But what is the purpose? Are you lugging your spouse and 3 kids for a vacation? Then maybe go for an SUV or minivan that provides comfort. Are you transporting some goods? Maybe a truck with a tailer. Is cost a concern? Maybe fuel efficient vehicle. Are you a hipster? Maybe a Tesla.
But even with these different requirements, you still have choices.
Re:Yes if you can afford the time (Score:5, Insightful)
One big factor, here, however, is how similar the language is to ones you already know.
For instance, if you already are well-versed in C and C++, looking at some D or Rust code probably isn't going to be hard for you. However, looking at something in Haskell or Lisp is. A lot of languages these days are very C-like and either imperative or object-oriented (in an imperative way), so to me it's really rather trivial to learn them; it's just a matter of learning what's different. But if you start looking at languages which are really different from ones you know, then it becomes much more challenging. Looking at one with syntax unlike C will be one factor (like with Python), but looking at something entirely different like a functional language will be even harder.
Re: (Score:3)
Certain languages will definitely take a little more time. Lisp is a great example - I've never had the need to use it so I just looked up some code for the first time... it is different but even with the differences I could see the basics at play. I could understand where a conditional started and ended, how certain loops worked, etc. and that's with a quick glance of a random piece of code from google images. Give me a proper doc and an hour I'd be good to go.
Re: (Score:2)
I never thought that C++'s standard library was very good, but it's a pleasure to work with compared to Rust's.
Rust's string handling is a particularly bad disaster, and this permeates throughout the entire standard library.
Rust's standard library is pretty pathetic compared to C#'s, or Python's
I just don't see why Rust is getting as much hype as it currently is getting.
I'm not a Rust expert, but I think you're trying to use a hammer to turn a screw here. As I understand it, Rust was never meant to compet
Re: (Score:2)
When pretty much every other language out there, including C and C++, can do string handling better than Rust can, the problem isn't with the fact that competition is happening. The problem is solely that Rust's string handling is total shit.
You're kidding, right? I've never used Rust, so I can't testify to its string handling, but I'm very familiar with C and C++ and using strings in both, and they both completely suck. C is absolutely horrible, and C++ is terrible too if you use the standard library. Y