anhldbk / opinioned-cpp

This opinioned document outlines several things to start with programming in C/C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

C/C++ Programming

C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off (Bjarne Stroustrup)

This opinioned document outlines several things to start with programming in C/C++

Must read

1. Languages

  • C++ Core Guidelines: The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++

2. Libraries

2.1 Frameworks
  • Poco: Versatile cross-platform C++ libraries with a network/internet focus. "The battery pack for C++."
  • facebook/folly: An open-source C++ library developed and used at Facebook
  • Boost ⚡️ - A large collection of generic C++ libraries.
2.2 Algorigthms & data structures
2.3 Testing
  • Catch2: A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later
  • google/googletest: Google Test
  • mocking: The Google C++ mocking framework.
2.4 Database
  • facebook/rocksdb: A library that provides an embeddable, persistent key-value store for fast storage (A good replacement for sqlite)
  • SimDB: A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store
2.5 Logging
2.6 Networking
  • libevent
  • libuv
  • facebook/libphenom: An eventing framework for building high performance and high scalability systems in C.
  • Qihoo360/evpp: A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols
  • facebook/proxygen: A collection of C++ HTTP libraries including an easy to use HTTP server
  • facebook/wangle: Wangle is a framework providing a set of common client/server abstractions for building services in a consistent, modular, and composable way.
  • grpc: An RPC library and framework
  • facebook/fbthrift: Facebook's branch of Apache Thrift, including a new C++ server.
2.7 Memory managment
  • jemalloc: jemalloc is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
2.8 Configuration
  • yaml-cpp: A YAML configuration parser and emitter in C++
2.9 Others

3. Tools

4. Books

5. References

About

This opinioned document outlines several things to start with programming in C/C++