C++ Learning Resources
Usage
This document contains videos and articles about different aspects of C++ programming. Best way to learn from them is to try them yourself, or in case of a lecture, read some more about this topic in C++ documentation.
Advanced topics
You should not proceed to the topics after
C++ STL 10 without knowing the basics of C++ (or completing at least one series from
Basics Of C++ 10 category). The content following
C++ STL 10 isn’t sorted by the difficulity, everything there is considered advanced C++. You should be able to understand most of that and apply it in real world after compeling
Basics Of C++ 10 category.
Purpose
This place is mostly targeted for people with basic C++ and STL knowledge. It’s supposed to improve your code’s readibility, performance and make your code more compact by using STL features.
Contributing
Create either an
issue with title and link to the resource you would like to add to this document or create new branch, add some changes and create a pull request.
Comments and suggestions
Please leave your comments, thoughts and suggestions via
Issues.
Table of Contents
Best learning resources for C++
Basics Of C++
C++ STL
STL Containers
STL Algorithms
STL Utilities
Advanced C++
Constexpr
Functional
Time in C++
Random
Multithreading
Type related programming
Templates
Concepts
Type deduction
SFINAE - Substitution Failure Is Not An Error
Meta-programming
C++ Memory Management
Basics of memory management
Garbage Collection
- GC FAQ ~ Document regarding garbage collection in C++
Allocators
C++ Error Handling
C++ Application Design
C++ Object Oriented Design
C++ Design Patterns
C++ Data Oriented Design
C++ Programming Style
Generalities about C++ programming
Best practices for C++
Programing Guidelines
C++ Libraries
Embeding different languages in C++
Custom container libraries for C++
- tree.hh ~ Tree Type container library for C++
Graphical interfaces for C++
C learning resources
This repository contains list of books and other resources about C programming that in my opinion are best to learn from. There are many sources but not every is correct. This way, beginners make a lot of mistakes in their code. I suggest reading books in the order I’ve provided.
Where not to learn from:
- TutorialsPoint 1. TutorialsPoint is an good website for reference but not for learning. If you want to learn something to it’s fullest, get a book.
- Udemy. Udemy is not good place to learn C from. Courses cost pretty much ($100). Some courses recommend using old Borland C++ Builder - learning outdated stuff is not good way to go.
- SoloLearn. SoloLearn does not offer any course to learn C from. The website teaches you only theoretically how to do something, while your own experience teaches practically you how to do something.
- Youtube. Learning from various youtube channels that are not-so-popular is not a good idea. You need solid place to learn from. Although, there are channels like this one 6. They introduce really bad programming practices and teach how not to program.
Where to learn from:
- K&R book 4 is often thought as the bible of C. There are many C standards but K&R C is thought as the most common - every compiler has to support it. The most used standard is C89, although we have C99 and C11 that are more recent. This way, K&R book is always on topic. It was written by creators of C - they can’t be wrong.
- Pros:
- This book is written by Dennis Ritchie , who was one of the main people behind the development and design of C and UNIX.
- This book is so well known that it’s affectionately called “K&R”, after the authors.
- It’s been cited in many other books and is familiar to most, if not all, CS students.
- The challenges at the end of each chapter do a great job requiring many of the skills learned up to that point. Completing the challenges is a great way of insuring that you understand the material.
- Cons:
- The K&R style works for old Unix mainframe command-line programs that exit after a simple task and leave the cleanup to the OS; where input is only from trusted experts; and most functions are only called internally to the program. The environment is very different today. This style will get your server pwned by hackers, or crash it due to a memory leak. You will have to learn C again to use C correctly in the real world today .
- Some and practices are out of date, so errata and googling is needed while going through the book.
- Assumes familiarity not only with programming concepts but some C language specifics which are not so simple for beginners.
- C Programming: Modern approach, 2nd Edition 2
- Pros:
- The book really challenges you to think like a programmer by constantly asking questions that force you to solve problems, rather than telling you how to solve the problem and only asking you to write the syntax. This way helps beginner programmers to get into programming.
- The author breaks things down into small pieces and uses examples to explain everything in a very clear way.
- Doesn’t have exercise answers (can be counted like con)
- Learn C the hard way 2. Just looking at the title, it may not be greatest book for newcomer to learn.
- Pros
- It’s not just about C. It will teach to become an over-all better programmer and give a better understanding of computer science. You are going to learn about things like testing, debugging, and sorting algorithms.
- Includes 52 practical project ideas that include everything from pointers to stacks and queues.
- Con: States in the preface that it is not for first-time programmers. Better check something else, if you are new to C.
- C Programming Absolute Beginner’s Guide (3rd Edition) 2. It’s suggested to check out this book if others are too difficult for you.
- Pro: There are 32 chapters in this book, which gives 352 pages. The short chapters make it extremely easy to use this book as a reference, and breaks everything down into small pieces that are easy to digest.
- Con: This book, as the title suggests, is really aimed at people with no prior programming experience. Fundamentals are gone through in detail, this would be quite a slow review for someone with experience in another language.
- (NASA C style book)[http://homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf 1]. This book is pretty nice place to learn proper way how to program in C to write readable code.
Please note that this list as stated on beginning, is based primarily on my opinion. If you disagree with some facts, please open issue / submit a pull request that contents are satisfying you. I am working on a C book that after review will probably get on this list. Books that I am not sure about quality:
Begin(c++)
: Resources for C++ Beginners
General
Primers
Tutorials
References
Try C++
- Wandbox 2 - lets you edit, compile and run simple C++ programs in a browser
- Compiler Explorer 1 - lets you edit and compile simple C++ programs and see what assembler is produced
Community
Once You Get Comfortable
Try these intermediate-level talks that go beyond the individual features and explain how to put together the best code with them!
Bite-sized Talks
Improve Your Skills
- HackerRank sets you challenges to hone your basic programming skills
- GitHub C++ Projects are one way to learn by contributing to open source C++ projects
A small collection of notes and resources related to basic C++.
Stack Overflow’s Answer
This question attempts to collect the few pearls among the dozens of bad C++ books that are published every year. Unlike many other programming languages, which are often picked up on the go from tutorials found on the Internet, few are able to quickly pick up C++ without studying a well-written C++ book. It is way too big and complex for doing this. In fact, it is so big and complex, that there are very many very bad C++ books out there. And we are not talking about bad style, but things like sporting glaringly obvious factual errors and promoting abysmally bad programming styles.
C++ Crash Course
Others
Awesome C/C++ performance optimization resources
Contents
Talks
2013:
2014:
2015:
2016:
Articles
Manuals:
Sites/Blogs
Tools
Free
Paid
Libraries
Books
- PDF: optimizing C++ 2 - by Agner Fog. FREE
- Optimizing C++, WikiBooks - FREE
- The Software Optimization Cookbook: High Performance Recipes for IA-32 Platforms, 2nd Edition
- Video Game Optimization, Eric Preisz
- Optimized C++: Proven Techniques for Heightened Performance, Kurt Guntheroth
- Power and Performance: Software Analysis and Optimization, Jim Kukunas
- Systems Performance: Enterprise and the Cloud, Brendan Gregg
- Every Computer Performance Book, Bob Wescott
- C++ Concurrency in Action, Second Edition, Anthony Williams
About
This list was started by Bartlomiej Filipek (
@fenbf). If you like to help please read CONTRIBUTING.md instructions and just make a pull request to this repo.
License
Comments
Post a Comment