radastan escribió:El C me resultaría extremadamente cómodo, se programar en ANSI C, pero no lo veo práctico para un ZX Spectrum en muchos casos y veo abstracto combinar dos lenguajes en un código (ASM y C), le quita flexibilidad y portabilidad al lenguaje C.
Hombre, pues precisamente lo veo lo suficientemente práctico como para que gente que quiere hacer programas para el IF2, a los que el ensamblador se le atraganta por lo abstracto o por lo diferente que es del BASIC, se anime y presente cosas al concurso. El C, quieras que no, con su FOR, su GOTO, su IF, sus asignaciones, etc. está un poco más cerca del BASIC que del ensamblador. Esta es de hecho la motivación principal de escribir este post.
Por otra parte, no sólo de juegos vive el Spectrum (la inmensa mayoría de cosas que he escrito para el Spectrum son utilidades, no juegos), y para todas esas cosas el C es muy válido como lenguaje de programación.
Si hay a quien no le duelen prendas al escribir un programa en BASIC pensando en poder compilarlo con tal o cual utilidad, ¿por qué no usar un lenguaje pensado desde el principio para ser compilado y dar un código compacto? Los compiladores de C para dispositivos empotrados, a poco que se les ayude un poco, pueden generar un código bastante decente para el espacio que se dispone. Y para los casos en los que la velocidad o el control es primordial, recurre al ensamblador en línea. ¿La portabilidad? #ifdef y #endif son tus amigas. Utilidades como AMP (creo que la primera implementación libre de un reproductor MP3 para Unix) hacen uso del ensamblador en línea para acelerar los cálculos si detectan que la plataforma para la que se compila es x86 o Sparc (en ambos casos usan el juego de instrucciones SIMD de cada arquitectura). Hace muchos años ya se escribía de esta forma (compilación condicional, según la plataforma, por ejemplo) usando sistemas de desarrollo "profesional" para el Spectrum como el PDS.