Dalam dunia bahasa pemrograman, tipe data aljabar telah menjadi landasan pengembangan perangkat lunak modern, khususnya dalam pemrograman fungsional. Meskipun banyak pengembang menggunakan konstruksi yang kuat ini setiap hari, hanya sedikit yang mengetahui sejarah menarik dan perdebatan akademis seputar asal usulnya. Diskusi komunitas baru-baru ini telah memberikan pencerahan baru tentang sejarah ini, mengungkap koneksi dan koreksi yang menantang pemahaman konvensional.
Koneksi McCarthy-Hoare yang Dijelaskan
Salah satu penemuan paling signifikan dari penelitian komunitas menyangkut hubungan antara kontribusi John McCarthy dan C.A.R. Hoare. Sementara penelitian awal menyarankan Hoare secara independen mengembangkan tipe sum dan product, investigasi yang lebih mendalam mengungkap sejarah yang lebih kolaboratif. Makalah Hoare tahun 1965 tentang Record Handling sebenarnya dibangun langsung berdasarkan karya McCarthy pada Oktober 1964, Definition of new data types in ALGOL x. Kedua peneliti bertugas di komite penerus ALGOL 60 di mana konsep-konsep ini secara aktif didiskusikan. Hoare mengadopsi ide inti McCarthy tetapi menggunakan terminologi yang berbeda, mengambil dari record dan record class COBOL 60 alih-alih kata kunci Cartesian milik McCarthy. Evolusi terminologi ini akhirnya akan mempengaruhi SIMULA 67 dan membentuk pemrograman berorientasi objek selama beberapa dekade.
Hoare telah mengambil secara eksplisit konsep tipe product dan tipe union (tipe sum) dari McCarthy.
Makalah Historis Kunci dalam Pengembangan Algebraic Data Type
- Oktober 1964: John McCarthy - "Definition of new data types in ALGOL x" (memperkenalkan produk Cartesian dan union langsung)
- November 1965: C.A.R. Hoare - "Record Handling" (membangun karya McCarthy menggunakan terminologi COBOL)
- 1966: Rod Burstall - Karya awal tentang tipe rekursif dan pembuktian
- 1970: Frederick McBride - Tesis yang memperkenalkan pattern matching atas tipe aljabar
- 1980: Burstall - "HOPE, an experimental applicative language" (tagged union pertama dalam pemrograman fungsional)
Warisan Simula dan Pascal Ditinjau Kembali
Narasi seputar tipe sum dalam bahasa pemrograman imperatif patut dipertimbangkan kembali. Sementara Pascal dan C sering dikreditkan karena membatasi adopsi tipe sum, Simula 67 sebenarnya memiliki kemampuan diskriminasi tipe yang canggih melalui pernyataan inspect when-nya. Konstruk ini menyediakan fungsionalitas yang secara struktural identik dengan pencocokan pola yang ekshaustif dalam bahasa modern. Niklaus Wirth mengakui kekuatan ini, merujuk pendekatan Simula dalam penilaiannya terhadap Pascal pada tahun 1975. Wirth kemudian menyempurnakan konsep-konsep ini di Oberon, mengimplementasikan variant record dengan penegakan tag dan pemeriksaan kelengkapan yang ditingkatkan. Ini menunjukkan bahwa fitur-fitur mirip tipe sum telah ada dalam bahasa imperatif jauh lebih awal dari yang biasa diakui, meskipun tanpa jaminan keamanan tipe yang ketat seperti yang ditemukan dalam bahasa fungsional.
Dukungan Bahasa Modern untuk Sum Types
- Bahasa Fungsional: ML, Haskell, OCaml (dukungan native)
- Pemrograman Sistem: Rust (enum native dengan pattern matching)
- Multi-paradigma: Swift (enum), TypeScript (discriminated unions)
- Bahasa JVM: Java, Scala, Kotlin (melalui sealed classes + case/data classes)
- Imperatif Historis: Simula 67 (inspect when), Pascal (variant records), ALGOL-68 (sistem tipe komprehensif)
Pengaruh ALGOL-68 Ditemukan Kembali
Peran ALGOL-68 dalam sejarah bahasa pemrograman telah sangat diremehkan. Bertentangan dengan anggapan sebagai jalan buntu yang menarik, bahasa ini mengimplementasikan baik tipe sum maupun product dan menampilkan pencocokan pola yang ekshaustif sebelum ML. Dennis Ritchie sendiri mengakui pengaruh ALGOL-68 terhadap pengembangan C. Sistem tipe komprehensif bahasa ini dan fitur-fitur inovatif lainnya terbukti sangat bertahan lama. Seperti yang dicatat oleh seorang komentator, sebagian besar bahasa modern menunjukkan hubungan homomorfik dengan ALGOL-68, khususnya dalam sistem tipe inti dan pendekatan struktural mereka. Pengakuan ini memposisikan ALGOL-68 bukan sebagai catatan kaki sejarah, tetapi sebagai pengaruh fondasional yang membentuk desain bahasa selanjutnya dengan cara yang baru sekarang kita hargai sepenuhnya.
Implementasi Modern dan Fondasi Matematis
Dasar matematis dari tipe data aljabar terhubung langsung ke konsep sum dan product dalam teori kategori. Fondasi teoretis ini menjelaskan mengapa konstruk tipe ini terbukti sangat kuat di berbagai paradigma pemrograman. Bahasa-bahasa modern telah mengimplementasikan tipe sum melalui berbagai mekanisme: sistem enum Swift, union yang terdiskriminasi TypeScript, dan pola sealed class dalam Java, Scala, dan Kotlin. Implementasi-implementasi ini menunjukkan bahwa konsep inti yang dikembangkan McCarthy dan Hoare beberapa dekade lalu tetap relevan dan kuat. Perbedaan antara tipe sum teoretis dan tagged union praktis mencerminkan ketegangan yang berkelanjutan antara kemurnian matematis dan kendala implementasi yang telah menjadi ciri desain bahasa pemrograman sejak awal.
Perjalanan tipe data aljabar dari konsep akademis menjadi alat pemrograman arus utama mengungkap banyak hal tentang bagaimana ide berevolusi dalam ilmu komputer. Ini adalah kisah tentang penemuan independen, pengembangan kolaboratif, dan jalur yang terkadang mengejutkan melalui mana inovasi menyebar. Saat kita terus membangun bahasa dan sistem baru, memahami sejarah ini membantu kita menghargai hubungan mendalam antara teori matematika dan implementasi praktis yang memungkinkan perangkat lunak modern.
Referensi: A VERY EARLY HISTORY OF ALGEBRAIC DATA TYPES
