핵 (프로그래밍 언어)

핵(Hack)은 힙합 가상 머신(HHVM)을 위한 프로그래밍 언어로서, 페이스북이 PHP의 방언 개념으로 개발한 것이다. 언어 구현체는 오픈 소스이며 BSD 허가서를 통해 배포된다.

핵은 프로그래머들이 동적 타이핑과 정적 타이핑을 둘 다 사용할 수 있게 한다. 이러한 종류의 자료형 체계는 그래듀얼 타이핑이라고 부르며, 액션스크립트와 같은 다른 프로그래밍 언어에도 구현되어 있다. 핵의 자료형 체계는 함수의 인수, 함수의 반환값, 클래스 속성에 대해 타입을 지정할 수 있게 한다. 그러나 지역 변수의 자료형은 언제나 추론적이므로 지정할 수 없다.

역사 
핵은 2014년 3월 20일 선보였다. 새로운 프로그래밍 언어의 발표 이전에 페이스북은 이미 해당 코드를 구현해 놓았고 자사의 웹사이트 중 상당 부분에 배틀 테스트(battle test)를 진행했다.

문법 및 시맨틱 
핵 스크립트의 기본 파일 구조는 몇 가지 변경사항이 포함된 PHP 스크립트와 비슷하다. 핵 파일은 PHP 스크립트에 대해 <?php에 반대되는 <?hh로 시작한다:

<?hh
echo 'Hello World';

PHP와 비슷한 상기의 스크립트는 실행된 이후 다음의 출력을 브라우저로 보낸다:

Hello World

여기서 중요한 점은 PHP와 달리 핵과 HTML 코드는 서로 섞이지 않는다. 일반적으로 PHP와 HTML 코드를 같은 파일에 다음과 같이 혼재된다:

<html>
    <head>
        <title>PHP Test</title>
    </head>
    <body>
        <!-- hh and html do not mix -->
        <?php echo '<p>Hello World</p>'; ?>
    </body>
</html>

이러한 유형의 코드는 핵에 의해 지원되지 않는다. 이 경우 XHP나 다른 탬플릿 엔진의 사용이 필요하다.

함수 
핵 언어에서는 함수의 인수, 함수의 반환값에 대해 자료형을 지정할 수 있다. 핵의 함수는 그러므로 다음과 같은 자료형으로 어노테이션(annotation) 처리를 할 수 있다:

<?hh
// Hack functions are annotated with types.
function negate(bool $x): bool {
    return !$x;
}

같이 보기 
 KPHP
 패럿 가상 머신

각주

외부 링크 
 Official ,  and 
 Facebook Q&A: Hack brings static typing to PHP world
 A tutorial on converting an existing PHP project to Hack

2014년 소프트웨어
페이스북
PHP 소프트웨어
2014년 개발된 프로그래밍 언어
스크립트 언어
정적 타입 프로그래밍 언어
동적 타입 프로그래밍 언어