Ekstensi Bahasa yang Hilang dari High C milik MetaWare
Kompiler C pada era 1980-an
- Pada 1980-an, banyak perusahaan kecil saling bersaing sambil menawarkan beragam ekstensi bahasa
- Phar Lap mengembangkan extender DOS yang dapat memanfaatkan prosesor 32-bit 80386, dan MetaWare mem-porting kompiler High C untuk itu
- Fujitsu mengintegrasikan extender DOS milik Phar Lap ke platform FM TOWNS, dan High C menjadi kompiler C bawaan untuk platform ini
Ekstensi bahasa unik di High C
- High C tidak hanya mencakup ekstensi khusus DOS, tetapi juga berbagai ekstensi bahasa yang berfokus pada kenyamanan pengguna
- Beberapa fitur baru masuk ke standar resmi beberapa dekade kemudian, dan sebagian lainnya masih belum ada di C maupun C++
Penggunaan garis bawah dalam literal angka
- Garis bawah dapat digunakan untuk memisahkan literal angka yang panjang agar lebih mudah dibaca
- C++ memperkenalkan fitur ini di C++14, dan C memperkenalkannya di C23
Argumen berlabel
- Saat memanggil fungsi dengan banyak argumen, argumen dapat diberi label
- Mirip dengan fitur populer di Python, dan jika label argumen ada, argumen dapat ditentukan tanpa bergantung pada urutan
- Fitur ini masih belum ada di C maupun C++ standar
Range case
- Menyediakan fitur untuk mencocokkan rentang nilai seperti di Pascal
- Fitur ini tidak ada di C maupun C++ standar
Fungsi bertingkat
- Fungsi lain dapat dideklarasikan secara bertingkat di dalam sebuah fungsi
- Fungsi bertingkat dapat dideklarasikan dengan tipe "entire function value", yang bekerja sebagai closure non-escaping
- Menawarkan implementasi yang lebih lengkap dibanding ekstensi fungsi bertingkat milik GCC
- C standar masih belum memiliki fitur fungsi bertingkat yang resmi
Generator
- Mendukung coroutine generator bergaya Python
- Fungsi generator dapat menghasilkan nilai berkali-kali, dan setiap nilai dapat diproses secara berurutan menggunakan sintaks loop
for yang baru
- Memungkinkan interaksi yang kompleks dengan fitur fungsi bertingkat
- Kecil kemungkinan C standar akan mengintegrasikan fitur ini
Ringkasan GN⁺
- Kompiler High C milik MetaWare menawarkan berbagai ekstensi bahasa pada era 1980-an yang sangat meningkatkan daya ekspresif bahasa C
- Sebagian fitur baru masuk ke standar resmi beberapa dekade kemudian, dan sebagian lainnya masih belum ada di C maupun C++
- Fitur tingkat lanjut seperti generator dan fungsi bertingkat sulit ditemukan bahkan di banyak bahasa pemrograman masa kini
- Artikel ini membantu memahami sejarah dan proses perkembangan bahasa C, serta memberikan wawasan menarik tentang perancangan bahasa pemrograman
1 komentar
Komentar Hacker News
Pada 2011 pernah menulis
iterator-driven for. Saat itu membayangkan jika itu masuk ke standar C++Memiliki
High C/C++ Language ReferenceFitur yang tersedia di bahasa D (atau Das BetterC):
caseKompiler C
lcc-winmenambahkan operator overloading, argumen fungsi default, dan overloading fungsiKompiler Plan 9 C memperkenalkan berbagai ekstensi bahasa, dan sebagian di antaranya masuk ke standar C
Saat ini GCC mendukung flag
-fplan9-extensions, yang menyediakan fitur seperti konversi otomatis pointer struct menjadi field anonimOrang yang memperkenalkan fitur-fitur ini benar-benar sangat mendahului zamannya. Namun disayangkan hal itu tidak memengaruhi standar
Topik terkait pernah dibahas sebelumnya di Hacker News
Ada yang bertanya-tanya apakah ada salinan PDF-nya
Alasan string literal pada kode contoh berakhir dengan ¥n alih-alih \n adalah karena code page Shift-JIS
Generatornya mengingatkan pada pertanyaan iterator internal/eksternal di Rust dan
try_fold()Tipografi bukunya terasa indah sekaligus mengerikan pada saat yang sama
Tidak terlalu paham notasi bahasa Jepang atau aturan kerning, tetapi terlihat seperti font proporsional dipaksa masuk ke sel monospace
Senang karena contoh kodenya bukan memakai font 8pt
Ada yang penasaran apakah buku itu ditulis dalam bahasa Jepang, atau ditulis dalam bahasa Inggris lalu diterjemahkan ke bahasa Jepang
Jika itu keluaran Fujitsu, kemungkinan besar ditulis dalam bahasa Jepang. Kualitas bahasa Inggris pada pernyataan
printfdan komentar kode dari penutur nonnative cukup mengesankanTerutama fitur yang berkaitan dengan generator benar-benar sangat maju untuk masanya
Mungkin ini juga dimungkinkan karena Fujitsu tidak melalui proses standardisasi. Namun itu juga alasan mengapa ekstensi-ekstensi seperti ini ditemukan kembali dan diciptakan ulang di C/C++ modern