Richard Stallman (RMS) is a controversial figure – you either like or dislike him – but you have to assume he knows his C. So an announcement that he has a book on the subject is interesting.
As you might guess, being the founder of the Free Software Foundation, Stallman’s book is free to download, but at this stage you will have to do some work if you want to read it and it seems to be still in beta. The text contains requests for comments.
Why might you want to read RMS on the subject of C? The main reason is that he started the GCC project which is probably the most used C compiler on the planet. It was all part of the GNU project to create a non-commercial “free” version of Unix, which did produce some tools such as GCC and EMACs, but failed to actually implement a kernel. Work still goes on to create a kernel which would make GNU a full operating system. What actually happened was that Linux came along and the GNU project was ported to run under it and hence RMS insists that we all call Linux, “GNU/Linux” – something that most of us ignore.
As to the new book, the first difficulty is getting it into a readable form. It isn’t in a common format as GNU TexInfo was used to create it. This is normal for a GNU project. but usually the end result is converted into PDF or HTML. If you want to read it then get Linux system, sorry the GNU/Linux system and use:
You will find an HTML file in the c-intro-and-ref directory which you can open and read.
So what do I make of the book? It has to be judged based on its stated aims:
It most definitely isn’t for the beginner learning C. It starts off with an example of recursion! Any book that starts with a recursive example isn’t for the beginner. To many a practiced programmer’s eye it also has a number of formatting peculiarities. The formatting is good but it isn’t commonly used. Apart from these problems, what we have is a reasonable reference manual dotted with comments and examples. The version of C that is covered isn’t too clear. It is described as GNU C, which might be enough, but as far as I can tell it’s C99. There are two insignificant mentions of C11 and certainly no mention of C23. There is also, surprisingly, no mention of the real issue in using C – undefined behavior. Perhaps this will appear in the companion voolume referred to here:
“GNU C has many obscure features, each one either for historical compatibility or meant for very special situations. We have left them to a companion manual, the GNU C Obscurities Manual, which will be published digitally later.”
I have to say that I smiled at the truth of one of the footnotes:
“Personal note from Richard Stallman: I wrote GCC without remembering anything about the C precedence order beyond what’s stated here. I studied the full precedence table to write the parser, and promptly forgot it again. If you need to look up the full precedence order to understand some C code, fix the code with parentheses so nobody else needs to do that.”
When someone of the status of RMS issues a book or a reference manual we probably need to take notice. In this case you have to wonder why he is spending time on the project, but if you would like to help out he is open to comments.
https://lists.gnu.org/archive/html/info-gnu/2022-09/msg00005.html
GNU Manifesto Published Thirty Years Ago
GCC Gets An Award From ACM
GNU Hurd 0.6 Released
EFF Asks For The Right To Access Software
GNU Compiler Collection 5.1 Released
To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.
It is over five years since Google adopted Kotlin as a first class language for Android. Two years later Kotlin became the preferred language for writing Android apps and Google hopes that eventually [ … ]
MariaDB has made two announcements relevant to geospatial data management. Firstly, the company has acquired geospatial specialists CubeWerx, and followed up this announcement with the news they’re jo [ … ]
or email your comment to: comments@i-programmer.info
<ASIN:1871962609>
<ASIN:B07RZ5RR35>
<ASIN:1871962617>
<ASIN:1871962633>
<ASIN:1871962455>
<ASIN:1871962684>