jducoeur: (Default)
jducoeur ([personal profile] jducoeur) wrote2009-11-03 01:44 pm
Entry tags:

Another month, another language: pi

The latest programming language to come to my attention is rather neat: in the pi language, the entire focus is on declaring patterns -- EBNF-style declarations of syntax, and their associated meanings. See the linked page for a little more info and some cool (if simple) examples of how easy it is to define new syntax in this language.

My initial reaction is that it's a bit scary, and almost certainly *much* too easy to completely hang yourself (I'd love to see what you could do with an obfuscated-code contest in this language), but also quite powerful for certain sorts of problems. Probably extremely well-suited to defining DSLs and the like, once it gets more mature...

[identity profile] baron-steffan.livejournal.com 2009-11-03 08:31 pm (UTC)(link)
Interesting that they don't handle English all that well in their description, unless this is some dialect of programmer-ese of which I'm unaware.
π technically is a fully reflective dynamically both semantically and syntactically extensible programming language....
Interesting nest of adverbs there.
In addition to that, with π we provide a clean and easy mean for the design of new (experimental) languages
A mean? I don't think they intend to say that their language is average.

[identity profile] hudebnik.livejournal.com 2009-11-04 01:10 am (UTC)(link)
Reminds me somewhat of Valentin Turchin's Refal language, which my father told me about when he was taking a course from Dr. Turchin twenty-mumble years ago. It was described at the time as "a language for writing languages".

If C is an implementation of the von Neumann architecture, and Lisp & Scheme are implementations of Alonzo Church's lambda-calculus, these languages can be thought of as implementations of Emil Post's production rules.

[identity profile] metahacker.livejournal.com 2009-11-04 01:55 am (UTC)(link)
I have never heard that language mentioned by its actual name! It was always mentioned as "Re-fail", and I hadn't really encountered it before. The examples in wikipedia nail for me why the moniker: each of the examples defines something in terms of itself. Equality: defined as 'if equal, return true'; if: defined as 'if (condition) then do if, else do else'...I'm all for bootstrapping but...wha?