C's type system is as strong as the one in TypeScript. In real world applications, you'll run into void pointers and casting, which completely break the type system. Figuring out what's wrong is infuriating, as you'll be doing it essentially on machine code with undefined behavior. I still remember that time when I tried working with GTK+, which lacks proper documentation, and figuring types of callbacks boils down to a lot of guessing.
The everlasting problem of proper documentation. Totally agree. You should try Linux kernel stuff or syscalls, memory mapping, etc. It's all great but for the love of Open Source, somebody please keep the documentation up to date. I spent two days trying to find a bug in my own code when I finally realised that the issue was poorly documented sctp function. I looked around on mailing lists and all I could find was a single post complaining about the same problem. The final conclusion of that thread was that the man pages should be updated. Great, and who is going to do that and when? Anyway, I forked it, did it myself and created a pull request which was approved like instantly 😁
Documentation is a separate issue. The fact is that C's type system becomes useless once you start casting and/or using void pointers. Even if my code shouldn't type check, it compiles, runs, and even seems to work, but the callbacks do nonsensical things. It would be better if they segfaulted immediately, so I could use that to get stack traces to help myself out with debugging.
I agree, it's a very dangerous language and not everybody.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.