Apa itu C ?

Sejarah singkat bahasa C sejak 1972 dan posisi C saat ini pada kernel sistem operasi, perangkat tertanam, dan driver.

Daftar isi

Topik ini memperkenalkan bahasa C dari tiga sisi, yaitu sejarah singkat sejak 1972, karakteristik yang membedakan C dari bahasa pemrograman lain, dan posisi C dalam teknologi yang dijalankan setiap hari. Setelah topik ini dibaca, asal usul C beserta alasan bahasa ini masih dipelihara hingga kini dapat dijelaskan dengan bukti konkret. Satu program kecil ikut dikompilasi dan dijalankan agar sifat C sebagai bahasa hasil kompilasi terlihat langsung, bukan sekadar dinyatakan.

Lahir dari kebutuhan UNIX#

C lahir di Bell Labs pada 1972 sebagai bagian dari proyek UNIX. Sistem operasi UNIX yang dirintis Ken Thompson semula ditulis dalam bahasa rakitan (assembly), sehingga hanya berjalan pada satu jenis mesin dan sulit dipindahkan ke mesin lain. Thompson kemudian menciptakan bahasa B, turunan dari BCPL, untuk keperluan proyek yang sama.

Bahasa B tidak mengenal tipe data, dan pada mesin 16-bit seperti PDP-11 bahasa itu terbukti lambat serta sulit menangani data karakter dan bilangan pecahan. Dennis Ritchie menyempurnakan B dengan sistem tipe data yang lengkap, dan hasilnya diberi nama C sebagai kelanjutan urutan huruf dari B. Pada 1973, UNIX berhasil ditulis ulang dalam C, sehingga sistem operasi yang sama dapat dipindah ke mesin lain hanya dengan mengompilasi ulang kode sumbernya.

Portabilitas itulah yang membuat C cepat diterima. Mesin komputer baru tidak lagi menuntut penulisan ulang sistem operasi dari nol, cukup penyesuaian bagian kecil lalu kompilasi ulang. Kepopuleran C juga terdorong oleh buku The C Programming Language karya Brian Kernighan dan Dennis Ritchie yang terbit pada 1978. Buku yang dikenal sebagai K&R itu menjadi acuan tidak resmi pemrogram C selama hampir satu dekade, sebelum standar resmi dirumuskan.

Garis waktu berikut merangkum tonggak perjalanan C dari 1969 hingga 2024.

1969197219781989199920112024UNIX dimulaiC lahirBuku K&RANSI CC99C11C23
Garis waktu perkembangan bahasa C

Proses pembakuan berlanjut hingga kini, sebagaimana dirangkum tabel berikut.

StandarTahunCatatan singkat
K&R1978Acuan tidak resmi dari buku Kernighan dan Ritchie.
C89/C901989/1990Standar pertama, dirumuskan ANSI lalu diadopsi ISO.
C991999Komentar satu baris // dan tipe long long ditambahkan.
C112011Pemeriksaan tipe dengan _Generic dan pustaka thread standar.
C232024Versi terbaru yang diterbitkan ISO.

Karakteristik yang membedakan C#

C adalah bahasa hasil kompilasi (compiled language), yaitu kode sumber diterjemahkan menjadi kode mesin sebelum program dijalankan. Bentuk ini berbeda dari bahasa yang dieksekusi interpreter baris demi baris pada saat program berjalan. Pengetikan C juga statis (static typing), sehingga tipe setiap variabel ditetapkan dan diperiksa pada saat kompilasi, bukan saat program berjalan. Pustaka standarnya sengaja dibuat kecil, sehingga banyak kemampuan tambahan datang dari pustaka lain atau kode yang ditulis sendiri.

Karakteristik yang paling menonjol adalah kedekatan C dengan perangkat keras. Alamat memori, byte, dan register dapat diakses secara langsung tanpa lapisan perantara, sedangkan bahasa yang lebih tinggi biasanya menyembunyikan detail tersebut. Kedekatan itu terlihat dalam program kecil berikut, yang menanyakan ukuran tipe dasar langsung kepada kompilatornya. Kode disimpan sebagai ukuran-tipe.c.

