Saya mulai, seperti banyak yang lain, dengan pemrograman berbasis konsol (seperti pada terminal, bukan Playstation). Tetapi cepat atau lambat, seseorang perlu menyentuh pada pemrograman berbasis GUI, apakah Anda mau atau tidak. Transisi ini menyimpan banyak perubahan dalam cara Anda perlu memikirkan frontend (dan mungkin juga backend).
Jadi, apa perbedaan utama ketika pindah dari pemrograman berbasis konsol ke pemrograman berbasis GUI?
Jawaban:
Perbedaan terbesar adalah desain UI. GUI yang baik dapat membuat atau merusak aplikasi. Penggemar Mac akan menarik perhatian ke GUI yang dirancang dengan indah dari rata-rata aplikasi Mac OS X dan mereka ada benarnya, tapi ini bukan masalah teknologi - ini masalah desain / etos / kegunaan.
Adapun masalah teknis, tanpa urutan tertentu:
Pengguna dapat melakukan apa saja yang mereka inginkan dalam urutan apa pun kapan saja, tidak seperti program konsol di mana Anda meminta input atau memberi tahu mereka hasilnya. Anda tidak dapat berasumsi bahwa mereka akan mengikuti perintah yang Anda harapkan, kecuali jika Anda menerapkan alur kerja Wizard-stylee.
Seperti yang telah disebutkan, acara memainkan peran besar dalam hal ini, dan Anda bisa mendapatkan banyak acara terjadi saat Anda sedang melayani yang terakhir, sehingga Anda tidak dapat benar-benar membangun negara Anda berdasarkan 'acara saat ini'. Gunakan penutupan atau mekanisme serupa untuk mempertahankan konteks di berbagai peristiwa. Dalam aplikasi konsol, FSM Anda biasanya lengkap di sekitar loop 'dapatkan input, proses input, perbarui output'. Tidak ada jenis struktur yang sama dalam pemrograman GUI - 'utama' adalah hal yang didorong oleh peristiwa, sering kali pernyataan saklar ginormous ().
Anda perlu mempertimbangkan ukuran / resolusi layar yang berbeda dan memungkinkan GUI untuk mengubah ukuran dari 800x600 hingga maksimum monitor pengguna.
Anda perlu mempertimbangkan berbagai strategi input - mouse, keyboard, sentuh, dll. Beberapa teknologi datang secara gratis (menggulir-roda mouse), yang lain memerlukan beberapa pekerjaan integrasi (Tinta).
Aksesibilitas - GUI jauh lebih cocok untuk pengguna yang kurang mampu yang memiliki keterbatasan penglihatan, pendengaran, keterampilan motorik atau keterampilan kognitif. Suara 'ding' bagus dan jelas dibandingkan dengan pesan kesalahan samar di konsol.
Internasionalisasi - saya mengasumsikan aplikasi konsol Anda hanya AS / ANSI, tetapi ketika Anda masuk ke GUI, Anda dapat memiliki paket bahasa / sumber daya yang dapat menargetkan bahasa dan wilayah lain tanpa perubahan pada pengkodean, jika Anda menyiapkannya dari Mulailah. Misalnya, tidak ada string bahasa yang dikodekan dalam kode - semuanya sebagai pencarian sumber daya.
Anda memiliki lebih banyak opsi untuk teknologi implementasi - berbasis web, berbagai kit GUI, Flash / WPF, dll.
Penggunaan warna dan animasi. Program konsol umumnya monokromatik dan tidak bernyawa banyak. Banyak kerangka kerja GUI modern menyediakan widget bertema dan memiliki efek animasi bergerak / ukuran / pertunjukan / sembunyikan, seringkali gratis.
Grafik. Aplikasi konsol terkadang menggunakan seni ASCII untuk diagram, tetapi aplikasi GUI memberi Anda kemampuan grafis penuh. Seni yang indah dapat membuat perbedaan besar juga.
sumber
Bagi saya itu akan terbiasa dengan pemrograman berbasis acara. Itu masih bisa diterapkan ke perangkat lunak berbasis konsol tapi saya menemukan sebagian besar digunakan dengan GUI. Setelah Anda pegang, itu alat yang sangat kuat.
sumber
Saya akan mengatakan multi-threading dan implikasinya dengan UI (jika Anda ingin melakukan UI non blocking)
sumber
Pertimbangan untuk aliran kontrol pada UI dan validasi input pengguna menjadi sangat penting.
sumber
Program konsol cenderung disempurnakan dari waktu ke waktu sementara program GUI cenderung kacau.
sumber
Biasanya saya menganggap program berbasis konsol sebagai Model, sedangkan program berbasis GUI adalah View / Controller yang menyematkan Model.
sumber
Bagi saya merancang GUI yang baik selalu jauh lebih menantang daripada detail teknis penerapannya.
Sangat mudah untuk mengatakan "membuatnya sederhana dan jelas, seperti Mac". Sangat sulit membuatnya seperti itu; selalu ada begitu banyak detail yang harus ada di sana, tetapi pada saat yang sama, mereka harus tidak terlihat.
simplicity http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png
sumber
Dalam beberapa (banyak?) Bahasa perbedaan utama bagi saya adalah, bahwa sekarang, Anda harus memilih perpustakaan. Melakukan "konsol" memprogram tulang punggung (dan banyak lagi, dengan sedikit keberuntungan semua) dari aplikasi Anda menggunakan sumber daya standar bahasa Anda. Menambahkan GUI Anda dapat (mudah-mudahan) masih memiliki "model" Anda dalam idiom standar, tetapi sekarang sebagian besar, "tampilan" akan bergantung pada beberapa pustaka eksternal (dan, secara tidak menyenangkan, Anda akan tetap menggunakannya "selamanya"). Pilihan perpustakaan ini adalah tanggung jawab besar bagi pemula seperti halnya kasus saya (belum lagi kurva langkah belajar tambahan).
sumber