Dr. Dobb's Journal - May 2008 - (Page 6) d05edit_p2as 3/18/08 12:25 PM Page 6 FRIDAY NIGHT FISH FRY by Jonathan Erickson Was George Costanza a Computer Programmer? FROM WHAT I CAN TELL, Paul Jansen hit the Nail on the head when he says, on page 20, that “new languages pop up every day”—languages like, well, Nail. Okay, Nail isn’t a new language, but it is a declarative query language that you run across from time to time. SPARQL (www.w3.org/TR/rdf-sparql-query) is another query language. Designed for the Semantic Web, SPARQL lets websites exchange data. I grant you that SPARQL isn’t that new either, but Gregory Williams’s “tSPARQL” (tw.rpi.edu/2007/11/tsparql-poster.pdf) is. Even though there are RDF vocabularies that support temporal (time-related) data, it’s hard to directly query SPARQL about time. Hence, “tSPARQL” is a workaround. But SPARQL isn’t at the top of Gregory’s to-do list right now. He’s currently working on RDF::Query (search.cpan.org/~gwilliams/RDF-Query-2.000_05), a Nice (nice.sourceforge.net) query engine for languages like SPARQL and RDQL. (That’s nice as in “nice,” not “Nice” as in the programming language “Nice.”) Another language you may not have heard about is Cobra (www.cobra-language.com), an open-source programming language developed by Chuck Esterbrook. Not to be confused with other languages of the same name (see www.cobrabytes.co.uk, for instance), this Cobra is a Python-like language that runs on .NET and Mono (www.mono-proj.com). According to Esterbrook, Cobra enables quick, expressive coding thanks to its Python and Ruby roots, delivers fast execution due to static typing and .NET/Mono machinecode generation, and supports static binding via the .NET typing system at compile-time and dynamic binding via .NET reflection system at runtime. As you’ve probably experienced, programming languages are always a good topic to sit around and chew the FAT on. (That’s “FAT” as in the “FAT programming language”; see baztech.icm.edu.pl/ baztech/cgi-bin/btgetdoc.cgi?BPS2-0003-0033). And a good chew we had at the SD West 2008 panel on Beautiful Code, a book edited by O’Reilly’s Andy Oram and Dr. Dobb’s contributing editor Greg Wilson. You might even say the panel was sheer Bliss (63.249.85 .132/langs/bliss/bliss.pdf). On the panel were several contributors to the book—Michael Feathers, Jim Kent, Christopher Seiwald, Elliotte Harold, Ron Mak, and Alberto Savoia— all of whom feel passionate about what’s beautiful code and what isn’t. Let’s start with “what isn’t”—ugly code. That’s easy, says Alberto Savoia. Ugly code is code that someone else wrote. Beautiful code, on the other hand—well, that’s a Horse of a different color (that’s “Horse” as in the “Horse programming language,” by the way). None of the panel members could agree on what beautiful code is. Moreover, I suspect if all 33 contributors had been on the panel, we would have had 33 different definitions of beautiful code. A topic on which there was a modicum of agreement was whether beautiful code is language independent. Can a program written in Whenever (www .dangermouse.net/esoteric/whenever.html) be as beautiful as on written in Python? Considering that the book had example code in languages ranging from Fortran and Lisp to C++ and Java, the answer seems to be that language doesn’t matter. What does matter, however, is nothing—Whitespace, in other words. No, not the “Whitespace programming language” (compsoc.dur.ac.uk/whitespace), but the “nothingness” of indention and the resulting whitespace. Of the panelists, Christopher Seiwald and Jim Kent seemed the most adamant about whitespace, keeping the comments to the left and code to the right—with a lot of nothing (“whitespace”) in between. Not being as esoteric as Christopher and Jim, all I could think of was George Costanza and Jerry Seinfeld arguing over nothing. Clearly, we didn’t come up with any answers with the Beautiful Code panel, but that’s not the point. The enjoyment was in kibitzing about these topics and others. Which is one reason we recently launched Dr. Dobb’s Code Talk (www.dobbscodetalk.com), a website that gives you a forum for discussing issues about programmers and programming. An opportunity to hang out around the virtual watercooler with other programmers and discuss the programming issue du jour. Not only does Dr. Dobb’s Code Talk provide lots of expert blogs to spark your imagination, but it also lets you launch your own blog on topics of your choosing. And, of course, you can interact with everyone via threaded forums. So when you have a few minutes, stop by www.dobbscodetalk.com and share your thoughts on topics such as what’s beautiful code—and what’s not. Next Month: Dr. Dobb’s gets real next month, with coverage of real-time and embedded programming issues. Jonathan Erickson Editor-in-Chief jerickson@ddj.com 6 Dr. Dobb’s Journal l www.ddj.com l May 2008 http://www.w3.org/TR/rdf-sparql-query http://www.dangermouse.net/esoteric/whenever.html http://tw.rpi.edu/2007/11/tsparql-poster.pdf http://www.dangermouse.net/esoteric/whenever.html http://search.cpan.org/~gwilliams/RDF-Query-2.000_05 http://nice.sourceforge.net http://www.cobra-language.com http://www.cobrabytes.co.uk http://www.mono-proj.com http://baztech.icm.edu.pl/baztech/cgi-bin/btgetdoc.cgi?BPS2-0003-0033 http://baztech.icm.edu.pl/baztech/cgi-bin/btgetdoc.cgi?BPS2-0003-0033 63.249.85.132/langs/bliss/bliss.pdf http://www.dobbscodetalk.com 63.249.85.132/langs/bliss/bliss.pdf http://www.ddj.com
Table of Contents Feed for the Digital Edition of Dr. Dobb's Journal - May 2008 Dr. Dobb's Journal - May 2008 Contents Friday Night Fish Fry Alia Vox Developer Diaries Software Development Goes to the Movies Cat: A Functional Stack-Based Little Language Mojax: Mobile Ajax Framework Kernel-Mode Databases Getting Better Search Results Effective Concurrency The Agile Edge Dr. Dobb's Journal - May 2008 Dr. Dobb's Journal - May 2008 - Dr. Dobb's Journal - May 2008 (Page Cover1) Dr. Dobb's Journal - May 2008 - Dr. Dobb's Journal - May 2008 (Page Cover2) Dr. Dobb's Journal - May 2008 - Dr. Dobb's Journal - May 2008 (Page 1) Dr. Dobb's Journal - May 2008 - Dr. Dobb's Journal - May 2008 (Page 2) Dr. Dobb's Journal - May 2008 - Dr. Dobb's Journal - May 2008 (Page 3) Dr. Dobb's Journal - May 2008 - Contents (Page 4) Dr. Dobb's Journal - May 2008 - Contents (Page 5) Dr. Dobb's Journal - May 2008 - Friday Night Fish Fry (Page 6) Dr. Dobb's Journal - May 2008 - Friday Night Fish Fry (Page 7) Dr. Dobb's Journal - May 2008 - Friday Night Fish Fry (Page 8) Dr. Dobb's Journal - May 2008 - Friday Night Fish Fry (Page 9) Dr. Dobb's Journal - May 2008 - Alia Vox (Page 10) Dr. Dobb's Journal - May 2008 - Alia Vox (Page 11) Dr. Dobb's Journal - May 2008 - Developer Diaries (Page 12) Dr. Dobb's Journal - May 2008 - Developer Diaries (Page 13) Dr. Dobb's Journal - May 2008 - Developer Diaries (Page 14) Dr. Dobb's Journal - May 2008 - Developer Diaries (Page 15) Dr. Dobb's Journal - May 2008 - Software Development Goes to the Movies (Page 16) Dr. Dobb's Journal - May 2008 - Software Development Goes to the Movies (Page 17) Dr. Dobb's Journal - May 2008 - Software Development Goes to the Movies (Page 18) Dr. Dobb's Journal - May 2008 - Software Development Goes to the Movies (Page 19) Dr. Dobb's Journal - May 2008 - Software Development Goes to the Movies (Page 20) Dr. Dobb's Journal - May 2008 - Software Development Goes to the Movies (Page 21) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 22) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 23) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 24) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 25) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 26) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 27) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 28) Dr. Dobb's Journal - May 2008 - Cat: A Functional Stack-Based Little Language (Page 29) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 30) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 31) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 32) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 33) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 34) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 35) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 36) Dr. Dobb's Journal - May 2008 - Mojax: Mobile Ajax Framework (Page 37) Dr. Dobb's Journal - May 2008 - Kernel-Mode Databases (Page 38) Dr. Dobb's Journal - May 2008 - Kernel-Mode Databases (Page 39) Dr. Dobb's Journal - May 2008 - Kernel-Mode Databases (Page 40) Dr. Dobb's Journal - May 2008 - Kernel-Mode Databases (Page 41) Dr. Dobb's Journal - May 2008 - Kernel-Mode Databases (Page 42) Dr. Dobb's Journal - May 2008 - Kernel-Mode Databases (Page 43) Dr. Dobb's Journal - May 2008 - Getting Better Search Results (Page 44) Dr. Dobb's Journal - May 2008 - Getting Better Search Results (Page 45) Dr. Dobb's Journal - May 2008 - Getting Better Search Results (Page 46) Dr. Dobb's Journal - May 2008 - Getting Better Search Results (Page 47) Dr. Dobb's Journal - May 2008 - Getting Better Search Results (Page 48) Dr. Dobb's Journal - May 2008 - Effective Concurrency (Page 49) Dr. Dobb's Journal - May 2008 - Effective Concurrency (Page 50) Dr. Dobb's Journal - May 2008 - Effective Concurrency (Page 51) Dr. Dobb's Journal - May 2008 - The Agile Edge (Page 52) Dr. Dobb's Journal - May 2008 - The Agile Edge (Page 53) Dr. Dobb's Journal - May 2008 - The Agile Edge (Page 54) Dr. Dobb's Journal - May 2008 - The Agile Edge (Page 55) Dr. Dobb's Journal - May 2008 - The Agile Edge (Page 56) Dr. Dobb's Journal - May 2008 - The Agile Edge (Page Cover3) Dr. Dobb's Journal - May 2008 - The Agile Edge (Page Cover4)
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.