Combien de temps et quel type de complexité aurait été impliqué dans l'écriture de Chris Sawyer la plupart des magnats des montagnes russes dans l'assembleur?

14

De cette question , j'ai une autre question sur ...
Combien de temps et quel type de complexité aurait été impliqué dans Chris Sawyer écrivant la plupart des magnats des montagnes russes dans l'assembleur?

Afin de préciser et de décomposer cette question, je suis intéressé par;

  1. Environ combien d'heures de travail (devinez) estimez-vous qu'il aurait fallu à Chris pour écrire le jeu lui-même? Ou bien, donnez un pourcentage approximatif du rapport des heures de codage des assembleurs à dire, en écrivant le tout en C / C ++.

  2. Les programmeurs qui connaissent bien l'assembleur y voient-ils une tâche trop complexe pour une abstraction de langage de si bas niveau? Mis à part les avantages de performance, est-ce juste une capacité naturelle bizarre que Chris possède, ou un ensemble de compétences digne d'être appris dans cette mesure? Je suis intéressé si les gens pensent que la complexité / performance vaut bien l'apprentissage de l'assembleur (afin d'écrire), ou est-ce que "ça vaut le coup" si vous avez beaucoup de compétences naturellement développées en assembleur (probablement en travaillant avec du matériel) / pilotes matériels / électronique / etc).

Type anonyme
la source
1
Aurait-il pu commencer par l'écrire en C, puis en changer des parties en assembleur au besoin pour les performances?
Jon Onstott
1
Ha, ha, ha, c'est comme une question de quelqu'un qui a lu mes anciens commentaires.
Mark C

Réponses:

12

De la lecture de sa bio approximative , cela ressemble à deux ans (début 1997 à fin 1998). Étant donné qu'il semble être une personne `` un projet à la fois '' et que l'ensemble d'outils et le calendrier ne sont pas parfaits pour le `` développement d'équipe '', je suppose que 24 programmeurs-mois.

À ce moment-là, il était un programmeur de jeux professionnel travaillant dans l'assemblage depuis 1983, donc je n'assimilerais pas «deux ans Chris» à «deux ans moi» de travail.

Étant donné que la plupart des jeux professionnels mettent environ 25 personnes pour se développer, une équipe de deux personnes pour un jeu leader de l'industrie est un accomplissement incroyable, prêtant foi aux paroles:

Dans ce cas, à quelle vitesse Rollercoaster Tycoon serait-il écrit si Chris avait utilisé C ou Java ou Javascript ou ...? Cela n'aurait probablement pas eu d'importance si ce n'est qu'il était peut-être un peu plus lent à utiliser un langage de niveau supérieur avec lequel il n'avait pas 14 ans d'expérience ...

Jay Beavers
la source
grands points, je pensais que ce pourrait être le cas.
Type anonyme
4

Si vous considérez C comme un peu plus qu'un assembleur "de haut niveau", et nous supposons que Chris n'a pas fait des optimisations folles à son code d'assemblage dans chaque routine, alors j'imagine en termes de% de temps plus long, alors il pourrait ne pas être beaucoup plus pour un programmeur d'assemblage qualifié.

L'assemblage se complique lorsque vous faites toutes ces optimisations folles (opérations de vectorisation, utilisation de jeux d'instructions spéciaux (SSE, etc.) twiddling de bits, etc.) que vous ne pouvez tout simplement pas faire à partir de C.Si vous faites ce genre de choses, alors le temps est en fait dans la boucle "tripoter ce bit, assembler, mesurer ... tripoter ce bit, assembler, mesurer ..." et non dans le codage proprement dit. Avec un bon assembleur de macros et un programmeur qualifié, l'écriture de l'assemblage n'est pas un énorme pas en avant par rapport à l'écriture de code C.

Pourtant, je n'aurais pas pu le faire! Je frissonne de penser à essayer d'initialiser DirectX directement en assembleur! ( Edit: Wikipedia me dit qu'il a écrit quelques parties en C pour "s'interfacer avec le système d'exploitation Windows" donc je suppose qu'il n'initialisait pas DirectX en assembleur alors ... ouf!)

Dean Harding
la source
Ouais, c'était le morceau que je ne pouvais pas comprendre au départ. Mais j'ai lu un peu l'utilisation de C pour DirectX. Merci pour l'info sur les optimisations qui est très intéressante.
Type anonyme
3

Steve Gibson, auteur de SpinRite, ShieldsUp! Est une autre personne connue pour avoir écrit de nombreux programmes Windows en assembleur. et d'autres utilitaires. Il parle de son amour du langage d'assemblage ici .

Randy Hyde (que j'avais l'habitude de connaître lorsque nous écrivions tous les deux le code assembleur 6502 pour l'Apple II) a un nouveau livre en ligne appelé Windows Programming in Assembly Language . Il est un grand partisan de l'utilisation de macros sophistiquées (y compris les constructions en boucle) pour rendre la programmation d'assemblage plus semblable à l'utilisation d'un langage de haut niveau. Sawyer a probablement utilisé une approche similaire pour être plus productif.

tcrosley
la source