해킹(프로그래밍 언어)
Hack (programming language)![]() | |
설계자 | 줄리앙 벨라구에, 알록 멩그라자니, 드류 파로스키[1] 등 |
---|---|
개발자 | 메타 플랫폼 |
처음 등장한 | 2014 |
타이핑 분야 | 정적, 동적, 약, 점진적 |
OS | 크로스 플랫폼 |
면허증. | MIT 라이선스[2] |
웹 사이트 | hacklang |
영향을 받다 | |
PHP, OCaml, Java, C#, Scala, Haskell |
Hack은 HipHop Virtual Machine(HHVM)용 프로그래밍 언어이며, Meta가 PHP의 방언으로 만들었습니다.언어 실장은 오픈 소스이며, MIT [2][3][4]라이선스에 따라 라이센스가 부여됩니다.
Hack은 프로그래머가 동적 타이핑과 정적 타이핑을 모두 사용할 수 있도록 합니다.이러한 종류의 타입 시스템은 점진적 타이핑이라고 불리며,[5] ActionScript와 같은 다른 프로그래밍 언어에서도 구현됩니다.Hack의 유형 시스템은 함수 인수, 함수 반환 값, 클래스 속성에 대한 유형을 지정할 수 있지만 로컬 변수의 유형은 항상 유추되므로 [3][6]지정할 수 없습니다.
역사
Hack은 2014년 [7]3월 20일에 도입되었습니다.새로운 프로그래밍 언어가 발표되기 전에, 페이스북은 이미 코드를 구현했고 웹사이트의 많은 부분에서 그것을 "전투 테스트"했다.
특징들
Hack은 웹 개발에 중점을 두고 HTML에 삽입할 수 있는 널리 사용되는 오픈 소스 스크립트 언어인 PHP와 심리스하게 상호 운용되도록 설계되어 있습니다.유효한 PHP 스크립트의 대부분은 Hack에서도 유효하지만, 사용 빈도가 낮은 수많은 PHP 기능과 언어 구조는 [8]Hack에서 지원되지 않습니다.
Hack은 새로운 타입 힌트(예를 들어 정수나 문자열 등 스칼라 타입)를 추가하고 타입 힌트(예를 들어 클래스 속성이나 함수 반환값)의 사용을 확장함으로써 PHP 5에서 사용 가능한 타입 힌트를 확장합니다.그러나 로컬 변수 유형은 [6]지정할 수 없습니다.Hack은 점진적인 타이핑 시스템을 사용하기 때문에 기본 모드에서는 추측할 수 없는 장소에서도 타이핑 주석은 필수가 아닙니다.타이핑 시스템은 작성자가 맞다고 가정하고 코드를 [9]인정합니다.그러나 이러한 주석을 필요로 하는 "엄격한" 모드를 사용할 수 있으므로 완전한 사운드 [10]코드를 적용할 수 있습니다.
구문 및 의미론
Hack 스크립트의 기본 파일 구조는 약간의 변경을 가한 PHP 스크립트와 유사합니다.Hack 파일에는<?php
마크업 태그를 열고 최상위 [11]선언을 사용하지 않도록 설정합니다.코드는 진입점 함수에 배치해야 합니다.이러한 파일은 최상위 파일에 있는 경우 자동으로 실행되지만 파일이 다음 파일에 포함된 경우에는 실행되지 않습니다.include
,require
또는 오토로더.Hack의 다른 함수와 마찬가지로 함수의 이름은 프로젝트 내에서 고유해야 합니다.즉, 여러 진입점이 있는 프로젝트에서는 둘 다 호출할 수 없습니다.main
:
<< >__엔트리 포인트>> 기능. 주된(): 무효 { 메아리치다 안녕, 세상아!; }
위의 스크립트는 PHP와 마찬가지로 실행되며 다음 출력이 브라우저로 전송됩니다.
안녕, 세계!
PHP와 달리 Hack과 HTML 코드는 혼재하지 않습니다.XHP 또는 다른 템플릿 엔진을 [8]사용해야 합니다.
기능들
PHP 7과 마찬가지로 Hack은 함수 인수 및 함수 반환 값에 대한 유형을 지정할 수 있습니다.따라서 Hack의 함수는 다음과 같은 유형으로 주석을 달 수 있습니다.
// Hack 함수에 type이 주석이 붙습니다. 기능. 부정하다(부울 x달러): 부울 { 돌아가다 !x달러; }
「 」를 참조해 주세요.
레퍼런스
- ^ Bryan O'Sullivan (2014-03-28). "Where Credit Belongs for Hack". Archived from the original on 2021-03-01. Retrieved 2019-02-06.
- ^ a b "facebook/hhvm: hhvm / hphp / hack / LICENSE". github.com. Meta Platforms. 2018-04-11. Archived from the original on 2019-01-07. Retrieved 2019-02-06.
- ^ a b Josh Lockhart (2014-04-03). "Facebook's Hack, HHVM, and the future of PHP". O'Reilly Media. Archived from the original on 2019-01-07. Retrieved 2019-02-06.
- ^ Cade Metz (2014-03-20). "Facebook Introduces 'Hack,' the Programming Language of the Future". Wired. Archived from the original on 2014-03-28. Retrieved 2019-02-06.
- ^ Aseem Rastogi; Avik Chaudhuri; Basil Hosmer (January 2012). "The Ins and Outs of Gradual Type Inference" (PDF). Association for Computing Machinery (ACM). Archived (PDF) from the original on 2017-08-12. Retrieved 2019-02-06.
- ^ a b "Hack Manual: Hack and HHVM – Type Annotations". docs.hhvm.com. Archived from the original on 2018-08-02. Retrieved 2019-02-06.
- ^ Verlaguet, Julien; Menghrajani, GANDHI (2014-03-20). "Hack: a new programming language for HHVM". Facebook. Archived from the original on 2019-02-09. Retrieved 2019-02-06.
- ^ a b "Inconsistencies: Introduction". docs.hhvm.com. Archived from the original on 2019-04-04. Retrieved 2019-04-04.
- ^ "Hack Manual: Partial Mode". docs.hhvm.com. Archived from the original on 2018-11-19. Retrieved 2019-02-06.
- ^ "Hack Manual: Strict Mode". docs.hhvm.com. Archived from the original on 2018-11-19. Retrieved 2019-02-06.
- ^ Emmott, Fred (2019-02-11). "HHVM 4.0.0". hhvm.com. Archived from the original on 2021-05-14. Retrieved 2019-05-02.
외부 링크
- URL을 찾을 수 없습니다. 여기에 URL을 지정하거나 Wikidata에 URL을 추가하거나 언어 참조를 추가하십시오.
- Facebook의 Q&A: 해킹으로 PHP 세계에 정적 입력이 가능
- 기존 PHP 프로젝트를 Hack으로 변환하는 튜토리얼
- KPHP: PHP용 실행 가능한 형식 의미론