c ukuran-tipe.c
#include <stdio.h>

int main(void) {
    printf("Ukuran tipe char   : %zu byte\n", sizeof(char));
    printf("Ukuran tipe int    : %zu byte\n", sizeof(int));
    printf("Ukuran tipe double : %zu byte\n", sizeof(double));
    return 0;
}
text Keluaran
Ukuran tipe char   : 1 byte
Ukuran tipe int    : 4 byte
Ukuran tipe double : 8 byte

Angka pada keluaran mengikuti arsitektur tempat program dikompilasi, bukan konstanta bahasa. Pada komputer 64-bit seperti lingkungan contoh, int berukuran 4 byte, sedangkan pada banyak mikrokontroler 8-bit int berukuran 2 byte. Program C yang sama dapat memperlihatkan perbedaan perangkat keras semacam itu karena bahasanya memang berdiri dekat dengan mesin. Sifat ini menjadi alasan C banyak dipakai pada kode yang harus tahu persis bentuk datanya.

Posisi C saat ini#

Sistem operasi adalah pengguna C terbesar. Kernel Linux, yang menjalankan sebagian besar server internet serta perangkat Android, ditulis dalam C dan berisi puluhan juta baris kode. Kernel Windows juga ditulis terutama dalam C. Alasannya sejalan dengan alasan UNIX pada 1973. Kernel menuntut kendali penuh atas memori dan perangkat keras, dan C memberikan kendali itu dengan tetap portabel antarmesin.

Lapisan di bawahnya pun serupa. Driver perangkat serta perangkat lunak pada perangkat tertanam (embedded) umumnya ditulis dalam C, mulai dari mikrokontroler pada alat rumah tangga hingga sensor industri. C dipilih untuk ranah ini karena hasil kompilasinya ringkas, berjalan tanpa runtime yang berat, dan waktunya dapat diprediksi, sehingga cocok untuk perangkat dengan memori kecil.

C juga menjadi fondasi teknologi yang dikenal luas. Interpreter resmi Python bernama CPython ditulis dalam C, begitu pula sistem version control Git dan basis data SQLite. Memahami C berarti dapat membaca lapisan yang menopang banyak alat modern tersebut, sesuatu yang sulit diperoleh dari bahasa yang selalu menyembunyikan mesinnya.

Kesalahan umum#

Menyimpan kode C dengan ekstensi .cpp adalah kekeliruan yang sering terjadi. Ekstensi itu membuat kompilator C++ memperlakukan berkas sebagai C++, padahal kedua bahasa tidak identik meski sintaks dasarnya mirip. Gejalanya beragam, mulai dari pesan error yang membingungkan karena aturan C++ berbeda, hingga program yang berperilaku tidak sesuai penjelasan pada jalur ini. Simpan kode C dengan ekstensi .c dan kompilasi dengan gcc agar perilakunya konsisten dari awal hingga akhir.

Kekeliruan kedua adalah menganggap fitur standar baru langsung tersedia di semua tempat. Kode yang memakai fitur C23 dapat menimbulkan error pada kompilator yang lebih lama, misalnya pesan bahwa sebuah tipe atau kata kunci tidak dikenal. Periksa versi kompilator dengan perintah gcc --version sebelum memakai fitur terbaru, kemudian pasang versi gcc atau clang yang memadai bila versi terpasang masih tua. Kebiasaan mencatat versi alat juga membantu ketika hasil kompilasi perlu dibandingkan dengan teman belajar atau dokumentasi lain.

Ringkasan#

  • C diciptakan Dennis Ritchie pada 1972 di Bell Labs untuk kebutuhan UNIX, dan standar terbarunya, C23, diterbitkan ISO pada 2024.
  • C adalah bahasa hasil kompilasi berpengetikan statis yang berdiri dekat dengan perangkat keras, dengan pustaka standar yang kecil.
  • C mengisi lapisan terbawah teknologi modern, yaitu kernel sistem operasi, driver, perangkat tertanam, serta fondasi seperti CPython, Git, dan SQLite.

Referensi#