최신 C ++ 구문을 사용하는 라이브러리의 두 가지 예 :
- 고유 라이브러리와 아르마딜로 라이브러리 (선형 대수)는 여러 현대 C ++ 구문을 사용합니다. 예를 들어, 두 표현식 템플릿을 사용하여 산술 표현식을 단순화하고 때로는 일부 임시를 제거 할 수 있습니다.
http://eigen.tuxfamily.org
http://arma.sourceforge.net/
http://hpac.rwth-aachen.de/teaching/sem-accg-14/Armadillo.pdf(Armadillo의 표현 템플릿에 대한 설명)
- CGAL 라이브러리 (계산 기하학)는 많은 최신 C ++ 기능을 사용합니다 (템플릿 및 전문화를 많이 사용함).
http://www.cgal.org
노트 :
현대적인 C ++ 구문은 매우 우아하고 사용하기가 매우 재미있을 수 있습니다. 강점과 약점 둘 다 : 그것들을 사용할 때, 몇 개의 템플릿 / 전문화 / 람다 레이어를 추가하여 결국 프로그램의 효과적인 코드보다 더 많은 "관리"를 얻는 유혹을 느낍니다 (즉, 당신의 프로그램은 해결책을 설명하는 것보다 문제에 대해 더 많이 이야기합니다.) 올바른 균형을 찾는 것은 매우 미묘합니다. 결론 : 다음과 같이 측정 하여 코드에서 "신호 / 잡음"비율의 진화를 추적해야합니다 .
- 프로그램에 몇 줄의 코드가 있습니까?
- 몇 개의 클래스 / 템플릿?
- 시간을 실행 ?
- 메모리 소비?
처음 두 개를 증가시키는 모든 것은 비용 으로 간주 될 수 있습니다 (프로그램을 이해하고 유지하기가 더 어려워 질 수 있기 때문에), 마지막 두 개를 감소시키는 것은 모두 이익 입니다.
예를 들어, 추상화 (가상 클래스 또는 템플릿)를 도입하면 코드를 인수 화하고 프로그램을 더 간단하게 ( gain ) 만들 수 있지만 한 번만 파생되거나 인스턴스화 되지 않으면 관련 이득이 없는 비용 이 발생합니다. 나중에 프로그램의 진화에서 이득이 올 수 있기 때문에 미묘하다. 따라서 "황금의 법칙"은 없다.
프로그래머의 안락함 또한 비용 / 이득 균형에서 고려해야 할 중요한 요소입니다. 템플릿이 너무 많으면 컴파일 시간이 크게 증가하고 오류 메시지를 구문 분석하기가 어려워집니다.
참조
C ++ 템플릿을 사용하는 일반 및 메타 프로그래밍은 어느 정도까지 컴퓨팅 과학에 유용합니까?