====== C Programming ====== I originally started learning the C programming language several years ago in college and attempted to learn it on my own for a few years after that. I didn't get far, but I amassed quite a few books in the attempt. Later on I came across [[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html|Thinking in C++]] that recommended that readers unfamiliar with ''C'' go through the [[http://mindview.net/CDs/ThinkingInC/beta3|Thinking in C]] material. I used it along with: * [[.:#books|C for Dummies]] * [[.:#books|C By Example]] * [[.:#books|The C Programming Language, 2nd Edition]] By the time I made it to the various types of [[wp>Pointer_(computing)#C_pointers|pointers]] I was wide eyed and very unnerved. I wouldn't say I was lost exactly, but well roasted for sure. While I have //deep// respect for professional ''C'' programmers and find the language interesting, I was glad to get back to learning C++ ((Even though I resorted to purchasing other books to ease me into C++)). ===== My Notes ===== * [[.:notes:start|C Notes index]] ===== Online Resources ===== //Various resources in no particular order (I'll eventually organize them)// * [[http://plan9.bell-labs.com/who/dmr/chist.html|The Development of the C Language]] * [[http://www.google.com/search?hl=en&q=%22The+development+of+the+C+Language%22|Google search for this article]] ((Other web content of theirs has either been relocated or removed)) * [[http://www.sis.pitt.edu/~ir/KS/Data/PBurden/chap1.standards.html|Introduction to C Programming - C Standards and History]] * [[wp>C_(programming_language)|Wikipedia entry]] for the language. * [[http://nothings.org/computer/cpp.html| One reason C++ sucks compared to C]] ((It's always interesting to hear opposing points of view)) * [[http://www.cprogramming.com/tutorial.html|CProgramming.com - Programming Tutorials]] * [[http://www.intelligentedu.com/|intelligentedu.com]] - Blogs which link to programming resources (College lectures, books). Looks very good. * [[http://www.koders.com/|koders.com - Open Source Code Search Engine]] * [[http://www.apitalk.com/index.php|apitalk.com]] - Resource center and source code repository (has useful articles) ==== Windows specific ==== * [[http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx|Windows Data Types]] ==== Forums ==== * [[http://www.cprogramming.com/board.html|cprogramming.com - C/C++ Message board]] * [[http://episteme.arstechnica.com/eve/forums/a/frm/f/6330927813|Ars Technica Programmer's Symposium]] ===== Books ===== ====Current ==== Currently, I'm not attempting to learn this language. I'm focusing instead on C++. Many authors teach C++ from the perspective that C++ is simply an evolved ''C'', and while that may be the case, C++ has evolved to where it's possible to leave many (if not all) of the ''C'' constructs behind. With that said I will likely be returning to this language at some point as there are many libraries out there that are intended for ''C''. ====Queued ==== * [[amazon>0131103628|The C Programming Language]] ((Widely regarded as //the// authoritative reference on ''C'' programming.)) * [[http://tinyurl.com/c-programming-errata|TinyURL to Google's cached copy of Errata page]] * [[http://web.archive.org/web/*/http://netlib.bell-labs.com/cm/cs/cbook/2ediffs.html|Internet Archive copy of Errata]] * {{:tech:programming:c:errata_for_the_c_programming_language_-_second_edition.pdf|}} ((PDF copy of Google's cache from August 2008.)) * [[wp>The_C_Programming_Language_(book)|Wikipedia.org page for this book]] * [[amazon>0789722399|C By Example]]((I used an Academic Edition from 1994 in my class so I imagine this 1999 copy is missing the typos/bugs in my copy.)) * [[informit>0789722399|Informit.com page - Example source download]] * [[http://www.accu.informika.ru/accu/bookreviews/public/reviews/c/c002216.htm|ACCU Review]] * [[http://www.cs.technion.ac.il/users/yechiel/CS/BadBooksC+C++.html#PerryCbyExample|Reviewer's page for the book]] (nothing to see at this time) * [[http://mindview.net/CDs/ThinkingInC/beta3|Thinking in C Beta 3]] ((This was recommended as a prereq for [[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html|2nd edition, Volume 1 of Thinking in C++]] by Bruce Eckel. Chuck Allison is the instructor for this material.)) * [[amazon>1878058789|C for Dummies, Volume 1]] * [[amazon>156884915X|C for Dummies, Volume 2]] * [[amazon>1568849397|C for Dummies, Volume One & Two Bundle]] * [[http://www.c-for-dummies.com/|The Unofficial C for Dummies Web Page]] - support, Errata * [[http://www.dangookin.com/|Author's website]] * [[amazon>0764570692|C All-in-One Desk Reference for Dummies]] ((It appears this supersedes all his other C programming books. Good reviews too.)) ===== IDEs and Compilers ===== //The descriptions are borrowed from the tool websites// * [[http://www.delorie.com/djgpp/|DJGPP]] is a complete 32-bit C/C++ development system for Intel 80386 (and higher) PCs running DOS. It includes ports of many GNU development utilities. The development tools require a 80386 or newer computer to run, as do the programs they produce. In most cases, the programs it produces can be sold commercially without license or royalties. * [[http://www.digitalmars.com/|Digital Mars C and C++ Compilers]] for Win32, Win16, DOS32 and DOS. Fastest compile/link times, powerful optimization technology, Design by Contract, complete library source, HTML browsable documentation, disassembler, librarian, resource compiler, make, etc., command line and GUI versions, tutorials, sample code, online updates, Standard Template Library, and [[http://www.digitalmars.com/features.html|much more]]. * [[http://www.mingw.org/|MinGW]] A collection of freely available and freely distributable Windows specific header files and import libraries, augmenting the GNU Compiler Collection, (GCC), and its associated tools, (GNU binutils). MinGW provides a complete Open Source programming tool set which is suitable for the development of native Windows programs that do not depend on any 3rd-party C runtime DLLs.((This is what I'm using to learn C++.)) * [[http://www.microsoft.com/express/vc/| Microsoft Visual C++ Express]] can build both native and managed applications. Included is the Windows Platform SDK which can build applications that use the Win32 API. Applications utilizing either MFC or ATL require the Standard Edition or higher, and will not compile with the Express Edition.(([[http://en.wikipedia.org/wiki/Microsoft_Visual_Studio_Express|From Wikipedia.org entry]])) * [[http://www.microsoft.com/express/2005/platformsdk/default.aspx|Using Visual C++ 2005 Express Edition with the Microsoft Platform SDK]] * [[http://www.learncpp.com/cpp-tutorial/a2-using-libraries-with-visual-studio-2005-express/|Using libraries with Visual Studio 2005 Express]] ==== Compiler lists ==== * [[http://www.willus.com/ccomp.shtml?p11|Willus.com's Win32 C/C++ Compilers Page]] * [[http://www.thefreecountry.com/compilers/cpp.shtml|thefreecountry.com - Free C/C++ Compilers and Interpreters]] ===== Cool tools ===== ==== Windows specific ==== * [[http://www.dependencywalker.com/|Dependency Walker]] is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules.