Python 3.10 패턴 매칭의 흑마법: `__subclasshook__` 악용하기

2025-08-22

이 글에서는 Python 3.10의 패턴 매칭과 추상 기본 클래스(ABC)의 `__subclasshook__` 메서드 조합에서 발생하는 예상치 못한 기능을 탐구합니다. 교묘하게 `__subclasshook__`를 사용하여 패턴 매칭을 '탈취'하여 어떤 유형이 일치하는지 사용자 정의하거나, 유형뿐 아니라 객체 속성을 기반으로 매칭을 수행할 수 있습니다. 사용자 정의 매처 생성과 같은 강력한 기능을 보여주면서도, 저자는 예측 불가능하고 잠재적으로 위험한 특성 때문에 프로덕션 코드에서 이 기법을 사용하는 것을 강력히 경고합니다.

더 보기

놀랍도록 깊은 영향을 미친 '사라진' 프로그래밍 언어들

2025-07-16

이 글에서는 COBOL, ALGOL, APL, BASIC 등 역사적으로 영향력이 컸지만 현재는 널리 사용되지 않는 프로그래밍 언어들이 현대 프로그래밍 언어에 미친 놀라운 영향을 탐구합니다. 이들의 배경, 기여, 쇠퇴 이유를 살펴봄으로써 현대 언어에 대한 지속적인 영향을 밝힙니다. 예를 들어 COBOL의 레코드 데이터 구조, ALGOL의 어휘적 범위와 구조적 프로그래밍, APL의 배열 처리 등이 있습니다. 이 글은 프로그래밍 언어 역사를 연구하는 것의 중요성과 주류가 되지 못한 언어들의 종종 간과되는 기여를 강조합니다.

더 보기

OOP의 오해된 기원: 기록 바로잡기

2025-05-10

이 글은 앨런 케이가 객체 지향 프로그래밍(OOP)과 객체 개념 모두를 발명했다는 일반적인 오해를 반박합니다. 사실 Simula 언어는 OOP의 중요한 선구자였으며, Smalltalk 팀도 Simula의 영향을 분명히 인정했습니다. 케이가 "객체"라는 용어를 만들었지만, 그는 나중에 후회했으며 OOP의 핵심 아이디어는 메시지 전달이라고 강조했습니다. 이 글에서는 Smalltalk가 OOP에 기여한 독특한 점, 특히 모든 것을 객체로 다루는 설계 원칙과 혁신적인 메시지 처리 메커니즘에 대해 자세히 설명합니다. 저자는 OOP의 진화가 단일 사건이 아니라 아이디어와 요구의 결합이며, 다양한 개발자가 다양한 상황에서 OOP를 다르게 이해하고 적용해 왔다고 주장합니다.

더 보기
개발

JavaScript 주석의 이상한 역사: `<!--`와 `-->`가 동작하는 이유

2025-03-12

이 글에서는 JavaScript에서 ``가 주석으로 사용되는 이상한 역사를 밝힙니다. 초기에는 오래된 브라우저와의 호환성을 위해 개발자들은 `` 태그 안에서 HTML 주석을 사용하여 JavaScript 코드를 감쌌습니다. 놀랍게도 현대 브라우저에서도 이 구문이 지원되는 이유는 브라우저 호환성의 역사적 짐과 표준화 위원회의 '웹을 망가뜨리지 않겠다'는 약속 때문입니다. 이 글에서는 이 구문이 어떻게 동작하고 `-->`가 줄의 처음에 와야 하는 이유를 설명합니다.

더 보기
개발

소프트웨어 엔지니어링에 대한 제어 계층 적용

2025-03-08

기계 엔지니어가 작업장 안전에서 중요한 개념인 제어 계층(HoC)을 저자에게 소개했습니다. 저자는 HoC를 소프트웨어 엔지니어링에 적용하여 10년 전 잘못된 쿼리로 인해 발생한 프로덕션 데이터베이스 사고를 분석합니다. 이 기사에서는 소프트웨어 개발에서 위험을 완화하기 위해 제거, 대체, 엔지니어링 제어, 관리 제어, 개인 보호 장비(PPE)의 적용을 탐구합니다. 각 수준의 장점, 단점 및 제약 조건이 논의됩니다. 예를 들어, 너무 엄격한 액세스 정책은 문제 해결을 지연시킬 수 있습니다. 저자는 시스템 안전에 대한 제어의 영향을 포괄적으로 고려하고 새로운 위험의 도입을 피해야 할 필요성을 강조합니다.

더 보기
개발