Saturday, October 16, 2010

For Human Consumption

Over the last year I've spent a lot of time cleaning up the internals of DDC, and I've reached a point where I'm no longer embarrassed about the implementation. It's still full of bugs and holes, but enough of the structure and design is there that others should be able to find their way around the code base without too much trouble. I could also use some help, so this blog is an attempt to publicise the project and hopefully convince some of you wonderful people that Disciple/DDC is indeed the way of the future, and that spending some time hacking on it would be a fun thing to do...

I've been working on DDC since I started my PhD back in 2004, though there were several false starts and major rewrites along the way. Back then it was called "Trauma", because all the good names like "Clean", "Hope" and "Eden" were already taken, and I wanted a name that reflected what language design / compiler development / doing a PhD was really like.

DDC as a "plan" started to congeal in 2006 when I had done enough reading and research to form a vision of where I wanted to go. The first patch in the repo is from Sunday September 9th 2007. Before then my "version control" consisted of making a tarball every couple of weeks. Prior to starting my PhD I worked as a C++ programmer for the Australian government, and my experience of ClearCase there was enough to put me off version control systems entirely until I met darcs while working on GHC at MSR in 2007.

Anyway, from "Trauma" we now have "Disciplined Disciple". A few people have asked me about the awkwardly religious sounding name, so I'll explain it here for the record. I chose this name to remind myself to spend more time reading papers than dreaming up crazy language features. Writing a compiler is a massive amount of work, and the only way I see myself ending up with a usable system is by sticking with the game plan and not getting side tracked. Disciple is supposed to be Haskell - Laziness + Effect typing + Mutability Polymorphism. The way I see it there are a huge number of ideas and libraries from the Haskell community that would really shine if we just shifted the base language a bit, and if you've seen the "Beyond Haskell" talk from HIW 2010 in Baltimore you'll know what I mean by that. I want to see the next version of Quake written ground-up in a functional language, with no cop-outs about how it's good enough just to influence the design of C#2++. I had a gut-full of pointer based, monomorphic, imperative programming in my previous life and I'm not planning on going back.

I won't live long enough to invent a whole new eco system or approach to writing programs myself, but if I stick to the game plan and follow the leaders wherever possible I hope that will be enough to push it though. I am the Disciplined Disciple.


  1. I'd pay for a list of the crazy language features you dreamt up. One antonym of "disciplined disciple" is "extravagantly impertinent", regarded without fail by lesser schools as an unmitigated evil to be eradicated.

    PL is barely out of its infancy but everyone pretends that it's already arrived at the gravitas of say, math. Now that you've your Ph.D. find a coterie of fellow impertinents and mine your craziness for all they are worth.

  2. A virtual jungle of potential financial dangers lurks; challenges and pitfalls surround freelance professionals starting out. The vast majority of people will naively attempt to navigate through this jungle on their own with very little, if any, financial and business education or freelance experience whatsoever. It is alarming to note that most people will never even consider seeking some form of guidance or construct a strategic roadmap to help get them to where they want to go. Equally alarming - they will probably never employ an experienced, highly trained guide to help them avoid the pitfalls and dangers, and allow them to reach their final destination safe and sound. This article has been written with the intent of providing helpful tips to consider before venturing into freelancing career or business ownership. Human Design Reader