Quanto tempo e quale tipo di complessità sarebbe stata coinvolta in Chris Sawyer scrivendo la maggior parte del magnate delle montagne russe in assemblatore?

14

Da questa domanda , ho un'altra domanda su ...
Quanto tempo e quale tipo di complessità sarebbe stato coinvolto in Chris Sawyer scrivendo la maggior parte del magnate delle montagne russe in assemblatore?

Per specificare e interrompere questa domanda, sono interessato a;

  1. Approssimativamente quante ore di lavoro (immagino) pensi che ci avrebbe messo Chris a scrivere il gioco da solo? Oppure, in alternativa, fornire una percentuale approssimativa del rapporto tra le ore di codifica degli assemblatori, scrivendo il tutto in C / C ++.

  2. I programmatori che conoscono l'assemblatore considerano questo come un compito troppo complesso per un'astrazione linguistica di così basso livello? A parte i vantaggi prestazionali, questa è solo un'abilità naturale bizzarra che Chris ha, o uno skillset degno di imparare fino a quel punto? Sono interessato se la gente pensa che la complessità / prestazioni valga la pena di imparare bene l'assemblatore (per scrivere), o è solo "ne vale la pena" se hai un sacco di abilità naturalmente sviluppate nell'assemblatore (presumibilmente dal lavorare con l'hardware / driver hardware / elettronica / ecc.)

posta Anonymous Type 18.11.2010 - 23:03
fonte

3 risposte

12

Leggendo la sua rozza biografia , sembra che siano passati due anni (dall'inizio del 1997 alla fine del 1998). Dato che sembra essere una persona "un progetto alla volta" e il set di strumenti e il lasso di tempo non sono grandi per lo "sviluppo di squadra", assumerei un periodo di 24 mesi-programmatore.

A quel punto era stato un programmatore di videogiochi professionista che lavorava in assemblaggio dal 1983, quindi non avrei equiparato "due anni di Chris" a "due anni di lavoro".

Dato che la maggior parte dei giochi professionali impiega circa 25 anni per sviluppare una squadra, gli anni di due persone per un gioco leader del settore sono un risultato straordinario, che conferisce fede ai detti:

Quindi in questo caso quanto sarebbe più veloce scrivere Rollercoaster Tycoon se Chris avesse usato C o Java o Javascript o ...? Probabilmente non sarebbe stato importante se non fosse stato un po 'più lento usando un linguaggio di livello superiore che non aveva 14 anni di esperienza con ...

    
risposta data 19.11.2010 - 00:02
fonte
4

Se pensi di C come poco più di un assemblatore di "alto livello", e facciamo l'ipotesi che Chris non stia facendo pazze ottimizzazioni al suo codice assembly in ogni routine, allora vorrei immagina in termini di% di tempo in più, quindi potrebbe non essere molto di più per un abile programmatore di assemblaggi.

L'assemblaggio si complica quando fai tutte quelle pazze ottimizzazioni (operazioni di vettorizzazione, uso di set di istruzioni speciali (SSE, ecc.) che non puoi fare da C. Se stai facendo quella roba, quindi il tempo è in realtà nel "fiddle questo bit, assemblare, misurare ... armare questo bit, assemblare, misurare ..." loop e non nella codifica attuale. Con un buon assemblatore di macro e un abile programmatore, quindi scrivere assembly non è un enorme passo indietro dalla scrittura del codice C.

Ancora, non sarei stato in grado di farlo! Rabbrividisco a pensare di provare a inizializzare DirectX direttamente in assemblea! ( Modifica: Wikipedia mi dice che ha scritto alcune parti in C per "interfacciare con il sistema operativo Windows "quindi suppongo che non stava inizializzando DirectX in assembly quindi ... phew!)

    
risposta data 19.11.2010 - 00:38
fonte
3

Un'altra persona conosciuta per aver scritto un sacco di programmi Windows in assembler è Steve Gibson, autore di SpinRite, ShieldsUp! e altre utilità. Discute del suo amore per il linguaggio assembly qui .

Randy Hyde (che conoscevo già da tempo quando stavamo scrivendo il codice assembly 6502 per Apple II) ha un nuovo libro online chiamato Programmazione Windows in linguaggio assembly . È un grande sostenitore dell'uso di macro fantasiose (compresi i costrutti di looping) per rendere la programmazione di assiemi più simile all'uso di un linguaggio di alto livello. Sawyer probabilmente ha usato un approccio simile per essere più produttivo.

    
risposta data 19.11.2010 - 01:43
fonte