Perl 6 is not Perl, Version 6

In these last few days of summer vacation, I had decided to write an article about my opinion on Perl 6 and its relation to the rest of Perl. I have posted it on github, feel free to click on the link below and read it.

I want to stress that this is an opinion, not a statement of any sort of facts. Feel free to blog your rampant disapprovals of my opinions without fear you’re disapproving of any facts 🙂 . I also stress this to make sure no one mistakes this as a statement of facts and runs around convinced that Perl 6 isn’t the successor to Perl 5 (that’s my opinion, I just don’t want it portrayed as fact unless the important decision-makers say I’m right).

https://gist.github.com/1201788  enjoy.

Advertisements
Posted in Think Tank | Tagged , , | 2 Comments

The Mu Proof

This is a paper I wrote a while ago after a discussion on #perl6 one night (the link to the discussion is in the paper below) that proves anything divided by zero equals everything. Enjoy.

 

The Mu Proof

 

Posted in Uncategorized | Tagged , , , | Leave a comment

Thoughts on Module Distribution in P6

I’ve been thinking a bit lately of the way module distribution is handled in Perl 6. Right now there’s modules.perl6.org. It’s a brilliant start, however I think we need to formalize some aspects of how it works and what’s needed to make the system work. (The results of this formalization of sorts would replace the fossil that is S22 and other relevant parts of the spec.) Here are some of the things I’ve thought so far:

Don’t use CPAN. This is one point I’ll be fighting for the most. There is a commonly perceived split between Perl 6 and Perl 5, one I don’t personally believe will go away any time soon. I think that since there’s a separate perl6.org site for Perl 6, there should be a separate repository for Perl 6 modules. (Remember, I came to Perl learning Perl 6. I have never been a part of Perl 5 and I have always perceived that P6 is different enough from P5 that the are separate branches that should get confused and mix together (e.g., the same website for P6 and P5 is a no-no to me if clarity is a goal). There’s most likely bias here because of this fact.)

P6SSMPR. Yes, it’s that mouthful of an acronym again 🙂 . I really want to provide a central place for all Perl 6 code. (The acronym stands for Perl 6 Snippets, Scripts, Modules, and Programs Repository.) modules.perl6.org is already a great site, so perhaps the idea of P6SSMPR can be applied to modules.perl6.org. Soon (within a day or two, hopefully) I will publish a document describing exactly what I mean when I think of P6SSMPR.

Clearly explain the module system. I’m a fan of betterexplained.com (as well as its other projects, including aha.betterexplained.com for sharing your own ideas and instacalc.com), so I really want to make the spec easy to understand. Of course, first I need to finish with explaining the type hierarchy (er, object inheritance chain?). Then, when I get started on explaining the module system (or whatever other part I want to explain), then I’ll merge the type hierarchy project into a more general spec explanation project. (I’ve even thought of a fourth category of pages, the “Tutorials”, to explain the Synopses, like the Exegeses explain the Apoclypses. But that’s another story.)

Anyway, I think it’s high time some of the higher numbered specs and less worked on parts of Perl 6 need to be fleshed out. Since I like the idea of messing with formalizing the module system, I figured I start there. And I figured I’d start by starting a discussion of this (at least one that I’ll be around for, apparently). Any ideas?

tl;dr — The universe has reportedly been turned upside down. Investigations are under way to determine why nobody noticed.

Posted in Think Tank | Tagged , , , , , | 1 Comment

Beginning Notes for the Perl 6 Type Hierarchy

I stated in my last post some ideas I came up with involving Perl 6 that I’d be at least semi-interested in doing. Although the code repository (P6SSMPR) was actually my favorite idea, I decided to start with the small (and remotely possible) stuff, namely a project whose ultimate goal is a pretty graph.

For the past couple days I’ve been taking notes on any mention of types and especially the hierarchy of types in Perl 6. You can see the work so far here. S01 contained no information, while S02 is proving to be quite the ordeal (as seen in this recent commit message). I knew this wasn’t going to be easy.

I state the goals for this project in the README (by the way, yes I do support the use of .pod6 as a valid extension), but to repeat them here, I want to do this for two reasons:

  1. To help newcomers to Perl 6 understand the type system (one less confusing aspect of the language to be all alone on)
  2. To reveal any potential inconsistencies in the synopses, at least what’s pertinent to types and the type hierarchy.

There it is! Hope you’ll follow the work, and snicker at the occasional witty note/commit message.

(Actually, moritz mentioned that there is no type hierarchy. In that case, is the P6 Standard Objects Inheritance Chain? Or maybe SCOI. No wait, definitely CISO. No,…)

TL;DR: You just missed a valuable cash opportunity in the blog post. Maybe next time.

Posted in Progress Happened | Tagged , , , , , | 3 Comments

Ideas for me to improve Perl 6

nom is going along very nicely (now it installs properly!), and as much as I’d like to hack on it, I just can’t seem to get into the mindset to do it, unless a small problem bugs me and it only takes a few minutes to fix (see previous posts for more on this).

