15 de febrero de 2006

"Uso C por razones históricas"

Que divertido es este email http://marc.theaimsgroup.com/?l=linux-kernel&m=113996955901948&w=2:

"However it is a C++ application, and I don't know about other people, but for various historic reasons I'd rather use C for a command-line application"

Lo que me llama la atención no es que prefiera usar C en vez de C++ para una aplicación de linea de comandos. Cada uno tiene sus gustos, y a pesar de que se han escrito aplicaciones C++ de lineas de comando con nombres como "dpkg" y "apt" hay gente que no le gusta. Lo que no trago es lo de "por razones históricas". Eso asume que por alguna razón, para seguir la tradición y "honrar" a los 35 años de historia de unix deberiamos seguir usando C permanentemente y ni tan siquiera considerar C++

Mirando de manera objetiva a la historia, uno se encuentra con que C en su origen fue bastante "innovador". Hasta entonces, los sistemas operativos se hacían en ensamblador, y por aquel entonces el "sistema operativo" consistía en el kernel (y por aquel entonces lo normal era que el shell del sistema se implementara dentro del kernel ) y las aplicaciones y compiladores o interpretes de cobol & friends. En aquellos tiempos había ese debate: ¿Se debe implementar el kernel en ensamblador - en aquel tiempo los kernels tenían un tamaño de un par de decenas de KB y hacerlo en ensamblador era manejable - o en un lenguaje de alto nivel que permita centrarse más en los algoritmos y no liarse tanto con las microooptimizaciones?

Unix fue de los primeros sistemas operativos en implementarse casi enteramente (excepto las necesarias partes en ensamblador en ciertas partes del kernel) en un lenguaje de alto nivel. Mirandolo desde una perspectiva histórica, lo que C viene a enseñar es que si puedes (y tiene sentido) usar C++ usalo aunque C++ no sea una maravilla. Si te va a hacer la vida más fácil, deja de hacer el imbécil (podría incluir aquí una referencia a cierto entorno de escritorio basado en software libre, pero las conclusiones son obvias) y usalo. Y recordar que C y unix se inventaron porque Ken y Ritchie querían jugar al space travel y el único sitio donde podían hacerlo era un PDP-7 sin usar en el que implementaron un SO básico y el juego, y que luego lo quisieron portar a un PDP-11 de otra oficina y les fastidió que tuvieran que reescribirlo y que por eso decidieron usar un lenguaje de alto nivel, para poder portarlo a otras máquinas fácilmente. Cada uno que saque sus conclusiones, pero las que yo saco es que utilizar C para aplicaciones de linea de comandos "por razones históricas" es una estupidez

4 comentarios:

  1. En general, utilizar C es una estupidez. Realmente es difícil encontrar una aplicación en el que el lenguaje de programación este elegido con un mínimo de criterio...

    ResponderEliminar
  2. Anónimo11:06 p. m.

    podría incluir aquí una referencia a cierto entorno de escritorio basado en software libre, pero las conclusiones son obvias>

    Bueno. Ya sé que a ti te gusta mucho KDE. Incluso en su día pude leer tus razones para usar KDE. Totalmente respetable. El caso es que a mí no me gusta nada KDE; también por razones que supongo serán totalmente respetables.

    Es curioso, pero últimamente no hago mas que ver comentarios en internet sobre lo guay que es KDE y lo mierda que es Gnome. Me llegó incluso el comentario (o quizás provocación) del mismísimo Linus Torvals. Y es que no alcanzo a entender qué coño tiene la gente de KDE contra el proyecto Gnome. Que bien, admito que igual no está tan avanzado a nivel de usuario novato porque le faltan algunas herramientas básicas de administración. Algo que a mí no me supone un problema porque estoy acostumbrado a llevarlo todo desde abajo. Y me agrada hacerlo porque me permite aprender y tener una visión más directa del funcionamiento del sistema. Pero que bueno. Que sigo diciendo que es normal que un usuario novato no tenga porque tener esas aspiraciones.

    Pero por otro lado. Mi opinión muy modesta es que es normal que los de gnome vayan un poco más atrás porque además de que empezaron más tarde, han dedicado un gran esfuerzo a desarrollar toda la tecnología que hay debajo del escritorio. Vamos, que mi impresión es que tecnológicamente promete mucho más gnome que KDE. Claro, que ahí queda tu sutil referencia.

    ¿Serán demasiadas coincidencias?. Porque casualmente también programo en C y no en C++. De hecho no conozco practicamente nada de C++ (el salto lo di a java y no a C++). No sé porqué pero intuyo que tampoco serás amigo de java ;). ¿python tal vez?. Es un lenguaje por el que siento curiosidad. Quizás un día me dé por python o tal vez por C# pero a estas alturas como que paso bastante de C++.

    Te invito a que expongas más directamente esas conclusiones referidas a cierto entorno de escritorio basado en software libre. Para aquellos que como yo no lo vemos tan obvio. ¿Quizás en otro artículo?.

    ResponderEliminar
  3. Bien, veamos. Tienes razón sobre lo de los lenguajes, las "razones históricas" no justifican permanecer con un lenguaje, porque si fuera por razones históricas seguiríamos con la linea de comandos, 512 Kb de memoria y solo disqueteras (sin discos rígidos).

    En relación a la "pelea" Gnome vs KDE. Te cuento que empecé a usar linux con un SuSE Linux 7.0 que traía por defecto del KDE, y que Gnome por ese entonces no era poco mas que un mal chiste.

    Cuando instale Debian, Qt aun no eran libres, y elegí Gnome 1.4, me gusto y lo sigo usando. Pero ante toda la publicidad que recibe KDE, decidí probarlo.

    Mi critica a KDE es que es agobiante, y yo no necesito muchas de las cosas que tiene. Algunas me parecen interesantes, es un muy buen escritorio, pero la verdad es que no le tengo paciencia (o sea, es totalmente subjetivo).

    Uso las siguientes aplicaciones: Sylpheed (clásico) para el correo; Galeón para navegar; amsn y gaim para la mensajería; OpenOffice, Abiword, Gnumeric como aplicaciones ofimáticas y graficos vectoriales (OOo Draw); Gedit y Gvim como editores de texto; GIMP para gráficos.

    Por regla general no edito ni escucho música en mi computadora, aun cuando tengo MP3s de mis CDs para pasar al reproductor.

    En la otra mano, Konqueror no me gusta como navegador, es bastante malo, KOffice esta muy verde; Kmail ya lo use, y ya se cargo con todos mis mails. Sin embargo debo destacar Kile que lo uso para LaTeX, muy buen programa, muy practico, ya me olvide de editar mis .tex en vim. Y estoy dándole una segunda mirada a K3B, aunque ya me malogro un par de grabaciones.

    ResponderEliminar
  4. Anónimo12:56 a. m.

    Javi... Sistemas empotrados, hay mas a tu alrededor de los que crees.

    ResponderEliminar