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
댓글