What is the most exotic but RealProgrammingLanguage?
...that you've used to solve real problems?
This requires definitions for exotic and real. Is this intended to explore the small fuzzy intersection of EsotericProgrammingLanguages and RealProgrammingLanguages? The definitions on RealProgrammingLanguage specifically exclude InterCal and UnLambdaLanguage. Depending on what you're used to, exotic could mean "not like Algol" (ObjectiveCaml) or "not textual" (PrographLanguage, GeeLanguage) or "not using a standard character set" (APL) or "not for normal hardware" (NewtonScript, OccamLanguage) or even "obscure and unpopular" or "outdated" (PlanKalkuel). Real could mean "popular" or "published" or "widely ported".
One answer would be to query SourceForge for language unpopularity and exclude VaporWare projects. Another would be to scan the low-traffic *.lang.* newsgroups for product release announcements.
Perhaps each nomination should include a specific "real" application in which the language was used.
Nominees:
[Lucid: The Dataflow Language]
When I was in school I used to check out this one book over and over again:
["Lucid: The Dataflow Language" by Bill Wadge and Ed Ashcroft, c. 1985]. ["Lucid, the Dataflow Programming Language", W. Wadge, Academic Press 1985]. ISBN 0127296506
It was programming using a plumbing metaphor. Fascinating stuff.
Here's some web based info: http://lucy.uvic.ca/LucidPrimer/LucidPrimer-Start.html It seems that some pages that were around a few years ago are gone.
Anyone know of a more exotic real programming language?
I'll second the Prolog nomination. Prolog is "exotic," and yet it was, at a time, rather heavily used -- in some ArtificialIntelligence applications, and by some Japanese corporations. Writing programs in Prolog can be a mind-bending experience: Assert Facts, Add rules, and then fire it off to see what conclusions it reaches. "f(a,b,c) := {a + b = c}" is a function, that given a and b, computes c. And given c and b, computes a. And given all three, verifies that c is the sum of a and b. And given no values, just "remembers" the relationship between the values, ensuring that it won't be violated later. Hmmm.... -- JeffGrigg
I guess it depends on one's definition of exotic, but AplLanguage gets my vote.
I was thinking APL too. Very real, almost impossible to wrap my head around, very fast (for its time), very rich, etc. etc.
APL: The write-only language. -- JonReid [DriveBySlander alert!]
Glad to see APL being suggested, but to be up-do-date, I'd vote for J (JayLanguage, but only in wikispeak), available at http://www.jsoftware.com/. --JimRussell
Dunno. Even though the operator system in J is more logical, it still looks like line noise to me. I find the APL symbol set much more readable. --DavidBrantley
Why hasn't anyone nominated Forth is beyond me. It's a real enough language, being used on OpenBoot and FreeBSD boot loader, for example, and it's seriously weird. How about a language where
: 0 1 ; 0 0 + .prints 2? Or where
: constant create , does> @ ; : constants 0 do constant loop ; 9 8 7 6 5 4 3 2 1 0 10 constants zero one two three four five six seven eight nine two two + .prints 4? --DanielSobral
ColorForth literally has words 9600 and 38400 for setting baud rates! (The color syntax however keeps these visually distinct from integer constants.)
I'm still a LanguageEvangelist? for PrographLanguage, the ObjectOriented DataflowProgramming GraphicalProgrammingLanguage in which the DirectedGraphs you draw in the UserInterface are the code -- there's no intermediate stuff happening in the compiler -- no translation of the graphical code into some "normal" language before compilation. --BillTozier
I think K (See KayLanguage) at least stands a chance of making a grab at this prize. -- DavidNess
[Icon]
Icon certainly ought to get some consideration as an exotic programming language since it turns on the distinction of success or failure, a distinction largely ignored in most programming languages but a very natural distinction. -- RaySchneider
[SNOBOL SPITBOL]
If anyone can suggest Icon, then surely SNOBOL deserves a mention. Many of the ideas in Icon are derived from SNOBOL, including the success/failure notion, but Icon has an overall structure MUCH more like a conventional language. SNOBOL at first sight looks very crude and old-fashioned, with conditional gotos as the only program control structure. However, the more you get to know the language, the more you appreciate its sophistication. You actually don't need any more complex explicit control structures, because in the hands of a skilled SNOBOL programmer individual statements can contain amazingly effective control processes which are all implicit in the pattern-matching structure. Icon copies the basic pattern-matching idea, but puts it in the context of a much more conventional overall language philosophy and structure. Personally I would not vote for SNOBOL as the Most Exotic Real Programming Language, but I thought if Icon gets a mention, I have to say why SNOBOL beats it. My own vote would be for APL.
--Michael Davis
SPITBOL the Speedy Implementation of SNOBOL4. Basically compiled SNOBOL4. Like SNOBOL the primary operator is the pattern match which succeeds or fails. Programming consists of identifying the patterns to match, then what to do and/or substitute when there is a match. Elements matched in the beginning of a pattern can be used to dynamically direct end of the pattern match. A program can dynamically create code and execute it during the run. It has built in automatic garbage collection. It is a language I go back to again and again for useful things. In addition to AI applications, I used it extensively on my BBS and later it was the first HTML, XML parser/generator I used on web sites. - Radford
RebolLanguage (http://www.rebol.com) programs tend to be rather compact, and have an interesting syntax which takes awhile to get used to. Especially well suited to doing internet programming and distributed computing. (Ex. send an email message with one line of code!). Compact, portable, powerful, unique. Too bad its not Open Source. It probably would be much more widely used by now. However, the baseline version is free, even if you can't get the source. -- Dennis Newbold
I wouldn't call the syntax "exotic"... it looks a lot like Logo. It has built-in datatypes and commands for doing common Internet things, but I don't know if I'd call that exotic either (I'd probably call it trouble when the protocols change but the old versions are hard-coded into my language).