28,142 views
C is the language in which a significant part of everything that surrounds us is written: from the operating system kernel to the brains of the car, from the speakers of which you will listen to this podcast. In this episode, together with Igor Zhirkov, we figure out how similar modern C is to the language you met in that very book by Kernighan and Ritchie, what features make it one of the most intolerant languages for programmer errors, and whether it is worth writing code in it at all in 2024. ❓ Want to discuss the episode or ask an expert a question? Join our Telegram chat: https://t.me/podlodka ???? Don't like chats, but want to stay up to date and improve your IT horizons? Subscribe to our Telegram channel: announcements of new episodes are published there, and valuable and heated discussions take place in the comments! 5 thousand experienced IT specialists are already with us: https://t.me/podlodkanews Useful links: C Standards Committee https://www9.open-std.org/JTC1/SC22/W.... Three tribes of programming https://josephg.com/blog/3-tribes/ Error model in Midori (about what invariants, pre- and post-conditions are useful for a system programming language) https://joeduffyblog.com/2016/02/07/t... Igor's tutorial on C and assembler https://www.amazon.com/Low-Level-Prog... Problems with standard streams in C11 https://gustedt.wordpress.com/2012/10... When it makes sense to use goto https://rubber-duck-typing.com/posts/... John Carmack keynote speech Quakecon 2013 • John Carmack's keynote at Quakecon 20... Experience of studying FP and why it is necessary for programmers in languages such as C/C++ • John Carmack's keynote at Quakecon 20... A good book on modern C https://www.amazon.com/C-Programming-... Igor's online course on the basics of C https://stepik.org/course/73618/syllabus Projects that you can carefully look at: Lisp, written by the creator of Julia. A bit hacky, but reasonable enough https://github.com/JeffBezanson/femto... musl libc https://musl.libc.org/ OpenBSD source code https://github.com/openbsd/src (clean, but not very modern style) PostgreSQL source code https://git.postgresql.org/gitweb/?p=... (clean, but not very modern style) To realize the imperfections of your code, books on formal verification: Practical TLA+ by Hillel Wayne https://www.hillelwayne.com/post/prac... Software Abstractios by Daniel Jackson https://www.amazon.com/Software-Abstr... Software foundations https://softwarefoundations.cis.upenn... Unix Haters Handbook https://web.mit.edu/~simsong/www/ugh.pdf Timestamps: 00:00 What the episode is about 05:00 What's interesting about C 13:22 Myths about C 24:59 History of the C language development 35:25 C standards 59:50 Modern C and its differences from the old 01:05:27 Top 3 errors that C is prone to 01:12:40 Key features of C 01:21:10 Code and module organization 01:26:09 Syntax and semantics of C 01:31:10 Undefined behavior and its consequences 01:39:24 Semantics and performance 01:45:02 Performance optimization 01:51:02 Compilers and their diversity 02:02:20 C ecosystem 02:08:54 What languages can replace C 02:16:05 Should C be taught in universities 02:28:46 Conclusion