콘솔 기반에서 GUI 기반 프로그래밍으로 전환 할 때 가장 큰 차이점은 무엇입니까?


18

다른 많은 사람들과 마찬가지로 콘솔 기반 (Playstation이 아닌 터미널에서와 같이) 프로그래밍으로 시작했습니다. 그러나 조만간, 원하든 원하지 않든 GUI 기반 프로그래밍을 다루어야합니다. 이 전환에는 프런트 엔드 (및 백엔드)에 대해 생각해야하는 방식이 많이 변경되었습니다.

그렇다면 콘솔 기반 프로그래밍에서 GUI 기반 프로그래밍으로 전환 할 때 가장 큰 차이점은 무엇입니까?


1
터미널에서와 같이 콘솔을 의미합니까? 플레이 스테이션 에서처럼 콘솔이 아닙니다.
JBRWilkinson

@JBR 윌킨슨 : 예. 나는 질문을 명확히 할 것이다.
gablin

답변:


18

가장 큰 차이점은 UI 디자인입니다. 좋은 GUI는 응용 프로그램을 만들거나 중단시킬 수 있습니다. 맥 팬들은 맥 OS X 앱의 아름답게 디자인 된 GUI에 주목할 것이지만 요점은 있지만 이것은 기술적 인 문제가 아니라 디자인 / 윤리 / 사용성 문제입니다.

기술적 인 문제와 관련하여 특별한 순서는 없습니다.

  1. 사용자는 입력을 요구하거나 출력을 알려주는 콘솔 프로그램과 달리 언제든지 원하는 순서대로 무엇이든 할 수 있습니다. 워크 플로 마법사 스타일을 적용하지 않으면 원하는 순서대로 진행한다고 가정 할 수 없습니다.

  2. 이미 언급했듯이, 이벤트는 이에 큰 영향을 미치며 마지막 이벤트를 처리하는 동안 여러 이벤트가 발생할 수 있으므로 '현재 이벤트'를 기반으로 상태를 실제로 구성 할 수 없습니다. 클로저 또는 유사한 메커니즘을 사용하여 다른 이벤트에서 컨텍스트를 유지하십시오. 콘솔 응용 프로그램에서 FSM은 일반적으로 '입력 받기, 프로세스 입력, 업데이트 출력'루프 주위에 자체 포함되어 있습니다. GUI 프로그래밍에는 같은 종류의 구조가 없습니다. 'main'은 재진입 이벤트 중심의 것으로 종종 거대한 switch () 문입니다.

  3. 다른 화면 크기 / 해상도를 고려해야하고 GUI 크기를 800x600에서 사용자 모니터 최대 크기까지 조정할 수 있어야합니다.

  4. 마우스, 키보드, 터치 등 다양한 입력 전략을 고려해야합니다. 일부 기술은 무료로 제공되며 (마우스 휠 스크롤) 일부는 통합 작업 (잉크)이 필요합니다.

  5. 접근성-GUI는 시각, 청각, 운동 기술 또는인지 기술이 제한적인 능력이 부족한 사용자에게 훨씬 적합합니다. '딩'소음은 콘솔의 암호 오류 메시지와 비교할 때 훌륭하고 분명합니다.

  6. 국제화-콘솔 응용 프로그램이 US / ANSI 전용이라고 가정하지만 GUI에 들어가면 코딩을 변경하지 않고 다른 언어 및 지역을 대상으로 할 수있는 언어 / 리소스 패키지를 가질 수 있습니다. 스타트. 예를 들어, 코드에 하드 코딩 된 언어 문자열이 없습니다. 모든 것이 리소스 조회입니다.

  7. 웹 기반, 다양한 GUI 키트, Flash / WPF 등 구현 기술을위한 더 많은 옵션이 있습니다.

  8. 색상 및 애니메이션 사용. 콘솔 프로그램은 일반적으로 단색이며 많이 애니메이션되지 않습니다. 많은 최신 GUI 프레임 워크는 테마 위젯을 제공하며 종종 무료로 이동 / 크기 / 표시 / 숨기기 효과를가집니다.

  9. 제도법. 콘솔 앱은 때때로 다이어그램에 ASCII 아트를 사용하지만 GUI 앱은 완전한 그래픽 기능을 제공합니다. 사랑스러운 예술도 큰 차이를 만들 수 있습니다.


1
나는 당신의 요점을 일반적으로 보았지만 여기서는 이분법이 틀렸다는 것에 동의하지 않습니다. 즉, 콘솔 응용 프로그램의 UI에도주의를 기울여야하며 이벤트 기반 콘솔 응용 프로그램을 가질 수 있으며 선형 텍스트뿐만 아니라 실제로 GUI를 표시하고 크기 조정에주의를 기울여야하는 터미널 응용 프로그램을 가질 수 있습니다 마우스로 작업 할 수 있음), 액세스 가능한 cli 앱을 사용할 수 있고, cli 앱을 GUI와 같은 방식으로 국제화하고, 색상을 사용하고 애니메이션을 적용 할 수 있습니다. 7과 9가 더 제한적이라는 것을 알려 드리겠습니다.
haylem

17

나에게 그것은 이벤트 중심 프로그래밍에 익숙해 질 것입니다. 여전히 콘솔 기반 소프트웨어에 적용 할 수 있지만 GUI와 함께 주로 사용됩니다. 일단 그것을 이해하면 매우 강력한 도구입니다.


동의하다. 배워야 할 것은 코드가 사용자가 다음에 수행 할 작업을 완전히 제어 할 수 없다는 것입니다.

대화의 시작과 함께.
Morgan Herlocker

6

멀티 스레딩이라고 말하고 UI와 관련이 있습니다 (블로킹 UI를 사용하지 않으려는 경우)


+1, 스레딩은 대처하기에 지루한 기술적 인 문제이기 때문입니다.
Clement Herreman 2013

2

UI에 대한 제어 흐름과 사용자 입력의 유효성에 대한 고려가 매우 중요해졌습니다.


2

콘솔 프로그램은 시간이 지남에 따라 개선되는 반면 GUI 프로그램은 고정되는 경향이 있습니다.


1

일반적으로 콘솔 기반 프로그램은 모델로 생각하지만 GUI 기반 프로그램은 모델을 포함하는보기 / 컨트롤러입니다.


1

나를 위해 좋은 GUI를 디자인하는 것은 항상 그것을 구현하는 기술적 인 세부 사항보다 훨씬 더 도전적이었습니다.

"맥처럼 간단하고 명료하게 만드세요"라고 말하기 쉽습니다. 그렇게 만드는 것은 엄청나게 어렵습니다. 항상 사용할 수있는 많은 세부 사항이 있지만 동시에 보이지 않아야합니다.

단순성 http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


1
Google Wave 또는 iMovie를 살펴보면 이러한 이미지가 잘못된 것임을 알 수 있습니다.
Ivo Flipse 2016 년

0

일부 (많은?) 언어에서 저에게 가장 큰 차이점은, 이제 도서관을 선택해야한다는 것입니다. 응용 프로그램의 백본 (및 그 밖의 모든 것 포함)을“콘솔”로 프로그래밍하면 언어의 표준 리소스가 사용됩니다. GUI를 추가하면 표준 숙어에서 "모델"을 여전히 가질 수 있지만 이제는 "보기"가 일부 외부 라이브러리에 의존 할 것입니다. 이 라이브러리의 선택은 (나의) 경우와 마찬가지로 초보자에게 큰 책임이 있습니다 (추가 학습 단계 곡선은 말할 것도 없습니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.