Много лун назад я вырезал код на C для жизни, прежде всего, поддерживая сервер POP3, который поддерживал широкий спектр ОС (Linux, * BSD, HPUX, VMS ...).
Я планирую избавиться от моих навыков C и немного узнать о языковой реализации, написав простой FORTH на C.
Но мне интересно, как (или ли?) Что-то изменилось в мире Си с 2000 года. Когда я думаю о Си, я думаю ...
- comp.lang.c
- ANSI C везде, где это возможно (но C89 как C99 не так широко поддерживается)
gcc -Wall -ansi -pedantic
вместо инструментов статического анализа- Emacs
- Ctags
- Autoconf + make (см. Пункт 2 для VMS, HP-UX и т. Д.)
Может ли кто-нибудь, кто писал на С в течение последних одиннадцати лет, сообщить мне, что (если вообще что-нибудь ;-)) изменилось за эти годы?
(Из других новостей, черт возьми, я занимаюсь этим более десяти лет).
programming-languages
c
language-agnostic
Дункан Бэйн
источник
источник
Ответы:
Мне действительно трудно вспомнить время, типа «Ух ты, каково было программирование на С 10 лет назад?», Но я могу говорить о некоторых вещах, которые, как я знаю, я делаю по-другому.
Хотя обычно вы можете по-прежнему вызывать кого-то вроде Питера Зеебаха на comp.lang.c для помощи по поводу особенно глупой ошибки, которая, как вы подозреваете, может быть связана с языком, большинство, если не все вопросы программирования на С, получают исключительные ответы о переполнении стека.
Статический анализ все еще довольно болезненный. Сплинт (по крайней мере, насколько мне известно) не так хорошо справляется с C99, графики покрытия по-прежнему немного трудны для визуализации. Предупреждения GCC немного «улучшились» (в кавычках, потому что это зависит от того, кого вы спрашиваете).
Valgrind является святым всех контролеров ошибок памяти и обычно указывает на проблемы в вашем коде, которые не может / не может найти ни один инструмент статического анализа. Это не на 100% идеально, но я не думаю, что это может быть. Мне очень редко приходится прикасаться к GDB в эти дни, что (ничего личного) мне не подходит. Инструмент массива Valgrind также является действительно хорошим профилировщиком кучи.
В GCC всегда есть новые расширения, некоторые из которых тонкие , так что -Pedantic - хорошая идея, если переносимость является большой проблемой. Для начинающего / ржавого программиста иногда легко спутать расширения со «скрытыми» языковыми функциями.
Появился CCAN (думаю, CPAN, но для C) и начинает взлетать. Там есть много полезных жемчужин, включая адаптацию TAP, которая является отличным инструментом тестирования. Строки в C по-прежнему отстойные, но количество и качество библиотек, помогающих справиться с ними, несомненно, выросло за последние десять лет.
SCons и CMake становятся все более популярными для конфигурации сборки. Autoconf / Automake / Libtool все еще широко используются, но многие люди считают, что M4 слишком ограничен. Тем не менее, если вы предпочитаете использовать эту систему, макроархив Autoconf все еще жив и здоров.
Очевидно, сегодня доступно больше редакторов. Я еще не нашел "IDE", которая не мешала бы мне работать с C, но это, вероятно, потому что я старый, капризный, пьющий евангелист Санка для простоты.
В целом, однако, я бы не сказал, что жизнь (насколько это касается C) даже близко отличается от той, что была 10 лет назад. Но во многих отношениях это на самом деле немного проще. Трудно приписать это инструментам по опыту все же.
источник
glib может быть «новой стандартной библиотекой». Он предлагает многое из того, что многие считают за пределами стандарта - независимую от платформы многопоточность и сетевое взаимодействие, структуры данных контейнеров и т. Д. Конечно, он не применим везде, но если вы можете его использовать, это экономит много времени.
источник
источник
2) и 3) изменились. C99 является мейнстримом, C90 становится все более и более устаревшим.
gcc -Wall -std=c99 -pedantic
,Кроме того, два наиболее заслуживающих внимания изменения, которые еще не рассмотрены в других ответах:
источник
Язык программирования C вошел в топ-2 или 3 языка программирования в журнале д-ра Добба в своем последнем исследовании / опросе.
Что касается реализации языка, C используется для реализации нового языка, который создается в Google и называется Go (golang.org).
Я не следил за группой usenet C в последние годы. Я часто посещаю его IRC-канал Freenode. Это активно и часто посещается многими.
Новые программы пишутся на языке C, но они не получают такой рекламы, как если бы этот год был, скажем, 1999 годом.
Это то, что приходит на ум. Их может быть гораздо больше, но я надеюсь, что вы оставались на связи со своей шляпой программиста, хотя, возможно, вы не часто посещали модель шляпы C :)
источник
Я думаю, что поддержка C99 лучше, чем вы подозреваете. Visual Studio не поддерживает его, но любой другой компилятор, о котором я могу подумать, поддерживает его (возможно, с некоторыми упущениями здесь и там). Если вам не нужна совместимость с VS, то я бы сказал, что стоит пойти с C99, так как писать гораздо приятнее, чем C89 IMHO.
источник