'프로그래밍'에 해당하는 글 2건


행복한 프로그래밍
카테고리 컴퓨터/IT
지은이 임백준 (한빛미디어, 2003년)
상세보기


p.50 : 프로그래밍을 배운지 얼마 되지 않은 사람들은 자신이 작성한 프로그램이 일단 돌아가기만 하면 감격한다. 나도 그랬다. 처음에는 프로그램이 돌아가도록 만드는 것말고 다른 것은 생각할 여유가 없다. 자신이 작성한 프로그램이 원하는 결과를 낳는 것을 눈으로 확인하는 것만으로도 가슴이 벅차고 심장이 두근거리기 때문이다.

p..52 : 대부분의 사람들은 여기에서 멈춘다. 이 정도면 크게 나쁘지 않다고 보고 더 이상 고민하지 않는 것이다. 이러한 프로그래머가 작성하는 알고리즘은 대개 주어진 일을 처리하는 데 있어서 크게 문제를 일으키지 않는다. 가끔 버그가 발견되거나 성능에서 문제가 나타나기도 하지만, 그 때마다 필요한 수정을 가해서 프로그램을 유지해나간다..... 이런 사람들은 실력이 부족하다기보다는 집중력이 부족한 것이다. 능력이 없는 것이 아니고 열정이 부족한 것이다. 하지만 프로그래밍을 삶을 (전체는 아니더라도 최소한 일부) '목적'으로 대하는 프로그래머들은 다른 사람이 19분보다 빠른 방법이 있다고 말해주지 않아도 스스로 고민을 시작한다. 더 빠른 방법이 있는지조차 확실하지 않지만 커피를 한잔 마시면서 새벽까지 고민한다. 이유는 없다. 그러한 고민을 하는 순간이 세상에서 두 번째로 행복한 순간이기 때문에 고민을 하지 않을 수가 없을 뿐이다. 그럼 세상에서 첫번째로 행복한 순간은? 당연히 고민하던 문제를 풀어서 심장에 전류가 흐르는 듯한 쾌감을 느끼게 되는 순간이다. 말하자면 프로그래머는 그 쾌감을 잊지 못해서 끊임없이 키보드를 두드리게 되는 일종의 '쾌감 중독자'인 셈이다.모든 일이 다 그렇지만 보통의 프로그래머와 뛰어난 프로그래머는 이렇게 열정이 있는가 없는가에서 판가름난다.

p. 121 : 오늘날에도 널리 사용되고 있는 C언어는 프로그래머들이 쉽게 이해할 수 있는 고급언어 문법 구조를 가지고 있으면서도 CPU와 메모리라고 하는 비트의 세계 깊숙한 곳까지 들어갈 수 있도록 해주는 기능을 가지고 있기 때문에 엄청난 주목과 찬사를 받으면서 단숨에 70년대와 80년대를 관통하는 최고의 프로그래밍 언어로 등극했다.

p.122 : 모든 프로그래밍에서 객체 지향 언어가 절차 중심의 언어보다 더 낫다고 볼 수는 없지만 절차 중심의 언어가 해결하기 어려운 문제를 객체 지향 언어로 풀 수 있다는 점에서 본다면 그 둘의 차이는 분명히 존재한다. 절차적인 언어의 핵심은 바로 특정한 알고리즘, 혹은 절차(procedure)를 중심으로 문제를 해결해나간다는 것이다. 알고리즘이나 절차는 특정한 함수안에 보관되는데, 누군가 그 함수를 호출하면 함수 내부에 저장되어있는 알고리즘이 실행된다. 다시 말해서, 절차적인 언어의 핵심은 내가 입력을 보내면 잠시 후에 출력 결과를 되돌려 주는 함수라고 볼 수 있다.

p.127 :  훌륭한 화가가 처음에는 다른 사람의 그림을 똑같이 그리는 연습을 하고 뛰어난 바둑 기사가 처음에는 고수들이 둔 바둑의 기보를 열심히 읽어보듯이, 수준 높은 프로그래머가 되기를 꿈꾸는 사람은 실력이 뛰어난 프로그래머가 작성한 프로그램을 많이 보고 똑같이 흉내를 내 볼 필요가 있다.......아무리 실력이 뛰어난 프로그래머가 작성한 코드라고 해도 개선의 여지는 항상 남아있기 마련이다. 따라서 남의 프로그램을 분석하거나 학습할 때 자기만의 주관과 철학을 가지고 비판적인 시각으로 바라보는 자세는 대단히 중요하다.

p.144 :  이러한 실천과 실험 속에는 새로운 기술적인 내용이나 변화를 학습하는 것이 포함되어 있지만 지나치게 새로운 것만을 좇아 다니는 것은 가볍고 무망하다. 진정한 힘은 인기를 끄는 프로그래밍 언어의 문법적인 측면이나 단편적인 기교를 습득하는 데서 나오는 것이 아니라 근본적이고 고전적인 내용을 학습하는 데서 더 많이 쌓이기 때문이다.

