
Enterprise Piet - raganwald
https://leanpub.com/piet
======
jpadvo
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>

~~~
nuclear_eclipse
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._ "

~~~
regehr
Reminds me of this old obfuscated C contest entry:

<http://www.cise.ufl.edu/~manuel/obfuscate/pi.c>

------
citizenparker
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.)

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

------
sturadnidge
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?

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

~~~
peterarmstrong
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.

~~~
gagege
That actually made some sense. Get out of here!

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

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

Anyone know when that's coming out?

------
tsukikage
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.

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

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

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

~~~
nandemo
His quine relay is impressive:

[http://asiajin.com/blog/2009/09/22/uroboros-programming-
with...](http://asiajin.com/blog/2009/09/22/uroboros-programming-
with-11-programming-languages/)

~~~
ygra
And the Qlobe: <http://mamememo.blogspot.de/2010/09/qlobe.html>

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

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

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

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

~~~
raganwald
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.

~~~
cmkrnl
Thank you for your response.

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

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

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

;-)

~~~
3825
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

------
steverb
As a color-blind developer I find this unnerving.

------
nthitz
This is a joke right?

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

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

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

~~~
absconditus
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."

[http://en.wikipedia.org/wiki/MUMPS#Summary_of_key_language_f...](http://en.wikipedia.org/wiki/MUMPS#Summary_of_key_language_features)

~~~
gooberdlx
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).

<http://math-cs.cns.uni.edu/~okane/mumps.html>

I really miss the B-Tree arrays...

