GN⁺: 뛰어난 프로그래밍 언어 Hurl
(hurl.wtf)Hurl, 예외적인 언어
개요
- Hurl은 예외 처리를 유일한 제어 흐름으로 사용하는 언어를 탐구하기 위해 만들어진 언어임.
- 이 언어는 Nicole Tietz-Sokolskaya와 Recurse Center 친구들 간의 대화에서 시작되었음.
- 이 사이트는 Hurl 사용에 대한 문서, 예제, 디버깅 가이드 및 FAQ를 제공함.
설치 및 사용법
- Hurl의 소스 코드는 Hurl의 저장소에서 제공됨.
- 버그나 오류를 발견하면 이메일 패치를 환영하지만, 패치에 대한 모든 권리를 양도해야 함.
- 이는 재라이센스 및 상업적 라이센스를 유지하기 위함임.
Hurl의 문법과 철학
- Hurl은 예외 처리를 중심으로 한 언어임.
- 제어 흐름을 예외 처리로만 구현함.
일반적인 패턴
- 예외 처리를 통해 제어 흐름을 관리함.
- 전통적인 제어 구조(예: if, for)는 사용하지 않음.
표준 라이브러리
- Hurl은 표준 라이브러리를 제공함.
- 예외 처리를 기반으로 한 다양한 기능을 포함함.
예제
- 다양한 예제 코드가 제공됨.
- 예제 코드를 통해 Hurl의 사용법을 쉽게 이해할 수 있음.
디버깅 및 오류
- 디버깅 가이드가 제공됨.
- 오류를 효과적으로 처리하는 방법을 설명함.
FAQ
- 자주 묻는 질문에 대한 답변을 제공함.
- Hurl 사용 시 발생할 수 있는 일반적인 문제를 다룸.
Hurl에 대한 찬사
- Erika Rowland: "이 괴물은 아름답고, 절대 손대고 싶지 않음. 내 이름이 이와 연관되길 원하지 않음."
- Nicole Tietz-Sokolskaya: "이 언어를 현실로 만들기로 결정함. 미안함."
- Mary McGrath: "🤮" (사용 가능한 인용구인가?)
- nate (@nmoo@mas.to): "인증된 비정상™!"
소스 코드
- Hurl과 이 사이트의 소스 코드는 Hurl의 저장소에서 제공됨.
- 이메일 패치를 환영하지만, 모든 권리를 양도해야 함.
라이센스
- 이 프로젝트는 다음 세 가지 라이센스 중 하나로 사용 가능함:
- AGPL-3.0
- GAL-1.0 (Gay Agenda License)
- 상업적 라이센스
- 세 가지 라이센스 중 하나를 선택하여 사용할 수 있음.
GN⁺의 의견
- 예외 처리 중심의 언어: Hurl은 예외 처리를 제어 흐름의 중심으로 삼아 전통적인 제어 구조를 대체하는 독특한 접근 방식을 취함. 이는 개발자들에게 새로운 사고 방식을 요구함.
- 교육적 가치: Hurl은 예외 처리의 중요성과 활용 방법을 깊이 이해하는 데 도움이 될 수 있음. 특히 예외 처리를 잘못 사용하는 경우의 문제점을 명확히 보여줌.
- 실용성 문제: 실무에서 Hurl을 사용하는 것은 도전적일 수 있음. 전통적인 제어 구조에 익숙한 개발자들에게는 큰 장벽이 될 수 있음.
- 커뮤니티와의 협력: Hurl의 소스 코드는 오픈소스로 제공되며, 커뮤니티의 참여를 장려함. 이는 프로젝트의 발전과 버그 수정에 긍정적인 영향을 미칠 수 있음.
- 라이센스 선택: 다양한 라이센스를 제공하여 사용자에게 선택의 폭을 넓혀줌. 이는 프로젝트의 유연성을 높이는 데 기여함.
Hacker News 의견
해커뉴스 댓글 모음 요약
-
프로그래밍 언어 설계 시 네임스페이스와 임포트를 강제하는 것이 중요함
- 네임스페이스와 임포트를 강제하면 코드 이해가 쉬워짐.
- 최상위 레벨의 부작용을 허용하지 않는 것이 좋음.
-
예외 처리에 대한 의견
- 예외 처리는 호출자와 피호출자 간의 계약을 어렵게 만듦.
- Go나 Rust처럼 반환 값을 통해 예외를 처리하는 것이 더 나음.
- IDE가 모든 미처리 예외를 동적으로 감지하고, 예외 발생 지점을 쉽게 찾을 수 있게 해주면 좋을 것 같음.
-
'toss' 사용 예제
- 'toss'는 함수에서 여러 값을 반환할 때 주로 사용됨.
- 즉시 재개하지 않는 경우를 제외하고는 유용하지 않음.
-
Hurl 언어와 조건 시스템
- Hurl은 Smalltalk/CL의 조건 시스템과 유사함.
- 조건 시스템은 여러 재시작 옵션을 제공함.
-
.wtf 도메인 확장자 사용
- 더 많은 것들이 .wtf 도메인 확장자를 사용하면 세상이 더 나아질 것 같음.
-
대수적 효과와 유사한 언어
- 약한 형태의 대수적 효과와 유사하지만, 여전히 흥미로움.
-
Hurl 언어에 대한 혼합된 감정
- Hurl 언어가 싫지만, 약간 우아한 면도 있음.
- 재개 가능한 예외와 재개 불가능한 예외를 구분하는 구문이 있었으면 좋겠음.
- 표준 라이브러리는 일반 값 반환 함수로 대체하지 말았어야 함.
-
'toss'와 'hurl'의 차이
- 'hurl'은 잡을 수 있지만 'toss'는 잡을 수 없음.
- Hurl을 많이 쓰면 사람들이 나를 'tosser'라고 부를까 걱정됨.
-
'toss' 언어 구조
- 'toss'는 예외 핸들러를 찾기 위해 스택을 탐색하고, 아무 일도 없었던 것처럼 실행을 재개함.
- 런타임에 추가 동작을 주입할 수 있음.
- 객체 지향 코드에서는 서비스 생성자를 통해 의존성 주입을 하지만, 'toss'는 'toss 핸들러'를 사용함.