私は通常、SOや他の場所(インストラクター、本の著者など)で教導師に出くわし"This will cause alignment issues"
ます。
私はこれらすべての情報を知りたい relevant
プログラミング。今では通常、低レベルの本(たとえばコンピューターアーキテクチャの本)を見ると、低レベルであり、ソフトウェアデザインではなくコンピューターアーキテクチャが主な関心分野である人々を対象としています。
プログラマーに関連する低レベルのものを扱う本についての推奨事項はありますか?
私は通常、SOや他の場所(インストラクター、本の著者など)で教導師に出くわし"This will cause alignment issues"
ます。
私はこれらすべての情報を知りたい relevant
プログラミング。今では通常、低レベルの本(たとえばコンピューターアーキテクチャの本)を見ると、低レベルであり、ソフトウェアデザインではなくコンピューターアーキテクチャが主な関心分野である人々を対象としています。
プログラマーに関連する低レベルのものを扱う本についての推奨事項はありますか?
回答:
まさにこの目的のための素晴らしい本のセットは、Randall Hydeの「Write Great Code」シリーズ(Vol.1 Vol。2)です。高レベル言語で効率的なコードを書くために知っておくべきことの観点からの機械アーキテクチャの明示的な説明。
悲しいことに、マイクロプロセッサに相当する最新のものがわかりません。R。デュワーによるプログラマの見解。私が知っている最も近いのは、コンピューター構成と設計、第4版:David A. PattersonとJohn L. Hennessyによるハードウェア/ソフトウェアインターフェイスですが、低すぎるとは思わないでしょう。確かに、他の作品であるコンピューターアーキテクチャ、量的アプローチのためにそれを行うでしょう。
オンラインでは、このhttp://www-uxsup.csx.cam.ac.uk/courses/Architecture/course.pdfで、おそらくあなたが望むものが得られます。
ヘネシーとパターソンによる「コンピューターアーキテクチャ:定量的アプローチ」(Amazon link)は、プログラミングに直接関連するケーススタディが非常に多く、コンピューターアーキテクチャへの非常に強力かつ堅実なアプローチであると思います。
米国のいくつかの学部および大学院レベルのCSアーキテクチャコースでさまざまな範囲で使用されています。
また、しばらく前にArs Technicaで素晴らしいレビューを得ました。
これが、私が現在Computer Systemsクラスで使用しているものです。ComputerSystems:A Programmer's Perspective(2nd Edition)で、クラスが始まったばかりの間に、私はそれを見て、本当に気に入っています。
本の説明は次のとおりです。
コンピュータサイエンスやコンピュータエンジニアリングを勉強している学生はほとんどいないため、コンピュータシステムを構築する機会はありません。一方、ほとんどの学生は、ほぼ毎日コンピューターを使用してプログラムする必要があります。コンピューターシステム:プログラマーの視点は、これらのアイデアがアプリケーションプログラムの正確性、パフォーマンス、ユーティリティにどのように影響するかを示すことにより、コンピューターシステムの根底にある重要かつ永続的な概念を紹介します。テキストの実践的なアプローチ(包括的なラボセットを含む)は、学生が現代のコンピューターシステムの「内部」操作を理解し、コンパイラー、コンピューターアーキテクチャ、オペレーティングシステム、とネットワーキング。
大変な作業ですが、プログラミング言語の語用論はまさにあなたが探しているものかもしれません。この本は、理論的にはほとんど解析とコンパイル(プログラミングを本当に学びたい人にとって不可欠な知識)についてのものであり、その過程で、言語の概念がどのように低レベルで何が起こっているのかを学ぶことになります。さらに良いのは、一度に多くの言語でこれを学習し、異なる言語が実際にどのように機能するかをインテリジェントに比較および対比できるようになることです。
実際に教材を学習するのに数か月を費やすことができない限り、私はお勧めできません。それはあなたがただざっと見て、突然啓発されるようなものではありません。しかし、あなたが真剣なら、私はそれを強くお勧めします。
生物学では間違っているかもしれませんが、コンピューターサイエンスでは、「個体発生は系統発生を再現」しています。最初のコンピューター以来のコンピューターアーキテクチャーの歴史的概要は、プログラマーの観点からコンピューターアーキテクチャーの主題を理解するための素晴らしい方法です。コンピューターの設計は、ほとんどすべてが以前の設計の改良です。
つまり、コンピューターサイエンスで得られる理論的な「コンピューターアーキテクチャ」の本を念頭に置いた、完全に機能する古いシステム設計を勉強することをお勧めします。システム設計を本当に理解し、ソフトウェアを書くのに本当に素晴らしい仕事をするため。コンピュータシステムのアーキテクチャを直感的に理解するには、多くの概念を熟知する必要があります。コンピュータアーキテクチャのサイズと範囲がより管理しやすくなった頃からやり直すと、より良いコードを書くという目標を達成できるかもしれません。
(ちなみに、別の男が言及した「すばらしいコードを書く」本シリーズはすばらしく見えます。私は質問を編集して、以前は本から学習する際に投げかけたあらしを取り除いています。 )
コンピュータアーキテクチャを非常によく教えてくれるもの:
私はコンピューターを使い始めたので、人々に物事を説明しデモンストレーションするための出発点として、1980年代の機械を選ぶのが好きです。私は、コモドール64プログラマーのリファレンスガイドを使用して、プログラミングの知識とコンピューターアーキテクチャの知識が互いに出会う場所を人々に示しました。このような本と、おそらくコモドール64エミュレーターをPCで実行しているので、いろいろ試してみることができます。コンピューターアーキテクチャーの1980年代の古典的な化身のコンピューターシステムが実際にどのように構築されているかを学びます。私の見解では、物事を機能させる実世界の詳細を欠いている数十の理論モデルよりも、1つの具体的な例が出発点として適しています。レジスタとは何か、ALUとは何か、バスとは何か、そしてクロックとは何かを知っているなら、また、1980年代の古いデザインで使用されている信号システムは、Intelの「砂のようなブリッジアーキテクチャ」など、最近のことを理解するために知っておく必要のある基礎を提供します。歴史的には、オリジナルを振り返ってください。たとえば、ウィキペディアで「Von neumann」アーキテクチャを検索してください。
最初のポイントから数年先に進みます。オリジナルのIBM PCアーキテクチャー、8086アセンブリー言語、およびISAバスについて学んでください。これとその制限から、「Intel COre i7」CPUに含まれるもの、PCIおよびPCI-eバスの機能、およびそれらが必要な理由をより自然に理解することができます。今日のPCアーキテクチャには、元のIBM PC設計からの「二日酔い」が少し残っています。初期プログラム(オペレーティングシステム)のロード(ブートアップ)が2011年のPCで行われる方法は、元のIBM PCとそのROM BIOS、および元のPCのCMOS設定の遺産に依拠しています。
一部の組み込み非PCデバイスで動作する事前構成済みのLinuxビルドを使用および変更します。技術的なアーキテクチャだけでなく、いくつかの機能がある理由について、組み込みコンピュータアーキテクチャについて多くを学びます。安価に入手できる良い例 TS-7200ですは、素敵なPC-104(元のPCと同様にISAバス)を備えたである。PC-104(IBM PC / AT 80286時代のPCとピン互換性のある埋め込み16ビットISAバス)コンピューターは、モジュールがスタック可能であるため、ボード設計者ではない組み込みシステムを構築するのに最適な方法です。追加のIOまたは周辺機器が必要ですか?いくつかのモジュールを積み重ねるだけです。TS-7200には、ビッグエンディアンまたはリトルエンディアンを実行できる非x86コア(ARM9 CPU)があります。まだアーキテクチャ学習の旅で「エンディアン」に遭遇していないなら、それは