¿En qué lenguajes se programaba para las clásicas?

Nada, simplemente saber eso, por curiosidad: qué lenguajes usaban, por qué, cuál consola daba más dificultad para programar y cuál menos... anécdotas relacionadas con la programación en clásicas :)
Todo se hacía con ensamblador, el que tocara dependiendo del procesador (Entendiendo que te refieres a los 8-16 bits, en 32 bits ya se usaba el C).

Sobre dificultades, todo depende. Nes, Master System, Megadrive eran bastante parecidas a programar con otras máquinas de 8 bits, mientras que la Super Nintendo tenía una arquitectura más complicada.
Joder... pues programar en ensamblador debe ser bastante jodido...
Hola, me ha gustado mucho la pregunta, porque yo también me preguntaba lo mismo. En mi caso sobre la Master System, que es mi consola favorita.

Me imagino que programar en ensamblador será solo una parte, porque los gráficos y el sonido se harán de otro modo no?.

Otra pregunta, si hoy en día alguien quisiera programar un juego completo para la master, que necesitaría??.

Muchas gracias.
A mi, programar en ensamblador me parece un infierno. [mad]
yo lo he tocado de refilon, y me parece horroroso [carcajad]
Es muy laborioso pero no es tan complicado como parece.
aranya escribió:Hola, me ha gustado mucho la pregunta, porque yo también me preguntaba lo mismo. En mi caso sobre la Master System, que es mi consola favorita.

Me imagino que programar en ensamblador será solo una parte, porque los gráficos y el sonido se harán de otro modo no?.

Otra pregunta, si hoy en día alguien quisiera programar un juego completo para la master, que necesitaría??.

Muchas gracias.

Tienes suerte, este enero han sacado esto:
http://www.smspower.org/forums/15228-DevkitSMSDevelopYourHomebrewInC

Con lo que se puede programar en C para master

Edito: Los gráficos se hacen con otro programa, y se exportan a formato binario para ser incluidos en el juego.
kusfo79 escribió:
aranya escribió:Hola, me ha gustado mucho la pregunta, porque yo también me preguntaba lo mismo. En mi caso sobre la Master System, que es mi consola favorita.

Me imagino que programar en ensamblador será solo una parte, porque los gráficos y el sonido se harán de otro modo no?.

Otra pregunta, si hoy en día alguien quisiera programar un juego completo para la master, que necesitaría??.

Muchas gracias.

Tienes suerte, este enero han sacado esto:
http://www.smspower.org/forums/15228-DevkitSMSDevelopYourHomebrewInC

Con lo que se puede programar en C para master

Edito: Los gráficos se hacen con otro programa, y se exportan a formato binario para ser incluidos en el juego.


¿Han conseguido soporte para bank switching en SDCC o sigues limitado a roms de 32KB?
Es que yo estoy iniciándome en la programación (por ahora con C++ pero pronto saltaré a algún otro más enfocado al desarrollo web), y no descartaría, cuando sepa programar, hacer algo para mi querida Master, que también es mi favorita, (como en el caso de @aranya :) ).

Pero joder, si me está costando pillar la lógica y programar en C, en ensamblador supongo que salgo corriendo [carcajad]
Yo empezaría por ensamblador, directamente. Así luego es mas fácil lanzarse con el C, a parte de que se comenta mucho que luego cuesta el doble lazarse a por el ASM cuando has establecido tus bases con un lenguaje de alto nivel.
Red Ninja Wonder escribió:pero joder, si me está costando pillar la lógica y programar en C, en ensamblador supongo que salgo corriendo [carcajad]

Y sin mirar atrás.

Yo aprendí de niño a programar en C y desde entonces le dediqué infinidad de horas, al igual que a otros como java o el mismo C++, y sin embargo el ensamblador no me gusta, no por que no lo entienda, y de hecho, si controlas de como funcionan las CPU ves que tiene toda la lógica que sea como es, pero no me gusta, limité su uso a trabajos o prácticas obligatorias que tuve que hacer en su momento y ahí quedó, es muy posible que lo retome en algún momento para hacer algo para AES, pero todavía tengo que pensarlo.

Si te interesa el tema te recomiendo que vayas paso a paso, no es especialmente necesario que domines C o cualquier otro (aunque sí recomendable), ya que son conceptos muy diferentes, pero sí que te vendría muy bien estudiar la arquitectura de una CPU para entender como funciona y por qué el código en ensamblador funciona como funciona, el Z80 que lleva precisamente la MS es una muy buena opción para aprender ya que está documentadísimo, otra opción típica es el 68k, que lo lleva la MD entre otros muchos sistemas.
Señor Ventura escribió:Yo empezaría por ensamblador, directamente. Así luego es mas fácil lanzarse con el C, a parte de que se comenta mucho que luego cuesta el doble lazarse a por el ASM cuando has establecido tus bases con un lenguaje de alto nivel.


Con lo que me está costando aprender C (o mejor dicho, aplicar la Lógica que voy aprendiendo en C), y meterme directamente a ensamblador? No, gracias XD

Lo haría como hobby en un futuro lejano en el que domine bien la programación. Yo ahora quiero hacer desarrollo web :)

Baek escribió:
Red Ninja Wonder escribió:pero joder, si me está costando pillar la lógica y programar en C, en ensamblador supongo que salgo corriendo [carcajad]

Y sin mirar atrás.

