programowania C w 2011 roku [zamknięte]

19

Wiele księżyców temu zarabiałem na życie kodem C, przede wszystkim utrzymując serwer POP3, który obsługiwał szeroki zakres systemów operacyjnych (Linux, * BSD, HPUX, VMS ...).

Planuję szlifować moją umiejętność posługiwania się językiem C i dowiedzieć się trochę o implementacji języka, kodując prosty FORTH w C.

Ale zastanawiam się, jak (lub czy?) Zmieniły się rzeczy w świecie C od 2000 roku. Kiedy myślę o C, myślę ...

  1. comp.lang.c
  2. ANSI C tam, gdzie to możliwe (ale C89 jako C99 nie jest tak szeroko wspierany)
  3. gcc -Wall -ansi -pedantic zamiast narzędzi do analizy statycznej
  4. Emacs
  5. Ctags
  6. Autoconf + make (i patrz dobro VMS, HP-UX itp. W punkcie 2)

Czy ktoś, kto pisze w C od jedenastu lat, może mi powiedzieć, co (jeśli w ogóle ;-)) zmieniło się na przestrzeni lat?

(W innej nowości, kurczę, robiłem to przez ponad dekadę).

Duncan Bayne
źródło
Ja również poproszony o comp.lang.c: groups.google.com/group/comp.lang.c/browse_thread/thread/...
Duncan Bayne
3
Cóż, zamiast emacsa jest vi, ale nie pójdę tam. Byłbym zdziwiony, gdyby stanowisk ktoś jeszcze comp.lang.c, a nawet konkurs zamaskowany C jest stagnacja ( www0.us.ioccc.org/main.html ). Smutne czasy - następny nowy konkurs dotyczy zaciemnionych ciągów liter, które zawierają frazę SMS-a, lol.
Jay Elston

Odpowiedzi:

10

Naprawdę trudno mi myśleć w przeszłość, na przykład „Wow, co to było programowanie C jak 10 lat temu?”, Ale mogę mówić o pewnych rzeczach, które wiem, że robię inaczej.

  • Podczas gdy zazwyczaj można jeszcze wezwać kogoś takiego jak Peter Seebach na comp.lang.c o pomoc w szczególnie goofy bug, że podejrzany może być związane z językiem, większość, jeśli nie wszystkie pytania programowania C dostać nadzwyczajne odpowiedzi na przepełnienie stosu.

  • Analiza statyczna jest nadal dość bolesna. Szyna (przynajmniej o ile mi wiadomo) nie radzi sobie tak dobrze z C99, wykresy pokrycia są nadal trochę kłopotliwe do wizualizacji. Ostrzeżenia GCC „nieco się poprawiły” (w cudzysłowie, ponieważ zależy to od tego, kogo zapytasz).

  • Valgrind jest świętym narzędziem do sprawdzania błędów pamięci i zwykle wskazuje na problemy w kodzie, których nie znalazłoby żadne narzędzie do analizy statycznej. Nie jest w 100% idealny, ale nie sądzę, by mógł być. W dzisiejszych czasach bardzo rzadko muszę dotykać GDB, co (nic osobistego) jest dla mnie w porządku. Narzędzie masywu Valgrind jest również bardzo dobrym profilerem sterty.

  • W GCC zawsze pojawiają się nowe rozszerzenia, niektóre z nich są subtelne , więc uspokajający jest dobrym pomysłem, jeśli przenośność jest dużym problemem. Dla początkującego / zardzewiałego programisty czasami łatwo pomylić rozszerzenia z „ukrytymi” funkcjami języka.

  • Pojawił się CCAN (pomyśl CPAN, ale dla C) i zaczyna startować. Jest tam wiele przydatnych klejnotów, w tym adaptacja TAP, który jest niesamowitym narzędziem do testowania. Ciągi w C wciąż są do bani, ale liczba i jakość bibliotek, które pomagają sobie z nimi poradzić, z pewnością wzrosła w ciągu ostatnich dziesięciu lat.

  • SCons i CMake zyskują na popularności w konfiguracji kompilacji. Autoconf / Automake / Libtool są nadal szeroko stosowane, ale wiele osób czuje się trochę zbyt ograniczony przez M4. Mimo to, jeśli jest to system, którego chcesz używać, archiwum makr Autoconf nadal działa i ma się dobrze.

  • Istnieje oczywiście innych redaktorów dostępne już dziś. Nie znalazłem jeszcze „IDE”, które nie przeszkadzało mi w pracy z C, ale prawdopodobnie dlatego, że jestem starym, kroczącym, Sanka, ewangelistą pijącym dla uproszczenia.

Ogólnie rzecz biorąc, choć nie powiedziałbym życia (o ile idzie C) jest nawet blisko głęboko inny niż to było 10 lat temu. Ale pod wieloma względami, to faktycznie nieco łatwiejsze. Trudno atrybutu do narzędzi ponad doświadczenia chociaż.

