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

2018.05.25 09:42

김원경 조회 수:2164

프로그래밍 언어인 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 724157
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 721941
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 723998
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 727353
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 727712
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 723513
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 735057
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 929389
1395 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 153170
1394 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 127280
1393 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 91392
1392 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 73403
1391 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 56409
1390 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 52246
1389 Find the O/S Language Type c2design 2014.07.30 49907
1388 RAD Studio Resource Center 박병일 2012.01.26 47905
1387 CD-ROM 열고 닫기 박병일 2011.12.22 45376
1386 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 39608
1385 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 34568
1384 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 30374