May 16
2008

Programming 2.0

Posted by Joel Neely in Untagged 

joel.neely

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.



Comments (3)Add Comment
...
written by Mark Nelson, May 16, 2008
Jon Erickson has published seemingly a zillion articles on little languages, so you know off the bat that he's going to love Domain Specific Languages.

But don't you think most DSLs are still being created and deployed in the same producer/consumer model?
...
written by Joel Neely, May 17, 2008
@Mark: I could believe that most DSLs have more consumers than producers, just as most web sites have more passive readers than contributors, even the most Web-2.0-ish of them. But I also believe that the push to make participation possible (even if it's not universal) is affecting current tastes in programming languages.
Love Those DSLs; "Disposable Languages are the Future"
written by Jon Erickson, May 19, 2008
Mark is right -- DDJ {heart} DSLs. But it seems we're into an age where little languages will come and go at a faster and faster rate. Maybe these little languages should be called "Application-Specific Languages" or "Disposable Languages". And I agree with you Joel, cultural issues seem at the heart of it all.

Write comment
You must be logged in to a comment. Please register if you do not have an account yet.

busy

Get your FREE Subscription to Dr. Dobb’s Digest today!

Look Who's Code Talking


Joey Burgett
City: Jefferson City

Jacob Russo
City: Weston

Al Williams
City: League City

David Torrez
City: Long Beach

Randy Ksar
City: Sunnyvale

Rosfran Borges
City: Brasília

Dobbs Code Talk Tags

.NET abstraction Ada Adobe Agile Ajax algorithm Algorithmic complexity ALM Analogical reasoning Android Anecdotes Apple Application Development AppStore Architecture and Design ARM Artificial Intelligence Artificial Life Assembler Programming Audio files AVX AWK Banking Bazaar Best Practices Blender Books Brain computer interfacing Build C C Programming C Sharp Cartoon Category theory Cellular automata Clojure Cloud Computing Cobol Cocoa Coder Of The Month Cognition as compression Collaboration Common Process/Frameworks Compilers Computational humour Computational narrative Computational politics Computer Science Computers in art computing pioneers concurrency Conferences Consciousness research Contest Contest140 contests CPlusPlus crime CSharp D Programming Data Centers Databases Debugging Delphi Deployment design Design Patterns Digital Signal Processing Distributed Django Documentation DSL dynamic language Eclipse EDA education Emacs Embedded Systems Encryption engineering Erlang Etymology Excel exception handling Facebook Financial computing Five Questions Flash Flash Lite Flex Forth Fortran Fraud FreeBSD Fun Functional Programming gadgets Games Gender Git gnuplot Go Google Graphics GUI hardware Heron High School High-Performance Computing History Holographic reduced representations HTML5 Humanity Humour Hungarian Notation Identity Inkscape Innovation Intel Interview iPhone J2EE Java JavaFX JavaOne JavaScript language engineering Legal lex LINQ Linux Lisp Literate Programming Logic Programming m4 Mainframes Make Mathematica Mercurial Mesh messaging Metaprogramming Microsoft MID Miscellaneous Musings ML Mobile Software Mobility modeling modular programming multicore Music MVC myblog Natural Language Processing Networking Neural networks newspeak Nokia numerical computing Object Rexx ObjectiveC Office Office 2007 Online spreadsheets OOP Open Source Openaccess publishing OpenBSD OpenSolaris Operating Systems Optimization Oracle Pair Programming Parallelism Concurrency Parsing Pascal Patents Patterns Performance Perl PHP Podcast Pop11 Poplog Privacy Processing Productivity Programming Language Implementation Programming Language One Programming language semantics Programming Languages Programming Style Project Management Prolog Psychology Public understanding of science puzzle Python QA Quantum Computing Quotes Rails Realtime recls Requirements Research practice REST Review RIA rich internet applications Robotics Ruby SaaS Software as a service Scala Schadenfreude Science fiction Screencast Scripting SD Best Practices Search Security Semantic Web Silverlight Snobol SOA social Social Networks Society for the Study of Artificial Intelligence a Software Development Methodology and Management Songs and poems Spending Priorities Spreadsheets SQL Startups Statistics Storage String pattern matching Survey Teaching Testing The Business of Programming The Dobbs Challenge The Future Theory Topology Transhumanism Travel on the Job Twitter Types Unix Upgrade Usability Use Cases USENET User Experience User Interface Design Version Control video virtual machines Virtualization Visual Studio Visual Studio Sponsored Post WCF Web Development Windows Windows 7 Windows Live Wireless WOA WPF X Window System yacc

Subscribe to Dr. Dobbs Newsletter

Email:
Dr. Dobb's Update
Delivered twice a week, Dr. Dobb's Update provides unbiased and objective news, commentary and technical features spanning the entire software development marketplace.

Latest Comments

Jonathan's Last Day at Sun
For the 8 years I worked there, it was fantastic. I worked there under McNealy and I have undying admiration for the guy. I only knew Jonathan periphe...
Implementing Thread Local Storage on OS ...
Back in the day, I did a fair amount of work with PThreads. Wonderful design. Some quirks, but basically really, really nice. Although I wrote a lot ...
More Technonecrophilia with Snobol One-L...
Yeah, It's probably identical except for the (embedded) copy number, I would think. Once it became freely distributable, the copy I've been distribut...
More Technonecrophilia with Snobol One-L...
There's a spitbol-3.7-win.exe at http://code.google.com/p/spitbol/downloads/list . I found it via Dave Shield's blog page http://daveshields.wordpress...
Jonathan's Last Day at Sun
Sadness.
DDJ