본문 바로가기

Ryu's Tech

CLI(Command-Line Interface) 와 GUI(Graphic User Interface) ... 그리고 NUI(Natural User Interface)

 

 

 

먼저 간단하게 인터페이스가 나온 순서를 보면

 

 

이러한 순서로 발전되었습니다.

 

먼저 CLI ( Command-line Interface) 를 살펴보면 가장 저희가 가깝게 느낄 수 있는 부분은 윈도우에서 "커맨드 창" 을 열때입니다.

시작 - 실행 - cmd 그리고 엔터. 이렇게 쳐 보신적이 있으신분은 다 CLI 를 경험해 보신 겁니다.

 

 

이미지로 보니까 바로 아시겠죠?

네트워크 정보안에 IP 정보를 보거나 하실때도 마우스로 클릭클릭해서 보실수도 있지만 CMD 내에서 "ipconfig"를 쳐보셔도 확인 하실 수 있습니다.

혹은 폴더 내에서 확장자가 avi 인 파일을 볼 때에도 윈도우에서는 정렬이나 검색을 통해서 확인하겠죠.

도스에서는 "dir *.avi" 와 같이 구문을 통해서 입력합니다. 그래서 키보드를 통해 문장 입력하는 인터페이스는 대부분 CLI라고 생각하시면 됩니다.

( 키보드 커서로 왔다 갔다하면서 설정하는 것은 GUI 입니다. 부팅할때 del 키를 눌러서 들어가는 CMOS를 생각하시면 되겠네요.)

 

이러한 CLI환경을 사용했던 것들을 보면

MS-DOS, CP/M, Unix, LInux, Apple DOS,... 등등 무수히도 많습니다.

제가 다루는 네트워크 장비도 대부분 CLI 방식이죠. GUI도 가능하긴 하지만... 거의 사용하지 않습니다.

네트워크 장비는 하드웨어를 직접 다루는 부분이기 때문에 low level 환경에서 사용하는 것이 더 장점이 많기 때문입니다.

 

CLI 는 위에서 그렇기 때문에 철자나 띄워쓰기 같은 부분에 있어서 엄격합니다. 한글자라도 틀리면 제대로 입력이 되지 않죠.

그리고 구문이나 옵션을 통해서 좀 더 향상된 기능을 사용할 수 있습니다.

" dir *.avi /OS > result.txt "  현재 폴더에 있는 모든 avi 파일들을 크기순으로 정렬해서 결과를 result.txt 파일에 넣어주는 명령어 입니다.

잠시 후 말씀드릴 GUI는 이러한 응용적인 기능들은 사용하기가 어렵습니다(미리 구현해 두지 않는 한).

 

CLI의 장점은 응용하고 조합하게 되면 더 높은 수준의 결과를 얻을 수 있다는 점입니다.

그리고 가장 low level의 입력방식입니다. 여기서 말하는 low는 수준이 낮다는 것이 아니라 하드웨어적인 부분에 접근하기 쉽다는 것입니다.

 

결론적으로 한줄로 말씀드리면 CLI는 텍스트기반의 입력방식이다. 라고 생각하시면 됩니다.

 

 

 


 

자... GUI는 여러분이 더 잘 아시죠?

 

 

 

 

바로 여러분이 사용하는 윈도우가 GUI 환경입니다.

현재 모든 대중이 사용하는 전자기기들은 GUI로 되어있습니다. 일반인이 사용하는 전자기기 중 액정이 달려있고 사용자의 입력을 받아주는 기기중에 이러한 그래픽이 들어가지 않는게 있나요?

"그래픽"이 포함되는 입력환경이 GUI 라고 생각하시면 됩니다.

 

마우스를 사용하는 환경은 전부 GUI 입니다. 마우스로 키보드 한자 한자를 찍어서 입력한다 하더라도 그것은 GUI를 이용한 CLI입니다. 결국 마우스 = GUI 라고 생각하셔도 됩니다. 하지만 키보드=CLI 는 아닙니다.

 

잠깐 쉬어가면서 GUI 의 역사를 잠깐 볼까요?

 

Windows 1.0 들어보셨나요?

지금의 windows 7이 나오기 전에도 정말 많은 윈도우 버전이 있었습니다. 초기 windows를 보면...

 

 

 

지금 보면 촌스럽고 이상하지만 DOS에 매달리던 그때는 정말 획기적인 운영체제 였죠.

 

그리고 최초는 좀 더 찾아봐야겠지만 1973년 4월에 대중적으로 처음 사용된 GUI 환경의 컴퓨터라고 합니다.

