임베디드 C++
임베디드 C++(Embedded C++, EC++)는 임베디드 시스템용 방언인 C++ 프로그래밍 언어이다. NEC, 히타치, 후지쯔, 도시바 등 주요 일본 중앙 처리 장치(CPU) 제조업체들이 주도하는 산업 그룹에 의해 정의되었으며, 임베디드 애플리케이션을 위한 C++의 단점을 해결하고자 했다. 이 노력의 목표[1]는 C++ 언어의 가장 유용한 객체 지향 기능을 유지하면서 코드 크기를 최소화하고 실행 효율성을 극대화하며 컴파일러 구축을 단순화하는 것이다. 공식 웹사이트는 목표를 "평균 C 프로그래머가 이해하고 사용하기 쉬운 C++의 하위 집합을 임베디드 시스템 프로그래머에게 제공하는 것"이라고 명시하고 있다.[2]
C++와의 차이점
[편집]임베디드 C++는 C++의 일부 기능을 제외한다.
| 기능 | ISO/ANSI C++ | 임베디드 C++ |
|---|---|---|
| 예외 처리 | ||
| 다중 상속 | ||
mutable, 저장소 클래스 지정자
|
||
| 이름공간 | ||
| 템플릿 | ||
런타임 타입 정보 (typeid)
|
||
| 스타일 캐스트 ( static_cast, dynamic_cast, reinterpret_cast, 및 const_cast)
|
||
| 가상 기반 클래스 |
그린 힐즈(Green Hills) 및 IAR 시스템즈(IAR Systems)와 같은 일부 컴파일러는 ISO/ANSI C++의 특정 기능을 임베디드 C++에서 활성화할 수 있도록 허용한다. IAR 시스템즈는 이를 "확장 임베디드 C++"라고 부른다.[3]
컴파일
[편집]EC++ 프로그램은 모든 C++ 컴파일러로 컴파일할 수 있다. 하지만 EC++에 특화된 컴파일러는 최적화 작업을 더 쉽게 수행할 수 있다.
EC++에 특화된 컴파일러는 다음 회사에서 제공한다.
- IAR 시스템즈[4]
- 프리스케일 세미컨덕터, (1999년에 Metrowerks를 인수한 모토로라가 2004년에 분사)
- Tasking Software,[5] Altium Limited의 일부
- Green Hills Software[6]
비판
[편집]이 언어는 많은 전문 C++ 프로그래머들에게 좋지 않은 평가를 받았다. 특히 비야네 스트롭스트룹은 "내가 아는 한 EC++는 죽었다 (2004년), 만약 그렇지 않다면 그래야 한다."라고 말했다.[7] 실제로 공식 영어 EC++ 웹사이트는 2002년 이후 업데이트되지 않았다. 그럼에도 불구하고, C++의 제한된 하위 집합 (임베디드 C++ 기반)은 애플에 의해 인기 있는 매킨토시, 아이폰, 아이패드 제품의 macOS, iPadOS 및 iOS 운영 체제용 모든 I/O 키트 장치 드라이버를 생성하는 독점적인 프로그래밍 언어로 채택되었다.[8] 애플 엔지니어들은 표준 C++의 예외, 다중 상속, 템플릿 및 런타임 타입 정보 기능이 고성능, 다중 스레드 커널에서 사용하기에 불충분하거나 충분히 효율적이지 않다고 느꼈다.[9]
각주
[편집]- ↑ “EC++ Rationale”.
- ↑ EC++ Questions and Answers
- ↑ “Embedded and Extended Embedded C++”. 2013년 5월 21일에 원본 문서에서 보존된 문서. 2012년 12월 9일에 확인함.
- ↑ “IAR Systems - Compilers and debuggers”. 《IAR Systems website》.
- ↑ “Embedded C++ compiler technology”. 《Tasking website》. 2009년 1월 1일에 원본 문서에서 보존된 문서.
- ↑ “Green Hills Optimizing C/C++/EC++ Compilers”. 《Green Hills Software website》. 2008년 10월 25일에 원본 문서에서 보존된 문서.
- ↑ “What do you think of EC++?”. 《비야네 스트롭스트룹의 FAQ》.
- ↑ “What is Mac OS X?”. 《Amit Singh》. 2019년 4월 19일에 원본 문서에서 보존된 문서. 2015년 3월 4일에 확인함.
- ↑ “The libkern C++ Runtime”. 《IOKit Device Driver Design Guidelines》.
외부 링크
[편집]- 임베디드 C++ - 공식 웹사이트
- 임베디드 C++ 사양 개발의 배경 및 목표
- 임베디드 C++는 더 빠르고 작은 코드를 생성한다, John Carbone (Embedded.com), 1998년 6월 19일
- GNU로 베어메탈 ARM 시스템 구축하기: 1부 - 시작하기, Miro Samek, Quantum Leaps, 2007년 6월 26일
- C++ 성능에 대한 기술 보고서, ISO 소위원회 SC 22의 WG 21 작성