Hacker News 의견
  • 배열 기반의 인플레이스 알고리즘이 존재하여 트리를 할당하고 포인터를 추적할 필요가 줄어듦

    • 대학에서 트리 기반 접근 방식을 배울 때 다른 방법이 있는지 몰랐음
    • 트리 접근 방식이 직관적이고 유익하지만, 많은 데이터를 빠르게 처리해야 할 때는 인플레이스 배열을 사용하는 것이 더 합리적임
    • 참고 문헌: "In-Place Calculation of Minimum-Redundancy Codes" (Moffat, Katajainen, 1995)
  • 코드 단어가 다른 코드 단어의 접두사가 되지 않도록 해야 한다는 것은 기술적으로 정확하지 않음

    • 유일하게 디코딩 가능한 코드 클래스는 접두사 코드의 상위 집합임
    • 예를 들어, 접두사 코드의 역순은 여전히 명확하게 디코딩 가능함
    • 예시 코드:
      a 1
      b 00
      c 10
      
    • 'a'의 코드가 'c'의 코드의 접두사이지만, 역순으로 처리하면 명확하게 디코딩 가능함
  • Haskell 프로그램 작성에 대한 더 고급 기능(모나드 변환기, 렌즈 등)을 다루는 유사한 튜토리얼이 있는지 궁금함

  • Coursera의 함수형 프로그래밍 코스(Scala)에서 유사한 Huffman 코딩 과제를 제공함

  • Huffman 코드를 사용하여 MICMAC 프로세서 매크로 프로그램을 최소한의 마이크로사이클과 마이크로명령으로 실행했음

    • 매크로 명령어의 히스토그램을 작성하고, 이를 기반으로 프로그레시브 디코딩 마이크로코드 프로그램을 작성했음
    • 실제로는 느리고 불편했을 것임
    • Huffman 코드의 장점은 값의 분포에 따라 접두사 깊이를 조절할 수 있다는 것임
    • 비초과파이프라인 프로세서 모델에서 분기 예측을 처리해야 했음
  • Huffman 코딩에 대한 추가 정보: Rosetta Code Huffman Coding

  • Haskell 프로그래머를 위한 질문: 최적화된 코드를 작성하려는 프로그래머에게 Haskell의 성능은 어떤지 궁금함

    • 특히 행렬 연산과 SIMD를 활용하는 수치 계산 성능에 관심이 있음
  • 공유해줘서 고맙다는 의견

  • "Creating prefix-free codes" 섹션의 표에 오타가 있음

    • D는 '0010'이어야 함 (현재는 '0110'으로 잘못 표기됨)
    • 그 외에는 훌륭한 읽을거리였음
  • 산술 코드는 거의 모든 면에서 더 나음

    • 더 적은 RAM과 코드로 구현 가능함
    • 더 나은 압축 및 디컴프레션 비율을 제공함
    • 스트림 중에 다른 기호가 나타날 확률을 동적으로 업데이트하기 더 쉬움
    • Huffman 코드는 먼저 발명되었고 산술 코드는 특허가 있었기 때문에 사용됨
    • 현재 특허가 만료되었으므로 더 나은 설계를 사용해야 함