C++ sering disebut bahasa yang “tidak terlihat”: ia jarang menjadi wajah depan aplikasi, tetapi ia menjalankan sebagian besar software yang kita sentuh setiap hari. Browser yang membuka halaman ini, game yang kita mainkan, dan database yang menyimpan data aplikasi favorit kita biasanya memiliki inti C++. Pada Chapter ini kita memetakan domain-domain besar yang memakai C++ beserta alasan teknis mengapa domain tersebut memilihnya. Di bagian akhir, kita menghitung sendiri satu angka khas game engine — frame budget — lewat program kecil yang benar-benar berjalan.
Peta Cepat: Domain dan Produk Nyata #
Sebagai gambaran umum, berikut pemetaan domain ke produk yang banyak dikenal:
- Game engine: Unreal Engine (C++ murni), core Unity, SDK konsol game.
- Browser dan mesin JavaScript: Chrome/Chromium, WebKit (Safari), mesin V8 dan SpiderMonkey.
- Sistem operasi dan driver: komponen Windows, driver perangkat, banyak utilitas sistem.
- Database: MySQL, MongoDB, RocksDB, LevelDB.
- Sistem finansial: platform perdagangan berfrekuensi tinggi (HFT) dan infrastruktur bursa.
- Embedded dan automotif: ECU kendaraan (subset C++ pada AUTOSAR), drone, perangkat medis, IoT.
- Grafis dan kreatif: Blender, suite Adobe, software CAD, driver OpenGL/Vulkan.
- Machine learning: core TensorFlow dan PyTorch (LibTorch), ONNX Runtime.
Delapan domain di atas kita telusuri satu per satu di bawah ini.
Game Engine dan Grafis Real-Time #
Game adalah salah satu pengguna C++ yang paling menuntut. Engine harus menghitung fisika, kecerdasan buatan, dan grafis dalam jatah waktu sangat sempit — pada 60 FPS, seluruh pekerjaan satu frame harus tuntas dalam sekitar 16,67 milidetik. C++ menawarkan kontrol memori dan prediktabilitas eksekusi yang dibutuhkan, tanpa jeda yang ditimbulkan garbage collector. Unreal Engine ditulis dalam C++ dan membuka API-nya ke developer game; Unity juga menjadikan C++ bagian inti engine-nya. Dunia grafis profesional serumpun: Blender, suite Adobe, dan software CAD memakai C++, begitu pula driver OpenGL/Vulkan yang berbicara langsung dengan GPU.
Browser dan Mesin JavaScript #
Setiap kali JavaScript berjalan di browser, kode itu dieksekusi oleh mesin yang ditulis dengan C++. Mesin V8 milik Chrome, SpiderMonkey milik Firefox, dan JavaScriptCore milik Safari adalah program C++ berukuran jutaan baris. Parser HTML, renderer halaman, dan jaringan browser juga berat di sisi C++: Chromium sendiri adalah salah satu proyek C++ open source terbesar di dunia. Alasan pemilihannya konsisten: browser harus merespons dalam hitungan milidetik, mengelola memori dari jutaan objek halaman, dan berjalan di berbagai sistem operasi.
Sistem Operasi, Driver, dan Perangkat Embedded #
Pada lapisan sistem, C++ hidup berdampingan dengan C. Banyak komponen Windows dan aplikasi sistem ditulis dengan C++ (MSVC adalah compiler utamanya), sementara driver perangkat kerap memakai C atau subset C++. Di dunia embedded, C++ mendominasi ketika perangkat cukup besar untuk butuh abstraksi: ECU kendaraan mengikuti standar AUTOSAR yang menggunakan subset C++14, drone dan robot memakai C++ untuk kontrol real-time, dan banyak perangkat medis serta perangkat IoT memproses sensornya dengan C++. Karena tidak ada garbage collector, timing program bisa diprediksi — syarat mutlak pada sistem yang mengendalikan perangkat fisik.
Database dan Infrastruktur Data #
MySQL dan MongoDB — dua nama paling populer di dunia database — membangun inti penyimpanannya dengan C++. Proyek seperti RocksDB dan LevelDB (storage engine yang dipakai banyak sistem modern) juga ditulis dengan C++. Pekerjaan database sangat sensitif terhadap memori: buffer pool, cache halaman, dan indeks harus dikelola secara presisi agar throughput tinggi dan latensi stabil. C++ memungkinkan perancang database memutuskan persis kapan alokasi terjadi dan bagaimana data tersusun di memori, sesuatu yang sulit dicapai pada bahasa ber-garbage-collector.
Sistem Finansial Berlatensi Rendah #
Di dunia perdagangan berfrekuensi tinggi (HFT), perbedaan satu mikrodetik bisa berarti keunggulan kompetitif. Sistem matching engine bursa, gateway perdagangan, dan strategi low-latency lazim ditulis dengan C++ karena ia memberi kontrol penuh atas alokasi memori, layout data, dan urutan eksekusi. Banyak firma finansial juga memakai C++ untuk sistem risiko dan pricing yang menghitung model matematis berat dalam waktu terbatas. Pola yang sama berlaku pada simulasi ilmiah dan rekayasa: model komputasi besar ditulis C++ agar berjalan cepat, lalu dibungkus antarmuka bahasa lain untuk kemudahan penggunaan.
Machine Learning dan Komputasi Ilmiah #
Framework machine learning populer berwajah Python, tetapi bagian yang berat sebenarnya berjalan di backend C++. TensorFlow mengeksekusi graf operasinya lewat core C++, PyTorch memakai pustaka C++ bernama LibTorch, dan ONNX Runtime untuk inferensi juga berbasis C++. Kernel komputasi GPU di banyak framework ditulis dengan CUDA C++. Python berperan sebagai lapisan pengantar yang nyaman, sedangkan C++ memastikan setiap operasi tensor berjalan secepat mungkin di CPU maupun GPU. Pola “frontend ramah, backend C++” ini kini menjadi arsitektur standar industri.
Frame Budget: Perhitungan Nyata di Balik Game #
Semua domain di atas bertemu pada satu benang merah: kontrol waktu dan memori per operasi. Mari kita lihat contoh perhitungan paling khas dari game engine — membagi jatah waktu satu frame. Pada 60 FPS, engine punya sekitar 16,67 milidetik per frame untuk semua pekerjaan:
#include <iomanip>
#include <iostream>
int main() {
const double targetFps = 60.0;
const double budgetFrameMs = 1000.0 / targetFps; // jatah waktu per frame
double waktuLogika = 8.2; // update fisika dan aturan gameplay
double waktuRender = 6.1; // menggambar scene ke layar
double sisaWaktu = budgetFrameMs - waktuLogika - waktuRender;
std::cout << std::fixed << std::setprecision(2);
std::cout << "Budget per frame : " << budgetFrameMs << " ms\n";
std::cout << "Logika game : " << waktuLogika << " ms\n";
std::cout << "Rendering : " << waktuRender << " ms\n";
std::cout << "Sisa budget : " << sisaWaktu << " ms\n";
return 0;
}Output yang Dihasilkan:
Budget per frame : 16.67 ms
Logika game : 8.20 ms
Rendering : 6.10 ms
Sisa budget : 2.37 msBedah program di atas:
- Baris 5 (
const double targetFps): konstanta target frame rate; kataconstmembuat nilainya tidak bisa diubah setelah diinisialisasi. - Baris 6 (
budgetFrameMs): 1000 milidetik dibagi 60 frame menghasilkan jatah waktu tiap frame, sekitar 16,67 ms. - Baris 8-10: dua pos pemakai waktu — logika game dan rendering — dijumlahkan untuk menghitung sisa budget.
- Baris 12 (
std::fixeddanstd::setprecision): mengatur format angka desimal agar selalu dua angka di belakang koma; manipulator ini dibahas pada Chapter Manipulators. - Baris 13-16: laporan dicetak ke terminal; nilai
sisaWaktumenunjukkan masih ada ruang 2,37 ms sebelum frame berikutnya dimulai.
Perhitungan sederhana semacam ini berjalan ribuan kali per detik di dalam game sungguhan, dan program C++ inilah yang membuat semuanya terukur. Referensi resmi fitur bahasa yang kita pakai setiap hari selalu tersedia di cppreference.com , sementara C++ FAQ isocpp.org menjawab banyak pertanyaan praktis seputar pemakaian bahasa.
Keberagaman domain ini dimungkinkan oleh satu hal penting: C++ bukan bahasa milik satu vendor, melainkan bahasa yang distandarisasi internasional. Chapter berikutnya membongkar cara kerja standar itu — siapa yang menyusunnya, siklus rilisnya, dan bagaimana kode kita mendeteksi fitur mana yang tersedia pada compiler tertentu.