Yo aprendí de niño a programar en C y desde entonces le dediqué infinidad de horas, al igual que a otros como java o el mismo C++, y sin embargo el ensamblador no me gusta, no por que no lo entienda, y de hecho, si controlas de como funcionan las CPU ves que tiene toda la lógica que sea como es, pero no me gusta, limité su uso a trabajos o prácticas obligatorias que tuve que hacer en su momento y ahí quedó, es muy posible que lo retome en algún momento para hacer algo para AES, pero todavía tengo que pensarlo.

Si te interesa el tema te recomiendo que vayas paso a paso, no es especialmente necesario que domines C o cualquier otro (aunque sí recomendable), ya que son conceptos muy diferentes, pero sí que te vendría muy bien estudiar la arquitectura de una CPU para entender como funciona y por qué el código en ensamblador funciona como funciona, el Z80 que lleva precisamente la MS es una muy buena opción para aprender ya que está documentadísimo, otra opción típica es el 68k, que lo lleva la MD entre otros muchos sistemas.


¿Aprendiste de niño? Joder, qué complejo me entra [carcajad]

Lo de aprender la arquitectura de la CPU supongo que algún día lo aprenderé porque la informática me gusta mucho, y me vendrá muy bien seguro en cualquier Lenguaje de Programación... pero yo voy con mucha precaución, que además, como dije en el hilo que abrí en Misce, soy de Letras y esto me cuesta! [carcajad]
Sí, empecé con 6-7 años y mi primer título oficial de programador lo conseguí con 13 mientras estaba en la ESO y sin hacer nada por que ya dominaba el lenguaje, antes no dejaban matricularse ya que era un título enfocado a universitarios XD

Pero esa y otras muchas cosas quedan bien para reírte contándolo de cañas con los colegas, en la vida real lo que importa es lo que sabes en el presente, por lo que si te pones ahora a programar, no mires atrás y dale duro pensando en el futuro, fácil no es, eso sí que tenlo claro, pero si de verdad te gusta, lo pasarás bien.

Por lo que comentas que buscas, aléjate del ensamblador, no te hace falta para nada, termina lo que quieras hacer y una vez que lo hayas conseguido y te veas con tiempo libre, ya saltarás a otras cosas.

El funcionamiento de una CPU no es algo que se aprenda en una ni en dos tardes, es algo bastante complejo y que hay que ir asimilando paso a paso, pero para programar en alto nivel no necesitas ese tipo de conocimientos.
Esta es una buena oportunidad para que los que controlais del tema recomendeis la lectura de algún libro, algo de documentación, etc.

Ya que hablamos de la arquitectura de una cpu, algo relativo a los z80, 68000, o 6502/65c816, estaría de lujo, ya que además son lo que nos interesa por aquí.
Baek escribió:Sí, empecé con 6-7 años y mi primer título oficial de programador lo conseguí con 13 mientras estaba en la ESO y sin hacer nada por que ya dominaba el lenguaje, antes no dejaban matricularse ya que era un título enfocado a universitarios XD

Pero esa y otras muchas cosas quedan bien para reírte contándolo de cañas con los colegas, en la vida real lo que importa es lo que sabes en el presente, por lo que si te pones ahora a programar, no mires atrás y dale duro pensando en el futuro, fácil no es, eso sí que tenlo claro, pero si de verdad te gusta, lo pasarás bien.

Por lo que comentas que buscas, aléjate del ensamblador, no te hace falta para nada, termina lo que quieras hacer y una vez que lo hayas conseguido y te veas con tiempo libre, ya saltarás a otras cosas.

El funcionamiento de una CPU no es algo que se aprenda en una ni en dos tardes, es algo bastante complejo y que hay que ir asimilando paso a paso, pero para programar en alto nivel no necesitas ese tipo de conocimientos.


Tú eres un crack! Lo dicho, complejo XD

Sé que no es facil, pero me gusta mucho, y con eso por delante... :)

Gracias por tus consejos!

Señor Ventura escribió:Esta es una buena oportunidad para que los que controlais del tema recomendeis la lectura de algún libro, algo de documentación, etc.

Ya que hablamos de la arquitectura de una cpu, algo relativo a los z80, 68000, o 6502/65c816, estaría de lujo, ya que además son lo que nos interesa por aquí.


De hecho a mí no me importa cambiar el título del hilo y transformar el mismo en un "hilo oficial de programación en clásicas", ¿eh?

Si lo veis buena idea, yo lo hago, que sé que algunos echáis de menos más hilos técnicos...
Así con las coñas me estás pidiendo un libro que abarque varias asignaturas de una ingeniería [carcajad]

Yo en su día aprendí con apuntes oficiales y libros de universidad, ahora si tengo alguna duda puntual busco directamente esa duda, por lo que no te sabría decir un buen libro para empezar de cero, pero en todo caso, no busques uno enfocado ya a una CPU, primero tienes que entender los principios generales básicos, busca por google: "arquitectura de computadores principios básicos" o "iniciación en la arquitectura de computadores", algo de ese estilo y quédate con el libro que tenga mejores referencias, luego tienes que saltar a los algoritmos de ordenación, paralelización y demás y luego ya al ensamblador, pero con calma por que tienes MUCHO que leer y MUCHO que entender.

Yo al contrario que la mayoría de compañeros, defiendo fuertemente el aprendizaje autodidacta, pero en este caso, sin apoyos externos y una guía a seguir, es un objetivo complicado.

