피드로 돌아가기
InfoQInfrastructure
원문 읽기
Effect Handler 기반 Dynamic Binding으로 제어 흐름을 최적화한 Cangjie 언어 설계
Cangjie, a New Open-Source Compiled Language with Native Effect Handlers and Algebraic Data Types
AI 요약
Context
기존 Java, Kotlin, Swift 등 메인스트림 언어의 예외 처리 구조로 인한 제어 흐름의 단절 및 경직성 존재. 플랫폼별로 상이한 로깅 및 리소스 핸들링을 구현하기 위해 복잡한 의존성 주입이나 인터페이스 설계가 강제되는 한계점 분석.
Technical Solution
- Algebraic Data Types(ADTs)와 Pattern Matching 도입을 통한 상태 표현의 정밀도 향상 및 타입 안정성 확보
- Effect Handlers의 native 지원으로 Exception의 일반화 및 perform/resume 키워드를 통한 제어권의 유연한 전이 설계
- try/catch/handle/finally 구조를 통한 호출 컨텍스트 기반의 Dynamic Binding으로 런타임 동작의 동적 결정 가능
- 단순한 Exception Throw와 달리 resume 기능을 통해 처리 후 원래의 연산 지점으로 복귀하는 비선형 제어 흐름 구현
- Machine Code 직접 컴파일 및 다중 Backend 지원을 통해 OS 제약 없는 고성능 런타임 환경 구축
실천 포인트
1. 복잡한 의존성 주입 없이도 런타임 컨텍스트에 따라 동작을 변경해야 하는 설계 요구사항이 있는지 검토
2. 예외 발생 후 단순 종료가 아닌, 특정 값을 보충하여 원래 로직을 재개(Resume)해야 하는 워크플로우 식별
3. ADT와 패턴 매칭을 통해 조건문 중심의 설계를 상태 중심의 선언적 설계로 전환 가능한지 분석