clang.engineer

불변성 — const·mut·val, 누가 무엇을 못 바꾸게 하나

값을 바꿀 수 있는가를 누가·어떻게 통제하는가. C++ const correctness를 발판으로, '기본이 가변이냐 불변이냐'와 '바인딩만 막느냐 값까지 막느냐' 두 축으로 Rust(불변 기본 + mut 옵트인)·Kotlin val·JS const·함수형 영속 자료구조를 비교한다. Kotlin val 리스트 내용이 왜 바뀌는지(바인딩 vs 값), Rust의 &T/&mut T 규칙이 데이터 레이스를 막는 지점까지 대응시킨다.

Null 안전성 — '10억 달러 실수'를 언어는 어떻게 막나

null 참조가 왜 '10억 달러 실수'인지에서 출발해, 없음(absence)을 다루는 세 모델 — 구분 없는 널(C++ 포인터·Java·Go), Option 타입(Rust·Swift), nullable 타입(Kotlin·TS·C#)을 '타입에 드러나는가'와 '언제 막히는가' 두 축으로 비교한다. C++ std::optional이 Rust Option과 같은 물건이면서 무엇이 다른지, Go의 'nil인데 nil이 아닌' 함정까지 대응시킨다.