2011'de C programlama [kapalı]


19

Birçok ay önce, öncelikle çok çeşitli işletim sistemlerini (Linux, * BSD, HPUX, VMS ...) destekleyen bir POP3 sunucusunu korurken, yaşamak için C kodunu kestim.

C becerilerimin pasını cilalamayı ve C'deki basit bir FORTH kodlayarak dil uygulaması hakkında biraz öğrenmeyi planlıyorum.

Ama 2000'den beri C dünyasında bir şeyin nasıl değiştiğini (ya da olup olmadığını) merak ediyorum. C'yi düşündüğümde, sanırım ...

  1. comp.lang.c
  2. ANSI C mümkün olan her yerde (ancak C99 olarak C89 yaygın olarak desteklenmiyor)
  3. gcc -Wall -ansi -pedantic statik analiz araçları yerine
  4. Emacs
  5. ctags
  6. Autoconf + make (ve VMS, HP-UX vb. İyilik için 2. maddeye bakın)

Son on bir yıldır C dilinde yazan herkes yıllar içinde neyin değiştiğini (; bir şey varsa ;-)) bana bildirebilir mi?

(Diğer yandan, kutsal saçmalık, bunu on yıldan fazla bir süredir yapıyorum).



3
Emacs yerine vi var, ama oraya gitmeyeceğim. Hala comp.lang.c'ye mesaj gönderirse ve şaşırmış C yarışması bile durgundur ( www0.us.ioccc.org/main.html ). Üzücü zamanlar - bir sonraki yeni yarışma, bazı kısa mesaj ifadesini heceleyerek gizlenmiş harf dizeleri içindir.
Jay Elston

Yanıtlar:


10

"Vay be, 10 yıl önce C programlama nasıldı?" Gibi zaman içinde düşünmek gerçekten zor, ama farklı yaptığımı bildiğim bazı şeyler hakkında konuşabilirim.

  • Yine de Peter Seebach gibi birisini comp.lang.c adresinde dil ile ilgili olabileceğinden şüphelendiğiniz aptal bir hataya yardım etmek için çağırabilseniz de, çoğu C programlama sorusu Yığın Taşması konusunda istisnai cevaplar alırsa.

  • Statik analiz hala acı verici. Splint (en azından bildiğim kadarıyla) C99 ile çok iyi ilgilenmiyor, kapsama grafikleri hala görselleştirmek için biraz acı veriyor. GCC uyarıları biraz "iyileşti" (tırnak içinde çünkü bu kime sorduğunuza bağlı olarak).

  • Valgrind tüm bellek hata denetleyicilerinin azizidir ve genellikle kodunuzda hiçbir statik analiz aracının bulamayacağı / bulamayacağı sorunlara işaret eder. % 100 mükemmel değil, ama olabileceğini sanmıyorum. Bu günlerde GDB'ye çok nadiren dokunmam gerekiyor, ki bu (kişisel hiçbir şey) benim için iyi değil. Valgrind masif aracı da gerçekten güzel bir yığın profiler.

  • GCC'de her zaman yeni uzantılar var, bazıları ince , bu yüzden -petatik, taşınabilirliğin büyük bir endişe olması durumunda iyi bir fikir. Acemi / paslı programcı için, uzantıları 'gizli' dil özellikleriyle karıştırmak bazen kolaydır.

  • CCAN ortaya çıktı (düşünün CPAN, ama C için) ve başlıyor. Harika bir test aracı olan TAP'ın uyarlanması da dahil olmak üzere birçok yararlı mücevher var. C dizeleri hala berbat, ancak onlarla başa çıkmak için kütüphanelerin sayısı ve kalitesi kesinlikle son on yıl içinde artmıştır.

  • SCons ve CMake, yapı yapılandırmasında popülerlik kazanıyor. Autoconf / Automake / Libtool hala yaygın olarak kullanılmaktadır, ancak birçok kişi M4 tarafından biraz fazla sınırlı hissediyor. Yine de, kullanmak istediğiniz sistem buysa, Autoconf makro arşivi hala canlı ve iyidir.

  • Bugün daha fazla editör var. Henüz C ile çalışırken yolumu bulamayan bir "IDE" bulamadım, ama bunun nedeni basitlik için eski, kasık, Sanka bir içki evanjisti olduğum için.

