경고 : 이것은 "사용자가 알지 못하는"것이 그의 답변에서 연계 된 대화에 대한 비판만큼 답이 아닙니다.
그의 첫 번째 요점은 (어쩌면) "항상 변하는 표준"입니다. 실제로, 그가 제공하는 예제 는 표준이 있기 전에 C ++의 변경과 관련 이 있습니다. 1998 년 이후 (첫 번째 C ++ 표준이 완성 된 이후) 언어에 대한 변경은 매우 적었습니다. 실제로 많은 사람들은 더 많은 변경이 이루어져야 한다는 실제 문제가 있다고 주장합니다 . 원래 C ++ 표준을 따르는 모든 코드가 여전히 현재 표준을 따르는 지 확실합니다. 다소 확실 하지는 않지만 무언가가 빠르게 (그리고 예기치 않게) 변경되지 않는 한 곧 C ++ 표준 (이론적으로 사용 된 모든 코드)과 거의 동일합니다.export
깨질 것이지만 실제로는 존재하지 않습니다. 실제적인 관점에서 보면 문제가되지 않습니다). 나는 그런 주장을 할 수있는 다른 언어들, OS들 (또는 컴퓨터와 관련된 다른 많은 것들)을 생각할 수있다.
그런 다음 "모든 스타일 변경"에 들어갑니다. 다시 말하지만, 그의 요점은 대부분 넌센스에 가깝습니다. 그는 for (int i=0; i<n;i++)
"오래되고 파열되었다"고 for (int i(0); i!=n;++i)
"새로운 뜨거움" 으로 특성화하려고한다 . 실제로 이러한 변경이 의미가있는 유형이 있지만 int
차이가 없으며, 무언가를 얻을 수있는 경우에도 올바른 코드를 작성하는 데 거의 필요하지 않습니다. 아주 좋은 경우에도 그는 두더지에서 산을 만들고 있습니다.
그의 다음 주장은 C ++가 "잘못된 방향으로 최적화하고있다"는 것이다. 특히 그는 좋은 라이브러리를 사용하는 것이 쉽다는 것을 인정하지만 C ++은 "좋은 라이브러리를 작성하는 것이 거의 불가능하다"고 주장했다. 여기서 나는 그의 가장 근본적인 실수 중 하나라고 생각합니다. 실제로 거의 모든 언어에 적합한 라이브러리를 작성 하는 것은 매우 어렵습니다. 최소한 좋은 라이브러리를 작성하려면 일부 문제 도메인을 잘 이해해야 코드가 해당 도메인에서 (또는 관련) 여러 응용 프로그램에서 작동 할 수 있습니다. 대부분의 어떤 C ++ 정말 "높였"입니다 않습니다 - 라이브러리가 얼마나 더보고 후 수 일, 사람들이 그렇지 않은 것 dreck의 종류를 쓰기로 돌아갈 거의하고자합니다.정말 좋은 코더는 꽤 많은 라이브러리를 작성하는데, "라이브러리"에 의해 쉽게 사용될 수 있습니다. 이것은 실제로 "버그가 아니라 기능"인 경우입니다.
나는 모든 지점을 순서대로 맞추려고하지는 않지만 (페이지를 차지할 것입니다), 그의 마감 지점으로 직접 건너 뜁니다. Bjarne은 다음과 같이 말합니다. "사용하지 않는 가상 함수 테이블 및 RTTI 데이터를 제거하기 위해 전체 프로그램 최적화를 사용할 수 있습니다. 이러한 분석은 동적 링크를 사용하지 않는 비교적 작은 프로그램에 특히 적합합니다."
그는 "이것은 정말 어려운 문제" 라는 주장을지지함으로써이를 비판합니다 . 실제로 Zortech C ++에 포함 된 링커 (실제로 1980 년대에 MS-DOS를위한 최초의 C ++ 컴파일러)에 포함 된 링커 가이를 수행했습니다. 아마도 엄청난 양의 모든 데이터가 제거되었다고 확신하기는 어렵지만, 꽤 공정한 일을하는 것은 전적으로 합리적입니다.
그럼에도 불구하고, 훨씬 더 중요한 점은 이것이 대부분의 프로그래머에게는 전혀 관련이 없다는 것입니다. 라이브러리를 전혀 사용하지 않고 어셈블리 언어를 작성하지 않는 한, 상당히 많은 코드를 해체 한 우리도 알다시피, 실행 파일에는 거의 확실하게 상당한 양의 "재료"(일반적인 경우 코드와 데이터)가 포함되어 있습니다. 실제로 사용하는 것을 언급하지 않고 아마도 알지 못할 수도 있습니다. 가장 작은 임베디드 시스템을 위해 개발하지 않는 한, 추가 스토리지 소비량은 그다지 중요하지 않은 대부분의 사람들에게는 대부분 중요하지 않습니다.
결국,이 rant는 Linus의 관용보다 조금 더 많은 물질을 가지고 있다는 것이 사실입니다.
virtual
함수에 대한 vtable이있는 일반 클래스를 생성해야 합니까?