この質問から 、私は別の質問をしています...
アセンブラでジェットコースターの大物をクリス・ソーヤーが書くのにどれくらいの期間、どのような種類の複雑さが関与していたでしょうか?
この質問を特定して分析するために、私は興味を持っています。
クリスが一人でゲームを書くのにおよそ何時間(推測)かかると思いますか?または、アセンブラーのコーディング時間の比率のおおよそのパーセンテージをC/C++で記述してください。
アセンブラーをよく知っているプログラマーは、これをそのような低レベルの言語抽象化のための過度に複雑なタスクと考えていますか?パフォーマンスの利点は別として、これはクリスが持っている奇抜な自然の能力、またはその程度まで学ぶ価値のあるスキルセットですか?人々が複雑さ/パフォーマンスのことをアセンブラーを(学習するために)十分に学ぶ価値があると思うか、または(おそらくハードウェアでの作業から)アセンブラーに自然に発達したスキルがたくさんある場合にのみ「価値がある」と私は興味があります/ hardware drivers/electronics/etc)。
彼の 大まかな経歴 を読むと、2年(1997年初頭から1998年後半)のように見えます。彼は「一度に1つのプロジェクト」の人であり、ツールセットとタイムフレームが「チーム開発」には適していないことを考えると、プログラマーの月数は24か月と想定します。
その時点で彼は1983年からアセンブリで働いているプロのゲームプログラマーであったので、私は「2クリス年」を「2私年」の仕事と同一視しませんでした。
ほとんどのプロ向けゲームは、チームが開発するのに約25人年かかることを考えると、業界をリードするゲームで2人年かかるのは驚くべき成果であり、次のことわざに信条を与えています。
したがって、この場合、ChrisがCまたはJavaまたはJavascriptまたは...を使用した場合、Rollercoaster Tycoonはどれだけ速く書かれるでしょうか?おそらく、彼がそうであったという事実以外は問題ではなかっただろう14年の経験がなかった高レベルの言語を使用すると少し遅くなります...
Cを「高レベル」アセンブラに過ぎないと考え、クリスがeveryルーチンで彼のアセンブリコードに狂った最適化を行わなかったと仮定すると、時間の面で%長くなると思いますが、熟練したアセンブリプログラマにとってはそれほど長くはないかもしれません。
狂った最適化(ベクトル化演算、特別な命令セット(SSEなど)を活用するなど)をすべてCから行うことができない場合、アセンブリは複雑になります。そのようなことをしている場合は、その後、時間は実際には「このビットをいじる、アセンブル、測定...このビットをいじる、アセンブル、測定...」ループにあり、実際のコーディングではありません。優れたマクロアセンブラーと熟練したプログラマーがいる場合、Assemblyの記述は、Cコードの記述から巨大なステップダウンではありません。
それでも、私はそれを行うことができなかっただろう!アセンブリで直接DirectXを初期化しようとすることを考えると身震いします。 (編集:ウィキペディアが教えてくれます 彼はCで「Windowsオペレーティングシステムとのインターフェース」のためにいくつかの部分を書いたので、私は推測するそのとき、彼はアセンブリでDirectXを初期化していなかった...ふphe!)
アセンブラーで多くのWindowsプログラムを書くことで知られているもう1人は、SpinRiteの作者であるShieldsUpのSteve Gibsonです。およびその他のユーティリティ。彼はアセンブリ言語への愛について話し合っています ここ 。
Randy Hyde(私が両方とも6502のApple II)のアセンブリコードを書いていたときのことを知っていました)には、 というWindowsオンラインプログラミングの新しいオンラインブックがあります。アセンブリ言語 彼は、高級プログラミング言語(ループ構造を含む)を使用して、アセンブリプログラミングを高水準言語を使用するようにすることを強く支持しています。