С – язык, на котором написана значимая часть всего, что нас окружает: от ядра операционной системы до мозгов автомобиля, из колонок которого вы будете слушать этот подкаст. В выпуске вместе с Игорем Жирковым разбираемся с тем, насколько современный C похож на язык, с которым вы познакомились в той самой книге Кернигана и Ритчи, какие особенности делают его одним из самых нетерпимых языков к ошибкам программиста, и стоит ли вообще на нем писать код в 2024 году.
❓ Хочешь обсудить выпуск или задать вопрос эксперту? Вступай в наш Telegram-чат: https://t.me/podlodka
📰 Не любишь чаты, но хочешь оставаться в курсе дел и прокачивать свой IT кругозор? Подписывайся на наш Telegram-канал: там публикуются анонсы новых выпусков, а в комментах идут ценные и горячие обсуждения! 5 тысяч опытных IT-специалистов уже с нами: https://t.me/podlodkanews
Полезные ссылки:
- Комитет по стандартизации C https://www9.open-std.org/JTC1/SC22/WG14/#:~:text=ISO%2FIEC%20JTC1%2FSC22%2FWG14%20is%20the%20international%20standardization,contact%20your%20national%20member%20body.
- Three tribes of programming https://josephg.com/blog/3-tribes/
- Error model in Midori (про то, какие инварианты, пред- и пост-условия полезны для языка системного программирования) https://joeduffyblog.com/2016/02/07/the-error-model/
- Учебник Игоря по С и ассемблеру https://www.amazon.com/Low-Level-Programming-Assembly-Execution-Architecture/dp/1484224027
- Проблемы со стандартными потоками в C11 https://gustedt.wordpress.com/2012/10/14/c11-defects-c-threads-are-not-realizable-with-posix-threads/
- Когда есть смысл использовать goto https://rubber-duck-typing.com/posts/2017-04-26-goto-the-marvelous.html
- John Carmack keynote speech Quakecon 2013 https://www.youtube.com/watch?v=eNWAcEu1jpU&list=PLdxGKkjSwJW-1MhAEFy-RBRlxGCz6yhmC
- Опыт изучения ФП и почему это необходимо программистам на таких языках как C/C++ https://www.youtube.com/watch?v=1PhArSujR_A&t=125s
- Хорошая книга по современному С https://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504
- Онлайн-курс Игоря по основам C https://stepik.org/course/73618/syllabus
Проекты которые можно осторожно посмотреть:
- Лисп, написанный создателем Julia. Немного по-хакерски, но достаточно разумно https://github.com/JeffBezanson/femtolisp
- musl libc https://musl.libc.org/
- OpenBSD source code https://github.com/openbsd/src (чисто, но не очень современный стиль)
- PostgreSQL source code https://git.postgresql.org/gitweb/?p=postgresql.git;a=summary (чисто, но не очень современный стиль)
Чтобы осознать несовершенство своего кода, книги по формальной верификации:
+ Practical TLA+ by Hillel Wayne
https://www.hillelwayne.com/post/practical-tla/
+ Software Abstractios by Daniel Jackson
https://www.amazon.com/Software-Abstractions-Logic-Language-Analysis/dp/0262017156
+ Software foundations
https://softwarefoundations.cis.upenn.edu/
- Unix Haters Handbook
https://web.mit.edu/~simsong/www/ugh.pdf
Тайм-коды:
00:00 О чем выпуск
05:00 Чем интересен Си
13:22 Мифы о Си
24:59 История развития языка Си
35:25 Стандарты Си
59:50 Современный Си и его отличия от старого
01:05:27 Топ-3 ошибок, которым подвержен Си
01:12:40 Ключевые фичи Си
01:21:10 Организация кода и модулей
01:26:09 Синтаксис и семантика Си
01:31:10 Неопределенное поведение и его последствия
01:39:24 Семантика и производительность
01:45:02 Оптимизация производительности
01:51:02 Компиляторы и их разнообразие
02:02:20 Экосистема Си
02:08:54 Какие языки могут заменить Си
02:16:05 Нужно ли преподавать Си в вузах
02:28:46 Заключение