domingo, febrero 19, 2006

The C Family of Languages

A propósito de los comentarios sobre John Vlissides , me interesé por el blog Lambda the ultimate, sostenido por Ehud Lamm, que también le dedicó una breve referencia. El caso es que Lambda...reúne un gran número de entradas de interés sobre lenguajes de programación, abiertos por paradigmas (Funcionales, Objeto-Funcionales, Lógico-Declarativos, Orientados a Objeto), y otros asuntos de fundamentación teórica. Agendarlo y seguirlo...
Viene al caso de la visión irónica de Billy Hollis sobre la "familia de lenguajes C", la republicación de un reportaje a Ritchie, Stroustrup y Gosling de julio del 2000, sobre el suceso de la familia, sus puntos de contactos, y sus diferencias, y reeditado en 2005 por Herb Sutter:
Among technical factors, C and C++ benefited from their closeness to machine and absence of artificial restrictions on what can be expressed. That allows low-level systems work to be done in these languages and for the full performance of a machine to be delivered to its users. Java benefited from running in its own virtual machine and from coming with a large set of libraries that decrease the time needed for a programmer to become productive. Unix gave a similar boost to C. In contrast, the C++ world suffers from fragmentation of its huge base of libraries, many of which are proprietary and supplied by competing vendors.(Stroustrup)
Qué hubiera hecho distinto?
There are a bunch of things that I'd do differently. There are a number of things that I'm not entirely happy with and it's not clear what the right answer is. I'm not really happy with the schism between interfaces and classes; in many ways it feels like the right solution wouldn't get in the way.

There have been a number of things -- like, for example, multiple return values -- that these days I kind of wish I had added. That was one where I really liked the feature and most other people just sort of went, "Huh?" Another one that sort of went that way was that I had been going down this route of having a bunch of stuff to do with preconditions and postconditions and assertions in an Eiffel-like way, and actually in the community of people who were using it at the time the average answer was, "Huh? Why would I ever want that stuff?" I think that the average developer today would say that too. But then there's a pretty reasonable crowd of people who believe in things like Design By Contract, and it's one of these things where a lot of people feel like, "If only the rest of the world was educated enough to understand what this is about, they'd be better off." And I actually kind of agree with that. The problem is that most of the world could actually care less.

There are some things that I kind of feel torn about, like operator overloading. I left out operator overloading as a fairly personal choice because I had seen too many people abuse it in C++. I've spent a lot of time in the past five to six years surveying people about operator overloading and it's really fascinating, because you get the community broken into three pieces: Probably about 20 to 30 percent of the population think of operator overloading as the spawn of the devil; somebody has done something with operator overloading that has just really ticked them off, because they've used like + for list insertion and it makes life really, really confusing. A lot of that problem stems from the fact that there are only about half a dozen operators you can sensibly overload, and yet there are thousands or millions of operators that people would like to define -- so you have to pick, and often the choices conflict with your sense of intuition. Then there's a community of about 10 percent that have actually used operator overloading appropriately and who really care about it, and for whom it's actually really important; this is almost exclusively people who do numerical work, where the notation is very important to appealing to people's intuition, because they come into it with an intuition about what the + means, and the ability to say "a + b" where a and b are complex numbers or matrices or something really does make sense. You get kind of shaky when you get to things like multiply because there are actually multiple kinds of multiplication operators -- there's vector product, and dot product, which are fundamentally very different. And yet there's only one operator, so what do you do? And there's no operator for square-root. Those two camps are the poles, and then there's this mush in the middle of 60-odd percent who really couldn't care much either way. The camp of people that think that operator overloading is a bad idea has been, simply from my informal statistical sampling, significantly larger and certainly more vocal than the numerical guys. So, given the way that things have gone today where some features in the language are voted on by the community -- it's not just like some little standards committee, it really is large-scale -- it would be pretty hard to get operator overloading in. And yet it leaves this one community of fairly important folks kind of totally shut out. It's a flavor of the tragedy of the commons problem.(Gosling)

y mucho más...

miércoles, febrero 15, 2006

Oracle: interés en Open Source

Dana Blankenhorn comenta en los blogs de ZDNet el incremento de la presión de Oracle sobre nuevos objetivos de control: Recursos de la comunidad de código abierto, MySql en primer lugar. Primero, la compra de InnoDB, y ahora la compra de SleepyCat Software, soporte de Berkeley DB, que tambien puede ser usado como motor de MySql:
Sleepycat, too, can be used as a storage engine with MySQL. Shimp said that its acquisitions of Innobase and Sleepycat do not change Oracle's relationship with MySQL and that both companies will operate as stand-alone entities within Oracle.
Blankenhorn menciona lo que Sarah Lacey comenta en Business Week:
Oracle is in talks to buy at least three open-source software companies in deals that could be valued at more than $600 million, BusinessWeek Online has learned. The transactions would extend the 18-month, $18 billion spending spree by Oracle Chief Executive Larry Ellison that has engulfed PeopleSoft and Siebel Systems. They would also put Oracle in control of some of the most sought-after open-source projects. Overnight, Redwood Shores [Calif.]-based Oracle would rival IBM (IBM) as the prime evangelist of a movement that's revolutionizing how software is developed and distributed [see BW Online, 2/6/06, "Open Source's New Frontiers"].
Sin embargo, aunque Blankenhorn califica la situación del mercado ERP como duopolio, con Oracle y SAP como controlantes, estima que el código Open Source es de todas formas incontrolable:
In the end open source is a bit like water. It flows no matter what you do. Oracle is going to learn that, but it will take time.

martes, febrero 14, 2006

John Vlissides

El 24 de noviembre del año pasado, siendo muy joven aún, murió John Vlissides, coautor de Design Patterns, y por lo tanto parte de la fundante Gang of Four. Un cáncer cerebral a los 44 años causó su desaparición. Me enteré sólo por un comentario en comp.object, el foro de OOD en Google. Quizá porque tuve demasiado que hacer en estos meses, esta fue la primera noticia que tuve de su muerte; luego encontré que incluso el Washington Post le dedicó un obituario. En particular, Ralph Johnson (GoF), le dedicó un recuerdo en su blog. Ironicamente, el resumen de su actividad en IBM, no es localizable en este momento...(Sólo un reportaje).
The Server Side también le dedicó una serie de memorias de personas que se formaron en el seguimiento de sus investigaciones (enlace en el título de esta nota).