이제부터 시작할 포스팅은 다른 사람을 가르치기 위한 포스트가 아니다.
이번 기회로 내가 이 블로그에서 C 라는 프로그래밍 언어에 대한 개념과 사용능력을 검증받기 위한 것이다. 잘못된 부분이 없다면 정말 좋지만, 혹시나 잘못된 부분이 있을 가능성이 없는건 아니다. 0퍼센트가 아닌 이상 가능성은 남아 있는 거니까.
그래도 혹시 내 글을 보고 프로그래밍 공부를 하려는 사람들이 있을 것 같기에, C를 공부하기 전에 알아두면 좋은 것을 말해두겠다.
프로그래밍 언어는 무엇인가?
다른거 없다. "컴퓨터에게 어떠한 일을 시키기 위한 문법 체계" 정도랄까. 그런데 이 문법체계가 한두가지가 있는 게 아니다. 초절정의 매니악함을 자랑하는 어셈블리어부터, 프로그래밍 입문자라면 워밍업 코스 0순위인 베이직, 웹과 함께 뜨고 있는 JAVA 등 여러가지가 있다.
당신은 그런 언어들 중 C라는 언어를 배울 것이다.
프로그래밍도 하는 방식이 있다.
컴퓨터는 아무것도 할 줄 모른다. CPU 성능이 아무리 높아져봤자, 저장 장치의 용량이 아무리 커져봤자, 우리가 프로그래밍을 통해 할 일을 규정해주지 않으면 아무것도 하지 않는다.
결국 컴퓨터가 해야 할 일을 컴퓨터가 이해할 수 있게 하는 것이 프로그래밍의 핵심이다. 그런데, 컴퓨터를 이해시키는데 쓰는 방법이 두가지가 있다. 이름하야 절차지향 프로그래밍과, 객체지향 프로그래밍이다.
절차지향이란 것은 절차(순서)를 중요하게 생각한다는 것이다. 우리가 일상생활에서 일련의 계획을 세운다면 이렇게 하지 않는가.
예를 들어 A, B, C 라는 일이 있다면,
"A를 한 다음에 B를 하고, 그다음에 C까지 일을 하면 모든 일이 끝난다."
이런 식으로 말이다. 이게 바로 절차지향이라 보면 된다. 절차(순서)대로 일을 처리하게 만든다. 이것이 절차지향 프로그래밍의 핵심이다. C는 절차지향 프로그래밍을 권장한다.
객체지향이란 것은 순서가 아닌, 개체(object)가 중요시된다. 이 글을 쓰는 나도 잘 이해가 되지 않는 방식이다. 그래서 본인이 원작자께 실례를 감수하고 이 글을 퍼 왔다.
객체지향 프로그래밍의 가장 근본이 되는 개념은 주어진 문제나 사물을 이해하고 관찰하는 시각에 있다.
즉, 문제 영역 안에 존재하는 여러 개의 사물이나 객체들을 파악하고 이들이 서로 정보를 주고 받는다고 보는 시각이다.
이는 프로그래밍을 떠나, 사람들이 일상생활에서 어떤 문제에 대해 생각하고 이해하며 관찰하는 일반적인 방법과 동일하다.
대학교의 인사관리 소프트웨어의 예를 들어 보자. 우선 보통 사람들의 일차적인 고찰은 인사관리의 대상이 되는 사람들,
즉 교수, 교직원 및 학생들이 될 것이다. 이런 고찰 과정은 바로 객체 지향식 개발 방법의 첫 단계이다.
즉, 인사관리 문제 영역 안 에 있는 대상이나 객체들이 무엇인가를 고찰하고 그들의 역할과 상호관계를 규명하는 일인데,
이는 사람들의 일반적인 사고방식이며 객체지향 프로그램 개발에 가장 근본이 되는 정보들이 된다.
이러한 방법을 실세계 중심의 개발 방법이라고 한다.
[출처] 2. 객체지향 프로그래밍 핵심개념(1)|작성자 롬비
흠... 종교적인 개념으로 들어가자면 불교의 주요이론 중 하나인 상호유기론과 비슷하다고 볼 수 있는데, 나중에 C++ 프로그래밍도 연재를 한다면 그때 다시 설명을 하도록 하겠다.
C로 프로그래밍을 해야 하는데, 프로그래밍 도구(Tool)는 뭘로 쓰는것이 좋은가?
무엇을 쓰든 개인의 자유이다. 지금 당신에게 필요한 건 프로그래밍 언어에 대한 개념과 사용능력이지, 도구가 아니다.
굳이 추천하기를 바란다면 윈도 환경에선 마이크로소프트사의 Visual C++이나 Turbo C++ 를 추천한다. 하지만 이 도구들은 모두 상업용 도구이므로 이것을 정식구매 할 정도의 경제적 능력이 되지 않는다면 Dev C++을 권장한다. (프리웨어임에도 상용 프로그램 못지않다.)
