Teks sumber diambil daripada blog Austin Henley: Challenging projects every programmer should try

Projek mencabar setiap pengaturcara patut cuba

11 Disember 2019

Perkongsian ini telah menggalakkan pelbagai perbincangan dalam Hacker News, Reddit dan sekali lagi dalam Hacker News. Saya telah kumpulkan sebahagian dari projek yang dicadangkan dan senaraikan mereka di penghujung perkongsian ini.

Tengok sambungan kepada perkongsian ni: Lagi projek mencabar setiap pengaturcara patut cuba

Tengok sambungan kedua juga: Algoritma dan struktur data mencabar setiap pengaturcara patut cuba


Saya bercakap dengan ramai pelajar dan pengaturcara profesional yang sering kali ingin memulakan projek sampingan, tetapi tidak pasti apa yang hendak dibina. Berikut merupakan sekumpulan projek perisian yang banyak mengajar saya. Malah, ia hebat kerana anda boleh membinanya banyak kali dan anda akan mempelajari perkara baharu setiap kali. Jadi apabila saya tidak tahu apa yang hendak dibina atau saya ingin mempelajari bahasa pengaturcaraan atau rangka kerja baharu, saya mulakan dengan salah satu daripada ini:

Penyunting teks

Kita menggunakan editor teks setiap hari, tetapi adakah anda tahu bagaimana ia benar-benar berfungsi? Mengabaikan semua ciri mewah yang ada pada editor kegemaran anda, bagaimanakah anda akan melaksanakan kotak teks yang menyokong kursor teks alih dan memilih, memasukkan dan memadam teks? Tanpa menggunakan komponen kotak teks terbina dalam rangka kerja GUI kegemaran anda!

Cabaran terbesar ialah memikirkan cara menyimpan dokumen teks dalam ingatan. Fikiran pertama saya ialah menggunakan tatasusunan, tetapi itu mempunyai prestasi yang mengerikan jika pengguna memasukkan teks di mana-mana selain daripada penghujung dokumen. Nasib baik, ada beberapa struktur data yang bagus untuk dipelajari untuk menyelesaikannya.

Satu lagi halangan ialah mempelajari cara kursor teks berkelakuan dalam editor popular. Sebagai contoh, jika saya menekan kekunci anak panah ke atas apabila kursor di tengah-tengah dokumen, ke manakah kursor akan bergerak? Lajur yang sama? Tidak jika baris itu lebih pendek. Jika anda terus menggerak kursor ke atas, ia akan kembali ke lajur asal apabila baris cukup panjang. Ternyata kursor mempunyai memori/ingatan untuk lajur dan cuba untuk kembali kepadanya. Perincian beginilah yang saya tidak pernah perasan sehingga saya cuba melaksanakannya.

Selepas melaksanakan editor asas, saya mencabar anda untuk melaksanakan dua lagi ciri: buat asal/buat semula dan pembalutan perkataan. Melaksanakan buat asal/buat semula dengan cara yang cekap amat mengejutkan saya! Saya mula-mula cuba menyimpan keadaan sebelum dalam satu tatasusunan, kemudian cuba menggunakan corak Memento, sebelum akhirnya berpuas hati dengan corak Command. Pembalutan perkataan memaksa anda untuk memisahkan aspek visual baris teks daripada aspek ingatan.

Perkara yang perlu dipelajari:

Bacaan lanjut: