블로그 이미지
progh2
지루한 것에서 벗어나 재미난 것 속으로 풍덩~☆

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Recent Post

Recent Comment

Archive

유닉스 철학에 대해 다룬 내용. 번역이 어색한 부분이 있지만 =_= 취지를 이해하며 그냥 넘어가자. 단순성과 필터와 개방형 파일방식 부분에 대해서는 크게 공감이 간다.



출처 - 비기닝 리눅스 프로그래밍
C로 프로그래밍하는 것은 어떤 플랫폼에서든지 많은 점에서 비슷하지만, 유닉스 개발자들은 프로그램과 시스템 개발의 특별한 관점을 가지게 된다.
유닉스 운영체제는 독특한 프로그래밍 스타일을 요구한다. 다음은 전형적인 유닉스 프로그램과 시스템에서 제공하는 몇 가지 특성이다.

단순성 : 가장 유용한 많은 유닉스 유틸리티는 매우 간단하고, 그 결과 작고 이해하기 쉽다. KISS(Keep It Small and Simple)는 배우기 좋은 기술이다. 크고 복잡한 시스템은 더 크고 복잡한 버그를 가질 수 있고, 모든 개발자들은 디버깅을 원하지 않을 것이다!

집중성 : 프로그래밍 한 가지 일을 제대로 수행하도록 만드는 것이 더 좋다. "다양한 특징"을 가지는 프로그램을 사용하거나 다루는 것은 어려울 수 있다. 한 가지 목적을 가지는 프로그램은 더 나은 알고리즘이나 인터페이스가 개발될 때 개선하기도 쉽다. 유닉스에서는 하나의 큰 프로그램을 통해 사용자의 요구에 대응하기보다는 종종 필요할 때마다 더 많은 요구에 부응하기 위해서 여러 작은 유틸리티를 함께 사용한다.

재사용이 가능한 컴포넌트 : 애플리케이션의 핵심이 라이브러리를 통해 유효하도록 만들기 바란다. 간단하지만 융통성 있는 프로그래밍 인터페이스를 가지고 체계적으로 문서화된 라이브러리는 다른 사람들이 변형판을 만들거나, 새로운 애플리케이션 분야에 해당 기술을 적용하도록 도와줄 것이다. 예를들어, 단일 데이터베이스 관리 프로그램이 아니라 재사용이 가능한 함수의 모음인 dbm 데이터베이스 라이브러리가 있다.

필터 : 많은 유닉스 애플리케이션은 필터로 사용될 수 있다. 즉, 입력을 받아들이고 출력을 생성한다. 유닉스는 색다른 방법으로 여러 프로그램을 결합하여 아주 복잡한 애플리케이션을 개발하게 해주는 특징을 제공한다. 물론, 이런 형태의 재사용은 방금 설명한 개발 방식에 의해 가능한 것이다.

개방형 파일 형식 : 매우 성공적이고 유명한 유닉스 프로그램은 평범한 ASCII 텍스트의 환경 설정파일과 데이터 파일을 사용한다. 프로그램을 개발할 떄 이런 평범한 조건이 주어진다면 아주 좋을 것이다. 이것은 사용자들이 환경 설정 항목을 변경하고 검색하기 위해 표준 도구를 사용할 수 있게 하고 데이터 파일에 대해 새로운 기능을 수행하기 위한 새 도구의 개발을 쉽게 해준다. 이것의 좋은 예는 기호의 위치에 대한 정보를 검색 프로그램에서 사용할 수 있는 일반적인 수식으로 기록하는 ctags 라는 소스 코드 상호 참조 시스템이다.

융통성 : 사용자들이 프로그램을 얼마나 정교하게 사용할 것인지를 정확히 예상하는 것은 불가능하다. 프로그램을 개발할 때에는 가능한 융통적이어야 한다. 필드나 레코드의 수에 임의의 제한을 설정하지 않기 바란다. 가능하다면, 프로그램을 네트워크와 관련시키고, 지역 컴퓨터뿐 아니라 네트워크에서도 실행할 수 있게 작성하기 바란다. 결코 사용자들이 모든 것을 잘 알고 있다고 스스로 자만심을 갖지 않기 바란다.
posted by progh2