Para celebrar el 50 aniversario de BASIC, Steve Wozniak ha escrito unas memorias sobre sus primeras experiencias con este lenguaje popular y sobre cómo creó su propio BASIC desde cero para los ordenadores Apple I y Apple II. Una hazaña increíble. ¡A Disfrutar!
#26:
Wozniak era un hacker auténtico de los que ya quedan pocos.
La implementación de BASIC de Apple no tengo el gusto de conocerla. Si he estudiado la del ZX Spectrum, que creo que es una de las más brillantes que existen. Digo esto porque los hackers de Sinclair (ya en el ZX80) tuvieron la brillante idea de utilizar "tokens" para el intérprete, de forma que el usuario pŕacticamente introduce bytecode sin saberlo (tu escribes PRINT, pero se guarda por ejemplo 0xD3 que es el 'token' de PRINT, vamos su opcode, en vez de la palabra literal 'PRINT'). El checkeo de sintaxis se hace en el momento de la intruducción y el programa almacenado es por tanto una secuencia de bytecodes "limpios", ya precompilados.
Eso da una velocidad de ejecución "brutal" (comparado con otros BASIC). Por ejemplo, si escribes "BORDER 2" (para cambiar el color de la pantalla a rojo) queda convertido a unos 4 bytes de bytecode y la decodifación al equivalente en código máquina (ld a,2; out (254),a) es casi instantánea. Es mucho más lento que escribir directamente en ASM pero mucho más rápido que un intérprete tradicional. Estas ideas me han inspirado en "tiempos modernos" cuando he tenido que hacer intérpretes de mis propios lenguajes de script.
Perdón por el semi-offtopic, es que me gusta el tema
#3:
La meneo porque Steve Wozniak siempre me ha recordado a un Ewok y por tanto me cae bien.
#18:
#17 Los fundamentos básicos de la teoría de lenguajes que utilizan los compiladores (análisis lexicográfico, gramática, árbol sintáctico...) también son aplicables a los lengujes interpretados.
#20:
Al revés: Steve Wozniak sabía de compiladores, Fortran, Algol... lo que no sabía era BASIC, porque casi ningun ordenador lo tenía en aquel momento. Y el BASIC de DEC que funcionaba en los VAX no era aplicable para juegos.
El que ha traducido el titular se ha lucido
#9:
El verdadero genio, el bueno de los dos Steves.
#13:
#11 que no hombre, que los ewoks molan un güevo
Wozniak era un hacker auténtico de los que ya quedan pocos.
La implementación de BASIC de Apple no tengo el gusto de conocerla. Si he estudiado la del ZX Spectrum, que creo que es una de las más brillantes que existen. Digo esto porque los hackers de Sinclair (ya en el ZX80) tuvieron la brillante idea de utilizar "tokens" para el intérprete, de forma que el usuario pŕacticamente introduce bytecode sin saberlo (tu escribes PRINT, pero se guarda por ejemplo 0xD3 que es el 'token' de PRINT, vamos su opcode, en vez de la palabra literal 'PRINT'). El checkeo de sintaxis se hace en el momento de la intruducción y el programa almacenado es por tanto una secuencia de bytecodes "limpios", ya precompilados.
Eso da una velocidad de ejecución "brutal" (comparado con otros BASIC). Por ejemplo, si escribes "BORDER 2" (para cambiar el color de la pantalla a rojo) queda convertido a unos 4 bytes de bytecode y la decodifación al equivalente en código máquina (ld a,2; out (254),a) es casi instantánea. Es mucho más lento que escribir directamente en ASM pero mucho más rápido que un intérprete tradicional. Estas ideas me han inspirado en "tiempos modernos" cuando he tenido que hacer intérpretes de mis propios lenguajes de script.
Perdón por el semi-offtopic, es que me gusta el tema
#26 En el Spectrum puedes llamar a la ROM directamente. Y las rutinas que existen y llamas por ejempo, en una dirección de memoria se ejecutan en al ROM.
Por cierto, tengo abierto un libro sobre programar en el ZX ahora mismo
Compilo con Pasmo (z80), paso a TAP desde Pasmo, y lo ejecuto en Zesarux.
#36 sí, en Sinclair diseñaron la ROM tan bien que parte del intérprete de BASIC está pensado a modo de API para los programas en ensamblador. Era muy común llamar a la ROM para las rutinas de carga/grabación, impresión de cadenas de caracteres y calculador de punto flotante. El libro definitivo sobre la ROM del ZX es "The complete spectrum ROM disassembly", básicamente la ROM entera desensamblada y comentada. Ahí se puede apreciar con claridad el diseño eficiente del intérprete de BASIC.
#36 No será The Complete Spectrum ROM Disassembly, de los doctores Ian Logan y Frank O'Hara, o ZX Spectrum (TS 2068), Programación en lenguaje ensamblador, de Tony Woods, o Lenguaje máquina avanzado para ZX Spectrum, de David Webb.
El primero es la Sagrada Biblia. Pero los tres merecieron forro en aironfix transparente.
Me has hecho rebuscar en mi librería Y gracias a ti he encontrado una libreta llena de rutinas, algunas impresas en la Sheikosa GP que tenía en el Spectrum y grapadas en la libreta, y otras escritas en la biblioteca del cuartel, a pelo, sin la máquina. No recordaba que existía y no sabes la emoción que me ha dado abrirla.
#48 Pues coo digo si escaneas con OCR y se lo pasa a Pasmo con algunos cambios, te hará un bonito TAP para el emulador de Spectrum
Una gozada programar ahora, y muchísimo más rápido.
Ah, las instrucciones del Z80 con Spectrum >>> intel. LD, LDIR, CP, .... es increiblemente simple programar para ese cacharro. Probé con el Altair y acabé hasta los cojones de llamar a la BIOS, tanto en modo Z80 como 8086. Que sí, que tengo EQU para poner "etiquetas" a las syscalls pero...
#17 Los fundamentos básicos de la teoría de lenguajes que utilizan los compiladores (análisis lexicográfico, gramática, árbol sintáctico...) también son aplicables a los lengujes interpretados.
Al revés: Steve Wozniak sabía de compiladores, Fortran, Algol... lo que no sabía era BASIC, porque casi ningun ordenador lo tenía en aquel momento. Y el BASIC de DEC que funcionaba en los VAX no era aplicable para juegos.
El que ha traducido el titular se ha lucido
"Mind that I had never taken a course in compiler (or interpreter) writing in my life."
In my second year of college I had sat in a math analysis class trying to teach myself how to start writing a FORTRAN compiler, knowing nothing about the science of compiler writing.
"I didn't know about compiler writing other than perchance. But I did know about stacks and things like converting expressions into RPN using stacks"
Es increíble, pero la biografía de Jobs cuentan como montó uno de los primeros ordenadores y pulsó en una tecla y se mostró en la pantalla y los dos saltaron de alegría. Para que veamos como ha evolucionado la informática en la corta de vida de un hombre.
Sin querer parecer pretencioso, esto de que no sabia de compiladores no es cierto. Y me explico: pasa un poco como en la música, uno puede no saber la teoría o la matemática detrás de algo pero sabe de ese ámbito de conocimiento.
La teoría:
a) viene de la observación de los fenómenos, mecanismos y patrones que en un principio son fruto de intuición, imaginación, observación de los "building blocks" mas pequeños/simples que componen ese ámbito, etc., no al revés.
b) tiende a sintetizar, optimizar y reglar eso que se hace de forma más artesanal ( realmente no es tan artesanal, es inconscientemente analítica y en cierta manera matemática ), vamos, refinamiento.
c) Muchas veces, al igual que cosas como la programación o incluso diría que toda la ingeniería, en general, saber la teoría de algo es, simplemente, haber llevado acciones, experiencias, patrones que están en un plano muy automático o medio inconsciente a un plano mas consciente, que se ahorma a un lenguaje y sobre el que se hace meta-función para extrapolar, optimizar... refinar.
Luego sí, Steve sabia como hacer un compilador por que no hace falta saber procesar el lenguaje de programación como un autómata refinado, con plegados de expresiones, resolución de conflictos, etc. En algo como BASIC y otros muchos lenguajes ( al menos lenguajes estructurados ) la mayoría es como si yo os digo "da dos pasos adelante, gira 90 grados a la derecha, da siete pasos hacia adelante,..."; el ser humano procesa esto de forma intuitiva y para alguien que sabe programar un mínimo esto no es difícil procesarlo.
Luego esta la generación de código, pero en aquel entonces todo programador dominaba el ensamblador y no era difícil traducir bucles, IFs, llamadas a función, etc. a plantillas de unas pocas instrucciones en ensamblador. Solo faltaba llevar una tabla de etiquetas, posiciones, tamaños,... el linker.
No se si parece que estoy fumado, pero la premisa o titulo del articulo... no sé yo.
Un genio con todas las letras. Luego otro cogía sus diseños (y también su software, por lo que se ve, pensaba que esa parte no la tocaba y mira...) y los vendía y el genio era el otro...
#25 La palabra genio está muy sobrevalorada entonces... un genio hace cosas que perduran y a las que mucho tiempo después se les sigue dando el valor que merecen. Yo solo espero que en el futuro perdure el verdadero genio de entre los dos. Lo otro sería más marketing, humo. Que muy bueno vendiendo y buscando estrategias para una empresa con mucho potencial, pero de ahí a genio... más bien un tío con visión y cabeza dura para seguir adelante ante todos y pese a todos (lo mismo que le salió bien le podía haber salido mal... de hecho ya le salió una vez mal, por eso lo echaron la primera vez de apple)
#10#7 Yo estoy suscrito a la web de meneame el porno: esto lo tengo todo incluído: me dan casa en Benidorm y me invitan pronto a Panamá...me han dicho que están con los papeles ya!
Comentarios
La meneo porque Steve Wozniak siempre me ha recordado a un Ewok y por tanto me cae bien.
#3 Con ese comentario induces a mucha gente a votar negativo...
#11 que no hombre, que los ewoks molan un güevo
#3 El comentario más profundo en mucho tiempo en Menéame. Positivo.
#3 Qué simpáticos eran los Ewoks. Hasta que le dieron a la bebida y a las drogas.
#32 hasta que vinieron a robarnos el trabajo y quedarse las subvenciones.
Wozniak era un hacker auténtico de los que ya quedan pocos.
La implementación de BASIC de Apple no tengo el gusto de conocerla. Si he estudiado la del ZX Spectrum, que creo que es una de las más brillantes que existen. Digo esto porque los hackers de Sinclair (ya en el ZX80) tuvieron la brillante idea de utilizar "tokens" para el intérprete, de forma que el usuario pŕacticamente introduce bytecode sin saberlo (tu escribes PRINT, pero se guarda por ejemplo 0xD3 que es el 'token' de PRINT, vamos su opcode, en vez de la palabra literal 'PRINT'). El checkeo de sintaxis se hace en el momento de la intruducción y el programa almacenado es por tanto una secuencia de bytecodes "limpios", ya precompilados.
Eso da una velocidad de ejecución "brutal" (comparado con otros BASIC). Por ejemplo, si escribes "BORDER 2" (para cambiar el color de la pantalla a rojo) queda convertido a unos 4 bytes de bytecode y la decodifación al equivalente en código máquina (ld a,2; out (254),a) es casi instantánea. Es mucho más lento que escribir directamente en ASM pero mucho más rápido que un intérprete tradicional. Estas ideas me han inspirado en "tiempos modernos" cuando he tenido que hacer intérpretes de mis propios lenguajes de script.
Perdón por el semi-offtopic, es que me gusta el tema
#26 En el Spectrum puedes llamar a la ROM directamente. Y las rutinas que existen y llamas por ejempo, en una dirección de memoria se ejecutan en al ROM.
Por cierto, tengo abierto un libro sobre programar en el ZX ahora mismo
Compilo con Pasmo (z80), paso a TAP desde Pasmo, y lo ejecuto en Zesarux.
#36 sí, en Sinclair diseñaron la ROM tan bien que parte del intérprete de BASIC está pensado a modo de API para los programas en ensamblador. Era muy común llamar a la ROM para las rutinas de carga/grabación, impresión de cadenas de caracteres y calculador de punto flotante. El libro definitivo sobre la ROM del ZX es "The complete spectrum ROM disassembly", básicamente la ROM entera desensamblada y comentada. Ahí se puede apreciar con claridad el diseño eficiente del intérprete de BASIC.
#38 Busca OpenSE, es una ROM del ZX bajo licencia libre, sustituye a la de 16k y 48k.
#39 me admiro de que haya gente dedicándose aún a esas cosas
#40 Mucho. Aquí tienes un huevo de juegos underground rescatados para Spectrum en modo texto:
http://base.speccy.org/index_es.html
El ensamblador Pasmo
http://pasmo.speccy.org/
pasmo --tapbas listado.asm programa.tap
OpenSE
https://sourceforge.net/projects/sebasic/files/OpenSE%20BASIC/
El emulador Zesarux la trae, pero debes configurar una nueva máquina 48k con esa ROM.
#38 Ups, disculpa, no te leí. Lo que dices es la pura verdad.
#36 No será The Complete Spectrum ROM Disassembly, de los doctores Ian Logan y Frank O'Hara, o ZX Spectrum (TS 2068), Programación en lenguaje ensamblador, de Tony Woods, o Lenguaje máquina avanzado para ZX Spectrum, de David Webb.
El primero es la Sagrada Biblia. Pero los tres merecieron forro en aironfix transparente.
#43 http://trastero.speccy.org/cosas/Libros/CodigoMH.htm
#47 No lo tengo. No lo recuerdo.
Me has hecho rebuscar en mi librería Y gracias a ti he encontrado una libreta llena de rutinas, algunas impresas en la Sheikosa GP que tenía en el Spectrum y grapadas en la libreta, y otras escritas en la biblioteca del cuartel, a pelo, sin la máquina. No recordaba que existía y no sabes la emoción que me ha dado abrirla.
Un saludo, y que disfrutes.
#48 Pues coo digo si escaneas con OCR y se lo pasa a Pasmo con algunos cambios, te hará un bonito TAP para el emulador de Spectrum
Una gozada programar ahora, y muchísimo más rápido.
Ah, las instrucciones del Z80 con Spectrum >>> intel. LD, LDIR, CP, .... es increiblemente simple programar para ese cacharro. Probé con el Altair y acabé hasta los cojones de llamar a la BIOS, tanto en modo Z80 como 8086. Que sí, que tengo EQU para poner "etiquetas" a las syscalls pero...
#26 Me veo a alguno ejecutando el ensamblador que has puesto en Windows y saliéndole un pantallazo azul, jeje
El verdadero genio, el bueno de los dos Steves.
#9 Hmmmm... Depende.
Son genialidades distintas: Jobs era un genio en cuanto a diseño de producto, promoción, márquetin y demás; Wozniak es un genio a nivel técnico.
Ahora bien, en cuanto a personalidad, según lo que he leído de ambos, sí que te tengo que dar la razón en que Woz es el 'bueno' de los dos Steve.
#17 Los fundamentos básicos de la teoría de lenguajes que utilizan los compiladores (análisis lexicográfico, gramática, árbol sintáctico...) también son aplicables a los lengujes interpretados.
Al revés: Steve Wozniak sabía de compiladores, Fortran, Algol... lo que no sabía era BASIC, porque casi ningun ordenador lo tenía en aquel momento. Y el BASIC de DEC que funcionaba en los VAX no era aplicable para juegos.
El que ha traducido el titular se ha lucido
#20
Del artículo:
"Mind that I had never taken a course in compiler (or interpreter) writing in my life."
In my second year of college I had sat in a math analysis class trying to teach myself how to start writing a FORTRAN compiler, knowing nothing about the science of compiler writing.
"I didn't know about compiler writing other than perchance. But I did know about stacks and things like converting expressions into RPN using stacks"
#27 Si bueno, un autodidacta, prácticamente como eramos todos los que aprendiamos informática en los 80...
Da igual, mientras supiese de intérpretes.
Copiando y pegando de StackOverflow
#14
#14 para cuándo un monumento o una calle para Stackoverflow??
Basic era un lenguaje interpretado, no compilado.
#12 El propio Wozniak lo dice literalmente en el artículo, cuando habla de la aplicación de Basic a los juegos: BASIC is an interpreted language
#16 no entiendo entonces ese titular
#12 era y es, pero también puede ser compilado.
#28 al principio sólo era interpretado
Con mucho cuidado...
#1 ...y Mountain Dews.
#2 #1 ...y un teclado
Es increíble, pero la biografía de Jobs cuentan como montó uno de los primeros ordenadores y pulsó en una tecla y se mostró en la pantalla y los dos saltaron de alegría. Para que veamos como ha evolucionado la informática en la corta de vida de un hombre.
Sin querer parecer pretencioso, esto de que no sabia de compiladores no es cierto. Y me explico: pasa un poco como en la música, uno puede no saber la teoría o la matemática detrás de algo pero sabe de ese ámbito de conocimiento.
La teoría:
a) viene de la observación de los fenómenos, mecanismos y patrones que en un principio son fruto de intuición, imaginación, observación de los "building blocks" mas pequeños/simples que componen ese ámbito, etc., no al revés.
b) tiende a sintetizar, optimizar y reglar eso que se hace de forma más artesanal ( realmente no es tan artesanal, es inconscientemente analítica y en cierta manera matemática ), vamos, refinamiento.
c) Muchas veces, al igual que cosas como la programación o incluso diría que toda la ingeniería, en general, saber la teoría de algo es, simplemente, haber llevado acciones, experiencias, patrones que están en un plano muy automático o medio inconsciente a un plano mas consciente, que se ahorma a un lenguaje y sobre el que se hace meta-función para extrapolar, optimizar... refinar.
Luego sí, Steve sabia como hacer un compilador por que no hace falta saber procesar el lenguaje de programación como un autómata refinado, con plegados de expresiones, resolución de conflictos, etc. En algo como BASIC y otros muchos lenguajes ( al menos lenguajes estructurados ) la mayoría es como si yo os digo "da dos pasos adelante, gira 90 grados a la derecha, da siete pasos hacia adelante,..."; el ser humano procesa esto de forma intuitiva y para alguien que sabe programar un mínimo esto no es difícil procesarlo.
Luego esta la generación de código, pero en aquel entonces todo programador dominaba el ensamblador y no era difícil traducir bucles, IFs, llamadas a función, etc. a plantillas de unas pocas instrucciones en ensamblador. Solo faltaba llevar una tabla de etiquetas, posiciones, tamaños,... el linker.
No se si parece que estoy fumado, pero la premisa o titulo del articulo... no sé yo.
Pues lo escribió con las manos.
En código máquina. No sabría de
compiladoresinterpretes pero sabía de código máquina.Un genio con todas las letras. Luego otro cogía sus diseños (y también su software, por lo que se ve, pensaba que esa parte no la tocaba y mira...) y los vendía y el genio era el otro...
#22 Ambos, cada uno en lo suyo. El uno en crear y el otro en saber vender.
#25 La palabra genio está muy sobrevalorada entonces... un genio hace cosas que perduran y a las que mucho tiempo después se les sigue dando el valor que merecen. Yo solo espero que en el futuro perdure el verdadero genio de entre los dos. Lo otro sería más marketing, humo. Que muy bueno vendiendo y buscando estrategias para una empresa con mucho potencial, pero de ahí a genio... más bien un tío con visión y cabeza dura para seguir adelante ante todos y pese a todos (lo mismo que le salió bien le podía haber salido mal... de hecho ya le salió una vez mal, por eso lo echaron la primera vez de apple)
#0 [ENG]
#4 Perdona, me fui a hacer otra cosa y ya no lo puedo editar. Administrador, please me puedes poner un ENG (Eng?
#5 Por mi no hay nada que perdonar, es para que no venga ningún tiquismiquis a tocarte la moral.
#5 Son 20 euros. Aunque la primera es gratis.
#7 Si tienes Meneame premium es gratis siempre.
#10 Yo por 20 euros os doy códigos promocionales de premium.
#10 #7 Yo estoy suscrito a la web de meneame el porno: esto lo tengo todo incluído: me dan casa en Benidorm y me invitan pronto a Panamá...me han dicho que están con los papeles ya!
Pues BASICamente, como estoy yo escribiendo un SDK entero sin tener ni puta idea...
Hablando un poco fuera de tema, gizmodo.es me aparece como caida desde hace tiempo ya.