Aplikasi Todo 278KB Mencetuskan Perbahasan tentang Pembangunan Windows Moden dan Pengoptimuman Saiz Binari

BigGo Editorial Team
Aplikasi Todo 278KB Mencetuskan Perbahasan tentang Pembangunan Windows Moden dan Pengoptimuman Saiz Binari

Sebuah aplikasi todo Windows ringkas yang dibina dengan C dan Win32 API telah mencetuskan perbincangan teknikal yang meluas mengenai pengoptimuman saiz binari, amalan pembangunan GUI moden, dan evolusi pengaturcaraan Windows. Aplikasi tersebut, yang diterangkan sebagai moden oleh penciptanya, mempunyai saiz 278KB menurut komen-komen, walaupun ramai pembangun menyatakan terkejut dengan saiz fail ini untuk set fungsi yang mereka anggap agak asas.

Aplikasi todo ini menunjukkan teknik pengaturcaraan GUI Windows asas menggunakan Win32 API tanpa sebarang rangka kerja atau pustaka UI moden. Ia merangkumi ciri-ciri seperti mencipta, mengedit, dan memadam item todo, menandakan tugas sebagai selesai, penyimpanan kekal dalam AppData, integrasi dulang sistem, dan pilihan mula automatik.

Pengoptimuman Saiz Binari

Salah satu aspek projek yang paling banyak dibincangkan adalah saiz binarinya. Ramai pengulas menyatakan terkejut bahawa fail boleh laksana tersebut bersaiz 278KB, mencadangkan bahawa fungsi yang serupa boleh dicapai dengan jejak yang lebih kecil. Beberapa pembangun menawarkan teknik pengoptimuman yang boleh mengurangkan saiz fail secara dramatik.

Saya cuba menghasilkan semula binari ini untuk melihat apa yang mengambil ruang 278 KB... Menggunakan x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z sebagai toolchain. Ini menghasilkan fail .exe 102 KB. Serta-merta kita sudah melakukan lebih baik daripada 278 KB yang didakwa... Kita boleh memperbaikinya dengan menyalurkan beberapa suis kepada GCC... gcc -s -Oz -flto => 47 KB

Perbincangan tersebut mendedahkan bahawa sebahagian besar pembengkakan binari berkemungkinan besar datang daripada pautaan statik pustaka runtime C. Pembangun membahaskan kelebihan pautaan statik berbanding dinamik, dengan sesetengah menunjukkan bahawa walaupun pautaan dinamik menghasilkan fail boleh laksana yang lebih kecil, ia memerlukan pengedaran DLL bersama aplikasi melainkan DLL tersebut sudah menjadi sebahagian daripada sistem operasi.

Teknik Pengoptimuman Saiz yang Disebut

  • Bendera pengkompil untuk pengoptimuman saiz:
    • -Os - Mengoptimumkan untuk saiz
    • -Oz - Pengoptimuman saiz yang lebih agresif
    • -flto - Pengoptimuman masa pautaan
    • -s - Membuang jadual simbol
  • Pilihan pautaan:
    • Pautaan dinamik kepada DLL sistem berbanding pautaan statik
    • Menggunakan MSVCRT.DLL lalai MinGW sebagai runtime C
  • Pemampatan fail boleh laksana:
    • UPX disebut sebagai teknik bersejarah (dengan kebimbangan anti-virus dicatatkan)

Ciri-ciri Projek

  • Ditulis dalam C tulen menggunakan API Win32
  • Pengurusan item tugasan (cipta, sunting, padam, tanda siap)
  • Penyimpanan kekal dalam %APPDATA%\TodoApp\todos.dat
  • Integrasi dulang sistem
  • Pilihan mula secara automatik dengan Windows
  • Kapasiti maksimum 100 tugasan

Amalan Pembangunan Windows Moden

Ramai pengulas mempersoalkan dakwaan aplikasi tersebut sebagai moden, menunjukkan bahawa ia kekurangan ciri-ciri seperti sokongan DPI tinggi, penggayaan UI moden, dan navigasi tab antara kawalan. Beberapa orang mencadangkan untuk menambah manifes aplikasi Windows untuk membolehkan penggayaan UI moden dan ciri-ciri Windows kontemporari yang lain.

Perbincangan tersebut menyoroti bagaimana amalan pembangunan Windows telah berkembang dari masa ke masa. Walaupun pengaturcaraan Win32 API dalam C pernah menjadi pendekatan standard, kebanyakan pembangun Windows beralih ke rangka kerja dan bahasa tahap lebih tinggi seperti C++, Visual Basic, dan Delphi pada era Windows 95. Hari ini, bahkan dokumentasi Microsoft sendiri mengesyorkan C++ berbanding C untuk pembangunan Windows.

Nostalgia dan Nilai Pembelajaran

Walaupun terdapat kritikan, ramai pengulas menyatakan penghargaan terhadap nilai pendidikan dan daya tarikan nostalgia projek tersebut. Beberapa pembangun mengenang kembali pengalaman awal pengaturcaraan Windows mereka dengan pendekatan yang serupa, menyatakan bahawa gaya pembangunan ini membantu pengaturcara memahami apa yang berlaku dekat dengan peringkat asas.

Projek ini mencetuskan perbincangan mengenai evolusi amalan pembangunan sepanjang dekad, dengan pembangun yang lebih senior mengingati ketika saiz fail boleh laksana diukur dalam kilobait dan bukannya megabait. Sesetengah dengan jenaka membandingkan aplikasi 278KB dengan kekangan pengaturcaraan untuk sistem dengan sumber yang jauh lebih terhad, seperti pemproses 6502.

Projek ini menunjukkan bahawa walaupun amalan pembangunan moden telah beralih ke arah abstraksi tahap lebih tinggi dan binari yang lebih besar, masih terdapat nilai dalam memahami asas API sistem operasi dan pengaturcaraan yang cekap. Bagi pemula yang ingin mempelajari pengaturcaraan GUI Windows atau pembangun berpengalaman yang ingin meninjau semula asas, projek seperti ini menyediakan titik masuk yang mudah diakses untuk memahami bagaimana aplikasi Windows berfungsi pada tahap yang lebih rendah.

Rujukan: Simple Todo (C / WinAPI)