Pemrograman modular

**Pemograman modular** adalah teknik perancangan perangkat lunak yang mengutamakan pembangunan fungsi program lewat modul-modul mandiri yang dapat disatupadukan. Tiap modul membagi kode untuk fokus tertentu dari fungsionalitas yang diinginkan. Ini memungkinkan pengelolaan, pemeliharaan, dan pengembangan kode.

Antarmuka modul mengungkapkan elemen yang disediakan dan diperlukan oleh modul. Elemen yang ditentukan dalam antarmuka dapat dideteksi oleh modul lain. Penerapan berisi kode kerja yang sesuai dengan elemen yang dinyatakan dalam antarmuka. Pemrograman modular terkait erat dengan pemrograman terstruktur dan pemrograman berorientasi objek, semuanya memiliki tujuan yang sama untuk memfasilitasi konstruksi program dan sistem perangkat lunak besar dengan dekomposisi menjadi potongan-potongan yang lebih kecil, dan semuanya berasal sekitar tahun 1960-an. Sementara penggunaan bersejarah dari istilah-istilah ini tidak konsisten, "pemrograman modular" sekarang mengacu pada dekomposisi tingkat tinggi dari kode seluruh program menjadi beberapa bagian: pemrograman terstruktur untuk penggunaan kode tingkat rendah dari aliran kontrol terstruktur, dan pemrograman berorientasi objek untuk penggunaan ''data'' objek, semacam struktur data.

Dalam pemrograman berorientasi objek, penggunaan antarmuka sebagai pola arsitektur untuk membangun modul dikenal sebagai pemrograman berbasis antarmuka.

## Sejarah
Pemrograman modular, dalam bentuk subsistem (terutama untuk I/O) dan pustaka perangkat lunak, berasal dari sistem perangkat lunak awal, di mana ia digunakan untuk penggunaan kembali kode. Pemrograman modular itu sendiri, dengan tujuan modularitas, dikembangkan pada akhir 1960-an dan 1970-an, sebagai analog skala yang lebih besar dari konsep pemrograman terstruktur (1960-an). Istilah "pemrograman modular" setidaknya berasal dari Simposium Nasional tentang Pemrograman Modular, yang diselenggarakan di Institut Informasi dan Sistem pada Juli 1968 oleh Larry Constantine; konsep kunci lainnya adalah penyembunyian informasi (1972) dan pemisahan kekhawatiran (SoC, 1974).

Modul tidak termasuk dalam spesifikasi asli untuk ALGOL 68 (1968), tetapi dimasukkan sebagai ekstensi dalam implementasi awal, ALGOL 68-R (1970) dan ALGOL 68C (1970), dan kemudian diformalkan.  Salah satu bahasa pertama yang dirancang sejak awal untuk pemrograman modular adalah Modula (1975) yang berumur pendek, oleh Niklaus Wirth. Bahasa modular awal lainnya adalah Mesa (1970-an), oleh Xerox PARC, dan Wirth menggunakan Mesa serta Modula asli dalam penggantinya, Modula-2 (1978), yang memengaruhi bahasa-bahasa selanjutnya, terutama melalui penggantinya, Modula-3 (1980-an). Penggunaan nama yang memenuhi syarat titik oleh Modula, seperti merujuk ke objek dari modul, bertepatan dengan notasi untuk mengakses bidang catatan (dan serupa untuk atribut atau metode objek), dan sekarang tersebar luas, terlihat di C++, C#, Dart, Go, Java, OCaml, dan Python, antara lain. Pemrograman modular menjadi tersebar luas sejak tahun 1980-an: bahasa Pascal asli (1970) tidak menyertakan modul, tetapi versi selanjutnya, terutama UCSD Pascal (1978) dan Turbo Pascal (1983) memasukkannya dalam bentuk "unit", seperti halnya Ada (1980) yang dipengaruhi Pascal. Standar Extended Pascal ISO 10206:1990 tetap lebih dekat dengan Modula2 dalam dukungan modularnya. ML standar (1984) memiliki salah satu sistem modul terlengkap, termasuk functor (modul berparameter) untuk memetakan antar modul.

Pada tahun 1980-an dan 1990-an, pemrograman modular dibayangi oleh dan sering digabungkan dengan pemrograman berorientasi objek, terutama karena popularitas C++ dan Java. Misalnya, keluarga bahasa C memiliki dukungan untuk objek dan kelas dalam C++ (awalnya C dengan Kelas, 1980) dan Objective-C (1983), hanya mendukung modul 30 tahun atau lebih kemudian. Java (1995) mendukung modul dalam bentuk paket, meskipun unit utama organisasi kode adalah kelas. Namun, Python (1991) secara menonjol menggunakan modul dan objek sejak awal, menggunakan modul sebagai unit utama organisasi kode dan "paket" sebagai unit skala yang lebih besar; dan Perl 5 (1994) mencakup dukungan untuk modul dan objek, dengan beragam modul yang tersedia dari CPAN (1993). OCaml (1996) mengikuti ML dengan modul dan functor pendukung.

Pemrograman modular sekarang tersebar luas, dan ditemukan di hampir semua bahasa utama yang dikembangkan sejak tahun 1990-an. Kepentingan relatif modul bervariasi antar bahasa, dan dalam bahasa berorientasi objek berbasis kelas masih ada tumpang tindih dan kebingungan dengan kelas sebagai unit organisasi dan enkapsulasi, tetapi keduanya mapan sebagai konsep yang berbeda.

## Referensi