C++26, 표준화 사상 첫 부결

C++ 프로그래밍 언어의 차기 표준인 'C++26'이 국제표준화기구(ISO) 승인 단계에서 사상 처음으로 부결됐다.

.

.

.

이번 부결은 계약 기능에 대한 이견으로 발생했다. 계약은 개발자가 함수 실행 전후에 충족해야 할 조건을 코드에 명시하고 프로그램 실행 중 이를 검사하도록 지원하는 기능이다. 잘못된 입력값이나 예상과 다른 실행 결과를 감지해 오류와 보안 취약점으로 이어질 수 있는 문제를 줄이는 것이 목적이다.


C++ 창시자인 비야네 스트롭스트룹 콜롬비아대학 교수는 설계가 지나치게 복잡하고 충분히 검증되지 않았다며 반대했다.



===

코드로 코딩한지가 언제인지 기억이 안나지만

옛날에 C++이 나름 주력 언어 였어서 그런지 눈길이 가는 뉴스네요.


'계약' 기능 설명을 보니 한번 써보고 싶은 스펙이군요.

비야네 스트롭스트룹님이 복잡해서 안된다고 하면 얼마나 복잡한 설계가 필요한걸까요.ㅋ



- 인공지능에게 관련 코드를 간단하게 생성해달라고 하니 이런 예제를 주네요 -

#include <iostream> int withdraw(int balance, int amount)     pre(balance >= 0)     pre(amount > 0 && amount <= balance)     post(result: result >= 0) {     auto remaining = balance - amount;     contract_assert(remaining <= balance);     return remaining; } int main() {     auto money = withdraw(100, 30);     std::cout << money << '\n'; // 70 }


함수 시그니처나 내용에 함수 호출 관련 계약들을 설정할 수 있고, 계약 위반시 행동들도 정해서 수행하게 할 수 있는 것 같군요.


https://www.youtube.com/watch?v=fAuT8_dboWo


댓글

C++도 ISO표준이었군요 ㄷㄷㄷ

@d0a96c85 님 표준화 해도 컴파일러 제작 그룹들에 따라 기능들이 미묘하게 다르거나...누락되기도 하죠. 하물며 표준이 없었으면 각종 C++변이 버전이 나왔을 것 같아요.