- #Python is written in C
- #Perl is written in C
- #Ruby is written in C
- #PHP is written in C
- #JavaScript engines started in C, now mostly in C++
- #Go was first in C, now written in Go itself
- #C++ compilers are written in C++
- #Swift is built with C++ and Swift (on LLVM in C++)
- #C# runs on .NET, built in C++/C#
- #JVM (HotSpot) is written in C++

Yet, people still doubt the necessity of learning C!

@mirsadra C was written in assembly therefore all programmers necessitate learning it?

not trying to be an asshole but this isn't the best argument in favour of it

you could say all languages use C via FFI, for example, which is neigh impossible to directly do Java <-> Rust or C++ <=> Rust without going through C first

@diegovsky @mirsadra yeah, every programmer should how assembly works and what it looks like. Knowing those building blocks helps you understand how computers work and leads to better code in higher level languages.

It also helps you appreciate all the abstraction built into those higher level languages.

@jrdepriest @diegovsky @mirsadra This.

Most programmers will not need to use C in their day to day life.

But most programmers would benefit from getting a copy of the K&R, and doing the exercises as they read their way through the book.

It will improve their grasp of the foundations of what they do, even if they never write a line of C again.

@jrdepriest @diegovsky @mirsadra I agree and disagree.
I agree that knowing low level well allows you to have a better understanding for creating high level stuff.

But I would argue that we should have high level abstraction that would work well without having to know all the layers from pixels on your screen to assembly on your CPU and TTY obscure knowledge.

Making it an obligation to be a good coder is a sad consequence of poor UX.

@dolanor @jrdepriest @diegovsky @mirsadra
To be a good programmer, you need to understand what is happening : on a physical level, on a software layers and ecosystem level, and on a mathematical level.
Every ones of those axis are retroactively linked, and you are embedded in them.

Then comes your particular toolset abstraction, allowing to construct some stuff better.

You don't need to be a good programmer.

(And C is not a very interesting language, just the *langua franca*)