The Most Important Obscure Languages? 429
Nerval's Lobster writes: If you're a programmer, you're knowledgeable about "big" languages such as Java and C++. But what about those little-known languages you only hear about occasionally? Which ones have an impact on the world that belies their obscurity? Erlang (used in high-performance, parallel systems) springs immediately to mind, as does R, which is relied upon my mathematicians and analysts to crunch all sorts of data. But surely there are a handful of others, used only by a subset of people, that nonetheless inform large and important platforms that lots of people rely upon... without realizing what they owe to a language that few have ever heard of.
I would hardly call R obscure. (Score:4, Insightful)
Re:I would hardly call R obscure. (Score:5, Interesting)
So what is and not obscure? ,Modual, Oberon?
ADA? It is used in all the latest Boeing airliners but not used a lot outside of the aerospace community.
What about Lisp?
Or Haskell?
What about Comal, Action! and Promal? Now those are obscure.
Pascal
Or the RPG family? REXX?
Some are truly obscure or just not used anymore and some are very common in a specific domain. For instance I have never needed to use Lua but I know it is used in a lot of places.
Re: (Score:3)
Pascal? I can remember when many, many Intro to CS courses were taught in Pascal. Including some I took. I still have the textbooks.
Re: (Score:3)
True... I had a Pascal class in high school... it used to be fairly common to teach with once upon.
I still remember my teacher talking about a "Waloop" and I couldn't figure out what the heck that was. (I should note that I wasn't alone with this confusion in class.) Then it hit me that she was talking about a "WHILE LOOP"! D'oh! lol She had a wacky accent.
Re: (Score:3)
A few I think are in the category of obscure languages that at least comes to my mind:
Re: (Score:2)
Re: (Score:2)
I haven't used Erlang, but I've heard of it, which means it probably isn't too obscure.
Read the summary. They are only discussing obscure languages that "spring to mind immediately".
WEB (Score:4, Interesting)
Re:Avoid INTERCAL (Score:4, Interesting)
R is also only one of several even more obscure languages in that domain, including Julia and Stan... is MAPLE still a thing? Less obscure is MATLAB, and Mathematica... (all platforms as well as languages) they've all got their special strengths as usual.
Swift is more popular than R, yet still obscure compared to the top 10 or so. I don't know how ABAP is still alive.
Prolog, Scheme, Groovy, SCALA... there are lots. Even LISP shows up below R in some lists.
SQL is similarly not obscure in its area, but worth learning and you rarely see it in a list of general programming languages (because it isn't). But the commercial vendors all ship their SQL with strong variants that extend the language and do more common language functions like looping. I speak of PL/SQL, TSQL, and their ilk, which all have a touch of obscurity in the same way R does.
I might recommend targeting obscure libraries or platforms also. CUDA isn't a language so much as an architecture; OpenCV is interesting.
If you're looking for jobs, take those, plug them into a job search engine and see what interests you. Languages tend to correlate with industries fairly well. If you want to work on Genomics, you'll see different languages at the top than if you want to work on Wall Street.
Avoid INTERCAL job postings at all costs.
Re: (Score:2)
R is also only one of several even more obscure languages in that domain, including Julia and Stan... is MAPLE still a thing? Less obscure is MATLAB, and Mathematica... (all platforms as well as languages) they've all got their special strengths as usual.
Don't for SAS Macro Scripting (http://support.sas.com/documentation/onlinedoc/code.samples.html). Extremely influential in numerous science fields and among non-programmers.
There's also VHDL (popular for Engineers, again, typically non-programmers), and whether you like it or not even in the Windows world DOS-Batch is still very much alive though slowly getting converted to PowerShell (derivative of C#).
Intercal (Score:5, Funny)
http://catb.org/esr/intercal/
It speaks for itself...
Haskell? (Score:4, Informative)
I might go with a more exotic language, like Haskell or Mercury. D and Scala aren't as big as C++, but they're not conceptually that different. (That's not to say they're not worthwhile, mind.) Languages like Haskell, Mercury, Prolog, Erlang, are rather more alien.
I guess my real point is that most important isn't terribly precise.
Re: Haskell? (Score:3, Interesting)
How about FORTH? It's the stack fantastic!
Re: (Score:3)
Alan Perlis said, "A programming language that doesn't affect the way you think about programming isn't worth knowing." Forth is worth knowing by that metric.
Yay, FORTH FTW! (Score:2)
And its descendant is used everyday by everyone who prints out a PostScript/PDF document! :)
Paul B.
Re: (Score:3)
I definitely agree. Once you've learned Haskell, it helps you understand a lot of design decisions in other pograming languages. So well worth it even if you don't end up writing tons of production Haskell code.
Re: (Score:3)
VBA (Score:5, Funny)
Visual Basic for Applications seems to be a pretty important language on the dark side of the Force.
Intermediate languages (Score:2)
BF (Score:2, Informative)
I rather like BF. It's a very compact language with 8 instructions total, so it's usefulness to implement useful software is pretty limited. By pretty limited I mean 0. However, the language itself, being 8 instructions and some implied state, is pretty trivial to implement. It is also Turning complete. So it ends up being a great mechanism to prove another language is Turning complete by implementing a BF interpreter with it. So no one wants to actually use it, there is a small number of people who know ab
Does Ada count as 'little known'? (Score:5, Insightful)
Most contemporary aircraft have significant amounts of flight-critical software in Ada, some train control systems use Ada, some air traffic control systems use Ada, and of course there's a lot of Ada in US (and other country's) weapon systems. There's the SPARK subset that has been used for provably correct systems (does your software vendor provide a no-bugs warranty?). And there's production-quality code available under Open Source. http://www.adacore.com/ [adacore.com] (no connection with AdaCore, other than I have lots of friends who work there.) All of my production code after 1980 was written in Ada. There's substantial anecdotal/unpublished evidence that shows large Ada systems have substantially lower life-cycle/software maintenance costs. Your Mileage May Vary, of course.
Re: (Score:2)
Re: (Score:3)
If they're computer science graduates and have not heard of Ada, then they're merely 9 to 5 programmers with no interest in their chosen profession. If they're on Slashdot and have never heard of Ada then they need to turn in their ID number so that someone else can use it.
Re: (Score:2)
Ada and the PRG family jumped to my mind first. Do those count?
Re:Does Ada count as 'little known'? (Score:5, Interesting)
I would say that since the FAA dropped the Ada mandate near on 20 years ago, there are few to no new projects being developed in Ada. As a former Ada programmer who has worked on avionics systems, the only jobs I see out there are for maintenance and upgrading of legacy software. Every new avionics project I've seen is done in C or in some cases, C++, depending on whether or not they went to the trouble of getting C++ accepted by risk-averse project management.
I've spent a career in the safety critical world, both in military and defense. Coincidentally, I did a short stint in train control as well. I haven't written a line of Ada code since 1998 and it's becoming increasingly rare to see any project still written in Ada. I have not even heard of any train control systems being written in Ada (though that doesn't mean there aren't). All of the new Positive Train Control upgrades being added to train systems are all written in C/C++. That much I can say for certain.
While Ada has some useful features, I found it was more than a bit tedious and cumbersome to use day to day. And while the development environment is solid and bug free, it doesn't get around the fact that bad programmers write bad code in any language. Sure, Ada puts road blocks in front of you but bad programmers are adept at getting around them with surprising frequency. That's not to say bad programmers writing bad code is exclusive to Ada. Bad programmers write bad code in any language. But the whole notion that a language can "prevent" bugs is ludicrous. The best it does is to "help you avoid" bugs. But adherence to a quality coding standard, along with competent people performing code reviews will do that for you no matter what language you use.
In this day and age, Ada certainly qualifies as "little known" because it is a dying language that most young people are never exposed to. It is slowly being displaced by more ubiquitous languages. Sure, there are some passionate adherents who will keep it alive for decades to come. But it will linger on only in a few niche environments, slowly fading into history.
Re: (Score:2)
I've spent a career in the safety critical world, both in military and defense.
That should be "civilian and defense"...
Re: (Score:2)
Only parts of C++ are non-deterministic. You can write deterministic code in C++ if you limit yourself to a subset of the language.
Thing is, pretty much every language has non-deterministic features. Even Ada. Every language that allows dynamic memory allocation off the heap has the potential for non-deterministic behavior.
Re: (Score:2)
It's not a poor excuse. It's a valid reason. Everyone of the engineers I worked on Ada projects with in the past won't touch Ada projects now unless they were desperate for work. We just find it so unpleasant to work on. Sorry but you, as a fan of Ada, are in a very small minority.
Re: (Score:3)
COBOL (Score:2)
But it is nothing like all the 'modern' languages because it has hardly evolved. As a modern day well educated programmer, you will still need to make a few mind leaps to become a COBOL programmer, and as such it counts as obscure.
However, many banks still handle their transactions on mainframes with COBOL.
Re: (Score:2)
Re: (Score:3)
I remember the COBOL guys got a lot of extra work when banks and other companies were preparing for Y2K. I think they had to import people from Russia, since there was a shortage of people in the U.S. who knew the language well enough.
Scala (Score:3, Interesting)
A few years ago I started using Scala and have even worked at shops where I convinced them to let me use it on larger scale telecom projects. There are things in Scala that can be terse and weird, but it's more than just a clean version of Java. If you learn all the tricks, it's got a lot of syntactic sugar and functional syntax that lend itself to shorter more manageable code. I'm still using it for some pretty big projects like BigSense.io.
Although it's not just Scala, Groovy and Clojure are both languages that try to leverage the existing JVM and the rich base of Java libraries with a newer language.
Java was a big stepping stone during its time. It did a lot of things right, but the backwards comparability and keeping in horrible concepts (checked exceptions, no real properties, interfaces) has kept it from really growing as a language. I think the future of the JVM won't include as much Java.
Re: (Score:3)
Checked Exceptions are not a "horrible concept".
Try to do a majour project without them ... have fun!
And what would you suggest as replacement for interfaces?
Sure, Java lacks true mix ins and true multiple inheritance (and templates) ... but what has that to do with interfaces?
Tamil, I would say (Score:2)
This one's easy (Score:5, Funny)
French.
Re: (Score:2)
And if you go to New Brunswick, Canada's only bilingual province, it's a different type of French yet again.
LISP (Score:5, Interesting)
LISP is probably the most powerful language every discovered. I say "discovered" here and not "created" deliberately. There is a quality about it that makes it feel more like an extension of mathematics rather than a language.
It might have conquered the world if only Eich had been allowed to build Scheme in the browser [brendaneich.com], as he was hired to do.
Instead, it languishes for some reason I can't really understand. I still wish for a day it becomes a mainstream language but I think it'll just remain a wish.
Re: (Score:2, Informative)
The syntax is too obscure for most mainstream programmers.
including postscript, etc (Score:2)
LISP is the correct answer - it's in almost every printer on the planet, to begin with - by far the most ubiquitous of all, and as obscure as reverse polish is.
Re: (Score:3)
Obligatory: https://xkcd.com/224/ [xkcd.com]
Re: (Score:2)
Re: (Score:2)
The differences are big enough that some people distinguish two schools of OOP: the Simula/Liskov/Meyers way, and the Smalltalk/Kay/Ingalls way.
MUMPS (Score:4, Insightful)
https://en.wikipedia.org/wiki/MUMPS
This unholy abomination is often tied into your healthcare systems. At the minimum, modern health care software has to be able to speak it to communicate to the old iron still used by hospitals. Often times, you'll still see the software designed in it. The best thing about it is the compactness of the code, which hearkened back to the day when 640kb of memory was all anyone needed. It compressed so much and encouraged such short variable length that mentally unwinding code is extremely difficult, especially when those variables are functionally database queries.
JCL (Score:2, Insightful)
Job Control Language.
Pascal? (Score:2)
Is Pascal used anywhere still? Should I put it back on my resume? Maybe the military uses it in the missile silos with those big ole 8 inch floppies.
Re: (Score:3)
Is Pascal used anywhere still?
We [freepascal.org] still get a lot of downloads, so I assume yes :)
Re: (Score:2)
Re: (Score:2)
I haven't programmed in Pascal in ages, but I do only really have fond memories of it. It was nice and slick. Very easy to read and write in.
Ada? (Score:2)
It can be debated if Ada is obscure or not, but it has an important place in computing: Programs made from it can be made provably secure. Very few languages can do this.
Of course, with most dev houses, being able to have a build tree that can compile an executable for packaging on ship date is the most important thing out there, but if someone actually cared to write code where security or life safety is an issue, there is a language, that isn't too unpopular, that can be used for this.
Big Trak Logo (Score:2)
My first exposure to programming was Big Trak, a tank-like toy that you could program to move around the room and perform various functions. A few years later, I would be introduced to Logo at school. I had no difficulty in picking up the language, as I've been using it indirectly for years.
https://en.wikipedia.org/wiki/Big_Trak [wikipedia.org]
LISP? CMS-2? (Score:2)
I depends on what you consider "obscure". If LISP counts, it is probably the most important obscure language ever, just because it influenced the design of nearly every major modern "scripting" language. Particularly those that aren't procedural.
If you mean languages most have probably never heard of, I'd go with CMS-2 [wikipedia.org] It was (and probably still is) used extensively in shipboard systems in the US Navy. It was also the Navy's first crack at a "unified" language. This led to a concerted effort to get rid of
CULPRIT (Score:2)
A language used with graph (though we called them 'Network Databases' instead) and NoSQL database engines in the 80's and 90's. CULPRIT is to COBOL as SQL is to Java or C#. Or what ever NoSQL query language you are using is to whatever programming language you are using.
Lua (Score:2)
"Important" tends to depend on the industry. For videogame programmers, I'd submit that Lua might be a candidate. While C++ reigns supreme for game engine and client code, and C# has become fairly common for tools programming, Lua has proven to be extremely popular as a plug-in scripting language, as it's free, lightweight, easy to embed in game clients, reasonably powerful for it's small size, and (being written in C) completely portable.
It's famously used by World of Warcraft, of course. At LucasArts,
SNOBOL4 (Score:2)
and we cant forget NORTH, ay?
awk (Score:4, Interesting)
While it isn't considered a full-blown language, awk is pretty useful for a lot of purposes. Best of all, it's included with every *nix flavour.
C++, hands down (Score:5, Insightful)
I use C++ all day, every day. Every time the C++ standardization committee meets, the language gets more obscure to me.
Re: (Score:3)
I use C++ all day, every day. Every time the C++ standardization committee meets, the language gets more obscure to me.
Someone with mod points mod parent up +1 either funny or insightful.
(I've already contributed to this thread, so I'm disqualified.)
There are also proprietary languages (Score:2)
There are also proprietary languages such as OpenEdge ABL (Advanced Business Language)
GAMBAS (Score:2)
Old and died I think PICK AT (Score:2)
I remember running into a PICK AT system for a database application server quite a few years ago. Making a back up of the OS was difficult due to the non standard format. Found very little info on it at the time which made life difficult to service the system. It ran on a PC AT in the time of DOS.
Wikipedia on PICK https://en.wikipedia.org/wiki/... [wikipedia.org]
Re: (Score:2)
VHDL (Score:2)
No comparison. VHDL [wikipedia.org].
Every day you touch dozens or hundreds of things containing chips designed in VHDL, and you've never heard of it. Well, maybe you have, but no one else has.
Assembly (Score:3)
Re: (Score:2)
After having watched numerous threads on xda fizzle because the participents didn't have the ASM chops to reverse engineer bootloaders, I think GP's point is pretty valid. Don't underestimate just how much control humble boot/driver ROM writers actually have over the landscape on which everyone else walks around.
Also learning ASM gives you a better feel for how the hardware sees your higher level code, so it helps to build instincts about what is likely to work well and what will drag ass.
BTW after x86 and
Re: (Score:2)
I would say that the inverse is more true, it's a damned shame that the people who design computers are completely clueless about the people who program them and what their problems are. For example what idiot decided that pointers are good things for humans to use in their programs? They should go down in history as one of the great causes of misery in our world.
4 Suggestions. (Score:2)
The chips you are using are created using SystemVerilog or VHDL mostly.
OCAML is used a lot to formally verify the logic in those chips and C code.
OpenSCAD is an excellent physical design language for creating 3D shapes with code rather than poking your mouse at a 3D UI.
gcc linker command language (Score:3, Interesting)
Crucial for a huge amount of software, yet very obscure.
CORAL66 & JOVIAL (Score:2)
tcl/tk (Score:4, Interesting)
Its incredible how many *huge* simulation and engineering systems, adminirtative tools, and other things are still powered by a language the mos important datatype of which is a string.
I for my part discovered tcl/tk as a programming language for everyday use only in 2007, and even if my tcl/tk programs were not that elegant (as e.g. the equivalent python program) they were compact and *extremely* stable (within 4 years of round-the clock data acquisition with sessions of months each, i never observed a crash attributable to the core libraries, no memory leaks etc....)
IBM RPG (Score:2)
RPG was, and still is in some cases, the backbone of a lot of systems run by big corporations, banks, and government organizations. It's more of a back-office sort of language so it's not highly visible.
Some more languages (Score:2)
Kdb/Q, K, and while at it, J and APL. Cool stuff.
ABAP/4 of SAP is the modern day COBOL, even uglier and backwards.
How about FP and FFP, created by Backus, after realising the imperative mess that his FORTRAN unleashed on the World?
MUMPS, JCL/REXX, JOVIAL (Score:3)
MUMPS - A horrific health-record management specific language inexplicably still in wide use.
JCL and REXX - Used for Mainframe scripting. Few mainframe shops will be without a JCL guru. (JCL is used for non-interactive scripting, REXX is used for the sorts of things you might use Perl for everywhere else.)
JOVIAL - An IAL offshoot that still runs much of the US ATC system until the FAA finally finishes replacing the systems that run it.
PL/B (Score:2)
http://www.sysmaker.com/infopr... [sysmaker.com]
Oh, wait... you wanted an important obscure language. Sorry. Carry on...
Obscure? Yes. Important? I doubt it. (Score:2)
Useless obscure languages I've programed in...
ATLAS - Automated Test Language and Stimulation, Looks like basic or Fortran but has only basic looping and variables. If you wanted to do any data processing you dropped into FORTRAN.
VULCAN - The Operating system/shell ATLAS ran on, which ran on an Harris H-100 computer. 128K of memory, 24 bit address buss with a whole board dedicated to the processor made of 7400 logic chips, and the size of your fridge with lots of flashing lights and thumb switches to 'p
My favorite obscure language (Score:3)
Mention of C# brings back nostalgic memories of maniacal pizza-driven overnighters to finish projects in the latter days of "Windows," an operating system written by Washington-state software developer Microsoft, which you will probably remember for its office applications. It enjoyed a period of popularity ranging into the first decade of our new century and is still in use by some of my rural IT customers.
Vala (Score:2)
Vala translates syntax very similar to C# into idiomatic C using GLib for object-based programming (inheritance, encapsulation, events, etc. are all supported). Hundreds of lines of Vala spits out thousands of lines of boilerplate C. You get native code that's nice and fast (reference counting is faster than GC, and you have no intermediary language like .NET/Java since it compiles to C which compiles to native). A couple of programs on popular Linux distros use Vala.
It's a great language for plugin develop
Unlambda (Score:2)
For the most obscure, if not the most important, I would nominate Unlambda. It excels at giving headaches to unwitting users.
Lua (Score:2)
It's the defacto standard for games - meeting the requirement of being pretty much everywhere, but at the same time not well known. Most games with a scripting language have selected Lua because it's tiny, fast, simple and effective.
Obligatory (Score:3)
English.
In all seriousness: it's becoming difficult to communicate with all the acronyms, framework names being used as verbs, and corp-speak trickling into conversation, and this is with folks who are not necessarily expert communicators in the first place.
Re: (Score:2)
Re: (Score:2)
That's sad. Assembler was a required course for my CS degree. If you wanted to mix in any significant computer engineering you took the optional second course that covered Motorola assembler as well.
Re: (Score:3)
That's sad. Assembler was a required course for my CS degree. If you wanted to mix in any significant computer engineering you took the optional second course that covered Motorola assembler as well.
Same for me. Motorola 6800 and 6809 assembler for the low level and Pascal for the data structures courses. Once we had a strong grounding in both, they let us loose on C. It was a great combination.
Re: (Score:2)
Until you can at least READ assembly, you have no idea what a computer actually does.
considering the depth of complexity of today's computers, no single person has any clue about what is actually happening
get a grip and accept reality as it is
Re:The one true language (Score:4, Insightful)
I find being able to read assembly incredibly useful when debugging optimized C/C++ code. In my experience it's not infrequent for a debugger to not be able to find the value of a variable in memory, even on lines where the variable is being passed into a (non-inline) function.
And debugging optimized code is required a fair amount when fixing performance & reliability issues (when the problem may disappear on non-optimized code), and embedded (where the program may not fit on the device without optimization).
Re: (Score:3)
You make a good point about assembly language. I cut my teeth, so to speak, on IBM 1620 assembly way back when, and that type of learning very early on in my career was really a good thing in terms of learning how computers work --- something that hasn't changed in its fundamentals.
Re: (Score:2)
Re: The one true language (Score:2)
+1 for this. I sometimes need to squeeze extreme performance out of low end chipsets, and assembly routines are frequently the answer.
Re: (Score:2)
Babylonian Aramaic. Way easier than Palestinian Aramaic.
Re: (Score:2)
and on the other end of the spectrum https://en.wikipedia.org/wiki/... [wikipedia.org]
Surely the best joke in Computer Science *ever*.
Re: (Score:2)
*Love* whitespace, since a whitespace program and a C program can coexist in the same source file.
Re: (Score:2, Insightful)
For the avoidance of doubt, Go, Dart, Swift and Rust are top tier hipster, and a kitten masturbates god every time someone writes their first Hello World in any of them.
Ruby is so obviously hipster that not even hipsters think it's cool anymore.
Every language developed in the past 15 years which promises AMAZINGLY EASY PARALLEL PROGRAMMING OPPORTUNITIES is hipster. Pro-tip: parallel programming is hard, and an excellent understanding of just what the fuck you're doing is what'll give you efficient, bug-free
Re: (Score:2)
jQuery in particular is a great example of how it doesn't matter one fucking bit how incompetent software developers are because Intel makes some really fucking fast CPUs these days.
It might just show that targeting several different runtimes, often with different capabilities, is hard, and that smart developers use a library to abstract the problem away. What you said, is an example of how you are ignorant, and probably a dickhead.
Re:3 categories: general-purpose; specialist; hips (Score:4, Insightful)
Your attitude sucks rocks. Your use of the word "hipster" as a pejorative is asinine. It demonstrates that you have the emotional maturity of an eight year old.
To show just how puerile you are, I will demonstrate by substituting "cooties" for "hipster" in part of your post.
Since there are no standards on Slashdot it makes no difference when you post drivel like this. If you were to ever display this kind of behavior in a school or professional environment you would be lucky to last a week.
Get a clue. Grow up. Otherwise you are a waste of space.
Re: (Score:2)
Spouse Home Orders Exclusively
Note, despite the acronym, this fictional language works just as well on men as it does on women.
What part of the acronym implies it works better on women?
Re: (Score:2)
Would you fly in an airplane whose flight control software was written in Javascript?
Re: (Score:2)
Re: (Score:2)
TCL also has a waning wind behind its sails in automation of some router platforms, though the trend in higher layer network gear seems to be drifting towards python from what I can see.
Re: (Score:2)
And here's why. [wikipedia.org]
Hey... that's a different kind of coding. ;-)
Re: (Score:2)