C adalah bahasa pemrograman prosedural yang bersifat umum dan telah berpengaruh dalam pengembangan banyak bahasa pemrograman modern. Dirancang untuk efisiensi dan fleksibilitas, C umumnya digunakan untuk pemrograman sistem, mengembangkan sistem operasi, dan membuat perangkat lunak aplikasi. C memberikan akses tingkat rendah ke memori dan memungkinkan manipulasi bit, menjadikannya pilihan utama untuk menulis perangkat lunak yang kritis terhadap kinerja.
C dikembangkan pada awal 1970-an oleh Dennis Ritchie di Bell Labs sebagai evolusi dari bahasa B, yang dipengaruhi oleh BCPL dan ALGOL. Awalnya, bahasa ini ditujukan untuk pemrograman sistem pada sistem operasi Unix, yang juga berasal dari Bell Labs. Desain bahasa ini berfokus pada penyediaan abstraksi tingkat tinggi di atas bahasa rakitan sambil mempertahankan efisiensi pemrograman tingkat rendah.
Pada akhir 1970-an, C mendapatkan adopsi yang luas di komunitas pemrograman, dan publikasi "The C Programming Language" oleh Brian Kernighan dan Dennis Ritchie pada tahun 1978 secara signifikan berkontribusi pada popularitasnya. Versi standar pertama, yang disebut C89 atau ANSI C, diadopsi oleh American National Standards Institute (ANSI) pada tahun 1989. Organisasi Internasional untuk Standardisasi (ISO) kemudian mengadopsinya, menghasilkan ISO C99 pada tahun 1999, yang memperkenalkan beberapa fitur baru seperti fungsi inline dan array dengan panjang variabel. Standar utama terbaru, C11, diterbitkan pada tahun 2011, dan C18, sebuah rilis perbaikan bug, menyusul pada tahun 2018.
C tetap menjadi salah satu bahasa pemrograman yang paling banyak digunakan di dunia, terutama dalam pemrograman sistem, sistem tertanam, dan aplikasi berkinerja tinggi. Sintaks dan konsepnya telah mempengaruhi banyak bahasa lain, termasuk C++, C#, Java, dan Objective-C. Relevansi yang berkelanjutan dapat dilihat dalam sistem operasi (Linux, Windows), pemrograman jaringan, sistem tertanam, dan berbagai tugas komputasi berkinerja tinggi.
C memungkinkan manipulasi langsung memori melalui pointer. Misalnya:
int x = 10;
int *p = &x; // Pointer p menyimpan alamat x
C mendukung pemrograman terstruktur melalui fungsi, memungkinkan modularitas kode. Definisi fungsi sederhana terlihat seperti ini:
void greet() {
printf("Hello, World!\n");
}
C mencakup berbagai struktur alur kontrol seperti if, switch, for, while, dan do-while, yang memfasilitasi pengambilan keputusan.
if (x > 0) {
printf("Angka positif\n");
}
C memiliki beberapa tipe data bawaan: int, char, float, double, dll. Ini juga mendukung tipe data yang ditentukan pengguna menggunakan struktur.
struct Point {
int x;
int y;
};
C mencakup seperangkat perpustakaan yang kaya untuk operasi input/output, manipulasi string, dan perhitungan matematis.
#include <stdio.h>
#include <math.h>
double sqrtValue = sqrt(16);
C memungkinkan casting tipe eksplisit, yang berguna untuk mengonversi antara tipe.
double pi = 3.14;
int intPi = (int)pi; // intPi akan menjadi 3
C mendukung tipe enumerasi untuk membuat tipe kustom.
enum Color { MERAH, HIJAU, BIRU };
C mencakup direktif preprocessor seperti #define, #include, yang menangani kode sebelum kompilasi.
#define PI 3.14
C memungkinkan deklarasi variabel dalam lingkup tertentu, meningkatkan enkapsulasi.
{
int temp = 5; // temp hanya valid dalam blok ini
}
C tidak mendukung overloading fungsi seperti C++, tetapi memungkinkan argumen default melalui implementasi manual.
int add(int a, int b) {
return a + b;
}
C memerlukan kompiler untuk mengubah kode sumber menjadi kode mesin. Kompiler yang paling populer termasuk GCC (GNU Compiler Collection), Clang, dan MSVC (Microsoft Visual C++).
Untuk mengompilasi program C, Anda biasanya dapat menggunakan perintah seperti:
gcc -o myprogram myprogram.c
Ini mengompilasi myprogram.c
menjadi executable bernama myprogram
.
Beberapa IDE mendukung pemrograman C, seperti:
IDE ini menyediakan fitur seperti penyorotan sintaks, alat debugging, dan manajemen proyek.
C digunakan secara luas di berbagai domain, termasuk:
C sering dibandingkan dengan beberapa bahasa pemrograman lain, karena memiliki kesamaan dan menjadi dasar bagi banyak bahasa:
C dapat diterjemahkan ke dalam bahasa yang mendukung konstruksi pemrograman prosedural dan optimasi tingkat rendah dengan mudah. Saat menerjemahkan kode C ke bahasa tingkat lebih tinggi, pengembang harus memperhatikan perbedaan manajemen memori, karena bahasa tingkat lebih tinggi sering memiliki pengumpulan sampah.
Beberapa alat terjemahan sumber-ke-sumber dapat membantu mengonversi kode C ke bahasa lain, termasuk: