Pluvo is a new dynamic language. It appears to be practical, elegant and malleable.
“Pluvo is a functional and imperative programming language intended to be highly practical for scripting and CGIs, interpreted using a just-in-time compiler. Its hybrid dynamic and strict typing is flexible enough to allow duck typing. Its functions are, more specifically, closures, and it allows object orientation using prototypes.
[...]important datatype is the Table,[...]All of a program’s code is stored in Tables that may then be manipulated by the program itself. Being a data-structured language it allows self-modification à la Smalltalk and Lisp.” [1]
I’m going to list some of the features that appeal to me:
- Runs on Windows. Unfortunately, for now, this is a must for me.
- Easy to Install. As long as you have Cygwin (with programming tools like make) and python, you’re set. This is a dream compared to my experiences with the most beautiful language with which I have any experience, Io (http://www.iolanguage.com).
- Prototype-based. With simplicity comes elegance. Not differentiating between classes and objects really simplifies metaprogramming and reasoning about object hierarchies in general.
- Dynamically Typed with optional static typing. We’ll have to see whether the community embraces duck typing as a default. If the community makes static typing the de facto standard, I might lose some of my interest (particularly if type inference does not quickly follow). Fortunately, all of the examples I remember seeing used dynamic typing, with the exception of the static typing example, of course.
- Infix and Prefix Syntax. You can choose between infix and prefix syntax, at the caller. This is an innovation the author refers to as coordination. While some of the practical implications remain to be seen, I was excited to see somthing very similar to one of my many ideas for protoscript (originally, the name was conceived to be a dynamic, prototype-based scripting language) implemented in a real, living language.
- Code as Data. Pluvo’s programs are Table objects filled with Block objects. This appears to provide rich reflection and metaprogramming facilities.
- Everything is a Table/Block. And I do mean everything. The dot ”.” ‘operator’ is a function that provides access to functions defined within a prototype using the
method function. Even comments are generated by calling one of a series of functions.
I’m definitely going to be playing with Pluvo. I hope you will too.
[1] http://inamidst.com/pluvo/
* * *