From: Linus Torvalds <torvalds <at> linux-foundation.org>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 17:50:28 GMT (2 weeks, 4 days, 22 hours and 51 minutes ago)
El miércores, 5 de Septiembre de 2007, Dmitry Kakurin escribió:
>
> La primera vez que ví el código fuente de Git me extrañaron dos cosas:
> 1. C puro en contraposición a C++. No tengo ni idea de por qué. Por favor, no me digáis que es por la portabilidad porque
> es una pedazo de mierda.
*Tú* estás lleno de mierda.
C++ es un lenguaje horrible. Aún más horrible lo hace el hecho de que muchos infraprogramadores lo usan, hasta el punto que es mucho mucho más fácil generar una completa y absoluta mierda con él. Si te soy franco, aunque el motivo de haber elegido C no haya tenido *nada* que ver con mantener a los programadores de C++ lejos, hubiese sido un gran motivo para usar C.
Dicho de otro modo: la elección de C es la única elección sensata. Sé que Miles Bader dijo en plan bromista "cabrea", pero es totalmente cierto. He llegado a la conclusión de que cualquier programador que prefiera C++ antes que C para este proyecto es probablemente un programador al que me *gustaría* cabrear, para que no venga a joder un proyecto en el que estoy involucrado.
C++ propicia la creación de diseños muy muy malos. Invariablemente la gente comienza usando las "bonitas" capacidades de las librerías incluídas en el lenguaje, como STL, Boost u otras porquerías que pueden "ayudarte" a programar pero provocan:
-cantidades infinitas de sufrimiento cuando no funcionan (cualquiera que me diga que STL, y especialmente Boost son estables y portables está simplemente tan lleno de mierda que ni resulta gracioso)
-modelos abstractos ineficientes de programación, con los que pasados dos años te das cuenta de que la abstracción no era muy eficiente, pero que ahora todo tu código depende de esos bonitos modelos de objetos y no lo puedes arreglar más que reescribiendo toda la aplicación.
En otras palabras, el único modo de hacer un C++ bueno, eficiente a nivel de sistema y portable, acaba limitándote a todas aquellas cosas que básicamente están disponibles en C. Y limitar tu proyecto a C implica que la gente no la cague y también que consigas a un montón de programadores que realmente comprenden las cuestiones de bajo nivel y no la cagan con basura "orientada a objetos".
Así que lo siento, pero en algo como Git, donde la eficiencia era un objetivo primario, las "ventajas" de C++ son simplemente un craso error. El que cabreemos a la gente que no ve esto como una gran ventaja adicional.
Si quieres un VCS escrito en C++ ve y juega con Monotone. En serio. Usan una "base de datos real". Usan unas "bonitas librearías orientadas a objetos". Y francamente, como resultado de todas esas decisiones sobre diseño tan atractivas para la gente de CS, el resultado es un trasto horrible y inmantenible.
Pero estoy seguro de que te gustaría más que git.
Linus
Marcadores