'Linux'에 해당되는 글 1건
- 2007/07/13 Windows와 Linux, 그리고 Textcube (10)
Windows와 Linux, 그리고 Textcube
머리아픈 이야기 2007/07/13 02:18작년인가 올해 초였나, 동아리 선배 중 한 분인 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에서 이런 것들을 느낄 수 있습니까?
- 쓰면 쓸수록 점점 더 작업 능률이 높아지고 같은 일도 더 효율적으로 할 수 있게 된다.
- 내가 하고자 하는 작업을 더 간단한 작업을 하는 작은 기능들을 모아서 한 큐에 처리할 수 있다.
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을 따라가기에는 멀었죠. 이 점에서, 해커들의 운영체제라는 얘기가 나오는 것 같습니다.





댓글을 달아 주세요
전체적인 맥락은 동감합니다만, 예로 든건 영....
예를 들면 GUI보다 CUI가 익숙해지면 뭐 더 효율성 증가가 있다라는건 텍스트 타이핑 기반 작업에 한정된 이야기라는 전제가 필요합니다... 전문적인 그래픽 작업만 해도 GUI 사용역량에 따라 작업 효율성 차이가 크죠. 기타 몇가지 예로 드신거가 좀 불만이네요 ㅎㅎ
인터페이스라는것도 목적에 맞춰서 만들고 써야 하는 도구죠.
당연히 CUI에는 CUI의 영역이 있고 GUI에는 GUI의 영역이 있습니다.
그래픽 작업 같은 것도 CAD처럼 명령어 인터페이스로 하는 종류가 아니라면 GUI를 활용하는 편이 낫겠지요. (이와는 별도의 문제로, '창조적인' 작업에 있어서는 적어도 아이디어 스케치 단계는 GUI든 CUI든 컴퓨터를 쓰기보다 손으로 하는 것이 낫다고 생각합니다.)
제가 말한 부분은, 어떤 전문적인 작업보다는 컴퓨터를 사용하는 그 자체(윈도탐색기와 shell의 비교라고 해야 될런지..)를 얘기한 것입니다. 당연히 프로그래밍은 키보드가 빠르고, 포토샵이나 일러스트레이터 같은 작업은 마우스가 빠르겠죠.; (CAD는 또 좀 얘기가 다르지만...)
그냥 예로 드신게 조금 제한적인 예라고 생각했을뿐, 전체적인 주제나 말씀에는 동감하고, 힘드신 고민이라는거 이해합니다.^^
태터...아니 텍스트큐브인가...를 더 사용하기 쉽게 만들어주세요. 아는 친구를 블로거로 만들려다 보니 힘들긴 힘들더군요 -_-; 파이팅.
저도 제 룸메이트-_-가 태터툴즈 사용자인데 매번 업그레이드 때마다 저한테 도움을 받고 있어서...;; 텍스트큐브 마이그레이션은 언제 시켜주나 싶습니다;
요즘, 추가되는 옵션과 인터페이스는 만드는 사람의 욕심이라는 생각을 많이 합니다. 저는 블로그는 수정(Soojung)정도면 충분하다고 생각해요. 사실 수정도 불필요한 기능이 많(?)죠.얼마나 효과적으로 기능을 분리할 수 있을 것인가!가 제일 중요하고, 그래서 기대를 많이 하고 있습니다.
단순, 직관적이면서도 구현할 수 있는 다양한 옵션들에 쉽게 접근할 수 있도록 만드는 것이 참 어렵습니다. (구현을 할 수 있는데 구현을 해야 되는가 하는 문제도 있지만 여기서는 필요하니까 구현한다고 생각해두죠.)
간단히 초보자용/고급사용자용 UI를 분리한다고 해서 이런 고민이 완전히 해결될 것 같지는 않습니다만 하나의 방법이 될 수는 있겠죠. (지금까지 사용된 방법 중에서는 가장 나은 것 같습니다만..) 뭔가 쓰면서 하나하나 배워가는 느낌이 있는, 그래서 그 배운 것들을 점점 더 잘 써먹을 수 있는 그런 UI를 만들 수는 없을까요? 이런 UI라면 어쩌면 스토리텔링의 도움을 받아야 할지도 모르겠습니다.
여기저기 떠돌다 관심있는 리눅스 얘기가 있는것같아 들렀습니다^^
저역시 GUI보단 CUI가 익숙하고 지향하는 편이죠.. 웬지 윈도우의 notepad보다 리눅스의 vi 가 더 친숙하고 편하다고할까요?? ㅋㅋ (이 글의 결론이 이건 아닌것같지만.ㅋ)
UI란게 어쩔수 없나봅니다.. 처음 사용하는 사용자가 편해야 편리한 UI로 인식되는것 같아서..
(여기저기 둘러보니 니들웍스 블로그군요..ㅋㅋ허허허허)
네, 요즘 드는 생각이, "처음 사용하는 사용자가 편해야" 편리한 UI인가 하는 부분입니다. 분명 처음 사용자에게 쉽게 다가서는 것은 그 사용자가 지속적으로 그 제품을 사용하게 하는 데 있어 중요한 역할을 하지만, 조금 더 숙련된 사람들이나 아주 전문가급으로 다루는 사람들을 위한 UI도 그러해야 할지는 고민입니다.
잘만하면 CUI TextCube가 나오겠는데요 ^^
언젠가 TNF에서 제가 이런 얘기를 한번 꺼낸 적이 있었는데 말이죠...
TCSchell이었을걸요;;;