본문으로 바로가기

UI? API?

category 기타 2018. 7. 8. 17:29

UI (User Interface) 사용자 인터페이스

 

간단히 말해, "일반 사용자가 시스템을 제어하기위한 수단" 이라고 할 수 있습니다.

 

우리는 인터넷에 접속해서 로그인을 하여 메일을 확인하기도 하고 검색창에 키워드를 입력하여 원하는 해답을 찾곤합니다.

그렇다면 우리는 어떻게  다른사람이 만들어 놓은 웹페이지를 조작하여 이용하는 걸까요?

 

우리들의 기억을 거슬러 올라가 보면 우리는 로그인 정보 입력창에 ID와 Password를 키보드를 이용해 입력한뒤 로그인 버튼을 누릅니다.

그리고 검색정보 입력창에 궁금한 것을 입력한 후 검색 이라는 버튼을 누르죠. 원하는 만큼 웹페이지를 이용했으면 종료하기 위해 x버튼을 누르기도 합니다. 이렇게 우리는 다양한 버튼을 통해 웹페이지를 조작하여 이용해왔죠.

 

인터페이스의 사전적 정의는 서로 다른 두 물체간의 공통접점. 상호작용하기 위한 수단을 일컫습니다.

컴퓨터와 사용자 간의 인터페이스는 마우스와 키보드 일것입니다.

그리고 위에서 살펴본 시스템과 사용자 사이의 상호작용을 위한 수단인 여러가지 버튼을 우리는 UI (User Interface)라고 합니다. 

 

 

 

 

API (Application Programing Interface) 응용프로그램 프로그래밍 인터페이스

 

개발자가 응용프로그램을 프로그래밍하기 위한 수단 즉, 기반시스템(플렛폼)위에서 그 기반시스템에 대한 응용프로그램(어플리케이션)을 만들기위해 플랫폼이 제공하는 도구,기능 말합니다.

 

기반시스템과 응용프로그램을 딱 이거다! 라고 정의하기는 어렵습니다. 기반시스템인가 응용프로그램인가는 계층적 관계에 따라 형성되기 때문이죠.

그래서 UI에서의 사전적 정의에 더해 이번엔 계층간의 관계를 고려하여 설명 하겠습니다.

 

우선 계층간의 관계의 접점이 되는 것을 인터페이스 라고 합니다.

예를들어 웹개발자들이 웹페이지를 만들어 웹사이트를 개발한다고 할때, 이 작업은 웹브라우저(크롬, 익스플로어,파이어폭스 등)에서 이루어 집니다.

이때 웹 브라우저는 웹페이지를 개발하기위한 기반 시스템이고, 웹페이지는 웹 브라우저에 대한 응용프로그램인 것이죠.

웹개발자는 개발시 다양한 툴을통해 웹브라우저라는 기반 시스템에서 개발을 해나갈 것입니다.

 

또한 웹브라우저개발자들이 개발을 하기위한 기반 시스템 운영체제(OS)를 개발하는 개발자가 있을 것입니다.

이때 이 웹브라우저는 웹페이지에 대해서는 기반시스템이지만 운영체제와의 관계에서는 응용프로그램이 됩니다.

웹 브라우저의 개발은 운영체제(Windows, Lonux, Mac 등)위에서 행해지기 때문에 운영체제는 웹 브라우저에 대한 기반 시스템(플랫폼), 웹 브라우저는 응용프로그램(어플리케이션)이 되는 것이죠.

 

이다음부터는 조금 애매해지는데 운영체제를 만들기위해선 프로그래밍 언어가 필요할 것이고 운영체제개발자들의 입장에서는 프로그래밍 언어가 기반 시스템이 됩니다. 또 이러한 프로그래밍 언어를 만드는 어셈블리어 언어는 c언어와 같은 프로그래밍 언어에대한 기반 시스템이 되고

어셈블리어를 만들기위한 기계여(이진수 0,1)는 어셈블리어에 대해서 기반시스템이 되는것이죠.

 

 


 

이렇듯 이 두 용어는 두 시스템 사이의 관계에 따라 형성되는 계층적인 종속의 형태로 발생합니다.

그리고 두 시스템 사이에서 좀더 하층에 있는 기반 시스템에서 상층에 있는 응용프로그램을 개발하기 위해 개발자들에게 편리한 기능을 제공하는 도구,기능을 API(Appication Programming Interface)라고 하는 것이죠.

 

따라서 각 계층과의 관계를 아는 것이 중요합니다. 위로 갈수록 많은 사람들이 분포하고 내려갈수록 보다 적은 사람이 종사하죠.

밑에있는 것은 위에있는것이 동작하기위한 일종의 인프라를 제공하는 역활입니다. 위에있는 것은 아래에 있는것을 응용해서 사용하는 일종의 어플리케이션이 되죠.

 

 

- 계층구조l(ayer structure) -

 

층과 층간에 존재하는 것이 인터페이스

1. 사용자 층과의 접점에 있으면 UI

2. 그 외 개발자 층과의 접점에 있으며 API 

3. 기반시스템이 제공하는 인터페이스를 통해  만드는것 응요 프로그램 개발

 

 

그리고 이러한 계층구조를 계속해서 타고 내려가다보면 새로운 공학을 만나게 됩니다.

 

사용자  59억명

 

소프트웨어 공학 (전산공학)      계층구조를 계속 타고 내려가서 소프트웨어의 심연으로 내려가면

 

전자공학 (cpu 메모리 등 하드웨어 생산 산업 )    전자 공학의 심연으로 내려가다보면

 

전기공학    전기공학에서 심연으로 내려가다보면

 

물리학 (전자기, 전기의 발견)

 

전산공학은

인류 문명의 집결체라고 할 수 있습니다.

 

 

 

 

*추가

 API 자체는 어디까지나 "사양(Specification)"만을 정의하기 때문에 구현(Implementation)물과 독립적이다.

 

API가 실제 기능 구현체인 라이브러리와 함께 제공되는 경우도 있으며, 이 경우를 보통 Software Development Kit(SDK)라고 한다. SDK는 보통 API, 라이브러리와 함께 프로그램을 개발하는데 필요한 여러 보조 프로그램이 같이 배포된다.

 

API 는 소스 코드 수준에서 정의되는 인터페이스다. 이와는 달리 기계어 이진 바이너리 수준에서 정의되는 이러한 인터페이스를 Application Binary Interface(ABI)라고 한다. API 자체는 구현물과 독립적인 관계에 있다.

라이브러리는 실제로 동작할 수 있는 단편화된 프로그램이라는 점에서 API와 다르다. 라이브러리 자체는 API 가 없이 존재할 수 있고, 이미 구현되어 기계어로 컴파일된 프로그램에 의해 사용될 수 있다. 이미 구현된 라이브러리와 프로그램 사이의 인터페이스 사양 또한 ABI이다. API 없이 프로그램을 실행하는데 필요한 라이브러리만 배포되는 대표적인 경우로 "Visual C++ Runtime Library", "DirectX Runtime"이 있다.

 

 

 

 

 

 

 

 

 

 

,

 

 

*출처는 나무위키, 생활코딩.

'기타' 카테고리의 다른 글

컴퓨터 언어의 흐름  (0) 2018.09.12
논리연산과 비트논리연산  (0) 2018.08.21
도움이 되는 글 링크  (0) 2018.08.20
알고리즘과 자료구조의 연관성  (1) 2018.08.20
IT공부를 할때 방법  (0) 2018.07.06