AI 요약
핵심 인사이트
- 경량 인터프리터 언어 'Herd'는 모든 데이터 유형을 값(Value)으로 취급하고 오직 값 전달(pass-by-value)만을 지원하여, 리스트와 딕셔너리를 포함한 복합 자료형을 함수에 전달할 때도 원본에 부작용(side-effects)이 발생하지 않도록 보장한다.
- 이러한 엄격한 값 기반 설계의 편리한 결과로, Herd 언어에서는 참조 순환(Reference cycles)이 원천적으로 불가능하다.
- 이로 인해 참조 카운팅 시스템이 사이클 감지 메커니즘 없이도 효율적인 가비지 컬렉터(GC) 역할을 수행할 수 있다.
주요 디테일
- Herd는 참조 타입(문자열, 리스트, 딕트)에 대해 참조 카운팅(reference counting)을 사용하며, 수정 시 참조가 하나일 경우 복사 없이 인플레이스(in-place)로 수정하고 참조가 둘 이상일 경우에만 수정된 얕은 복사본(shallow copy)을 생성하는 방식으로 동작한다.
- 변수 정의 시
x = 1처럼 불변(immutable) 변수를 선언하거나var y = 2처럼 가변(mutable) 변수를 선언하고set y = 3으로 수정할 수 있다. - 지원하는 기본 타입에는 64비트 부동 소수점
number,string, 순서 있는 컬렉션인list, 키-값 쌍 컬렉션인dict등이 포함된다. - Herd는 'Mutable Value Semantics'를 사용하는 Swift와 유사한 아이디어를 공유하지만, Swift보다 훨씬 단순하고 동적 타이핑을 사용하며, 배열에 대해 복사 쓰기(copy-on-write)를 사용하는 Matlab/R보다 참조 카운트 추적을 더 안정적으로 수행하여 복사를 덜 자주 수행한다.
출처:HACKERNEWS
