| Catfish2 (666) | |||
|
Praise or bash your exotic language of choice. I'm currently looking into J. It achieves great terseness at the price of the syntax being incomprehensible by the average human. Where other languages would use keywords, J uses symbols. I am however mesmerized by the promises of high-level power. Example code (J is interpreted):
| |||
|
|
|||
| iHutch105 (947) | |
| Not so much a programming language, but I've been finding awk really useful at work lately. | |
|
|
|
| Cubbi (1581) | |
|
J is awesome (and the people who use it in finance are equally awesome), but my heart belongs to Forth (or, to be hip and edgy, Factor). (Factor to Forth is kind of like J to APL, a modern revival of a unique programming paradigm started by a way-ahead-of-its-time language from the 60s.. although the Forth fandom is definitely more numerous than the adepts of the "Alien Programming Language") | |
|
Last edited on
|
|
| ResidentBiscuit (2215) | |
| I've been seeing a lot of J, K, and APL lately and it seems really interesting. Though incredibly unreadable if you've never seen it before. Are they really used in the real word? I can't see how they would actually accomplish anything nontrivial | |
|
|
|
| Cubbi (1581) | |
|
@ResidentBiscuit they are - personally, I've seen them in active use at Maple Securities, to give a specific example, and from the look of things, they are not alone. The APL interpreters/IDEs are not free though: http://www-142.ibm.com/software/products/us/en/workapl2formult http://www.dyalog.com/prices_conditions.html | |
|
|
|
| Catfish2 (666) | ||
You've seen them used mostly in Project Euler, am I correct? ... solving problems which I wouldn't call "trivial". Otherwise, what do you mean by "nontrivial"? From what I've seen so far, J is primarily a mathematician's language. Besides the built-in math "verbs" (as opposed to being put in a math library), J offers pretty plotting and graphing libraries, and eagerly supports extended precision i.e. big integer arithmetic. | ||
|
|
||
| Owain (143) | |
|
You would never really want to program with it but its pretty cool: http://en.wikipedia.org/wiki/Chef_(programming_language) Its a programming language discuised as a recipy :) | |
|
|
|
| hanst99 (2845) | |
| The project euler problems fall under the category "trivial" programming wise, as do pretty much all math-related problems (except if it's a very complex computation that requires lots of arcane trickery to just get a result). | |
|
|
|
| chrisname (5896) | ||
If we're going into esoteric languages, Shakespeare wins hands-down.
| ||
|
Last edited on
|
||
| Zephilinox (548) | |
| Lol wut, is that really what shakespear wrote? I couldn't stop laughing at the "speak your mind" phrase. | |
|
|
|
| xander333 (622) | |
| I'm really digging Clojure lately. | |
|
|
|
| chrisname (5896) | |||
|
It's an esoteric programming language. It's quite interesting how it works. The first line is a title (omitted in that example; I don't know why) and then you follow with a list of characters (such as Romeo, Juliet, Hamlet, Othello, etc.) which you name and describe (the description is ignored by the parser) at the top of the file. These are your variables. They have to be named after a character from a Shakespearean play. Next, you have acts and scenes which are like functions (you can jump between acts and scenes by saying something like "Let us return to Act II Scene I"). Each Act and Scene has a number in Roman numerals and a title (I believe the parser ignores the title as it does with character descriptions). Control just flows down the program unless you explicitly return to an earlier Act/Scene. You state which characters are in the scene at various times using the [Enter] and [Exit] directives and that lets you use those variables in that scope. Then you can have one character store data in another character. I can't remember exactly how the arithmetic works, but you start with "You are " and then describe them qualitatively, using positive, neutral and negative adjectives. I can't remember, but I think "You are as <adjective> as <character>" just takes the value from one character and stores it in another. "Speak your mind!" tells a character to output its data as ASCII. You can also do input and use characters as stacks, but I don't remember how that works. My second favourite esoteric language is Rail:
You basically draw a train track in ASCII and that tells the interpreter what to do. | |||
|
|
|||
| iseeplusplus (297) | ||
I think I sort of understand what your saying, but I pretty much have to disagree on this. Math related problems like Project Euler are all about algorithm design, and problem solving, which is the most non-trivial aspect of programming in my opinion. | ||
|
|
||
| rapidcoder (681) | ||
Most programs do not need low-level algorithms like that, and even if they do, these algorithms are usually already implemented in software libraries, sometimes even in standard ones. Much more non-trivial aspect of programming is high level design and architecture. Most (all?) people get it wrong. Well, I doubt there is anyone who doesn't get it wrong more often than not. | ||
|
|
||
| iseeplusplus (297) | ||
True. I was thinking about the field of mathematical research, game AI, modeling, statistical analysis, signal processing etc. All of these areas are heavily dependent on mathematical algorithm design, and most definitely are not trivial in any sense. Sure syntactically they are trivial, but programming isn't all syntax and design architecture. | ||
|
Last edited on
|
||
| hanst99 (2845) | |
| I'm not saying that writing a function that maps some input to some output is always easy, I'm saying it's a trivial problem programming wise because there isn't that terribly much you can do wrong (again, relatively speaking. If it's a very complex computation that spans hundreds to thousands of lines of code spanning multiple files, you still probably screw up somewhere), and checking for partial correctness usually isn't that hard either. Designing large and complex systems is a much more involved task, and the only way to measure the quality of the result is the difficulty you face when your employer suddenly wants another feature until next week. | |
|
|
|