오류 메시지

Deprecated function: Array and string offset access syntax with curly braces is deprecated in include_once() (line 20 of /hjtic1/www/includes/file.phar.inc).

니케이 네트워크_2025/09 의외로 비슷한 GUI와 CLI

책 커버 표지
목차

요약

닛케이 NETWORK_2025.9월호 (P82)

의외로 비슷한 GUI와 CLI
그 차이를 고찰한다

GUI(Graphical User Interface) 프로그램과 CLI(Command Line Interface) 프로그램은 어떻게 다를까?  프로그램이라고 하는 것은 ‘input(입력)→eval(평가)→print(출력)’의 반복이다. 이것은 GUI도 CLI도 동일하다.

프로그램의 핵심을 이루는 eval은 GUI와 CLI를 통해 로직을 공통화할 수 있는 경우가 많다. 예를 들면 Python으로 무엇인가를 처리하는 스크립트를 CLI 베이스로 쓰고, 그것이 완성되었을 때 사용하기 쉽게 하기 위해 GUI를 적용하는 것이 가능하다.

-- CLI는 입출력 폭이 좁아 --
GUI와 CLI의 다른 점은 입력처와 출력처의 범위가 다르다는 점일 것이다.

CLI의 경우, 기본적으로 input에 해당하는 것은 키보드를 통한 문자 입력이나, 파일을 통해 읽은 데이터인 경우가 많다. 프로그램 작성에 따라 다르지만, 대화 형식으로 문자를 입력하지 않고 최초의 조건 지정만으로 파일을 통해 데이터를 읽고 처리하는 경우도 적지 않다. 프린트할 때에는 파일에 쓰거나, 화면에 문자를 표시하는 경우가 많다. 따라서 CLI에서는 서두에서 말한 ‘반복’을 별로 의식하지 않을지도 모른다.

-- GUI는 OS의 지시를 기다려 --
이에 비해 GUI는 input의 종류가 많다. 키 입력뿐만이 아니라, 마우스 조작도 있다. 경우에 따라서는 인터럽트 통지도 있을 수 있다. 이러한 다양한 입력에 대응하기 위해 GUI 프로그램에는 ‘이벤트 대기 루프’가 존재한다.

예를 들면 윈도우의 경우, ‘윈도우가 갱신되었으므로 내용을 다시 입력해주길 바란다’라는 처리 의뢰가 ‘WM_PAINT’ 메시지로 통지된다. 키가 눌렸을 때 WM_KEYDOWN이 도착. 문자가 입력될 경우, ‘WM_CHAR’가 도착한다.

이러한 다양한 메시지가 윈도우로부터 전송되지만, 대응할 필요가 있는 메시지에 대해서만 애플리케이션에 처리를 기술하면 된다. 그 외의 것은 윈도우에 맡기면, 디폴트 처리를 받을 수 있다.

이 이벤트 대기 루프의 존재는 최근의 프로그래밍 환경에서는 거의 숨겨져 있기 때문에 사용자는 그다지 의식하지 않을 것이다. 예를 들어, 오브젝트가 클릭되었을 때의 처리를 기술하면 충분할 수 있도록 오브젝트 지향에 근거한 프레임워크 등을 이용해 랩핑하고 있다.

필자가 1980년대 후반에 Windows 2.1의 프로그래밍을 처음 알았을 때는 C언어에 기반하는 개발 키트 밖에 없어 이벤트 대기 루프는 눈에 보이는 형태로 기술되어 있었다. 좋은 의미에서 변화가 없는 CLI 프로그래밍에 비해 GUI 프로그래밍은 시시각각 변하고 있다.

Windows만으로도 2000년대에 개발 환경은 ‘MFC(Microsoft Foundation Class)’에서 ‘.NET Framework’베이스로 크게 바뀌었다. 그 중에서도 ‘Windows Forms’뿐만 아니라, 화면 정의와 로직을 명확하게 나눈 ‘WPF(Windows Presentation Foundation)’나, 멀티플랫폼화한 ‘.NET MAUI(Multi-platform App UI)’도 있다. 솔직히 말해서 쫓아가는 것만으로도 힘든 상황이다.

 -- 끝 –

 

Copyright © 2025 [Nikkei Network] / Nikkei Business Publications, Inc. All rights reserved.

TOP

목차

 

Nikkei Network_2025.09 목차

특집 1.
알려지지 않은 인터넷의 이면
〮 해부: 일본의 인터넷 백본
Part 1. 전체상
백본은 인터넷의 '척추', 광섬유를 조달해 구축한다
Part 2. 액세스망
광섬유 1개를 32명의 유저가 공용, FTTH는 최대 10Gbps로 고속화
Part 3. 백본
대역은 100G를 넘어 400G에 돌입, 재해 대책도 급속도로 추진
Part 4. 상호연결
IX로 다수의 ISP와 피어링, 콘텐츠 사업자와의 연결 증가

뉴스로 이해
NEWS close-up 1.
증권 계좌 탈취에 대한 대책에 새 지침
NEWS close-up 2.
표적이 되고 있는 지방 은행의 법인 인터넷 계좌
NEWS close-up 3.
피싱 이메일 훈련은 효과가 있을까?
piyokango의 월간 시스템 트러블
도카이대학의 랜섬웨어 피해, 원인은 계좌 탈취인가?
월간 랜섬 리포트
피해 건수 감소 추세는 2개월 만에 멈춰, 의료 서비스를 주요 타깃으로 하는 'Qilin'의 공격 증가

현장을 알다
당사자가 밝히는 트러블로부터의 탈출
〮 연결되지 않은 무선 공유기, 설치 후 잊고 있었던 기기가 차단
엔지니어의 옆얼굴
〮 참고서 10권을 1주일 만에 독파, [무너지는 법]을 의식한 AP 개발 탐구
버펄로네트워크의 나루세 제2개발부장
인터넷은 왜 연결되는가
〮 인터넷 접속을 뒷받침하는 유선
말웨어 철저 해부

〮 인포스틸러의 수법을 이해

특집 2.
수위가 교체된 제품이 있는가
〮 네트워크 기기 이용 실태 조사 2025

특별 리포트
부정 매매 6,200억엔
〮 인터넷 증권 계좌 탈취에 대한 대책 실태 조사

네트워크스페셜리스트 시험을 통해 배우는 네트워크 기술의 핵심
〮 부하 분산과 NAT

기초부터 배운다
전문가가 답하는 초보자의 질문
〮 Ping을 친다는 게 무슨 의미?

그림으로 알 수 있는 네트워크 필수 키워드
〮 다요소 인증
IEEE 표준화 동향으로 보는 미래
〮 320MHz 대역폭 고정밀 측위
테크놀로지 온고지신
〮 의외로 비슷한 GUI와 CLI, 그 차이를 고찰한다

 -- 끝 –

 

Copyright © 2025 [Nikkei Network] / Nikkei Business Publications, Inc. All rights reserved.

TOP