これは、主に私が使用したアセンブラー、主にMASM、NASM、および(程度は低いが)TASMに基づいています。TASMの後のバージョンのいくつかには、オブジェクト指向をサポートする機能がありました(ありましたか?)が、私はそれらをあまり使用しておらず、それらについてコメントしようとはしていません。
まず、ほとんどの言語は、少なくともややツリーのような構造に移行しています。オブジェクト指向であろうとオブジェクトベースであろうと、正確に何であろうと、システムの異なる部分間の関係についてはかなり定義されています。また、システムの一部を偶発的な「調整」以外の部分から「保護」することもかなりあります(保護は通常、必要に応じてバイパスできますが)。対照的に、アセンブリ言語は比較的「フラット」です。システムのさまざまな部分のコード(およびデータ)間の関係のほとんどは、主にドキュメントによって、あまり命名されていない命名規則によって確立されます。
この結果、多くの場合、理想よりもはるかに緊密にコードを結合する方がはるかに簡単です。最初にアセンブリ言語の選択を促した要件(より高いパフォーマンス、より小さなサイズなど)も、多くの場合、これに報います-承認済みのインターフェイスをバイパスすることにより、多くの場合、より小さく、より高速なコードを取得できます(通常はそれほど多くありませんが)あらゆる次元でより良い)。言語とツール自体は、あなたがすること(良いことも悪いことも)を制限するためにはるかに少ないです。質的に異なるとは言いませんが、量的には違います。つまり、管理者はどちらの方法でも問題を防ぐために努力する必要がありますが、アセンブリ言語の場合は、一般に、より多くの(そしてより厳しい)ガイドラインが必要です許容できます。
これを緩和するには、主に、より慎重なガイドライン、経験豊富な担当者からのより多くのガイダンス、およびより具体的で慎重に実施される命名規則の問題があります。
スタッフの配置は問題です。しかし、私が遭遇した問題は、主に私が期待したものではありませんでした。アセンブリ言語のコードに飛び込んで喜んでいる、「ファイタージョック」性格の人を見つけるのはかなり簡単でした。アセンブリ言語を使用した経験がほとんどないにもかかわらず、ほとんどはかなり合理的な仕事をしました。
私が遭遇した難しさは、プロジェクトを少なくともある程度の管理下に置くことができ、コードを合理的に維持するために必要なガイドラインを提供する(そして主に強制する)言語に完全に慣れていない上級者を見つけることでした保守可能で理解しやすい。
振り返ってみると、私はその点で最大の問題のいくつかを引き起こした/引き起こした可能性があります。私には2つの問題の原因があります。最初に、私が考えているプロジェクトの時までに、私はかなり長い間、主に高レベル言語でコーディングし、アセンブリ言語のみを使用していました最後の手段として。そのため、私がそれを使用したとき、パフォーマンスを得るためのほぼすべての可能なトリックは、公正なゲームであるだけでなく、期待されていました。第二に、完全に(または主に)アセンブリ言語で書かれたいくつかのシステムで作業していたとき、それはかなり鉄骨のプロジェクトマネージャーの下にありました。当時私は比較的若く、率直に言って彼らが物事を実行する方法に腹を立てていたので、反対をする傾向がありました。振り返ってみると、彼らが本当にやっていることは重要であり、彼らが古くて柔軟性に欠けるという理由だけで行われたのではありません(当時、私は物事をどのように見ていたかは確かです)。