ALGORTIMA DAN
PEMROGRAMAN
Fakultas : Teknologi dan Informatika Tatap Muka Kode Mata Kuliah : W4119003
ABSTRAK TUJUAN
Halo! Selamat datang di matakuliah Mahasiswa mampu memahami
“Algoritma Pemorgraman” Materi tentang apa itu .NET, fungsi, dan
kita kali ini adalah tentang apa itu cara kerjanya.
.NET, fungsi, dan cara kerjanya.
Sebelum mempelajari materi ini,
pastikan Anda sudah menginstall
Visual Studio Code / Visual Studio
dan juga .NET Core SDK di
komputer Anda.
PEMBAHASAN
I. Apa Itu .NET, Fungsi, Dan Cara Kerjanya
Materi kita kali ini adalah tentang apa itu .NET, fungsi, dan cara kerjanya. Sebelum
mempelajari materi ini, pastikan Anda sudah menginstall Visual Studio Code atau Visual
Studio dan juga .NET Core SDK di komputer Anda.
Untuk memudahkan Anda mengikuti kerangka kerja yang diberikan, Anda juga
dibekali dengan toolbox yang berisi berbagai peralatan seperti gergaji, palu, paku,
meteran dan lain-lain. Selain itu, Anda juga diminta untuk mengerjakan pekerjaan Anda
di lingkungan kerja yang juga sudah disediakan, yaitu di dalam pabrik/workshop.
Pada suatu saat, Anda diminta untuk membuat sebuah meja makan, sementara
teman Anda diminta untuk membuat kursi. Ketika Anda membuat meja makan tersebut,
Anda bisa menggunakan peralatan yang telah disediakan di dalam toolbox. Begitu pula
teman Anda, dia juga bisa menggunakan peralatan yang sama untuk membuat sebuah
kursi.
Anda tau, meja dan kursi memang dua jenis barang yang berbeda. Namun untuk
membuat keduanya, ada beberapa pekerjaan yang umum dilakukan, yaitu menggergaji,
memaku, dan mengukur. Maka dari itu, Anda dan teman Anda bisa memanfaatkan set
peralatan yang sama untuk dua pekerjaan yang menghasilkan produk berbeda. Namun,
dengan peralatan dan lingkungan kerja yang diberikan di dalam kerangka kerja sebuah
pabrik furniture, apakah Anda juga bisa membuat sebuah pesawat terbang? Tentunya
tidak, bukan?
Begitu pula, ketika kita sudah memilih salah satu dari beberapa implementasi .NET,
konsekuensinya kita tidak bisa membuat aplikasi di luar kerangka kerja dari
implementasi tersebut.
Sampai sekarang, .NET Framework sendiri bertujuan untuk menjadi kerangka kerja
untuk pengembangan aplikasi yang menargetkan platform Windows (aplikasi yang
hanya bisa dijalankan di Sistem Operasi Windows), seperti WPF (Windows Presentation
Foundation), UWP (Universal Windows Platform), Windows Form, dan ASP.NET
(Aplikasi berbasis web).
Dengan menggunakan .NET Framework sebagai kerangka kerja, maka kita hanya bisa
mengembangkan aplikasi yang menargetkan platform Windows saja. Kita tidak bisa
menggunakan .NET Framework untuk mengembangkan aplikasi di Linux atau Mac.
Untuk mengatasi itu, di akhir tahun 2014, Microsoft kembali merilis sebuah implementasi
.NET yang bisa digunakan sebagai kerangka kerja untuk mengembangkan aplikasi yang
Tidak berhenti di situ, pada awal tahun 2016, Microsoft kembali mengumumkan
bahwa Mono Project yang sebelumnya telah dikembangkan oleh
para engineer di Microsoft, kini menjadi bagian dari .NET Foundation. Pengumuman ini
tidak lama berselang dari proses finalisasi akuisisi terhadap Xamarin di bulan Maret
2016.
Sejak itu, dengan menggunakan Mono for Xamarin sebagai kerangka kerja, kita bisa
mengembangkan aplikasi native untuk Android dan iOS dengan kode program dari
bahasa pemrograman yang sama (C# adalah bahasa pemrograman yang umum
digunakan).
Bagaimana dengan .NET? Apa saja komponen-komponen .NET yang bisa membuat
pekerjaan kita sebagai software developer menjadi lebih mudah?
.NET memiliki dua komponen utama, yaitu sebuah mesin virtual bernama Common
Language Runtime (CLR) dan juga kumpulan pustaka (toolbox) bernama Base Class
Library (BCL).
BCL ini bisa kita bayangkan seperti toolbox yang berisi bermacam-macam peralatan di
pabrik furniture.
Ketika kita perlu memotong papan kayu, kita tinggal memakai gergaji yang sudah
disediakan di dalam toolbox. Kita tidak perlu membuat gergajinya terlebih dulu agar bisa
memotong papan kayu, bukan?
Kebayang kan kalau setiap pekerja di pabrik tersebut harus membuat gergajinya terlebih
dulu?
Begitu pula ketika kita ingin mengembangkan sebuah aplikasi, .NET telah menyediakan
berbagai peralatan untuk melakukan pekerjaan-pekerjaan yang umum seperti
menampilkan tulisan di layar, menulis atau membaca file, melakukan HTTP request, dan
lain-lain.
CLR merupakan sebuah mesin virtual yang menyediakan runtime environment untuk
aplikasi .NET.
Garbage Collector (GC). Fungsi dari GC adalah untuk mengelola siklus hidup data-data
pada sebuah aplikasi yang dialokasikan di memori heap (Alokasi memori akan kita
pelajari di materi yang lain). Dengan adanya GC, kita sebagai developer tidak perlu
terlalu pusing memikirkan bagaimana membebaskan sebuah memori dari data yang
sudah tidak lagi digunakan di dalam sebuah aplikasi. Ini adalah kemewahan yang tidak
akan kita dapatkan ketika mengembangkan aplikasi dengan bahasa pemrograman yang
tidak compliant dengan .NET, seperti C dan C++. (Catatan: C++.NET adalah versi .NET
compliant dari C++ sehingga bisa dijalankan di platform .NET).
Contohnya, apabila kita membuat sebuah class library dengan bahasa pemrograman
VB.NET, maka class library tadi harus bisa digunakan sebagai referensi oleh sebuah
aplikasi yang ditulis dengan bahasa pemrograman C#.
Namun, bukankah dua bahasa pemrograman berbeda biasanya memiliki sistem tipe
data yang berbeda-beda pula? Misalnya, data dengan tipe bilangan bulat dideklarasikan
sebagai int di C#, sedangkan di VB.NET dideklarasikan sebagai integer.
Selain itu, aturan sintaksis (aturan penulisan kode program) dari setiap bahasa
pemrograman juga berbeda-beda. Contohnya, C# dan VB.NET menggunakan sintaks
yang berbeda untuk melakukan perulangan dari 0 sampai 9 dan menampilkan hasilnya
ke layar monitor seperti kode program di bawah ini.
Hal ini dimungkinkan dengan adanya Common Type System (CTS) dan Common
Language Spesification (CLS) yang merupakan spesifikasi yang mengatur bagaimana
sebuah kode program seharusnya dikompilasi menjadi satu kode yang sama satu sama
lainnya.
CTS bertanggung jawab untuk memahami semua sistem tipe data dari semua bahasa
pemrograman di .NET dan mengkonversikannya ke sebuah format umum (common
format) yang dapat dipahami oleh CLR (maka dari itu disebut Common Language
Runtime, yaitu runtime environment untuk kode program dengan format umum).
Contohnya, int di C# dan integer di VB.NET akan dikonversi menjadi int32 yang
merupakan format umum untuk tipe data bilangan bulat di platform .NET.
Sementara itu, CLS bertanggung jawab untuk mengkonversi aturan sintaksis dari
bahasa pemrograman di .NET ke sebuah format sintaksis yang umum (common syntax).
Aturan sintaksis yang bisa dikonversi ke format yang bisa dipahami dan dijalankan oleh
CLR disebut dengan Managed Code atau kode yang dikelola oleh CLR. Sementara
yang tidak bisa menghasilkan format umum disebut dengan Unmanaged
Code. Unamanaged Code ini nantinya dikelola langsung oleh Sistem Operasi di mana
kode program tersebut dijalankan.
Agar sebuah sebuah bahasa pemrograman nantinya bisa dijalankan oleh CLR, maka
bahasa pemrograman tersebut harus mengikuti spesifikasi dari .NET. Bahasa
pemrograman yang bisa dijalankan oleh CLR di platform .NET disebut dengan
.NET compliant. Meskipun ada lebih dari 20 Bahasa pemrograman yang termasuk
.NET compliant, namun yang umum digunakan adalah C#, VB.NET, dan F#.
Masalahnya adalah ketika kita mengkompilasi sebuah kode program di Sistem Operasi
Windows dengan arsitektur x86 (32 bit), hasil kompilasi kode program tersebut bahkan
tidak bisa dijalankan di Sistem Operasi Windows dengan arsitektur x64 (64 bit).
Mengapa?
Seperti yang sudah kita pelajari sebelumnya, sebuah kode program .NET akan
dikompilasi ke sebuah format umum terlebih dahulu supaya bisa dijalankan dan dikelola
oleh CLR. Kode dengan format umum ini disebut dengan Intermediate Language (IL).
Contohnya, kode program untuk melakukan perulangan dari 0 sampai 9 yang ditulis
dengan bahasa pemrograman C# dan VB.NET sebelumnya, kudauanya akan
menghasilkan kode IL yang identik seperti berikut ini.
Lalu bagaimana kode IL di atas dapat dipahami dan dijalankan oleh CPU?
Di sini lah peran dari JIT dimulai. JIT-lah yang melakukan “sihir”-nya dengan
mengkonversi kode IL ke kode native atau bahasa mesin sesuai arsitektur Sistem
Operasi dan hardware di mana aplikasi tersebut dijalankan.
Dengan proses kompilasi seperti pada diagram di atas, maka kita tidak perlu lagi
mengkhawatirkan lingkungan (arsitektur OS, hardware) di mana kode program tersebut
dikompilasi dan di mana aplikasi kita dijalankan.
Kode IL sama sekali tidak memuat informasi apapun mengenai lingkungan di mana
sebuah kode program dikompilasi (platform agnostic).
Nantinya pada saat runtime, JIT lah yang bertugas mengenali lingkungan di mana
sebuah aplikasi .NET dijalankan. Lalu, JIT akan menambahkan informasi tersebut ke
dalam kode native atau bahasa mesin yang dia hasilkan.
1.8. Penutup
• .NET merupakan sebuah platform yang digunakan sebagai kerangka kerja untuk
mengembangkan sebuah aplikasi. Dengan menggunakan .NET sebagai
kerangka kerja, kita dibekali dengan kumpulan Base Class Library dan juga
sebuah mesin virtual bernama CLR.
Setelah selesai mempelajari materi ini, Anda akan lebih memahami apa itu namespace,
apa fungsinya, dan bagaimana mendefinisikannya di C#.
Kira-kira nantinya apa saja objek yang ingin Anda hadirkan di aplikasi tersebut? Ya,
tentunya Anda membutuhkan berbagai jenis sarana transportasi, seperti mobil, motor,
sepeda, kapal, kereta api, pesawat terbang, dan lain-lain. Selain itu, Anda ternyata juga
memerlukan berbagai jenis bangunan terminal, seperti bandar udara, pelabuhan,
stasiun kereta, terminal bus, dan lain-lain.
• Dengan memisah-misahkan class ke dalam kategori yang terkait seperti ini, kode
program yang Anda buat nantinya akan lebih rapi dan terstruktur. Selain itu,
ketika Anda dan tim Anda diberi class library dengan namespace
“ModaTransportasi”, Anda atau tim Anda bisa berekspektasi bahwa class
library tersebut berisi blueprint dari objek-objek moda transportasi yang
dibutuhkan.
namespace Nama-Namespace
Namun demikian, pada saat Anda membuat sebuah project baru di Visual Studio Code
dengan dotnet new console, Anda akan diberi struktur default dari bahasa pemrograman
C# seperti berikut ini:
using System;
System sendiri adalah nama namespace yang tersedia di dalam base class library dari
.NET Core. Setelah mengimpor namespace yang kita inginkan, selanjutnya kita bisa
memanggil seluruh member yang terdapat di dalam namespace System seperti baris
kode program berikut ini:
Console.WriteLine("Hello World!");
Namun sebenarnya Anda bisa memanggil sebuah member di dalam namespace tanpa
harus menggunakan kata kunci using. Caranya dengan memanggil sebuah member
secara eksplisit seperti berikut ini:
System.Console.WriteLine("Hello World!");
2.5. Penutup
• Di C#, namespace digunakan untuk memisahkan file-file class sesuai dengan
kategorinya masing-masing.
• Pada saat Anda membuat sebuah aplikasi C# dengan command-line .NET Core,
yaitu dotnet new, nama namespace dari program Anda adalah nama folder di
mana program tersebut dibuat.