지극히 주관적으로 설명하는 프로그래밍 : Function, Library...

지극히 주관적으로 설명하는 프로그래밍 : Function, Library...

최근, 용어 차이로 오해가 일어난 적이 있어서 정리해봅니다.

- 함수 : 프로그래밍에는 반복문, 연산자 등의 가장 기초적인 명령어 체계가 존재하고,

이를 이용하여 뭔가를 만들려 할 때, 반복되는 코드를 묶어놓은 것이 함수라고 합니다.

자주 사용되는 함수를 미리 만들어놓아 함수 이름과 그 함수에 맞는 형식만 맞춰준다면 내부 코드를 작성할 필요 없이 기능을 사용할수 있도록 하는 것이 효율적인 프로그래밍이라 할 수 있습니다.

잘 하면 함수만으로 다양한 프로그램을 만들수 있을 것입니다.

기능별로 잘 나누어 함수를 재활용 하는 방식을 모듈형 개발이라고 개인적으로 생각하는데, 말 그대로 함수를 조립하는 형태로 프로그래밍이 가능한 것입니다.

- 인터페이스 : 프로그래밍은 input과 output이 확실해야 합니다.

입력과 출력에 대한 양식은 함수의 골격이라 할 수 있습니다.

내부에서 기능을 구현하려고 해도, 외부에서 기능을 사용하려고 해도 이 인터페이스라는 골격이 필요합니다.

c언어와 자바와 같이 무엇이 들어오고 무엇이 나오는지를 확실히 정할수 있는 언어도 있고, 파이썬과 같이 타입을 정하지 않아도 되고, 심지어 반환값이 복수개인 경우도 존재하는데, 중요한 것은 해당 함수를 잘 사용하려면 그 내부 구현 원리는 모르더라도 인터페이스만큼은 잘 알아야 하는 것입니다.

이러한 성질에 따라서 각 프로그래밍 언어는 내부를 구현하지 않은 '인터페이스' 클래스를 제공해주는 것이 많으며, 실제 개발에서 규모 있는 프로그래밍에서는 먼저 설계단계에서 이 인터페이스를 먼저 작성하여 공개한 후, 각 부분의 로직을 개발해나가는 방향으로 하여, 협업시 큰 골격이 틀어지지 않게 하며, 뭘 만들어야하는지를 명확하게 전달 할 수 있습니다.

참고로 미리 존재하는 좋은 함수가 있지만, 내가 원하는 데이터 타입을 반환하지 않을 때도 있는데, 이때는 함수의 인터페이스 사이에 존재해서 반환값과 입력값을 조정해주는 함수를 또 만들어서 사용할 수 있습니다.

이러한 것을 '어뎁터'라고 부릅니다.

- 라이브러리 : 쉽게 말하자면 함수를 모아둔 파일, 클래스를 의미한다고 생각하면 됩니다.

주제별로 함수를 모아두어, 개발시 필요한 함수들을 한번에 불러와 사용할 수 있습니다.

참고로 C를 공부하시면 라이브러리가 조금 더 물리적으로 와닿을텐데,

코드는 하나의 파일 안에 전부 존재하는 것이 아니라는 것은 이미 알고계실겁니다.

현재 개발중인 코드를 적어놓은 파일 외에도, import(include)를 사용하여 다른곳에 미리 작성해둔 라이브러리 파일을 불러와 사용 가능한데,

뭉뚱그려 컴파일이라 부르는, 코드를 기계어로 번역하는 과정 안에, '링크'라고 하는 과정이 있습니다.

말 그대로 전처리 명령어인 include나, 컴파일러 내부 설정을 통해 이 프로그램에 사용할 다른 파일들을 연결 할 때 사용하는 것으로, 뒤에 설명드릴 OS API 등을 가져와서 사용하도록 함으로 응용 프로그램 등을 비교적 쉽게 개발이 가능합니다.

- 프레임워크 : 프레임워크는 '구조적 함수'라고 생각하면 됩니다.

웹 프로그램을 만들 때에는 어떻게 할까요?

이러한 서비스가 정립되기 이전 시대라면 아마 네트워크에서부터 화면까지... 더군다나 조금 더 고도화 된다면 보안, 운영 환경 최적화까지... 요즘은 비교적 쉽게 만든다는 웹 서비스 하나를 만드는 것도 무척이나 어려운 프로젝트가 될 것입니다.

하지만 이미 여러 사람이 해당 서비스를 만들어보고, 어떻게 만들어야

from http://wiserloner.tistory.com/1482 by ccl(A) rewrite - 2021-10-25 12:01:55