LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   Advanced programming languages (https://www.linuxquestions.org/questions/programming-9/advanced-programming-languages-4175450611/)

Sergei Steshenko 02-18-2013 01:28 AM

Advanced programming languages
 
http://matt.might.net/articles/best-...ing-languages/ - stumbled upon and found interesting.

sundialsvcs 02-18-2013 06:52 PM

I have always been an avid student of languages. (Some might say, "a fan," and if this be so, then I do not apologize.)

When someone (and I am among their number ...) sets out to "create a language," then he or she has a particular class of problems in mind, and seeks in some way to create a powerful and generally-useful solution for them. You will quickly find that the scope of "a particular class of problems" is endless ... and that the scope of "languages that have been implemented to solve them" is endlessly imaginative.

In the very(!) earliest days of computing, when digital computers were not powerful enough even to get out of their own way, two "think outside the box" programming languages nevertheless appeared: (((LISP))) and ˚∑π (APL). These languages captivated my attention in those days because they were both solution focused, not implentation or hardware focused.

Fast-forward a couple of decades, and the Prolog language enabled me to be first-to-find on a very difficult Geocaching-style puzzle that involved both a large Soduku puzzle and an 11-step "logic problem," both of which took almost a minute of computer time for my anemic laptop to solve but which solved them, nonetheless.

All four of the languages reviewed in this most-interesting and well-written article take a similar approach ... and all of them are available right now, free of charge, on your Linux machine. "Check 'em out! ... and wear your nerd-glasses and pocket protector with pride." ;)

Fact is ... the true world of "computer science" is endlessly challenging. The "dumb machine" is, and remains, the universal drum against we can bounce any sort of stick we can dream of. After an entire day of smashing your head against the limitations of JavaScript and Java and <<fill in the blank>> ... and, by the way, presumably getting paid :) for it ... you can, without restriction, consider what else this same "dumb machine" can do, if it is approached by the same person (you...) using entirely different (why not?) tools. All on your Linux machine. (Fair warning: it's happily addictive!!)

Case in point:
Quote:

Originally Posted by the article ...
The example of type classes that got me excited was bounded lattices. A bounded lattice is a mathematical structure that has a least element (bot), a greatest element (top), a partially ordered less than relation, a join operation (join) and a meet operation (meet).

If such a thing gets you "excited," too ... heck, if you even understand it (as do I) ... then you have definitely picked the right profession! :D

Quote:

Originally Posted by the article ...
Scala is a rugged, expressive, strictly superior replacement for Java.

If such a statement prompts you, as a Java programmer (or someone at-least cursorily interested in it) to want to "dive in, just to see what all the fuss is about," and perhaps to start advocating for a course-change at your present place of business ... then, once again, you have definitely picked the right profession.

Some people use lightsabers and thermonuclear devices. Others prefer pocket protectors. Same difference. :hattip: You say you haven't heard about "map-reduce problems and their application to massive parallelism?" Sounds a bit too "computery sciencey" for your taste? Uh huh. Okay then, have you ever heard of "Google?"

N3RDZ RUL3Z ... :D

Sergei Steshenko 02-18-2013 07:07 PM

Quote:

Originally Posted by sundialsvcs (Post 4894727)
I have always been an avid student of languages. (Some might say, "a fan," and if this be so, then I do not apologize.)

When someone (and I am among their number ...) sets out to "create a language," then he or she has a particular class of problems in mind, and seeks in some way to create a powerful and generally-useful solution for them. You will quickly find that the scope of "a particular class of problems" is endless ... and that the scope of "languages that have been implemented to solve them" is endlessly imaginative.

In the very(!) earliest days of computing, when digital computers were not powerful enough even to get out of their own way, two "think outside the box" programming languages nevertheless appeared: (((LISP))) and ˚∑π (APL). These languages captivated my attention in those days because they were both solution focused, not implentation or hardware focused.

Fast-forward a couple of decades, and the Prolog language enabled me to be first-to-find on a very difficult Geocaching-style puzzle that involved both a large Soduku puzzle and an 11-step "logic problem," both of which took almost a minute of computer time for my anemic laptop to solve but which solved them, nonetheless.

All four of the languages reviewed in this most-interesting and well-written article take a similar approach ... and all of them are available right now, free of charge, on your Linux machine. "Check 'em out! ... and wear your nerd-glasses and pocket protector with pride." ;)

Fact is ... the true world of "computer science" is endlessly challenging. The "dumb machine" is, and remains, the universal drum against we can bounce any sort of stick we can dream of. After an entire day of smashing your head against the limitations of JavaScript and Java and <<fill in the blank>> ... and, by the way, presumably getting paid :) for it ... you can, without restriction, consider what else this same "dumb machine" can do, if it is approached by the same person (you...) using entirely different (why not?) tools. All on your Linux machine. (Fair warning: it's happily addictive!!)

I think what's important in different languages is different paradigms. So being a fan simply reflects the desire not to be bounded by single paradigm.

In that respect I am playing with OCaml because I want to start mastering functional paradigm on one hand, and, if necessary (e.g. I need to do something quickly, but my skills in functional paradigm are not yet good enough) to be able to retreat to imperative paradigm.

Still, I liked the article because I think it's a well balanced one.

And I came to OCaml after first reading a lot about Haskell. So one can say I chose OCaml because I am afraid to jump off the cliff (which Haskell demands) of imperative programming - I want to stay a little bit longer on the cliff :).


All times are GMT -5. The time now is 04:47 AM.