Episode ini menelusuri sejarah C++ dari kelahiran C with Classes oleh Bjarne Stroustrup, perjalanan standarisasi dari C++98 hingga C++23, peran C++ di sistem operasi dan game engine, hingga masalah yang diselesaikannya dibanding pendekatan tradisional.

Sebelum memahami cara menulis C++, penting untuk memahami mengapa C++ ada. Setiap bahasa lahir sebagai jawaban atas masalah tertentu, dan C++ lahir dari frustrasi seorang peneliti terhadap keterbatasan bahasa yang ada pada zamannya.
Episode ini membuka perjalanan kalian dengan latar belakang sejarah: siapa yang menciptakan C++, bagaimana bahasa ini berevolusi lewat berbagai standar, di mana ia dipakai di dunia nyata, dan masalah apa saja yang diselesaikannya. Pemahaman konteks ini akan membuat keputusan desain C++ yang tampak aneh menjadi masuk akal.
Sepanjang series ini, kalian akan memakai berbagai standar C++ — dari C++11 yang modern hingga C++23 yang terbaru. Memahami sejarahnya membuat pilihan fitur terasa lebih bermakna.
Pada akhir tahun 1979, Bjarne Stroustrup, seorang ilmuwan komputer di Bell Labs, mulai mengerjakan bahasa yang awalnya bernama C with Classes. Ia membutuhkan bahasa yang tetap secepat C dan mampu mengelola sumber daya sistem secara langsung, tetapi lebih ekspresif untuk menulis sistem terdistribusi yang kompleks.
Kunci dari pendekatannya: jangan ciptakan bahasa baru dari nol. Ia memperluas C dengan class, inheritance, dan type checking yang lebih ketat. Bahasa ini pertama kali dirilis secara publik dengan nama C++ pada tahun 1985, dan sejak saat itu menjadi salah satu bahasa paling berpengaruh di industri.
Nama C++ sendiri mengandung gurauan: operator ++ di C menambah nilai sebanyak satu, sehingga C++ berarti "C yang ditingkatkan". Filosofi ini tercermin pada seluruh sejarah bahasa — setiap standar adalah perbaikan bertahap di atas yang sebelumnya.
Salah satu alasan C++ bertahan begitu lama adalah stabilitas kompatibilitasnya: kode C++98 yang valid umumnya tetap terkompilasi di compiler modern, fitur baru ditambahkan tanpa mencabut fitur lama, dan standar dirilis bertahap sehingga ekosistem menyesuaikan pelan-pelan. Industri yang menginvestasikan jutaan baris kode merasa aman — bahasa lain sering melakukan breaking change besar, sedangkan C++ memilih evolusi yang hati-hati.
Prinsip yang dipegang Stroustrup sejak awal: abstraksi yang kalian gunakan tidak boleh membuat program lebih lambat dibanding menulis kode C manual. Kalian boleh menulis abstraksi tingkat tinggi, tetapi jika dibongkar, kode tersebut tetap bisa berjalan secepat implementasi manual. Prinsip inilah yang disebut zero overhead abstractions.
Prinsip ini berimplikasi besar. Karena abstraksi tidak boleh membebani, C++ tidak memiliki garbage collector otomatis seperti Java — kalian mengelola memori sendiri lewat RAII. Template dibangkitkan saat kompilasi, bukan dijalankan lewat interpreter. Setiap fitur harus bisa dijelaskan biayanya. Inilah yang membuat C++ tetap relevan di bidang yang menuntut kinerja.
C++ pertama kali distandarkan oleh ISO pada tahun 1998 menjadi C++98, dengan perbaikan kecil C++03 pada 2003. C++98 sudah memuat STL, template, exception, dan RTTI. Namun standar ini terasa berat: pemrograman manual ala C masih dominan, dan pola RAII belum menjadi kebiasaan luas.
C++11 adalah lompatan terbesar dalam sejarah bahasa ini: auto, range-based for, lambda, move semantics, smart pointers, nullptr, dan initializer lists. Bahasa yang sebelumnya terasa kuno tiba-tiba menjadi modern. C++14 menambahkan generic lambdas, constexpr yang lebih fleksibel, dan penyederhanaan lain. Sejak saat itu, C++ dianggap sebagai bahasa yang hidup.
C++17 membawa structured bindings, std::optional, dan std::variant. C++20 memperkenalkan concepts, coroutines, ranges, std::format, dan modules. C++23 menambahkan std::print, std::expected, dan perbaikan modular. Standar yang dipilih saat kompilasi menentukan fitur apa saja yang tersedia:
g++ -std=c++17 main.cpp -o main17
g++ -std=c++20 main.cpp -o main20
g++ -std=c++23 main.cpp -o main23Perintah g++ -std=c++20 main.cpp -o main20 mengaktifkan fitur C++20. Versi standar terbaru yang didukung compiler menentukan fitur yang bisa kalian pakai. Sepanjang series ini, contoh utama memakai C++20 dan C++23.
Irama rilis C++ semakin cepat — dari satu standar per dekade menjadi satu per tiga tahun. Setiap iterasi memperluas bahasa tanpa meninggalkan kompatibilitas dengan program lama. Berikut peta standar dalam satu pandangan:
| Standar | Tahun | Sorotan Utama |
|---|---|---|
| C++98 | 1998 | STL, template, exception, RTTI |
| C++11 | 2011 | auto, lambda, move semantics, smart pointers |
| C++14 | 2014 | generic lambda, constexpr lebih fleksibel |
| C++17 | 2017 | structured bindings, optional, variant |
| C++20 | 2020 | concepts, coroutines, ranges, format |
| C++23 | 2023 | print, expected, mdspan |
Tabel di atas membantu kalian memposisikan kode lama dan baru: saat menemui kode yang memakai auto dan lambda, kalian tahu itu C++11; saat menemui std::format, itu C++20. Kemampuan membaca "zaman" sebuah kode adalah keterampilan berharga saat memelihara proyek warisan.
C++ menjadi tulang punggung banyak sistem operasi dan infrastruktur penting. Kernel Chromium, MySQL, dan bagian dari sistem operasi modern ditulis dengan C++. Kemampuan mengakses hardware secara langsung sekaligus menulis abstraksi kompleks membuatnya ideal untuk fondasi perangkat lunak.
Peran ini bukan kebetulan: sistem seperti itu menuntut kontrol memori yang presisi dan kinerja konsisten, dua hal yang menjadi inti desain C++.
Industri game adalah pengguna terbesar C++. Unreal Engine, Unity, dan Godot semuanya dibangun dengan C++. Game menuntut frame rate stabil dalam milidetik, dan hanya bahasa dengan kontrol memori deterministik yang bisa menjaminnya. Aplikasi real-time lain seperti simulasi dan trading juga bergantung pada C++.
Frame budget yang ketat berarti alokasi memori tidak boleh terjadi sembarangan di tengah rendering. C++ memberi kendali itu melalui custom allocators dan object pooling.
Di dunia embedded, C++ dipakai di firmware, sistem kendali mobil, dan perangkat medis. Di high-performance computing, superkomputer menjalankan simulasi ilmiah yang ditulis dalam C++. Perpustakaan seperti TensorFlow dan PyTorch memakai C++ untuk engine komputasi intinya, dengan Python hanya sebagai antarmuka.
Masalah utama yang diselesaikan C++ adalah dikotomi lama: bahasa berkinerja tinggi seperti C cenderung sulit dikelola, sementara bahasa yang mudah dikelola seperti Smalltalk atau Lisp lambat. C++ menawarkan keduanya: kalian mendapat kontrol memori dan pointer ala C, ditambah class, template, dan exception yang memudahkan abstraksi.
Dengan OOP, kalian memodelkan domain lewat class dan inheritance. Dengan template, kalian menulis algoritma sekali untuk semua tipe data tanpa kehilangan kinerja. Dengan RAII, resource seperti file dan memori dibebaskan otomatis saat objek keluar dari scope. Ketiganya menjawab masalah yang di pendekatan tradisional memaksa pemrogram menulis kode berulang dan rawan bocor.
Tip
Jangan terburu-buru menilai C++ kuno. Fitur modern sejak C++11 mengubah cara kerja bahasa ini secara fundamental — episode 16 akan membahasnya mendalam.
Inti yang harus dibawa pulang:
-std sesuai fitur yang dibutuhkan.Di episode 2 selanjutnya kita akan membahas konsep dasar dan arsitektur utama — proses kompilasi dari preprocessing hingga linking, model memori stack dan heap, ABI dan name mangling, struktur program dengan header dan source file, serta build workflow menggunakan CMake. Ini adalah fondasi teknikal yang akan kalian butuhkan di setiap episode berikutnya.