Los debates sobre lenguajes de programación son y seguirán siendo recurrentes y probablemente inefectivos. Recientemente Sergio Montoro se preguntaba por las diferencias entre Ruby on Rails y Java. En estos casos me viene a la memoria lo que leí sobre el desarrollo del software para el Super Hercules (las negritas son mías):

The Lockheed C-130J is particularly interesting because it was developed using a formal "correctness by construction" process using the SPARK Ada-based toolset from Praxis High Integrity Systems. The experience with that process was that, compared to industry norms for developing safety-critical avionics software, the C-130J development had a 10 times lower error rate, four times greater productivity, half as expensive a development process, and four times productivity increase in a subsequent project thanks to substantial reuse. NASA has also used Ada extensively for satellite software, and documented significantly higher reuse than their prior non-Ada systems.

Cualquier interesado en lenguajes de programación convendrá en que Ada apesta a lenguaje antiguo. Y con SPARK la cosa parece peor: es un subconjunto de Ada apto para ser analizado automáticamente y a primera vista parece el lenguaje más triste y simplón que pueda uno encontrarse. Y eso sin referirnos a los argumentos de los amantes de los lenguajes de tipos dinámicos.

Y yo, que gracias a dios no programo, me pregunto ¿qué se puede decir ante estos argumentos? Me pemito repetirlos porque me descuadro con sólo recordarlos:

  • 10 times lower error rate
  • four times greater productivity
  • half as expensive a development process

¿Alguien recuerda proyectos de software que simplemente puedan decirse que han costado la mitad?

Yo no.

Referencias:

Static Code analysis on the C-130J Hercules Safety-Critical Software, K. J. Harrison, Proc. Int. Systems Safety Conf. 1999.