Hacktical C: Panduan Praktis Memicu Perdebatan tentang Peran C dalam Pemrograman Modern

BigGo Editorial Team
Hacktical C: Panduan Praktis Memicu Perdebatan tentang Peran C dalam Pemrograman Modern

Di era yang didominasi oleh bahasa yang aman dari segi memori dan abstraksi tingkat tinggi, sebuah buku open-source baru berjudul Hacktical C telah muncul, memposisikan dirinya sebagai panduan praktis bagi para hacker untuk bahasa pemrograman C. Dirilis di bawah lisensi terbuka, buku ini telah memicu diskusi intens dalam komunitas pemrograman mengenai relevansi, keamanan, dan posisi C dalam ekosistem pemrograman modern.

C sebagai Assembly Portabel - Mitos atau Kenyataan?

Salah satu poin yang paling diperdebatkan dalam diskusi komunitas berkisar pada klaim penulis bahwa C berdiri di kelas tersendiri sebagai bahasa assembler yang sebagian besar portabel. Karakterisasi ini mendapat penolakan signifikan dari para pengembang yang berpendapat bahwa C jauh dari menjadi bahasa tingkat rendah yang sesungguhnya menurut standar modern.

Ketika komputer Anda adalah PDP-11, jika tidak, itu hanyalah bahasa sistem tingkat tinggi seperti yang lainnya.

Beberapa komentator menunjukkan bahwa C sebenarnya menciptakan mesin abstrak yang tidak secara langsung memetakan ke kemampuan perangkat keras modern. Ketika menulis kode C, pengembang sebenarnya memprogram untuk mesin virtual yang dijelaskan oleh spesifikasi C daripada perangkat keras yang sebenarnya. Abstraksi ini mencakup perilaku yang tidak ada dalam perangkat keras fisik, seperti perilaku tidak terdefinisi seputar overflow bertanda dan pelacakan inisialisasi memori. Selain itu, kritikus mencatat bahwa C tidak memiliki dukungan asli untuk banyak fitur perangkat keras yang telah menjadi standar selama beberapa dekade terakhir, termasuk manipulasi bit yang tepat untuk nilai sub-byte dan operasi SIMD yang mudah.

Keamanan Memori dan Perdebatan Kebebasan dengan Tanggung Jawab

Posisi penulis bahwa C tidak terlalu berusaha mencegah Anda membuat kesalahan dan menawarkan kebebasan dengan tanggung jawab telah memicu diskusi substansial tentang implikasi dunia nyata dari filosofi ini. Sementara beberapa komentator menghargai pendekatan ini, banyak yang menantang gagasan bahwa bahasa yang tidak aman dari segi memori adalah pilihan yang layak untuk pengembangan perangkat lunak modern.

Para kritikus berpendapat bahwa masalah keamanan memori bukan hanya masalah keterampilan programmer tetapi mewakili kerentanan sistematis yang terus menghasilkan eksploitasi keamanan terlepas dari keahlian pengembang. Mereka menunjukkan bahwa tidak ada jumlah keahlian pemrograman individu yang secara bermakna mengurangi tingkat CVE yang disebabkan oleh bug keamanan memori dalam program C. Perdebatan meluas ke apakah fleksibilitas yang ditawarkan oleh C sepadan dengan biaya keamanan dan pemeliharaan, terutama ketika bahasa modern dengan escape hatch yang tidak aman (seperti Rust) dapat memberikan keamanan dan kinerja.

Teknik C Praktis: Hack Cerdas atau Pola Berbahaya?

Buku ini sendiri menampilkan berbagai teknik pemrograman C, beberapa di antaranya telah menghasilkan kekaguman sekaligus kekhawatiran. Salah satu contoh yang menarik perhatian khusus adalah implementasi coroutine menggunakan makro __LINE__ dengan cara kreatif:

Topik Utama dalam Hacktical C

* Makro
* Aritmatika Fixed-Point
* Daftar Intrusive Doubly Linked
* Tugas Konkuren Ringan
* Alokator Memori yang Dapat Dikomposisi
* Vektor
* Pengecualian
* Set dan Map Terurut
* Kompilasi Dinamis
* Aliran yang Dapat Diperluas
* Log Terstruktur

Dukungan Bahasa C berdasarkan Compiler

| Compiler | C17 | C11 | VLAs | C23 |
|----------|-----|-----|------|-----|
| GCC      | Ya | Ya | Ya  | Ya (default) |
| Clang    | Ya | Ya | Ya  | Sebagian |
| MSVC     | Ya (sejak 2020) | Ya | Tidak (tidak direncanakan) | Roadmap tidak jelas |

#define hc_task_yield(task)   
  do {     
    task->state = __LINE__;   
    return;     
    case __LINE__:;           
  } while (0)

Sementara beberapa komentator menganggap teknik ini licik namun cerdas, yang lain menunjuk pada implementasi alternatif dan mendiskusikan kelebihan menggunakan ekstensi GNU versus C standar. Ini menyoroti fokus buku pada pendekatan praktis, terkadang tidak konvensional untuk memecahkan masalah di C.

Hubungan Microsoft dengan C

Pernyataan buku bahwa Microsoft sayangnya telah memilih untuk mengabaikan C untuk waktu yang lama, dengan kompilernya tertinggal jauh di belakang yang lain memicu diskusi tentang keadaan dukungan C Microsoft saat ini. Para komentator menjelaskan bahwa meskipun Microsoft secara historis memprioritaskan C++ daripada C, telah ada peningkatan dalam beberapa tahun terakhir. Pada tahun 2020, Microsoft menambahkan dukungan untuk standar C11 dan C17, meskipun beberapa fitur seperti Variable Length Arrays (VLAs) tetap tidak didukung tanpa rencana untuk implementasi. Komunitas tetap tidak yakin tentang peta jalan Microsoft untuk dukungan C23, terutama mengingat fokus perusahaan yang meningkat pada bahasa yang aman dari segi memori sebagai bagian dari inisiatif keamanannya.

Dalam lanskap yang semakin didominasi oleh diskusi tentang keamanan memori dan fitur bahasa modern, Hacktical C mewakili baik sumber daya praktis bagi programmer C maupun pernyataan filosofis tentang pilihan bahasa pemrograman. Baik dipandang sebagai kumpulan teknik yang berharga atau pembelaan terhadap pendekatan yang semakin diperdebatkan dalam pemrograman sistem, buku ini tentu telah berhasil menghasilkan diskusi yang mendalam tentang tempat C dalam dunia pemrograman saat ini.

Referensi: Hacktical C