コンパイラのソースコードを読むのは良い考えですか?[閉まっている]


8

私はコンピュータサイエンスを専攻している大学のジュニアです。たくさんのコードを書くだけでなく、他の人が書いたソースコードを読み始めて、コーディングスキルを向上させ、さまざまな方法でより良い方法や異なる方法を学びたいと思っています。C ++コンパイラのコードの重要な部分のいくつかを読み始めるべきだと思っていました。これは私が2つのことをするのに役立つと思います:

  • コンパイラは難しいので、コードはこの難しい問題の解決策を表すので、エレガントなコーディングプラクティスを学びます。
  • これは、最もよく使用されている言語のコンパイル方法、詳細、各エラーの生成方法、コードの解析方法についても理解し、言語の仕様を理解するのに役立ちます。

これは良いアイデアだと思いますか?


2
ほとんどのC ++コンパイラーは非常に複雑で(C ++の解析は非常に複雑であるため)、最高のコード品質を備えていないので、他のコンパイラー/インタープリターリソースを探すほうがよい
ラチェットフリーク

3
なぜこれが投票されたのですか?いい質問だと思います。
ロックラン2013年

1
@LachlanB投票はトピック外だったと言っています。そうは思いません。
Reactgular 2013年

1
コードを読みたいという称賛。ほとんどのプログラマーは興味がありません。
tcrosley 2013年

1
すべての答えが「いいえ、それをしないでください」と言っていることに本当に驚いています。私はそれらの答えにこれ以上同意することができませんでした。ソースコードを読むことに加えて、解析アルゴリズムとコンパイラアーキテクチャを説明する学術論文を読むことを楽しむことができます。良い質問と幸運を祈ります。

回答:


6

あなたの投稿から、C ++についてすでにどれだけ知っているかを言うのは難しいですが、私はコンパイラのコードを読むことから始めません。私はまず良い本で時間を過ごします。非常に短いリスト:


4

これは良いアイデアだと思いますか?

それが良いアイデアかもしれない唯一の理由は、ほとんどのコード、頻繁に使用される「良い」コード(特に頻繁に使用される実際には良いコード)が完全に洗練されていないことを経験から知ることができるようにするためです。

ああ、それは、コードが仕様のように見えることはほとんどない、および/または実際にはほとんどコードが仕様に従っていない方法についての良い学習経験を証明するはずです。

そしておそらくあなたはあなたがどれだけ学ぶ必要があるかを学ぶことができます。

しかし、いいえ、私はこれが良い考えだとは思いません-あなたがそれから得るかもしれない理由のためでさえ(そしてあなたがそれから得るかもしれないと思う理由のために間違いなく)。


2

いいえ、ほとんど利益がないので、それは良い考えではありません。コンパイラを専門とする場合は、コンパイラクラスを使用してドラゴンブックを読むことをお勧めします。C ++を専門とする場合は、標準を購入して読んでください。これらは、コンパイラーをリバースエンジニアリングするよりもエンジニアリングスキルを高めます。

純粋なプログラミングスキルについては、パイクとカーニハンによる「プログラミングの実践」をお勧めします。


1

コンパイラー・コードは実に複雑なので、私はコンパイラー・コードを読むことから始めません。C ++プロジェクトを検索する必要があります(コードを読み取るには、プロジェクトをビルドし、変更を加えます)。

wwww.github.com
www.codeplex.com
code.google.com

また、お読みください:Bjarne StroustrupによるC ++プログラミング言語


1
これには少しリスクがあります...良いC ++よりも悪いC ++の方がずっと多いのです。
Daniel Gratzer 2013年

@jozefgそれはすべての言語に当てはまります
Harrison Brock

1
私の発言の意味が実際に変わることはありません。オープンソースコードをランダムに検索することは、ベストプラクティスを見つけるための良い方法ではありません。よく知られているプロジェクトは異なる場合があります。
Daniel Gratzer 2013年

0

コメントを含まない可能性が高いソースコードを読み取る代わりに。良いC ++の書き方に関する本を読んでみてください。

与えるスコット・マイヤーのブックに試して。彼のEffective C ++の本が気に入ると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.