Saya juga akan menentang butir di sini dan mencoba membuat kasus estetika (sedikit lucu) untuk C. Sementara beberapa orang mungkin menyebutnya "jelek" untuk alasan yang berbeda, seperti kurangnya konstruksi tingkat tinggi seperti kelas atau dengan mengandalkan pointer, saya menemukan bahwa itu tidak terjadi pada saya .
TL; DR : Menurut saya, C itu sederhana, C bagus bisa dibaca dan ada kegembiraan tertentu yang bisa ditemukan dalam memukul-mukul bit.
C itu sederhana
Standar C hanya mendefinisikan beberapa tipe dan mekanisme dasar untuk membuat fungsi, pointer dan array darinya. Selain itu, ada sejumlah kecil konstruksi komposisi untuk membuat tipe yang lebih kompleks dari primitif (seperti struct dan serikat pekerja). Perhatikan bagaimana saya menggambarkan sebagian besar bahasa dalam dua kalimat. Ini berarti Anda tidak harus menyimpan terlalu banyak aturan dan formulir sintaksis di kepala Anda saat melakukan pengodean.
Sederhana itu indah .
C tidak misterius
Tidak seperti banyak bahasa tingkat tinggi, Anda akan kesulitan menemukan banyak simbol aneh dan tidak dapat dipahami di C. Di dunia C, fasilitas utama untuk abstraksi dan "kompresi sintaksis" adalah fungsi - semantik yang sangat sederhana dan konstruk penjelasan sendiri. Gaya C yang baik mendorong kecantikan yang hampir puitis dan mudah dibaca. Untuk mengilustrasikannya, mari kita coba membaca cuplikan berikut dari kernel Linux. Bahkan tanpa memahami struktur data yang mendasari dan detail implementasi, kami dapat memahami banyak hal berikut ini:
bool kthread_freezable_should_stop(bool *was_frozen)
{
bool frozen = false;
might_sleep();
if (unlikely(freezing(current)))
frozen = __refrigerator(true);
if (was_frozen)
*was_frozen = frozen;
return kthread_should_stop();
}
Bagian tengah fungsinya bertuliskan "jika tidak mungkin arus membeku, tanyakan pada kulkas apakah pembekuan benar-benar terjadi". Seuss tidak bisa menulisnya dengan lebih baik.
Dapat dibaca itu indah .
C transparan
Kecuali pernyataan C menyertakan pemanggilan fungsi, Anda biasanya bisa mendapatkan ide yang sangat bagus tentang biaya run-time dan efek sampingnya. C memberikan kontrol programmer dan akhirnya percaya padanya untuk melakukan hal yang benar. Kita bisa mendapatkan gambaran tentang apa yang terjadi ketika potongan ini (sedikit diformat ulang untuk SE) keluar dari implementasi strlen()
dalam pustaka GNU C berjalan, karena setiap operator memiliki semantik yang didefinisikan dengan baik. Tidak ada overloading di C.
for (char_ptr = str; ((unsigned long int) char_ptr & (sizeof (longword) - 1)) != 0;
++char_ptr)
if (*char_ptr == '\0')
return char_ptr - str;
Untuk tujuan "optimisabilitas", properti ini sangat bagus. Boleh dibilang, beberapa bahasa tingkat tinggi membuat ekspresi ringkas dari algoritma tingkat tinggi lebih mudah (seperti C ++ dengan kelas dan overloading), tetapi untuk tujuan C dirancang untuk - bertindak sebagai assembler portabel - C sangat ideal. Kadang-kadang, setelah eksekusi kode tingkat rendah yang berhasil, seorang programmer mungkin merasakan satu dengan mesin, dalam arti (atau nol - ini adalah detail implementasi). Ini bukan untuk mengatakan bahasa lain itu buruk, tidak "zen" cukup atau sesuatu yang konyol seperti itu, hanya saja IMO C dapat menarik dengan cara yang banyak bahasa lain telah memilih untuk tidak menjadi, karena banyak alasan yang valid.
Menurut pendapat saya, tiga poin yang disajikan di atas membuat pengelolaan sistem yang kompleks - namun efisien - dapat dikelola, yang terkandung dalam pikiran saya oleh Linux. Saya menemukan bahwa dunia ini menarik bagi kepekaan estetika saya dan saya akan menyarankan siapa pun mempertimbangkan C sebagai target berikutnya untuk mempertimbangkan poin-poin ini. Saya merasa bahwa argumen tentang sistem operasi dan yang lainnya lebih baik didukung dengan secara eksplisit menyatakannya karena orang tentu tidak perlu memahami kernel untuk menjadi programmer yang sukses, tetapi orang mungkin menemukan bidang ini menarik secara subyektif.