Was sind die Hauptunterschiede beim Übergang von der konsolenbasierten zur GUI-basierten Programmierung?


18

Ich habe, wie viele andere auch, mit der konsolenbasierten Programmierung (wie beim Terminal, nicht bei der Playstation) begonnen. Aber früher oder später muss man auf GUI-basierte Programmierung eingehen, ob Sie wollen oder nicht. Dieser Übergang enthält viele Änderungen in der Art und Weise, wie Sie über das Frontend (und möglicherweise auch über das Backend) nachdenken müssen.

Was sind die Hauptunterschiede beim Übergang von der konsolenbasierten zur GUI-basierten Programmierung?


1
Du meinst Konsole wie im Terminal, oder? Nicht Konsole wie in Playstation ..
JBRWilkinson

@ JBRWilkinson: Ja. Ich werde die Frage klären.
Gablin

Antworten:


18

Der größte Unterschied ist das Design der Benutzeroberfläche. Eine gute GUI kann eine Anwendung erstellen oder beenden. Mac-Fans würden auf die wunderschön gestalteten Benutzeroberflächen der durchschnittlichen Mac OS X-App aufmerksam machen, und sie haben ein Problem, aber dies ist kein technologisches Problem, sondern ein Problem mit Design, Ethos und Benutzerfreundlichkeit.

Was technische Fragen betrifft, in keiner bestimmten Reihenfolge:

  1. Im Gegensatz zu Konsolenprogrammen, in denen Sie entweder nach Eingaben fragen oder ihnen die Ausgabe mitteilen, kann der Benutzer jederzeit in beliebiger Reihenfolge alles tun, was er möchte. Sie können nicht davon ausgehen, dass sie die von Ihnen erhoffte Reihenfolge einhalten, es sei denn, Sie erzwingen den Workflow-Assistenten.

  2. Wie bereits erwähnt, spielen Ereignisse eine große Rolle, und es können mehrere Ereignisse auftreten, während Sie das letzte warten, sodass Sie Ihren Status nicht wirklich anhand des aktuellen Ereignisses erstellen können. Verwenden Sie Abschlüsse oder einen ähnlichen Mechanismus, um den Kontext für verschiedene Ereignisse aufrechtzuerhalten. In einer Konsolen-App ist Ihr FSM normalerweise in der Schleife "Eingabe abrufen, Eingabe verarbeiten, Ausgabe aktualisieren" in sich abgeschlossen. Es gibt nicht die gleiche Struktur in der GUI-Programmierung - das 'main' ist eine wiedereintretende ereignisgesteuerte Sache, oft eine ginormöse switch () -Anweisung.

  3. Sie müssen unterschiedliche Bildschirmgrößen / -auflösungen berücksichtigen und der GUI erlauben, die Größe von 800 x 600 bis zum maximalen Monitor des Benutzers zu ändern.

  4. Sie müssen verschiedene Eingabestrategien in Betracht ziehen - Maus, Tastatur, Berührung usw. Einige Technologien sind kostenlos (Scrollen mit dem Mausrad), andere erfordern Integrationsarbeit (Tinte).

  5. Barrierefreiheit - Eine grafische Benutzeroberfläche eignet sich viel besser für Benutzer mit eingeschränktem Sehvermögen, eingeschränktem Hörvermögen, eingeschränkter Motorik oder eingeschränkter kognitiver Kompetenz. Ein 'ding'-Geräusch ist nett und offensichtlich im Vergleich zu einer kryptischen Fehlermeldung auf der Konsole.

  6. Internationalisierung - Ich gehe davon aus, dass Ihre Konsolen-App nur US / ANSI ist, aber wenn Sie in die GUI einsteigen, können Sie Sprach- / Ressourcenpakete haben, die auf andere Sprachen und Regionen abzielen, ohne die Codierung zu ändern, wenn Sie sich auf die vorbereiten Start. Beispielsweise keine fest codierten Sprachzeichenfolgen im Code - alles als Ressourcensuche.

  7. Sie haben viel mehr Möglichkeiten für die Implementierungstechnologie - webbasiert, verschiedene GUI-Kits, Flash / WPF usw.

  8. Verwendung von Farbe und Animation. Konsolenprogramme sind im Allgemeinen einfarbig und animieren nicht viel. Viele moderne GUI-Frameworks bieten themenbezogene Widgets und oftmals kostenlose Bewegungs- / Größen- / Ein- / Ausblendeffekte.

  9. Grafik. Konsolen-Apps verwenden manchmal ASCII-Grafiken für Diagramme, eine GUI-App bietet Ihnen jedoch vollständige grafische Möglichkeiten. Schöne Kunst kann auch einen großen Unterschied machen.


