C++개발자를 위한 최고의 라이브러리 12선
C++는 범용 시스템 프로그래밍 언어로, 1979년에 설계돼 지금까지 40년 이상 사용되고 있다. 오랜 역사 동안 C++에 대한 열기는 식지 않고, 언제나 프로그래밍 언어 인기 순위에서 최상위권을 유지하고 있다. C++ 생태계는 IDE, 편집기, 컴파일러, 테스트 프레임워크, 코드 품질 등을 지원하는 업체가 광범위하게 있다는 장점이 있다. 여기에 C++ 애플리케이션 구축에 도움이 되는 뛰어난 라이브러리도 많다. 아래 내용을 통해 C++ 개발자가 선호하는 12가지 라이브러리 정보를 확인해보자.
액티브 템플릿 라이브러리
액티브 템플릿 라이브러리(Active Template Library, ATL)는 COM(공통 객체 모델) 객체를 구축하기 위한 C++ 클래스 모음이며, 마이크로소프트가 개발했다. 듀얼 인터페이스, 표준 COM 열거자 인터페이스, 연결 포인트, 액티브X 컨트롤과 같은 COM 기능을 ATL에서 지원한다. ATL은 비주얼 스튜디오 IDE에서 바로 제공되며, 싱글 스레드 객체, 아파트먼트 모델(apartment model) 객체, 자유 스레드(free-threaded) 모델 객체 또는 자유 스레드와 아파트먼트 모델 객체 두 가지 모두를 구축하는 데 사용할 수 있다.
아시오 C++ 라이브러리
아시오(Asio) C++ 라이브러리는 네트워크 및 로우레벨 I/O 프로그래밍에 사용되며 일관적인 비동기 모델을 지원한다. 동시성, C++ 네트워킹 및 기타 유형의 I/O를 위한 기본적인 구성요소를 제공하며 스마트폰 앱과 게임부터 상호작용이 많은 웹사이트 및 실시간 거래 시스템에 이르기까지 다양한 분야에서 활용된다. 아시오를 사용하는 프로젝트로는 웹소켓PP(WebSocketPP) 라이브러리와 루아(Lua) 언어를 위한 DDT3 원격 디버거가 있다. 아시오는 부스트 소프트웨어 라이선스에 따라 무료 오픈소스로 제공되며 리눅스, 윈도우, 맥OS, 프리BSD에서 지원된다.
부스트
부스트(Boost)는 피어 리뷰를 거친, 이식 가능한 무료 C++ 라이브러리를 제공한다. boost.org에서 받을 수 있으며 C++ 표준 라이브러리와 함께 사용할 수 있다. 부스트 라이브러리는 JSON, 수학, 다중 인덱스, 파일 시스템, 기하학을 비롯한 다양한 응용 분야에 사용할 수 있도록 설계됐다. 리눅스, 유닉스, 윈도우를 포함한 대부분의 현대 운영체제에서 실행된다. 데비안, 페도라, 넷BSD와 같은 리눅스 및 유닉스 배포판에는 부스트 패키지가 기본 내장된다.
신더
신더(Cinder)는 C++를 사용한 ‘창의적 코딩’을 위한 오픈소스 라이브러리다. 오디오, 계산기하학, 그래픽, 비디오와 같은 분야에 유용하며 플랫폼 네이티브 윈도잉과 이벤트 처리, I/O 추상화를 지원하고 XML과 JSON 파싱을 위한 API를 내장했다. shared_ptr과 같은 관용구적 C++ 11 기능을 중심으로 설계됐으며 많은 샘플이 함께 제공된다. 신더는 맥OS, iOS, 리눅스, 윈도우, 윈도우 UWP를 지원한다.
아이겐
아이겐(Eigen)은 행렬, 벡터, 수치 계산 솔버 및 관련 알고리즘을 포함한 선형 대수를 위한 C++ 템플릿 라이브러리다. 작은 행렬과 고정 행렬부터 큰 조밀 행렬까지 모든 행렬 크기가 지원된다. 알고리즘은 안정성을 기준으로 선택되며, 모든 표준 수치 유형이 지원된다. 속도를 위해 똑똑하게 임시 변수를 제거하고 지연 연산을 활성화하는 표현식 템플릿을 제공한다. 라이선스는 모질라 퍼블릭 라이선스 2가 적용됐으며, 아이겐 프로젝트 페이지에서 무료로 다운로드할 수 있다. 아이겐에 포함된 API는 사용자 사이에서 표현력이 우수하고 깔끔하며 C++ 프로그래머에게 자연스럽게 느껴진다는 평가를 받는다. 안정성을 보장하기 위해 많은 컴파일러를 대상으로 테스트를 거쳤다.
플로트X
플로트X(FloatX, Float eXtended)는 저정밀 부동소수점 형식 에뮬레이션을 위한 헤더 라이브러리다. C++ 컴파일러와 기본적으로 호환되지만 파이썬, 포트란과 같은 다른 언어에서도 플로트X를 호출할 수 있다. 부동소수점 형식은 기본 단정밀도와 배정밀도 형식 이상으로 확장된다. 사용자가 부동소수점 수의 지수와 부호 부분에 사용할 수를 선택할 수 있는 템플릿 형식이 제공된다. 플로트X는 축소된 정밀도 형식의 에뮬레이션을 위한 플렉스플로트(FlexFloat) 라이브러리의 개념을 기반으로 하지만 C의 플렉스플로트 기능의 확대집합을 구현해 C++ 래퍼를 제공한다. 플로트X는 오픈 트랜스프리시전 컴퓨팅(Open Transprecision Computing) 이니셔티브에서 만들어졌으며 아파치 라이선스 2.0에 따라 무료로 제공된다.
오픈CV
오픈CV(OpenCV, Open Source Computer Vision Library)는 C++로 작성되어 아파치 2 라이선스로 제공되는 컴퓨터 비전 및 머신 러닝 라이브러리다. 컴퓨터 비전 애플리케이션을 위한 공통 인프라를 제공하고 상용 제품에서 기계 인식의 사용을 가속화하기 위한 목적으로 만들어졌다. 얼굴 인식, 사물 탐지, 사물 분류, 3D 모델 추출, 이미지 검색 등 많은 기능을 위한 2,500개 이상의 최적화된 알고리즘을 제공하며 4만 7,000명 이상의 사용자로 구성된 커뮤니티도 있다. 오픈CV 프로젝트 웹사이트에서 받을 수 있으며 C++, 자바, 파이썬, 매트랩 인터페이스를 제공하고 윈도우와 리눅스, 안드로이드, 맥OS를 지원한다. 쿠다(CUDA)와 오픈CL 인터페이스는 현재 개발 중이다.
포코 C++ 라이브러리
포코(Poco: Portable Components) C++ 라이브러리는 C++ 개발을 간소화하기 위한 목적으로 만들어졌다. 크로스 플랫폼 C++ 라이브러리이기 때문에 데스크톱과 서버, 모바일 및 IoT 디바이스에 이르기까지 다양한 시스템에서 실행되는 인터넷 및 네트워크 애플리케이션을 구축할 때 쓰기 유용하다. 머신 러닝이나 데이터 분석을 위해 REST API를 사용해 마이크로서비스를 구축하는 데도 사용된다. 포코 라이브러리의 개념은 자바 클래스 라이브러리, 마이크로소프트 닷넷 프레임워크, 애플 코코아와 비슷하다.
개발자는 포코 라이브러리를 사용해서 C++로 SQL 데이터베이스, 레디스(Redis) 또는 몽고DB와 통신하는 애플리케이션 서버를 구축하거나 클라우드 백엔드와 통신하는 IoT 디바이스용 소프트웨어를 제작할 수 있다. 라이브러리의 기능으로는 캐시 프레임워크, HTML 양식 처리, 파일 전송을 위한 FTP 클라이언트, HTTP 서버 및 클라이언트가 있다. 포코 라이브러리는 부스트 소프트웨어 라이선스에 따라 무료로 제공되며 깃허브에서 다운로드할 수 있다.
벨록스
벨록스(Velox)는 OLAP 시스템을 위한 임베딩 가능한 벡터화된 실행 라이브러리다. 데이터 처리 시스템과 쿼리 엔진을 최적화하기 위한 용도로 만들어졌다. 2020년 페이스북의 내부 엔지니어링 프로젝트로 시작됐고 이후 오픈 소스화됐다. 일반적인 사용 시나리오에서 벨록스는 완전히 최적화된 쿼리 계획을 입력으로 받아서 기술된 계산을 수행한다. 구성요소에는 고수준 타입 시스템, 컬럼 메모리 모듈, 함수 패키지, 네트워크 시리얼라이저가 포함된다. 깃허브의 페이스북 인큐베이터 리포지토리에서 받을 수 있다.
윈도우 템플릿 라이브러리
2004년 마이크로소프트에서 처음 만든 윈도우 템플릿 라이브러리(Windows Template Library, WTL)는 가벼운 윈도우 애플리케이션과 UI 구성요소를 구축하기 위한 오픈 소스 라이브러리다. 마이크로소프트 파운데이션 클래스(Microsoft Foundation Classes) 툴킷의 대안으로, ATL을 확장하고 컨트롤과 대화 상자, 프레임 창, GDI 객체를 위한 클래스 모음을 제공한다.
Wt
Wt는 최신 C++로 구성된 웹 GUI 라이브러리로, 개발자가 자바스크립트를 쓸 필요 없이 위젯을 사용해 대화형 웹 UI를 제작할 수 있게 해준다. 서버 측 솔루션인 Wt는 요청 처리 및 페이지 렌더링을 수행하고 기본 내장된 보안과 PDF 렌더링, 2D 및 3D 페인팅 시스템, 객체-관계 매핑 라이브러리, 차트 라이브러리, 인증 프레임워크를 제공한다. 코어 라이브러리는 오픈 소스이며 리눅스, 유닉스, 윈도우에 배포할 수 있는 하이브리드 싱글 페이지 프레임워크를 제공한다.
Wt는 소프트웨어 엔지니어링 기업인 엠웹(Emweb)에서 만들었다. HTML5 및 HTML4 브라우저, 일반 HTML 사용자 에이전트와 호환되며, 써드 파티 자바스크립트 라이브러리와 통합이 가능하다. Wt를 사용하면 푸시 버튼과 같은 일반 위젯부터 전체 블로그 위젯과 같은 특수한 위젯까지 위젯의 계층 구조로 애플리케이션이 정의된다. 브라우저에서 위젯 트리는 HTML/자바스크립트로 렌더링된다. Wt는 프로젝트 웹페이지에서 다운로드할 수 있다. 오픈 소스 약관과 상업적 사용 약관 모두 제공된다.
욕토/GL
욕토(Yocto)/GL은 물리 기반 그래픽 알고리즘을 구축하기 위한 작은 C++ 17 라이브러리 모음이다. 개발 편의성을 위해 데이터 지향 스타일로 작성되며 용이한 코드 탐색을 위해 여러 작은 라이브러리로 분할된다. 데이터는 단순한 구조로 저장되며 free 함수를 통해 또는 직접 접근할 수 있다.
욕토/GL에는 PCG 난수 발생기, 부스트 hash_combine, 공공 영역의 외부 라이브러리 또는 자체 라이선스에 포함된 라이브러리의 코드가 포함된다. 욕토/GL 개발자들은 객체 지향보다는 함수적 접근 방식, 클래스 메서드보다 free 함수를 선호한다. 함수와 데이터는 욕토 네임스페이스에 포함된 시블링(sibling) 네임스페이스에 정의된다. MIT 라이선스로 제공되며 깃허브에서 받을 수 있다. C++ 17 컴파일러가 필요하다.
출처 : https://www.itworld.co.kr/news/259936
문제가 될 시 삭제하겠습니다.
댓글 없음:
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.