List of books recommended for learning C (Beginners to Advanced)
Beginner:
C Programming - A Modern Approach
Effective C
Beej's Guide to C Programming - Free Online Book
Intermediate
Modern C
21st Century C - C tips from new school
Advanced
Linux Programming Interface
Secure Coding in C and C++
Advanced Programming in the Unix Environment
Windows via C/C++
Authors and books to avoid like a plague: (because they teach bad programming practices or/and because they are not standard compliant or/and because they use code snippets that themselves lead to Undefined Behavior)
Teach Yourself C by Herbert Schildt
Programming in ANSI C by Balaguruswamy
Let Us C and Pointers in C by Yashwant Kanitkar
Beginning C by Ivor Horton
C How to Prgram by Deitel and Deitel
Beginner:
C Programming - A Modern Approach
Effective C
Beej's Guide to C Programming - Free Online Book
Intermediate
Modern C
21st Century C - C tips from new school
Advanced
Linux Programming Interface
Secure Coding in C and C++
Advanced Programming in the Unix Environment
Windows via C/C++
Authors and books to avoid like a plague: (because they teach bad programming practices or/and because they are not standard compliant or/and because they use code snippets that themselves lead to Undefined Behavior)
👍14👎3
List of books recommended for learning C++ (Beginners to Advanced)
Beginner:
C++ Primer (by Stanley Lippman)
Programming: Principles and Practice Using C++
If you prefer online tutorials (learning trails) to a book, then Welcome Back to C++ (Microsoft Docs) is a decent learning guide but this assumes you have programmed in C++03 before.
Intermediate:
Effective Modern C++
C++ Templates: The Complete Guide
C++ 17 - The Complete Guide
C++ 20 - The Complete Guide
Functional Programming in C++
Advanced:
C++ Concurrency In Action
Large Scale C++ volume I, Process and architecture
Authors and books to avoid like a plague: (because they teach bad programming practices or/and because they are not standard compliant or/and because they use code snippets that themselves lead to Undefined Behavior)
Beginning C++ by Herbert Schildt
Programming in C++ by Balaguruswamy
Let Us C++ by Yashwant Kanitkar
Computer Science with C++ by Sumita Arora
Beginning C++ by Ivor Horton
C++ How to Program by Deitel and Deitel
C++ Primer Plus by Stephen Prata
Video Resources for C/C++
(This section is a work in progress and will be updated as and when good resources for beginners are discovered)
These resources are not an alternative for the books mentioned earlier. They can at best act as complimentary resources. They can't substitute the books.
C
1. Low Level Programming in C (CSE 325)
C++
1. Hacking C++ (Comprehensive collection of videos on varied topics)
2. Effective C++ (Scott Meyer's lectures for his book Effective Modern C++)
Data Structures and Algorithms : DSA
C++ Lectures in Russian
Author: Konstantin Vladimirov, a former engineer at Intel and currently an engineering manager at Syntacore.
1. Basic C++ Course: Designed for individuals with prior experience in C language and Algorithms, this course provides a solid foundation in C++ programming.
Watch here: Basic C++ Course
2. C++ Course for Master's Students: Tailored for advanced learners, this course delves into cutting-edge concepts of C++.
Watch here: C++ For Master's Students
3. Lectures on C++ Standard: For those seeking a deeper insight, this series explores the intricacies of the language as specified in the standard.
Watch here: Standard C++
4. Informal Series of Lectures on GNU Toolchain: Gain practical knowledge and into the GNU toolchain through this set of lectures.
Watch here: Toolchain
Beginner:
C++ Primer (by Stanley Lippman)
Programming: Principles and Practice Using C++
If you prefer online tutorials (learning trails) to a book, then Welcome Back to C++ (Microsoft Docs) is a decent learning guide but this assumes you have programmed in C++03 before.
Intermediate:
Effective Modern C++
C++ Templates: The Complete Guide
C++ 17 - The Complete Guide
C++ 20 - The Complete Guide
Functional Programming in C++
Advanced:
C++ Concurrency In Action
Large Scale C++ volume I, Process and architecture
Authors and books to avoid like a plague: (because they teach bad programming practices or/and because they are not standard compliant or/and because they use code snippets that themselves lead to Undefined Behavior)
Video Resources for C/C++
(This section is a work in progress and will be updated as and when good resources for beginners are discovered)
These resources are not an alternative for the books mentioned earlier. They can at best act as complimentary resources. They can't substitute the books.
C
1. Low Level Programming in C (CSE 325)
C++
1. Hacking C++ (Comprehensive collection of videos on varied topics)
2. Effective C++ (Scott Meyer's lectures for his book Effective Modern C++)
Data Structures and Algorithms : DSA
C++ Lectures in Russian
Author: Konstantin Vladimirov, a former engineer at Intel and currently an engineering manager at Syntacore.
1. Basic C++ Course: Designed for individuals with prior experience in C language and Algorithms, this course provides a solid foundation in C++ programming.
Watch here: Basic C++ Course
2. C++ Course for Master's Students: Tailored for advanced learners, this course delves into cutting-edge concepts of C++.
Watch here: C++ For Master's Students
3. Lectures on C++ Standard: For those seeking a deeper insight, this series explores the intricacies of the language as specified in the standard.
Watch here: Standard C++
4. Informal Series of Lectures on GNU Toolchain: Gain practical knowledge and into the GNU toolchain through this set of lectures.
Watch here: Toolchain
Docs
Welcome Back to C++ - Modern C++
Learn about the new programming idioms in modern C++ and their rationale. Understand some of the advantages of modern C++.
👍14👎1
C++ Guidelines - This site lists guidelines for C++ Programmers. Both Bjarne Stroustrup and Herb Sutter monitor the guidelines here to ensure they reflect the current standards on best programming practices.
CPP Best Practices - This site is maintained by Jason Turner (one of the cppcast podcast host) and perfectly compliments the site above.
CPP Best Practices - This site is maintained by Jason Turner (one of the cppcast podcast host) and perfectly compliments the site above.
isocpp.github.io
C++ Core Guidelines
The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++
👍2
C++ Documentation - CppReference
Only quote this site in your answers. Quotes from other sites like CProgramming or CPlusPLus are not authentic and don't reflect the C++ standard or Modern Programming guidelines. Accordingly, any links to such sites will be deleted.
Only quote this site in your answers. Quotes from other sites like CProgramming or CPlusPLus are not authentic and don't reflect the C++ standard or Modern Programming guidelines. Accordingly, any links to such sites will be deleted.
👍4
Best IDEs for C/C++ Development
When a user asks for a recommendation for the best development environment on a platform, they are usually concerned about just the coding editor. But a development environment is much more than that. It includes at the minimum a powerful code editor, a debugger, a compiler, a linker and build tools to manage your source code and artifacts.
A software like Visual Studio combines all of them in one package. But some others like to mix and match. Keeping in mind that most of the users who ask this question are beginners, here are a few recommendations.
Before I list down the IDEs to use, let me list the ones that you should avoid.
Turbo C and Turbo C++
Dev C++
Both these are relics of the past and were/are no longer suitable for C and C++ development. Please avoid them at all costs and switch to the more modern development environments listed below.
Windows
Microsoft Visual Studio (Latest Community Edition). The Community Edition is free for use. The Professional and the Enterprise edition come with more bells and whistles that are geared towards a team of developers and you will have to pay for them. For most individuals, the Community Edition should be perfect.
CLion - This is arguably as good as Visual Studio. It however is free only if you are a student. You need to provide them with your school/college email id to be able to use their IDE for free. This software package comes bundled with the build tools like compiler et al. You will not have to install them separately
For Windows it is recommended to stick with Visual Studio or CLion. If you are familiar with alternate installation of compilation tools then other IDEs like Code Blocks or an editor like VS Code are good enough
For Windows the best compilation platform is the one offered by Microsoft itself and it comes bundled with the Visual Studio package installer or the CLion installer. You can install the compilation platform alone as well without the Visual Studio editor/debugger
Some users prefer to install GCC or Clang on their Windows machines. To do that you will have to use MSYS2 (if you are from a Linux env and prefer the entire Linux build platform). Cygwin and MinGW are not recommended as they lag behind MSYS2 on the latest version of the build tools. Unless you want to be stuck with an old version of GCC or Clang, use MSYS2.
Update - Winlibs offers a complete standalone build environment that features GCC or Clang for Windows. This is a better alternative to MSYS2 even.
Once you install the required environment, you can change your Visual Studio settings or the CLion settings to point to these installations.
Visual Studio Code
This unlike Visual Studio is just a code editor (packed with some useful features). People who don't want a bulky software installation like Visual Studio, usually prefer Code. But remember that this is just an editor. You must install the build platform following the steps mentioned earlier and configure Code Editor's settings to point to the installation environment.
Code Blocks
This is just like Visual Studio Code. You install Code Blocks and then change its settings to point to the compiler, debugger et al that you want to use and you are good to go.
There are other IDEs like QTCreator etc etc which deserve special mention. But they are best avoided by beginners because they enforce certain rules on developers which are best avoided as a beginner.
Linux
Most Linux installations have GCC/G++/bintools et al pre-installed. If yours doesn't, check your distro's documentation to see how you can install these packages on your machine. If you prefer the LLVM environment, then check your distro's package manager documentation to see how you can install LLVM Clang.
The best code editors (IDEs) for Linux are
CLion
Visual Studio Code
QTCreator (Not for beginners)
Atom
ViM
emacs
MacOS
XCode (Usually is pre-installed & recommended)
CLion
Visual Studio Code
(Section In Progress. Suggestions and instructions from Mac users are welcome)
When a user asks for a recommendation for the best development environment on a platform, they are usually concerned about just the coding editor. But a development environment is much more than that. It includes at the minimum a powerful code editor, a debugger, a compiler, a linker and build tools to manage your source code and artifacts.
A software like Visual Studio combines all of them in one package. But some others like to mix and match. Keeping in mind that most of the users who ask this question are beginners, here are a few recommendations.
Before I list down the IDEs to use, let me list the ones that you should avoid.
Both these are relics of the past and were/are no longer suitable for C and C++ development. Please avoid them at all costs and switch to the more modern development environments listed below.
Windows
Microsoft Visual Studio (Latest Community Edition). The Community Edition is free for use. The Professional and the Enterprise edition come with more bells and whistles that are geared towards a team of developers and you will have to pay for them. For most individuals, the Community Edition should be perfect.
CLion - This is arguably as good as Visual Studio. It however is free only if you are a student. You need to provide them with your school/college email id to be able to use their IDE for free. This software package comes bundled with the build tools like compiler et al. You will not have to install them separately
For Windows it is recommended to stick with Visual Studio or CLion. If you are familiar with alternate installation of compilation tools then other IDEs like Code Blocks or an editor like VS Code are good enough
For Windows the best compilation platform is the one offered by Microsoft itself and it comes bundled with the Visual Studio package installer or the CLion installer. You can install the compilation platform alone as well without the Visual Studio editor/debugger
Some users prefer to install GCC or Clang on their Windows machines. To do that you will have to use MSYS2 (if you are from a Linux env and prefer the entire Linux build platform). Cygwin and MinGW are not recommended as they lag behind MSYS2 on the latest version of the build tools. Unless you want to be stuck with an old version of GCC or Clang, use MSYS2.
Update - Winlibs offers a complete standalone build environment that features GCC or Clang for Windows. This is a better alternative to MSYS2 even.
Once you install the required environment, you can change your Visual Studio settings or the CLion settings to point to these installations.
Visual Studio Code
This unlike Visual Studio is just a code editor (packed with some useful features). People who don't want a bulky software installation like Visual Studio, usually prefer Code. But remember that this is just an editor. You must install the build platform following the steps mentioned earlier and configure Code Editor's settings to point to the installation environment.
Code Blocks
This is just like Visual Studio Code. You install Code Blocks and then change its settings to point to the compiler, debugger et al that you want to use and you are good to go.
There are other IDEs like QTCreator etc etc which deserve special mention. But they are best avoided by beginners because they enforce certain rules on developers which are best avoided as a beginner.
Linux
Most Linux installations have GCC/G++/bintools et al pre-installed. If yours doesn't, check your distro's documentation to see how you can install these packages on your machine. If you prefer the LLVM environment, then check your distro's package manager documentation to see how you can install LLVM Clang.
The best code editors (IDEs) for Linux are
CLion
Visual Studio Code
QTCreator (Not for beginners)
Atom
ViM
emacs
MacOS
XCode (Usually is pre-installed & recommended)
CLion
Visual Studio Code
(Section In Progress. Suggestions and instructions from Mac users are welcome)
Visual Studio
Visual Studio: IDE and Code Editor for Software Development
Visual Studio dev tools & services make app development easy for any developer, on any platform & language. Develop with our code editor or IDE anywhere for free.
👍9
Referencing the Standard and Understanding the Standardization Process
Referencing
Standardization Process
Referencing
Standardization Process
C++ Stories
[Tip] How to Reference the C++ Standard or a Proposal
You’re writing a document about C++, one feature or some cool programming technique. At one point you think that you have to prove that something works and that’s why you need to quote text from the Standard. How to do it?
Intro Referencing the C++ Standard…
Intro Referencing the C++ Standard…
👍3
👍2
C/C++ Open Source Libraries
A list of open source C++ libraries
A list of open source C libraries
Another list for C++ libraries (May overlap with the previous one)
How to Build X from scratch - A collection of tutorials on how you can build from scratch something like an emulator, game engine, a container like Docker etc etc
A list of open source C++ libraries
A list of open source C libraries
Another list for C++ libraries (May overlap with the previous one)
How to Build X from scratch - A collection of tutorials on how you can build from scratch something like an emulator, game engine, a container like Docker etc etc
👍1