C Programming Language
I would bet that the C programming language is the most widely used language for writing programs. In my opinion, the reason that C is so successful is that it performs the best compromise between making high level language abstractions without adding language complexity.
The C Language is an ISO/IEC standard maintained by WG14. You can download the latest draft of the standard from the WG14 page as well as many other documents that the WG has generated.
Another standard of interest is the POSIX.1 which
defines a standard operating system interface and environment, including a command interpreter (or "shell"), and common utility programs to support applications portability at the source code level.
You can also download the standard for offline reading. If you develop on a UNIX platform, you need to reference this standard.
Here are some articles that discuss the C programming language standards.
Starting off discussing editors may seem strange at first. However, when you think of the software development process, programmers spend most of their time in front of their editors. Initially the choice of editor is unimportant because you are just learning the language and most likely entering sample code from your favorite book.
There are a plethora of editors and IDEs to choose from. As you spend more and more time using your editor, you will want to make sure the editor you use helps you write better code faster.
The editor I use is GNU Emacs. The reason I use GNU Emacs is that it is extensible using ELisp and supports many programming languages. I prefer to learn a tool that allows me to get great re-use of my invested time.
The ubiquitous GNU gcc compiler is the best compiler to get started with. Firstly, its price is easily tolerable -- free (as in beer and as in freedom). Secondly it is actively supported and developed. And thirdly, if you learn its intricacies you can take that knowledge with you as the GNU gcc compiler supports many platforms.
To keep up to date with the development of GCC, keep an eye on the GCC Wiki. This is now the main location for information about GCC. Also check out the GCC Readings page for all sorts of juicy information relating to GCC.
Articles of Interest
These are articles relating to C programming.
- Learn a new trick with the offsetof() macro
- PowerPC atomic instructions
- What a Compiler Turns Your C Code Into is a nice look at the generated assembly behind C.
- Inside memory management
- Four-level page tables
- Robert Love's With a little help from your compiler
- Everything you wanted to know about C types
- Separate debug info