p.212 : 내게 영향을 주었던 프로그래밍에 대한 그의 철학은 너무나 뚜렷했기 때문에 한 마디로 압축될 수 있을 정도였다. '소설처럼 읽히는 프로그램' ..... 소설처럼 읽히는 프로그램이란 '보통 수준의 프로그래머'가 읽었을 때 의미가 한 눈에 이해되는 프로그램을 의미한다..... 나는 1밀리세컨드가 실질적인 차이를 불러일으킬 수 있는 소수의 특수한 프로그래밍을 제외한 모든 프로그래밍에서 '쉽게 읽히지만 조금 느린 프로그램'이 '복잡하지만 빠른 프로그램'보다 훌륭한 프로그램이라고 믿는다...... 사실 이해하기 어렵게 작성된 프로그램의 대다수는 구현하고 있는 논리가 실제로 복잡하기 때문에 그렇게 작성되기보다는 프로그래머 자신의 역량과 철학이 부재하기 때문에 그렇게 작성되는 경우가 많다. 한번 더 얘기하자. 쉬운 프로그램이 좋은 프로그램이다.

p.242 :  소프트웨어를 설계하는 일은 그 자체로 복잡한 법칙을 가지고 있기 때문에 특정한 알고리즘을 구현할 줄 아는 프로그래밍 능력만으로는 수행하기 어렵다. 설계자는 프로그래밍 능력 이외에도 복잡하게 얽히고 설킨 소프트웨어 콤포넌트나 객체들 사이의 관련성을 전체적으로 조망할 수 있는 힘이 있어야 한다. 그리고 아무 것도 없는 백지 상테에서 출발해서 살아서 퍼덕거리는 소프트웨어 덩어리를 조각할 수 있는 창조적인 능력도 있어야 한다. 그 뿐만이 아니다. 진정한 소프트웨어 설계자는 현재의 기술적인 흐름을 정확하게 읽고 있는 것은 물론 미래의 기술이 나아가는 방향도 직관적으로 감지할 수 있어야 한다.


알라딘 중고서적에서 4천원에 구입,
이번에 책 산게 많은 데, 얇고 읽기 편한책이라 제일 먼저 다 읽었음.


WRITTEN BY
뮤네

,

요새 들어서 비슷한 작업을 다시하는 일이 많이 생기고 있다.
플레이어야 원래 자주 하던 작업이었으니 그건 제외하고, 3월달에 슬롯머신 게임 제작했던 거 리뉴얼 되서 부분적으로 변경되는 거라던지,
월드컵 축구게임 G마켓에서 했던거 이번엔 틴링에서 거의 비슷하게 진행되는 걸로 현재 일을 하고 있는 상태고, 오늘도 월드컵 퀴즈 작업했던거 3차로 이미지들 변경되는 일이 들어왔다.

사실 같은 작업을 거의 이미지만 교체하는 작업은 별로 흥이 안 나긴 한다.

그래도 다시 내가 했던 작업을 열어보면서, 새로 깨달았던 구조적 결함이 있었던 거라면 클래스 구조를 새로 짜서 다 변경해버리기도 하고,
코드가 좀 거슬리면, 맘에 안드는 코드를 변경하고 깔끔하게 다시 고치고 있다.
그렇게 까지 할 필요는 솔직히 없지만, 내가 작업한 코드는 남들이 봤을 때 부끄러워지고 싶지 않아서,그리고 또 그렇게 변경하다보면 새롭게 깨닫는 것도 많은 것 같아서 그런식으로 작업을 하고 있다.

그리고 오늘 오전에 '프로그래머를 위한 '공부론'이라는 글에도 이런 내용이 나온 것 보고,
이렇게 다시하고 다시 제대로 변경해보고 하는 작업이 굉장히 좋은 거라는 것도 알게 되었다.




어떤 작업을 하더라도 무엇인가 하나는 꼭 배울 수 있는 게 있고,그것을 얻어내는 것이 중요하다고 난 생각하고 있다.
아래에 보이는 프로그래머를 위한 공부론은 , 프로그래머가 어떤식으로 공부하면 좋은지, 무엇을 공부하면 좋은지에 대해 길고 자세하게 설명해주고 있다.

[펌]어떻게 공부할까? 프로그래머를 위한「공부론」

우리 프로그래머들은 항상 공부해야 합니다. 우리는 지식을 중요하게 여깁니다. 하지만 지식에 대한 지식, 즉 내가 그 지식을 얻은 과정이나 방법 같은 것은 소홀히 여기기 쉽습니다. 따라서 지식의 축적과 공유는 있어도 방법론의 축적과 공유는 매우 드문 편입니다. 저는 평소에 이런 생각에서 학교 후배들을 위해 제 자신의 공부 경험을 짬짬이 글로 옮겨놓았고, 이번 기회에 그 글들을 취합, 정리하게 되었습니다. 그 결실이 바로 이 글입니다.

김창준 (마이크로소프트웨어)
2002/06/02



진짜 제대로 공부하려면 정말 끝이 없는 게 맞는 것 같다.
아직 시간이 많으니까 차근차근 욕심부리지 말고 하나하나씩 공부해나가고 싶다.

'Study & Idea' 카테고리의 다른 글

공정률  (0) 2011.08.16
켄트벡의 구현패턴 _패턴  (1) 2010.10.21
읽고, 읽고, 또 읽어라  (2) 2010.08.13

WRITTEN BY
뮤네

,