title: 【デジタル奴隷制度】低水準言語書ける方が消えたら、テクニカルな世界がおしまい author: 凛 date: 2023-03-27 tags: jp,blog,linux,bsd,ソフトウェア,ハードウェア,ウエブ開発,c言語,アセンブリ言語 ---- ## 序論 ソフトウェアが複数の抽象化レイヤーを経由して成り立っている今日、基層で何が行われているかを把握する事は日に日に困難になっています。\ この抽象化が進む事で、ハードウェアがどのように機能するかを正確に理解する能力が失われています。\ これはシステムの崩壊と将来的な重大なインフラストラクチャーの損壊を招く可能性があります。 ## 現代のソフトウェアの問題点 ハードウェアが進化しているにも関わらず、新しいソフトウェアは以前よりも遅くなっています。\ Slackのようなソフトを開くだけでも、この現象を感じる事ができます。\ この問題は、デスクトップ環境で動作するウェブ技術を基盤としたソフトウェアが増えている事に起因しています。 このテクノロジーの変化により、抽象的な言語やフレームワークを学ぶプログラマーが増えています。\ 多くの人々は、現代のコンピュータハードウェアが十分に高速であるため、ハードウェアの制約やメモリ管理、CPU使用率などの要因を無視しても大丈夫だと主張しています。 しかし、この視点は深い理解と技術の精緻化が求められる場面でも適用されてしまっています。\ その結果、求められるスキルセットが低くなり、特定の知識が失われつつあります。 [2022年に最も人気のあった5つのプログラミング言語は次の通りです:](https://archive.md/7VKc1) 1. JavaScript 2. Python 3. Java 4. TypeScript 5. C# これらは全てガベージコレクションを利用する言語です。 [最高の給与を得る言語は、Go、Swift、JavaScript、C#、およびPHPです。](https://archive.md/aCwm7)\ これにより、ガベージコレクターなしの言語の習得への動機付けが減少しています。 ## ビジネス界と技術の無知 ビジネス界から見れば、特定のフレームワークの普及とプログラミングパラダイムの標準化は利点があります。\ 従業員の交代が容易であり、初期開発段階で経験豊富なプログラマーを雇い、メンテナンス段階で低賃金のメンテナに置き換える事が可能です。 しかし、このアプローチには短所もあります。\ フレームワークのトレンドが頻繁に変わり、新しいフレームワークの学習を優先する事で、基本的な知識が疎かになり、レガシーシステムの維持が困難になっています。 ## 技術の理解が失われる危険 このパターンが続くと、私たちのインフラストラクチャーがどのように機能するのかを理解する人がいなくなり、徐々に劣化して崩壊する時代が訪れるかもしれません。\ これはテキサス・インスツルメンツ社が不良品プロセッサの出荷を開始した事例で示された現象です。\ この時、設計者が会社を去り、新しいスタッフがプロセッサの製造に必要な深い知識を持たなくなった事が原因でした。 ## ソフトウェアだけではない 短期間のブートキャンプで十分なプログラミングスキルを身に付ける事ができるという事実は問題を示しています。\ これは、機械の動作に関する深い理解が少数の人々に限られている事を意味しています。\ プログラマーがハードウェアについて知識を持たなくても仕事ができる環境では、多くの人がこの知識を深めようとはしません。\ この事が、コードとハードウェアの相互作用を適切に計画して考慮する事の欠如につながっています。 ## 適切な解決策の設計 多くのソフトウェアは特定の思想に基づいて作成されており、これが問題を引き起こす原因となっています。\ このようなアプローチは、独断的で、事前に定義されたコアアイデアに固執する事で、重大な問題を引き起こす可能性があります。\ そして、これらの制約フレームワークに依存する事で、真の問題解決方法への理解が欠けてしまいます。 ## データの劣化は避けられない デジタルデータの劣化というデジタルダークエイジが迫っていると言われています。\ この現象は避けられなく、歴史は知識の喪失が急速にも、またはゆっくりとも起こり得る事を示しています。\ 自然災害や技術の失敗、例えば大規模な太陽フレアやEMP攻撃によるデータ消去など、多くの要因がこれを引き起こす可能性があります。\ これに対処するには、技術の基本的な知識を持つ事が不可欠です。 ## 熟練にはトレードオフが存在する プログラミングの熟練は重要ですが、それにはコストが伴います。\ 時間と努力が必要であり、現在のテクノロジーのトレンドは抽象化の方向へ進んでいます。\ 熟練したプログラマーは今後も重要であり、システムの機能不全を解消するために求められるでしょう。 ## 結論 知識は易逝であり、デジタルデータも例外ではありません。\ 真にプログラミングをマスターするには、ハードウェア、ランタイム環境、そして低レベル言語の基本を理解する必要があります。\ アセンブリ言語を学び、アーキテクチャの仕様を研究する事で、システムの高速化に貢献できます。\ 時間が経つにつれて、これらの知識はさらに重要になるでしょう。\ 抽象的なトランプタワーが崩壊するまでは、時間と複雑さの問題です。 以上