Hacktical C: Panduan Praktikal Mencetuskan Perbahasan tentang Peranan C dalam Pengaturcaraan Moden

BigGo Editorial Team
Hacktical C: Panduan Praktikal Mencetuskan Perbahasan tentang Peranan C dalam Pengaturcaraan Moden

Dalam era yang didominasi oleh bahasa pengaturcaraan yang selamat dari segi memori dan abstraksi tahap tinggi, sebuah buku sumber terbuka baharu bertajuk Hacktical C telah muncul, memposisikan dirinya sebagai panduan praktikal penggodam untuk bahasa pengaturcaraan C. Dikeluarkan di bawah lesen terbuka, buku ini telah mencetuskan perbincangan hangat dalam komuniti pengaturcaraan mengenai kerelevanan, keselamatan, dan kedudukan C dalam ekosistem pengaturcaraan moden.

C sebagai Pemasangan Mudah Alih - Mitos atau Realiti?

Salah satu perkara yang paling kontroversi dalam perbincangan komuniti berkisar tentang dakwaan penulis bahawa C berada dalam kelas tersendiri sebagai bahasa pemasangan yang kebanyakannya mudah alih. Pencirian ini telah mendapat tentangan yang ketara daripada pembangun yang berhujah bahawa C jauh daripada menjadi bahasa tahap rendah sebenar mengikut standard moden.

When your computer is a PDP-11, otherwise it is a high level systems language like any other.

Beberapa pengulas menunjukkan bahawa C sebenarnya mencipta mesin abstrak yang tidak dipetakan secara langsung kepada keupayaan perkakasan moden. Apabila menulis kod C, pembangun sebenarnya mengaturcara untuk mesin maya yang diterangkan oleh spesifikasi C dan bukannya perkakasan sebenar. Abstraksi ini termasuk tingkah laku yang tidak wujud dalam perkakasan fizikal, seperti tingkah laku yang tidak ditentukan sekitar limpahan bertanda dan pengesanan pengawalan memori. Tambahan pula, pengkritik menyatakan bahawa C tidak mempunyai sokongan asli untuk banyak ciri perkakasan yang telah menjadi standard sejak beberapa dekad yang lalu, termasuk manipulasi bit yang betul untuk nilai sub-bait dan operasi SIMD yang mudah.

Keselamatan Memori dan Perbahasan Kebebasan dengan Tanggungjawab

Pendirian penulis bahawa C tidak berusaha keras untuk menghalang anda daripada membuat kesilapan dan menawarkan kebebasan dengan tanggungjawab telah mencetuskan perbincangan yang besar mengenai implikasi dunia sebenar dari falsafah ini. Walaupun sesetengah pengulas menghargai pendekatan ini, ramai yang mencabar tanggapan bahawa bahasa yang tidak selamat dari segi memori adalah pilihan yang berdaya maju untuk pembangunan perisian moden.

Pengkritik berhujah bahawa isu keselamatan memori bukan sekadar perkara kemahiran pengaturcara tetapi mewakili kelemahan sistematik yang terus menghasilkan eksploitasi keselamatan tanpa mengira kepakaran pembangun. Mereka menunjukkan bahawa tiada jumlah kepakaran pengaturcaraan individu yang telah mengurangkan kadar CVE yang disebabkan oleh pepijat keselamatan memori dalam program C secara bermakna. Perbahasan ini meluas kepada sama ada fleksibiliti yang ditawarkan oleh C berbaloi dengan kos keselamatan dan penyelenggaraan, terutamanya apabila bahasa moden dengan penyelesaian tidak selamat (seperti Rust) boleh menyediakan kedua-dua keselamatan dan prestasi.

Teknik C Praktikal: Penyelesaian Bijak atau Corak Berbahaya?

Buku ini sendiri mempamerkan pelbagai teknik pengaturcaraan C, sesetengahnya telah menghasilkan kedua-dua kekaguman dan kebimbangan. Satu contoh yang menarik perhatian khusus ialah implementasi coroutine menggunakan makro __LINE__ dengan cara yang kreatif:

Topik Utama dalam Hacktical C

* Makro
* Aritmetik Titik Tetap
* Senarai Berkait Dua Intrusif
* Tugas Serentak Ringan
* Pengumpuk Memori Boleh Digabung
* Vektor
* Pengecualian
* Set dan Peta Tersusun
* Pengkompilan Dinamik
* Aliran Boleh Diperluas
* Log Berstruktur

 Sokongan Bahasa C mengikut Pengkompil

| Pengkompil | C17 | C11 | VLAs | C23 |
|----------|-----|-----|------|-----|
| GCC      | Ya | Ya | Ya  | Ya (lalai) |
| Clang    | Ya | Ya | Ya  | Sebahagian |
| MSVC     | Ya (sejak 2020) | Ya | Tidak (tidak dirancang) | Pelan tidak jelas |

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

Walaupun sesetengah pengulas mendapati teknik ini menakjubkan tetapi bijak, yang lain menunjukkan implementasi alternatif dan membincangkan kelebihan menggunakan sambungan GNU berbanding C standard. Ini menyoroti fokus buku pada pendekatan praktikal, kadangkala tidak konvensional untuk menyelesaikan masalah dalam C.

Hubungan Microsoft dengan C

Dakwaan buku bahawa Microsoft malangnya telah memilih untuk mengabaikan C untuk masa yang lama, dengan pengkompil mereka ketinggalan jauh di belakang yang lain telah mencetuskan perbincangan mengenai keadaan semasa sokongan C Microsoft. Pengulas menjelaskan bahawa walaupun Microsoft secara sejarah telah mengutamakan C++ berbanding C, terdapat peningkatan dalam tahun-tahun kebelakangan ini. Pada 2020, Microsoft menambah sokongan untuk standard C11 dan C17, walaupun beberapa ciri seperti Variable Length Arrays (VLAs) masih tidak disokong tanpa sebarang rancangan untuk pelaksanaan. Komuniti masih tidak pasti mengenai pelan Microsoft untuk sokongan C23, terutamanya memandangkan tumpuan syarikat yang semakin meningkat terhadap bahasa yang selamat dari segi memori sebagai sebahagian daripada inisiatif keselamatannya.

Dalam landskap yang semakin didominasi oleh perbincangan mengenai keselamatan memori dan ciri bahasa moden, Hacktical C mewakili kedua-dua sumber praktikal untuk pengaturcara C dan kenyataan falsafah mengenai pilihan bahasa pengaturcaraan. Sama ada dilihat sebagai koleksi teknik yang berharga atau pembelaan pendekatan yang semakin dipersoalkan dalam pengaturcaraan sistem, buku ini pasti telah berjaya menjana perbincangan yang mendalam mengenai tempat C dalam dunia pengaturcaraan hari ini.

Rujukan: Hacktical C