So, I’ve come up with a few ideas that I am excited about doing, listed in increasing perceived difficulty (I may just think the hardest thing on the list is the easiest!):

Create a graphical depiction of the Perl 6 type hierarchy. You know those tree-like diagrams that detail how things are related to each other, what items are from which parents, etc.? I’d like one of the P6 type hierarchy. Not only will this chart make understanding it much easier for everyone, but it will also reveal any problems there may be in the hierarchy as the chart is being made.

Create a website that teaches Perl6. Think of the Advent Calendar, only all year, and teaching about every little feature of Perl6, one bit at a time (instead of Advent’s (sensible) “let’s choose topic that are interesting and worthy for the limited 25 day period”). One article is about hyperops, the next is about error handling, and that one over there talks about that particularly weird part of S05.

Create a Perl6 code repository. It’s a website that holds any and all kinds of Perl 6 code. The current title I have in mind, which explains it well, is the Perl 6 Snippets, Scripts, Modules, and Programs Repository (or P6SSMPR for, er, “short”). Basically, it contains useful snippets of code for common tasks, time-saving scripts for various tasks, modules for serious Perl 6 development, and programs that really show off what Perl 6 is capable of.

Write a missing spec. I can’t believe I’m suggesting this one. The missing Unicode spec is particularly interesting.

Finish SUPERNOVA. I really, really need to continue working on this. I know there are efforts for internal support in Rakudo. Perhaps I can learn some things from that, and they can learn some things from me, if I ever continue working on it. 🙂

Those are my ideas. What do you think of them?

Posted in Think Tank | Tagged , , , | 3 Comments

Configure the PAST during the compile time phase of the CORE.setting generation: The Effect of nom on Me

(This is not your Typical nom Post™. For those, check out pmithium.com, perlgeek.de/blog-en, and especially 6guts.wordpress.com)

Ah, nom. nom nom nom nom nom. The Third Rakudo, the one set to replace ng (current master) which replaced alpha (previous master), promises speed improvements, ease of implementing what were once so-hard-it-was-never-bothered-with features, and so on. Since (last I understand it), the hope is to have the regeneration occur in time for the July release. Which means the activity and talk about it is huge.

This means confusing compiler speak.

Don’t get me wrong. I love the compiler talk. It’s fun, and reminds me of the main reason why I love Perl6: It’s sooooooooooooooooooooooooooooooooooo big! Phasers, junctions, .gist, nqp, nom, unicode, safe mode, and the list of features and aspects and etc. goes on while 1 { print “and on “;};

I just wonder where it all is written about. Now, I haven’t read the entire spec from start to finish, so I suspect that’s the reason for my continual confusion. I just wish there was… something, something that isn’t as unwieldy as the spec.  The spec strikes me as more a “ooh, what does that mean?” kind of book and not a “let’s understand the entirety of Perl6!” kind of book. (It could be that the spec is both kinds and I’m being an idiot.)

So I suppose what I’m saying is: Don’t stop the compilertalk by any means (like I said, it always sound fascinating), I just wish there was either something that explained it all, or that the spec be more friendly.

Of course, if everything I’ve mentioned is completely wrong, feel free to correct me 🙂

tl;dr = The moon is a white rock that orbits the Earth.

Posted in Think Tank | Tagged , , , | 1 Comment

Perl 6 and Interactive Fiction — The Prologue

For the past few days I’ve been extensively researching interactive fiction, in particular the infamous Z Machine, and planning how to create a new IF design system (a programming language designed for IF)

Why not use one of the existing ones? Here’s why:

  • Inform 7 — The english-ish syntax trips me up (you can type “The Parlor is west of the Bedroom” but not “The Parlor is to the west of the Bedroom”). And I also feel like I as a Linux user was never considered by I7. The CLI instantly aggravates me (for no obvious reason), and Graham Nelson (creator of Inform) isn’t even the maintainer of the Linux version.
  • Inform 6 — It’s old, so likely isn’t completely good with the Treaty of Babel. I also don’t trust it after my time with I7.
  • TADS — Its license is custom and isn’t FOSS. It doesn’t allow distributing modified versions. In fact, the source is public just for porting, all other modifications are not allowed by the license. That bugs me too much to even touch it.

So I’m still figuring out my new system. Currently I’m thinking of a two-step process. The HLL (what the programmer will code in) will be converted to an intermediate representation, which is further compiled into a binary for the Z Machine. [sound familiar, Rakudo people? :)]. Hopefully I’ll be able to start working on the language and everything soon for the world to see on github. I still have to figure out the deal with the Z Machine memory map.

Links:

Treaty of Babel (babel.ifarchive.org seems to be down right now): http://web.archive.org/web/20101127195038/http://babel.ifarchive.org/babel_rev7.txt

Z-Machine Standards Document: http://www.inform-fiction.org/zmachine/standards/z1point0/index.html

And my first post happened to talk about something just like this. Although that post talked about an IF game in P6; this is a new language, whose compiler will happen to be coded in P6 🙂

Posted in Research Department, Think Tank | Tagged , , , | Leave a comment