Genel olarak, hayatın (C'nin gittiği kadarıyla) 10 yıl öncesine göre çok farklı olduğunu söyleyemem. Ancak, birçok yönden, aslında biraz daha kolay. Ancak bunu deneyim üzerindeki araçlarla ilişkilendirmek zordur.


15

glib "yeni standart kütüphane" olabilir. Platformdan bağımsız diş açma ve ağ oluşturma, konteyner veri yapıları vb. Standartların dışında kalan hislerin çoğunu sunar. Tabii ki, her yerde uygulanamaz, ancak kullanabiliyorsanız çok zaman kazandırır.


Sanırım GNU C Kütüphanesi (GLibC) ile karıştırıyorsunuz
Lekensteyn

7
Hayır, kafam karışmadı.
zvrba

1
Bu tamamen geçerli bir cevap, neden oylandığından emin değilim. glib, birçoğu Ulrich Drepper ile hayal kırıklığına uğramış ve glibc'in 'korunan' olmasından doğdu.
Tim Post

1
Glib şimdi GNOME'dan tamamen ayrılıyor. Dernek hakkında tartışmıyorum, sadece pratik anlamda GNOME ve hatta GTK + 'yı tamamen görmezden gelebilirsiniz. İçinde (bol miktarda?) Komut satırı ve etkileşimli olmayan programlar var.
detly

3
Glib'i

4
  1. StackOverflow ;)
  2. C'yi esas olarak Microchip'in mikro denetleyicileri için ürün yazılımı yazmak için kullanıyorum ve derleyicileri GCC tabanlı olduğu için C99 kullanıyorum (ancak ekstra özelliklerle fındık kullanmıyorum, temel olarak döngü değişkenlerinin kapsamını ve yığındaki dinamik dizileri kısıtlamak). Python uzantıları yazdığımda, birinin MSVC ile derlemesi gerektiğinde C89'a bağlı kalıyorum. Herkesin ne kullandığını bilmiyorum.
  3. Splint (C99 üzerinde değil, C99 üzerinde çalışır) ve Clang'ın statik analizörü - her ikisi de makro ağır bellenim kodunu boğduğundan, onlarla büyük bir deneyimim yok. Aslında, LLVM'nin birçok şeyi bir C geek için oldukça ilginç.
  4. Tamam, bu sadece kutsal savaş yemi: P
  5. Asla Ctags kullanmadım, ama Doxygen'e kısmi davranıyorum.
  6. Tanrım, Autoconf'tan nefret ediyorum. Bundan çok nefret ediyorum. Hiçbir zaman sıfırdan bir Autoconf çamur topu yapmayı başaramadım. Eğer bir projede zaten bir tane varsa, ben zaten orada olan her şeyi piç haline getirirdim. Eğer yeni bir şey yazıyorsam, aradım ve çıldırdım ve alternatifler arıyorum, ancak yapışacağım bir tane bulduğumda lanetlendim. En son bu döngüye girdiğimde, tekrar kullanabileceğim SCons'a yerleştim.

1
Ayrıca statik analiz için Cppcheck öneririm .
Greg Hewgill

10
6 numarayla ilgili olarak: "Geçen gün 'Die Gnu Autotools' adlı bir kitap gördüm, 'Heck Yeah!' başlığın Almanca olduğunu anlayana kadar ".
Cercerilla

2

2) ve 3) değişti. C99 ana akım, C90 gittikçe modası geçmiş. gcc -Wall -std=c99 -pedantic.

Bunun dışında, diğer cevaplarda ele alınmayan en dikkat çekici iki değişiklik:

  • C11. ISO 9899: 2011.
  • MISRA-C: 2004.

1

C programlama dili, son çalışma / anketinde Dr Dobb'un dergisinde en iyi 2 veya 3 programlama diline ulaştı.

Bir dili uygulamaya gelince, C Google'da Go (golang.org) adı verilen yeni bir dil uygulamak için kullanılır.

Son yıllarda C'nin usenet grubunu takip etmedim. Freenode IRC kanalını sık sık ziyaret ediyorum. Birçok kişi tarafından aktif ve sıkça görülür.

C'de yeni programlar yazılıyor, ancak bu yıl 1999 gibi olsaydı tanıtımını yapamıyorlar.

Bunlar aklın başına gelen bir şey. Çok daha fazlası olabilir, ama umarım programcı şapkanızla iletişim halinde kaldınız, ancak şapkanın C modelini sık sık kullanmamış olabilirsiniz :)


0

Bence C99 desteği şüphelendiğinizden daha iyi. Visual Studio bunu desteklemiyor, ancak düşünebildiğim her derleyici bunu destekliyor (belki burada ve orada birkaç eksiklik var). VS ile uyumluluğa ihtiyacınız yoksa, C99 ile gitmeyi söyleyebilirim, çünkü C89 IMHO'dan yazmak çok daha hoş.

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.