Podlodka #387 -- C
С – язык, на котором написана значимая часть всего, что нас окружает: от ядра операционной системы до мозгов автомобиля, из колонок которого вы будете слушать этот подкаст. В выпуске вместе с Игорем Жирковым разбираемся с тем, насколько современный C похож на язык, с которым вы познакомились в той самой книге Кернигана и Ритчи, какие особенности делают его одним из самых нетерпимых языков к ошибкам программиста, и стоит ли вообще на нем писать код в 2024 году.

Полезные ссылки:

  • Комитет по стандартизации 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

Похожие выпуски