Quizá si sólo te interesa una CPU en particular, una opción sería centrarse en ella a base de ver código en ensamblador ya escrito e ir asumiendo lo que hace hasta poder modificarlo, te quedarían muchas lagunas y para saltar a otra CPU tendrías que repetir el proceso (aunque con una parte ya ganada), pero probablemente sería más llevadero al ver que se hacen progresos, cuando se aprende por uno mismo eso es fundamental para evitar abandonos.
Baek escribió:Yo al contrario que la mayoría de compañeros, defiendo fuertemente el aprendizaje autodidacta, pero en este caso, sin apoyos externos y una guía a seguir, es un objetivo complicado.



de hecho yo haré el módulo de desarrollo web o similar porque necesito titulación; pero de manera autodidacta, con Internet, foros varios, mucha búsqueda, apuntes que descargues e imprimas, y un par de personas entendidas ayudándome (fundamental), además de echando muchas horas (más fundamental aún), es que creo que el camino autodidacta es perfectamente factible (para lo que estoy haciendo ahora mismo al menos), y estoy aprendiendo muchísimo.
Red Ninja Wonder escribió:de hecho yo haré el módulo de desarrollo web o similar porque necesito titulación;.

Como recomendación personal, y me jode darla por que soy muy de C y C++, si te vas enfocar a la programación online y web, empieza a darle con ganas a Java y Java RMI.

No sé si te lo pedirán en el CS, imagino que sí, pero desde luego seguro que te lo exigirán en muchas empresas cuando busques trabajo de eso.
Baek escribió:
Red Ninja Wonder escribió:de hecho yo haré el módulo de desarrollo web o similar porque necesito titulación;.

Como recomendación personal, y me jode darla por que soy muy de C y C++, si te vas enfocar a la programación online y web, empieza a darle con ganas a Java y Java RMI.

No sé si te lo pedirán en el CS, imagino que sí, pero desde luego seguro que te lo exigirán en muchas empresas cuando busques trabajo de eso.


Ya, ya sé, muchas gracias :)

Yo estoy con C porque era el único del que sabía un poquillo ya que hace 10 años empecé el CS Multiplataforma pero tuve que dejarlo por temas personales a los dos meses. Lo estoy usando para practicar la Lógica de Programación, que es lo que me interesa ahora. Luego ya empiezo a mirar en qué Lenguaje/s me centro, cuando domine eso.
Señor Ventura escribió:Esta es una buena oportunidad para que los que controlais del tema recomendeis la lectura de algún libro, algo de documentación, etc.

Ya que hablamos de la arquitectura de una cpu, algo relativo a los z80, 68000, o 6502/65c816, estaría de lujo, ya que además son lo que nos interesa por aquí.


Uno de los mejores libros que puedes leer es "Computer Organization and Design" de Paterson y Henessy.
En Español está "Conceptos básicos de arquitectura y sistemas operativos - curso de ordenadores" de Gregorio Fernández.

Ninguno de ellos te van a hablar de CPUs antiguas, pero son muy buenos para aprender. El segundo es el libro de cabecera de varias asignaturas en ingeniería de Teleco.

Sobre el M68000 hay gran cantidad de documentación pero mi recomendación es que el que quiera aprender primero lo haga estudiando una arquitectura moderna (el primer libro que cito trata la arquitectura MIPS, el segundo desarrolla una serie de arquitecturas ficticias empezando por una CPU extremadamente simple, para la cual existe incluso una implementación en VHDL por si se quiere trastear a nivel de electrónica digital).
Red Ninja Wonder escribió:
Señor Ventura escribió:Yo empezaría por ensamblador, directamente. Así luego es mas fácil lanzarse con el C, a parte de que se comenta mucho que luego cuesta el doble lazarse a por el ASM cuando has establecido tus bases con un lenguaje de alto nivel.


Con lo que me está costando aprender C (o mejor dicho, aplicar la Lógica que voy aprendiendo en C), y meterme directamente a ensamblador? No, gracias XD

Lo haría como hobby en un futuro lejano en el que domine bien la programación. Yo ahora quiero hacer desarrollo web :)

Baek escribió:
Red Ninja Wonder escribió:pero joder, si me está costando pillar la lógica y programar en C, en ensamblador supongo que salgo corriendo [carcajad]

Y sin mirar atrás.

Yo aprendí de niño a programar en C y desde entonces le dediqué infinidad de horas, al igual que a otros como java o el mismo C++, y sin embargo el ensamblador no me gusta, no por que no lo entienda, y de hecho, si controlas de como funcionan las CPU ves que tiene toda la lógica que sea como es, pero no me gusta, limité su uso a trabajos o prácticas obligatorias que tuve que hacer en su momento y ahí quedó, es muy posible que lo retome en algún momento para hacer algo para AES, pero todavía tengo que pensarlo.

Si te interesa el tema te recomiendo que vayas paso a paso, no es especialmente necesario que domines C o cualquier otro (aunque sí recomendable), ya que son conceptos muy diferentes, pero sí que te vendría muy bien estudiar la arquitectura de una CPU para entender como funciona y por qué el código en ensamblador funciona como funciona, el Z80 que lleva precisamente la MS es una muy buena opción para aprender ya que está documentadísimo, otra opción típica es el 68k, que lo lleva la MD entre otros muchos sistemas.


¿Aprendiste de niño? Joder, qué complejo me entra [carcajad]

