항상 컨퍼런스 기술적 사조를 보는데 이번에도 C++ 보안 이슈 관련해서 이야기 나온듯
답변자는 비야네 스트롭스트룹(Bjarne Stroustrup)
1. C++가 안전하지 않다는 것에 대해서 어떻게 생각하는가?
-> 최신 C++ 프로그래밍 채택하고, C++ 핵심 지침(Core Guideline)을 따르면 보안 문제가 적게 발생한다. 예를 들어서 최근에는 배열을 벗어나는 문제가 발견되지 않는다. 배열을 쓰기전에 항상 배열 검사 라이브러리를 사용할 것을 권장하라. 학생들은 피할 수 있는 버퍼 오버플로 오류를 겪는 이유가 그때문이다.
구식 C++가 아닌 최신 프로그래밍 지침을 채택해라.(구식 프로그래밍 방식이 보안에 치명적인 해가 된다는 것)
현재의 큰 과제는 최신 프로그래밍으로 된 예제가 없다는 것인데, 이 몇가지 매커니즘을 표준화하려고 한다.
C++말고 다른 최신언어가 보안에 안전하다는데, 금마들 주장에 비해서 사실 걔들도 보안에 문제 있다. 특히 리소스 관련한 보안.
2. C++가 복잡한가?
-> C++ 복잡성은 항상 논쟁의 대상이 되어왔다. (중간 생략)
문제의 요지는 C++프로그래머들이 포기한 옛날 C 코딩 스타일을 사용하는 것이다. C++가 복잡하고 모든 세부사항을 마스터 하려고 하면 학습과정이 어려울 수밖에 없다.
'모든 것을 알고 싶다' 라는 사람을 가끔 만나지만, 그럴 필요가 전혀 없고, 세부사항들에 대해서 굳이 모두 알 필요 없다.
저는 언어의 기본을 이해하고 문제를 해결하고 소프트웨어를 더 잘 개발하는 데 도움이 되는 핵심 기능을 숙달하는 것이 더 중요하다고 생각.
이러한 기본 기능과 핵심 라이브러리의 프레임워크 내에서 작업하는 데 집중해야 함
3. 대규모 언어 모델(LLM)이 C++에 어떤 영향을 미치는가
-> 저는 AI 전문가가 아닙니다. AI와의 유일한 연관성은 텐서플로우 같은 AI툴이 C++로 개발됐다는 사실이고, 이러한 의미에서 C++는 현재 AI 기술 인프라를 형성하는데, 도움을 줬다는 것입니다.
하지만 저는 AI에 대한 지식이 부족합니다.
그러나 LLM이 개발자가 자주하는 반복 처리 작업을 하는데 도움이 될 수 있다고 믿습니다. 그리고 LLM이 인간을 대체한다는 말을 믿지 않습니다. AI에 나타나지 않는 새로운 문제를 다룰때 인간의 창의성을 요구하는 작업이 많이 있을 것이기때문에
4. 지난 C++ 버전 중에서 가장 후회스러운 결정은 무엇인가?
->가장 자랑스러워하는 것은 클래스 시스템의 디자인
.한 클래스, 공개 및 비공개 액세스 제어가 포함된 클래스, 생성자와 소멸자가 포함된 클래스 이러한 기능을 통해 궁극적으로 개발자는 개체의 수명 주기를 완전히 제어할 수 있음.
지금 돌이켜보면 자랑스러워해야 할 것 같다.
당시에는 이러한 디자인이 자연스러워 보였지만 실제로는 다양한 프로그래밍 언어가 이러한 개념을 구현하기 위해 매우 다른 방법을 사용함
후회되는 결정은 '제네릭 프로그래밍' 관련인데, 나의 초기 시도가 잘못되어 매크로를 사용하여 구현하려고 했다. 1988년에서야 제네릭 프로그래밍에 대한 구현이 언어 수준에서 지원됐어야했음을 알게되었습니다.
(그외에 C랑 C++ 논쟁이 의미 없다는 발언함)
5. 개발자가 잘못 오용하거나 잘못이해하고 있는 C++ 기능은 무엇인가?
->예외(Exception)가 가장 대표적 예시. 저는 많은 C++ 코드가 로우 레벨 방식으로 작성되고 있음을 알아냄.
개발자들은 오류코드를 테스트하는데 지나치게 의존하고 있다.
이런 방식은 항상 문제를 일으키기 쉽다. 오류처리를 잊어버리거나 구현 비용이 너무 높아진다.
일반적인 오해로 실제 예외처리(exception)은 진짜 예외적인 상황(백만번 중 1회)에서만 호출하게 설계되었다.
반면에 오류코드를 시스템적으로 테스트하기로 선택한다면, 두 함수 호출 사이에 추가정보를 전달하고 검사해야하는데, 이는 모든 함수 호출마다 테스트 오버헤드와 추가적 데이터 전달비용을 발생시킴
(좀 요약해보자면 오류코드 테스트보다 예외처리가 더 효율적이고 안전한 방법이라고 말하는듯)
그외에 미국 정부의 보안 경고 문제부터 중요한 문제 몇개 답변하긴했는데
그냥 별로 중요한 느낌은 아니라서, 생략함
프로그램갤러리에서 프로그래밍 이야기하지마시오
왜
후후 예외처리를 잘해야겠군 ㅇㅅㅇㅋ
가지마 ㅜㅜ
개추
C++ 제네릭은 진짜 레전드다...