C++Builder C++표준의 진화

2018.05.25 09:42

김원경 조회 수:1039

프로그래밍 언어인 C++은 개발자들에게 기술적으로 더 도전적이며 가장 널리 사용되는 컴파일 언어로 가장 흥미로운 언어 중 하나입니다.  '과거에 대해 더 많이 알수록 미래에 대한 대비를 더 잘할 수 있다'라는 말이 있듯, 이 글을 통해 C++역사와 오늘날 우리의 코드 체계에 대해 알 수 있을 것입니다.

 

이미 많은 분들이 C++은 C언어에서 확장되어 1979년, 비요네 스트로우스트롭(Bjorne Stroustrup)에 의해 성장했다는 사실을 알고 계실 것입니다. 지어 최초의 C++컴파일러인 Cfront 원래 'C with class'였던 것을

C 컴파일 것이라는 것도 말이죠. C 언어로 컴파일 하기에는 너무 복잡해졌기 때문에 결국 Cfront는 없어졌습니다. C++표준은 현재 C++17과 C++20에 이르기까지 세계에서 가장 빠르게 변화하고 있습니다. 하지만 사실 최초 표준이 제정되기까지(1998년) 약 20년의 시간이 걸렸다는 사실은 모르는 분들이 많을 것입니다.

 

이제, C++표준의 역사와 현재 우리 제품인 C+빌더의 특징을 간단히 살펴보겠습니다.

 

표준화

수년간 C++의 실질적인 표준은 서면 형식이 아닌 컴파일러: Cfront 형태였습니다. 컴파일하면 유효한 C++이었죠.
1985 스트로스트롭(Stroustrup)이 도서 C++ 프로그래밍 언어(The C++ Programming Langage)를 발표합니다.
오늘날까지도 고전 C++ 참고 도서로 인정받고 있는 첫번째 도서였습니다. 그리고 이를 통해 Cfront가 사실상 AT&T C++의 표준이 됩니다. 그리고 1990년 새로운 도서 The Annotated C++ Reference Manual 이 그 자리를 대체하게 됩니다.

 

언어는 언어 사양을 정의하는 개인 또는 그룹이 '소유' 하는 경우가 많습니다. 한 그룹이 컴파일러와 라이브러리를 소유하는 경우에는 개방형 규격이 필요하지 않지만, 대신에 여러 개의 구현이 있는 경우에는 경우 호환성을 위한 
공통 사양이 필수적입니다. 미래 지향적이고 겸손한 조치로, 스트로우스트롭은  언어를 국제 표준화 기구(ISO)
넘겨주었습니다.

컴파일러와 참고서는 어떻게 ISO표준으로 만들었을까요?

 

당시 1990년경에는 많은 일들이 일어난 커다란 진보의 시기였습니다.

  • 주석이 달린 C++ 참조 설명서 공개

     

  • 오늘날의 C++ 빌더의 조상인 터보 C++의 출시 및 C++ 개발에 상당한 영향을 미칠 수 있는 많은 양의
    라이브러리 추가

     

  • 같은 달에 첫 번째 ANSIC++회의 개최

     

  • 1991년 최초 ISOC++ 회의

그 이후로 5가지 표준화된 C++사양이 출시되었습니다.

 

 

1 표준: 1998년

 

번째 ISO C++표준은 1998년에 발표되었고, 오늘날에도 여전히 많은 사람들이 대학에서 배우는 기본 C++ 기초를 형성했습니다. STL 포함한 코드화된 C++ 기본적인 C++의 특징을 가지고 있습니다: RTTI. 동적_캐스트, 다양한 템플릿 기능 (이러한 기능들은 실제로 1998년 이전에 광범위하게 사용되었다는 걸 기억해주세요).

 

언어와 라이브러리 지원을 별개의 것으로 간주하는 많은 사람들은 놀랄 이야기이지만, 오늘날 C++표준의 대부분은
언어 자체뿐 아니라, 표준 라이브러리와 그와 관련된 동작들입니다.

 

2003년에는 표준이 C++ 03으로 업데이트되었습니다. (통찰력이 있는 분들이라면, 1998년에는 C++98, 2003년에는 C++03이 출시되었으며, 이 두 자리 연도 기반 이름 규칙이 오늘날까지도 지속되고 있다는 걸 눈치채셨을 것입니다. 
즉, 
이는 '17 '98보다 새로운 것을 의미합니다.) 
표준을 자세히 들여다보지 않는다면, C++98과 C++03은 거의 같아 보일 수 있습니다. 실제로 C++03이 C++98의 몇가지 이슈사항들을 해소하기는 했지만, C++ 개발자들에게 있어 가장 핵심적인 내용은 1998년에 이미 재정되었습니다.

 

거슬러 올라가기 - 표준 #3: C++11

C++03 강력한 언어였지만 동안 새로운 주요 개정없이 정체 것으로 여겨졌습니다. (물론 C++03에 사소한 변화들은 있었습니다.) 혁신은 라이브러리, 특히 표준위원회와 밀접하게 관련이 있는 Boost와 기술보고서 라이브러리를 중심으로 진행되었습니다. 2000년대 후반 많은 변화가 있었고, 마침내 2011년 8월에 이르러서야 국제표준으로 확정되면서 최종적으로 C++11로 이름이 확정되었습니다.

C++ 11 다양한 핵심 기능을 제공합니다. 중에는 lamdas(함수 객체), type inference(자동 키워드), constexpr 등이 있습니다. 현재 C++빌더 윈도우, iOS, 안드로이드에서 C++11 지원합니다.

2014년에 C++14 출시됩니다. C++14는 C++11이 업데이트된 것으로, 새로운 라이브러리와 기능이 추가됩니다. 
C++11, 즉 '현대화된 C++'은 세련된 C++14 형식으로 탈바꿈하면서 C++ 개발의 르네상스 시대를 도래합니다.
언어 기능과 새로운 표준 출시에 대한 열기는 이 버전의 C++의 성공과 위원회의 방향, 리더쉽의 입증으로 더욱 크게 번지게 됩니다. C++은 지난 몇 년간 그래왔듯 다시 빠른 진보를 하고 있다고 평가받았습니다.

 

  

표준#5: C++17

C++11과 C++14 이후 C++이 다시 관심을 받게된 이후 위원회는 언어 향상을 위해 신속하게 움직이고 있습니다.
그리고 그 결과 다음 버전이 C++17 2017년 12월 발표됩니다.

C++ 17 생성자의 템플릿 공제, 인라인 변수, 헤더 가용성 검사를 위한 전처리 지시문, 템플릿 인수에 대한 상수 평가 개선, 병렬 STL 알고리즘, 공용체 유형 (std :: variant) 기타 여러 라이브러리를 비롯한 여러 가지 새로운 변경 사항을 제공합니다 std :: string_view 포함한 향상된 기능예를들어, string_view 프로그래밍 포럼에서 가장 많이 논의 C++17 주제 하나입니다.

 

C++빌더 언어 지원과 혁신

지금 C++빌더는 어디에 와 있을까요?

C++빌더의 조상이라고 할 수 있는 터보 C++과 볼랜드 C++은 STL 개발과 최초 표준 개정 그리고 C++ 기초의 핵심이었습니다.

C++빌더는 현대식 C++11과 C++17을 지원합니다. 또한 수많은 혁신적인 C++ 확장 기능들을 제공합니다. 예를들자면, 오브젝트 매소드 포인터를 캡처하는 _closer (std::func와 std::bind의 조합보다 훨씬 더 유연함), 논리 객체, non-field-backed, 속성을 추상화하는 _property 와 같은 기능들이 있습니다. 이와같은 기능들은 메소드에 의한 지원이 가능하고, RTTI 반영 및 스트리밍에 사용될 수 있습니다. 물론 이러한 언어 기능은 선택 사항이며, 원하는 경우 순수 C++을 사용할 수 있습니다. 이러한 확장을 통해 개발자들은 가장 강력한 라이브러리를 활용할 수 있습니다. 그리고 크로스-플랫폼 UI 프레임워크인 파이어몽키(FireMonkey)를 활용해 정말 멋진 앱을 만들어낼 수도 있죠. 크로스-플랫폼 데이터베이스 기술을 제공하는 파이어댁(FireDac)을 이용한다면 다양한 데이터베이스를 쉽고 빠르게 연동할 수 있습니다. 또 다양한 프레임워크와 기능들을 활용해 시각적으로 멋진, 최신 IT 기술을 접목한 앱을 매우 쉽게 완성할 수 있는 많은 기능들이 제공됩니다.

 

참고 문헌

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14496
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13134
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15644
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21160
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22427
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18053
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38335
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173839
210 델파이 코드 컨버전 빠르게 완료하기 관리자 2019.11.06 595
209 DLL 폼에서 VCL 폼 스타일 적용하기 file 김원경 2019.10.28 5790
208 [고객 사례- 의료, 델파이] 의료용 소프트웨어(폐활량&심전도 체크) - Advanced Spirometer and ECG 관리자 2019.10.25 637
207 데브기어 컴포넌트 컨버터 원리와 구조 설명 험프리 2019.10.11 976
206 [10.3 리오][업데이트 2] 델파이에서 맥OS 64-bit 애플리케이션 개발이 가능합니다. 관리자 2019.07.25 440
205 델파이 코드 주석 추가 및 문서화 방안 험프리 2019.05.30 859
204 [10.3 리오] 리눅스 컴파일러에 non-ARC 메모리 모델이 적용됩니다. 험프리 2018.12.04 381
203 [10.3 리오] 델파이 언어의 새로운 변화: 인라인 변수 선언 관리자 2018.11.12 2656
202 [고객사례-게임, 델파이] 오목게임 관리자 2018.10.23 794
201 델파이로 3D 크레딧 스크롤 구현하기(소스제공) file 험프리 2018.05.09 724
200 패키지 개발방식과 DLL개발방식의 차이와 장단점 김원경 2018.05.02 2017
199 RFID 리더(한미IT RF Prisma) 연동하기 - 델파이에서 JAR 이용 [1] 험프리 2017.12.19 1510
198 수원과학대 학생이 델파이로 개발한 '축구 리그 앱' 관리자 2017.11.24 980
197 델파이로 빅데이터 데이터베이스 연동하기(Cassandra, Couchbase, MongoDB) 험프리 2017.10.30 1109
196 [따라하기] 인공지능 오목게임(7) - 오목게임 승자(5돌) 결정 지능프로그램 file 대화마을 2017.10.17 1559
195 [따라하기] 인공지능 오목게임(6) - 흑백 바둑알 놓고 위치저장 file 대화마을 2017.10.01 1050
194 [따라하기] 인공지능 오목게임(5) - 바둑알 놓기 [2] file 대화마을 2017.09.22 955
193 [REST API] 다음 Kakao > 로컬 > 주소검색 연동하기 [2] 험프리 2017.09.18 6275
192 [따라하기] 인공지능 오목게임(4) - 바둑판 그리기 [2] file 대화마을 2017.09.18 2109
191 [따라하기] 인공지능 오목게임(3) - 디자인 구성하기 file 대화마을 2017.09.14 1614