술(述)/비교

명시적 API vs 묵시적 API

쪼랩전사 2021. 6. 19. 23:01
728x90

Vulkan에 관해 공부를 시작했다. 여기에서 처음 보는 용어(Explicit API)가 등장해 이에 대해 정리한다.

명시적(explicit) API

내가 시킨 일 이외에는 하지 않는 것을 명시적 API라고 한다.

예를 들어, 술을 사 와라! 라는 명령을 내렸을 때, 정말 술만 사 오면 명시적인 API이다.

묵시적(implicit) API

API를 호출할 때마다 혹은 주기적으로, API를 지원하는 드라이버 혹은 플랫폼에서 내가 시킨 일 이외의 것들을 알아서 수행하는 것을 묵시적 API라고 한다.

예를 들어, 술을 사 와라! 라는 명령을 내렸을 때, 술뿐 아니라 간식도 알아서 사 온다면 묵시적인 API이다.

개인적인 감상

마치 Java 언어와 C 언어 같다는 생각이 든다.

메모리 관리 측면에서
C언어는 사용자가 메모리를 할당해주고, 사용자가 할당한 메모리들에 대해 메모리 해제를 해주어야 한다. 사용자가 메모리 해제를 하지 않으면, 프로그램이 종료될 때까지 할당한 메모리는 잔류하게 된다.
Java는 사용자가 메모리 할당까지는 해주지만, 그것에 대한 메모리 해제는 JVM에서 알아서 해준다. JVM은 할당된 메모리를 알아서 해제해주기 위해 GC라는 것을 수행한다. 그러므로, 내가 개발한 응용프로그램이 예상치 못하게 잠깐 멈추기도 한다.

 

위에 예제에서 묵시적 API는 술을 사 오라 하면, 간식도 사 온다고 말했는데, 이게 좋다고만 볼 수가 없다.
생각해보라.
참이슬 사 오라고 내 카드를 들려 보냈는데, 간식으로 회를 사 왔다고 해보자.
말도 없이...
심장에 무리가 올지도 모른다.


뭔가 Vulkan이라는 C언어를 배우려는 건가 싶어서 잘못됬다는 생각이 들긴 하는데, 일단 발을 걸쳤으니 전진해보자.