Unpopular Programming Languages That Are Still Lucrative

In a previous article, I discussed the best programming languages to learn over the next year. Most of those were popular languages such as C#, JavaScript, PHP, and Swift. (I also did a follow-up that sang the virtues of Objective-C and Python.)

But that’s not the final story on languages: Programmers can also benefit from learning other, less popular languages that could end up paying off big—provided the programmers who pursue them play their proverbial cards right. And as with any good card game, there’s a considerable element of chance involved: In order to land a great job, you need to become an expert in a language, which involves a considerable amount of work with no guarantee of a payoff.

Click here to find a programming job.  

Supply, Demand, and Negotiation Skills

One factor in getting a high-paying job is analyzing the ratio between supply and demand. Some languages may not have many jobs available, but relatively few applicants compete for each job. Check job boards (such as Dice.com) and note the number of jobs, as well as how long those jobs have been open. If jobs are open an average of a few months, there’s a good chance that companies are having trouble finding suitable candidates—which creates a good opening for someone with the right qualifications to swoop in.

Even in an excellent job market, however, locking down that high salary also requires good negotiation skills. If the job requires that you move to a new city, you’ll have to fold data about that city’s cost of living into your decision matrix.

With that out of the way, let’s consider some languages.


R is a language that focuses primarily on statistics and data visualization. It’s not a general-purpose language; you wouldn’t use it, for example, to write for a Web server. Its syntax is quite unique, as it’s technically an implementation of an earlier language called S, and it’s quickly growing, surpassing older platforms such as SAS among statistics pros.

Job listings for R often carry titles such as “data scientist” and “BI developer” and typically include the “Big Data” keyword. One industry where you find a lot of people using R is in pharmaceuticals, where the biggest firms employ a lot of statisticians. And indeed, a New York Times article from 2009 reported that back then Pfizer was seeing a great increase in interest and use in R.

Note: Because the language is just a letter, it can be difficult to locate R jobs in the search engines. For Dice.com, use the advanced search and include an additional word; for example, you can put in R Programmer and choose the “Match all words” option.

Here’s some sample R code, from the website R Examples.

countdown <- function(from)






    from <- from – 1





This code does a simple countdown (sleeping briefly between each iteration) and prints out each step.


Scala is a language that runs atop the Java Virtual Machine (JVM). It was created as sort of a “better” Java. Because it targets the JVM, it works seamlessly with existing Java classes and platforms. The name is a shorthand for “Scalable Language,” and I’ve met people who assume this means it’s for writing scalable, distributed applications, but that’s not really what the word means in this context. According to the documentation, it means the language “grows with you,” from very simple programs to extremely complex systems.

One interesting aspect of Scala is that it includes full functional support that’s totally optional. If you’re not into functional languages, or haven’t learned yet about functional programming, you don’t need to use the functional aspects of it.

Here’s a sample “Hello World” program in Scala, from the samples on the main Scala site.

object HelloWorld {

