C# adalah bahasa pemrograman yang dirancang untuk berjalan di atas platform .NET. Topik ini menelusuri asal-usul bahasa tersebut sejak diperkenalkannya pada tahun 2000, ranah aplikasi yang biasa dibangun dengannya, serta posisi .NET sebagai platform yang mengeksekusi program C#. Setelah membacanya, istilah C# dan .NET dapat dibedakan dengan tegas, dan gambaran ini menjadi dasar sebelum mekanisme eksekusinya dipelajari.
Bahasa dan platform yang berpasangan#
C# adalah bahasa pemrograman modern yang bertipe kuat (strongly typed), yaitu setiap variabel memiliki tipe yang diperiksa oleh kompilator, sekaligus berorientasi objek. Aturan penulisannya ditetapkan sebagai standar terbuka ECMA-334, sehingga definisi formalnya dapat diperiksa siapa pun tanpa bergantung pada satu pemasok perangkat lunak. Bahasa itu sendiri tidak mengeksekusi apa pun. Setiap program C# membutuhkan lingkungan yang menyediakan eksekusi, pemeriksaan keamanan tipe, dan kumpulan library siap pakai. Lingkungan itulah .NET.
.NET adalah platform pengembangan yang menyediakan tiga komponen pokok, yaitu runtime (lingkungan yang mengeksekusi program saat aplikasi berjalan), kumpulan library kelas siap pakai, serta perkakas untuk membangun dan menjalankan aplikasi. Hubungan keduanya dapat dibayangkan sebagai hubungan bahasa dengan mesinnya: C# menentukan bentuk kode yang boleh ditulis, sedangkan .NET menyediakan mesin yang menjalankan kode itu. Pemisahan ini sengaja dirancang, sehingga satu platform .NET dapat mengeksekusi lebih dari satu bahasa dan satu bahasa C# dapat menargetkan lebih dari satu jenis aplikasi.
Sejarah singkat sejak tahun 2000#
Microsoft memperkenalkan C# pada tahun 2000 sebagai bagian dari inisiatif .NET, dengan Anders Hejlsberg sebagai kepala desainernya. Hejlsberg sebelumnya dikenal melalui Turbo Pascal dan Delphi, dua bahasa yang menekankan kejelasan sintaks. Versi pertama C# dikirim bersama .NET Framework pada tahun 2002, dan spesifikasi bahasanya telah distandarkan oleh Ecma International sebagai ECMA-334 pada akhir tahun 2001, kemudian diadopsi ISO sebagai ISO/IEC 23270.
Evolusi platformnya berlangsung dalam dua babak. Pada babak pertama, .NET Framework hanya melayani Windows dan versinya berhenti pada 4.8 sebagai platform warisan. Babak kedua dimulai pada tahun 2016 dengan .NET Core, platform yang lintas sistem operasi dan open source, yakni kode sumbernya terbuka untuk dipelajari dan dikembangkan bersama. Sejak .NET 5 pada tahun 2020, nama platform disederhanakan menjadi “.NET” dengan rilis tahunan. Fitur besar yang membentuk wajah bahasa datang bertahap, antara lain generics pada C# 2, LINQ pada C# 3, async/await pada C# 5, dan record pada C# 9. Pada saat tulisan ini disusun, lini terkininya adalah .NET 10 dengan bahasa C# 14.
Ranah aplikasi yang dibangun dengan C##
C# digunakan pada ranah yang sangat luas, dari layanan web sampai game. Tabel berikut merangkum ranah utama beserta teknologi .NET yang melayaninya.
| Ranah | Teknologi .NET | Contoh penggunaan |
|---|---|---|
| Web | ASP.NET Core | API dan situs web yang melayani permintaan HTTP |
| Desktop | Windows Forms, WPF, .NET MAUI | aplikasi perkantoran dan aplikasi lintas platform |
| Game | Unity | skrip perilaku karakter dan mekanika permainan |
| Cloud dan layanan | layanan .NET dalam container (paket eksekusi terisolasi) | API backend, pekerjaan terjadwal, pemrosesan data |
Ranah web menjadi penggunaan yang paling umum di industri, dengan ASP.NET Core sebagai kerangka kerja yang menerima permintaan HTTP dan mengirim respons. Ranah game memiliki kedudukan khusus karena Unity menggunakan C# sebagai bahasa skrip utamanya, sehingga banyak pengembang game mengenal C# lebih dahulu sebelum menyentuh bagian .NET lainnya. Sementara itu, ranah cloud menempatkan program C# di dalam container yang berjalan di server, dengan tugas melayani permintaan, memproses antrean, atau menjadwalkan pekerjaan berkala. Ragam ranah ini dimungkinkan karena eksekusi program C# tidak terikat pada satu sistem operasi maupun satu jenis antarmuka.
Program C# dalam bentuk terkecil#
Wajah bahasanya paling mudah diamati dari program yang paling pendek. Program berikut hanya berisi tiga variabel dan dua perintah cetak, tetapi strukturnya sudah memperlihatkan kebiasaan C# modern, yaitu program yang ditulis tanpa deklarasi kelas dan metode Main yang panjang. Bentuk ini disebut top-level statement, yakni pernyataan yang ditulis langsung pada berkas Program.cs tanpa pembungkus kelas. Salin kode berikut ke berkas Program.cs, lalu jalankan dengan perintah dotnet run --file Program.cs dari terminal.
string namaBahasa = "C#";
string namaPlatform = ".NET";
int tahunRilis = 2000;
Console.WriteLine($"{namaBahasa} dirilis pada tahun {tahunRilis}.");
Console.WriteLine($"Program C# berjalan di atas platform {namaPlatform}.");C# dirilis pada tahun 2000.
Program C# berjalan di atas platform .NET.Tiga baris pertama mendeklarasikan variabel dengan tipe yang ditulis eksplisit, yaitu dua string dan satu int. Tanda $ sebelum tanda kutip mengaktifkan interpolasi string, yakni penyisipan nilai variabel langsung ke dalam teks melalui kurung kurawal. Metode Console.WriteLine mengirim satu baris teks ke keluaran standar, sehingga terminal menampilkan dua baris pada blok keluaran di atas. Antara kode sumber dan keluaran tersebut terjadi rantai tahap yang panjang, dan rantai itulah yang menjadi inti mekanisme .NET.
Kesalahan umum#
- Menganggap C# dan .NET sebagai istilah yang sama. C# adalah bahasanya, sedangkan .NET adalah platform yang menjalankannya. Kekeliruan ini membuat pencarian materi menjadi membingungkan, misalnya membaca materi arsitektur platform padahal yang dicari adalah aturan sintaks bahasa. Pembiasaan membedakan kedua istilah sejak awal membuat dokumentasi resmi lebih mudah dinavigasi.
- Mengira C# hanya berjalan di Windows. Dugaan itu benar pada era .NET Framework, tetapi tidak lagi sejak .NET Core. Program C# saat ini dikembangkan dan dijalankan di Windows, Linux, dan macOS dengan alat yang sama persis, termasuk debugger dan pengelola paketnya.
- Mengunduh “.NET Framework” padahal yang diminta “.NET”. .NET Framework adalah lini warisan khusus Windows yang tidak menyertakan dotnet CLI modern, sedangkan “.NET” tanpa akhiran adalah lini yang digunakan jalur ini. Memisahkan kedua nama sejak awal mencegah installer yang salah diunduh, dan pemasangan yang keliru biasanya baru ketahuan ketika perintah dotnet tidak dikenali terminal.
Ringkasan#
- C# adalah bahasa pemrograman bertipe kuat dan berorientasi objek yang distandarkan sebagai ECMA-334, sedangkan .NET adalah platform yang mengeksekusinya.
- C# diperkenalkan pada tahun 2000 dengan Anders Hejlsberg sebagai kepala desainernya, dan kini digunakan untuk web, desktop, game, serta layanan cloud.
- Lini modern lintas platform dimulai dari .NET Core pada tahun 2016 dan sejak .NET 5 menggunakan nama “.NET” dengan rilis tahunan.
- Program C# modern dapat ditulis sebagai top-level statement tanpa pembungkus kelas, seperti pada Program.cs di atas.
Referensi#
- C# Guide — Microsoft — Dokumentasi resmi C# beserta tur bahasa dan tutorialnya.
- Introduction to .NET — Microsoft — Gambaran resmi komponen .NET, termasuk runtime, library, dan SDK.
- ECMA-334 C# Language Specification — Ecma International — Standar formal yang mendefinisikan bahasa C#.