cdiggins.com

March 19, 2008

Learn as Many Languages as You Can (or just learn Scala)

Filed under: Everything — cdiggins @ 5:24 pm

A recent blog post I made, entitled Learn as Many Languages as You Can (or just learn Scala) at DobbsCodeTalk.com was recently slashdotted. I guess people liked it! It looks like I will probably start making my major blog posts at DobbsCodeTalk.com, but to continue to use CDiggins.com to blog more informally (i.e. about stuff that won’t interest the larger software community). To be completely honest, I still have some reservations about using the DobbsCodeTalk site though. The community management software they use pales in comparison to the crisp usability of Artima.com, and their log-on system requires so much personal information it is ludicruous. Despite the problems in the system, my fellow bloggers are a superlative crew and I am honored and grateful to be an invited blogger.

March 17, 2008

Blogging at DobbsCodeTalk.com

Filed under: Everything — cdiggins @ 3:02 pm

Doctor Dobbs Journal has recently launched DobbsCodeTalk.com, a blogging community of which I am one of the guru blogging members. You can read my DobbsCodeTalk blog entries here

March 11, 2008

Superlanguages: Syntactic and Semantic Supersets of other Languages

Filed under: Everything — cdiggins @ 7:29 pm

Language oriented programming (LOP), is an idea that has been around for at least 40 years within the Lisp/Scheme community. I believe it was first given the name in 1994 by Martin Ward. The earliest article with the term “Language oriented programming” I can find is this one: http://citeseer.ist.psu.edu/151498.html. Ward’s article was aupdated in 2003 : http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf. LOP has been getting some attention lately due in large part to Martin Fowler’s essay on Language Workbenches: A Killer App for Domain Specific Languages.

A lot of the work on LOP has been focused on language toolkits (e.g. libraries, editors, workbenches). A closely related idea  is Charles Simonyi’s concept of Intentional Software (http://www.intentsoft.com/technology/IS_OOPSLA_2006_paper.pdf). To be perfectly honest I am skeptical whether intentional programming is truly distinct from language oriented programming In the software engineering community a similar approach Language Driven Development has been gaining traction as described in the online book Applied Metamodelling : A Foundation for Language Driven Development, there is some recent discussion of the book at Lambda-the-Ultimate.org.

The idea of language oriented programming frequently resurfaces in the collective programmer conciousness. For example a recent article by Markus Völter, Architecture as Language: A story, posted on InfoQ, proposes the language oriented programming approach to model-driven architecture without naming it or referring to any tools. This spontaneous recreation of an idea for me is an indicator that it has real substance.

I am not a big fan of language workbenches or the general principle of relying on tool support for my development processes. I am an old-school Atari 400 hacker and I am used to nothing but an onion-skin keyboard, and the simplest of text editors. I feel that if you can’t do it in text, then forget about it (hence my recent energies devoted to creating a textual mapping of xUML). This is why languages that can be dynamically extended to include the syntax and semantics of radically different programming languages, such as XMF and Kathadin, are so interesting to me. You can work with them from the simplest of command lines.

I have proposed the term “Superlanguages” to describe these kinds of languages because they effectively provide a sueprset of the syntax and semantics of other languages. This term appealed to the creators of XMF who are using it to describe XMF. I might have used the term metalanguage because these are languages for definign languages, but this term is already used. ML as in the ML family languages stands for meta-language (e.g. ML, SML, CAML, OCAML). In the language theory community a metalanguage is any language used to define the semantics of another language, but usually not the syntax. An interesting area of research might be the usage of superlanguages as formal descriptions of both the syntax and semantics of a programming language, but I digress.

The idea of a superlanguage is different from languages with a simple metaprogramming protocol such as Common Lisp, Ruby, and Python. For example you can’t write the following C-style DSP within Lisp with seriously hacking the reader macros essentially requiring you to write your own C parser:

  int fib(int x) {
     if (x <= 1) return 1; else return fib(x - 1) + fib(x - 2);
  }

This was part of a series of challenges I gave the XMF language creators to see if they are really doing something interesting (as opposed to reinventing Lisp), and it turned out that they were. What perhaps excited me most about XMF is that it has been used in commercial development, clearly demonstrating the practical value of language oriented programming in general.

March 7, 2008

Blitzweekend Follow-Up

Filed under: Everything — cdiggins @ 8:14 pm

Last weekend I attended Blitzweekend, a 48 hour competition to devise a product prototype and business model. This was the first ever Blitzweekend event and it was modeled on Barcamp and open-conference principles. It was a little less technologically oriented than I anticipated, leaning more towards a start-up competition.

I presented a Heron/xUML IDE that supported textual and visual representations of xUML. Heron is essentially a direct textual mapping of xUML. The audience reception was lukewarm, I think primarily because I left out the geeky details of implementing and designing languages. I chose instead to target the panel, who primarily had business backgrounds. I only had 6 minutes to do a presentation, so as you can imagine it was a bit rushed. I received some positive feedback with regards to the business model, and have some meetings lined up with various people to discuss the business viability further.

The Blitzweekend organizers provided us with numerous experts throughout the weekend who came and answered questions and provided feedback. I received the most interest from a a usability expert who had familiarity with UML and understood the importance of alternating textual and visual modes of presenting and manipulating models. This is the focus of a paper I am working on with Abdelwahab Hamou-Lhadj.

My partner for the weekend was Hugo Duncan. A C++ expert and all-around smart and nice guy with a ton of experience. He had a particular distaste for UML but dutifully produced an amazing XMI to Heron converter during the weekend! 

The core idea of the business model I presented was to launch a business around a single commercial product: the visual/text editor itself, and to release all other tools as open-source (code generators, XMI parsers, etc.). The software would be very affordable (undercutting the competition), with alternative revenue streams generated around support and consulting services. The potential market is huge, and there is only a small amount of competition. Technically no one does what Heron does in that the closest thing on the market is round-trip engineering, which is a crude approximation of actually manipulating models as text. More on that in another post.

Powered by WordPress