오픈소스 이야기

조회 수 753 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

오픈소스에 대한 이해를 만화로 쉽게 할 수 있는 블로그가 있어서 원작자 님의 허락을 얻고 공유합니다. 공유를 허락해주신 원작자님에게 감사 드립니다.
원작자 : https://joone.net/


IT 기술은 하루가 다르게 변화 발전해왔다. 하지만, 유닉스 만큼은 만들어진 40여년이 지났지만, 그 철학과 코드는 유닉스를 모태로 한 운영체제에 살아있다.

안드로이드에서 사용되는 리눅스 커널과 아이폰과 맥에서 사용되는 맥OS도 그 중 하나이다.

이 외에 유닉스 호환 운영체제인 미닉스도 유닉스의 설계 철학을 따라 만들어졌다. (더 자세한 가계도는 위키피디아를 참고)

“어떻게 유닉스는 지금까지도 사용되고 있을까?”

그 해답을 찾기 위해서는 유닉스 철학을 알필요가 있다. 물론, 처음 유닉스를 만들때는 거창한 철학 이런거는 없었다.  굳이 물어본다면,

“간단하고 멍청하게 하자” [1]

“아니, 농담이 아니라 진짜 철학을 설명해주세요.”

“그냥 만들었는데…”

켄 톰슨(Ken Thompson)으로 부터 유래된 유닉스 철학은 최소화되고 모듈화된 소프트웨어 개발 방식에 대한 개발 문화의 기준과 철학적 접근 방식을 말한다. 이는 유닉스 선두 개발자들이 얻은 경험을 근간으로 하고 있다[1].

“그래도 잘 모르겠네.”

공식적으로는 1978년 더글러스 맥클로이(Doug McIlroy)에 의해 문서화되었다[1].

  1. 각 프로그램이 하나의 일을 잘 할 수 있게 만들 것. 새로운 일을 하려면, 새로운 기능들을 추가하기 위해 오래된 프로그램을 복잡하게 만들지 말고 새로 만들 것.
  2. 모든 프로그램 출력이 아직 잘 알려지지 않은 프로그램이라고 할지라도 다른 프로그램에 대한 입력이 될 수 있게 할 것. 무관한 정보로 출력을 채우지 말 것. 까다롭게 새로로 구분되거나 바이너리로 된 입력 형식은 피할 것. 대화식 입력을 고집하지 말 것.
  3. 소프트웨어를, 심지어는 운영 체제일지라도 이른 시기에 수주에 걸쳐 이상적으로 시도해가며 설계하고 만들 것. 어설픈 부분을 버리고 다시 만드는 것을 주저하지 말 것.
  4. 프로그래밍 작업을 가볍게 하기 위해, 심지어 우회하는 방법으로 도구를 만들고 바로 버릴지라도 어설픈 도움 보다는 도구 사용을 선호할 것.

그리고 나중에서 피터 사루스(Peter H. Salus)가 다시 한번 요약하였다.[2]

  • 한가지를 일만 잘 하는 프로그램을 만들 것.
  • 다른 프로그램 함께 동작할 수 있는 프로그램을 만들 것.
  • 텍스트 스트림을 처리할 수 있는 프로그램을 만들 것. 왜냐면, 그것이 범용 인터페이스이기 때문이다.

이처럼, 유닉스는 마치 레고 블록 처럼 프로그램간의 입출력을 서로 연결해서 내가 원하는 기능을 쉽게 만들도록 하였다. 무엇보다도 어셈블리어가 아닌 C언어와 같은 고급 언어(high level language)로 만들어져 다른 컴퓨터로 이식이 쉬웠다.

“물론, 또 다른은 이유가 있는데, 그것은 불법복제? 이 이야기는 기회가 되는데로 나중에 이야기하기로…”

“비밀” (유닉스 소스코드가 담긴 테이프)

