私は、他の多くの人と同じように、コンソールベースの(プレイステーションではなく端末のような)プログラミングから始めました。ただし、遅かれ早かれ、GUIベースのプログラミングに触れる必要があります。この移行には、フロントエンド(および場合によってはバックエンド)について考える必要がある方法に多くの変更が含まれています。
それでは、コンソールベースのプログラミングからGUIベースのプログラミングに移行するときの主な違いは何ですか?
私は、他の多くの人と同じように、コンソールベースの(プレイステーションではなく端末のような)プログラミングから始めました。ただし、遅かれ早かれ、GUIベースのプログラミングに触れる必要があります。この移行には、フロントエンド(および場合によってはバックエンド)について考える必要がある方法に多くの変更が含まれています。
それでは、コンソールベースのプログラミングからGUIベースのプログラミングに移行するときの主な違いは何ですか?
回答:
最大の違いは、UIの設計です。優れたGUIを使用すると、アプリケーションを作成または中断できます。Macファンは、平均的なMac OS Xアプリの美しくデザインされたGUIに注目し、彼らはポイントを持っていますが、これは技術的な問題ではなく、デザイン/精神/ユーザビリティの問題です。
技術的な問題に関しては、順不同です:
ユーザーは、入力を求めたり出力を指示したりするコンソールプログラムとは異なり、いつでも好きな順序で好きなことを行うことができます。ワークフローウィザードスタイルを強制しない限り、希望する順序に従うとは想定できません。
すでに述べたように、イベントはこれで大きな役割を果たします。最後のイベントを処理している間に複数のイベントが発生する可能性があるため、「現在のイベント」に基づいて状態を実際に構築することはできません。クロージャーまたは同様のメカニズムを使用して、異なるイベント間でコンテキストを維持します。コンソールアプリでは、FSMは通常、「入力の取得、入力の処理、出力の更新」ループの周囲に自己完結しています。GUIプログラミングには同じ種類の構造はありません。「メイン」は、リエントラントなイベント駆動型のもので、多くの場合、重大なswitch()ステートメントです。
さまざまな画面サイズ/解像度を検討し、GUIが800x600からユーザーのモニターの最大サイズに変更できるようにする必要があります。
マウス、キーボード、タッチなど、さまざまな入力戦略を検討する必要があります。無料の技術(マウスホイールスクロール)もあれば、統合作業(インク)が必要な技術もあります。
アクセシビリティ-GUIは、視覚、聴覚、運動能力、または認知能力が制限されている能力の低いユーザーに適しています。「ding」ノイズは、コンソールの不可解なエラーメッセージと比較して、わかりやすくて明らかです。
国際化-コンソールアプリはUS / ANSIのみであることを前提としていますが、GUIにアクセスすると、コーディングを変更せずに他の言語や地域をターゲットにできる言語/リソースパッケージを用意できます。開始。たとえば、コード内にハードコードされた言語文字列はありません-リソース検索としてすべて。
実装テクノロジには、WebベースのさまざまなGUIキット、Flash / WPFなど、さらに多くのオプションがあります。
色とアニメーションの使用。コンソールプログラムは一般的に単色であり、あまり動きません。最新のGUIフレームワークの多くは、テーマウィジェットを提供し、アニメーション効果を移動/サイズ/表示/非表示にします(多くの場合無料です)。
グラフィック。コンソールアプリはダイアグラムにASCIIアートを使用する場合がありますが、GUIアプリでは完全なグラフィカル機能が提供されます。素敵なアートも大きな違いを生みます。
私にとっては、イベント駆動型プログラミングに慣れるでしょう。コンソールベースのソフトウェアにも適用できますが、ほとんどはGUIで使用されます。一度把握すれば、非常に強力なツールになります。
私にとって、良いGUIを設計することは、それを実装する技術的な詳細よりもずっと挑戦的でした。
「Macのようにシンプルで明確にする」と言うのは簡単です。そのようにするのは非常に困難です。そこにあるべき多くの詳細が常にありますが、同時に、それらは見えないはずです。
シンプルhttp://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png