그럼 각각의 언어마다 이런 스탠다드 라이브러리를 만들어 놓은이유는 뭘까. (라이브러리가 뭔지는 다른 블로그에 설명할께)
스탠다드 라이브러리는 언어에서 자주쓰는 함수들의 모음이야. 그럼 어떤 함수가 있냐?
예를 들어서, "프린트" 함수 같은게 스탠다드 라이브러리야.
(프린트 함수가 스탠다드 라이브러리였다고? 몰랐다면? 프린트는 스탠다드라이브러리 함수중에 하나야. 그냥 알면되)
프린트 함수가 스탠다드 라이브러리에 들어있기 때문에
모든언어를 배울때 "Hello world" 프로그램이 몇줄 코딩하지 않고 나오는 거야 . 단 해줘야 할껀 해당 라이브러리를 포함해줘야지.
golang
package main
import "fmt"
func main(){
fmt.Printf("hello world")
}
c++
#include <iostream>
int main() {
std::cout << "hello world" << std::endl;
return 0;
}
(우리는 한줄로 헬로월드를 프린트 하지만,
대략생각해 보면 하는게 많을꺼 같지 않아?
1. 먼저 무엇을찍을지 문자열을 받아가지고,
2. 어느 아웃풋 경로 (이건 때론 모니터, 파일, 프린터 정하기 나름인데) 에다가 출력할지를 결정하고
3. 프로그램이 시행되면 사용자가 출력하고자 하는내용을 정해진 아웃풋경로에다가 출력해주는 역할을 하는 코드인거지
Hello world 할때 프린트 함수가 어디있는지 찾아 보면 더 좋고,
golang : https://pkg.go.dev/fmt@go1.23.0#Printf
c++ : https://en.cppreference.com/w/cpp/io/cout,...
이게 우리가 기본적으로 그냥 모든 언어 헬로 월드 할때 쓰니까 굉장히 쉬워보이겠지만.. )
이런 스탠다드 라이브러리가 각언어마다 존재하는 이유는?
당연하겠지만, 많이 사용하는기능을 개발자가 다시 개발하지 않고 안정적으로 구현된 코드를 가져다 쓰면 얼마나 효율적일까에서 시작한거야.
말에서 알수 있듯이 스탠다드 라이브러리는 그 언어 자체에서 제공해 주는거기 때문에 믿고(?) 쓸수 있다는거지~!!!!
물론 각 언어마다 지향하는 바에 따라서 제공하는기능은 조금씩 다를수 있어.
(인터넷에서 많이 쓰는 http 프로토콜의 경우 go, nodejs 같이 웹개발쪽에 많이 쓰이는 언어 같은경우는
해당 코드들이 스탠다드 라이브러리의 형태로 제공되지만,
c++ 같이 웹개발쪽에서 많이 쓰지 않는 경우는 http 프로토콜구현을
스탠다드 라이브러리로 제공되는게 아니라 같은 기능이 3rd party library:boost, cpprest등등. 으로 제공된다는거지)
그럼 여기서 질문이 있을수 있는데, 3rd party Library 혹은 패키지.. 등등은 뭔가..라는.
간단하게 말하면 페키지는, 공인되지 않은(?) 사람들이 개발한 코드이다.
하지만 목적은 스탠다드라이브러리의 취지와 같이,
다른사람들이 다시 개발하지 않고 가져다 쓸수 있게 제공해 주는 코드이다. (쓰고 잘못되면 패키지 개발자가 나몰라라.. 할수도)
어때 쉽지?
참고로 내 생각에, 소프트웨어 개발자 입장에서 어떤 언어에 익숙해 진다는것은 물론 문법도 있지만,
이런 미리 정의된 스탠다드 라이브러리를 많이 알고 있다면 (마치 영어를 하는데 모든 단어를 다 알고 있는거처럼) 문제를 해결하는데 도움이 많이 되겠지.
(물론 모른다고 문제해결을 못하진 않겠지만, 이미 다른사람이 구현해서 편하게 쓰라고 만들어놓은 기능을, 본인이 많은 시간을 들여서 다시 개발한다거나.....
개발했는데 기존에 제공되는 코드보다 성능이 못하다거나, 심한경우 동작을 안하고 버그가 많다거나....효율적이지 않은거지)
그런의미에서 디자인패턴도 많이 알고 있으면, 어떤 언어를 다루건 문제해결력이 많이 길러지기도 할꺼고.
'소프트웨어 엔지니어 > 일반' 카테고리의 다른 글
| [소프트웨어 엔지니어] 깊은 복사, 얕은 복사 (0) | 2024.09.17 |
|---|---|
| [소프트웨어 엔지니어] 프로그램 메모리 구조 (1) | 2024.09.13 |
| 소프트웨어 뭐지? (소프트웨어 엔지니어가 하는일?) (0) | 2024.08.21 |
| 소프트웨어 이해하기 어려운이유? (0) | 2024.08.21 |
| CI/CD 이건 왜? (1) | 2024.08.21 |