Alto computer에서 만든 Xerox Parc 라고 하네요. 저도 한번도 본적은 없지만 DOS 를 사용해 보셨던 사용자라면 어느정도 비슷한 화면을 봤을 것 같네요

 

 

 

   

 

Xerox의 오류 화면이라고 하네요. 윈도우의 블루 스크린과 같은 화면이죠

 

그림판 기능인 것 같군요.

 

게임도 있었네요 미로 찾기입니다.

 

당시 사진인 것 같습니다. 경마장 게임을 즐기나 보군요.

 

더 많은 GUI의 역사를 보고 싶으시면 아래 사이트를 방문해 보시길 바랍니다.

http://toastytech.com/guis/index.html

 

이정도면 크게 설명드리지 않아도 GUI 대해서는 잘 아시겠죠?

GUI는 CLI를 사용자의 입장을 배려한 입력방식이라고 생각하시면 됩니다.

대부분의 GUI는 CLI 환경도 가지고 있습니다. 윈도우에서 cmd 를 통해 GUI환경에서 CLI환경을 불러서 사용하기도 하죠.

상호 작용이라는 점에서 별로 차이가 없다면 없는거지만 CLI와 GUI는 분명 차이는 있습니다.

 

 

 

 


 

 

 

 

그럼 이제 마지막으로 NUI를 볼까요?

 

NUI는 말그대로 Natural User Interface 자연스러운 유저인터페이스. 단어 그대로입니다.

여러분 중 대부분은 이미 NUI 환경의 기기를 가지고 있습니다. 바로 스마트폰이 NUI의 한 예죠. 일부 스마트폰을 제외하면 대부분 터치 방식의 기기이죠. 이게 바로 NUI입니다.

 

CLI + 그래픽 = GUI 였다면.

GUI + 촉감,동작등 사람과의 직접적인 연관관계 = NUI 라고 보시면 됩니다.

 

영화 마이너리티 리포트의 손동작으로 컴퓨터를 제어하는 것도 NUI입니다.  그리고 현재 존재하는 것중 NUI를 잘 표현한 기기 중의 하나가 다 아시는 xbox의 키넥트 입니다.

 

    

 

 

 

 

솔직히 말씀드려서 CLI와 GUI는 구분짓는 것이 쉬웠으나 그 외의 인터페이스들은 구분짓기가 좀 애매모호 한 것들이 많더군요.

 

OUI ( Organic User Interface )나 TUI ( Touch User Interface) 등등 많은 것들이 있으나 저는 대부분은 NUI에 포함된다고 생각해서 따로 언급하지는 않겠습니다.

 

아 그리고 잘 언급은 안하지만 구분되는 VUI ( Voice User Interface ) 라고 해서 소리에 의해 입출력을 받는 환경도 있습니다. 그런데 이것도 역시 NUI에 포함되는걸까요?ㅎㅎ 저도 애매합니다

 

유저 인터페이스의 종류는 기준에 따라서 분야을 다르게 볼 수도 있습니다. 위키피디아의 유저인터페이스에 대한 기사만 봐도 정말 많은 분류가 있습니다. 유저 인터페이스만 하나하나 찾아봐도 한참 걸릴 것 같군요. 관심있으신 분들은 하나하나 찾아보세요.

http://en.wikipedia.org/wiki/User_interface

 

 

아무튼 이러한 인터페이스 분야를 가장 구분하기 쉽게 나누어서 보면 CLI / GUI / NUI 의 세가지로 나눠지는 것이 맞는 것 같습니다.

 

CLI - GUI - NUI - ?

 

다음은 어떤 단어가 될까요? 

저는 User Interface + A.I (artificial intelligence) 를 합쳐서 SUI(Smart User Interface) 같은 것이 나오지 않을까 생각해 봅니다.

어서 빨리 사용자의 행동패턴을 알고 이를 파악에서 인공지능으로 처리해 주는 환경을 소망해 봅니다. ( 연구/개발은 많이 되고 있지만 아직 대중적이지는 않죠. )

 

 

라고 했는데 ............. 찾아보니 OUI ( Organic User Interface ) 라는게 있네요...

유기적 사용자 인터페이스...

증강현실이나 디스플레이가 휘어지거나... NUI 에서 더 하드웨어적으로 발전된 부분인거 같네요

 

 

 

아무튼... 하나 빠뜨린게 있네요... CLI - GUI - NUI - OUI 로 가면서... 사용자는 당연히 편해지고 당연하게 받아들이게 되지만

개발에 대한 비용이나 노력은 훨씬 크게 요구가 된답니다.

프로그램이 돌아가는 구동되는 엔진 부분은 눈에 보이지 않지만 사용자가 직접 접하게 되는 인터페이스 부분은 직접 보고 느끼는 부분이기 때문이죠.