Christopher Diggins is a programming language designer and a C++ expert who has written for internationally distributed publications such as the Doctor Dobbs Journal and the C++ Users Journal. He is the designer of the statically typed stack-based language Cat, and the object-oriented programming language Heron.
Christopher was co-author of the C++ Cookbook, part of the famous “animal” series of books from O’Reilly Press. The C++ Cookbook has sold thousands of copies, and has been translated into several languages.
Christopher has been programming computers for over 25 years, 13 years as a professional developer. He has worked for well-known companies such as Microsoft and Autodesk. He has been a successful entrepreneur, launching two profitable online businesses.
My career as a programmer started during my studies at McGill in 1995. My first contract was to develop a visual interpreter for PostScript fonts on X-windows. I then went on to work as a programmer for a neuropsychology lab collecting and analyzing data recorded from the brains of rats.
My first forays into programming language implementation were at the University of York in 1996, where I worked on the implementation of an Algol-inspired language for a professor of chemistry.
After a short stint at York University in Toronto, I returned to Montreal to work as a freelance programmer and entrepreneur. As a freelance programmer, I worked with C++ and Delphi. I worked on challenging projects such as voice recognition software and developing tools for analysis and visualization of multi-dimensional data.
While freelancing, I started two successful web-based businesses, one selling prints and posters online, and the other selling flowers online. I also started a free site for artists to present their work online. While working on these businesses, I used a wide range of programming languages including Visual Basic, ASP, SQL, JavaScript, PHP, HTML and CSS.
Eventually, in 2003, I turned my energy full-time to researching programming language design and implementation, for the Heron project. This first version of Heron was developed as a response to the short-comings of C++ but motivated by its efficiency and powerful meta-programming techniques.
While working on Heron, I spent much time researching programming techniques associated with other languages and tried to apply them to C++, for example: Aspect Oriented Programming (AspectJ), Design by Contract (Eiffel), Duck Typing (Ruby), Dynamic Typing (Python), and mixins (Lisp and Scala). My thesis was that the C++ meta-programming techniques (e.g. operator overloading, templates, and macros) were potentially powerful enough to express many of these techniques. Doing this for C++ revealed areas of improvement, which influenced the Heron design.
During this exploration, I developed several programming techniques for C++ and published them in articles for Doctor Dobbs Journal and the C++ User Journal. Some selected publications from this period are:
During this work, the Heron specification evolved and changed significantly, as I learned about more programming languages. Today, the focus of Heron is on compatibility with UML, but continues with the goal of expressiveness with a minimum of complexity.
As a result of these articles on C++, my reputation as a C++ guru grew and I was invited to be a co-author on the C++ Cookbook for O’Reilly press. The C++ Cookbook has been published in several languages and has sold thousands of copies. The most significant chapter I wrote was the one on numerical processing. Code I developed for the book has been used at the Max Plank Institute for Nuclear Physics to write a solver for Poisson’s equation in two and three dimensions.
Because of my background in programming, and experience in writing, I worked from 2006 to 2007 at Microsoft in Redmond as a programming writer for the Windows Media Division. My responsibilities were to document SDKs and write code samples for various Windows Media products.
I am currently employed at Autodesk, in a similar position as I held at Microsoft. My title is senior technical writer, and I am responsible for the documentation of SDKs for 3ds Max and other 3d products, as well as for developing sample and tutorial projects.
In 2006, as a side project, I developed the Cat programming language, the first statically-typed functional stack-based language. Cat is a postfix language, like Forth and Postscript, but can infer stack effects for all expressions including those using higher-order functions. The primary Cat implementation is in C#, but also has implementation lacking the type system in JavaScript, and Scheme.
I presented Cat at the Lang .NET symposium in 2006 held at Microsoft. A technical report I wrote about the type system has been cited in the paper Functional Programs as Linked Data by Joshua Shinavier. An article I wrote about Cat was published online by Doctor Dobbs Journal (DDJ.com) in April 2008.
Cat was primarily intended as a proof of concept that a stack-based language with higher-order functions could be statically typed. This technology has application in the verification of stack-based byte-code (such as the Java VM and the .NET virtual machine), and has also shown great promise in the area of byte-code compaction, outperforming simple binary compression.
My current research area, which I am investigating in collaboration with Dr. Abdelwahab Hamou-Lhadj, associate professor at Concordia University, is the use of Heron as an action language for UML, and as a textual representation of executable UML models. I have developed an add-in to the popular UML tool Enterprise Architect from Sparx Systems that uses Heron to enable execution of UML models.