K&R "Cプログラミング言語(第2版)" はANSI Cをカバーしていますが、私が始めている別の本です( Stephen G. Kochan "Programming in C" )は、C99を使用すると言っています。
私はC#/ JavaScript/Python/PHP/Javaのバックグラウンドから来て、私のスキルを完成させようとしています。
現在GCCを使用していますが、Clangに興味があります。新規および既存のコードでより多く使用されているバージョンはどれですか?それは重要ですか、それとも両方を学ぶべきですか?
最初にC89を学び、次にC89とC99の違いをすべて学びます。
両方をカバーする良い本は Cプログラミング:現代のアプローチ です。
C89はもっと慣れると思います。 GNUそれを使用し、その後 ほとんどのコンパイラはC99もサポートしていません (完全)。GCCはC99を部分的にしかサポートしていません。私自身、使用するC99機能は変数のみです長さの配列と単一行のコメント。最大限の移植性が必要な場合は、プロジェクトにC89を選択しますが、少なくとも C99の機能 に注意することが重要です。
C言語標準 と、コンパイラーが提供する特定の拡張機能を混乱させていると思います。
標準に関しては、実行中のコードを生成するために使用できる最新のものを学びます。
コンパイラーに関しては、できるだけ長く拡張機能から離れるようにします。高度に標準に準拠したモードでコンパイルすることを検討してください(例:-pedantic
for gcc
およびclang
)。これにより、コードの移植性が高まり、言語の理解が深まります。
ある面では、それは重要ではありません。プログラミングのキャリアを築くと、C、C89、C99、C++、C#、Java(Cの準バリアントとして)、およびObjective- C(別の準バリアントとして)私の考えでは、目標は、まず自分を有能なプログラマーとして確立することです。それから、Fortran、Cobol、Basicなどのどの言語でも、読みやすく理解しやすくなります。したがって、簡単に適応できます。
その意味で、他の言語が登場したときにそれらに適応する準備ができている限り、それらの言語のいずれかに早く焦点を当てることは問題ありません。
だから私はこう言います:これを学術研究の焦点にしたい場合は、今日使用されている最も人気のあるstandard Cバリアントを選択し、標準セットに厳密に従っている間に学習してください。その後、選択したものとの違いを分析します。
これがプロの焦点である場合は、C#とObjective-Cを学び、コードを保守している場合を除いて、結局はそれらを両方とも冷たくしたいと思うでしょう。また、あなたが賢い専門家であれば、PHP、Python、Ruby、Visual Basic(そうですね、そうです)などなどの専門家にもなります。
C++のCサブセットを使用します。初期化および使用される場所の近くで変数を定義できることは、Cに変数のリストを最初に宣言させることよりも優れています。