Footgun

Footgun은 소프트웨어 개발 환경(프로그래밍 언어, 프레임워크, API 등)에서 개발자가 치명적인 실수를 하기 쉽도록 만드는 설계적 결함이나 기능을 지칭하는 용어다. 이 단어는 “자신의 발에 총을 쏘다(shoot oneself in the foot)“라는 영어 관용구에서 파생되었다. 개발자에게 높은 자유도나 강력한 기능을 제공하지만, 조금만 주의를 기울이지 않아도 시스템 장애나 보안 취약점 등 부정적인 결과를 초래하는 특성을 뜻한다.

이 개념은 C++의 창시자인 비야네 스트로우스트룹(Bjarne Stroustrup)의 발언을 통해 프로그래밍 문화에 널리 정착했다. 그는 언어의 특성을 설명하며 “C언어는 당신의 발에 총을 쏘기 쉽게 만든다. C++는 그 행위를 더 어렵게 만들지만, 만약 총을 쏜다면 당신의 다리 전체를 날려버릴 것이다(C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.)”라고 언급했다.

프로그래밍 설계 특성 비교 데이터다. Footgun과 반대 개념인 설계적 안전 장치(Guardrail)의 차이를 요약했다.

비교 항목Footgun (풋건)Guardrail (가드레일 / 안전 설계)
목적개발자에게 최대한의 유연성과 제어력 제공시스템 안정성 확보 및 개발자의 인적 오류 사전 방지
자유도높음 (개발자가 메모리, 타입 등을 직접 제어)제한적 (안전을 위해 시스템 단위에서 특정 작업을 차단)
오류 발견 시점주로 런타임 (프로그램 실행 중 충돌 발생)주로 컴파일 타임 (코드 작성 및 빌드 단계에서 거부)
대표적인 사례C/C++의 수동 메모리 할당 및 포인터 연산, JavaScript의 암묵적 타입 변환(==)Rust의 소유권(Ownership) 및 빌림(Borrowing) 모델, TypeScript의 정적 타입 시스템

출처:

Entities