Bagaimana komentar kode berkembang dari tahun 1940-an hingga 2020

Tetapi mereka tidak berkembang dengan cara apa pun. Dari bahasa pemrograman pertama hingga hari ini, komentar pada kode hanyalah teks statis (dengan beberapa pengecualian, yang akan saya bicarakan).

gambar

Nah, apa lagi yang bisa Anda tingkatkan atau hasilkan? Anda bertanya. Mari kita renungkan topik ini - mungkinkah untuk meningkatkan pengalaman kita dalam berinteraksi dengan aspek pemrograman yang penting namun sering diabaikan seperti dokumentasi dalam kode, atau dalam komentar sederhana.

Untuk mulai dengan, beberapa paragraf akan dikhususkan untuk topik judul artikel ini. Ya, karena memang tidak ada kisah perkembangan ini, sehingga Anda dapat menyebut judul itu provokatif. Penafian kecil: pengetahuan saya terbatas (menurun dalam pengalaman) untuk bahasa-bahasa ini: pengalaman luas: TS, JS, Rust, menengah: PHP, C ++, kecil: Go, Java.

Jadi, yang kita miliki adalah ini: JSDoc yang ditinggalkan dan bermasalah, akhirnya mati di era TypeScript, dengan cara yang tidak ada yang tidak kalah bermasalah dan ditinggalkan TSDoc. Untuk PHP, ada PHPDoc, yang sangat berguna ketika saya kode dalam bahasa ini. Saya mengakui bahwa saya memiliki pengalaman terkecil dalam C ++, jadi saya belum pernah mendengar hal seperti itu, dan CppDoc yang ditemukan di Google tidak menyebabkan apa-apa selain senyum yang sedih. Yang paling berkembang dalam hal ini adalah Rust, seperti biasa. Ini memiliki sistem RustDoc yang sangat baik, tetapi sayangnya tidak selalu ergonomis dan masih kurang didukung oleh IDE.

Dengan demikian, gambaran keseluruhan agak menyedihkan, dan infrastruktur komentar di sekitar kode belum berubah dari awal sejarah pemrograman. Komentar terlihat sama dengan 90 tahun yang lalu di Plancalkul bersyarat seperti pada kode assembler komputer modul bulan Apollo 11.

gambar
(foto dari shopify.com)

Ceritanya sudah berakhir. Sekarang, apa yang salah dengan fakta bahwa komentar hanyalah teks statis? Bukankah teks statis sempurna dan ada yang bisa diperbaiki? Mereka menemukan beberapa Hypertexts dan HTML, Internet ada di sekitar ini. Tapi siapa yang butuh semua ini? Apa yang sangat sulit untuk secara manual mengetikkan URL? Generasi milenium cukup malas.

Tentu saja itu sarkasme. Tapi apa hubungan Hypertext dengan komentar pada kode? Mari kita pikirkan masalah apa yang dipecahkan oleh Hypertext dan apakah ada masalah serupa saat menggunakan komentar kode?

Jadi, hypertext mengubah teks statis menjadi teks dengan Hyperlink. Cara termudah untuk memahami manfaat dari ini adalah dengan membaca artikel Wikipedia. Misalnya, tentang Large Hadron Collider . Setelah mulai membaca artikel, kebanyakan orang akan mengerti apa itu proton dan ion jika mereka tidak ketinggalan pelajaran fisika. Tapi kemudian kata "Hadron" muncul. Apa itu dan bagaimana pembaca dapat mengetahuinya? Jika itu adalah teks statis, maka tidak akan ada banyak pilihan, kecuali untuk menemukan suatu tempat (di perpustakaan?) Teks lain di mana ia mengatakan apa itu Hadron. Tapi alhamdulillah ini tidak benar, dan kita bisa mengklik Hyperlink.

Mari kita pikirkan, apakah ada situasi seperti itu dalam pemrograman? Ribuan dari mereka. Untuk menemukan contoh, buka hampir semua repositori terbuka, seperti kernel Linux. Saya membuka file pertama yang saya dapatkan

/** * irq_cpu_rmap_notify - callback for IRQ subsystem when IRQ affinity updated * @notify: struct irq_affinity_notify passed by irq/manage.c * @mask: cpu mask for new SMP affinity * * This is executed in workqueue context. */ static void irq_cpu_rmap_notify(/*   */) { /*   */ } 


Jadi, bayangkan Anda baru saja bergabung dengan proyek dan tiba-tiba ada sesuatu yang pecah. Mundur mengarah ke fungsi ini, tetapi Anda tidak tahu apa-apa tentang itu. Apa yang harus anda lakukan Itu benar - gunakan semua yang Anda harus mengerti tentang fungsi ini - kode itu sendiri dan komentar di atasnya. Teks manusia umumnya lebih mudah dipahami daripada kode itu sendiri, bukan? Karena itu, kita mulai dengan membaca komentar. Dan kemudian suasana hati kita jatuh di bawah alas.

IRQ macam apa? Anda tidak tahu apa itu. Apa langkah selanjutnya? Hubungi dan alihkan perhatian rekan yang lebih berpengalaman? Anda tentu saja bisa, tetapi tidak benar-benar ingin. Atau apakah mereka sedang berlibur. Cari berdasarkan kode? Anda akan menemukan ribuan referensi untuk singkatan ini, dan ini akan membuat Anda depresi. Nah, katakanlah Anda mencari-cari setengah dari basis kode dan tampaknya menemukan penjelasan tentang apa arti IRQ ini. Tetapi juga terjadi bahwa penjelasan ini adalah singkatan IRQ lain, yang memiliki arti yang sama sekali berbeda! Nah, kasus terakhir cukup langka, tapi tetap saja.

Tetapi bagaimana jika Anda mengklik kata IRQ dan secara ajaib, IDE Anda akan membawa Anda ke tempat definisi singkatan ini? Itu akan bagus, bukan? Dan selain itu, sederhananya, itu tidak lebih rumit daripada Hypertext. Jadi mengapa pada tahun 2020 programmer sendiri tidak akan membuat alat seperti itu? Saya akan menyoroti kapsul dan kalimat sebelumnya yang tebal. Alasan untuk ini adalah misteri besar bagi saya. Mungkin ada seperti untuk IDE lain, tetapi saya tidak menemukan apa pun untuk VSCode. Karena itu, saya membuat ekstensi ini sendiri. Saya mengundang Anda untuk menguji dan mengungkapkan pendapat Anda.

Tapi mari kita lanjutkan.

Saat membaca fragmen kode di atas, atau lebih tepatnya komentar, pertanyaan muncul hampir di setiap kata. Misalnya, di mana struktur irq_affinity_notify ini berada? Atau mengapa pada tahun 2020 saya tidak bisa mengklik irq / manage.c sehingga IDE patuh dan cepat mentransfer saya ke file ini? Ini juga merupakan misteri besar bagi saya. Oleh karena itu, dalam ekstensi saya, yang pertama sudah dipecahkan, tetapi sejauh ini hanya untuk JavaScript dan TypeScript (berikut ini: C / C ++, Rust, Java, Go), dan yang kedua karena kurang signifikan juga akan dipecahkan, tetapi sedikit kemudian.

Saya tidak ingin membuat Anda bosan dengan lebih banyak teks, jadi cukup masukkan gif dengan beberapa contoh pekerjaan:

habr1.gif

Saya sangat takut pada kritik dan komentar beracun, tetapi saya ingin tahu lebih banyak lagi apa yang Anda pikirkan tentang ini?

Source: https://habr.com/ru/post/id485162/


All Articles