C++ adalah bahasa pemrograman tingkat tinggi yang dikembangkan oleh Bjarne Stroustrup pada tahun 1985 di Bell Labs. Bahasa ini merupakan pengembangan dari bahasa C dengan menambahkan fitur pemrograman berorientasi objek (OOP). C++ dikenal sebagai bahasa yang powerful, efisien, dan fleksibel, sering digunakan untuk pengembangan perangkat lunak yang membutuhkan kinerja tinggi.
**Sejarah Singkat C++**
- 1979: Bjarne Stroustrup mulai mengembangkan "C with Classes"
- 1983: Nama berubah menjadi C++ (operator increment ++ dalam C)
- 1985: Rilis komersial pertama
- 1998: Standarisasi pertama (C++98)
- 2011: Pembaruan besar (C++11) dengan banyak fitur baru
- Terakhir: C++20 (2020), dengan C++23 dalam pengembangan
**Karakteristik Utama C++**
1. **Multi-Paradigma**: Mendukung prosedural, OOP, dan generic programming
2. **Efisiensi Tinggi**: Performa mendekati bahasa assembly
3. **Kompilasi**: Kode dikompilasi ke bahasa mesin
4. **Manajemen Memori Manual**: Menggunakan pointer dan alokasi dinamis
5. **Portabel**: Kode dapat dikompilasi di berbagai platform
**Struktur Dasar Program C++**
```cpp
#include <iostream> // Preprocessor directive
using namespace std; // Menggunakan std namespace
int main() { // Fungsi utama
cout << "Hello World!" << endl; // Output
return 0; // Nilai kembalian
}
```
**Fitur Penting C++**
1. **Object-Oriented Programming**:
- Class dan Object
- Inheritance
- Polymorphism
- Encapsulation
2. **Template**: Untuk pemrograman generik
```cpp
template <typename T>
T max(T a, T b) {
return (a > b) ? a : b;
}
```
3. **Standard Template Library (STL)**:
- Containers (vector, list, map)
- Algorithms (sort, find)
- Iterators
4. **Memory Management**:
- Pointer
- new/delete operators
- Smart pointers (C++11+)
**Tipe Data Dasar**
- int, float, double, char, bool
- Modifiers: short, long, signed, unsigned
- Tipe komposit: array, struct, union
**Struktur Kontrol**
1. Percabangan:
```cpp
if (x > 0) {
// ...
} else {
// ...
}
```
2. Perulangan:
```cpp
for (int i = 0; i < 10; i++) {
// ...
}
while (condition) {
// ...
}
```
**Fungsi**
```cpp
int tambah(int a, int b) {
return a + b;
}
```
**Pointer dan Reference**
```cpp
int var = 10;
int* ptr = &var; // Pointer
int& ref = var; // Reference
```
**Aplikasi C++**
1. Sistem Operasi (Windows, Linux kernel components)
2. Game Development (Unreal Engine)
3. Embedded Systems
4. High-performance Computing
5. Database Systems
6. Compiler Development
**Kelebihan C++**
1. Performa sangat tinggi
2. Kontrol penuh terhadap sistem
3. Kompatibilitas dengan C
4. Ekosistem library yang kaya
5. Digunakan di industri kritikal
**Kekurangan C++**
1. Kurva belajar yang curam
2. Manajemen memori manual berisiko
3. Sintaks yang kompleks
4. Waktu pengembangan lebih lama dibanding bahasa tingkat tinggi
**Tools Pengembangan**
1. Compiler: g++, clang, MSVC
2. IDE: Visual Studio, CLion, Code::Blocks
3. Build Systems: CMake, Make
4. Debugger: gdb, lldb
**Contoh Program**
Program menghitung faktorial:
```cpp
#include <iostream>
using namespace std;
int factorial(int n) {
return (n == 0) ? 1 : n * factorial(n - 1);
}
int main() {
int num = 5;
cout << "Factorial of " << num << " is " << factorial(num);
return 0;
}
```
**Standar Modern C++**
1. C++11: auto, lambda, smart pointers
2. C++14: Generic lambdas, digit separators
3. C++17: Structured bindings, filesystem
4. C++20: Concepts, ranges, coroutines
**Sumber Belajar**
1. Buku: "The C++ Programming Language" (Bjarne Stroustrup)
2. Website: cppreference.com
3. Tutorial: learncpp.com
4. Kursus: Udemy, Coursera
**Komunitas dan Masa Depan**
C++ terus berkembang dengan standar baru setiap 3 tahun. Digunakan secara luas di industri yang membutuhkan performa tinggi seperti finance, game development, dan sistem embedded. Komunitas C++ sangat aktif dalam pengembangan fitur baru dan perbaikan performa.
**Kesimpulan**
C++ tetap menjadi bahasa yang sangat relevan setelah lebih dari 35 tahun. Meskipun kompleks, kekuatan dan fleksibilitasnya membuat C++ menjadi pilihan utama untuk aplikasi yang membutuhkan kontrol hardware dan optimasi performa. Pemahaman mendalam tentang C++ memberikan fondasi kuat untuk mempelajari konsep pemrograman tingkat rendah dan sistem komputer.
