티스토리 뷰
|
제럴드 와인버그의 새 책을 계속 만나보고 싶은데 연세가 많으시다는게 참 아쉽다. 이 분의 잘 다듬어진 문장들을 읽고 있으면 과학자를 넘어 문인 또는 지성인의 글이라는 생각이 든다. 이 책을 읽으면서 내가 프로그래밍하면서 놓치고 있는 것들에 대해 잠시나마 생각해 볼 수 있었다. 프로그래밍은 결국 사람이 하는 행위이다. 아무리 개발과 관리 기술이 발달해도 일하는 사람에 대한 이해가 부족하면 좋은 프로그래머가 만든 좋은 프로그램은 기대하기 힘들것이다.
차례
1부. 인간 행위로 보는 프로그래밍
2부. 사회 할동으로 보는 프로그래밍
3부. 개인 행위로 보는 프로그래밍
4부. 프로그래밍 도구
5부. 에필로그
본문 중에서...
4부. 프로그래밍 도구
11장. 프로그래그밍 언어
한 번쯤 자신의 프로그램을 미적 대상으로 생각해 보지 않은 프로그래머는 지정한 프로그래머라고 할 수 없다. ... 눈과 마음을 더 즐겁게 해주는 프로그램이 더 올바를 가능성이 많다. 좀 더 시적으로 말하자면, "아름다움이 진리이며, 진리는 아름다움이어라."
프로그래밍 언어를 언어로 취급하는 사고방식으로 인해 인간과 기계 의사소통이 진보하지 못하고 있다. 어떤 것을 언어라고 부른다고 진짜 언어가 되는 것은 아니며, 오히려 잘못된 편견을 가지게 됨으로써 결국 엉뚱한 방향으로 연구가 진행된다. 프로그래밍 언어가 진보하려면, 성배를 찾으려는 즉, 프로그래밍을 위한 진짜 언어를 찾으려는 노력을 그만둬야 한다. 프로그래밍 언어는 절대로 인간의 언어와 같을 수 없기 때문이다. 우리가 추구해야 할 것은 프로그래밍 언어를 더 자연스럽게 만드는 일이다.
12장. 프로그래밍 언어 설계에 필요한 원칙
어떤 의미에서, 잘못하고 있는 쪽은 프로그래머가 아니라 언어다.
잘 설계된 프로그래밍 언어는 좋은 기억력과 마찬가지 방식으로 프로그래머를 도와준다. 즉, 관련된 정보를 쉽게 찾을 수 있는 곳에 담아 두는 것이다.
그렇게까지 심하게 말하고 싶지는 않지만, 그래서 PL/1에서 없어져도 프로그래머에게 미치는 악영향이 가장 적은 주요 구문 중 하나가 GO TO라는 점은 확실하다.
프로그래밍은 수학의 한 갈래가 아니고, 사람과 기계가 의사소통하는 형식이다. 그런데 이 의사소통 형식은 조금 독특해서 한쪽은 항상 적극적이고(사람) 다른 한쪽은 소극적일 때가 많다(기계). 이와 같은 소통의 일방성이 프로그래밍 언어와 관련된 문제들의 근본 원인일지도 모른다. 이론가들은 프로그래밍 언어의 대화적 성격으로 눈을 돌려야 한다. 그래야만 자신들이 연구하는 것은 기호 조작이 아니라 인간 행위임을 깨닫게 될 것이다.
13장. 그 외의 프로그래밍 도구들
프로그래머가 테스트를 소홀히 하는 것은 오류가 있으리라 진심으로 믿지도 않고, 혹시 발견될 수 있는 오류도 자신의 잘못이 아니라 생각하며, 자신이 발견하지 못한 오류는 다른 누구도 발견할 수 없다고 확신하기 때문이다. 따라서 그렇게 생각할 수 없는 환경을 만들어 주면 즉, 자신의 잘못이든 아니든 오류가 분명히 존재하고 자신이 찾아내지 못하면 다른 사람들이 곧바로 알게 되는 걸 프로그래머가 인식하면 오류를 찾아 고치는 데 좀 더 열성적인 태도를 보일 것이다.
사용한 언어가 제공하였든 프로그램 구조에 의한 효과이든, 같은 양일지라도 일관성이 높으면 테스트 결과에 대한 신뢰도가 커진다. 따라서 일관성이 뛰어난 언어와 프로그램 구조에 기반해야만 최고의 테스트 도구를 만들 수 있을 것이다.
시스템 효율성을 획기적으로 발전시킬 수 있는 돌파구는 개인별 차이의 성격과 구조 그리고 인간의 문제 해결 방식에 있다고 본다. 조직의 목적이 전산학을 잘 가르치는 것이든, 비용 대비 성능이 좋은 프로그램을 개발하는 것이든, 인간이 컴퓨터와 의사소통하면서 문제를 해결하는 방식에 대한 근본적인 이해가 있어야지만 그 목적을 효율적으로 달성할 수 있을 것이다.
언제나 완벽하게 해결될 수 있는 문제만 풀어볼 만한 가치가 있지는 않다. 사실, 우리에게 필요한 것은 정답이 아니라 그것을 찾는 과정에서 얻는 경험이다.
5부. 에필로그
이 책은 압제에 대항하는, 그리고 인간이 타인이나 자신의 무지몽매한 노예가 되는 것에 대항하려는 내 노력의 일환이다. 나는 이 책이 압제자의 세력에게 이용되지 않기를 바라지만, 결국 이용된다는 데는 의심할 여지가 없다. 그렇다면 나는 자유의 편에서 이 책이 더 쓸모 있기를 바랄 뿐이다.
- James Song
'Books_tech' 카테고리의 다른 글
협업을 위한 도구와 방법론 <성공으로 이끄는 팀개발 실천 기술> (2) (0) | 2016.01.31 |
---|---|
협업을 위한 도구와 방법론 <성공으로 이끄는 팀 개발 실천 기술> (1) (0) | 2016.01.26 |
제럴드 와인버그의 통찰력 <프로그래밍 심리학> (2/3) (0) | 2016.01.10 |
제럴드 와인버그의 통찰력 <프로그래밍 심리학> (1/3) (0) | 2016.01.05 |
다시 읽는 <Effective C++> Chapter 7 요약 (2) (0) | 2015.12.19 |
- #ndc
- 상속
- #팀개발
- #cpp
- #마이클페더스
- #레거시코드
- #제럴드와인버그
- Scott Meyers
- #클린코드
- #임백준
- #프로그래밍심리학
- #ModernCPP
- 객체 지향 설계
- #스콧마이어스
- #uwp
- #로버트마틴
- #cplusplus
- Effective C++
- #자녀교육
- #알고리즘
- #EffectiveModernCpp
- #mva
- Effective Modern C++
- #build2016
- #techdays2015
- 책
- #세미나
- #csharp
- #scottmeyers
- #코드최적화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |