1 poin oleh GN⁺ 2023-10-17 | 1 komentar | Bagikan ke WhatsApp
  • Artikel yang berargumen bahwa, bertentangan dengan kepercayaan populer, C bukanlah bahasa tingkat rendah
  • Penulis David Chisnall mengusulkan bahwa kerentanan Meltdown dan Spectre disebabkan oleh kemampuan prosesor untuk mengeksekusi instruksi melewati pemeriksaan akses, dan bahwa fitur ini ditambahkan agar para pemrogram C percaya bahwa mereka sedang melakukan pemrograman dalam bahasa tingkat rendah.
  • Chisnall berargumen bahwa agar sebuah bahasa "dekat dengan metal", bahasa tersebut harus menyediakan mesin abstrak yang dapat dipetakan dengan mudah ke abstraksi yang diekspos oleh platform target, dan ia menyatakan bahwa hal ini tidak terjadi pada C.
  • Penulis mengusulkan bahwa akar penyebab kerentanan Spectre dan Meltdown adalah karena para arsitek prosesor mencoba membuat prosesor cepat yang mengekspos mesin abstrak seperti PDP-11, sehingga para pemrogram C dapat terus percaya bahwa bahasa mereka dekat dengan perangkat keras dasar.
  • Chisnall berargumen bahwa agar kode C dapat berjalan cepat, diperlukan transformasi kompiler yang kompleks dan ribuan orang-tahun untuk membuat kompiler yang cukup cerdas.
  • Penulis mengusulkan bahwa sifat inti dari bahasa tingkat rendah adalah para pemrogram harus dapat dengan mudah memahami bagaimana mesin abstrak bahasa tersebut dipetakan ke mesin fisik yang mendasarinya, dan ia menyatakan bahwa hal ini tidak berlaku untuk C.
  • Chisnall menyimpulkan bahwa mungkin sudah waktunya berhenti mencoba membuat kode C menjadi cepat, dan sebagai gantinya meluangkan waktu untuk memikirkan seperti apa model pemrograman pada prosesor cepat. Ia mengusulkan bahwa prosesor yang dirancang murni untuk kecepatan kemungkinan akan mendukung sejumlah besar thread, memiliki unit vektor yang lebar, dan model memori yang jauh lebih sederhana.

1 komentar

 
GN⁺ 2023-10-17
Opini Hacker News
  • Artikel ini berpendapat bahwa C bukan bahasa tingkat rendah karena manajemen memori manual dan pemanggilan allocator dilakukan secara eksplisit.
  • Beberapa komentator berpendapat bahwa bagi orang yang memahaminya dan menggunakannya secara profesional, C memang merupakan bahasa tingkat rendah.
  • Ada perbedaan pendapat terhadap klaim penulis bahwa instruction set CPU seharusnya mengekspos lebih banyak implementasi CPU, dengan mengutip upaya-upaya gagal di masa lalu.
  • Konsep dari tingkat rendah hingga tingkat tinggi tampak sebagai sebuah spektrum, dan C berada di sisi yang lebih rendah di antara bahasa yang mengekspos primitif mesin seperti manajemen memori dan thread.
  • Klaim artikel bahwa pemrograman paralel tidaklah sulit dianggap menyesatkan oleh sebagian komentator.
  • Premis artikel bahwa komputer tidak menyerupai struktur PDP-11 tampak lebih akurat dari sebelumnya, tetapi kesimpulan untuk membayangkan prosesor non-C tampaknya tidak terlalu kuat.
  • Beberapa komentator berpendapat bahwa klaim artikel bahwa komputer bukan PDP-11 yang cepat memang benar, tetapi mengaitkannya dengan C adalah keliru.
  • Klaim artikel bahwa C bukan bahasa tingkat rendah karena adanya padding pada struct dan fakta bahwa signed overflow adalah undefined behavior tampak konstruktif.
  • Klaim bahwa dominasi C membuat perancang CPU secara alami harus membuat sesuatu yang bisa menjalankan C tampak masuk akal, tetapi tidak jelas bagaimana hal itu terkait dengan klaim pertama dan judul artikel.
  • Jika teknik canggih pada CPU modern membuat C tidak lagi menjadi bahasa "tingkat rendah", maka hal yang sama juga berlaku untuk assembly language.
  • Artikel ini mengingatkan sebagian komentator pada VLIW, di mana satu instruksi VLIW dapat mencakup beberapa instruksi independen yang bisa dijalankan secara paralel.