Linux 사용상의 장점
Linux를 사용하면 많은 장점이 있습니다. 요즘 구할 수 있는 많은 운영체제 중에서 Linux는 널리 통용되는 가장 인기 있는 무료 시스템입니다. IBM PC에 대해서는, Linux에서 386이상 컴퓨터 시스템의 전체 처리 성능을 이용하는 내장형 다중 사용자 및 멀티태스킹 기능을 전체 시스템에 제공합니다.
Linux에는 TCP/IP 네트워킹 프로토콜이 완벽하게 구현되어 있습니다. Linux를 사용하면 인터넷과 그에 포함된 광대한 정보에 접속할 수 있습니다. 또한 Linux에서는 완벽한 전자우편 시스템을 제공하고 있으므로 사이버 공간을 통해 베시지를 전송할 수 있습니다.
또한 Linux는 인기 있는 X Window 시스템을 기초로 하는 완벽한 그래픽 사용자 인터페이스(GUI)인, XFree86을 보유하고 있습니다. 이 XFree86에는 Linux와 함께 무료로 배포되는 X Window 시스템이 완벽하게 구현되어 있습니다. 이러한 Xfree86에서는 Windows와 OS/2 같은 다른 상용 GUI 플랫폼에서 볼 수 있는 일반적인 GUI요소도 제공하고 있습니다.
요즘에는 이들 기능 모두가 Linux용으로 나와 있으며, 기본적으로 무료이고, 인터넷 또는(여러 다른 공급업체로부터) 우편 주문을 통해 프로그램을 입수하는 데만 비용이 들어갑니다.
개방형 시스템 이식성
끊임 없는 표준에 대한 요구로, 많은 조직들이 운영체제의 발전 방향에 관심을 기울이게 되었습니다. UNIX는 아직 끝나지 않았습니다. UNIX의 줄기를 많은 UNIX 변종들로부터 표준화하려는 조직적 운동이 현재도 계속되고 있습니다. 뒤에 이어지는 섹션들에서는 이들 변종이 어떻게 개발되었는지에 관해 보다 자세히 배우게 됩니다.
모든 UNIX버전을 조합, 대조하고, 그렇지 않으면 모든 것을 포함하는 하나의 단일 운영체제 버전으로 흡수하려는 노력들이 있었습니다. 이러한 노력들은 처음에는 신중한 열정과 결합되었으며, 어떤 것들은 확대되어 다른 버전과 혼합하는 데까지 이르기도 했습니다. 많은 고귀한 노력이 있었음에도 불구하고 이런 것들은 결국 실패로 끝나고 말았습니다. 그 이유는 개발자들이 자신들의 버전에 이미 투자했던 부분을 희생하려고 하지 않았기 때문이었죠(아쉽게도 많은 개발자들이 그렇게 느끼고 있습니다).
하지만 UNIX 변종이 지금까지도 여전히 존재한다는 것은 이용자들에게 위험한 일은 되지 않습니다. 서로 차이가 있음에도 불구하고 각각 이전 페이지에서 설명한 것과 같은 요소를 포함하고 있기에, 오늘날 구할 수 있는 다른 어떤 운영체제보다도 여진히 본질적으로 탁월하기 때문입니다.
이식성이란 여전히 동일한 작업을 수행할 수 있도록 한 플랫폼에서 다른 플랫폼으로 운영체제를 옮길 수 있는 능력을 말합니다. UNIX 는 실제로 이식이 가능한 운영체제 입니다. UNIX도 처음에는 DEC PDP-7 미니 컴퓨터라는 하나의 특정 플랫폼에서만 작동할 수 있었습니다. 하지만 요즘에난 많은 UNIX변종들이 모든 환경과 랩탑 컴퓨터에서 메인 프레임에 이르기까지 모든 플랫폼에서 동작할 수 있습니다.
이식성은 UNIX를 실행중인 각기 다른 컴퓨터 플랫폼들이 그 밖의 다른 플랫폼 중 하나와 정확하고 효과적으로 통신할 수 있게 해주는 수단을 제공합니다. 물론 이들 시스템은 구입후에 고가의 특수 통신 인터페이스를 추가하지 않고서도 통신할 수 있습니다. 이런 이식성은 현존하는 다른 어떠한 운영체제에서도 불가능합니다.
응용 프로그램
운영체제를 사용하는 것 자체로도 때로는 재미있지만, 그런 이유만으로 대부분의 사람들이 컴퓨터를 사용하는 것은 아닙니다. 대부분의 사람들이 자신의 컴퓨터로 어떤 생산적인 작업을 해야 하기 때문입니다. 오늘날 Linux에서는 스프레드시트, 데이터베이스, 워드 프로세서, 다양한 컴퓨터 언어로 된 응용 프로그램 개발을 위한 다른 응용프로그램을 사용할 수 있습니다. 또한 Linux에는 텍스트 형식과 그래픽 형식을 모두 포괄하는 광범위한 게임도 제공됩니다. 피곤한 하루일과를 끝내고 휴식이 필요할 때도, Linux는 몇 분(또는 몇 시간)의 휴식을 제공할 수 있습니다.
응용 프로그램
사용자가 컴퓨터 전문가라면 Linux가 프로그램 개발을 위한 풍부한 툴을 제공해 줄 것입니다. 여기에는 C, C++, Smalltalk와 같은 최근의 많은 고급 컴퓨터 프로그래밍 언어용 컴파일러도 포함되어 있습니다. 이들 언어를 사용하지 않는 경우에도 자신의 컴퓨터 언어를 구축하는 데 상요할 수 있는 Flex, Bison 같은 툴을 제공합니다. 앞서 말한 언어 중 하나를 배우고 싶지만 그에 따른 컴파일러 때문에 수백 달러를 쓰고 싶지 않은 사용자에게는 Linux와 그 개발 툴이 적절합니다.
또한 Linux에서는 귀사의 사무용 시스템과동 통신 할 수 있습니다. 사용자가 UNIX 시스템 관리자인 경우에는 Linux가 집에서도 업무를 수행하는 데 도움을 줄 수 있습니다. 현재도 많은 회사에서 재택 근무가 생산성을 높이고 경비를 절약하는 데 도움이 될 것으로 인식하여 붐을 일고 있긴 하지만, 아마도 언젠가는 사용자도 Linux를 사용하여 자신의 작업을 집에서 할 수 있게 돼서 개인적인 미팅만을 위해 가끔씩 회사를 방문하게 될 것입니다.
업계에서 유행하는 전문용어 중 두 가지가 바로 개방형 시스템과 상호 운용성인데, 이들 둘다 각기 다른 여러 시스템들이 서로 통신할 수 있는 능력을 말합니다. 대부분의 개방형 시스템 사양들이 어느 정도의 UNIX 형식을 취하는 Portable Operating System Interface(POSIX)를 따르도록 요구합니다. 현재 Linux가 바로 이 표준을 충족하고 있습니다. 사실 Linux는 소스 코드 이식성을 위해 고안된 것이므로, 한 가지의 UNIX 버전으로 실행되는 회사 프로그램을 갖고 있다면 비교적 빠르게 해당 시스템을 Linux실행 시스템으로 이식할 수 있어야 합니다.
회사들은 자신들이 어느 한 가지 공급엡체의 제품만을 사용하도록 얽매이지 않기 위해 이러한 유형의 시스템을 고집하고 있습니다. "계란을 한 바구니에만 담지 말라"는 오래된 격언이 이에 해당되는 것입니다. 또한 회사들은 자사의 시스템들을 한 회사에서 통제하여 그들이 소프트웨어 작동 방법과 해당 소프트웨어에서 지원하는 하드웨어 시스템 종류를 명령할 수 있으리라 의심하고 있습니다. 이들 회사들이 귀사에 적절하지 못한 방향을 선택한다면 곤란한 경우에 처하게 될 것입니다. 즉 이런 회사의 결정을 좋아하건 좋아하지 않건 간에 따르게 될 것입니다. 하지만 UNIX/Linux와 개방형 시스템을 사용할 때는 자기 자신의 결정에만 지배를 받게 되므로 오늘날 많은 상위회사(IBM, Dell, Nortel)들은 이러한 새로운 기술을 채택하고 있습니다. 그 이유는 무엇일까요? 바로 운영체제가 자신들이 필요로 하는 기능을 갖추고 있지 않다면, 그에 맞게 (운영체제를) 바꿀 수 있는 많은 컨설턴트를 구할 수 있기 때문입니다. 이러한 일도 운영체제에 대한 소스 코드를 갖고 있기 때문에 가능한 것입니다.
교육
사용자가 학생이라면 Linux에 과제를 작성하기 위한 편집기와 과제의 철자를 점검하기 위한 맞춤법 검사기가 제공되어 있다는 것을 참고하시기 바랍니다. Linux에서는 사용자가 다니는 학교의 컴퓨터 네트워크에 로그인 할 수 있습니다. 물론 인터넷에 엑세스하여 제한 없는 풍부한 정보를 얻을 수도 있습니다. 또한 사용자의 질문에 답해 줄 수 있는 다양한 분야의 수많은 전문가에게도 엑세스 할 수 있습니다. 사용자의 전공이 컴퓨터가 아니더라도 Linux는 유용합니다.
하지만 Linux는 개발된 것이고 지금도 계속 개발되고 있는 커뮤니티의 정신과 철학으로 인해 아주 짧은 동안만 그러한 장점을 제공할 뿐입니다. Linux는 그 자신의 생애가 전부 걸린 위대한 실험입니다. 실제로 전 세계 수많은 컴퓨터 해커들이 개발에 기여했습니다. 리누스 토발즈도 처음에는 혼자서 Linux를 개발했다가 후에는 GNU copyleft하에, 세계에 자신의 창작물을 발표했습니다.
해커
기본적으로 Linux는 해커에 의해, 해커를 위해 만들어진 시스템입니다. 오늘날 해커하는 용어의 일반적인 정의는 부정적인 의미를 갖고 있긴 하지만, 컴퓨터 해커는 범죄자가 아닙니다. 해커에 대한 정의는 컴퓨터를 다룰 때만 아니라 인생에 있어 어떤 활동에 접근하는 방법을 다룬다는 의미도 있습니다. 해커들은 시스템에 대한 모든 것을 배운다는 의미로서 마치 오락을 즐기는 것과 같이 시스템에 몰두하고, 시스템이 고장나면 고칠 수 있는, 즉 시스템을 이해하는 것을 말합니다.
해커들은 기본적으로 자신이 흥미를 느끼는 시스템이 어떻게 작동하는지 알고 싶어합니다. 비록 일부 해커가 선을 넘어서 해커 커뮤니티에서 크래커가 되기는 하지만 대부분이 돈을 벌거나 복수의 기회를 갖는 데는 관심이 없습니다. 컴퓨터 해커들은 오늘날 인기 있는 매체에서(크래커가 아닌) 해커가 파괴자나 범죄자와 비교될 때 분노하게 됩니다. 우리는 Linux가 사용자에게 해커가 될 것 같은 느낌, 이상적으로 말하면 크래커가 되려는 것을 막을 수 있기를 바랍니다.
사용자가 호기심이 많은 타입이어서 UNIX 에 관해 보다 많이 배우길 원한다면 Linux가 적절할 것입니다. 사요자는 무료로 제공되고 무제한으로 엑세스할 수 있는 완전한 기능의 UNIX 버전(실제에서는 거의 찾아보기 힘든 프로그램)을 Linux에서 찾을 수 있을 것입니다. 대부분의 UNIX 사용자들에게는 제한된 권리와 권한이 부여된 UNIX 시스템 계정이 주어지는데, 보통의 사용자들은 특정 UNIX/Linux 명령을 사용하거나 시도할 수 없습니다. 이러한 환경은 UNIX에 관한 모든 것을 배우는 데 도움이 되지 않습니다. 하지만 Linux에서는 모든 것을 배우고 언제라도 원하는 것을 수행할 수 있습니다. 물론 이렇게 주어지는 권한에는 그에 따른 책임이 요구됩니다. 사용자는 UNIX 시스템을 관리하는 방법을 배워야 합니다. 이것은 재미있는 작업이며 재미 그 자체입니다.
출처: http://icrl.mju.ac.kr/~kaienjo/linux_5.html
- 무한한 소스가 공개되어 있다.
시인과 소설가가 되기 위해서는 다른 사람의 시와 소설을 많이 읽어야 한다. 다른 사람의 시와 소설은 물론이고 무엇보다도 대가라고 불릴 만한 사람들의 명작을 읽어야 하지 않는가? 프로그래밍 분야란 범접하기 어려운 수많은 이론적 배경은 물론이며 충분한 실제적 훈련을 요구하는 아주 어려운 분야이다. 그런데 리눅스와 같은 개방환경에서는 이미 수많은 자료들이 공개되어 있고 여러분이 즐겁게 읽어주기를 기다리고 있다.
무엇보다도 가장 훌륭한 소스 중 하나인 커널 소스가 공개되어 있지 않은가? 리눅스는 현재 인텔 머신 뿐 아니라 알파, 파워맥, 썬 스팍, m68k 등 수많은 아키텍처로 포팅되어 있는 상태이다. 만약 여러분이 원하는 플랫폼이 있다면 충분한 참고자료가 되지 않겠는가? 하드웨어 드라이버의 경우, 리눅스 드라이버들은 하드웨어 업체의 아무런 도움 없이 지루하기 짝이 없는 역 엔지니어링 기법까지 사용하면서 밝혀낸 소중한 자료들이라고 할 수 있다.
여러분이 훔쳐(?) 볼 수 있는 소스가 풍부하다는 사실이 얼마나 도움되는지는 프로그래머의 입장에서 실제적인 고민을 해본 사람이라면 이해할 것이다. 소스가 공개되지 않아 모든 사람들이 일을 처음부터 해내야 한다는 것은 매우 우스운 일이다.
- 개발 환경이 표준적이면서도 풍부하다.
리눅스는 표준적이고도 강력한 GNU 프로그래밍 환경을 채택하고 있다. 이미 리눅스 뿐 아니라 공개 운영체계들 그리고 엄청난 컴파일러 가격과 라이선스 문제 때문에 엄두를 내지 못하는 상용 유닉스에서도 사용되어 왔고 그 뛰어난 성능을 입증받아온 GNU C 컴파일러는 유닉스계에서 표준적이면서도 고유의 강력한 기능을 자랑하고 있다. 또한 멀티플랫폼용 애플리케이션을 만드는데도 커다란 도움을 주고 있는데 GNU C 컴파일러는 거의 모든 유닉스 체제는 물론, 낮게는 도스 그리고 윈도 95, 윈도 NT와 같은 독점적 마이크로소프트 사의 WIN32 환경에서까지 작동한다. 리눅스는 처음부터 POSIX 규격을 선도적으로 준수하고 있기 때문에 리눅스에서 개발한 애플리케이션들은 어떠한 수정도 필요없이 또는 있다 하더라도 거의 수정할 필요없이 다른 플랫폼으로 이식 가능한 장점을 지니고 있다.
참고
도스용 컴파일러로는 DJ-GPP가 있고 WIN32 환경의 컴파일러로서는 시그너스(Cygnus) 사에 의해 개발되는 GNU 컴파일러 포트가 있다. 다음 사이트를 참고하기 바란다.
http://www.delorie.com/djgpp
http://www.cygnus.com/misc/gnu-win32
그럼 도대체 어떤 면에서 풍부하단 말인가? 본인을 비롯한 많은 사람들은 그 동안 오로지 C 언어만 있고 그것도 볼랜드 사와 마이크로소프트 사의 제품만 있는 것처럼 알고 살아왔다. 하지만 정말로 각 분야에서 자기 몫을 해내는 뛰어난 설계의 언어들이 많다. 그리고 그것을 리눅스에서 맛볼 수 있다. 호미를 쓸 곳에 삽을 쓰지 않으며 삽을 쓸 곳에 호미를 쓰지 않는 현명함을 가져야 하는 사람들이 바로 프로그래머 아닌가?
참고
다음과 같은 언어를 사용할 수 있다.
C C++ 오브젝티브 C
( 넥스트, 오픈스텝에서 사용 )
Fortran Pascal Ada
Lisp Scheme Forth
Prolog Icon Eiffel
Oberon sh(유닉스 셸) Tcl/Tk
Python Perl Java
PostScript HTML Smalltalk
Modula 2 Modula 3 SQL
기타 등등
주목받는 멀티플랫폼, GUI 개발 환경으로는 썬 사에서 제공하고 있는 티클/티케이(Tcl/Tk) 스크링팅 언어, 자바 언어를 들 수 있다. 티클/티케이는 현재 유닉스 용이 소스까지 공개되어 제공되고 있으며 자바는 몇몇 뜻있는 사람들에 의해 현재 JDK 1.0.2 까지 성공적으로 포팅되어 있다. JDK를 설치하고 커널에서 자바 바이너리를 지원하도록 하면 자바 바이트코드를 알맞게 실행해준다. 커널 수준에서의 자바 지원은 리눅스 제일 처음이라고 말할 수 있다.
참고
리눅스 JDK 포팅 상황을 알 수 있는 곳은 다음과 같다. 이 글을 쓰는 현재 안타깝게도 JDK 버전은 1.0.2까지 공식 포팅되어 있는 상태이며 버전 1.1, 1.1.1은 거의 포팅에 성공한 상태라고 한다.
http://substance.blackdown.org/java-linux.html
- 개발자들 간의 협력, 토론 분위기가 조성되어 있다.
모든 일을 혼자 또는 몇몇의 작은 그룹에서 제대로 해결해낼 수 없을 때가 많다. 리눅스 분야에서는 즐겁게 프로그래밍 하는 사람들이 많으며 그들은 유즈넷 뉴스그룹에서의 개발자 토론이나 메일 토론을 즐긴다. 이는 매우 자연스럽게 형성된 분위기로서 리눅스가 GNU의 소스 공개원칙을 가장 맹렬히 따르고 있기 때문이 아닐까 생각한다. 여러분은 독점적인 개발 그룹에 돈을 내고 등록할 필요조차 없다. 오히려 여러분이 가장 어려울 때 신속하게 그리고 더 나은 정보를 알려주고자 하는 사람들이 온 세상에 있다. 이렇게 많은 인재들의 도움 속에서 여러분은 행복한 비명을 지를 수 있다.
- 기술 종속에서 벗어나 생명력이 긴 소프트웨어 개발
특히 마이크로소프트 윈도라는 독점적인 GUI 개발환경이 도래하면서부터 마이크로소프트 사와 몇몇 굵직한 회사만이 살아남고 중소개발자들은 쓰러지기 시작했다. 하루가 멀다 하고 업그레이드되고 경쟁 사와의 경쟁에 이기기 위해 방향성을 상실한 채 프로그래머들을 항상 새로운 학습 상태로만 몰아가는 상황에서 그럴 듯하게 보이는 프로그램을 만들 수 있는 곳이란 사실 운영체계, 컴파일러, 그리고 모든 소프트웨어 제품을 만들고 있는 그 회사 말고 가능하겠는가? 애초부터 공정한 경쟁은 가능하지 않았다.
여러분이 리눅스와 같은 개방 환경에서 작업하면 얼마든지 예측가능하며 여러분의 기술은 어느 누구에게도 종속되지 않는다. 따라서 독점적인 누구에 의해 여러분의 소중한 소프트웨어가 골탕먹는 일은 없다. 나중에도 언급하겠지만 상대적으로 불편하기 짝이 없는 개발 환경이긴 하지만 GUI 분야에 대한 심각한 걱정을 하지 않아도 좋을 충분한 근거들이 마련되고 있다.
여러분은 소프트웨어 외적인 요소(각종 매체에 의한 선전)에 의해 불공정한 위치에 놓이지 않으며 여러분이 노력한 만큼의 진정한 대우를 받을 수 있다. 바로 공정한 경쟁의 장이 개방 환경의 장점이다.
- 개발 도구 비용 측면의 절감 효과
리눅스 자체도 그러하거니와 리눅스 안에서의 개발 환경은 거의 비용이 들지 않는다. 비용이 든다 할 지라도 독점적 환경과는 비교가 되지 않을 정도로 저렴하다. 특히 대학, 연구소와 같은 곳에서 몇 달이 멀다 하고 업그레이드되는 개발 도구를 항상 구입해야 하는 이유를 이해할 수 없다. 가장 훌륭한 개발 도구가 리눅스에서 제공되지 않는가?
2.2. 반론 : 단점(약점)
- GUI 개발, RAD 도구가 없거나 빈약하다.
이는 전적으로 맞는 말이다. 리눅스에는 그렇게 내세울 만한 GUI 개발 도구나 RAD(Rapid Application Development) 도구가 없다. 유닉스적 표준 GUI 환경인 X 윈도가 있다고는 하지만 개인적으로 현대적인 GUI 시스템과는 상당한 거리가 있고 뛰어난 성능에도 불구하고 개선의 여지가 많다고 느낀다. 그나마 쓸만한 애플리케이션을 만들기 위해서는 상용으로만 구할 수 있는 모티프(Motif) 라이브러리를 구입해야 그럭저럭 프로그래밍을 할 수 있는 실정이다. 마이크로소프트 윈도 환경과 비교해볼 때 빈약해도 한참 빈약하다.
따라서 리눅스 쪽은 멀티미디어 관련 프로그래머에게 있어서는 전혀 어필하는 바가 없는지도 모른다. 그리고 앞으로도 상당 기간 개선의 여지가 보이질 않는다.
그렇다고 이렇게 계속 외면(?)한다면 GUI 분야는 계속 숙제로 남고 만다. 다행스러운 것은 이미 이런 분야에 대한 관심을 갖는 많은 리눅서들이 나오고 있다는 것이다.
3. 패러다임 쉬프트, 컴퓨팅 == 네트워킹
인터넷으로부터 태어나서 인터넷을 통해 전파되고 인터넷의 일부를 담당하고 있는 리눅스는 인터넷의 폭발적인 성장과 그 길을 같이 하고 있다는 생각이 든다. 오로지 혼자 쓰는 컴퓨터, 마이크로소프트 PC 환경에서 클라이언트/서버 환경으로 전환되면서 많은 비중이 서버 측으로 옮겨오고 클라이언트 측은 웹 브라우저 인터페이스로 통일되는 경향을 걷고 있는 지금, 클라이언트 비주얼한 환경을 제공하는데 여전히 한계를 지니고 있으나 서버 환경으로서는 최상의 환경을 갖춘 리눅스에게 절호의 기회라고 생각한다.
컴퓨팅 == 네트워킹이라는 패러다임 쉬프트 과정이 바로 리눅스의 성장에 커다란 배경이 되어주었으며 따라서 앞으로도 상당 기간 리눅스는 지금 현재의 성장 추세를 계속 이어나가리라 예상한다.
4. 리눅스 환경에서 개발하기 위해서
갖춰야 할 것들
리눅스에서의 기본 개발 환경은 이미 거의 모든 배포판의 설치 즉시 이뤄진다. 리눅스 환경에서 주로 사용되는 언어는 역시 압도적으로 C/C++ 언어이다.
gcc C 컴파일러
g++ C++ 컴파일러
gdb 소스 코드 레벨 디버거
gnumake GNU 버전의 make
bash GNU 셸
emacs, vi 기본 편집기
- 여러분이 갖춰야 할 기본적인 지식 : 기본 언어 C
* GNU 기본 셸인 Bash의 사용법을 알아야 한다. Bourne 셸 사용법과 같고 확장기능을 갖고 있다. 무엇보다도 기본적인 셸 스크립트 작성법을 알아야 한다. 유닉스의 기본 언어이다. 이 언어를 모르고 C 언어에 도전한다는 것은 불가능하다. 특히 파이프(pipe) 개념, 시그널 개념은 충분히 이해하고 있어야 한다.
* C 언어를 충분히 익혀야 한다. 여러분이 당장 커널 해커가 될 수는 없는 것이므로 기본적인 것을 알면 된다. 무엇보다도 실용적인 C 언어 프로그래밍을 하려면 표준 입출력, 포인터에 대한 개념은 잘 알고 있어야 한다. 프로세스 생성법, 프로세스 간의 시그널 처리, 그리고 네트워킹 애플리케이션에 있어서 소켓(socket) 개념은 숙지 대상이다. 이 모든 것을 다 끝내고 나서야 프로그래밍이 가능하다고 말하고 싶지는 않다. 실제적인 연습 없는 학습은 무료할 뿐이고 능률도 없다. 최대한 짧은 남의 소스를 보면서 공부하는 것이 최고의 학습법이라고 생각한다.
* Makefile 작성법과 간단한 gdb 디버거 사용법은 필수이다.
* vi든 이맥스든 아니면 다른 간단한 편집기 등 상관없이 자신이 잘 다룰 수 있는 편집기를 갖고 있어야 한다. 수많은 편집기 중 어떤 편집기가 가장 훌륭한 편집기인지는 체험해봐야 안다.
- 네트워크 프로그래밍을 하려는 사람들에게 필요한 사항
* 펄(Perl)과 같은 CGI 스크립팅 언어를 익힌다. 대부분의 배포판에 이미 들어있다.
* 자바도 빼놓을 수 없는 중요한 언어이다.
- GUI 프로그래밍을 하려는 사람들에게 필요한 사항
* X 윈도 프로그래밍은 관련 서적도 매우 적고(적지만 바이블과 같은 유명한 책들이 있고 그것만으로도 사실은 충분하다) 대부분 상용 라이브러리인 모티프(Motif) 사용법에 대한 설명을 다루고 있다. 재주껏 모티프를 구하든지 아니면 X 윈도에서 기본 제공하는 Athena라는 GUI 라이브러리를 사용한다. 또는 공개용으로 뛰어난 라이브러리를 사용하면 된다.
* RAD를 원한다면 요즘 들어 각광받고 있는 티클/티케이를 배운다. 아주 간단히 X 윈도 GUI 프로그래밍을 할 수 있다. 본인도 적극 추천한다. 특히 잘 짜여진 티클/티케이는 윈도 환경, 맥킨토시 환경에서까지 수정없이 작동 가능하다.
* 자바를 이용하여 GUI를 구현함이 가능하다.
주요 배포판들은 모두 펄, 티클/티케이, 자바를 패키지로 제공하므로 별도의 취득 과정이 필요없다.
5. 서버 리눅서 개발 상황
편의상 리눅스 개발은 서버 측 관련 개발과 클라이언트 측 개발로 나누었다. 이 구분은 본인의 자의적인 구분이다. 서버 리눅스 개발에 해당하는 것으로는 커널 디바이스 드라이버 작성, 인텔 이외의 타 아키텍처로의 포팅, 특히 커널 네트워킹 코드 그리고 네트워킹 데몬, 파일 시스템 코드 작성 등을 들 수 있다.
그리고 직접적으로 리눅스 커널과 관련되어 있지 않다 하더라도 웹 서버 등 다양한 네트워크 데몬의 개발도 서버 리눅스 개발의 범주에 넣고자 한다.
서버 리눅스 개발에 동참하려는 사람은 물론 보통 이상의 실력을 가지고 있어야 할 것이다. 그리고 상당한 리눅스에 대한 애정과 끈기를 가질 것을 요구한다.
실시간 멀티미디어 전송, MBONE과 같이 다중 클라이언트에게 정확한 타이밍으로 자료를 전송하고 처리할 수 있게 해주는 서버 기술에 대한 관심이 많아져야 할 것이라고 본다. 이미 정적인 자료처리는 충분히 리눅스가 두각을 나타내고 있으며 이미 구식의 기술로 변해가고 있기 때문이다.
웹 서버와 RDBMS의 연결은 매우 중요한 영역 중 하나이다. 현재 여러분이 접해볼 수 있는 데이터베이스 소프트웨어로는 mSQL, 포스트그래스, MySQL 등을 들 수 있다. CGI를 통해 웹 서버와 이들 후위 DB 엔진을 잇는 일은 매우 쉬운 일이지만 아직도 뭔가를 아는 사람만이 다룰 수 있다는 한계를 지닌다. X 윈도에서의 관리 도구 같은 것들이 필요하지 않은가 생각한다.
6. 클라이언트 리눅스 개발 상황
리눅서들이 욕심많은 사용자라는 것을 보여주는 예가 아주 많다. 전통적으로 유닉스는 매우 열악한 GUI 환경을 가지고 있다. 이러한 유닉스적 시스템 구조를 따라가면서 리눅스는 상당수가 개인 사용자인 특성을 반영하는 듯 하다. 마이크로소프트 윈도와 같은 기본적인 네트워크 비지향적인 개인 사용자적 취향과 관심인 '그래픽 인터페이스' 문제 또한 소홀히 하지 않는다.
개발자 또는 컴퓨터 전문가, 열광자만을 위한 리눅스가 아니라 시스템에 대한 충분한 지식을 갖추지 않은 일반 사용자를 위한 인터페이스 개선이 필요하다고 보고 있다.
리눅스는 유닉스가 아니다.
리눅스 == 유닉스라고 말할 수 없다고 말하고 싶다. 리눅스에 비우호적인 사람들은 리눅스를 단순히 구닥다리 유닉스의 재판이라고 말할 지 모르나 리눅스는 단지 또 다른 유닉스 하나를 만들기 위해 태어나지 않았다. 강조하지만 리눅스는 사용자 == 개발자인 리눅서들의 즐거운 노동으로 만들어진 것이며 어떤 고정된 대상이 아니다. 그것이 바로 사용자가 역동적으로 만들어가는 리눅스의 진가가 아닐런지?
현재 어떤 분야에 대한 개발이 진행중인지는 다음 사이트를 들러서 참고하기 바란다.
http://sunsite.unc.edu/linux/devel.html
리눅스의 인터페이스 개선 프로젝트
특히 리눅스 고유의 인터페이스를 건설하려는 야심찬 시도라든가 아예 X 윈도 시스템을 거부하고 새로운 GUI 시스템을 만들고자 하는 과감한 시도, 마이크로소프트 환경에 못지 않은 고속 그래픽 게임 환경을 만들고자 하는 리눅스 게임 SDK 프로젝트 등 재미있는 것을 많이 볼 수 있다.
리눅스에도 오피스 패키지가 있기를...
전세계 많은 리눅서들이 아쉬워하는 것 중 하나가 바로 공개용 오피스 패키지가 없다는 t사실이다. 지금 현재로서는 레드햇 사가 적극적으로 판촉을 올리고 있는 애플릭스웨어(ApplixWare)라는 오피스 패키지와 독일의 한 회사 만들고 있는 스타 오피스(StarOffice) 같은 것들이 있다. 우리나라의 경우에는 한컴 사에 의해 아래한글 워드프로세서가 리눅스용으로도 시판되고 있다.
사무환경에서 사용되는 워드프로세서, 스프레드시트, 프리젠테이션 도구들이 정말 아쉽게 느껴진다.
7. 한국 리눅서가 풀어나가야 할 문제
한국 리눅스의 시작은 아직도 본격적인 단계가 아니라는 생각을 갖게 한다. 이미 많은 사람들에게 알려지고 꾸준한 사용자 층을 갖고 있다고는 하지만 사용자 == 개발자라는 특유의 리눅스적 특징을 마음껏 발휘하고 있지 못한 상태이다.
- 한글화 문제
정확히 말해서 지금까지의 한글화 성과는 한국 리눅스 초창기 사용자 시절에 만들어진 것에 기반하고 있을 뿐 사용자의 양적인 확대와는 달리 한글화 성과는 상대적으로 적다. 물론 그 동안 한글화 성과가 없었다는 것은 아니다. 하지만 중요한 문제에서 아직도 선뜻 아무도 손을 대고 있지 않다는 것이다.
지금 현재까지 한글화된 소프트웨어를 살펴보자.
1. 한글 콘솔 HAN
2. 한글 X 터미널 프로그램 : 한텀
3. 한글 이맥스 : 하니맥
4. 한글 vi
5. 한글 TeX
6. 한글 고스트스크립트 프린팅 유틸리티
7. 한글 메일, 뉴스, IRC 등 네트워크 클라이언트
8. 한글화된 X 윈도 관리자들
리눅스 C 라이브러리의 로케일 지원
역시 핵심 개발자들이 1 바이트 문화권의 사용자들이기 때문에 우리나라, 중국, 일본과 같은 멀티 바이트 사용권에 대한 배려가 없다. 회사 제품들이야 판매를 위해 여러 나라 언어로 지역화시켜 놓는데 관심이 많지만 리눅스 쪽은 아직 그러하지 못하다. 분명한 사실은 C 라이브러리 로케일 구현에 있어 한국, 일본, 중국의 프로그래머들이 능동적으로 참여하지 않으면 제대로 된 로케일 지원은 저절로 다가오지 않는다는 것이다. 한국, 일본, 중국 어느 나라든 C 라이브러리 로케일 지원에 대한 노력을 하면 모두에게 도움되리란 것은 분명한 사실이다. 그렇다면 우리가 나서서 먼저 해보는 것이 어떤가?
시스템 수준에서 제대로 로케일 지원이 이뤄지면 많은 프로그램들이 수정없이 사용되거나 약간의 수정만 하면 될 것으로 보인다. 리눅스를 가장 진보된 국제화 지원 운영체계로 만들어 보는 것이 어떤가?
시급하게 요구되는 X 입력기 개발
텍스트 환경에서의 애플리케이션들은 콘솔에서는 HAN, X 윈도에서는 한텀을 통해 입력을 받고 각 애플리케이션들은 입력된 한글이 깨지지 않도록 7비트 영문 전용 프로그램들을 수정/패치하는 경우이다.
X 윈도는 터미널 환경과는 다른 또 다른 표준적인 환경을 제시하고 있다. 꼭 한국만의 문제는 아니지만 충분한 수준은 아니어도 국제화(I18N : Internationalization)을 지원하고 있어서 각 나라의 독특한 언어 입력/출력/처리를 모듈화시킬 수 있도록 하였다. 두 가지 문제가 함께 작용하여 X 입력기 개발에 대한 본격적인 노력이 제대로 이뤄지지 못하게 하고 있는 듯 하다.
1. 우선 X 윈도 측의 I18N 기능 제공은 그렇게 만족할 만한 수준이 아니다. 국제화된 애플리케이션 또한 현재로서는 없다고 봐야 한다. 언어 관련 부분이 완벽히 모듈화되어 있지 않기 때문에 기존의 모든 영문 프로그램들은 전통적인 방식을 사용하고 있다. 이 애플리케이션들은 모두 다시 씌여져야만 한다.
2. 국내에서는 한글화 기술을 공개하려 하지 않고 오로지 배타적인 기술로만 인식하고 있다. 각 회사들은 자신만의 한글화 기술을 갖고 있을 뿐이다. PC측에서는 아래한글처럼 완벽히 지역화(L10N) 방식만을 채택하거나 윈도 환경에서처럼 일관된 입력기 인터페이스를 갖는 것으로 구분할 수 있다. 일단 한텀이 지역화 방식을 사용한다. 우리에게 필요한 것은 일관적인 입력 인터페이스이다.
사실 입력 방식의 개발 착수가 그렇게 어려운 것은 아니다. 이미 문제가 주어졌고 풀 수 있는 방법은 제시되어 있기 때문이다. 바로 다음과 같은 문제를 지적하지 않으면 안된다.
좀 더 활발한 프로그래머 활동이 필요하다.
한국 리눅서의 문제라기 보다는 사회 전체적인 분위기라고 생각한다. 그 간 우리나라 소프트웨어 업계가 보여준 모습은 소수의 회사를 제외하고는 절대 다수 외국 소프트웨어에 의존하고 있다. 마이크로소프트 윈도 환경에서의 기술 종속은 사실 우리나라만의 문제는 아니라 할지라도 과연 정부나 기업, 개인이 입으로만 '미래는 정보 전쟁의 시대'라는 말은 뉴스 시간 다큐멘터리 주제로 밖에 생각하지 않는다고 느끼게 만든다.
무엇보다도 독립적인 소프트웨어 기술력을 갖춘 회사가 거의 없으며 또는 전혀 관심도 없는 듯 하다.
독립적인 기술력을 갖춘 프로그래머 없는 정보화 강국을 상상할 수 있을까?
리눅스 프로그래머 개인 또는 프로그래머 그룹의 활동은 단순히 리눅스 분야만의 발전만을 의미하지는 않는다고 본다. 한국의 리눅스 프로그래머들은 리눅서로서 세계인이기도 하지만 무엇보다도(강조할 필요는 없지만) 한국인이며 한국 소프트웨어 역량에 커다란 보탬이 된다. 그리고 감히 말하건데 리눅스 프로그래머들이야말로 가장 커다란 기여를 할 것이라 믿는다.
사실 소프트웨어의 문제는 끝이 보이지 않는다. 훌륭한 도구들은 어떤 식으로 빠르게 한글화되어야 하며 바로 한국 프로그래머들의 활발한 활동이야말로 한국에서의 리눅스 발전에 획기적인 전환점을 마련할 것이다.
좁은 시각으로 한글화 문제만이 아니라 다양한 네트워킹 애플리케이션에서부터 깊게는 커널 개발 참여에까지 폭넓은 참여가 있었으면 한다.
- 항상 미래를 꿈꾸는 리눅서가 됩시다 -
출처: http://members.tripod.lycos.co.kr/charmsal/linuxguide/sem6.htm
'STUDY > ㄴ LINUX' 카테고리의 다른 글
MMU를 직접 제어하는 COLINUX Ver 0.6.3 +Gentoo (0) | 2006.09.28 |
---|---|
리눅스 파일시스템의 이해 (0) | 2006.07.21 |
ProFTPD 서버 설치하기 (0) | 2006.04.15 |
ProFTPD 환경 설정하기 (0) | 2006.04.15 |
ProFTPD 활용하기 (0) | 2006.04.15 |