오늘:
2,378
어제:
3,587
전체:
3,310,393

오픈소스 이야기

조회 수 829 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 오픈소스 이야기 게시판 이용안내 3 file Kevin 2018.04.13 1817
42 ‘리눅스 아버지’처럼 성공하기 위한 11가지 조건 1 file PEACH 2018.05.15 1010
41 깃허브 러닝랩 - 혼자서 아무것도 없이 깃허브 마스터 가능합니다. 2 file PEACH 2018.05.11 1963
40 The C programming language 2nd edition 2 세벌 2018.05.11 2402
39 Contributor Covenant: 컨트리뷰터/기여자들의 행동 강령 규약 1 file PEACH 2018.05.08 1190
38 사내에서 눈치를 안 보고 오픈소스 프로젝트 하기 1 file PEACH 2018.05.07 2184
37 김용욱 - 오픈소스로 해외취업하기 1 PEACH 2018.05.02 1055
36 겁먹지 말고 오픈소스에 기여해 봅시다! 4 PEACH 2018.05.02 1436
35 다양한 오픈소스 프로젝트 랭킹을 매월 확인할 수 있는 곳이 있습니다. 4 PEACH 2018.04.24 614
34 리눅스재단에서 'LF 딥러닝재단'을 설립했습니다. 3 file PEACH 2018.04.24 638
33 오픈소스 라이선스 선정이 어렵다면 깃허브에게 직접 도움 받으세요 1 file PEACH 2018.04.23 560
32 내 리눅스가 이렇게 쉬울 리 없어! 3 PEACH 2018.04.23 657
31 오픈소스는 어떻게 대세가 되었을까? 1 PEACH 2018.04.23 390
30 최준호 - 프로그래밍의 깊은 세계로 들어가는 길 file Kevin 2018.04.22 1277
29 허준회 - 더 나은 세상을 위한 소통 file Kevin 2018.04.22 752
28 류창우 - 그냥 부담 없이 취미로 2 file Kevin 2018.04.22 681
27 이희승 - 도전과 점진적 개선, 그리고 변화에 열린 마음 1 file Kevin 2018.04.22 1279
26 김정균 - 자신을 발전시키는 소중한 공부 file Kevin 2018.04.22 617
25 허태준 - 가장 의미 있고 즐거운 개발 file Kevin 2018.04.22 2905
24 + 인가요? More 인가요? 1 세벌 2018.04.20 279
23 깃허브가 직접 깃허브에 오픈한 오픈소스 가이드 4 file PEACH 2018.04.19 362
Board Pagination Prev 1 ... 2 3 4 ... 5 Next
/ 5
CLOSE