Hola osises.
Absolutamente respetable tu opinión.
Pero me da la impresión de que como a otros colegas les pasa, el asm es como un mito inalcanzable. Os suena un poco en chino. A mi me suena a chino el C y el Pascal ;-)
Escribir código máquina seria escribir 1's y 0's, pero el lenguaje ensamblador nos facilita la labor. Claro, ocurre que los listados son muy largos, aunque el Z80, ya tiene algunas macro-instrucciones, como DJNZ, LDIR o OUTI. Si esto se tuviera que hacer con el micro 6502/6510 (C64), resultaría mucho mas código, pues tiene escasas instrucciones i solo usa registros de 8 bits. excepto el PC.
No conozco el Turbo Basic, ni los basics modernos para pc. Si usé el Gwbasic, desde el MSDOS, en mi antiguo 486.
Yo veo la disyuntiva ASM vs C más un tema de versatilidad que otra cosa, me explico. El C me parece un lenguaje más multipropósito, el código generado es muy estructurado y legible, y tan pronto puedes hacer un arcade, como un rpg, como un juego de estrategia, como una aventura conversacional, como una aplicación de gestión de ficheros... Digamos que estudias un solo lenguaje y lo puedes usar para todo (por eso se inventó).
El ASM es más específico, está muy bien para el control total de la máquina, pero por ejemplo una aventura conversacional en ASM es innecesariamente compleja mientras en C es realmente sencilla de hacer (por poner un ejemplo extremo). Lo del control del hardware no nos engañemos, en C tenemos bastante control por 2 motivos:
1.- Puedes agregar código inline ASM para rutinas críticas.
2.- Tienes acceso a la MSX-BIOS, que implementa el 90% de las funciones propias del MSX que puedes necesitar.
Resumiendo, para mi el C es como "el anillo único", me basta con él para experimentar en MSX cualquier género.
Seguramente tienes toda la razón del mundo Axel.
En los PC's modernos de 32 o 64 bits, seria impensable programar en asembler. Entiendo todas las ventajas que enumeras, también en el MSX.
Pero para mi el asm, tiene un encanto especial...
Es cierto, tienes razón. Si te acostumbras a programar un lenguaje multipropósito como C o Basic, resulta fácil pasar a otro de similares característica. Pero ASM es único, más sencillo de aprender como funciona pero más complicado implementar funciones. Y no digamos realizar un programa/juego completamente con el.
Cada programador tiene sus gustos y sus maneras de programar. Tampoco podemos decir quien programa mejor o peor (salvo ciertas excepciones evidentes). Lo que si está claro es que si lo que se pretende es conseguir la máxima velocidad de ejecución, sobre todo en nuestros MSX que normalmente van solo a 3.5Mhz, hay que utilizar forzosamente ASM. En otras ocasiones no es tan necesario.
Basic si es fácil de programar en casi cualquier dialecto, probablemente pase igual con Pascal y otros. C está a mitad de camino, es fácil de entrada pero dominarlo es complicado. ASM es fácil de aprender, las instrucciones son bastante sencillas, lo difícil es adaptar la forma de pensar a la hora de programarlo sobre todo para programas grandes.
Por eso sigo pensando que ASM siempre estará ahí, es imprescindible para muchas cosas. Pero programar completamente con el puede convertirse en ocasiones en una tarea titánica, all menos para mí, por lo que alabo a aquellos que lo consiguen. En mi caso que estoy bastante acostumbrado a pensar con lenguajes de alto nivel como Basic, me resulta muy difícil hacer eso, salvo pequeñas rutinas en ASM para tareas concretas. Por ejemplo no me imagino desarrollando una BIOS de determinado periférico, que forzosamente debe ser en ASM.
No es que ASM sea un mito inalcanzable, es simplemente que mi forma de programar no me permite utilizar ASM como quizás haceis vosotros. Ya me gustaría. Pero si es cierto que al menos he conseguido hacer cosillas con el, básicas, pero útiles.
Casi me olvido. Respecto a C solamente me he peleado un poco con la versión de Hisoft en MSX. Parece bastante estándar y probablemente sabiendo cómo se puedan hacer cosas bastante chulas. Mi hermano tiene una versión original, con su manual y todo (curiosamente la conseguimos en una tienda como un resto de stock hace ya bastantes años).
¿Qué vesión utilizais de C? ¿Conoceis esta de Hisoft, y que os parece?
Saludos,
Tienes razón osises. En asm, resultan listados kilométricos.
Estamos desarrollando un megarom de 256 KBs. konami scc, de seis puzles, en escreen 8, y el listado ya pasa de las 4400 líneas. Hay un pequeño video en el hilo sobre screen 8.
Pero entiendo que es cuestión de organizarlo por módulos. Luego si se tiene un editor adecuado, y poniendo etiquetas explicativas, es relativamente fácil buscar, buscar y sustituir, etc.
Estoy usando el EditPlus 3, que además se adapta al lenguaje asm, y distingue con colores los distintos conceptos del listado.
@osises Un pequeño apunte a tu reflexión: el Turbo Pascal y C no entran en el mismo saco que el Basic, son muy diferentes. El Basic es un lenguaje interpretado con cientos de limitaciones, mientras que los otros 2 son lenguajes compilados que rompen esas limitaciones (sobre todo el tema de la memoria de programa, ridícula en Basic). Los códigos generados son increíblemente más limpios, valga un ejemplo del blog del amigo Javi Lavandeira:
No hay comparación. Los lenguajes estructurados permiten crear estructuras de datos (player, enemy, map, etc) y funciones (readInput, updateSprites, updateScore, etc) y el resultado es mucho más limpio que en Basic, donde te peleas con arrays y Gosubs a piñón para "simular" las estructuras de datos y las funciones.
Ya digo, para mi el C/Pascal es el salto lógico para los que han topado con las limitaciones del Basic. Si no quieres complicarte mucho, Pascal diría que es más fácil casi que el Basic, te haces con él enseguida y tiene una forma de organizar el código muy lógica (de hecho se inventó como lenguaje didáctico).
@Manel46 Tu juego me va al pelo para el hilo. Ya he visto el video y la verdad, para un juego de puzzles en Pascal / C te lo hubieras cepillado en 2 patadas ;) . A eso me refiero con multipropósito: si mi idea es sencilla, que su ejecución sea sencilla.
Muy bien explicado Axel. Gracias
Viendo los paréntesis anidados del "C" recuerdo que hace años, trabajado con el programa de dibujo Autocad, había la posibilidad de crear algún comando especial tipo macroinstrucción, con el leguaje "Lisp". Creo que era algo parecido.
Muy bien explicado Axel. Gracias
Viendo los paréntesis anidados del "C" recuerdo que hace años, trabajado con el programa de dibujo Autocad, había la posibilidad de crear algún comando especial tipo macroinstrucción, con el leguaje "Lisp". Creo que era algo parecido.
De nada hombre, ya te digo que según para qué quieras usarlo es realmente cómodo. Mucha suerte con ese puzzle.
...me das da que pensar que el C tiene más soporte...
¡Norl! no... ni de coña, hay mucha mas información en ASM, lo del C lo decia por la comodidad a la hora de programar, pero como es mas "normal" hacerlo en ASM, hay mas información en ASM.