11 de agosto de 2008

La venganza de los nerds (10 de 11)

Entonces ¿cuanto más cortos son tus programas si los escribes en Lisp? La mayoría de los números que he oído para Lisp contra C, por ejemplo, han estado alrededor de 7-10x. Pero un artículo reciente sobre ITA en la revista New Architect dijo que "una línea de Lisp puede sustituir a 20 líneas de C", y ya que dicho artículo estaba lleno de citas del presidente de ITA, asumo que obtuvieron esta cifra de ITA. Si es así entonces podemos darle crédito; el software de ITA incluye un montón de C y C++ al igual que de Lisp, por lo que están hablando desde la experiencia.

Mi estimación es que esos múltiplos ni siquiera son constantes. Creo que se incrementan cuando enfrentas problemas más duros y también cuando tienes a programadores más despiertos. Un hacker verdaderamente bueno puede extraer más de las mejores herramientas.

Como un punto de un dato en la curva, en cualquier caso, si tuvieras que competir con ITA y eligieras escribir tu código en C, ellos serían capaces de desarrollar software veinte veces más rápido que tú. Si te pasaras un año en una nueva característica, ellos podrían duplicarlo en menos de tres semanas. Mientras que si ellos se tomaran apenas tres meses desarrollando algo nuevo, serían cinco años antes de que lo tuvieras tú también.

¿Y sabes qué? Ese es el mejor escenario. Cuando hablas sobre raciones de tamaño-de-código, estás asumiendo implicitamente que puedes de verdad escribir el programa en el lenguaje más débil. Pero de hecho hay límites a lo que los programadores pueden hacer. Si estás intentando resolver un problema complicado con un lenguaje de demasiado bajo nivel, llegas a un punto en el cual hay mucho más de lo que se puede mantener en la cabeza al mismo tiempo.

Entonces cuando digo que le tomaría al competidor imaginario de ITA cinco años para duplicar algo que pudiera escribir ITA en Lisp en tres meses, quiero decir cinco años si nada sale mal. De hecho, de la forma en que las cosas funcionan en la mayoría de las compañías, cualquier proyecto en desarrollo que necesitara cinco años es posible que nunca llegue a terminarse.

Admito que ese es un caso extremo. Los hackers de ITA parecen inusualmente listos, y C es un lenguaje de bastante bajo nivel. Pero en un mercado competitivo, incluso un diferencial de dos o tres a uno sería suficiente para garantizar que siempres fueras atrás.

No hay comentarios.: