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ę ...
- comp.lang.c
- ANSI C tam, gdzie to możliwe (ale C89 jako C99 nie jest tak szeroko wspierany)
gcc -Wall -ansi -pedantic
zamiast narzędzi do analizy statycznej- Emacs
- Ctags
- 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ę).
programming-languages
c
language-agnostic
Duncan Bayne
źródło
źródło
Odpowiedzi:
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ż.
źródło
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.
źródło
źródło
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:
źródło
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 :)
źródło
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.
źródło