すべての人への挨拶🙂今週私はプログラミングに関するいくつかの本を読んで非常に楽しまれてきました、真実はプログラミングを学ぶための最良の方法は常に本、記事、チュートリアル、ガイド(私のものを含む)を見つけることですそれらを主題に関する実際の本と比較するときのベンチマーク。 今、私たちは「本物の」本が何であるかを定義する必要があります。なぜなら、すべての本が通常良いとは限らず、それらの多くは実際の価値よりも高く、時間を無駄にする可能性があるからです。
ここ数年、私が読んだ本のリストと私がお勧めできる本のリストはかなり異なっていますが、間違いなく私のお気に入りのいくつかの中で(順不同で):
- マットウォーカーによるCEH認定倫理的ハッカー。
- Pythonの始まり:Magnus LieHetlandによる初心者から専門家へ。
- ハッキング:ジョンエリクソンによる搾取の芸術。
- MassimoBanziによるArduino入門。
- キャメロン・ニューバムとビル・ローゼンブラットによるバッシュシェルの学習。
- アーノルド・ロビンズ、エルバート・ハンナ、リンダ・ラムによるviおよびvimエディターの学習。
- Greg Kroah-Hartman(Gentoo開発者も)による一言で言えばLinuxカーネル。
- イェンス・グステットによるモダンC
- クリス・アンリー、ジョン・ヘッスマン、フェリックス«FX»リンダー&ジェラルド・リカルテによるシェルコーダーのハンドブック。
- Brian W. Kernighan&Dennis M. Ritchie(Cの作成者)によるCプログラミング言語
- Richard Stallman、Roland Pesch、StanShebsなどによるGDBを使用したデバッグ。
- Linuxエクスポーズドのハッキング:Pete Herzog、MargaBarceló、Rick Tucker、Andrea Barisani(別の元Gentoo開発者)、Thomas Bader、Simon Biles、Colby Clark、Raoul Chiesa、PabloEndresを含むISECOM研究者の大規模なグループによるLinuxセキュリティの秘密とソリューション、Richard Feist、Andrea Ghirardini、Julian "HammerJammer" Ho、Marco Ivaldi、Dru Lavigne、Stephane Lo Presti、Christopher Low、Ty Miller、Armand Puccetti、他
- オペレーティングシステム:Dhananjay M.Dhamdhereによるコンセプトベースのアプローチ
- スコット・チャコンとベン・ストラウブによるプロ・ギット
- エキスパートCプログラミング:ピーターヴァンデルリンデンによる深い秘密。
私はこれらの本のそれぞれを高く評価することができましたが、今日はリストの最後の本からいくつかの節を取り上げます。これらの逸話の多くが私を魅了し、Cとプログラミングの複雑な秘密のいくつかをよりよく理解するのに役立ちました。一般的に。🙂
UnixとC
UNIXについて話すとき、歴史はこのシステムの起源と、今日までそのシステムとその派生物(Linuxを含む)の開発で最も使用されている言語の開発と絡み合っています。 そして不思議なことに、これらXNUMXつは「間違い」から生まれています。
マルトリックス これは、ベル研究所、ゼネラルエレクトリック、MIT自体が協力してオペレーティングシステムを作成したメガプロジェクトであり、システムには多くのエラーがあり、最も重要なパフォーマンス障害の1969つとして、システムが実質的に使用できなくなったとのことです。 XNUMX年について話しているので、当時のハードウェアは、システム自体を実行するために必要な量のソフトウェアをサポートできませんでした。
ベルのエンジニア数名がPDP-1970用のシンプルで高速かつ軽量なオペレーティングシステムの開発を始めたのは7年のことでした。 システム全体はで書かれていました アセンブラ と呼ばれていた UNIX のパロディーとして マルトリックス 彼はほんの少しのことをしたかったのですが、XNUMX番目が意味した途方もない無駄な仕事の代わりにそれらをうまくやりたいと思ったからです。 今、あなたは理由を理解することができます エポック 1月XNUMX日から 1970。 🙂私にとってはかなり奇妙な事実です。 当時はまだC自体の話はありませんでしたが、 新しいB リッチーのアイデアは、当時すでに使用されていたB言語から生まれたものです。
初期のC
何年にもわたって(1972-3)、新しい言語が形になり始めたときにCという用語が使用され始め、この頃に別の奇妙な事実が生まれました、多くのプログラマーとプログラマーのジョークは言います:
プログラマーは、あなたが0ではなく1から数え始めることを知っています。
まあ、これは完全に真実ではありません🙂これが今日までそのように考えられている本当の理由は、その作成時に、コンパイラの作成者にとって、を使用して配列を計算する方が簡単だったためです オフセット、これらは、原点から目的の目的までの距離を示します。そのため、次のようになります。
array[8]=2;
それは私たちにその要素を教えてくれます 9 要素2が格納されるメモリスペースに到達するために8ユニットが配列に追加されるため、配列の数は2として定義されます。Cの前は、Cのおかげで、多くの言語が1から数え始めましたが、現在はほとんどすべてが0で始まります🙂したがって、これがそうであるのは、プログラマーのせいではなく、コンパイラーの作成者のせいです。
ボーンシェル
これは、Cに直接関係していませんが、シェルプログラミングが非常に独特である理由を複数の人が理解するのに役立つトピックであり、知ることは確かに興味深いことです。 Steve Bourneは、そのシーズンにAlgol-68用のコンパイラを作成しました。これは、キー( {}
)は単語に置き換えられるため、Cでは次のように定義できます。
#define IF if(
#define THEN ){
#define ELSE }else{
#define FI };
これらはAlgolが理解していることのほんの一例ですが、今日シェルプログラミングに適用すると、シェルでプログラムに fi
それぞれについて if
🙂確かに興味深い。
読み始める
この本のすべての詳細をお話しすることはできません。特に、これらの多くは、事前の背景を理解する必要があるプログラミングトピックであるためですが、途中で見つけた興味深い逸話のいくつかを皆さんと共有したいと思いました🙂私はやることリストに載っている項目のいくつかに取り組む時間がありませんでした。なぜなら、これらの最後の数冊の本は単に私を捕らえ、私は毎日それらを楽しんでおり、とりわけそれらを完全に理解しようとしています。 あいさつとすぐに私はあなたとより多くのトピック、あいさつを共有することができるでしょう。
あなたの記事は私にとって非常に興味深いものでした。 どうもありがとうございました。
いつものように非常に興味深い。
非常に興味深い説明は良いです。
EXCELENTE
面白い !!! どうもありがとうございました。
multrics? multicsにはなりません(https://en.wikipedia.org/wiki/Multics)
1からのインデックスを持つ言語は悪魔の発明です...
興味深いメモ🙂歴史のある時点で、両方の用語が使用されたと思います:
https://www.landley.net/history/mirror/collate/unix.htm
そして明らかに90年代半ばに書かれたのと同じ本。
説明をありがとう🙂ご挨拶
wa、なんて奇妙なことだろう、あなたは私を疑わせた。私はExpert CProgrammingの「購入した」コピーを調べた。深い秘密とmulticsがやってくる。そのmultricsを聞くのは初めてだ。 好奇心が強い、それはトリックスウサギを少し思い出させます
ハハハは確かに好奇心が強いです、私は深い秘密の私の英語のコピーをチェックしました、そこにはMultricsも書かれています(あなたも私を疑わせたので)...多分それは時間の表現でした😛
よろしく
多大な貢献
興味深いことに、確かに、Multricsは誤植によるものです。そのオペレーティングシステムの元の名前はMulticsであり、Unixは元々Unicsと呼ばれ、その優れたオペレーティングシステムを正確に指しており、最終的には音声学によってUnixに変換されました。 、Unixの作者とみなされる人の名前だけを言及する必要がありました。 ケン・トンプソン、伝説によると、トンプソンとリッチーの両方がベル研究所のカフェテリアで彼らのプロジェクトについてコメントしていました。リッチーはトンプソンに、彼が書いた言語であるCプログラムでユニックスを書き直すことを提案しました...そして残りは、歴史です。 😉
ちなみに、以前はすべてのプログラムがマシンの命令で書かれていたため、ハードウェアに完全に依存していました。Cの革新は、プログラムの作成を容易にすることは別として、言語がハードウェアを実装するハードウェアから独立していることでした。プログラムがオペレーティングシステムに依存していないという意味で、コンパイラは何年も後にJavaを採用するという哲学であり、有名なJava仮想マシンが追加されています。
伝説の悪い点は、歴史をXNUMXつ以上の方法で歪めることです...そして、トンプソンとリッチーの間の既存の会話の事実のように、そうでないときに何かが起こると思わせることができます(私は歴史的および技術的なエラーにつながるため(CはUNIXより前ではありませんでした)...
そして60番目については...現実を歪める別の伝説、Cの前にB、A、パスカル、エイダ、アルゴル-1、PL / XNUMX、そして適切にプログラミング言語であったいくつかのものがあったので(アセンブリとは非常に異なります)プロセッサのハードウェアに依存するアーキテクチャによるその方言)Cはこの意味で「革新」しなかったので、他の言語にすでに存在するソリューションを採用しただけで、最終的にはこれらよりも速く、より良く普及しました...唯一の部分真実は、Javaは後で仮想マシンを作成するためにこの移植性の概念に基づいていたが、これをCに依存しただけでなく、他のモデルに従ったということです。そうでなければ、オブジェクトはありません- javaでの指向プログラミングパラダイム..。
あまり精通していない人なら誰でもそれを真実だと思って、このように起こったと信じることができるので、状況を明確にする必要があると感じました…挨拶🙂
いつものように、この記事は非常に興味深いものです。貢献に感謝します。