Jakie są główne różnice przy przechodzeniu z programowania na konsolę na programowanie GUI?


18

Zacząłem, podobnie jak wiele innych, programować na konsoli (jak w terminalu, a nie Playstation). Ale prędzej czy później trzeba dotknąć programowania opartego na GUI, czy chcesz, czy nie. To przejście zawiera wiele zmian w sposobie myślenia o frontendzie (i ewentualnie również backendu).

Jakie są główne różnice przy przechodzeniu z programowania na konsolę do programowania na GUI?


1
Masz na myśli konsolę jak w terminalu, prawda? Nie konsola jak w Playstation ..
JBRWilkinson

@JBRWilkinson: Tak. Wyjaśnię pytanie.
gablin

Odpowiedzi:


18

Największą różnicą jest konstrukcja interfejsu użytkownika. Dobry GUI może utworzyć lub przerwać aplikację. Fani Maca zwracają uwagę na pięknie zaprojektowane GUI przeciętnej aplikacji Mac OS X i mają rację, ale to nie jest problem technologiczny - to kwestia projektu / etosu / użyteczności.

Jeśli chodzi o kwestie techniczne, w żadnej szczególnej kolejności:

  1. Użytkownik może w dowolnej chwili zrobić wszystko, co chce, w dowolnej kolejności, w przeciwieństwie do programu konsoli, w którym albo pytasz o dane wejściowe, albo podajesz dane wyjściowe. Nie możesz założyć, że będą postępować zgodnie z oczekiwaną kolejnością, chyba że wymusisz styl pracy Kreatora.

  2. Jak już wspomniano, wydarzenia odgrywają w tym dużą rolę, a podczas obsługi ostatniego może się zdarzyć wiele zdarzeń, więc nie można tak naprawdę zbudować swojego stanu na podstawie „bieżącego zdarzenia”. Użyj zamknięć lub podobnego mechanizmu, aby zachować kontekst dla różnych zdarzeń. W aplikacji konsolowej FSM jest zwykle samowystarczalny wokół pętli „get input, process input, update output”. Nie ma tego samego rodzaju struktury w programowaniu GUI - „main” to ponownie sterowana zdarzeniem rzecz, często gigantyczna instrukcja switch ().

  3. Musisz wziąć pod uwagę różne rozmiary / rozdzielczości ekranu i pozwolić, aby GUI zmieniło rozmiar z 800x600 na maksimum monitora użytkownika.

  4. Musisz wziąć pod uwagę różne strategie wprowadzania - mysz, klawiatura, dotyk itp. Niektóre technologie są dostępne za darmo (przewijanie kółkiem myszy), inne wymagają pracy integracyjnej (atrament).

  5. Dostępność - graficzny interfejs użytkownika jest znacznie bardziej odpowiedni dla mniej sprawnych użytkowników, którzy mają ograniczone widzenie, słuch, zdolności ruchowe lub zdolności poznawcze. Hałas „ding” jest przyjemny i oczywisty w porównaniu do tajemniczego komunikatu o błędzie na konsoli.

  6. Internacjonalizacja - zakładam, że twoja aplikacja konsolowa jest tylko dla US / ANSI, ale kiedy wejdziesz do GUI, możesz mieć pakiety językowe / zasobów, które mogą kierować reklamy na inne języki i regiony bez zmian w kodowaniu, jeśli przygotowałeś się na to z początek. Na przykład brak zakodowanych ciągów językowych w kodzie - wszystko jako wyszukiwanie zasobów.

  7. Masz o wiele więcej opcji technologii wdrażania - oparte na sieci, różne zestawy GUI, Flash / WPF itp.

  8. Wykorzystanie koloru i animacji. Programy konsolowe są zazwyczaj monochromatyczne i nie animują zbyt wiele. Wiele nowoczesnych frameworków GUI zapewnia widżety tematyczne i ma efekty animacji ruch / rozmiar / pokaż / ukryj, często za darmo.

  9. Grafika. Aplikacje konsolowe czasami używają grafiki ASCII do tworzenia diagramów, ale aplikacja GUI zapewnia pełną zdolność graficzną. Piękna sztuka może mieć również duże znaczenie.


1
Chociaż ogólnie rozumiem twój punkt widzenia, nie zgadzam się tutaj z fałszywą dychotomią. To znaczy, musisz również zwrócić uwagę na interfejs użytkownika dla aplikacji konsolowych, możesz mieć aplikacje konsolowe oparte na zdarzeniach, możesz mieć aplikacje terminalowe, które faktycznie wyświetlają GUI, a nie tylko tekst liniowy i muszą zwracać uwagę na zmiany rozmiaru (i może działać za pomocą myszy), możesz wykonywać dostępne aplikacje cli, internacjonalizować aplikacje cli w taki sam sposób, jak GUI, możesz używać kolorów i animować. Przyznaję, że 7 i 9 są bardziej ograniczone.
haylem

17

Dla mnie przyzwyczai się do programowania sterowanego zdarzeniami. Nadal może mieć zastosowanie do oprogramowania opartego na konsoli, ale uważam, że jest ono najczęściej używane z GUI. Po jego uchwyceniu jest to bardzo potężne narzędzie.


Zgodzić się. Musisz się nauczyć, że Twój kod nie ma pełnej kontroli nad tym, co użytkownik może zrobić w następnej kolejności.

Z zachwytem dialogów.
Morgan Herlocker

6

Powiedziałbym, że wielowątkowość i jej implikacja dla interfejsu użytkownika (jeśli chcesz wykonywać nieblokujące interfejsy użytkownika)


+1, ponieważ gwintowanie jest bardzo żmudnym problemem technicznym, z którym trzeba sobie poradzić.
Clement Herreman

2

Bardzo ważne jest uwzględnienie przepływu kontroli w interfejsie użytkownika i sprawdzenie poprawności danych wprowadzanych przez użytkownika.


2

Z czasem program konsolowy jest dopracowywany, podczas gdy program GUI ma tendencję do wkręcania.


1

Zwykle myślę o programie konsolowym jako o Modelu, podczas gdy program oparty na GUI to Widok / Kontroler, który osadza Model.


1

Dla mnie zaprojektowanie dobrego GUI zawsze było o wiele trudniejsze niż techniczne szczegóły jego wdrożenia.

Łatwo powiedzieć „uprość to i wyjaśnij, jak komputer Mac”. Bardzo trudno to zrobić; zawsze jest tak wiele szczegółów, które powinny być dostępne, ale jednocześnie powinny być niewidoczne.

prostota http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


1
Rzuć okiem na Google Wave lub iMovie i wiesz, że te zdjęcia wprowadzają w błąd.
Ivo Flipse

0

W niektórych (wielu?) Językach dla mnie główna różnica polega na tym, że teraz musisz wybrać bibliotekę. Robiąc „konsolę” programując szkielet (i wiele więcej, przy odrobinie szczęścia) twojej aplikacji, korzystaj ze standardowych zasobów swojego języka. Dodając GUI, możesz (miejmy nadzieję) nadal mieć swój „model” w standardowych idiomach, ale teraz ogromna część, „widok” będzie zależeć od jakiejś zewnętrznej biblioteki (i, niestety, pozostaniesz przy nim „na zawsze”). Wybór tej biblioteki jest ogromnym obowiązkiem dla początkującego, podobnie jak twój (mój) przypadek (nie wspominając o dodatkowej krzywej kroku uczenia się).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.