C++ 표준 템플릿 라이브러리 튜토리얼
IT 트렌드
논문개요
스탠더드 템플릿 라이브러리(STL)는 캘리포니아 팔로 알토의 휴렛 팩커드 연구소에서 알렉산더 스테파노프와 멍 리가 개발한 C++ 프로그래밍 라이브러리다. 이 프로그램은 C++ 프로그래머가 일반적인 프로그래밍을 할 수 있도록 설계되었으며, 파라메트리라이즈 유형이라고도 불리는 템플릿의 광범위한 사용에 기초하고 있다. 본 논문은 STL 프로그래밍 패러다임에 대한 종합적이고 완전한 조사를 시도하며, C++와 객체 지향 패러다임에 대한 기본 지식을 가진 STL 신입사원에게 단계별 튜토리얼 역할을 한다.
개요
70년대 후반에 알렉산더 스테파노프는 어떤 알고리즘은 데이터 구조의 어떤 특정한 구현에 의존하지 않고 구조의 몇 가지 기본적인 의미 속성에만 의존한다는 것을 처음 관찰했다. 그러한 특성은 예를 들어 데이터 구조의 한 요소에서 다음 요소까지, 그리고 구조물의 처음부터 끝까지 요소를 통과할 수 있는 능력일 수 있다. 정렬 알고리즘의 경우 정렬할 요소가 배열, 링크된 목록 등에 저장되는 경우 반드시 필요하지 않다. 스테파노프는 여러 알고리즘을 조사하여 그 중 대부분은 특정 구현에서 추상화될 수 있으며, 이 추상화는 효율성이 상실되지 않는 방식으로 이루어질 수 있다는 것을 알아냈다. 효율성은 스테파노프가 강조하는 필수 포인트로, 그것을 다시 인스턴스화함으로써 비효율적으로 되는 알고리즘을 사용하는 사람은 아무도 없을 것이라고 확신하고 있다.
STL의 역사
지금까지 소프트웨어 개발에 큰 영향을 미치지 않았던 스테파노프의 통찰력은 미래에 새로운 프로그래밍 패러다임으로 이어질 것이다. 그래서 그 발견자의 희망이다. 1985년 스테파노프는 일반 아다 도서관을 개발하여 C++에서도 이것을 할 수 있는지 질문을 받았다. 그러나 1987년 템플릿(섹션 2.3 참조)에서는 이러한 프로그래밍 방식의 필수 기술인 C++에서 구현되지 않아 그의 작업이 지연되었다. 1988년 스테파노프는 HP 연구소로 옮겼고 1992년에는 알고리즘 프로젝트의 책임자로 임명되었다. 이 프로젝트에서 알렉산더 스테파노프와 멍 리는 효율을 잃지 않고 알고리즘을 가능한 한 일반적으로 정의할 수 있다는 것을 보여주기 위해 거대한 도서관인 스탠더드 템플릿 라이브러리(STL)를 썼다.
STL 및 ANSI/ISO C++ 초안 표준
STL의 중요성은 생성이나 존재에 기초할 뿐만 아니라, 1994년 7월 14일 ANSI/ISO C++ 표준 위원회 회의에서 STL이 표준 초안에 채택되었다. 그것은 만약 지금까지 일어나지 않았다면, 컴파일러 판매업자들은 곧 STL을 그들의 제품에 통합할 것이라는 것을 의미한다. STL의 광범위한 가용성과 일반적인 프로그래밍 아이디어는 이 새로운 프로그래밍 패러다임에게 소프트웨어 개발에 긍정적인 영향을 미칠 수 있는 기회를 준다. 따라서 프로그래머들은 낮은 수준의 알고리즘과 데이터 구조를 작성하는 대신에 코드를 더 빨리 쓰고 문제 해결책에 더 집중하면서 코드를 더 적게 쓸 수 있다.
클래스
C를 C++로 발전시킨 한 가지 이유는 프로그래머가 객체 지향 패러다임을 사용할 수 있도록 하고 장려하기 위해서였다. C++의 아버지인 Bjarne Stroustrup은 [...]에서 "C++ 클래스 개념[...]의 목적은 프로그래머에게 내장형만큼 편리하게 사용할 수 있는 새로운 유형을 만드는 도구를 제공하는 것"이라고 말한다. 클래스는 사용자 정의 유형이라고 명시되어 있다.
클래스 형태를 확인하는 법
키워드 클래스는 사용자 정의 유형의 정의를 시작한다. 키워드 private는 x_pos, y_pos, color라는 이름은 멤버 기능(클래스 정의 안에서 정의된 기능)에서만 사용할 수 있다는 것을 의미한다. 키워드 공개는 클래스의 객체에 대한 인터페이스를 구성하는 공개 섹션을 시작하는데, 즉, 이 섹션의 이름 및 멤버 기능은 객체의 사용자가 접근할 수 있다는 것을 의미한다. 특성은 비공개적이기 때문에, 클래스는 적절한 값을 얻고 설정할 수 있는 공용 멤버 기능을 가지고 있다. 이러한 멤버 기능은 인터페이스에 속한다. 클래스는 추상적인 반면 클래스의 인스턴스화는 개체로 이어져 사용 및 수정할 수 있다는 점에 유의하십시오.
'IT 트렌드' 카테고리의 다른 글
하드웨어 추상화 계층 (0) | 2019.12.08 |
---|---|
혁신을 가져올 키 포인트 : 소프트웨어 공학 (0) | 2019.12.08 |
시스템 아키텍쳐 설계 (0) | 2019.12.08 |
씨샵 프로그래밍 언어 (0) | 2019.12.08 |
Visual Studio 2019에서 SDL 검사 끄기 (0) | 2019.12.04 |