Chapter 4

4.1 프로그래밍 언어 선택

구현을 시작할 때부터 끝날 때까지 언어는 많은 영향을 주기 때문에 언어 선택은 민감한 사안이다.

개발자는 친숙한 언어를 사용할 때 그렇지 않은 경우보다 생산성이 높다.
또한, 고수준 언어를 사용하는 개발자가 저수준 언어를 사용하는 개발자보다 생산성과 품질이 높다.
아래의 표는 다른 고수준 언어를 C코드로 표현할 때 상대적으로 필요한 코드의 비율이다.

언어 C에 대한 상대적인 수준
C 1
C++ 2.5
포트란 95 2
자바 2.5
6
파이썬 6
스몰토크 6
마이크로소프트 비주얼 베이직 4.5

사피어-워프 가설에 따르면
‘특정한 개념을 생각할 수 있는 능력은 그러한 개념을 표현할 수 있는 단어를 알고 있느냐에 달려 있다’고 한다.
그러한 단어를 모른다면 개념을 표현할 수 없을 뿐더러, 개념적으로 정리할 수도 없다(Whorf 1956).
개발자도 이와 유사하게 프로그래밍 언어에 의해 영향을 받는다.

4.2 프로그래밍 규약

품질이 우수한 소프트웨어는 아키텍처의 개념적 무결성과 저수준 구현 사이의 관계가 명확하다.
구현은 반드시 아키텍처와 일관성을 유지해야 하며 내부적으로도 일관성을 유지해야 한다.
성공적인 프로그래밍을 위해서 일관성 없는 변형을 최소화하여 필요한 부분에 집중할 수 있게 해야 한다.

구현을 시작하기 전에 사용할 프로그래밍 규약을 작성한다.
규약의 세부사항들은 매우 정밀히 작성되어 일단 작성 후 소프트웨어에 적용되면 고치기가 거의 불가능하다.

4.3 기술 흐름 파악

여태 그래왔듯이 앞으로도 새로운 기술이 세상을 지배할 것이며 지금의 기술은 쇠퇴할 것이다.
기술의 반복이나 기복이 있기 때문에 현재 기술적 흐름이 무엇이냐에 따라 프로그래밍 방법도 달라져야 한다.

어떻게 프로그래밍할 것인지는 기술적인 흐름에 좌우된다.
기술적으로 성숙 단계에 있다면 새로운 기능을 작성하는 데 대부분 시간을 보낼 수 있다.
기술적으로 초기 단계에 있다면 프로그래밍 언어의 문서화되어 있지 않은 기능을 알아내고 라이브러리 코드의 결함으로 생긴 오류를 디버깅하고 다른 벤더들이 만든 라이브러리를 사용하기 위해 코드를 수정하는 데 상당한 시간을 보내야 할 것이다.

데이비드 그리스가 지적했듯이 프로그래밍 도구가 프로그래밍에 대한 사고방식을 결정해서는 안된다.
언어에 의한 프로그램을 작성하는 개발자는 자신의 사고를 프로그래밍 언어가 지원하는 기능으로 제한한다. 언어 도구가 원시적이면 개발자의 생각도 원시적일 것이다.
언어를 활용한 프로그램을 개발하는 개발자는 표현하고자 하는 생각이 무엇인지를 결정한 후 특정 언어가 제공하는 툴을 이용해 그러한 생각을 어떻게 표현할 것인지 결정한다.

가장 중요한 프로그래밍 원칙 대부분은 언어가 아니라 사용 방법과 관련이 있다.
사용하는 언어에서 원하는 구성 요소를 지원하지 않아 다른 문제가 발생할 수 있다면 그러한 기능을 보충하도록 한다.
자신만의 코드 작성 규약, 표준 클래스 라이브러리, 그 밖의 사항들을 만들어 본다.

4.4 구현 실천법 선택

구현을 준비하는 단계에서는 여러 훌륭한 방법 중 어느 것을 집중적으로 사용할지 결정한다. 구현 시에 포함할 것인지 아닌지를 결정해야 하는 사항에 대한 체크리스트를 보려면 여기를 클릭.

Updated:

Leave a comment