魔法の層

十分に洗練された技術は、魔法と見分けがつきません。

アーサー・クラーク




プログラマーであり、コンピューターに興味があるだけの人として、私は彼らがどのように機能するかについて先駆者よりもよく知っています。 私のことをあまり知らない人がコンピューターをどのように使っているかを見るのは、私にとって常に面白いです。 彼らの多くにとって、プロセスは次のとおりです。彼らは何かをクリックし、コンピューターは不思議な魔法のようなことをし、結果が画面に表示されます。



しかし、ある段階でテクノロジー全体に精通している人でさえ、平等な成功を収めて起こっていることは魔法である可能性があることに気付くかもしれません。 次のステップは、知識のないユーザーとクリックするボタンの後、本当に理解していないコードを入力(またはコピー)し、何らかの形で機能する悪い開発者と見なすことができます。 彼らの魔法の層は、少なくとも、彼らはあなたがコードを書く必要があることを知っているが、その本質に浸透していない人よりも薄いです。 それらの魔法の層には、関数呼び出し、言語構文、およびコードの意味が含まれています。 彼らは個々の断片を理解することができますが、プログラム全体はそれらの謎のままです。



次の段階は、潜在的な能力はあるが必要な知識をまだ持っていない初心者開発者向けです。 彼らはコードの大部分がどのように機能するかを理解し、関数を構造化する方法とオブジェクトを使用する(または使用しない)タイミングを知っており、プログラムを最初から作成できますが、ライブラリ関数またはコンパイラとして何が起こっているのかまだ理解していない可能性がありますコードからプログラムを作成します。



プログラマーが熟練するにつれて、魔法の層は薄くなります。 ライブラリ関数は、システムコールを除き、自分で作成する関数になります。 コンパイラーがコードを読み取り、プロセッサーによって実行されるマシンコードに変換することがわかりました。 マジックはコードから追い出され、コンパイラとオペレーティングシステムのニュアンスに隠れています。



最後に、開発者がこれらの最後の魔法の要塞を破壊するとき、彼は全体像、つまりどれだけのソフトウェアが十分であるかを見ます。 しかし、これで話は終わりではありません! マジックは、ソフトウェアから追放されますが、ハードウェアは次のとおりです。これらのシステムコールがディスクに書き込まれたデータに変換されていますか? プロセッサーは、アセンブラー命令の処理方法をどのように知るのですか? おめでとうございます、あなたの魔法はハードウェアレベルに戻りました。



翻訳者から




この翻訳は、 以前の記事の一種の言い訳です。この記事では、C ++での文字列と数値の低レベル表現を使用して、魔法の簡単なトリックを誇らしげに呼び出しています。 このメモはやや不完全なように思えます。少なくとも2つの結論が得られました。



ロマンチックな結論:私自身の魔法の層は十分に厚く、これはそれほど悪くないようです-より魔法の発見が先にあります:-)



結論は懐疑的です:魔法との戦いはさらに続く可能性があります:技術の物理的原理、電磁現象の性質、物質の構造...彼は単に文明のすべての成果に関する情報へのアクセスを与えられています。 これは彼が人生で学べる以上のことなので、彼はもはや危険ではありません-彼は他に何もしません。 したがって、この場合には、プログラマは魔法を露出させるための無能と過度の熱意の区別を維持することが重要です。



All Articles