March 27, 2012

Which exactly answers its end

I happened upon this nice letter to the Communications of the ACM by Jeremy Gibbons. Like him, I find it disappointing how often people focus on the superficial aspects of "code beauty," at the expense of a program's denotational simplicity, which makes a hard problem easy.
A s an admirer of the “artistic flare, nuanced style, and technical prowess that separates good code from great code” explored by Robert Green and Henry Ledgard in their article “Coding Guidelines: Finding the Art in the Science” (Dec. 2011), I was disappointed by the authors’ emphasis on “alignment, naming, use of white space, use of context, syntax highlighting, and IDE choice.” As effective as these aspects of beautiful code may be, they are at best only skin deep. Beauty may indeed be in the eye of the beholder, but there is a more compelling beauty in the deeper semantic properties of code than layout and naming. I also include judicious use of abstraction, deftly balancing precision and generality; elegant structuring of class hierarchies, carefully trading between breadth and depth; artful ordering of parameter lists, neatly supporting common cases of partial application; and efficient reuse of library code, leveraging existing definitions with minimum effort. These are subjective characteristics, beyond the reach of objective scientific analysis— matters of taste not of fact—so represent aspects of the art rather than the science of software. Formalizing such semantic properties is more difficult than establishing uniform coding conventions; we programmers spend our professional lifetimes honing our writing skills, not unlike novelists and journalists. Indeed, the great American essayist Ralph Waldo Emerson (1803–1882) anticipated the art in the science of software like this: “We ascribe beauty to that which is simple; which has no superfluous parts; which exactly answers its end; which stands related to all things; which is the mean of many extremes.” It is to this standard I aspire. Jeremy Gibbons, oxford, u.K

December 1, 2011

The Scala-Yammer note

This criticism of Scala-in-production is most astute. I wish we had more of these things to drive functional language development. I'm very pleased to see that the Yammer people took their use of Scala as far as they did, and hope that young startups continue to experiment with modern languages and that languages continue to meet such needs better and better every year.

August 9, 2011

Publishing on the up-and-up

While booksellers are hurting, publishers are bouncing back. The bounce is observed particularly in fiction, whose death knell has so often been rung.

How could this be happening? Could it be that e-books and online mail-order have given publishers a more efficient channel to readers? Bookstores like Borders seemed like such sumptuous palaces of consumerism, surrounding us with all those appealing titles. How could even Amazon cross-market any better than that? Here's a sincere question: how are people discovering books in the post-Borders world?

(Admittedly, the study seems to have included some "mobile apps" in the results, but hopefully they're not counting Angry Birds under fiction or textbooks; perhaps only book-like mobile apps get counted.)

May 13, 2011

Statement of Purpose

Every person should try writing a statement of purpose once every two or three years. Just try.

We'd live in a much humbler world.

March 5, 2011

From bi-polar to bi-winning

I was at NEPLS today—the New England Programming Languages Seminar.

Quote of the day (paraphrased):

I started grad school in '97 and it took ten years before the following stopped happening: every time I got a paper rejected I said, 'It was terrible, I've never had a good idea, I'm in the wrong area, etc.' And every time I got a paper accepted I was God's gift to programming langauges, etc. It took me that long to realize that it's happened before, it'll happen again, it's gonna be OK."

Not very concise, but true to life.

February 6, 2011

Join algorithms

Yesterday, I made a hash of things. Today I'll try to sort things out and put them in order.