Які основні відмінності при переході від консольного до графічного програмування?


18

Я почав, як і багато інших, з консольного (як у терміналі, а не Playstation) програмування. Але рано чи пізно потрібно торкнутися програмування на основі GUI, хочете ви цього чи ні. Цей перехід має багато змін у тому, як вам потрібно думати про фронтенд (і, можливо, також про зайнятість).

Отже, які основні відмінності при переході від консольного програмування до програмування на основі GUI?


1
Ви маєте на увазі Консоль, як у Терміналі, правда? Не консоль, як у Playstation ..
JBRWilkinson

@JBRWilkinson: Так. Я уточню питання.
габлін

Відповіді:


18

Найбільша відмінність - це дизайн інтерфейсу користувача. Хороший графічний інтерфейс може зробити або зламати додаток. Шанувальники Mac звернуть увагу на чудово розроблений графічний інтерфейс користувача середнього додатка для Mac OS X, і у них є сенс, але це не проблема технології - це проблема дизайну / етосу / зручності використання.

Що стосується технічних питань, не в конкретному порядку:

  1. Користувач може робити все, що завгодно, в будь-якому порядку в будь-який час, на відміну від консольної програми, в якій ви або просите ввести, або повідомте їм вихід. Ви не можете припустити, що вони будуть виконувати порядок, на який ви сподіваєтесь, якщо не застосувати майстер робочого процесу.

  2. Як уже згадувалося, події відіграють велику роль у цьому, і ви можете отримати декілька подій, коли ви обслуговуєте останню, так що ви не можете реально побудувати свій стан на основі "поточної події". Використовуйте закриття або подібний механізм, щоб підтримувати контекст у різних подіях. У консольному додатку ваш FSM, як правило, є автономним навколо циклу "отримати введення, обробляти введення, оновити вихід". У програмуванні графічного інтерфейсу не існує такої ж структури - "головний" - це річ, керована подіями, часто - оператором ginormous switch ().

  3. Вам потрібно врахувати різні розміри / роздільну здатність екрана і дозволити GUI змінювати розмір від 800x600 до максимального монітора користувача.

  4. Потрібно враховувати різні стратегії введення - миша, клавіатура, сенсорне обладнання. Деякі технології пропонуються безкоштовно (прокрутка миші), інші потребують певної інтеграції (чорнила).

  5. Доступність - графічний графічний інтерфейс набагато більше підходить для менш здатних користувачів, які мають обмежений зір, слух, моторику чи когнітивні навички. Шум «дінь» приємний і очевидний у порівнянні з критичним повідомленням про помилку на консолі.

  6. Інтернаціоналізація - я припускаю, що ваш консольний додаток призначений лише для США / ANSI, але коли ви ввійдете в графічний інтерфейс, ви можете мати пакети мови / ресурсів, які можуть орієнтуватися на інші мови та регіони без зміни кодування, якщо ви підготувались до нього з почати. Наприклад, у коді немає жодних жорстких мовних рядків - все як пошук ресурсів.

  7. У вас є набагато більше варіантів технології впровадження - веб-бази, різні набори GUI, Flash / WPF тощо.

  8. Використання кольору та анімації. Програми консолей, як правило, однотонні і не дуже оживляють. Багато сучасних фреймворків графічного інтерфейсу надають тематичні віджети та мають анімаційні ефекти переміщення / розмір / показ / приховування, часто безкоштовно.

  9. Графіка. Консольні програми іноді використовують графік ASCII для діаграм, але додаток GUI дає повну графічну здатність. Прекрасне мистецтво теж може змінити велику роль.


1
Хоча я взагалі бачу вашу думку, я якось не згоден з хибною дихотомією. Я маю на увазі, вам потрібно звернути увагу на інтерфейс користувача і для консольних додатків, ви можете мати консольні додатки, ви можете мати програми терміналу, які насправді відображають графічний інтерфейс, а не просто лінійний текст і потрібно звертати увагу на розміри (і Ви можете працювати з мишею), ви можете робити доступні програми для кліпів, інтернаціоналізувати програми для кліків так само, як і gui, ви можете використовувати кольори та анімувати речі. Я дозволю вам, що 7 та 9 більш обмежені.
haylem

17

Для мене це було б звиканням до програмування на основі подій. Він все ще може застосовуватися до консольного програмного забезпечення, але я вважаю, що його в основному використовують для GUI. Після того, як ви це зрозумієте, це дуже потужний інструмент.


Погодьтеся. Що вам потрібно дізнатися, це те, що ваш код не повністю контролює, що може робити далі користувач.

З початком діалогів.
Морган Херлокер

6

Я б сказав, що багатопотокова передача, і це стосується інтерфейсу користувача (якщо ви хочете зробити неблокуючі інтерфейси)


+1, оскільки різьба - це справді копітка технічна проблема, з якою можна впоратися.
Климент Ерреман

2

Розгляд питання управління потоком користувальницького інтерфейсу і перевірка введення користувачем стає дуже важливим.


2

Програма консолі, як правило, доопрацьовується з часом, тоді як програма GUI, як правило, вкручується.


1

Зазвичай я вважаю програму на основі консолі як модель, тоді як програма на основі GUI - це перегляд / контролер, який вбудовує модель.


1

Для мене проектування хорошого графічного інтерфейсу завжди було складніше, ніж технічні деталі його реалізації.

Неважко сказати "зробіть це просто і зрозуміло, як Mac". Це зробити неймовірно важко; завжди є так багато деталей, які повинні бути там доступні, але в той же час вони повинні бути поза увагою.

простота http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


1
Погляньте на Google Wave або iMovie, і ви знаєте, що ці зображення вводять в оману.
Іво Фліпс

0

У деяких (багатьох?) Мовах головна відмінність для мене полягає в тому, що зараз вам потрібно вибрати бібліотеку. Виконуючи "консольне" програмування магістралі (і багато іншого, за деякої долі) вашої програми, використовуйте стандартні ресурси вашої мови. Додавши графічний інтерфейс, можна (сподіваємось), все ще мати свою "модель" у стандартних ідіомах, але зараз величезна частина, "погляд" буде залежати від деякої зовнішньої бібліотеки (і, на жаль, ви будете дотримуватися її "назавжди"). Вибір цієї бібліотеки несе велику відповідальність для початківців, як і ваш (мій) випадок (не кажучи вже про додаткову криву навчального кроку).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.