오픈 소스(Open Source) 와 라이브러리(Library)

Rex·2022년 3월 29일
1

인생 프로그래밍

목록 보기
31/33

본 글의 저작권과 원문은 https://blog.naver.com/sweetie_rex 에 있습니다.
현재의 글은 업데이트가 되지 않음을 유의해서 읽어주세요.
최신 업데이트 된 글을 읽으시려면 아래의 링크를 확인해주세요.

오픈 소스(Open Source) 와 라이브러리(Library)

방금 자료구조를 설명하면서, 자료구조는 제대로 이해하려면 그것만 따로 책 한권의 분량이 나오는 아주 중요한 영역 이라고 했는데, 이번에는 개발인생을 정말 스마트하게 살아갈 수 있도록 엄청난 꿀팁을 알려주려고 해. 이 오픈소스를 제대로 이해하고 잘 활용하는 것이야말로 현재 이 시대에 스마트한 개발자로 살아가는 가장 빠르고 현명한 방법이라고 할 수 있어.

오픈소스(Open Source) 란, 직역하면 '공개된 소스코드' 이고, 풀어서 설명하면 '누군가가 만들어놓은 프로그램의 내부 소스코드를 누구나 열람할 수 있도록 공개되어 있는 것' 을 말해.

그리고 라이브러리(Library) 란, 도서관에서 책을 빌리듯 필요할때 언제든지 가져다 사용할 수 있도록 이미 완성된 코드를 말해.

우리가 자료구조 파트에서 알아봤던 List, Stack, Queue, Map, Tree 등등 모두 오픈소스 라이브러리로 이미 만들어져 있어. 그렇기 때문에 우리는 그것이 어떻게 구현되어 있는지 대략적으로만 이해할 수 있으면, 우리가 직접 그것을 만들지 않아도 이미 만들어져 있는 것을 필요한 상황에 편하게 가져다 사용할 수 있어.
쉽게말해 핵심적인 요리는 이미 다 되어있고, 나는 그걸 적절한 접시에 담아서 예쁘게 차려놓기만 하면 밥상을 완성할 수 있다는 거야.

예를들어 '암호화(Encryption)' 관련된 기능을 구현해야할 때, 라이브러리가 없었다면 '암호학(Cryptology)' 을 공부해야 했을거야. 하지만 수많은 선배 개발자들의 많은 연구와 노력이 오픈소스로 공개되어 우리는 암호학을 공부하지 않고도 암호화 알고리즘을 사용할 수 있게 되었어.
오픈소스 라이브러리는 이처럼 수많은 개발자들의 집단지성의 힘을 발휘해서 필요한 상황에 언제든지 가져다 사용할 수 있도록 공개되어 있는 코드들이야.
이전에 function 또는 Class 를 설명하면서 추상화 에 대한 이야기를 몇 번 언급했었는데, 라이브러리 들은 추상화가 매우 잘 된 케이스 라고 말할 수 있어.
그리고 잘 만들어진 라이브러리는 응집도가 매우 높고, 결합도가 매우 낮은 코드 이기도 하지.

오픈소스 라이브러리패키지 라고도 하고, 외부 모듈 이라고도 해.
그리고 각 언어별로 패키지 관리자가 있어.

Python 의 패키지 관리자

JavaScript(NodeJS) 의 패키지 관리자

Java 의 패키지 관리자

패키지 관리자의 사용법을 굳이 지금 설명하기 보다는, 다음 장부터 진행되는 각 언어별 응용 프로젝트를 실제로 구현해보면서 알아가 보도록 할게.

오픈소스 라이브러리(패키지, 외부 모듈)의 사용에 대하여

프로그램을 내가 직접 만들면 그건 내꺼잖아? 근데 그게 과연 완벽할까? 더 개선할 수는 없을까? 집단지성을 활용하면 더 효율적으로, 더 빠르게, 더 똑똑하게, 더 완벽에 가깝게 만들 수 있겠지?
'내꺼(내가 만든 무언가)' 를 제3자에게 공유함으로서 아이디어를 모으고, '내꺼' 의 강점을 살리면서 약점을 보완하면 더욱 더 완벽한 프로그램이 될 수 있어.
그래서 현대의 프로그램 개발은 오픈소스 라이브러리를 아주 적극적으로 사용하고 있지.

오픈소스 라이브러리는 불법다운로드나 치트키가 아니야. 오픈소스는 지식을 공유하며, 세상에 긍정적인 에너지를 널리 퍼뜨리고, 함께 발전하려는 개발자들의 선량한 마음이 담겨있는 하나의 '철학' 이라고 볼 수 있어.

개발자의 삶을 살게 된다면, 사실 본인의 노력은 5~10% 에 불과하고, 90~95% 는 타인의 도움을 받아서 성장한다고 생각하면 될거야. 그래서 성장한 개발자라면 그 은혜를 갚아야 한다고 생각해. 수 많은 선배 개발자들이 나를 무상으로 도와준 만큼, 언제나 세상에 이로운 개발자가 되려는 마음을 갖도록 하자!

우리는 이제부터 지금까지 배운 내용들로 응용 프로젝트를 하나하나 진행하면서 Python, JavaScript, Java 와 관련된 다양한 오픈소스와 라이브러리를 활용해서 매우 스마트하고 쉬운 개발을 경험해볼거야.

profile
🔥 from Abstraction to Realization

0개의 댓글