API
Application Programming Internface의 약자.
다른 프로그램이 자신의 정보나 기능을 사용할 수 있도록 그 방법을 표준화한 인터페이스를 뜻한다. 원래는 운영체제가 그 위에 돌아가는 프로그램이 운영체제의 기능과 정보에 접근하는 인터페이스를 뜻하는 용어로 주로 쓰였지만 요즈음 인터넷 서버 또는 웹사이트가 다른 프로그램이 기능이나 정보를 사용할 수 있도록 접근하는 인터페이스를 뜻하는 용어로 더 많이 쓰이는 추세다.
운영체제 API
아예 운영체제를 직접 만들 게 아니면 거의 모든 프로그램은 운영체제라는 건물 안에 세들어 사는 신세이고, 그 건물 안에서 생활하기 위해서는 현관문은 어떻게 열고, 엘리베이터는 어디에 있고, 관리비는 어떻게 내고, 등등 여러 가지 생활 정보를 알아야 한다. 이런 것들은 운영체제가 일종의 매뉴얼로 제공해야 한다. 물론 세들어 사는 프로그램의 처지에서 보면 아주 많은 부분을 운영체제가 알아서 처리해 주므로 어마어마한 수고를 덜 수 있다. 특히 컴퓨터는 여러 가지 하드웨어가 조립된 구조물의 형태고, 각 요소는 다를 수 있다. CPU도 인텔 혹은 AMD일 수 있고, 그래픽 카드는 NVIDIA, AMD, 인텔 등 여러 가지 회사가 있다. 프로그램이 이런 하드웨어를 직접 다뤄야 한다면 하드웨어에 따른 컨트롤 방법 차이를 몽땅 감안해야 하지만 운영체제가 하드웨어에 관계 없이 표준화된 API를 제공하면 프로그래머의 수고를 어마어마하게 줄일 수 있다.
실제로 MS-DOS 시절에 게임을 만들 때에는 인터럽트를 이용해서 하드웨어를 직접 컨트롤해야 했다. 그래픽 카드가 다르면 컨트롤하는 방법도 다르기 때문에 이런 걸 일일이 다 감안해야 했다. 윈도우는 그래픽 하드웨어의 종류에 관계 없는 일관된 API를 제공하는 GDI가 있었지만 속도가 너무 느려서 게임에서 쓰기 어려웠다. 이후 고속 컨트롤 API인 DirectX가 제공되면서 그래픽 처리에 관한 수고는 눈물날 정도로 줄어들었다.[1] 운영체제에서 제공하는 API는 보통 명령어 또는 함수 형태로 제공되므로 프로그램은 이들을 호출하면서 적절한 매개변수를 제공함으로써 원하는 기능을 수행하거나 정보를 주고받을 수 있다.
원격 API/웹 API
최근에는 인터넷을 통해서 정보를 주고받는 게 거의 기본이 되다 보니 네트워크를 통해 서버와 클라이언트가 정보를 주고받는 인터페이스로서 API가 대단히 중요해졌다. 이를 원격 API라고 하는데 특히 요즘은 웹을 통해서 정보를 주고받는 웹 API의 중요성이 아주아주 커졌다. 특히 모바일 쪽에서는 이거 안 쓰는 앱이 거의 없을 정도다. 당장에 우리가 많이 사용하는 날씨 앱의 경우에도 날씨 정보를 제공하는 웹 서버로부터 API를 통해 정보를 받아온다. 워낙에 많이도 활용하고, 또 웹 API를 활용하는 프로그래밍의 기본에 가깝다 보니 대부분 모바일 앱 프로그래밍 교재에는 약방의 감초처럼 들어간다. 웹 API는 최근에는 REST로 표준화되는 경향을 보이고 있다.