[1] https://ko.wikipedia.org/wiki/유닉스_철학
[2] https://en.wikipedia.org/wiki/Unix_philosophy

  • ?
    Moordev 2018.04.13 15:19
    이 철학은 bash스크립트에 고스란히 담겨있습니다.

    echo와 $로 시작되는 코드 그리고 |로 쓰이는 각종 연결들을 쓰다보면 정말 간단한 조합으로 참많은것을 한다는 생각이 들어요.

    ls | sort -random | head -10

    현재폴더에서 랜덤으로 10개의 파일을 뽑으란 명령어입니다. 총 3개의 프로그램을 쓰고있고(ls sort head)각 프로그램은 간단한 구조로 되어있습니다.

    텍스트를 입출력스트림으로 쓴다는 것이 매력적이라는 것이 이런것에서 기인합니다. 위에서 10개를 뽑았으니 저걸 또 쓸수 있어요.
  • profile
    Kevin 2018.04.13 15:59

    그렇죠. 윈도우에 환경에서는 작업시간이 많이 걸리는 일도 리눅스에서는 정말 쉽게 가능하죠.

    저도 스크립트 몇줄이면 필요한 일을 할 수 있는 리눅스를 사랑합니다. ㅎㅎ

  • ?
    krhamoni 2018.04.20 20:53

    양자 컴퓨터가 상용화 되면 유닉스도 사라지게 될까요?


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 최준호 - 프로그래밍의 깊은 세계로 들어가는 길 file Kevin 2018.04.22 1138
공지 허준회 - 더 나은 세상을 위한 소통 file Kevin 2018.04.22 669
공지 류창우 - 그냥 부담 없이 취미로 2 file Kevin 2018.04.22 558
공지 이희승 - 도전과 점진적 개선, 그리고 변화에 열린 마음 1 file Kevin 2018.04.22 1164
공지 김정균 - 자신을 발전시키는 소중한 공부 file Kevin 2018.04.22 489
공지 허태준 - 가장 의미 있고 즐거운 개발 file Kevin 2018.04.22 2588
공지 오픈소스 이야기 게시판 이용안내 3 file Kevin 2018.04.13 1632
» 유닉스 철학 - 함께 동작할 수 있는 프로그램을 만들 것 3 Kevin 2018.04.13 753
18 해커문화의 탄생 1 Kevin 2018.04.13 476
17 BSD 유닉스 6화 – 자유로의 투쟁 2 Kevin 2018.04.13 480
16 BSD 유닉스 5화 – TCP/IP 개발 1 Kevin 2018.04.13 471
15 BSD 유닉스 4화 – CSRG(Computer Systems Research Group) 결성 1 Kevin 2018.04.13 333
14 BSD 유닉스 3화 – BSD 유닉스 시작 1 Kevin 2018.04.13 431
13 BSD 유닉스 2화 – vi 에디터의 탄생 1 Kevin 2018.04.13 948
12 BSD 유닉스 1화 – UC 버클리로 간 유닉스 코드 1 Kevin 2018.04.13 509
11 라이온스 교수의 유닉스 해설서 1 Kevin 2018.04.13 425
10 리차드 스톨만과 자유소프트웨어 이야기 1 Kevin 2018.04.13 526
9 GNU Project - ‘GNU’s Not Unix 1 Kevin 2018.04.13 428
8 자유 소프트웨어 재단을 아시나요? 1 Kevin 2018.04.13 394
7 리눅스 생존 가이드 (리눅스 데스크탑 적응기) 2 file 행복한펭귄 2017.01.25 7201
6 리누스 토발즈 강연 The mind behind linux 행복한펭귄 2017.01.19 5394
5 왜 굳이 리눅스를 써야하나? 행복한펭귄 2016.08.31 5613
4 꾸준히, 자유롭게, 즐겁게 : 한국 오픈 소스 개발자들 이야기 2 행복한펭귄 2016.08.24 5415
3 리누스 토르발즈 기조연설 (리눅스 25년을 말하다) 2 행복한펭귄 2016.05.13 6919
2 깃허브, 오픈소스 소식 알리는 팟캐스트 ‘온에어’ 행복한펭귄 2016.03.23 5722
1 2015년 주목받은 신인 오픈소스 SW 11선 행복한펭귄 2016.03.23 5812
Board Pagination Prev 1 ... 2 3 4 Next
/ 4
CLOSE