2011-12-12 10 views
16

私は再学習しますC;それは何年も経っており、慣れ親しんだニュアンスは時間が経つと失われています。「K&R C」はまだ適用可能ですか

私はもともとしかし、私は今、多くの人々がK & R.

でチーフ例を批判レベリング参照K & R.からCを学んだhttp://c.learncodethehardway.org/book/learn-c-the-hard-waych55.html#x61-27200055

トップの理由は、それがコードだということであるように思われますスタイルは過度に簡潔であり、慣行はより大きなプログラムには適用されず、メモリリークを引き起こすか、共有ネットワークアクセス可能なシステムでの攻撃の対象となります。

人々はこれらの批判が公正であると感じますか?彼らは誰かに教えてもらえませんかC?もしそうなら、人々は「近代的な」C本を推奨できますか?

+3

ほとんどの場合、K&Rは言語が標準化される前のものであり、コンピューターの風景がかなり違って見えるからです。それは素敵な2番目の読書かもしれませんが、おそらく、適切で現代的なCを学ぶためのより良い本があります。 –

+1

それは主観的な理由で閉会に投票しましたが、ちょうど参考になりました。最初の批評は、無効なパラメータを渡すと問題が発生します "。それが「欠陥」だと思われる場合は、Javaに切り替える必要があります。 – Jon

+0

@Kerrek SB - K&R 2nd。 Ed。標準C89をカバーしています。 –

答えて

15

第2版について話している限り、K & Rはまだ非常にとなっています。

実際、私はまだC言語で、学習と参考の両方のための最高の単行本です。

しかし、Harbison & Steeleの「C:A Reference Manual」のコピーを入手する必要があります。それはC上で最も良い現在のリファレンスであり、第5版はC99をカバーしています。可能であれば使用するべきです。

また、あなたの後ろに少しCがあると、Peter van der Lindenの "Expert C Programming"を読むことを強くおすすめします。

+0

C11はどうですか?そこに本はありませんか? – Pacerier

+0

さて、K&R第2版まだC11に適用されますが、いいえ、私はC11をカバーする本は認識していません。Harbison&Steeleの「C:Aリファレンスマニュアル(第5版)」は、私が知っている最新のCの本ですが、C99のみをカバーしています。私はまだ第六Edを望んでいる。 –

+0

Wikipediaは[FreeBSDとOpenBSDのように、FreeBSDやOpenBSDと同様に、K&RスタイルのCコードをゆっくりと、より現代的なANSI同等のものに置き換えています。これは、BSD Linuxの実装のためのカーネルコードの多くがC89に先立つことを意味しますか? –

2

これはまだ関連性があり、言語を学ぶことに関しても非常に有用です。言語を学ぶには、コードの可読性などを助ける新しいプラクティスやスタイルを実装する必要はありません。

例えば、自己記述型コードのアイデアは、冗長な変数と関数名を使用して、関数または変数。 K & Rは明らかにこれに反対しています。それはあなたがK & RからC言語を学ぶことができないということを意味するものではなく、将来あなたが決める命名規則に基づいてあなたのスタイルを調整/更新する必要があるということを意味します。

"Expert C Programming"(gregjで述べたように)を十分にお勧めできません。

+0

Cとアセンブラから移動した後は、主にC++とJavaを使用しています。そのため、一般的な優れたプラクティスを適用することができます。あなたはC固有の良い実践のための参考資料を提案することができますか、gregjとあなたがそれをカバーする本はありますか? – retrodev

+0

先生、私は混乱していますここでは、私はネイティブの英語のスピーカーではありません、 "私は十分に本を推薦することはできません。つまり、エキスパートCプログラミングをお勧めしますか? –

+0

@SurajJainはい、その言葉は私にあなたに本を推薦するのに十分な方法がないことを意味します。 –

関連する問題