'GUI'에 해당되는 글 1건

  1. 2007/07/13 Windows와 Linux, 그리고 Textcube 10

Windows와 Linux, 그리고 Textcube

머리아픈 이야기 2007/07/13 02:18 by daybreaker

작년인가 올해 초였나, 동아리 선배 중 한 분인 netj님이 "Composable IT"를 주제로 동아리 세미나를 한 적이 한 번 있습니다.

Composable IT가 의미하는 건, 작은 단위의 결과물들을 block처럼 사용하여 쌓아올려 더 큰 일을 할 수 있는 IT를 말하는 것으로, 작게는 하나의 프로그램을, 크게는 SW 업계의 전반적인 관행(?)까지 넓은 범위로 해석할 수 있습니다.

그때 예로 들어주셨던 내용이 Linux와 Windows의 패러다임 차이에 관한 것이었죠.

Windows는 GUI로 대변되는, 이른바 "사용자를 위한" 인터페이스를 가지고 있습니다. (Mac에 대해서는 뒤에서 다시 다룸) 각 프로그램들과 도구모음의 기능들을 상징하는 아이콘들, 마우스를 사용한 드래그&드롭, 다양한 멀티미디어 프로그램, '창'의 개념을 이용한 멀티태스킹 등이 주요한 특징이죠.

디자인을 하는 분들은 대체로 GUI를 지향하는 경향이 강합니다. 사실 GUI가 처음 태어난 60~70년대를 생각해보면 가히 디자인, 즉 HCI(Human-Computer Interaction) 측면에서 혁명적인 것이기는 합니다.

반면, 과거 우리가 사용했던 DOS나 지금의 Linux들은 모두 CUI 기반입니다. Shell에 명령어를 치면 그것을 실행해주는 형태의 인터페이스이죠. (물론 최근엔 Linux도 Desktop을 중시하기 시작하면서 GUI를 잘 지원합니다) 얼핏 생각하기엔 그 많은 명령어를 다 외워야 한다는 점에서 진입장벽이 높아서 뒤떨어진 인터페이스라고 간주하기 쉽습니다.

하지만, Windows GUI에서 이런 것들을 느낄 수 있습니까?

  • 쓰면 쓸수록 점점 더 작업 능률이 높아지고 같은 일도 더 효율적으로 할 수 있게 된다.
  • 내가 하고자 하는 작업을 더 간단한 작업을 하는 작은 기능들을 모아서 한 큐에 처리할 수 있다.
물론 아주 극초보자가 컴퓨터를 배우는 과정에선 어느 정도의 향상이 있을 수는 있지만, 프로그래밍 경력 10년차의 사람이나, 인터넷 게임을 하는 청소년이나 GUI 사용에 있어서 근본적으로 차이를 보이지는 않습니다. (기껏해야 단축키를 누가 더 잘 쓰나 하는 정도?)

Linux의 shell은 위에서 설명한 바로 그것을 가장 훌륭하게 제공합니다.
시커먼 화면에 하얀 건 글자고... -_- 이런 화면을 보면 대개의 사람들은 'IT 전문가'라고 생각하기 쉽습니다만 사실 그런 사람들도 다 초보의 시절이 있었겠지요.

위에서 얘기한 Composable IT라는 것도 결국 이것을 말하는 것입니다.
Linux shell에서 실행되는 대부분의 프로그램들은 아주 단순한 기능들만을 위해 만들어져 있습니다. 예를 들어, cat이라는 명령은 파일 내용을 그대로 출력해주기만 하고, date라는 명령은 지정한 형식의 날짜를 출력해주는 기능만 가집니다. sort라는 명령은 입력된 문자열을 줄 단위로 정렬해주는 기능만 수행하죠. 좀더 복잡한 명령어로는 sed나 awk와 같이 입력받은 문자열을 다른 형태로 변환하는 정규표현식 등의 기능을 제공하는 것들이 있습니다.

그러나 이런 명령들을 모으고 모아 파이프(pipe)와 리디렉션(redirection) 및 약간의 shell script를 이용하여 이러저리 붙이면, GUI 환경에서는 상상도 못할 노가다 작업을 한 큐에 처리할 수 있습니다. Shell script가 불편하거나 어렵다면, Python이나 PHP 등의 스크립트 언어를 이용하여 저런 작은 명령들과 여러 언어로 작성된 라이브러리들을 한데 모아 붙여(glue) 사용하는 방법도 있지요.

물론, 이런 것들을 자유자재로 활용하기까지는 그만큼 배우는 시간이 걸립니다. 하지만 하나하나 배워갈수록 그만큼 일의 능률이 향상되죠. 여기서 바로 CUI의 강점이 발휘됩니다. 마우스를 이용해 무언가를 선택하는, 좌표 기반의 GUI 시스템은 필연적으로 필요한 동작을 수행하기 위해 '움직이는' 시간이 필요하지만, 키보드로 명령어를 입력하는 CUI 시스템에서는 간단한 약자로 스크립트 이름을 짓고, 적절한 parameter를 넘길 수 있도록 잘 구조화해두면 아주 빠른 시간 안에 필요한 동작을 수행할 수 있습니다.

무엇이 더 좋은 인터페이스일까요?

대중적으로 인기 있는, 대중에게 쉽게 받아들여질 만한 것은 당연히 GUI입니다. 하지만 대중적인 것이 반드시 좋다라고 말할 수는 없죠. 그렇다고 전문가의 쓰임새에 더 어울리는 CUI가 좋다라고 말할 수는 없습니다.

제가 말하고 싶은 건, GUI든 CUI든 결국 궁극적인 목표는 사람이 보다 컴퓨터 작업을 쉽고 효율적으로 할 수 있도록 만드는 것이라는 점입니다. 최소한, GUI만이 정답은 아니라는 것이죠. (가끔 그렇게 생각하는 사람들을 봅니다만.)

Tattertools를 거쳐 발전하는 Textcube의 날로 복잡해지는 옵션들과 인터페이스를 보면서, Composable IT에 대한 생각이 가끔씩 떠오릅니다. 과연 어디쯤 가면 만족할 만한 UI를 만들었다고 할 수 있을까요? (하하, 그렇다고 텍스트큐브를 CUI로 만들지는 않겠지만요. :D)

덧. Mac의 경우, CUI 방식의 shell과 훌륭한 GUI 환경을 동시에 사용할 수 있는 운영체제입니다. Linux에서도 GUI가 많이 강화되고는 있지만 아직 Mac을 따라가기에는 멀었죠. 이 점에서, 해커들의 운영체제라는 얘기가 나오는 것 같습니다.
필자
author image
Daybreaker(아침놀)입니다. 현재 KAIST 전산학과에 재학 중이며 전산 외에도 물리, 음악, 건축 등에 관심이 많습니다. Needlworks 내에서는 각종 홈페이지 제작 및 서버 관리 등과 함께 Textcube 개발에 참여하고 있습니다.

홈페이지 : http://daybreaker.info

2007/07/13 02:18 2007/07/13 02:18