2.2 KiB
Info
A collection of examples, exercises, and experiments while learning the C programming language
Resources and tools used
- Book - The C Programming Language 2nd Edition by Dennis Ritchie and Brian Kerningham
- Compiler - GCC >= 8
- Linux OS
The source material used to learn C is from The C Programming Language 2nd Edition by Dennis Ritchie and Brian Kerningham. The reason I chose this book is due to numerous programmers acknowledging this as a well put together book explaining the language. The book is concise and achieves the objective of exhibiting how the language can be used and inspires further advancement. Though C is a small language this book serves as a good read to get acquainted. There aren't vast examples or tirades delving into painstakingly detailed concepts. It's a good introductory book. Even more, I get to learn C as C. Instead of falling into the trap when learning a new language without getting used to it. I know C++ but C shouldn't be viewed as C++ without all of the extra stuff. After all, C++ was originally meant to be a subset of C but never did.
Compiling with GCC
Use the following command when compiling files to keep the symbols. Useful when using GDB
gcc -g main.c
Note
This repo is not expecting any more commits. Due to life obligations I've choosen to focus on other matters. This doesn't mean I've stopped learning C. I'll take a more hands on approach by working on open source software to further my understanding of the C programming language.
The reason for wanting to use C was to get a better understanding of how a program works without the aid of abstractions. I've used C++, including various standards of it from C++ 98 to C++ 20. As the years goes on and if my interest in C++ does not wane and if there are still applicable use cases for it, I will continue to increase my C++ knowledge. With that being said, though I am aware C++ is not C. I've learned quite a bit from C++ that made reading C much easier. With C I hope to have a tool in my belt where I could use it to create libaries or interfaces for higher-level languages, write software for embedded devices (I may used C++ instead), or use it to contribute to open source C projects that I'm interested in.