Hacker News new | comments | show | ask | jobs | submit login
Enterprise Piet (leanpub.com)
99 points by raganwald on Oct 25, 2012 | hide | past | web | favorite | 39 comments

This is hilarious, of course, but it also points to some really interesting languages. Turns out that fungeoid is an actual category of fascinating experimental / toy / joke languages. Obviously Piet is not particularly useful in the real world, but thinking about languages like this has got to be good for a programmer's mind.

For example, try thinking about what kinds of things this language would be useful for. Or if a similar visualization for an existing language would be useful. Unlock your mind and let it roam...

In case you didn't click the link in the article [1], here's part of what Wikipedia has to say:

"A funge is an esoteric programming language which models its programs as metric spaces with coordinate systems (often, but not necessarily, Cartesian) and which execute instructions located at points in their program space by moving an instruction pointer (a position vector which indicates the currently executing instruction) through that space."

[1] http://en.wikipedia.org/wiki/Funge#Funges

The most obvious "useful" ability of Piet comes in calculating Pi: http://www.dangermouse.net/esoteric/piet/samples.html

Of note from the sample program, emphasis mine: "... this amazing program which calculates an approximation of pi literally by dividing a circular area by the radius twice. ... Naturally, a more accurate value can be obtained by using a bigger program."

Reminds me of this old obfuscated C contest entry:


I implemented befunge, and one of the challenges is figuring out whether your implementation is buggy or the test program you're using is. Luckily I found that some insane person had written this incredible test suite:


There's some other amazing stuff there.

Whilst testing PowerShell for an employer I write a bf implementation in it. I was stumped for a while when I couldn't get one of the examples from wikipedia to run until I noticed that the code in the wiki article was broken. Correcting the article was probably my greatest contribution to computer science.

Did anyone notice the Brainfuck interpreter written in Piet? The mind re-boggles... Or repurposes it as an Enterprise Workflow DSL

Enterprise Piet? Seems like the OP is just adding more additional features that takes Piet even further away from simplicity.

Ironically, Piet is, an RGB in the land of greyscale PICS. They broke the abstraction layers, mess up logic with implementation, introduce not just different kinds of colors but redundant and irrelevant dark colors and ruined the magic of "everything is an alpha value." Look what a classic two tone Hello World became.)

Nice job riffing on a criticism of Clojure from another of today's threads. https://news.ycombinator.com/item?id=4697874

The video alone is almost enough to warrant purchase, but does it provide a framework for data analysis of matrix management performance review metrics in global ITIL organisations?

I'm not sure about your use case, but it has certainly helped us identify new synergies between our verticals while disrupting traditional silos.

Enterprise Piet has also produced the rapid deployment of a Leanpub feature, enabling a synergy between books in this genre and books in a more traditional genre.

That actually made some sense. Get out of here!

I don't design enterprise software often, but when I do, I prefer loose neoplastic principles. Stay curious, my friends.

I'm still waiting for "Malbolge for Small Businesses".

Anyone know when that's coming out?

The forward-thinking architect will, naturally, consider the judicious use of open source software such as https://github.com/sl236/Piet to streamline enterprise development.

Isn't the strict insistence on two-dimensionality a little restrictive?

I'd like to see a Piet program where the program output was the same as the 'code' for the program itself.

http://mamememo.blogspot.com/2009/10/piet-quine.html unfortunately not very aesthetically pleasing. More from the author here: http://yusuke.endoh.usesthis.com/

I'll add that as a sample program in the appendix.

Ruby had blocks way before Piet even existed. Welcome to the 1990s.

I heard that the latest version of Mentifex will be written in Piet.

My enterprise document approval workflow management software has never looked so beautiful. Thank you Enterprise Piet!

What about Oracle database connectivity? Does this implementation come with drivers?

Thanks for the feedback. I will be adding a section about two-dimensional query optimization in PL/SQL. I have to finish my work on animation using the Broadway Boogie Woogie framework first.

Thank you for your response.

>Piet programs are represented by a patented and revolutionary arrangement of codels

Since when is being patented a virtue in programming language design?

You don't buy a lot of software by the seat and/or CPU, do you?


You are correct. I am pretty much never involved in purchasing/acquisition details. I just tell managers I need some particular software and they go and do some voodoo and come back to say yes or no

As a color-blind developer I find this unnerving.

This is a joke right?

I'd normally say "yes, absolutely," but then again, "compared to what?"

Have to seen what passes for Enterprise Software Development tools? Netron Fusion uses Bassett Frame Technology to factor COBOL programs using techniques originally devised for representing knowledge ontologies in LISP-based AI systems.

COBOL + Lisp = $$$.

It shouldn't be this hard to figure out. Software development, what have we done?

> It shouldn't be this hard to figure out.

I don't know, MUMPS is used in production systems...

The M language is quite dated, but arrays in MUMPS are somewhat interesting.

"Arrays: are created dynamically, stored as B-trees, are sparse (i.e. use almost no space for missing nodes), can use any number of subscripts, and subscripts can be strings or numeric (including floating point). Arrays are always automatically stored in sorted order, so there is never any occasion to sort, pack, reorder, or otherwise reorganize the database. Built in functions such as $DATA, $ORDER, $NEXT(deprecated) and $QUERY functions provide efficient examination and traversal of the fundamental array structure, on disk or in memory.

Local arrays: variable names not beginning with caret (i.e. "^") are stored in memory by process, are private to the creating process, expire when the creating process terminates. The available storage depends on implementation. For those implementations using partitions, it is limited to the partition size, (A small patition might be 32K). For other implementations, it may be several megabytes.

Global arrays: ^abc, ^def. These are stored on disk, are available to all processes, and are persistent when the creating process terminates. Very large globals (e.g., hundreds of gigabytes) are practical and efficient in most implementations. This is MUMPS' main "database" mechanism. It is used instead of calling on the operating system to create, write, and read files."


Interestingly enough, while during my BS CS undergrad stint (1999-2002), I learned both Ada95 and MUMPS (along with Java, Scheme, Lisp of course)...

Kevin O'Kane was teaching MUMPS because (at the time) he had one of the only MUMPS compilers out there (translation to C++ and then compiled down)... Did a lot of work in textual indexing and searching (both medical data and genomics).


I really miss the B-Tree arrays...


It might be a punchline, but I'm writing code in it right now.

and I, for my sins, am writing some Pick Basic


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact