¿Cuánto tiempo y qué tipo de complejidad habría involucrado el hecho de que Chris Sawyer escribiera la mayor parte del magnate de la montaña rusa en un ensamblador?

14

De esta pregunta , tengo otra pregunta sobre ...
¿Cuánto tiempo y qué tipo de complejidad habría estado involucrada en que Chris Sawyer escribiera la mayor parte del magnate de la montaña rusa en un ensamblador?

Para poder especificar y desglosar esta pregunta, me interesa;

  1. Aproximadamente, ¿cuántas horas de trabajo (supongo) estimas que le habría costado a Chris escribir el juego solo? O alternativamente, indique un porcentaje aproximado de la proporción de horas de codificación del ensamblador, por ejemplo, escribiendo todo en C / C ++.

  2. ¿Los programadores que conocen bien al ensamblador piensan que esto es una tarea demasiado compleja para una abstracción de lenguaje de tan bajo nivel? ¿Además de los beneficios de rendimiento, esta es solo una extraña habilidad natural que tiene Chris, o un conjunto de habilidades dignas de aprender en esa medida? Me interesa si la gente piensa que la complejidad / el rendimiento vale la pena aprender el ensamblador tan bien (para escribir), o solo "vale la pena" si tiene muchas habilidades desarrolladas naturalmente en ensamblador (probablemente de trabajar con hardware / controladores de hardware / electrónica / etc).

pregunta Anonymous Type 18.11.2010 - 23:03

3 respuestas

12

Después de leer su biografía resumida , parecen dos años (desde principios de 1997 hasta finales de 1998). Dado que parece ser una persona de "un proyecto a la vez" y que el conjunto de herramientas y el calendario no son excelentes para el "desarrollo de equipos", supongo que sería un programador directo de 24 meses.

En ese momento, había sido programador profesional de juegos trabajando en ensamblaje desde 1983, por lo que no compararía "dos años de Chris" con "dos años de trabajo".

Dado que la mayoría de los juegos profesionales toman alrededor de 25 años para que un equipo los desarrolle, los años de dos personas para un juego líder en la industria es un logro increíble, que confiere credibilidad a los dichos:

Entonces, en este caso, ¿cuánto más rápido se escribiría Rollercoaster Tycoon si Chris hubiera usado C o Java o Javascript o ...? Probablemente no habría importado más que el hecho de que él haya sido un poco más lento usando un lenguaje de nivel superior que no tenía 14 años de experiencia con ...

    
respondido por el Jay Beavers 19.11.2010 - 00:02
4

Si piensa que C es poco más que un ensamblador de "alto nivel", y suponemos que Chris no estaba haciendo optimizaciones locas de su código de ensamblaje en cada rutina, entonces lo haría Imagínese en términos de% de tiempo más largo, entonces podría no ser mucho más para un programador de ensamblajes experto.

El ensamblaje se complica cuando estás realizando todas esas optimizaciones locas (operaciones de vectorización, uso de conjuntos de instrucciones especiales (SSE, etc.), juegos de bits, etc.) que simplemente no puedes hacer desde C. Si estás haciendo esa cosa, entonces el tiempo está realmente en el bucle "tocar este bit, ensamblar, medir ... tocar este bit, ensamblar, medir ..." y no en la codificación real. Con un buen ensamblador de macros y un programador experto, luego escribir ensamblaje no es un enorme a un lado de escribir el código C.

Aún así, ¡no hubiera podido hacerlo! ¡Me estremezco al pensar en intentar inicializar DirectX directamente en ensamblaje! ( Editar: Wikipedia me dice que escribió algunas partes en C para "interactuar con el sistema operativo Windows "así que supongo que no estaba inicializando DirectX en el ensamblaje, entonces ... ¡uf!"

    
respondido por el Dean Harding 19.11.2010 - 00:38
3

Otra persona conocida por escribir muchos programas de Windows en ensamblador es Steve Gibson, autor de SpinRite, ShieldsUp! y otras utilidades. Habla sobre su amor por el lenguaje ensamblador aquí .

Randy Hyde (a quien conocía cuando estábamos escribiendo el código de ensamblaje 6502 para Apple II) tiene un nuevo libro en línea llamado Programación de Windows en lenguaje ensamblador . Es un gran defensor del uso de macros sofisticadas (incluidas las construcciones en bucle) para hacer que la programación de ensamblajes sea más como usar un lenguaje de alto nivel. Sawyer probablemente usó un enfoque similar para ser más productivo.

    
respondido por el tcrosley 19.11.2010 - 01:43

Lea otras preguntas en las etiquetas