Lo de aprender la arquitectura de la CPU supongo que algún día lo aprenderé porque la informática me gusta mucho, y me vendrá muy bien seguro en cualquier Lenguaje de Programación... pero yo voy con mucha precaución, que además, como dije en el hilo que abrí en Misce, soy de Letras y esto me cuesta! [carcajad]


Para programar para clásicas, necesitas saber un montón de arquitectura, no basta con saber programar. Un muy buen programador que no sepa de arquitecturas de los 80, estará muy perdido

Paspallas escribió:
kusfo79 escribió:
aranya escribió:Hola, me ha gustado mucho la pregunta, porque yo también me preguntaba lo mismo. En mi caso sobre la Master System, que es mi consola favorita.

Me imagino que programar en ensamblador será solo una parte, porque los gráficos y el sonido se harán de otro modo no?.

Otra pregunta, si hoy en día alguien quisiera programar un juego completo para la master, que necesitaría??.

Muchas gracias.

Tienes suerte, este enero han sacado esto:
http://www.smspower.org/forums/15228-DevkitSMSDevelopYourHomebrewInC

Con lo que se puede programar en C para master

Edito: Los gráficos se hacen con otro programa, y se exportan a formato binario para ser incluidos en el juego.


¿Han conseguido soporte para bank switching en SDCC o sigues limitado a roms de 32KB?

Si, puedes switchear bancos, pero de momento de forma manual, no te autodetecta el banco de memoria de forma automatica
En el caso del MSX, en ensamblador mayoritariamente pero también se trabajaba en C, sobre todo para juegos de rol y estrategia donde la complejidad de la lógica hace recomendable usar un lenguaje de alto nivel.
Programar en ensamblador es sencillo, mucho más sencillo que aprender C.

Lo único que hay que perder un poco de tiempo en conocer la arquitectura del sistema (el mismo
tiempo que perderás intentando solucionar errores de apuntadores e indirecciones en C jaja)

Todos los juegos de 8-16 bits se programaban en ensamblador y ya se ve que los tiempos de desarrollo no eran demasiado largos, los juegos no tenían demasiados bugs y la cantidad de juegos es increíble.

Eso sí, programar en ensamblador para máquinas de 32bits ya es complicadísimo y en ese caso mucho mejor el C porque ya es muy difícil tener en mente todo lo que está en memoria y la cantidad de librerías que existen en C para 3D y sonido es bestial.

En ensamblador también existen librerías pero ya digo que es para máquinas donde puedas tener más o menos mapeada toda la memoria en un cuaderno de cuadros.
Paspallas escribió:
Señor Ventura escribió:Esta es una buena oportunidad para que los que controlais del tema recomendeis la lectura de algún libro, algo de documentación, etc.

Ya que hablamos de la arquitectura de una cpu, algo relativo a los z80, 68000, o 6502/65c816, estaría de lujo, ya que además son lo que nos interesa por aquí.


Uno de los mejores libros que puedes leer es "Computer Organization and Design" de Paterson y Henessy.
En Español está "Conceptos básicos de arquitectura y sistemas operativos - curso de ordenadores" de Gregorio Fernández.

Ninguno de ellos te van a hablar de CPUs antiguas, pero son muy buenos para aprender. El segundo es el libro de cabecera de varias asignaturas en ingeniería de Teleco.

Sobre el M68000 hay gran cantidad de documentación pero mi recomendación es que el que quiera aprender primero lo haga estudiando una arquitectura moderna (el primer libro que cito trata la arquitectura MIPS, el segundo desarrolla una serie de arquitecturas ficticias empezando por una CPU extremadamente simple, para la cual existe incluso una implementación en VHDL por si se quiere trastear a nivel de electrónica digital).


Gracias!!. A esto me refería, a alguna referencia para meterse en faena de la mejor manera.

Se agradece :)

zarkon escribió:Programar en ensamblador es sencillo, mucho más sencillo que aprender C.

Lo único que hay que perder un poco de tiempo en conocer la arquitectura del sistema (el mismo
tiempo que perderás intentando solucionar errores de apuntadores e indirecciones en C jaja)

Todos los juegos de 8-16 bits se programaban en ensamblador y ya se ve que los tiempos de desarrollo no eran demasiado largos, los juegos no tenían demasiados bugs y la cantidad de juegos es increíble.

Eso sí, programar en ensamblador para máquinas de 32bits ya es complicadísimo y en ese caso mucho mejor el C porque ya es muy difícil tener en mente todo lo que está en memoria y la cantidad de librerías que existen en C para 3D y sonido es bestial.

En ensamblador también existen librerías pero ya digo que es para máquinas donde puedas tener más o menos mapeada toda la memoria en un cuaderno de cuadros.


Tengo entendido que la mayor pega de meterse en C, es que luego hay que desaprender para volver a aprender lo que sea sobre ASM, y que cuesta mas que hacerlo al revés. Vamos, que pasar de C a ASM es un infierno, pero de ASM a C, no tanto.
Lo suyo seria hacerse una especie de editor para el genero de juego que quieras en concreto,
como los editores de sonic, del mario como el lunar, megaman, etc
Buena pregunta :) y además me la he hecho muchas veces.

Después de hablar con gente y leer varios foros he llegado a la conclusión de que la mayoría de los juegos de 8 y 16 bits se programaban en ensamblador, entre otras cosas para:
  • Aprovechar al máximo la arquitectura
  • Optimizar el código
  • Gastar los menos recursos posibles (ya que en las consolas antiguas eran escasos)
Para estar seguros de verdad deberíamos preguntar a algún programador japonés de la época :P ¿Alguien se anima a mandar un email a Yūji Naka o a Shigeru Miyamoto? [carcajad]

Aunque es mucho curro hacer un juego en ASM, parece evidente que reutilizaban bastante código fuente, especialmente para las rutinas de las físicas, efectos gráficos, etc. De ahí que muchos elementos (gráficos, físicas concretas, etc.) sean muy similares entre juegos.

Un tutorial de ASM que me gusta mucho es Maxim's World of Stuff de SMS Power! (para programar juegos de Master System):

http://www.smspower.org/maxim/HowToProgram

Otra buena forma de empezar es tener un emulador con modo debug y trastear con las instrucciones que se ejecutan (analizar las rutinas de salto, suma de puntos, etc.) y con edición de la RAM en tiempo real (cosa que te permite por ejemplo el emulador MEKA de Master System):

Imagen

gadesx escribió:Lo suyo seria hacerse una especie de editor para el genero de juego que quieras en concreto,
como los editores de sonic, del mario como el lunar, megaman, etc

Pues si :D, como el editor de niveles del Alex Kidd in Miracle World de calindro:

http://www.elotrolado.net/hilo_kidded-editor-de-niveles-para-alex-kidd-in-miracle-world-modificacion-hard-mode_1978388

Es verdad que este mundo al principio es un infierno [triston] pero si empiezas a manejarte un poco con él puede llegar a ser muy divertido y gratificante ;)
Gran hilo este que habéis abierto. :)
icecaap escribió:Buena pregunta :) y además me la he hecho muchas veces.

Para estar seguros de verdad deberíamos preguntar a algún programador japonés de la época :P ¿Alguien se anima a mandar un email a Yūji Naka o a Shigeru Miyamoto? [carcajad]

No hace falta preguntar, ya se sabe por seguro que solo se usaba ensamblador :-P
Yo pasé muy breve mente por Basic, y de ahí salté directamente al ensamblador. Primero de 68k y luego de PPC.

Pilotar ensamblador te enseña el porqué y el cómo de muchas cosas que en los lenguajes de alto nivel la gente no se plantea o creen que es magia negra. Conocer asm te puede ayudar a ver eficientemente un código, en digamos C, si eres lo suficientemente tenaz como para aprenderlo todo bien y poder abstraerte para imaginar mas o menos como seria el mismo código en Asm. Es algo que a mi me es muy útil cuando microoptimizo el poco código que hago en C o en Pascal (si, Pascal. Algunas partes muy farragosas en asm o en las que no gano mucha velocidad al escribir en asm, algunas veces las escribo de C plano o Pascal)

El ensamblador no es difícil per se, al menos no mucho, e incluso diría que es mas sencillo y lógico que otros lenguajes de alto nivel, pero es bastante laborioso y cambia con la arquitectura. Lo suyo es no solo conocer el asm de x86, de Z80 o de Power, la cosa es conocer la arquitectura y orientar tu código a ese hardware concreto para hacerlo eficiente, y no solo conformarse con que funcione.

En cuanto a la arquitectura, pues yo recomiendo el 68k, es cómodo, lógico y elegante, con instrucciones eficientes, sin stacks de mierda... Me parece bastante asequible y ademas te hace comprender por qué muchas cosas son como son, y no son reglas arbitrarias o voodoo . No recomiendo el asm de ppc, por ser RISC y bastante mas laborioso que el de 68k ni tampoco el de X86, por ser una cosa bastante falta de clase, retorcido en comparación a otros y una bazofia en general.

De todas formas y para terminar el tocho, decirte que el ASM no es la cura a todos los males del mundo. Tu código tienen que estar bien estructurado, limpio y eficiente para poder sacarle partido a lo que ofrece el asm, es decir un código bueno en C, se pule tranquilamente uno malo en asm.

Luego esta el asunto de los ensambladores y compiladores de código, pero eso es otra historia.

PD: De todas formas, conocer el asm de un micro, es solo parte de la historia con las consolas clásicas. Tienes que ir mas allá, saber como programar los chipsets, como se comportan los buses para saber cuando mover datos por el, cuando precalcular, cuando y como hacer cada cosa en cada maquina.

Las maquinas modernas o las mas antiguas y elegantes, tienen lo que se dio a llamar "delegación de funciones", para que no tengas que estrujar el procesador para todo, y de ahí que tengas que aprender como funciona cada maquina como un todo, una caja de musica con mil engranajes y cada una diferente.

PUF, que tocho de post xD
Pues no sé, yo me muevo más cómodamente en lenguajes de alto nivel. Realmente lo ideal es usar un lenguaje de alto nivel y si quieres programar las rutinas críticas en ensamblador. Es decir, en un juego todo lo que sea:
* Menús
* Lógica del juego e IA de los enemigos
* Lectura de mandos

Puede ir en alto nivel, y luego la rutina de gráficos o el reproductor de música en ASM.
Estoy mas o menos con la opinion de Pek.

Empeze con basic con 8 años y luego salte al assembler.

C o derivados me parecen para nenas [carcajad] [carcajad]

bueno bueno bromas a aparte, codigo mejor depurado y menor consumo = ASM, para tareas mas complejas en las que puedas perderte entre tantas lineas de codigo = C.

Ojo esto hablando de procesadores antiguos, a dia de hoy es un infierno programar en ASM como ya se ha dicho.
cupra4t escribió:C o derivados me parecen para nenas [carcajad] [carcajad] .


Creo que está claro para todo el mundo que programar en C, java, c# y esas cosas modernas es para maricones y demás marujas de ofimática.

Un verdadero hombre se forja a si mismo con experiencias vitales, como desayunar a las cuatro de la tarde un paquete de bollicaos con un par de birras (para regular el pH y asi paliar un poco el resacón), mientras, con cara de no dar crédito a lo que ve, intenta descifrar un taco de paginas en asm, sin un cochino comentario y hecha por el mismo unos años atrás xD

Evidentemente, no conseguí nada, pero hay que ser todo un macho para intentarlo en esas condiciones xD
Claro pero los lenguajes de alto nivel proporcionan mucha legibilidad y la curva de aprendizaje es mucho más asequible :-). Además su optimización depende del código que genere, un buen compilador puede generar un código francamente eficiente, y los compiladores han avanzado mucho incluso para plataformas antiguas.

Hoy día existen excelentes compiladores cross-platform para sistemas de 8bit y por ejemplo el Spectrum se está beneficiando mucho de proyectos como SDK88 o SDCC, que permiten compilar en C juegos para Spectrum con un resultado inmejorable.

En mi experiencia personal, y andando como ando muy escaso de tiempo, me gusta progamar el MSX en alto nivel, hoy día existen excelentes opciones (C, Pascal, Turbo Basic).
Pek escribió:
cupra4t escribió:C o derivados me parecen para nenas [carcajad] [carcajad] .


Creo que está claro para todo el mundo que programar en C, java, c# y esas cosas modernas es para maricones y demás marujas de ofimática.

Un verdadero hombre se forja a si mismo con experiencias vitales, como desayunar a las cuatro de la tarde un paquete de bollicaos con un par de birras (para regular el pH y asi paliar un poco el resacón), mientras, con cara de no dar crédito a lo que ve, intenta descifrar un taco de paginas en asm, sin un cochino comentario y hecha por el mismo unos años atrás xD

Evidentemente, no conseguí nada, pero hay que ser todo un macho para intentarlo en esas condiciones xD


Poner en el mismo grupo a C y a Java debería estar penado con cárcel XD

Ahora que se lleva mucho el tema de los portfolios, web personales y demás, para poder llamar a alguien programador, deberían exigirle que presentara un enlace a su repositorio en Git Hub con algo picado en ASM o C. La de pseudo-programadores de los de "yo se programar en Java" que nos quitaríamos de enmedio... (gracioso eso de "yo se programar" en X lenguaje. O sabes programar y te da igual el lenguaje que sea o no sabes, cazurro)

La diferencia entre antes y ahora no es tan grande. Es decir, solo hemos pasado de programar juegos en ensamblador a programarlos en C++ (si nos centramos solo en consolas, claro). De hecho, aún hay algún juego que se programa en ensamblador (ej: el Ironfall de la 3DS)
christian14 escribió:La de pseudo-programadores de los de "yo se programar en Java" que nos quitaríamos de enmedio...)

La culpa de eso la tienen los empresaurios ignorantes que piden programadores de Java, así luego vemos como grandes empresas de nuestro país funcionan internamente con programas pésimos, pero eso sí, se pueden ejecutar en cualquier equipo, que es lo que les importa, ya que así se evitan contratar programadores si cambian hardware. En España o pone en el cirrículum bien en grande que dominas Java o te miran mal.

Por cierto, habría que dejar claro que en ASM también se puede hacer código muy ineficiente, depende totalmente del programador, entre hacer un programa genérico y otro totalmente optimizado hacia el resultado que quieres obtener puede haber más de un 100% de aumento de ciclos. Por poner un ejemplo simple, si antes de decidir un salto hay una comparación y sabes de antemano que el 90% de las veces vas a recibir un resultado concreto, lo eficiente es asumir que ese resultado se recibe siempre e ir adelantando instrucciones por que se pierde menos deshaciendo en caso de que aparezca un resultado del otro 10%, ese tipo de cosas mucha gente no las valora, y al final aparecen "programadores" de ASM con códigos ineficientes que rendirían mejor en C.

Para CPUs modernas, aparte de ser un suplicio el programar en ASM, es innecesario ya que salvo con programas muy exigentes del tipo CAD, multimedia o juegos, el resto se ejecutan sobradamente, antes había que buscar el aprovechamiento máximo, ahora se tiran recursos para hacer cualquier tontería.
Baek escribió:
christian14 escribió:La de pseudo-programadores de los de "yo se programar en Java" que nos quitaríamos de enmedio...)

La culpa de eso la tienen los empresaurios ignorantes que piden programadores de Java, así luego vemos como grandes empresas de nuestro país funcionan internamente con programas pésimos, pero eso sí, se pueden ejecutar en cualquier equipo, que es lo que les importa, ya que así se evitan contratar programadores si cambian hardware. En España o pone en el cirrículum bien en grande que dominas Java o te miran mal.

