훌륭한 기술자로 만드는 것은 이런 도구의 사용이다.
멋진 코드를 다듬어내기 위해서는 숙련된 기술자, 훌륭한 툴, 코드를 다듬는 방법의 마스터가 필요
프로그래밍은 정말로 툴이 없으면 안 되는 분야
그럼 eclipse는 무슨 IDE로 만들었을까?
소프트웨어 툴이란?
프로그램을 빌드하는 프로그램
복잡성
아주 특정한 작업을 수행하는 것부터 전체 프로젝트에 관련된 것까지
사용 빈도
계속 사용되고, 필요할 때 엄청난 가치가 있다
인터페이스
예쁜 GUI 혹은 명령행 인터페이스
통합
그래픽 통합 개발 환경
비용
무상에서 유상까지
품질
왜 툴 걱정을 해야 하지?
툴은 우리가 일을 할 수 있게 만들어줄 뿐이다.
적절한 일에 적절한 툴을 적용할 줄 아는 것도 능숙한 프로그래머가 되기 위한 조건 중 하나
생활을 편하게 만들 경우에만 툴을 사용하자
파워 툴
주변에 어떤 툴들이 있는지 잘 알아두는 것이 중요하다
새로운 툴을 구했으면 그것을 시험해 보고 배우는 데 시간을 들일 각오를 하자
툴로 무엇을 할 수 있는지 알아둬라
어떻게 조종하는지 배워라
각 툴의 능력을 이용하는 방법과 상호 작용하는 방법을 알게 되면, 한 단계 더 높은 방식으로 툴을 사용 할 수 있다
어떤 일에 좋은지 알아둬라
sed(stream editor), yacc(파서 생성기) 알아두기
제대로 작동하는지 체크하라
라이브러리는 버그를 숨기고 있다. 머리카락을 쥐어뜯기 전에 눈에 잘 띄는 고장의 체크 방법부터 배워라
더 많은 툴을 찾을 분명한 루트를 확보하라
새로운 버전이 언제 나오는지 알아내라
당신의 툴이 버전에 뒤떨어지지 않게 하고, 업그레이드는 신중하게 하자
어느 툴을 선택할까?
소스 편집 툴
소스 코드 에디터: 코드 에디터의 선택은 극히 중요하다
소스 조작 툴: 유닉스 철학의 특징은 작은 명령행 툴들을 모아서 하나의 커다란 툴 모음을 만드는 것
diff, sed, awk, grep, find/locate, sort, paste, join, cut
소스 내비게이션 툴
리비전 컨트롤
소스 코드 생성
소스 뷰티파이어: 소스 코드를 동질적인 포맷으로 만들고, 공통분모에 해당하는 균질적인 레이아웃을 만드는 툴
코드 구축 툴
컴파일러
링커: 컴파일러가 생성하는 모든 중간 오브젝트 파일들을 가져다가 하나로 붙여서 실행 가능한 코드 덩어리로 만듦
빌드 환경: 빌드 작업의 간소화를 위해서 autoconf와 automake 툴 사용
테스트 툴체인: 코드 구축 툴이라는 사실! 디버깅 툴이 아니다. 신뢰할 수 있는 코드를 구출하기 위해서는 코드를 작성하면서 테스트 하는 것이 유일한 방법이다.
디버깅 및 조사용 툴
디버거: 개발을 하다가 프로그램이 의외의 동작을 할 때 그것을 추적하는 시간을 절약해 준다.
프로파일로: 작동 중인 코드 구간의 실행 시간을 재고, 보틀넥을 식별
코드 밸리데이터
측정 툴: 코드의 품질을 통계적으로 평가한 결과를 산출
역어셈블러
결함 추적: 품질 보장을 위해서 아주 중요한 툴
언어 지원 툴
언어: 언어 자체도 툴, 대여섯 개 정도의 언어를 배워 두자
런타임과 인터프리터
컴포넌트와 라이브러리: C++ STL
그 밖의 잡다한 툴들
문서화 툴
프로젝트 관리
사용하는 툴셋을 의식적으로 평가해 보자
올바른 사용방법을 정말로 알고 있는가?
가지고 있어야 할 툴 중에서 누락된 것은 없는가?
가지고 있는 툴들을 최대한 활용하고 있는가?
'프로그래밍 > Code Craft' 카테고리의 다른 글
[2부 코드의 비밀스러운 일생] Chapter9 결함 찾기 (0) | 2017.11.10 |
---|---|
[2부 코드의 비밀스러운 일생] Chapter8 시험 보는 시간 (0) | 2017.10.29 |
[1부 코드와 마주보기] Chapter6 사람은 실수를 하기 마련 (0) | 2017.10.27 |
[1부 코드와 마주보기] Chapter5 가벼운 코멘트 (0) | 2017.10.26 |
[1부 코드와 마주보기] Chapter4 문서화 도구 (0) | 2017.09.27 |
댓글