Might try making a toy language out of it eventually.
Esoteric programming paradigms
31–40 of 149 posts
Re: Esoteric programming paradigms
#32Wait. What exactly is esoteric about these paradigms? All the books I've read simply call them regular paradigms.
Re: Esoteric programming paradigms
#33To this I would add synchronous programming[1], which is particularly suited for interactive or concurrent programs and formal reasoning, and has had success in industry in safety-critical realtime systems. Examples include Esterel[2] and SCADE, and outside realtime, Céu[3] and Eve[4] (the latter is based on Dedalus[5], which combines SP with logic programming). As someone who loves formal methods and believes most m…
Yeah, there are a lot of interesting benefits to synchronous programming that haven't been explored in a wider context and we're excited to be able to do so. Figuring out how to actually implement Eve's semantics has been quite a quest and unfortunately the implementations of most of those languages don't really fit us. Fortunately, we've put some really interesting things together lately that have produced some very…
Re: Esoteric programming paradigms
#34'Concurrency-by-default' is similar to a notation I've been using to map out async service calls. It's just this: lines are terminated with "," or ";". A comma doesn't block and all comma-separated lines are executed in any order, while a semicolon blocks. Names are only usable when a semicolon is reached, and a semicolon unblocks flow when all preceding names are bound. Probably code is scoped into { } blocks. So a…
Would you build something like this from scratch or base it on another tech stack like the jvm?
Re: Esoteric programming paradigms
#35Re: Esoteric programming paradigms
#36'Concurrency-by-default' is similar to a notation I've been using to map out async service calls. It's just this: lines are terminated with "," or ";". A comma doesn't block and all comma-separated lines are executed in any order, while a semicolon blocks. Names are only usable when a semicolon is reached, and a semicolon unblocks flow when all preceding names are bound. Probably code is scoped into { } blocks. So a…
Re: Esoteric programming paradigms
#37'Concurrency-by-default' is similar to a notation I've been using to map out async service calls. It's just this: lines are terminated with "," or ";". A comma doesn't block and all comma-separated lines are executed in any order, while a semicolon blocks. Names are only usable when a semicolon is reached, and a semicolon unblocks flow when all preceding names are bound. Probably code is scoped into { } blocks. So a…
That's really cool. Would you build something like this from scratch or base it on another tech stack like the jvm?
Re: Esoteric programming paradigms
#38Earlier quoted context omitted.
That's really cool. Would you build something like this from scratch or base it on another tech stack like the jvm?
That's exactly what || (concurrent statements) and ; (sequential statements) do in Esterel.
https://en.wikipedia.org/wiki/Esterel
(if you'd like to throw a link in your comment, would be happy to delete this one)
Re: Esoteric programming paradigms
#39Curious. ANI seems to me like an abstract form of graph-parallel programming, where the language itself is the scheduler. There are some production-ready schedulers for GPP, like Intel's TBB[1] (C++), but learning to be effective with this requires a major shift in thinking about code - essentially thinking in graphs. [1] - https://www.threadingbuildingblocks.org/tutorial-intel-tbb-f...
My team has been working on a Python library called Loman that represents computations as graphs. We've open-sourced it [1][2]. One of our aims is to make it as natural as possible to use graph-based programming, and within an already-familiar programming language. Be interested to know what you think. [1] https://github.com/janusassetallocation/loman [2] http://loman.readthedocs.io/en/latest/user/intro.html
[1] - https://software.intel.com/en-us/blogs/2011/01/10/using-the-...
[2] - https://software.intel.com/en-us/blogs/2011/09/13/using-inte...
Re: Esoteric programming paradigms
#40square = code(dup, op("*"))
Add a bit of syntactic sugar and you'll get "concatenative", or, better stack combinator-oriented language.
As for Prolog, I really appreciate that the author is calling it "declarative" not a "logic" language. It's more important to learn about backtracking and unification (powerful variant of pattern matching) than about something like Horn clauses. For anyone who wants to learn Prolog better (and it's worth it, Prolog is one of most beautiful PLs around!) I recommend this article: http://www.amzi.com/articles/prolog_under_the_hood.htm