# 뛰어난 프로그래밍 언어 Hurl

> Clean Markdown view of GeekNews topic #15021. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15021](https://news.hada.io/topic?id=15021)
- GeekNews Markdown: [https://news.hada.io/topic/15021.md](https://news.hada.io/topic/15021.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-05-27T09:56:04+09:00
- Updated: 2024-05-27T09:56:04+09:00
- Original source: [hurl.wtf](https://hurl.wtf/)
- Points: 2
- Comments: 1

## Topic Body

### 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의 소스 코드는 오픈소스로 제공되며, 커뮤니티의 참여를 장려함. 이는 프로젝트의 발전과 버그 수정에 긍정적인 영향을 미칠 수 있음.
- **라이센스 선택**: 다양한 라이센스를 제공하여 사용자에게 선택의 폭을 넓혀줌. 이는 프로젝트의 유연성을 높이는 데 기여함.

## Comments



### Comment 25616

- Author: neo
- Created: 2024-05-27T09:56:04+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40480056) 
##### 해커뉴스 댓글 모음 요약

* **프로그래밍 언어 설계 시 네임스페이스와 임포트를 강제하는 것이 중요함**
  - 네임스페이스와 임포트를 강제하면 코드 이해가 쉬워짐.
  - 최상위 레벨의 부작용을 허용하지 않는 것이 좋음.

* **예외 처리에 대한 의견**
  - 예외 처리는 호출자와 피호출자 간의 계약을 어렵게 만듦.
  - Go나 Rust처럼 반환 값을 통해 예외를 처리하는 것이 더 나음.
  - IDE가 모든 미처리 예외를 동적으로 감지하고, 예외 발생 지점을 쉽게 찾을 수 있게 해주면 좋을 것 같음.

* **'toss' 사용 예제**
  - 'toss'는 함수에서 여러 값을 반환할 때 주로 사용됨.
  - 즉시 재개하지 않는 경우를 제외하고는 유용하지 않음.

* **Hurl 언어와 조건 시스템**
  - Hurl은 Smalltalk/CL의 조건 시스템과 유사함.
  - 조건 시스템은 여러 재시작 옵션을 제공함.

* **.wtf 도메인 확장자 사용**
  - 더 많은 것들이 .wtf 도메인 확장자를 사용하면 세상이 더 나아질 것 같음.

* **대수적 효과와 유사한 언어**
  - 약한 형태의 대수적 효과와 유사하지만, 여전히 흥미로움.

* **Hurl 언어에 대한 혼합된 감정**
  - Hurl 언어가 싫지만, 약간 우아한 면도 있음.
  - 재개 가능한 예외와 재개 불가능한 예외를 구분하는 구문이 있었으면 좋겠음.
  - 표준 라이브러리는 일반 값 반환 함수로 대체하지 말았어야 함.

* **'toss'와 'hurl'의 차이**
  - 'hurl'은 잡을 수 있지만 'toss'는 잡을 수 없음.
  - Hurl을 많이 쓰면 사람들이 나를 'tosser'라고 부를까 걱정됨.

* **'toss' 언어 구조**
  - 'toss'는 예외 핸들러를 찾기 위해 스택을 탐색하고, 아무 일도 없었던 것처럼 실행을 재개함.
  - 런타임에 추가 동작을 주입할 수 있음.
  - 객체 지향 코드에서는 서비스 생성자를 통해 의존성 주입을 하지만, 'toss'는 'toss 핸들러'를 사용함.