    def main(args: Array[String]) {

      println(“Hello, world!”)




Haskell is a purely functional language that dates back to 1990. While it has slowly grown in popularity, it remains a bit of a niche language. The language includes an open standard that has been updated a few times over the years, and there are free compilers, including one that targets the Java Virtual Machine (JVM)—making it a good choice for projects that work together with Java libraries. There are many projects that use Haskell; one I encountered is the Xmonad windowing system for Linux. There’s also a nice building and packaging program for Haskell called Cabal. Alongside Cabal, Haskell includes a large packaging and distribution system that lets you search, download, and easily install Haskell packages in much the same was as you can with a Linux package installer such as aptitude. You can check it out at the Hackage (Haskell Package) site.

Here’s some sample Haskell. This code comes from a site called School of Haskell:

lst = [2,3,5,7,11]
total = sum (map (3*) lst)
main = print total

This code calculates the sum of 3 times each number in the list. It shows the elegance of Haskell, as you don’t have to actually write a loop.


F# is Microsoft’s answer to an older functional language called ML. Influenced by OCaml, itself a derivative of ML, F# was originally a .NET language, targeting the Microsoft CLR, and produced by Microsoft Research. (There is a separate group called the F# Foundation, which is an informal group that maintains a language specification.) The older ML language pioneered various aspects of functional programming, and F# also includes functional aspects. But unlike Haskell, F# is not a purely functional language.

Jobs for F# are slowly growing, despite little reaction from the programming community when Microsoft released the language (with great fanfare) in 2005. (Note that if you know OCaml or ML, you will be able to learn F# quite easily, and vice versa; knowing F# you could easily learn and land a job in OCaml.)

Here’s an example line of F#. (I borrowed this from the Wikipedia page.)

let query1 = query { for customer in db.Customers do select customer }

This line uses Microsoft’s LINQ technology to search the Customers table in a database.


Lisp is a language that came out way back in 1958, and although the original language is pretty much dead and gone, several of its descendants live on. One in particular is Clojure, which is new by Lisp standards—it came out in 2007. Since its first release, over 800 people have helped contribute to it. The language is open source and built to target both the Java Virtual Machine (JVM) and Microsoft’s Common Language Runtime (CLR). As the language continues to grow in popularity, so do the jobs. (By the way, you sometimes see jobs for other descendants of Lisp, such as Common Lisp and Scheme.)

Here’s an example line from Clojure’s getting started page:

(javax.swing.JOptionPane/showMessageDialog nil “Hello World”)

This looks just like Lisp syntax, with the statement inside parentheses, and the first item inside being a function name—in this case, one from the standard Java Swing library that shows a message box.

Ancient Languages

This might shock some people, but jobs still exist for languages such as COBOL and PL/1. I spoke with a recruiter who said that he has a position for COBOL that’s been open well over a year, and he simply can’t find anyone to do the job. If you’re brave, you could learn COBOL and take on jobs such as that one, usually offered by very large, well-established companies that have been around for decades (since new companies are unlikely to start new COBOL projects). The downside is that you would spend lots of time learning and using COBOL, which isn’t exactly a popular skill set.

Another ancient language that refuses to die is Fortran. There are still many jobs in Fortran, most of which involve scientific applications or possibly even parallel applications, as Fortran supports the OpenMP parallel programming standard.


Just because a language isn’t the most popular anymore doesn’t mean you can’t profit from it, especially if employers are desperate for people skilled in that language. Be aware, though, that becoming a specialist in a little-used language also includes a certain element of risk, if only because the hours devoted to mastering that language could very well serve another (and equally lucrative) purpose.

Upload Your ResumeEmployers want candidates like you. Upload your resume. Show them you’re awesome.

Related Articles

Image: lenetstan/Shutterstock.com

69 Responses to “Unpopular Programming Languages That Are Still Lucrative”

  1. A language that goes beyond niche is PostScript. A derivative of Forth (an even more obscure language). If you are in, or wish to go into, the print profession learning PostScript is a huge help.

    In that a language devoted to creating ‘pretty pictures’ can be soul satisfying from an artistic perspective. Just dig off your RPN skills and realize that all variables and the stack is global and you should be good to go.

    Adobe Systems still owns the specs, but are freely dowloadable/viewable. Just google PostScript Language Reference Manual.

    While Adobe is trying, very hard, to supplant PostScript with PDF in the print industry, there are a number of benefits to PostScript over PDF.

    Good list. I’ve wanted to dabble in R and Haskell just for the fun of it – these give me good reason to pursue those endeavors
    Fred in IT.

    • Jeff Cogswell

      Hi Fred, thanks for this great comment. I remember learning just a little Forth back in my old programming days in the early 1980s on Commodore computers. I never realized it was a precursor to PostScript. Cool! It’s also interesting that Adobe Illustrator files are now compatible with PDF. You can just rename them as .pdf and open them in Acrobat Reader.

    • Back in the early 90, i was working as a data entry clerk since the economy was very bad for recent college grad. The owner was cheap. He did not want to buy the popular wordperfect. So a lady without conputer background had to dig out postscript manual to make document look nice. It would take couple seconds it were done in WP. It was quite struggle for me. I had to juggle data entry and postscript. Looking back, PS would come handy if certain fonts or formats cannot be print to certain printers because report language fails to address. PS was the solution given by the tech support from a major report sw

  2. Dave Barnes

    FORTRAN was the first language that I learned. I loved it.
    It was the 3rd language that I was paid to program in. The first two being assemblers.
    COBOL was the 2nd language that I learned and the 4th to be paid.

    • Stan Sieler

      Not sure what your problem is with Eloquence … (a) it’s absolutely kept current (there was a major release May 2013, with updates since then), and is a worthy competitor to most other relational DBMS products out there; (b) their BASIC language is aimed at people who developed on HP 250 computers … as such, it works quite well and is efficient and reliable. One of the great things about Eloquence is that they *listen* to customers, and can and do react quickly if you need a new feature.

      (Eloquence runs on Windows, Linux, and HP-UX. It also provides an excellent HP 3000 TurboIMAGE compatibility mode, if desired.)

  3. I am the last of the trained mainframers. I use PL/1 daily, in CICS and Batch, JCL, utilizing BIMEDit on a VSE Z12 OS. I grew up on COBOL, but find it ‘wordy’ compared to some of the others such as EZTrieve, Rexx, RPG, etc… I have worked on many MVS mainframes and like them and the TSO editor they have. I have always had a job using my mainframe skills. Although it is procedural for the most part and kind of boring, I can get enjoyment out of it. I have worked for companies such as EDS, JBHunt, etc…

  4. Stan Sieler

    There’s a place for “old” or “unpopular” languages … they can often teach language designers valuable lessons, if they’d care to look. They sometimes have features lost in newer languages … much like older operating systems (MCP, MPE, VMS) had great features that have been (at least for now) lost.

    About 10% of my current work programming is in HP Pascal … a wonderful version of Pascal (with extensions that solved most of Pascal’s annoyances) that was basically only on PA-RISC systems. Features that are lost from that language might be: a form of type casting that’s safer than usual (because it requires that the thing you’re casting and the type you’re casting into are exactly the same size), and the ability to print an enumerated type and have the *name* come out, not the raw number.

  5. John Rupert

    Where is Smalltalk in this, there are still quite a few profit making companies that are coding in Smalltalk due to it’s modularity. And when speed of changing software equals money such as in finance Smalltalk is still king.

  6. Component Pascal is a general-purpose language in the tradition of Pascal, Modula-2, and Oberon. Its most important features are block structure, modularity, separate compilation, static typing with strong type checking (also across module boundaries), type extension with methods, dynamic loading of modules, and garbage collection.
    Type extension makes Component Pascal an object-oriented language. An object is a variable of an abstract data type consisting of private data (its state) and procedures that operate on this data. Abstract data types are declared as extensible records. Component Pascal covers most terms of object-oriented languages by the established vocabulary of imperative languages in order to minimize the number of notions for similar concepts.
    Complete type safety and the requirement of a dynamic object model make Component Pascal a component-oriented language.

  7. VB6 Programming

    You didn’t mention the VB6 programming language. Still going strong 12 years after Microsoft tried to kill it. Microsoft have just refused calls to update it or open source it, proving yet again it is not advisable to use Microsoft languages – you know they will always let you down.

  8. The R example doesn’t show how R is “different” and its strengths.
    How about something like this

    sumOfSquare <- function(from, to){
    x <- seq(from, to)
    # get square of each number
    xSqr <- x^2
    # sum them up and return
    return (sum(xSqr))

    # [1] 55

  9. Tim McCoy

    I’ve been in the business 30 years. I started in AI and moved to data warehousing which was more in demand. Now I’m looking to go back to what I love – and Clojure/Datomic/RDF/OWL are perfectly suited to my tastes. Especially Clojure – well done Richard.

  10. Aaron Seidman

    MUMPS is used in many environments that have large databases and lots of simultaneous users and need high performance transaction processing (e.g. hospitals, libraries, financial apps). There is a proprietary version called Cache’ which is a superset of the original, that updates some of the original coding drawbacks, and Gtm, which has an open-source version that runs on Linux.

    • Will Johnson

      As far as searching for a PICK job, I tend to search on “Universe Unidata”. Most recruiters or companies worth looking into, will have a line in their requirements like “any PICK system will be considered: D3, Universe, Unidata, MvBase, etc”

    • I think you mean assembly language. An assembler is analogous to a compiler, but it’s for an assembly language. There are many different assembly languages because such languages are customized for the types of machines they run on. For example IBM 370 assembly language is very different from assembly languages for Intel machines.

  11. That recruiter doesn’t want “a COBOL programmer”. That recruiter wants somebody with 10 years experience writing COBOL. Like maybe XBOY. There’s bound to be some old system running in either a bank or a government agency written entirely in COBOL. That system has never had a design, although every feature in it may have a design document filed away somewhere.

    So they don’t need someone to take a quick COBOL course, learn the syntax and how COBOL connects to databases. They want someone who knows how financial systems were written in COBOL in the 1960s, 70s, and 80s. They want someone who can find their way around such a codebase, and find stuff without any help (because the people who have written the code are retired or dead – even those who were brought in after retirement 17 years ago to make the system Y2K-compliant).

    That kind of expert can demand very high pay. But it takes a long time to become that expert. You’d have to (a) learn COBOL and (b) work in some place that has multiple such experts so that they can guide you. Or you can learn Python in about a few weeks and reach a level of competence that will allow you to be useful to an employer who uses Python.

    For these ancient languages you are either a guru or useless.

  12. I have been gainfully employed (and well paid) for programming in COBOL since 1985. We have several COBOL developers on staff and recently another company tried to lure me away only for my company to counter off to stay. COBOL has outlived many languages that have come and gone already and probably will some that have yet to be developed. The beauty of COBOL is that analyst can read it as well (not just programmers). It is a mature Business language that is very maintainable unlike many of the languages that have come and gone. So I can’t help but chuckle whenever marketing companies down play it with terms like “legacy” because they know, they can’t make money if you stick what works.

  13. C++ . . . I’ve been in staffing for 25 years and have an inexhaustible need for C++, Multi-Threaded Developers in a Linux/Unix environment. And yet, most schools with CS programs teach Java, I guess because it is a little easier but then you are competing with off-shore teams for career advancement. I just don’t get it . . .

    I agree about the Python and PHP trend mentioned in your earlier blog. Interestingly enough, the employers with those needs will also request that the person have a C++ background as they bring a certain level of sophistication to the task at hand.

      • Jeff Cogswell

        Hi Phillip, in addition to writing this article, I also write for a site called Go Parallel (owned by Dice). I do a lot of coding in C++ using different multithreaded libraries, focusing on multicore and vectorization. I didn’t know that companies are having trouble finding people to do this kind of work. Maybe I need to send out my resume!

      • Yes Phillip, the most miserable job I ever had was doing exactly that. I encourage young people to avoid C++ jobs at all costs. I’m so glad I found life after C++ using Perl, Python, and Java.

  14. “This might shock some people, but jobs still exist for languages such as COBOL and PL/1. I spoke with a recruiter who said that he has a position for COBOL that’s been open well over a year, and he simply can’t find anyone to do the job.”

    I call BS on the recruiter’s claim. There are plenty of CoBOL programmers who could do the job. The recruiter is probably only willing to pay far below the going rate for the skill level (s)he is seeking.

    • Queuebert

      Yeah… Either the pay is too low or the recruiter is looking for the “purple squirrel” in terms of skills. In all fairness the client company may be stringing the recruiter along because there is no real open position.

  15. jmainframe

    I am a Software Developer with almost 25 years COBOL programming experience. If there ARE companies desperate to hire COBOL programmers, they haven’t found me, and I keep searching but haven’t found them. I’m in the northern New Jersey area, and I am available. I am also willing to relocate, depending on the offer and location.

    • Queuebert

      I doubt the employers are desperate for people.

      While there is plenty of COBOL work available, said work is not available for you or I. I’ll bet the vast majority of those jobs aren’t advertised because whenever the company needs people it calls its approved vendor, Rent-A-Stiff Staffing (read: foreign body shop), to send over a few more bodies.

      Mind you, all this is happening while they have a “job” ad that’s been continuously posted for over a year that for some strange reason can’t be filled.

  16. I have to agree that employers looking for people to work in legacy languages are looking for folk with legacy experience. The down side to working with legacy systems is you are working in a fearful environment where folk don’t understand the systems they have and the culture is very resistant to change. Most of the problems you will be asked to solve will be to build bridges between more modern systems and the legacy systems with the caveat that you change nothing in the legacy system. Often the database structures you will be faced with will be horrendous since you are looking at generations of fragile extension databases where every rule in the book has been ignored and changing one thing brings the whole house of cards down. If it was well designed in the first place, it would have been easily replaced years ago.

    • “If it was well designed in the first place, it would have been easily replaced years ago.”

      LOL. If it was well designed in the first place it’s probably still working like a champ so why replace it with the latest fad?

    • In mainframe, if it’s not broken, don’t do anything. Y2K was the concern in the 80. In th 80 or 90’s it was no longer expensive to make 4 digit year. Companies just wait till 8 months before Y2k. Guess what, i heard it was not good fix. I heard many system has this fix. If year <= 39, it is 21st century. Otherwise, it is 20th century. In c, c++, vb, .net, pascal or any language that comes after 1970 that you encounte such issue. People may store 2 digit when year when thet wrote in c, but people would correct ASAP. It is not short cut. COBOL AND DB2 have shortsight issue. The good news is Cobol and other lang will be popular in 15 years

  17. PL/1, Fortran (or FORTRAN as originally written), PASCAL, COBOL, LISP, ADA, VB6 (and VB.NET; poor cousin!), PERL… All (older) languages I’ve been proficient in at one time or another, and still am in some cases. And a bunch of the newer ones; some better, some far worse, but all an interesting progression.

  18. “I am a Software Developer with almost 25 years COBOL programming experience. If there ARE companies desperate to hire COBOL programmers, they haven’t found me,….”

    I also have many years of COBOL experience. The mainframe market is very regional. I have seen a lot of jobs in the Northeast and Midwest, but much less in the West where I live. And the jobs are rarely pure COBOL coding these days. As someone else commented, most of the positions also want you to have some experience with another language such as “.Net”, or Java, or many times a lengthy list of modern languages that you aren’t going to learn while working on the mainframe.

      • Stan Sieler

        Ah, but the topic is “unpopular” programming languages …

        From dictionary.com popular: “regarded with favor, approval, or affection by people in general” … for many, many programmers that explains why C is a legitimate candidate for this topic 🙂

        (Me? yeah, I write in C … 2000+ lines yesterday, but that doesn’t make it a popular language for me!)

    • C should not be on the list. It kind becomes assembly of 2000’s. Last year, a recruiter tricked me. He told me he has Asp.net job. It turned out it was C. I am ok with the C. The problem is it is using proprietary library routines. It is using company proprietary database. It was a contract job with no chance of becoming perm. The hour rate is $10 below .net programmers. Oh, I happen to know the lib and db. The rate was still low. I wander who would work in that contract job. You can not grow with the company since it is a contrac job. You cannot find the job afterward because you become expert on proprietary library an db while working there. That company should pay above market rate to recruit, but it paid way below market rate. That is the reason many companies cant find people to do old tech stuff

  19. G. Anthony

    I’m a COBOL programmer with 25 years experience. I’ve been searching for a job for 10 months now. The truth about COBOL is that it’s extremely efficient. Large companies with very large files can’t process the data as efficiently with any other language.
    What nobody is talking about here is that after 9/11 the large financial institutions were mandated to move the mainframes out of the population centers. At the same time the cost of data lines got real cheap and people in places like India were learning COBOL and everything else. So the companies realized that they could hire armies of programmers in India for pennies on the dollar. Those of us COBOL programmers who were too young to retire in the states are now between a rock and a hard place. There are a few jobs left for the programmers who are at a top level and are willing to work very long hours for very little money.

  20. I agree with the college’s refusing to teach COBAL ext… Comment. I originally signed up for an AAS Programing degree because they offered COBOL , PASCAL , C, and other older programing lauanges only too have them drop those languages before I could complete the mandatory math classes. Boy was I disappointed! I was being retrained due too a disability.

    I wound up working on an IT help desk. It was the first company to call me offering full time emplyment with benefits.

    I wonder if some experts were too offer too tutor/ teach these older languages how many students they would get? I would be interested but currently back on disability.

    • C is not dead. Pascal is dead especially Microsoft killed Delphi. However Pascal is a good lang. Some people can learn java or other OOP lang easily. People don’t. Pascal is a very structural lang. It is easy to learn. It will good step stone to learn c and C++. That is the reason many school still teach Pascal

      • “C is not dead. Pascal is dead especially Microsoft killed Delphi. However Pascal is a good lang. Some people can learn java or other OOP lang easily. People don’t. Pascal is a very structural lang. It is easy to learn. It will good step stone to learn c and C++. That is the reason many school still teach Pascal”

        Well, neither Oberon nor Component Pascal are dead. They are the descendents of Pascal.
        I am Chair of an international organization (USA, Russia, Austria, German, UK, Australia) which has taken taken over the maintenance of BlackBox/Component Pascal from it creator Oberon Microsystems Inc of Zurich. Take a look at its website mention above.

  21. How about the predecessor to C — PLM from Intel. PLM80, PLM51, PLM86. Used in the engineering world for real-time control systems, etc. Program Language Microprocessor is my guess as to the acronym meaning.

  22. Fabrizio

    Hello everyone!!
    I’m a Cobol analist programmer since 1989 . I work in Italy for banks. I’ know the so-called “new tecnologies!!” (java.o.o..ejb,jboss,etc.etc.). Here, the place for the mainframe experte is very .. “crazy” !! I mean: on one side the businnes reserching the experte of cobol/mainframe desperately, on the other the work is offered for a short time and poorly paid !!
    I Think, that is difficult to predict the future of cobol programmers(and Mainframe expert), and that is a transitional period of adjustment between supply and demand.
    Many companies(Including Banks) believe that the need of cobol programmers is tempory, but is not true !! …There is still much to do !!
    I think that in the next five years, with the retirement old employees, there will be an adjustment, with a increase in the demand for cobol programmers.
    Very sorry for my awful English !!!! Best regards everyone !!

  23. A mention to languages like Mumps/Cache which are prehistoric even when compared to Cobol. They are still used in some hospital management systems and there are a few developers who struggle with this structure-less language.

  24. Adam Priestley

    My main question would be for those whom want to have a pocket ace in an interview, which Legacy language would be best for a government job, like going for a cyber security position? I figure, if I can’t be useful as a cyber security professional, the government agency can use my Legacy language skills; its job security and a giant fear of being pink slipped, lol.

  25. Robert Monfera

    The R example is a very unfortunate pick. Some of the real powers of R are the vectorized functions. Examples can be seen here: http://www.mayin.org/ajayshah/KB/R/html/b5.html

    Not only it is more concise and less error prone to work on sets (well, vectors, arrays, lists, data frames – after which Python pandas were modeled) of data, but you benefit from (usually) a sound mathematical approach, and optimized matrix and linear algebra libraries, e.g. BLAS, GotoBLAS2, Atlas etc., probably even things like CuBLAS. The speed difference between a vectorized and a loop based solution can be several orders of magnitude.

    R has most of what SciPy and NumPy has. In addition, it has the largest breadth of statistical libraries available in open source (http://cran.r-project.org/web/packages/available_packages_by_date.html). So again, a typical R example would start by library(‘hglm’) and the actual code would be mostly glue code among libraries, and functions for custom statistics, backtesting or visualisation. Speaking of glue, R is an excellent base for C / C++ development, with a meticulously documented interface (Rcpp) and wrappers for integrating with C++ (e.g. RcppArmadillo for linear algebra).

    No blurb on R would be complete without mentioning the ggplot2 package, which is the leading implementation of the Grammar of Graphics.

  26. Ronald Logan

    I remember Forth as a language of choice back in the 1980’s for use with industrial machine controls, and robotics.

    Being an interactive language that behaves as both a script interpreter, a compiler, an assembler, and a source code editor all running on a real time system, on site and without any other language supports.

    It is also an extensible language, or a language to use to write a language. We used to call them vocabularies. You can make up what ever syntax rules you like or are most useful for the application.

    Too bad that it was never truly recognized by a large number of developers. People say it is dead. My grand mother is dead but she lives on in my heart.

  27. My first programming language was FORTRAN on a Sperry UNIVAC 1100 series mainframe. I worked at the U.S Census Bureau I wrote number crunching applications in a batch processing environmentt
    I worked at few other Federal agencies where I gound a niche with dBASE and Clipper. There were a lot of pet projects and I was the goto guy. I got a lot oof milage aot of Clippper.
    Then came a promotion to an agency that used an IBM development tool in the VM/ESA envirinment called Application System. It was a programming language that I learned to love to hate. Fortunately, Power Biulder became the in thing for a while and when that went away due to the catastrophic release a Version by Sybase and a trend towardsWeb based systems, I was relagated to being what is called in Government as the Contracting Offecer Technical Representative (COTR) in which I minitored contractor’s deliverables and signed off on ther work. It was a way of putting me out to pasture.ujtil I retired. After all, programming is a young person’s sport.