On Martes, 2 de Febrero de 2010 00:31:56 Carlos E. R. escribió:
El 2010-02-01 a las 00:27 -0300, Mauricio J. Adonis C. escribió:
¿A qué se refieren con que C es «malo»? lo que yo sé es que C es un lenguaje de nivel medio cuyo compilador (gcc) produce código de máquina de muy buena calidad... según lo que recuerdo... ¿se dice acaso porque no tiene tantas estructuras propias como los lenguajes de alto nivel? ¿qué es lo malo de C?...
¿Por donde empiezo? A ver, porque, por ejemplo, puedes escribir en a[20] en un array de tamaño 19, sobrescribiendo la variable de al lado. Eso es el origen de la gran mayoría de fallos de seguridad en programas de linux, el "buffer overflow".
Es un lenguaje que te permite hacer todo tipo de barbaridades capaces de, desde no funcionar, hasta tirar el sistema. Y es a propósito, se supone que el programador sabe lo que hace. El lenguaje obedece. Puede ser muy eficiente. Está bien para sistemas, kernel y todo eso, pero es una exageración usarlo para todo.
Quizas no haya un lenguaje maravilloso para todo. Cada uno de ellos, tiene sus ventajas en unos contextos determinados. Y tambien sus inconvenientes en otros. C tuvo y tiene una ventaja, es muy proximo a la maquina. Y alguien experimentado, casi puede saber que generara el compilador. Si ademas el compilador optimiza de una forma decente.. ya es maravilloso para muchas aplicaciones.( las que tienen problemas de memoria, de tiempo de ejecución, de tamaño... etc). Los OOP son otra historia, no estan enfocados al rendimiento, sino a que el programador no tenga que pelear contra la maquina, sino contra el problema de su aplicación. Los que usan un framework, son un paso mas, hacen la vida facil al programador en los aspectos rutinarios del sistema,( Haz una lista, pinta una ventana) dejandole preocuparse mas de su programa, que de su aspecto o de sus detalles. Evidentemente todo tiene un precio, los frameworks, ocupan memoria y tiempo de ejecucion. La mayoria de veces se usa algo que implementa el lenguaje( al fin y al cabo, lo implemente quien lo implemente son instrucciones maquina) que permite cazar elfantes, para matar mosquitos. Java y C# adolecen de esto. Eso, si es muy comodo, al menos hasta que aparecen los problemas de verdad. -- Saludos Lluis