Channels ▼

Community Voices

Dr. Dobb's Bloggers

Programming 2.0

May 16, 2008

For a few years now, Tim O'Reilly has been using the term "Architecture of Participation" for systems in which the user is not only allowed but expected to contribute in non-trivial ways. I've begun to consider the relevance to recent trends in programming and programming languages as well.

In the good ol' days of  FORTRAN and COBOL, the wizards created compilers; the rest of us merely used the notation we were granted. With the C preprocessor, we were allowed some degree of participation, but it was limited and offered many foot-shooting opportunities. Yes, I know about macro assemblers, LISP, and lots of "extensible" language efforts (not to mention the jokes about Pascal programmers who defined BEGIN as "{", END as "}", THEN as "", etc.), but I'm talking about the mainstream application programming world.

By and large, you took the tools you were given and did your work.

But in these days of mashups, YouTube, and GarageBand, the role of passive consumer is less universally and quietly accepted as the only option, especially by generations whose members grew up with more powerful, participatory technology taken for granted. Is it any coincidence that DSLs, the meta-object protocol, and more malleable languages are getting so much attention?

Perhaps the most interesting and appealing characteristic of the so-called "dynamic" languages is not whether/when a variable is bound to a data type, nor whether the standard implementation uses a compiler, interpreter, virtual machine, or a combination of all three. Instead, the syntactic flexibility may be a more potent factor.

Shaping the notation in which you and your collaborators express your ideas is a powerful tool, and one which likely affects the set of ideas which are effectively thinkable. The roots of this idea are deep in computing science, but the acceptance (or even demand) for this power in the hands of the everyday developer seems to me more of a cultural than a technological phenomenon.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.