En la universidad un profesor nos contó que el lenguaje C se inventó en una época en el que los ordenadores tenían poca memoria y los terminales eran teletipos electro-mecánicos de esos que gastaban papel. Es decir, C se creó pensando en ahorrar papel de teletipo y memoria de ordenador. Por eso en lugar del "begin / end" utilizan los corchetes "{}" y por eso esa sintaxis tan taquigráfica.
Recuerdo que comparó el lenguaje "C" con el lenguaje "Modula II", afirmando que el Modula II fué creado teniendo en cuenta la mentalidad y la rigidez del sistema educativo soviético, (muy propio de Niklaus Wirth) mientras que C fué creado teniendo en cuenta la mentalidad liberal del sistema educativo de USA.
Es decir, Modula II no te deja asignar un entero a un long, pero si realmente necesitas hacerlo, puedes si antes pides permiso (mediante un cast). C en cambio si te deja y no hace falta pedir permiso, como supongo que en una universidad de USA no hace falta pedir permiso al profe para ir al servicio a mear.
El lenguaje Modula II es como el instructor de la chaqueta metálica, que siempre tienes que empezar y terminar cada frase con la palabra "señor". (estructuras de control cerradas).
"Apesta" y "razones de peso", quizá sean palabras demasiado fuertes, pero he aquí mis razones.
Sin protección de memoria: Te pasas en un array y se va al cuerno... quizá dentro de 10 minutos. La aritmética de punteros debería ser asesinada, de una manera lenta y dolorosa.
No es hard typed, tipado fuerte, o como se traduzca
Asignaciones en línea if (a=b)
El switch con el break
Macros
Las llaves
Distinguir mayúsculas minúsculas
Dejando a un lado las tres últimas, La mejor prueba de que son defectos del C es que la mayoría de los compiladores intentan subsanarlos con avisos.
Un lenguaje de programación debe permitirte hacer cochinadas en la memoria, mover bytes etc, pero sólo si quieres y se lo dices explícitamente, no en un descuido. Y con el C puedes, en un descuido, fastidiarla. Y lo que es peor, una sobre escritura de memoria hace que el programa falle cada vez en un sitio, haciéndolo difícil de depurar.
El C es un lenguaje demasiado próximo a la máquina. Sólo debería usarse para drivers y cosas de muy de bajo nivel del sistema operativo.
Re:Estoy de acuerdo, pero...
(Puntos:2)( Última bitácora: Domingo, 22 Octubre de 2017, 21:39h )
Recuerdo que comparó el lenguaje "C" con el lenguaje "Modula II", afirmando que el Modula II fué creado teniendo en cuenta la mentalidad y la rigidez del sistema educativo soviético, (muy propio de Niklaus Wirth) mientras que C fué creado teniendo en cuenta la mentalidad liberal del sistema educativo de USA.
Es decir, Modula II no te deja asignar un entero a un long, pero si realmente necesitas hacerlo, puedes si antes pides permiso (mediante un cast). C en cambio si te deja y no hace falta pedir permiso, como supongo que en una universidad de USA no hace falta pedir permiso al profe para ir al servicio a mear.
El lenguaje Modula II es como el instructor de la chaqueta metálica, que siempre tienes que empezar y terminar cada frase con la palabra "señor". (estructuras de control cerradas). Mientras que a C le puedes llamar de tu
--- 404 Firma no encontrada.
Re:Estoy de acuerdo, pero...
(Puntos:3, Inspirado)( http://barrapunto.com/ | Última bitácora: Viernes, 29 Diciembre de 2017, 18:26h )
"Apesta" y "razones de peso", quizá sean palabras demasiado fuertes, pero he aquí mis razones.
Dejando a un lado las tres últimas, La mejor prueba de que son defectos del C es que la mayoría de los compiladores intentan subsanarlos con avisos.
Un lenguaje de programación debe permitirte hacer cochinadas en la memoria, mover bytes etc, pero sólo si quieres y se lo dices explícitamente, no en un descuido. Y con el C puedes, en un descuido, fastidiarla. Y lo que es peor, una sobre escritura de memoria hace que el programa falle cada vez en un sitio, haciéndolo difícil de depurar.
El C es un lenguaje demasiado próximo a la máquina. Sólo debería usarse para drivers y cosas de muy de bajo nivel del sistema operativo.