2008-05-02

Poner a la gente en su sitio

Pocos placeres hay en la vida como el de ver a alguien humillar a un agresor, sobretodo cuando el agresor es alguien con cierto reconocimiento.

Resulta que Ricardo Galli se metió con David Santo Orcero por un artículo defendiendo los Colegios Profesionales de Ingenieros en Informática.

En lugar de criticar a David por sus argumentos en el artículo, el post Ricardo fue un ataque a sus cualidades como programador. Un ataque basado en algunos pedacitos de código sacados de algunas aportaciones de David al software libre.

La respuesta de David a las críticas me parece sublime. La justificación de las teóricas "bad practices" para suplir errores del compilador y mejoras de rendimiento en ciertos entornos de trabajo me parece una patada en los cojones de Ricardo.

Por cuestiones de ego probablemente Ricardo no escriba ninguna nota rectificatoria sobre su monumental cagada. Al igual que no la escribió Enrique Dans cuando se demostró que las falsedades del CV de Bernat Soria no eran falsas.

3 comentarios:

gallir dijo...

> La respuesta de David a las críticas me parece sublime.

Si te parecen "sublimes" es que conoces poco de software e ingeniería de software.

Los lenguajes de alto nivel se desarrollaron para facilitar la comprensión de las personas (progamadores) no para las máquinas, que sólo interpretan "binario".

Primera regla de un buen programador o ingeniero de software: el código debe ser legible y entendible por otro programadores, eso significa respetar las abstracciones y reglas del lenguaje y paradigma de programación (incluye aritmética de punteros, invariantes, etc. etc).

Sino es código espagueti, diga lo que diga y aunque el compilador lo optimice para la máquina o tenga un bonita documentación en UML.

El código que mostré es sólo una parte, objetivamente inaceptable, como una novela sin oraciones, párrafos, capítulos y con un estilo que la hace ilegible.

Por cierto, yo no empecé con ataques ni críticas a otros, sólo respondí --mostrando las incoherencias y los errores que cometemos *todos*-- a un ataque personal y profesional muy grave basado en una anécdota personal totalmente irrelevante al tema de colegios.

Tampoco me dediqué al astroturfing, como hizo el autor en mi blog. Otra práctica que no acepto,por la que no tiene sentido ni intentar contestarle.

uncnoun dijo...

Aclaraciones iniciales:

Mi post simplemente critica el ataque a David desde el punto de vista de su código generado, no por las cosas o comentarios que te haya hecho.

La frase "Los segmentos analizados tienen graves problemas de programación básica general, y otras específicas de programación en esos dos lenguajes." es simple y llanamente falsa.

Reconozco que igual me he pasado un poco con alguna palabrilla, pero es algo que pasa cuando te visitan solo entre 25 y 40 personas diariamente.

Sobre tu comentario:

¿Me estás diciendo que se debe generar código no-óptimo en pro de la legibilidad?

Me parece una tontería, y más cuando los teóricos errores que pusiste en el post se entienden perfectamente aunque no sean todo lo bonitos que debieran.

Lo único que le podrías recriminar a David, a mi parecer, es que esas optimizaciones no estén comentadas (para que cuando alguien consulte el código sepa porque hay esas cosas extrañas).

Hay 3 críticas básicas según las cuales David es un mal profesional y no sabe programar:

- Hay un código que NO ha escrito el, que está en desuso desde hace años y que a pesar de generar un buffer overflow este no es exploiteable.
Obviamente, no afecta para nada a David ya que no tiene NADA que ver con él.

- Hace una sentencia del tipo:
if (a) if (b)
en lugar de:
if (a && b)
El propio David escribe que en el momento en que eso se programo un bug del compilador provocaba que se evaluase la b (a pesar del false de a) en el segundo caso.
¿Según tu, David debía dejar el if que funciona mal en pro de la legibilidad del código?

- Hace "paux++; paux++;" en lugar de "paux += 2;".
David se defiende diciendo que la diferencia de rendimiento en un ordenador moderno es inapreciable y en cambio en ordenadores viejos es notable debido al código máquina generado por el compilador.
Realmente es tan grave que mejore el rendimiento de la aplicación a cambio de renunciar a un poco de legibilidad?
¿Cómo lo arreglamos entonces? ¿Les pedimos a los usuario que compren ordenadores modernos para que el próximo programador que vea el código lo entienda mejor?

En la UPC hay una asignatura optativa llamada "Programació
Conscient de l'Arquitectura"
donde precisamente el objetivo es aprender técnicas como las que usa David para la optimización del código para ciertas arquitecturas.

Puede ser que los que han diseñado las asignatura sean tan malos programadores como David, o puede ser que tu hayas metido la pata hasta el fondo al criticar su forma de programar.

Palimp dijo...

Había leído la respuesta de David, no el original de Ricardo, gracias por el enlace.

Me parece alucinante que se critique a un programador por 'errores de sangrado'. Cada uno tiene su estilo y, evidentemente, es mejor que el código sea legible pero no por eso es uno mejor o peor programador.

Las otras críticas las responde David muy bien y Gallir haría mejor en disculparse públicamente en su blog que en defenderse por los rincones de la blogosfera. Pero eso dudo que ocurra.