So, I’m sitting in the car, while Jess is driving back to the UK (well, the chunnel … well, to Luxemberg to find cheap gas ) on the way back from the Perl reunification summit and YAPC::EU 2012, Frankfurt. I figure this is a good time to do the blogging thing again, and give some of my throughts about Perl (the programming language), perl (the implementation of the programming language), Perl (the city^Wtown), and other such things, and possibly even my role in them in the future.
If Oxford is, as I like to say, a monument to a place where there used to be a city, then Frankfurt is it’s antithesis, a city which is proud of it’s past, but unafraid of it’s future. It may not get it right all the time — there seems to be quite a bit of disagreement over construction right next to the cathedral (insert photo, with the city lives) — but it’s not prepared to rest on it’s laurels. I see that sort of thing all over Europe, to the extent that I’ve seen all over Europe (on the first day of this trip, I was in the UK, France, Belgium, Luxembourg, and Germany … though most of those only in the car. The thing is, in the UK, you see signs everywhere, you are now entering Fooville, mideval market town, ,
Perl, too, the language and the implementation, needs to be more then it’s past. It needs to look to the future, not as something that will get here eventually, but something that we can strive toward every day. That, in a way, was the point of the perl reunification summit. How can we make the transition smooth between perl 5 and 6? How can we make it so that our past, our present, and our future can live together in peace, and we can keep our old along with our new? A lot of techniques for bridging the gap were discused, and I think what will happen is that all of them will be worked on in parallel.
Larry Wall is working on a perl 5 grammar for perl 6. One of the cool things about perl 6 is that you can mutate the grammar of perl 6, in perl 6, at runtime. As they say, all is fair if you predeclare. So, you need to mutate the perl 6 grammar until it closely resembles the perl 5 grammar. Then you need to figure out how the perl 5 semantics map onto the perl 6 semantics — fortunately, I think, the semantics of perl 6 are mostly a superset of those of perl 5. For example, in perl 6, you can declare your argument list to be a list of aliases to your arguments, a copy of the list of aliases, or read-only (in which case, it doesn’t matter if they are aliases or copies). In perl 5, they are always aliases — so maping p5 to p6 there is easy, just pretend they were declared :rw.
…because all the hack-time I’ve had recently has been going into some other things that I shall now attempt to share.
Recently, the skilful, evil, and batshit crazy Matt S. Trout, who I am honoured to call friend, has been hacking on something called Object::Remote. The idea is that you can have two instances of perl, quite possibbly running as different users, on different machines, transparently create objects and use them on each-other. The interesting thing is, there’s no real reason that both ends have to be running perl 5. One end could be perl 6 (which Matt is now hacking on), or one end could be Java (which I am now working on). Thus, perl becomes a glue language again, in this world where APIs are more likely to be in the form of libraries then in the form of processes, and a glue language between it’s own future and past.
Is perl 5 the past and perl 6 the future, anyway? I don’t know. I don’t think anybody else really knows either. Perhaps they will be two alternate universes that have created a dimensional tunnel between each-other, and set up trade. Perhaps perl 5 will become known as a great language, that gave birth to an even greater son, and became an honoured advisor to his son, once his son was ready to take up the mantle and mace of office. Perhaps perl 5 will subsume the best bits of perl 6, and perl 6 will become known as a successful research project that never really finished.
I don’t know what the future will be, but I do not fear it.
Unfortunately, I have now come to a great last line, but still have more to say.
As often happens at such things, a fair number of people came up to me, and said hi, and I had no idea who they were… because they recognized me from when I was highly active on perlmonks. I haven’t been active like that anywhere for a long time. I shirk responsibility, and hack on great things without telling many people, and without soliciting, or responding to, feedback. I have been afraid to try to shape the future. I met, again, a highly interesting girl called Erin (also, Wraith, or Mordwerk). (Again, because Jess and I interacted with her a fair bit at YAPC::NA 2011, Ashville.) She mentioned that she hacks C, and I got her onto the private IRC channel where Matt and his friends hang out… and pointed her at http://github.com/theorbtwo/XSify, both because its always good to get more people who can go “I get this, and it’s brilliant”, and in the hopes that she can use it for something useful, package it, and take over the project from me, and that’d be a great fealing for me. Even if she’s not willing to take it over, she’ll hopefully inspire me to get it into a better state.
Also, she’s interested in porting Perl to something which is apparently a modern descendent of the hoary, and dusty, old Amiga ST, from a time before time, or at least a time before the computing world was obsessed with backward compatability, and everything had to be DOS-compatable or Apple. This fits in well, I think, with … well, we didn’t catch his name, but an Australian Opera guy who used to hack on an implementation of an OS which is mostly a reimplementation of the hory, dusty, old Amiga OS, of similar age (somewhat newer, I think — I’d check Wikipedia, but I have no network access, which is probably for the best). That OS lacks the fork() syscall. Jess has been working on another project along that vein — probably a more useful, if less epicly silly, project — with the monitary help of TPF. (Thanks, Karen, Mark, and everybody working hard there.) The Android is a modern, mostly-unix machine, which it would be nice to have perl on. It’s not that difficult to compile for it, but it shouldn’t be not-that-hard, it should be easy. It should be something that gets regular testing, and something that you can install as a regular application, on a regular android, without doing anything potentially dangerous, illegal, or warranty-voiding.
I’ve been helping Jess of late as a sort of Guru, and I think I’ve been fairly succesful in that role. I’d like to continue my role as a guru, somebody you go to when you have a problem beyond your ken, and offers you the right vauge advice to get you past it, and hopefully, the student is enlightened, a shoulder for those who will see further to stand on… but more importantly, I’d like to become a developer again. Somebody who makes things, says “I have made this for me, and for you, and for all of us. This is ours now, this is a brick upon which we can build the future.”