Tim Post
źródło
15

wygadany może być „nowa biblioteka standardowa”. Oferuje on wiele z tego, co wielu czuje się pominięta w standardzie - niezależny od platformy gwintowania i sieciowych, struktury danych kontenerów, itd. Oczywiście, to nie jest stosowane wszędzie, ale jeśli można go używać, to oszczędza dużo czasu.

zvrba
źródło
Myślę, że mylisz się z biblioteką GNU C (GLibC)
Lekensteyn
7
Nie, nie jestem zdezorientowany.
zvrba
1
To jest całkowicie poprawna odpowiedź, nie jestem pewien, dlaczego została odrzucona. glib narodził się z powodu frustracji Ulricha Dreppera i tego, jak „strzeżony” jest glibc.
Tim post
1
Jednak Glib jest teraz całkowicie oddzielony od GNOME. Nie będę się kłócić o stowarzyszenia, tylko że w praktyce można całkowicie zignorować nawet GNOME i GTK +. Jest w nim napisanych (mnóstwo?) Linii poleceń i nieinteraktywnych programów.
detly
3
Lubię nazywać GLib „STL C”
Cercerilla
4
  1. StackOverflow ;)
  2. Używam C głównie do pisania oprogramowania układowego dla mikrokontrolerów Microchip, a ponieważ ich kompilator jest oparty na GCC, używam C99 (ale nie szaleję z dodatkowymi funkcjami, głównie w celu ograniczenia zakresu zmiennych pętli i dynamicznych tablic na stosie). Kiedy piszę rozszerzenia Pythona, trzymam się C89 na wypadek, gdyby ktoś musiał go skompilować z MSVC. Nie wiem, czego używają wszyscy inni.
  3. Szyna (prace na C89, C99 nie) i statyczne analizator dzyń za - chociaż, ponieważ oboje dusić na makro-ciężkiego kodu oprogramowania, nie ma ogromną ilość doświadczenia z nimi. Faktycznie, wiele rzeczy LLVM jest bardzo interesujące dla C geek.
  4. Okej, to tylko święta przynęta wojenna: P
  5. Nigdy nie używany Ctags, ale jestem częściowe do Doxygen.
  6. Bóg Nienawidzę Autoconf. Nienawidzę go tak dużo. I nigdy, przenigdy nie udało się spreparować takie Autoconf piłkę-of-błota od podstaw. Jeśli projekt już jedną, to bym po prostu skończyć bastardising co już tam jest. Jeśli piszę coś nowego, gadam i zachwycam się i szukam alternatyw, chociaż jestem cholerny, gdybym znalazł taki, z którym mógłbym się trzymać. Ostatni raz byłem przez ten cykl, zdecydowałem się na SCons, które mogę używać ponownie.
detly
źródło
1
Chciałbym również zasugerować Cppcheck do analizy statycznej.
Greg Hewgill
10
w odniesieniu do punktu 6: „Kiedyś widziałem książkę zatytułowaną„ Die Gnu Autotools ”, myślałem„ Heck Tak! ” dopóki nie zrozumiałem, że tytuł jest po niemiecku ”
Cercerilla
2

2) i 3) uległy zmianie. C99 jest głównym nurtem, C90 staje się coraz bardziej przestarzały. gcc -Wall -std=c99 -pedantic.

Poza tym dwie najważniejsze zmiany, które nie zostały jeszcze uwzględnione w innych odpowiedziach:

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

źródło
1

Język programowania C znalazł się w gronie 2 lub 3 najlepszych języków programowania w czasopiśmie Dr Dobb w najnowszym badaniu / ankiecie.

Jeśli chodzi o wdrożenie języka C służy do wprowadzenia nowego języka, który jest wbudowany w Google o nazwie Go (golang.org).

Nie następuje grupa dyskusyjna Usenet c w ostatnich latach. Często odwiedzam jego kanał IRC Freenode. Jest aktywny i często odwiedzany.

Nowe programy są napisane w C, ale nie uzyskać rozgłos jak oni, jeśli masz w tym roku miały być, powiedzmy, 1999.

Są to coś, co się do górnej części głowy. Nie może być o wiele więcej, ale mam nadzieję, że pozostawał w kontakcie z programatora kapelusz, choć może nie uczęszczanych Model C z kapelusza :)

vpit3833
źródło
0

Myślę, że obsługa C99 jest lepsza niż podejrzewasz. Program Visual Studio nie obsługuje go, ale obsługuje go każdy inny kompilator, który mogę wymyślić (z kilkoma pominięciami tu i tam). Jeśli nie potrzebujesz kompatybilności z VS, powinieneś wybrać C99, ponieważ pisanie jest znacznie przyjemniejsze niż C89 IMHO.

Cercerilla
źródło