Apa perbedaan utama ketika berpindah dari pemrograman berbasis konsol ke pemrograman berbasis GUI?

18

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?

Gablin
sumber
1
Maksudmu konsol seperti di Terminal, kan? Bukan Konsol seperti di Playstation ..
JBRWilkinson
@ JBRWilkinson: Ya. Saya akan mengklarifikasi pertanyaannya.
gablin

Jawaban:

18

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:

  1. 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.

  2. 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 ().

  3. Anda perlu mempertimbangkan ukuran / resolusi layar yang berbeda dan memungkinkan GUI untuk mengubah ukuran dari 800x600 hingga maksimum monitor pengguna.

  4. 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).

  5. 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.

  6. 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.

  7. Anda memiliki lebih banyak opsi untuk teknologi implementasi - berbasis web, berbagai kit GUI, Flash / WPF, dll.

  8. 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.

  9. 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.

JBRWilkinson
sumber
1
Sementara saya melihat maksud Anda secara umum, saya agak tidak setuju dengan dikotomi palsu di sini. Maksud saya, Anda perlu memperhatikan UI untuk aplikasi konsol juga, Anda dapat memiliki aplikasi konsol berbasis acara, Anda dapat memiliki aplikasi terminal yang benar-benar menampilkan GUI dan bukan hanya teks linier dan perlu memperhatikan ukurannya (dan dapat bekerja dengan mouse), Anda dapat melakukan aplikasi cli yang dapat diakses, Anda menginternasionalkan aplikasi cli dengan cara yang sama seperti yang gui, Anda dapat menggunakan warna dan menghidupkan berbagai hal. Saya akan memberi Anda bahwa 7 dan 9 lebih terbatas.
haylem
17

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.

Tak seorangpun
sumber
Setuju. Hal yang perlu Anda pelajari adalah bahwa kode Anda tidak sepenuhnya mengendalikan apa yang dapat dilakukan pengguna selanjutnya.
Dengan konsepsi dialog.
Morgan Herlocker
6

Saya akan mengatakan multi-threading dan implikasinya dengan UI (jika Anda ingin melakukan UI non blocking)


sumber
+1, karena threading adalah masalah teknis yang sangat membosankan untuk diatasi.
Clement Herreman
2

Pertimbangan untuk aliran kontrol pada UI dan validasi input pengguna menjadi sangat penting.

ysolik
sumber
2

Program konsol cenderung disempurnakan dari waktu ke waktu sementara program GUI cenderung kacau.

Codism
sumber
1

Biasanya saya menganggap program berbasis konsol sebagai Model, sedangkan program berbasis GUI adalah View / Controller yang menyematkan Model.

mouviciel
sumber
1

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

Joonas Pulakka
sumber
1
Lihat Google Wave atau iMovie dan Anda tahu gambar-gambar ini menyesatkan.
Ivo Flipse
0

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).

qPCR4vir
sumber