Tip

*개념과 기초

Mr.Martin 2010. 8. 19. 22:23
반응형

모든 일이 그렇겠지만 '기초'와 '개념'이 중요하다.
기초를 튼튼히 하지 못하면 그 위에 아무리 견고한 빌딩을 세운다고 해도 모래 위에 지은 집에 불과하다.
개념을 확실히 알면 무궁무진한 응용 능력을 발휘할 수 있다.
프로그래밍에서도 기초는 매우 중요하다.
높은 빌딩을 짓기 위해서는 기초를 확실히 다져야 하는 것처럼,
뛰어난 실력을 갖추려면 기초부터 튼튼히 하는 것이 좋다.
프로그래밍에 있어서 기초란 컴퓨터 과학에서 다루는 주제들을 말한다.
 
예를 들면 프로그래밍 언어론, 이산 수학, 알고리즘, 자료 구조, 운영 체제론과 같은 것들이 여기에 해당된다.
프로그래밍에 있어서 개념이란 어떤 것일까?
프로그래밍의 기초가 곧 개념일 수도 있지만,
내가 여기서 말하는 개념이란 기초와 응용 사이에 존재하는 무엇이다.
과학과 공학 사이에 존재하는 그 무엇과도 같은 것이다.
 
예를 들어 보자.
현업 프로그래밍에서 객체 지향적인 기술로 콤포넌트(component)21)를 제작한다고 하자.
이 때 콤포넌트를 제작하는 프로그래밍 기술은 응용에 해당한다.
그리고 객체 지향프로그래밍에 대해서 다루고 있는 소프트웨어 공학은 기초에 해당할 것이다.
 
그런데 소프트웨어 공학을 익혔다고 해서 객체 지향 프로그래밍을 바로 할 수 있는 것은 아니다.
객체 지향 프로그래밍을 하기 위해서는
소프트웨어 공학에서 구체적으로 다루지 못한 클래스, 인스턴스, 오브젝트, 메쏘드와 같은
다양한 개념들을 알아 두어야 한다.
수학에 비유하자면 기초는 수학의 원리에 해당할 것이고,
개념이란 공식이 유도되는 과정과 공식 그 자체에 해당될 것이다.
 
그리고 응용이란 그 공식을 대입하여 문제를 풀이하는 것에 해당될 것이다.
기초는 원리에, 개념은 공식에, 응용은 문제 풀이에 해당된다고 보면 된다.
이처럼 하나의 프로그래밍 과정에서 기초와 개념 그리고 응용이 모두 동원된다.
응용 실력을 높이고 싶다면 개념을 파악하여야 하고, 개념을 파악하려면 기초 지식을 가지고 있어야 한다.
높은 건축물을 짓기 위해서는 골조가 튼튼해야 한다.
아주 강력한 철골과 콘크리트로 뼈대를 튼튼히 해야 한다.
건축물의 높이가 응용 실력이라면 건축물의 뼈대는 개념이다.
그리고 그런 높은 건축물을 지탱하는 땅은 반드시 암반이어야 한다.
흙 위에 그런 건물을 지을 수는 없다.
암반이 바로 기초에 해당한다.
프로그래머의 실력을 높이려면 개념을 튼튼히 해야 하고, 개념을 튼튼히 하려면 기초를 튼튼히 하여야 한다.
 
21) 콤포넌트(component):사전적인 의미는 '부품'.
프로그램의 제작하는 모듈이나 함수와 동일한 의미이지만,
객체지향 프로그래밍에서 특히 '부품성'을 강조하기 위해 사용하는 용어.
함수나 모듈보다 더욱 정교하게 다듬어지고, 쉽게 끼워 쓸 수 있다는 뜻을 포함하고 있다.
 
22) 객체 지향프로그래밍(object oriented programming):자료와 해법이 결합된 하나의 부분 프로그램을,
부품처럼 일종의 객체로 다룰 수 있게 만들고,
이 부품들을 결합하여 하나의 단위 프로그램을 완성해 나가자는 프로그래밍 철학 또는 그 기법.

2010년 08월 19일 11시 51분 59초