This is a companion discussion topic for the original entry at https://linuxconfig.org/c-development-on-linux-introduction-i
I heartily disagree. The only thing either edition of K&R is good for is lining the bottom of a bird cage.
C was not terribly useful as a real language until C99 (and even that is not especially a good choice.) The latest bits in C99 and later versions make it an entirely different language from the C as proposed and used by K&R. Pointer arithmetic and other truly horrible practices were very much encouraged by K&R. Now, I would do unmentionable things to any of my engineers who were foolish enough to use such practices.
C-Programs made in the last century work without modifications. The speed and performance is absolutely perfect. But C is not perfect for users - engineers; its made for programmers. If you do not need maximum performance or graphics or access to drivers: why not check Java ?
I am new to programming. Can you try and explain the difference between an engineer and a programmer?
I am a civil engineer irl.
In german language the difference is that an engineer usually works on objects you can touch.
If you are new to programming:
There are many types of programmers. Cobol-programmers (most codelines ever produced !) Visual-basic-programmers, Phyton …
But if eg for AutoCad you have to sort or connect many thousends of lines you should not use one of these. So it makes a difference which programming-language to use.
C and C++ are not really easy to use.
Welcome to our forums.
My explanation will not be perfect, but I’ll try my best.
A programmer is someone who writes computer programs in one or many programming languages that computers can execute and run, which in turn will provide a solution to a problem (like calculating the human DNA) or give a service that is needed for some purpose (like an online shop you can browse with a browser).
An engineer is someone who uses his/her deep knowledge of a given field to create the building blocks of it - like an architect who can design a bridge that will not collapse under the weight of passing vehicles, or a system engineer who can design a system that will run even if a datacenter under it goes offline. There are engineers in many fields, programming included.