1 poin oleh GN⁺ 2024-09-27 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2024-09-27
Komentar Hacker News
  • Pada 2011 pernah menulis iterator-driven for. Saat itu membayangkan jika itu masuk ke standar C++

  • Memiliki High C/C++ Language Reference

  • Fitur yang tersedia di bahasa D (atau Das BetterC):

    • Bisa menggunakan garis bawah pada literal
    • Bisa menentukan rentang case
    • Bisa menggunakan argumen bernama
    • Bisa menggunakan fungsi bertingkat
    • Bisa menggunakan fungsi bertingkat statis
    • Menyediakan fitur yang mirip generator
  • Kompiler C lcc-win menambahkan operator overloading, argumen fungsi default, dan overloading fungsi

  • Kompiler 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 anonim

  • Orang 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 printf dan komentar kode dari penutur nonnative cukup mengesankan

  • Terutama 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