[escepticos] No pienses en un elefante

José Ángel Morente joseangel en morente.org
Jue Ago 23 08:26:16 WEST 2012


2012/8/23 Borja Marcos <BORJAMAR en sarenet.es>:

> Pues creo que te equivocas del todo. C es un lenguaje de programación de sistemas, más cerca del ensamblador que de un lenguaje de alto nivel. Es apropiado en los casos en los que, por simplificar, necesitas que los bits que ves en un programa se conrrespondan de manera biunívoca con bits representados en la memoria, procesador, etc.
>
Sí; y para cualquier aplicación que necesite una eficiencia extrema:
audio, video, juegos, rendering, CAD...

> Para todo el resto de cosas, no necesitas eso y de hecho es contraproducente. C para programar aplicaciones es un desastre. De hecho,

Aplicaciones, ¿de qué tipo? Si me hablas de aplicaciones de gestión,
te doy la razón.

> buena parte de los problemas que hay hoy día con programas que "cascan", viene de usar un lenguaje inadecuado: C, C++ u Objective C. Los > problemas de seguridad tan extendidos, en forma de "desbordamientos", vienen de utilizar esos mismos lenguajes inadecuados.

Norl. Eso pasa también con lenguajes como Delphi también. El problema
no es del lenguaje, sino de que dicho lenguaje te permita el acceso
directo a memoria. Y lenguajes con punteros hay más que el C.

>> Un amigo mío (y excelente programador) sostiene que para él el C no es
>> más que un macro-macro-assembler. El tío es de los que estudia el
>> compilador que va a usar, analiza el código generado por éste y luego
>> programa en C imaginándose ya el código compilado resultante.
>
> A no ser que estés haciendo algo realmente crítico, hoy día no tiene ningún sentido programar en ensamblador. Y de todas formas, cierto, en C haces prácticamente lo mismo. Recuerdo haber hecho drivers con interrupciones y todo en Turbo Pascal hace 20 años :D
>
Sí, pero en esa época sí que se notaba la diferencia entre el código
generado por un compilador y el tuyo propio (sobre todo en
compiladores Turbo-xxxxxxx).

> Por otro lado, estas obsesiones con el ensamblador me recuerdan a la época en la que la gente perpetraba programas de contabilidad en ensamblador para MSDOS, o un casi si cabe más disparatado: el de un amigo hace 20 años que quería añadir "red" a una aplicación que había

Pero en ese caso sí que es absurdo e innecesario. La mayoría de tareas
realizadas en un software de gestión se pueden hacer con cualquier
lenguaje de scripting, y va sobrao...

> En fin, no tengo nada en contra de los que encuentran divertido usar ensamblador, pero excepto si estás trabajando en un generador de código para un compilador en general no lo necesitas.
>
Así es; en la época en que yo usaba ASM sí era necesario,
especialmente para máquinas orientadas a juegos (Gameboys, Megadrives,
MSX, etc.). Ahí tenías que hacer cosas como enviar un comando por el
puerto del chip de video, contar un número de ciclos de reloj
determinados y enviar otro comando, etc. La precisión de reloj te
venía del generador de interrupciones del propio chip de video (1/50
s.) y tenías que contar los ciclos exactos de reloj que te consumía
cada instrucción del Z80 o el 68K para medir los tiempos y retornar de
la interrupción a tiempo (o incluso para enviar los comandos al chip
de sonido del tal manera que la música siempre sonase "a tempo").

De hecho, todos los juegos comerciales de la época estaban programados
en ASM porque no había otra forma.

Pero qué divertido era :-D



-- 
http://misshapenreality.blogspot.com/


Más información sobre la lista de distribución Escepticos