# Welcome!

C++ can feel overwhelming!

Maybe you first encountered it in CS2040C algorithms & data structures module. Maybe you heard horror stories about pointers and seemingly mysterious segmentation faults that span 300 lines!

Despite its pitfalls, C++ remains the language of choice behind the many of the world's fastest systems. This includes high performance databases like [Clickhouse](https://clickhouse.com/) and [RocksDB](https://rocksdb.org/), game engines like [Unreal Engine](https://www.unrealengine.com/en-US/unreal-engine-5) and browsers like [Google Chrome](https://www.google.com/intl/en_sg/chrome/).

### Why C++?

Unlike purely managed languages, C++ does not shy away from the messy details. Instead, it forces one to understand what your program is actually doing. This includes understanding how memory layout, object lifetimes and resource management actually works. While this might appear initially uncomfortable, it helps builds deep intuition about how computers actually work.

### Using this guide

If you are new to C++, you are highly encouraged to read through the content in order. The guide walks you through some of C++ fundmwnrtasl, common memory pitfalls and how modern C++ features are designed to help you tackle and avoid them.

If however, you are familiar with C++ constructs (i.e variables, loops, functions), feel free to skip ahead towards the [memory-and-ownership](https://wiki.nushackers.org/hackerschool/introduction-to-cpp/memory-and-ownership "mention") section. This introductory workshop is tailored towards begineers so you might find the content a bit brief.

### Who Am I?

I'm Benn Tan, a computer science undergraduate from the National University of Singapore and a core member of NUS Hackers.

I've previously used C++ in my own free time and I hope to share some of the knowledge gained through [learncpp.benntan.com](https://learncpp.benntan.com)
