C99, K&R kitabını modası geçmiş mi? Eğer öyleyse onun yerine ne tavsiye edilir? [kapalı]


10

C99 bir süredir bizimle. K & R C Programlama Dili'nde olmayan birçok özellik sunar . Hiçbiri özellikle radikal değil. Ancak, bildirimleri ve kodu karıştırabilme gibi küçük özellikler bile kodun düzenlenme biçimini değiştirir.

Yine de K&R kitabını paha biçilmez bir referans olarak görüyor ve yazı stili gibi, C99 standardını dikkate alan daha iyi bir kitap var mı? K & R'nin üçüncü baskısını bir kalp atışı olarak satın alırdım, ama bunun olacağını sanmıyorum.


C99'un güncellenmiş İngilizce sürümü gerçekten yok mu? Bu kitabın Çekçe çevirisi C99 için güncellenmiştir.
Šimon Tóth

@Let_Me_Be K&R kitabının 2. baskısı 1988'de yayınlandı. Kitabın daha yeni bir İngilizce sürümü yok. Bu basım 1988'den itibaren ANSI C'yi kapsamaktadır.
Thomas Owens

Telif hakkı / telif hakkı nasıl ayarlandığından, K&R üçüncü bir baskı yazarak hiçbir şey yapmaz, bu yüzden henüz bir tane görmedik.
BlackJack

@BlackJack bu gerçek bir utanç.
Justin Dearing

2
@Let_Me_Be - Çekçe çevirinin İngilizceye çevrilmesi için ne kadar para var? :-) Bence biz K & R bir C99 sürümünü almak için tek yol olabilir ...
voretaq7

Yanıtlar:


8

Hala C'yi öğrenen ve Düz Prosedür C'yi (eksi nesneler) öğrenmek isteyen herkes için K&R'yi (ANSIfied ikinci baskısı) öneririm. K & R gerçekten bir programlama kitabında "Unix Mentality" olduğu için bir gün * NIX çekirdek kodunu hacklemek istiyorlarsa bu öneri iki katına çıkar.

C sözdiziminin temellerini kavradıktan ve makul bir stil fikrine sahip olduklarında, C99 özellikleri hakkında konuşan diğer referanslara tanıtabilir ve yazdıklarını düzenleme şekillerini değiştirebileceğini açıklayabilirsiniz, ancak sahip olacaklar ( genellikle) K&R ile başlamaktan iyi alışkanlıklar (ön beyanlar yapmak gibi) ve bu alışkanlıklara aykırı bir şey yapmanın nedeninin farkında olacaklar - bence bu şekilde daha iyi programcılar oluşturuyorsunuz.


3
Beyanı önceden yapmak aslında C89 stilinden miras kalan kötü bir uygulamadır, değişkenler ilk kullanılmadan hemen önce bildirilmelidir. Örneğin bu sorunun cevabına
Étienne

2
@ Étienne "Önde" demek istediğim "Değişkenlerin tümü, kullanılacakları kapsam dahilinde mümkün olduğunca erken bildirilmelidir." temel olarak diğer cevabın savunucusudur (veya en azından basitleştirilmiş örneklerinde gösterilmektedir). Bu cevabın ne olduğunu savunduğumu onaylıyorum, ancak yeni programcıların "Oh drat, bir {counter, temp değişkeni vb. kötü bir şeydir, çünkü böyle yapmak okunabilirliği diğer cevaplara işaret eder (en azından IMHO)
voretaq7

2
Fikir birliği yoktur, saygıyla kötü bir şey olduğuna katılmıyorum ve birçok insan mantığın ortasında bunu ilan etmenin iyi bir şey olduğunu düşünüyor, ayrıca bkz. Programcılar.stackexchange.com/questions/56585/…
Étienne

@ Étienne Bu sizin fikrinizdir ve kesinlikle buna hak kazanırsınız, ancak künt olmak için fikrinizi değiştirmenin bir yolu yoktur Fikrim : Ben huysuz bir eski Unix korsanıyım ve C kodlama stili çok dini ben mi. Neyse ki biz ikimiz de diğerinin kodunu okumak zorunda
kalmayacağız

Umarım olmaz ;-)
Étienne

8

Harbison ve Steele'yi istiyorsun: " C: Bir Referans Kılavuzu "

Açıkça C99'u kapsar ve C'nin diğer lezzetleriyle karşılaştırır / kontrastlar. Süper yararlı buldum.


1
Adil olmak gerekirse, H&S tam olarak söylediği şeydir: bir referans el kitabı ve tek başına K&R'nin olduğu gibi büyük bir öğrenme kaynağı değildir .
John Bode

Katılıyorum! Bence OP bir referans arıyor.
Angelo

1

King'in C Programlama: Modern Bir Yaklaşım'ı öneririm . K & R'den daha kalındır, ancak yine de özellikle yastıklı değildir ve yazar, stil ipuçları ve diğer şeylerin yanı sıra C99 için neyin yeni olduğunu ve neyin yeni olmadığını belirtir.


1
Amazon'da 95 dolar, whoah!
Ernest Friedman-Hill

Aslında cevabınızı C Programlama: Modern Bir Yaklaşım (İkinci Baskı) demek istediğinizi belirtmelisiniz. Ayrıca soracak bir şeyim var, kısa sohbet edebilir miyiz?
Suraj Jain
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.