Saya baru-baru ini belajar C dan ingin memulai sebuah proyek untuk memperkuat pengetahuan saya. Saya telah memutuskan untuk membuat editor teks yang sangat sederhana, seperti vim. Masalah yang saya hadapi adalah saya benar-benar tidak tahu bagaimana cara kerja editor teks, dan saya tidak tahu apa yang harus dipelajari google untuk mempelajarinya.
Googling tentang hal itu menyebabkan repo GitHub vim, yang tidak berguna bagi saya karena basis kode sangat besar dan kode membingungkan saya. Saya juga menemukan tutorial untuk membuat editor teks di C yang berfungsi seperti vim.
Meskipun saya berpikir tentang mengikuti tutorial, rasanya seperti curang. Bagaimana para pengembang vim mengetahui cara membuat kode vim tanpa tutorial khusus? Atau apakah mereka mulai dari editor teks yang lebih sederhana? Bagaimana mereka mengetahui hal itu hanya dari pengetahuan bahasa dan dokumentasinya?
Apa sebenarnya yang saya butuhkan untuk mulai menulis editor teks ini tanpa langsung mengikuti tutorial? Contoh lain yang saya suka pikirkan adalah: bagaimana Dennis Ritchie dan Ken Thompson membuat kode Unix? Saya punya ide bagaimana fungsi OS, tapi saya tidak tahu bagaimana memasukkannya ke dalam kode. Apa yang saya lewatkan? Bagaimana cara mentransfer pengetahuan bahasa ini ke penggunaan praktis dan aktual?
Jawaban:
Jika ini adalah proyek pemrograman pertama Anda, bahkan editor teks sederhana mungkin terlalu rumit. Sesuatu seperti vim atau OS benar-benar keluar dari pertanyaan.
Mendekati Masalah
Secara umum, cara memulai kira-kira sama untuk sebagian besar proyek, meskipun:
Contoh
Mari kita ambil contoh editor teks.
Anda ingin menampilkan sebagian dari file teks di layar, menyisipkan dan menghapus karakter dan menyimpan versi saat ini.
Mulailah dengan hanya membaca file dan menampilkan isinya.
Anda akan mengidentifikasi (antara lain) sub-masalah berikut:
Setelah Anda mencapai titik di mana kebutuhan Anda (memuat file & menampilkannya) selesai, Anda dapat mulai mempertimbangkan bagaimana hanya menampilkan bagian yang sesuai dengan layar, menavigasi dalam file Anda, dll.
Langkah selanjutnya
Seiring waktu, saat Anda menghadapi masalah yang semakin kompleks, Anda akan menyadari bahwa semakin sulit untuk menemukan cara yang cocok untuk menguraikan masalah Anda. Anda juga akan melihat bahwa mengubah kode dapat menjadi membosankan dari waktu ke waktu.
Pada titik itu, saatnya mempelajari beberapa konsep arsitektur dan desain dasar.
sumber
Kamu tidak.
Jika Anda bahkan tidak memiliki gagasan yang kabur tentang bagaimana melakukan sesuatu, itu adalah tanda bahwa itu di luar kemampuan Anda saat ini. Karena jika Anda tidak tahu bagaimana memulainya, Anda tentu tidak akan tahu ketika datang ke bagian tersulit dari aplikasi.
sumber
less
,more
atauview
program. Mereka berbagi beberapa aspek editor, tanpa kompleksitas buffer edit yang bisa berubah.Anda perlu memutuskan bagaimana Anda ingin editor teks Anda bekerja.
Ini adalah salah satu pengalaman yang paling menjengkelkan dan bermanfaat dalam mengembangkan proyek Anda sendiri dari awal hingga selesai. Tidak ada yang mengirimi Anda persyaratan untuk membangun. Anda perlu mengembangkan persyaratan Anda sendiri.
Ini berarti Anda harus melakukan banyak pekerjaan desain sebelum Anda menulis baris kode pertama. Anda harus memutuskan seperti apa antarmuka itu. Anda harus memutuskan fungsionalitas apa yang akan dimasukkan. Kedua pertanyaan di atas akan dipandu oleh apa yang Anda rasa mampu lakukan. Jika Anda memikirkan situasi "ideal" (bagaimana Anda ingin antarmuka berfungsi), tetapi Anda tidak merasa mampu mengodekannya, maka Anda perlu mulai melihat pendekatan alternatif: Bagaimana saya bisa membuatnya bekerja? Itu membantu memfokuskan Anda pada pendekatan pengkodean yang mungkin ingin Anda pelajari lebih lanjut.
Seperti yang dikatakan orang lain, mencoba menyalin vim mungkin bukan pendekatan terbaik karena basis kode yang besar dan rumit. Anda juga menyangkal karya desain yang, menurut pendapat saya yang sederhana, membantu melengkapi Anda sebagai pengembang.
Ini tidak berarti Anda harus memiliki seluruh aplikasi yang dirancang dari awal hingga selesai sebelum Anda menulis baris kode pertama Anda. Tidak apa-apa jika persyaratan berubah seiring waktu saat Anda belajar lebih banyak. Tidak apa-apa untuk menambahkan fitur baru yang tidak Anda pikirkan sampai Anda menguji / menggunakan aplikasi Anda sendiri dan Anda berpikir, "Bukankah lebih baik jika ..." Tidak apa-apa untuk memulai dengan sederhana.
sumber
Menulis editor teks berfitur lengkap dari awal tanpa pengalaman pemrograman adalah bodoh: Anda akan berkecil hati dan meninggalkannya sebelum belajar banyak.
Beberapa alternatif muncul di pikiran:
vim
, lihat itu dan coba untuk memahami sesuatu yang kecil dan terisolasi, seperti bagaimana itu mewakili data, atau mencari satu karakter (f
perintah).cat
perintah makawc
kemudiangrep
kemudiansed
misalnya.sumber