핵 (프로그래밍 언어)
핵(Hack)은 힙합 가상 머신(HHVM)을 위한 프로그래밍 언어로서, 페이스북이 PHP의 방언 개념으로 개발한 것이다. 언어 구현체는 오픈 소스이며 BSD 허가서를 통해 배포된다.[1][2][3]
핵은 프로그래머들이 동적 타이핑과 정적 타이핑을 둘 다 사용할 수 있게 한다. 이러한 종류의 자료형 체계는 그래듀얼 타이핑이라고 부르며, 액션스크립트와 같은 다른 프로그래밍 언어에도 구현되어 있다.[4] 핵의 자료형 체계는 함수의 인수, 함수의 반환값, 클래스 속성에 대해 타입을 지정할 수 있게 한다. 그러나 지역 변수의 자료형은 언제나 추론적이므로 지정할 수 없다.[2][5]
역사
[편집]핵은 2014년 3월 20일 선보였다.[6] 새로운 프로그래밍 언어의 발표 이전에 페이스북은 이미 해당 코드를 구현해 놓았고 자사의 웹사이트 중 상당 부분에 배틀 테스트(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나 다른 탬플릿 엔진의 사용이 필요하다.[7]
함수
[편집]핵 언어에서는 함수의 인수, 함수의 반환값에 대해 자료형을 지정할 수 있다. 핵의 함수는 그러므로 다음과 같은 자료형으로 어노테이션(annotation) 처리를 할 수 있다:
<?hh
// Hack functions are annotated with types.
function negate(bool $x): bool {
return !$x;
}
같이 보기
[편집]각주
[편집]- ↑ “facebook/hhvm: hhvm / hphp / hack / LICENSE”. 《github.com》. Facebook. 2014년 3월 20일. 2014년 8월 11일에 확인함.
- ↑ 가 나 Josh Lockhart (2014년 4월 3일). “Facebook’s Hack, HHVM, and the future of PHP”. 오라일리 미디어. 2019년 1월 7일에 원본 문서에서 보존된 문서. 2014년 8월 2일에 확인함.
- ↑ Cade Metz (2014년 3월 20일). “Facebook Introduces 'Hack,' the Programming Language of the Future”. Wired. 2014년 4월 15일에 확인함.
- ↑ Aseem Rastogi; Avik Chaudhuri; Basil Hosmer (January 2012). “The Ins and Outs of Gradual Type Inference” (PDF). ACM (ACM). 2014년 9월 23일에 확인함.
- ↑ “Hack Manual: Hack and HHVM – Type Annotations”. 《docs.hhvm.com》. 2015년 12월 29일에 확인함.
- ↑ “Hack: a new programming language for HHVM”. 《code.facebook.com》. 페이스북. 2014년 3월 23일에 확인함.
- ↑ “Hack Manual: Hack and HHVM – Unsupported PHP Features in Hack”. 《docs.hhvm.com》. 2015년 12월 9일에 원본 문서에서 보존된 문서. 2014년 4월 2일에 확인함.
외부 링크
[편집]- Official 핵 - 공식 웹사이트, tutorial - 공식 웹사이트 and language reference - 공식 웹사이트
- Facebook Q&A: Hack brings static typing to PHP world
- A tutorial on converting an existing PHP project to Hack