1
Obwohl ich Ihren Standpunkt im Allgemeinen verstehe, bin ich mit einer falschen Dichotomie nicht einverstanden. Ich meine, Sie müssen auch auf die Benutzeroberfläche für Konsolen-Apps achten, Sie können ereignisbasierte Konsolen-Apps haben, Sie können Terminal-Apps haben, die tatsächlich eine GUI und nicht nur linearen Text anzeigen und Sie müssen auf Größenänderungen achten (und funktioniert möglicherweise mit einer Maus), Sie können zugängliche CLI-Apps erstellen, CLI-Apps wie GUI-Apps internationalisieren, Sie können Farben verwenden und Dinge animieren. Ich gebe dir zu, dass 7 und 9 limitierter sind.
Haylem

17

Für mich wäre es gewöhnungsbedürftig, ereignisgesteuert zu programmieren. Es kann immer noch auf konsolenbasierte Software angewendet werden, aber ich finde, es wird hauptsächlich mit GUI verwendet. Sobald Sie es verstanden haben, ist es ein sehr mächtiges Werkzeug.


Zustimmen. Das, was Sie lernen müssen, ist, dass Ihr Code nicht die volle Kontrolle darüber hat, was der Benutzer als Nächstes tun darf.

Mit der Aufnahme von Dialogen.
Morgan Herlocker

6

Ich würde sagen, das Multi-Threading und seine Auswirkungen auf die Benutzeroberfläche (wenn Sie nicht blockierende Benutzeroberflächen tun möchten)


+1, da Threading ein sehr langwieriges technisches Problem ist.
Clement Herreman

2

Die Berücksichtigung des Kontrollflusses auf der Benutzeroberfläche und die Validierung von Benutzereingaben werden sehr wichtig.


2

Ein Konsolenprogramm neigt dazu, im Laufe der Zeit verfeinert zu werden, während ein GUI-Programm dazu neigt, verschraubt zu werden.


1

Normalerweise stelle ich mir ein konsolenbasiertes Programm als Modell vor, während ein GUI-basiertes Programm der View / Controller ist, der das Modell einbettet.


1

Für mich war das Entwerfen einer guten Benutzeroberfläche immer eine größere Herausforderung als die technischen Details der Implementierung.

Es ist leicht zu sagen, "mach es einfach und klar, wie ein Mac". Es ist unglaublich schwer, es so zu machen; Es gibt immer so viele Details, die verfügbar sein sollten, aber gleichzeitig sollten sie außer Sichtweite sein.

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


1
Werfen Sie einen Blick auf Google Wave oder iMovie und Sie wissen, dass diese Bilder irreführend sind.
Ivo Flipse

0

In einigen (vielen?) Sprachen besteht der Hauptunterschied für mich darin, dass Sie jetzt eine Bibliothek auswählen müssen. Wenn Sie das Backbone (und mit etwas Glück noch viel mehr) in der Konsolenprogrammierung Ihrer Anwendung programmieren, werden die Standardressourcen Ihrer Sprache verwendet. Wenn Sie eine GUI hinzufügen, können Sie (hoffentlich) immer noch Ihr "Modell" in Standard-Idiomen haben, aber jetzt hängt die "Ansicht" zu einem großen Teil von einer externen Bibliothek ab (und hoffentlich bleiben Sie "für immer" dabei). Die Wahl dieser Bibliothek ist für einen Anfänger eine große Verantwortung, ebenso wie für Ihren (meinen) Fall (ganz zu schweigen von der zusätzlichen Lernschrittkurve).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.