2P by neo 4달전 | favorite | 댓글 1개

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 핸들러'를 사용함.