http://www.winapi.co.kr 에 올려진 글을 참고하여 쓴 글이다.

내가 Win32 API를 배우는 이유?

내가 공부를 하는 것은 Win32 API이다. Win32 API란?

API란 Application Programming Interface의 약자이고 "운영체제가 응용 프로그램을 위해 제공하는 함수의 집합"이라고 정의할수 있다.

운영 체제는 하드웨어와 응용 프로그램 사이에 위치하며 응용 프로그램을 대신하여 하드웨어를 관리하고 메모리를 관리하는 시스템 소프트웨어이다. 특정 운영체제에서 실행되는 응용 프로그램은 운영체제에 종속적일 수밖에 없으며 운영체제가 규정한 바대로 하드웨어를 액세스해야 한다. 또한 윈도우즈와 같은 멀티 태스킹 운영체제의 경우 응용 프로그램간 상호작용을 할 때도 운영체제의 규정을 따라야만 한다.

그러나 현실적으로 응용 프로그램 개발자들이 이러한 운용체제의 내부 동작까지 속속들이 이해하고 있을 수는 없다. 그래서 운영체제는 가장 기본적인 동작을 할 수 있는 함수의 집합을 응용 프로그램에게 제공할 의무를 지며 응용 프로그램 개발자들은 운영체제가 제공하는 함수들을 사용할 권리와 의무를 가진다고 한다.

윈도우즈는 응용 프로그램을 위한 함수 집합을 제공하는데 이를 API라고 하며 좀 더 정확하게 표현하자면 윈도우즈 API라고 한다. API는 특정 시스템(운영체제든 하드웨어든)을 위한 함수 집합을 이르는 일반명사이며 그 중의 하나가 윈도우즈 API이나 요즘은 일반적으로 API라고 하면 윈도우즈 API를 말하는 경우가 많다. API는 운영체제의 중요한 한 부분이며 운영체제 그 자체라고도 할 수 있다.

API도 윈도우즈 버전에 따라 여러가지 종류가 있다. 16비트 운영체제인 윈도우즈 3.1에서 제공하는 API를 Win16 API라고 하는데 이름 그대로 16비트 윈도우즈를 위한 API이다. Win32 API란 본격적인 32비트 운영체제인 윈도우즈 95/98과 NT에서 제공하는 32비트 윈도우즈를 위한 API이다. Win16에 비해 Win32가 양적으로나 질적으로 더 확장되었음은 더 말할 나위도 없다. Win16과 Win32 사이에 Win32s, Win32c 등의 임시적인 API가 있었으나 지금은 사용하지 않으므로 관심을 둘 필요가 없다. Win32 API도 윈도우즈 버전에 따라 조금씩 다르다. 즉 윈95보다는 윈98의 API가 조금 더 확장되었을 것이며 현재 완벽한 Win32 API는 NT 5.0이 제공하는 것이라 할 수 있다. 만약 미래에 64비트 윈도우즈가 발표되면 그때는 Win64 API라는 용어가 사용될 것이다.

API, 왜 배워야 하냐?

1.운영체제에 접근하기 위해서
API 함수는 윈도우즈의 운영체제가 제공하는 함수들이며 운영체제가 직접 사용하는 함수들이다. 그래서 윈도우즈에 가장 가까우며 윈도우즈 그 자체를 설명해 준다. 시스템 프로그래밍이나 운영체제와 직접 통신해야하는 저수준 프로그래밍에서는 API 함수가 필수적으로 사용되어야 한다. 윈도우즈 프로그래밍을 정말로 잘 하고 싶다면 윈도우즈 그 자체를 잘 알아야 하며 그 지름길은 API 함수들을 잘 이해하는 것이다. 마치 도스 프로그래밍을 정말 잘 하고 싶으면 어셈블리를 알아야 하는 것과 비슷하다. 도스의 어셈블리 언어에 해당하는 것이 바로 API이다.

2.어차피 알아야 하므로
API를 사용하지 않는 다른 개발툴을 사용한다 하더라도 API 함수는 어차피 알아야 한다. 클래스 라이브러리는 API 함수의 기반 위에 만들어지는 것이므로 API와의 인연을 끊을래야 끊을 수 없다. API 함수를 모르고서 클래스 라이브러리를 이해한다는 것은 불가능하다. 비주얼 툴의 경우는 다소 덜하지만 고급 기법을 구사하려면 비주얼 툴 자체만의 기능으로는 불가능한 경우가 있다. 이때는 불가피하게 API 함수를 불러쓰는 수밖에 없다. 이래저래 API를 빼 놓고 고급 프로그래머가 되는 방법은 없는 셈이다.

3.자유를 얻기 위해
클래스 라이브러리나 비주얼 툴은 편리하기는 하지만 프로그래머를 일정한 틀 안에 가두어 버리는 맹점을 가지고 있다. 라이브러리나 비주얼 툴에서 제공하지 못하는 기능은 마치 불가능한 것처럼 생각되며 감히 다른 생각을 하지 못하게 한다. API 함수를 사용하면 운영체제에서 가능한 일은 무엇이든 할 수 있으며 프로그래머의 상상의 자유를 구속하지 않는다. 설사 순수한 API만을 사용하지 않고 비주얼 툴이나 클래스 라이브러리를 사용한다 해도 API를 알고 쓰는 경우와 그렇지 못한 경우의 차이점은 너무나 뚜렷하게 구분된다.


64bit인 Windows인 비스타가 나오면 Win64 API를 공부해야겠지??? Win32 API보다 방대할 것같고..

내가 API를 공부하는 이유는 우리가 쓰고 있는 OS인 윈도우즈를 쉽게 이해하고 싶어서다. 윈도우즈가 어떻게 만들어졌고 어떻게 운영되는 것인지를 API공부를 통해 알수 있기 때문이다. 그래서 요즘 API에 버닝중이다.

'생각들' 카테고리의 다른 글

종강일이 코앞이다.  (0) 2005.11.30
서평을 보고나서  (2) 2005.11.12
개인적으로 꼭 공부하고 싶은 분야라???  (2) 2005.10.26
교수가 짜증난다.  (1) 2005.10.23
귀차니즘  (0) 2005.10.22
Buy me a coffeeBuy me a coffee

+ Recent posts