Kurung kurawal, atau curly braces ({}), mungkin terlihat seperti simbol tipografi sederhana, namun perannya dalam dunia ilmu komputer, matematika, dan logika adalah fundamental dan sangat esensial. Simbol ini berfungsi sebagai penanda batasan, penentu ruang lingkup, dan wadah untuk mengelompokkan elemen-elemen yang saling terkait. Dari mendefinisikan blok eksekusi dalam bahasa pemrograman C hingga menyusun objek kompleks dalam JavaScript, pemahaman mendalam tentang fungsi kurung kurawal adalah prasyarat bagi setiap pembangun sistem.
Artikel ini akan mengupas tuntas kurung kurawal, menelusuri sejarah penggunaannya, menganalisis perannya yang beragam di berbagai bahasa pemrograman, dan membahas aplikasi strukturalnya dalam disiplin ilmu non-komputasi. Kita akan melihat bagaimana simbol yang sederhana ini menjadi arsitek di balik struktur kode modern dan notasi matematika yang presisi.
Secara formal, kurung kurawal dikenal sebagai simbol braket yang paling kuat dalam hal pengelompokan. Dalam tipografi, ia sering disebut sebagai curly bracket atau braces. Simbol ini memiliki kekuatan struktural yang lebih besar dibandingkan kurung biasa ( ) atau kurung siku [ ], yang masing-masing biasanya digunakan untuk menambahkan informasi tambahan atau menunjukkan array/indeks.
Penggunaan kurung kurawal sudah ada sejak lama dalam matematika, jauh sebelum era komputasi. Awalnya, ia digunakan untuk notasi musik untuk menghubungkan staf (garis melodi) yang dimainkan secara simultan. Namun, peran utamanya dalam konteks formal muncul di abad ke-19, khususnya dalam teori himpunan yang dikembangkan oleh matematikawan seperti Georg Cantor.
Ketika komputer modern mulai dikembangkan pada pertengahan abad ke-20, para perancang bahasa pemrograman membutuhkan simbol yang jelas dan tidak ambigu untuk menentukan blok-blok kode. Kurung kurawal dipilih karena ketersediaannya pada keyboard standar (ASCII) dan karena jarang digunakan dalam konteks sintaksis lain pada masa itu, memberikannya peran eksklusif sebagai penanda struktur utama.
Peran kurung kurawal paling menonjol dan historis adalah dalam keluarga bahasa pemrograman yang berasal dari C. Dalam konteks ini, fungsi utamanya adalah mendefinisikan blok kode atau ruang lingkup (scope).
Dalam C, C++, dan Java, kurung kurawal wajib digunakan untuk mengelompokkan lebih dari satu pernyataan (statement) yang harus dieksekusi bersamaan, biasanya setelah struktur kontrol seperti if, while, for, atau definisi fungsi.
// Contoh Java: Mendefinisikan Blok if-else
int suhu = 35;
if (suhu > 30) {
System.out.println("Suhu sangat panas.");
System.out.println("Harap minum yang cukup."); // Kedua statement ini adalah bagian dari blok IF
} else {
System.out.println("Suhu normal.");
}
Tanpa kurung kurawal, struktur kontrol seperti if hanya akan mengasosiasikan dirinya dengan satu pernyataan yang mengikutinya. Kurung kurawal memastikan bahwa sejumlah baris kode diperlakukan sebagai satu unit tunggal, memungkinkan programmer untuk menyusun logika yang kompleks dan bercabang.
Dalam bahasa berorientasi objek (OOP) seperti Java dan C#, kurung kurawal menentukan batas-batas struktural yang lebih besar: kelas, antarmuka, dan metode.
// Contoh C#: Definisi Kelas dan Metode
public class Kendaraan { // Pembuka Blok Kelas
private string model;
public Kendaraan(string nama) { // Pembuka Blok Constructor
this.model = nama;
} // Penutup Blok Constructor
public void HidupkanMesin() { // Pembuka Blok Metode
Console.WriteLine("Mesin " + model + " menyala.");
} // Penutup Blok Metode
} // Penutup Blok Kelas
Setiap pasang kurung kurawal menciptakan sebuah konteks terisolasi. Variabel yang dideklarasikan di dalam blok tersebut (local scope) tidak dapat diakses dari luar blok tersebut. Mekanisme ini adalah fondasi dari manajemen memori yang efisien dan pencegahan konflik penamaan dalam proyek berskala besar.
Konsep block scope, yang diwarisi dari C dan sangat ketat di Java/C++, memastikan bahwa variabel yang dideklarasikan di dalam kurung kurawal akan dihancurkan (atau tidak dapat diakses) segera setelah eksekusi keluar dari blok tersebut. Penggunaan kurung kurawal tidak hanya mengatur alur, tetapi juga siklus hidup data.
Dalam JavaScript, kurung kurawal memiliki beban kerja yang jauh lebih berat dan peran yang lebih beragam dibandingkan bahasa C-style tradisional. Ia digunakan tidak hanya untuk blok kode, tetapi juga untuk representasi data inti: objek.
Kurung kurawal adalah sintaksis standar untuk membuat objek JavaScript. Objek adalah kumpulan pasangan kunci-nilai (key-value pairs) yang membentuk struktur data utama dalam bahasa ini.
// Contoh JavaScript: Literal Objek
const dataPengguna = {
"nama": "Rina",
"usia": 28,
"aktif": true,
metodeSalam: () => { // Kurung kurawal di sini mendefinisikan blok fungsi
console.log(`Halo, ${dataPengguna.nama}`);
}
};
Penggunaan kurung kurawal untuk objek sangat penting dalam JSON (JavaScript Object Notation), menjadikannya format pertukaran data yang dominan di internet. JSON, yang akan dibahas lebih lanjut, adalah perpanjangan langsung dari notasi literal objek JavaScript.
Sama seperti C-style, kurung kurawal mendefinisikan blok untuk if, for, while, dan definisi fungsi tradisional (pre-ES6).
Dengan diperkenalkannya ES6 (ECMAScript 2015), fungsi panah menggunakan kurung kurawal untuk menandai blok pernyataan multibarisan. Namun, jika fungsi panah hanya memiliki satu ekspresi yang ingin dikembalikan (implicit return), kurung kurawal dapat dihilangkan. Kehadiran kurung kurawal secara eksplisit memaksa penggunaan kata kunci return.
// Fungsi Panah: Implicit Return (Tanpa Kurawal)
const kaliDua = (x) => x * 2;
// Fungsi Panah: Explicit Return (Dengan Kurawal)
const hitungKompleks = (a, b) => {
const hasilSementara = a + b;
return hasilSementara * 10; // Harus ada return eksplisit
};
Ini adalah peran paling modern dan fleksibel dari kurung kurawal dalam JavaScript. Destructuring memungkinkan ekstraksi properti dari objek atau elemen dari array ke variabel terpisah. Ketika digunakan untuk objek, kurung kurawal wajib hadir di sisi kiri penugasan.
// Contoh Destructuring Objek
const user = { namaDepan: 'Budi', umur: 30, kota: 'Bandung' };
// Kurung kurawal di sini TIDAK menciptakan objek baru, tetapi menargetkan properti objek user.
const { namaDepan, kota } = user;
console.log(namaDepan); // Output: Budi
Kehadiran kurung kurawal dalam destructuring objek ini menunjukkan bahwa programmer sedang mencari properti spesifik berdasarkan namanya (name-matching).
Sebelum ES6, JavaScript hanya memiliki ruang lingkup fungsi (function scope). Variabel yang dideklarasikan dengan var tidak mempedulikan blok kurung kurawal (kecuali fungsi). Namun, pengenalan let dan const pada ES6 mengubah kurung kurawal menjadi penanda block scope sejati, menyelaraskan JavaScript dengan perilaku C-style dalam hal ruang lingkup variabel.
// Perbedaan Scope di JavaScript (ES6+)
if (true) {
var variabelLama = "global atau fungsi scope";
let variabelBaru = "block scope";
}
console.log(variabelLama); // BISA diakses (menunjukkan var mengabaikan {})
// console.log(variabelBaru); // ERROR: variabelBaru tidak terdefinisi (let/const menghormati {})
Dengan demikian, kurung kurawal menjadi kunci untuk mengimplementasikan pola desain modern yang menghindari variabel global dan mempromosikan modularitas yang ketat.
Meskipun bukan kurung kurawal sintaksis utama, ia digunakan di dalam template literal (backticks ``) untuk menyertakan ekspresi JavaScript yang perlu dievaluasi. Formatnya adalah ${ekspresi}.
const nama = "Citra";
const pesan = `Selamat datang, ${nama.toUpperCase()}!`;
// Kurung kurawal di sini adalah bagian dari mekanisme substitusi ekspresi
Dunia pertukaran data modern sangat bergantung pada kurung kurawal. JSON, yang merupakan kependekan dari JavaScript Object Notation, adalah bahasa formal untuk mendefinisikan data terstruktur. Penggunaan kurung kurawal di sini sangat spesifik: mereka selalu menandakan dimulainya atau diakhirinya sebuah objek.
Sebuah dokumen JSON yang valid selalu dimulai dan diakhiri dengan kurung kurawal jika data utamanya adalah sebuah objek. Meskipun array (menggunakan kurung siku []) dapat menjadi elemen teratas, objek selalu menggunakan {} untuk mengelompokkan atribut dan nilai.
{ // Start of the JSON object
"metadata": {
"versi": 1.0,
"tanggal": "2024-01-01"
},
"daftarItem": [
{ "id": 1, "nama": "Pensil" },
{ "id": 2, "nama": "Buku" }
]
}
Dalam JSON, nesting (penumpukan) kurung kurawal memungkinkan representasi hierarki data yang kompleks, mulai dari konfigurasi aplikasi hingga respons API.
Meskipun YAML (YAML Ain't Markup Language) sering kali mengandalkan indentasi untuk mendefinisikan struktur, ia juga mendukung notasi "flow style" yang menggunakan kurung kurawal untuk mendefinisikan peta atau kamus (map/dictionary) dalam satu baris, mirip dengan JSON.
# YAML Flow Style (Map definition)
config: { database: 'prod', port: 5432 }
Meskipun fungsi sintaksis kurung kurawal tidak pernah berubah, penempatannya dalam kaitannya dengan pernyataan kontrol telah menjadi subjek perdebatan abadi dan telah melahirkan beberapa standar gaya pemrograman utama.
Gaya K&R, yang dinamai dari penulis buku The C Programming Language, menempatkan kurung kurawal pembuka pada baris yang sama dengan struktur kontrol, dipisahkan oleh spasi. Kurung kurawal penutup diletakkan pada barisnya sendiri, sejajar dengan kata kunci struktur kontrol.
void contohKAndR()
{ // Penutup kurung kurawal fungsi berada di baris baru dan sejajar dengan kata kunci
if (kondisi) { // Pembuka kurung kurawal blok di baris yang sama dengan if
// Kode
}
}
Keuntungan utama gaya K&R adalah kepadatan kode yang lebih baik, menghemat ruang vertikal dan memungkinkan programmer melihat lebih banyak kode dalam satu layar. Gaya ini sangat populer di C, C++, dan sering terlihat di JavaScript.
Gaya Allman (terkadang disebut gaya BSD) menempatkan kurung kurawal pembuka dan penutup pada barisnya sendiri, sejajar secara vertikal dengan struktur kontrol yang mereka kaitkan.
void contohAllman()
{
if (kondisi)
{ // Pembuka kurung kurawal di baris baru
// Kode
}
}
Gaya Allman sering disukai di Java, C#, dan Pascal, karena dianggap meningkatkan keterbacaan (membaca vertikal) dan mempermudah pencocokan kurung kurawal (terutama dalam blok kode yang sangat panjang). Ini juga mengurangi risiko ambiguitas atau bug yang disebabkan oleh automatic semicolon insertion (ASI) di JavaScript.
Ada variasi lain seperti gaya Whitesmiths dan GNU, yang sering digunakan dalam proyek-proyek tertentu. Misalnya, gaya GNU menambahkan indentasi pada kurung kurawal pembuka dan penutup itu sendiri, membuatnya menonjol, meskipun dianggap kurang "bersih" oleh sebagian komunitas.
Pilihan gaya ini, meskipun hanya masalah estetika, menunjukkan pentingnya kurung kurawal dalam mendefinisikan struktur visual dan hierarki kode. Konsistensi dalam penggunaan, terlepas dari gaya mana yang dipilih, adalah kunci untuk pemeliharaan kode yang berkelanjutan.
Di luar komputasi, kurung kurawal memiliki definisi peran yang sangat ketat dalam matematika, khususnya dalam teori himpunan.
Dalam matematika modern, kurung kurawal adalah simbol standar untuk mendefinisikan himpunan (set), yaitu kumpulan objek yang berbeda (elemen). Penggunaan kurung kurawal ini menentukan batas eksak dari kumpulan elemen tersebut.
|) berlaku.Peran kurung kurawal di sini adalah analogis dengan perannya dalam pemrograman: ia mengelompokkan elemen atau aturan yang mendefinisikan suatu entitas tunggal (himpunan).
Meskipun kurung kurawal jarang digunakan untuk mendefinisikan fungsi secara eksplisit (kurung biasa lebih umum), dalam konteks pemetaan yang rumit atau daftar pasangan terurut, kurung kurawal dapat digunakan untuk mengelompokkan seluruh pemetaan tersebut.
Ketika mendefinisikan fungsi yang perilakunya berubah berdasarkan kondisi domain, kurung kurawal besar sering digunakan di sebelah kiri untuk mengelompokkan semua definisi bagian fungsi di bawah satu nama fungsi.
f(x) = {
x^2, jika x >= 0
-x, jika x < 0
}
Penggunaan ini secara visual menunjukkan bahwa semua aturan tersebut merupakan bagian dari satu definisi fungsi f(x).
Di luar bahasa C-style dan JavaScript, kurung kurawal muncul di berbagai konteks komputasi yang lebih terspesialisasi, sering kali memegang fungsi yang sama: mengelompokkan atau menentukan set.
Dalam Regex, kurung kurawal memiliki fungsi yang sangat spesifik dan berbeda dari notasi blok kode: yaitu menentukan kuantitas (quantifier) atau rentang pengulangan dari karakter atau kelompok sebelumnya.
Kurung kurawal di sini bertindak sebagai operator yang mengikat batas minimal dan/atau maksimal dari pengulangan, sebuah konsep yang sangat mirip dengan definisi batasan dalam matematika.
Dalam lingkungan shell seperti Bash, kurung kurawal digunakan untuk fitur yang disebut brace expansion. Fitur ini memungkinkan pembuatan urutan string yang bervariasi secara otomatis, sangat berguna untuk pembuatan file atau direktori secara massal.
# Contoh Bash: Brace Expansion
touch file{1..3}.txt
// Ini menghasilkan: file1.txt, file2.txt, file3.txt
mkdir {assets,tests,src}
// Ini menghasilkan: direktori 'assets', 'tests', dan 'src'
Dalam konteks ini, kurung kurawal mengelompokkan serangkaian opsi yang, melalui ekspansi, diolah oleh shell sebelum perintah utama (touch atau mkdir) dijalankan.
Meskipun PHP modern (mulai dari versi 5.4) telah sangat menyukai kurung siku [] untuk notasi array pendek, secara historis dan dalam konteks tertentu, kurung kurawal digunakan untuk mengakses array atau string dalam sintaks yang lebih kompleks, terutama ketika variabel perlu diinterpolasi di dalam string ganda.
// Contoh PHP: Interpolasi Variabel Kompleks
$data = ['key' => 'value'];
echo "Data adalah: {$data['key']}";
// Kurung kurawal memaksa PHP untuk mengurai ekspresi di dalamnya sebagai variabel tunggal.
Karena perannya yang sentral sebagai penentu struktur, kesalahan dalam penempatan atau penyeimbangan kurung kurawal (mismatched braces) adalah penyebab bug sintaksis paling umum yang dialami oleh programmer baru.
Setiap kurung kurawal pembuka ({) harus memiliki pasangannya yang menutup (}). Kegagalan untuk menyeimbangkan pasangan ini mengakibatkan kesalahan kompilasi (pada bahasa terkompilasi seperti Java/C++) atau kesalahan runtime/parsing (pada bahasa interpretasi seperti JavaScript).
Dalam blok kode besar, menjaga pasangan yang benar adalah tantangan. Inilah sebabnya mengapa alat bantu pengembangan (IDE) modern menawarkan fitur bracket matching dan penyorotan sintaksis yang kuat, secara visual menghubungkan pembuka dan penutup kurung kurawal.
Dalam bahasa seperti JavaScript, kurung kurawal dapat menimbulkan ambiguitas konteks:
a, atau sebuah literal objek?Secara umum, jika kurung kurawal muncul di tempat yang mengharapkan pernyataan (misalnya, di awal baris kode non-penugasan), ia akan diinterpretasikan sebagai blok kode. Jika muncul di tempat ekspresi (misalnya, di sisi kanan penugasan), ia akan diinterpretasikan sebagai objek.
// JavaScript: Interpretasi Berbeda
{ // Ini adalah blok kode anonim, bukan objek
const x = 10;
}
const data = { // Ini adalah literal objek, karena muncul di sisi kanan penugasan
y: 20
};
Pemahaman konteks di mana kurung kurawal digunakan sangat penting untuk menghindari salah tafsir oleh interpreter atau compiler.
Perdebatan mengenai gaya penempatan kurung kurawal (K&R vs. Allman) sering kali menjadi bagian dari identitas komunitas bahasa pemrograman. Gaya K&R sangat lekat dengan UNIX dan proyek-proyek kernel, sementara gaya Allman mendominasi ekosistem korporat seperti Microsoft dan Java. Simbol sederhana ini ternyata memiliki dampak yang signifikan pada bagaimana programmer berinteraksi dan mengidentifikasi diri mereka dalam ekosistem teknis yang berbeda.
Kurung kurawal ({}) adalah simbol universal dari batasan dan pengelompokan. Ia tidak hanya mengelompokkan pernyataan menjadi blok eksekusi yang logis dalam pemrograman; ia juga mendefinisikan himpunan dalam matematika, mengisolasi data dalam JSON, dan membatasi rentang dalam ekspresi reguler. Perannya yang krusial memastikan struktur yang terorganisir dan hierarki yang jelas, memungkinkan mesin untuk memproses instruksi dengan urutan dan ruang lingkup yang tepat.
Dari konsep block scoping yang mendasar hingga notasi data objek yang kompleks di web, kurung kurawal adalah pilar yang tak tergantikan. Memahami bagaimana dan kapan menggunakan simbol ini—serta mempertahankan gaya penulisan yang konsisten—bukan hanya masalah sintaksis, tetapi merupakan langkah penting menuju penulisan kode yang bersih, dapat dipelihara, dan arsitektur data yang kuat. Ia adalah arsitek senyap yang merancang struktur tersembunyi di balik setiap sistem digital modern.
***
Teks lanjutan yang didedikasikan untuk detail implementasi khusus dan perbandingan antar bahasa, untuk melengkapi eksplorasi mendalam ini.
Untuk benar-benar menghargai peran kurung kurawal, kita harus membandingkan bagaimana bahasa-bahasa tertentu yang secara struktural berbeda, namun tetap menggunakan simbol ini, mengimplementasikan konsep pengelompokan.
Go adalah bahasa yang berasal dari tradisi C, sehingga ia menggunakan kurung kurawal secara wajib untuk blok kode. Namun, Go menerapkan aturan yang sangat ketat mengenai penempatan kurung kurawal pembuka (Gaya K&R wajib). Go secara otomatis menyisipkan titik koma, dan jika kurung kurawal pembuka diletakkan di baris baru, kompiler akan menyisipkan titik koma sebelum kurung kurawal, menyebabkan kesalahan sintaksis yang fatal atau mengubah semantik program secara tak terduga.
// Contoh Golang (Wajib K&R Style)
package main
func main() { // Kurung kurawal pembuka harus di sini
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
Dalam Go, kurung kurawal tidak hanya penanda blok, tetapi juga dipaksakan sebagai bagian dari konsistensi gaya bahasa, mengurangi perdebatan gaya yang ditemukan di komunitas C++ atau Java.
Python adalah studi kasus yang menarik karena ia sengaja menghindari kurung kurawal untuk mendefinisikan blok kode. Sebagai gantinya, Python menggunakan indentasi (spasi putih). Meskipun demikian, kurung kurawal tetap ada dalam Python dengan peran yang sangat terbatas:
Python menunjukkan bahwa kurung kurawal dapat dieliminasi sebagai penanda blok kode, namun ia tetap tak tergantikan dalam mendefinisikan struktur data non-sekuensial (kamus dan himpunan).
TypeScript, sebagai superset dari JavaScript, mewarisi semua penggunaan kurung kurawal (blok kode, objek, destructuring). Namun, TypeScript menambahkan penggunaan baru dalam konteks sistem tipe:
// Contoh TypeScript: Mendefinisikan Tipe Objek
interface Person {
nama: string;
usia: number;
alamat?: string;
}
// Kurung kurawal ini membatasi properti yang diizinkan untuk tipe 'Person'.
Di sini, kurung kurawal berfungsi ganda: sebagai penentu blok (di implementasi fungsi) dan sebagai penentu batas deskripsi tipe data (di definisi antarmuka).
Penggunaan kurung kurawal meluas hingga ke struktur data yang lebih abstrak, memastikan bahwa elemen yang terkait erat tetap terkumpul.
Konsep pemetaan (asosiasi kunci ke nilai) adalah universal dalam komputasi. Bahasa yang menggunakan kurung kurawal untuk literal objek/kamus (JavaScript, Python Set, PHP, JSON) secara langsung mencerminkan notasi set dan pasangan terurut dalam matematika. Kurung kurawal menjamin bahwa setiap unit kunci-nilai yang diapit adalah bagian integral dari koleksi pemetaan tersebut.
Bahkan di C++, di mana std::map biasanya diinisialisasi melalui sintaks khusus, kurung kurawal digunakan dalam inisialisasi seragam (C++11) untuk mendefinisikan elemen peta.
// Contoh C++11 Uniform Initialization
std::map<int, string> angkaMap {
{1, "satu"},
{2, "dua"}
};
Penggunaan kurung kurawal berlapis di atas memastikan bahwa pasangan terurut (kunci, nilai) diperlakukan sebagai satu elemen yang menjadi anggota dari peta yang lebih besar.
Penggunaan kurung kurawal untuk himpunan (di Python, PHP, atau secara konseptual di C++) adalah pengakuan langsung terhadap asal-usul matematika simbol tersebut. Himpunan adalah kumpulan elemen unik tanpa urutan. Kurung kurawal secara visual membedakan himpunan dari daftar berurutan (array, yang menggunakan kurung siku []).
Perbedaan ini adalah kunci: jika kita melihat {1, 2, 3}, kita tahu kita berurusan dengan himpunan, di mana urutan dan duplikat tidak relevan. Jika kita melihat [1, 2, 3], kita tahu itu adalah daftar berurutan di mana posisi dan duplikat mungkin penting.
Meskipun sering dianggap sebagai beban sintaksis, kebutuhan akan kurung kurawal dalam mendefinisikan blok eksekusi memberikan perlindungan penting terhadap bug yang samar.
Dalam bahasa seperti C, jika programmer lupa menggunakan kurung kurawal setelah pernyataan if yang kompleks, dapat terjadi masalah "dangling else" (else yang menggantung). Kompiler secara default akan mengasosiasikan else dengan if terdekat, yang mungkin bukan maksud dari programmer.
if (kondisiA)
if (kondisiB)
doSomething();
else // Else ini secara sintaksis terikat pada kondisiB, BUKAN kondisiA
doSomethingElse();
Penggunaan kurung kurawal secara eksplisit memaksa asosiasi yang jelas dan menghapus ambiguitas ini, membuat kode lebih tahan terhadap kesalahan logika meskipun penampilannya berantakan.
// Solusi Kurung Kurawal untuk Dangling Else
if (kondisiA) {
if (kondisiB) {
doSomething();
}
} else { // Sekarang jelas terikat pada kondisiA
doSomethingElse();
}
Ini adalah alasan kuat mengapa banyak pedoman gaya kode menyarankan penggunaan kurung kurawal di semua pernyataan kontrol, bahkan ketika hanya ada satu baris kode, sebagai tindakan pencegahan terhadap masalah ini.
Pada tingkat yang lebih tinggi, kurung kurawal memberikan isyarat visual yang kuat mengenai struktur hierarki program. Ketika kita membaca kode, mata kita secara naluriah mencari kurung kurawal untuk menentukan di mana definisi kelas dimulai, di mana sebuah metode berakhir, atau di mana blok logika bersyarat beroperasi.
Tanpa simbol visual yang jelas seperti kurung kurawal (mengandalkan indentasi, seperti Python), perubahan kecil pada indentasi dapat merusak semantik kode. Dengan kurung kurawal, indentasi berfungsi untuk keterbacaan manusia, tetapi struktur yang sebenarnya dijamin oleh simbol, memisahkan logika dari presentasi.
Peran kurung kurawal terus berkembang, terutama di front-end dan pengembangan berbasis komponen.
Dalam JSX, ekstensi sintaksis yang digunakan oleh React, kurung kurawal digunakan untuk beralih dari mode markup HTML ke mode ekspresi JavaScript.
// Contoh JSX
function KomponenSalam(props) {
const waktu = "Siang";
return (
<h1>Halo, selamat {waktu}, {props.nama.toUpperCase()}!</h1>
);
}
Di sini, kurung kurawal memungkinkan penyematan ekspresi, variabel, atau pemanggilan fungsi JavaScript langsung ke dalam markup deklaratif. Ini adalah penggunaan kontekstual yang sangat kuat, memungkinkan percampuran domain presentasi dan logika secara lancar.
Meskipun kurung siku (< dan >) digunakan untuk mendefinisikan parameter template di C++, dalam inisialisasi seragam untuk tipe yang kompleks, kurung kurawal mengambil peran penting untuk inisialisasi anggota.
Evolusi peran kurung kurawal menunjukkan bahwa meskipun teknologi dan bahasa pemrograman datang dan pergi, kebutuhan akan simbol yang jelas dan universal untuk menentukan batasan logis dan struktural tetap konstan. Kurung kurawal adalah simbol yang dipilih oleh sejarah komputasi untuk memenuhi peran tersebut, menjadikannya salah satu karakter terpenting di keyboard setiap programmer dan matematikawan.