Por cierto, habría que dejar claro que en ASM también se puede hacer código muy ineficiente, depende totalmente del programador, entre hacer un programa genérico y otro totalmente optimizado hacia el resultado que quieres obtener puede haber más de un 100% de aumento de ciclos. Por poner un ejemplo simple, si antes de decidir un salto hay una comparación y sabes de antemano que el 90% de las veces vas a recibir un resultado concreto, lo eficiente es asumir que ese resultado se recibe siempre e ir adelantando instrucciones por que se pierde menos deshaciendo en caso de que aparezca un resultado del otro 10%, ese tipo de cosas mucha gente no las valora, y al final aparecen "programadores" de ASM con códigos ineficientes que rendirían mejor en C.

Para CPUs modernas, aparte de ser un suplicio el programar en ASM, es innecesario ya que salvo con programas muy exigentes del tipo CAD, multimedia o juegos, el resto se ejecutan sobradamente, antes había que buscar el aprovechamiento máximo, ahora se tiran recursos para hacer cualquier tontería.


Por suerte, el tema de los empresaurios ignorantes esta cambiando... ahora, a la hora de montar un equipo de desarrollo, delegan en el jefe de desarrollo cuando se debe entrevistar a alguien (o incluso en los propios jefes de los distintos equipos). Estos normalmente son personas que saben que Java es una puta mierda (así de claro) que se comenzó a utilizar por la portabilidad que tenía, pero que, hoy día, en el país que vivimos, en el que todo el mundo tiene conexión a internet 24/7 este donde este, no tiene ningún sentido seguir usando por ser sumamente ineficiente, como bien dices.

Espero que, en no demasiados años, se le de puerta como se esta haciendo con Flash. Ciertamente, el clavo ardiendo al que se agarra Java es Android. Buscas ofertas de empleo como programador fuera de España, y te das cuenta de que, fuera de la programación de dispositivos móviles, casi todo el mundo pide ahora Python, Ruby (tampoco es que sean el canon de la eficiencia, pero tienen detrás a Django y Rails, entre otros frameworks interesantes) o directamente C/C++. Pero en fin, ya sabemos como funciona esto de la tecnología móvil. Antes de ayer lo que mandaba era Symbian yen España las cosas van con 10 años de desfase [fumando]

Y el ensamblador... realmente sólo debería usarse de forma literal para cosas muy específicas, pero se esta perdiendo, cada vez nos abstraemos más de él. Ya ni para programar un micro se necesita ASM, el amigo Arduino te lo programa con ese lenguaje propio mezcla de C y Processing que tiene.
christian14 escribió:Poner en el mismo grupo a C y a Java debería estar penado con cárcel XD


Pues efectivamente. Java es un invento del maligno.

Y si, hay mucho programador en Java, que no sabe hacer otra cosa y se gana la vida mejor que el que tiene experiencia con muchos otros lenguajes para hombres. Y encima vacilan XD

En cuanto a que el código asm puede ser ineficiente, pues si, ya lo digo en mi post más arriba. Un código malo, sucio y sin estructurar, es malo en el lenguaje que sea. El asm ofrece mucho control, pero hay que tener las cosas claras para poder sacarle partido. Hacer tu programa en ASM no hace que misteriosamente sea compacto y rápido como un demonio

Pd: puñetero autofiller, no hay cristo que Escriba XD
Baek escribió:Por cierto, habría que dejar claro que en ASM también se puede hacer código muy ineficiente,...


Tambien esta en el hardware, puedes escribir buen codigo asm, pero si desconoces propiedades de la arquitectura, o registros del CPU, de seguro el codigo sera ineficiente, o al menos, menos eficiente de el potencial total, aunque sea impoluto en cuanto a calidad

No tiene que ser culpa del programador necesariamente, una mala documentacion, es la principal fuente de codigo ineficiente

Realizar una tarea por software, (casi)siempre va a ser mas lenta que pudiendola realizar completamente o parcialmente por hardware



Sobre la pregunta, si hablamos de ordenadores de 8bits, no hay que olvidar a Basic, un lenguaje muy extendido, e increiblemente subestimado en la actualidad, que se usaba mucho en la decada de los 80s

Aun tengo en casa, unas placas ISA de 8bits, llamadas PDS, que permiten compilacion cruzada y testeo en modo real de software para ZX, MSX, y Spectrum

Por un lado es una marabilla, un solo codigo para las tres, y bastante optimizado, por el otro, creo que fue la culpable de que se hiciera una version para todas las plataformas...

Un 286, DOS, y un par de ISA, y a programar! es codigo ensamblador, aunque se puede realizar el esqueleto del codigo en basic, para no complicarnos la vida con lenguaje de bajo nivel para cosas que no lo requieren
theelf escribió:
Baek escribió:Por cierto, habría que dejar claro que en ASM también se puede hacer código muy ineficiente,...


Tambien esta en el hardware, puedes escribir buen codigo asm, pero si desconoces propiedades de la arquitectura, o registros del CPU, de seguro el codigo sera ineficiente, o al menos, menos eficiente de el potencial total, aunque sea impoluto en cuanto a calidad

Sí, sin duda, por eso ya comenté en segunda página que antes de meterse a picar ASM, hay que entender como funciona una CPU, la arquitectura es un elemento clave a la hora de buscar rendimiento.
Lo único bueno de java es la JVM, pero el lenguaje en si es una castaña. Sí vas a diseñar un lenguaje que te abstraiga totalmente del Hardware hazlo bien (como Python) y no uses una sintaxis pseudo-C. Ya de ciertas "particularidades" del lenguaje (ej: la forma en la que está implementada el manejo de IO es totalmente inintuitiva, el manejo de excepciones puede llegar a ser ridículo...) ni hablamos.
Yo aprendi asm en pseudocodigo y luego con los x86. Despues salte a C, posteriormente a c++ y luego a java/C#. Creo que es una curva de aprendizaje muy lógica, y te evita acomodarte. Java y c# proporcionan miles de cosas en sus librerias estandar, y eso hace que no aprendas tanto a sacarte las castañas del fuego cuando enttas a asm o c y ves que no tienes casi de nada y te tienes que buscar la vida [+risas]
No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.

Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado XD. Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.

Por horas que le echo no será.
Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.

Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado XD. Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.

Por horas que le echo no será.



Aquí, tienes varias vías para aprender a programar ASM,
https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md#assembly-language
He visto y algunos y tienen buena pinta.
Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.

Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado XD. Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.

Por horas que le echo no será.


No es que vayas a ser un programador de segunda si solo dominas un lenguaje. Es que si solo "dominas" un lenguaje simplemente NO eres un programador. Si quieres aprender a programar, empieza por C para entender como funciona esto, toca un poco de ensamblador, C++ para introducirte en la orientación a objetos, y luego sigue adelante con los lenguajes de alto nivel. He leído que te interesa el desarrollo web, entonces, tras esos pasos que te he dicho, yo tiraría por Python, Ruby, o PHP si te gustan las emociones fuertes XD. Ahora mismo, el 99% de los sistemas web utilizan en su back end alguno de esos 3 lenguajes.

Huye de Java y no mires atrás. Consejo de programador.
christian14 escribió:
Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.

Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado XD. Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.

Por horas que le echo no será.


No es que vayas a ser un programador de segunda si solo dominas un lenguaje. Es que si solo "dominas" un lenguaje simplemente NO eres un programador. Si quieres aprender a programar, empieza por C para entender como funciona esto, toca un poco de ensamblador, C++ para introducirte en la orientación a objetos, y luego sigue adelante con los lenguajes de alto nivel. He leído que te interesa el desarrollo web, entonces, tras esos pasos que te he dicho, yo tiraría por Python, Ruby, o PHP si te gustan las emociones fuertes XD. Ahora mismo, el 99% de los sistemas web utilizan en su back end alguno de esos 3 lenguajes.

Huye de Java y no mires atrás. Consejo de programador.


Gracias. Como cada programador, ingeniero, etc. me dice una cosa ( @Baek mismo me ha dicho que le de caña a Java), yo lo que ahora estoy haciendo es aprender bien la Lógica de programación y luego lo del Lenguaje ya vendrá. Eso es en lo que ha estado de acuerdo la mayoría que me han asesorado.

Gracias a ti también, @1985a
Ojo, yo te he dicho que le des caña a Java ya que al decir que vas a necesitar el CS asumo que lo quieres para trabajar, y en ese caso ten claro que vas a encontrar en España muchas más ofertas laborales con Java que con cualquier otro lenguaje. En la misma frase te he dicho que me jodía tener que recomendarlo ;)
Baek escribió:Ojo, yo te he dicho que le des caña a Java ya que al decir que vas a necesitar el CS asumo que lo quieres para trabajar, y en ese caso ten claro que vas a encontrar en España muchas más ofertas laborales con Java que con cualquier otro lenguaje. En la misma frase te he dicho que me jodía tener que recomendarlo ;)


Gracias!

Será interesante saber también qué piden por ahí afuera ya que las condiciones laborales del extranjero me interesan mucho más. Pero poco a poco.
Red Ninja Wonder escribió:
christian14 escribió:
Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.

Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado XD. Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.

Por horas que le echo no será.


No es que vayas a ser un programador de segunda si solo dominas un lenguaje. Es que si solo "dominas" un lenguaje simplemente NO eres un programador. Si quieres aprender a programar, empieza por C para entender como funciona esto, toca un poco de ensamblador, C++ para introducirte en la orientación a objetos, y luego sigue adelante con los lenguajes de alto nivel. He leído que te interesa el desarrollo web, entonces, tras esos pasos que te he dicho, yo tiraría por Python, Ruby, o PHP si te gustan las emociones fuertes XD. Ahora mismo, el 99% de los sistemas web utilizan en su back end alguno de esos 3 lenguajes.

Huye de Java y no mires atrás. Consejo de programador.


Gracias. Como cada programador, ingeniero, etc. me dice una cosa ( @Baek mismo me ha dicho que le de caña a Java), yo lo que ahora estoy haciendo es aprender bien la Lógica de programación y luego lo del Lenguaje ya vendrá. Eso es en lo que ha estado de acuerdo la mayoría que me han asesorado.

Gracias a ti también, @1985a


Lo que dice Baek es totalmente cierto. Saber Java en España es trabajo seguro (qué sorpresa, España utilizando como motor de un campo algo completamente obsoleto). Pero las mejores ofertas de trabajo estan en los otros lenguajes. Ten en cuenta que hay tanta gente que sabe tirar lineas de código Java (que no programar) que he visto gente currando +10h diarias por 500 euros al mes.

Aún así, con esa filosofia vas bien. Tienes que abstraerte de los lenguajes, una persona que sabe programar y tiene claro lo que tiene que hacer, se va al manual del lenguaje de turno y resuelve lo que quiera con el lenguaje que quiera.
80 respuestas
1, 2