{{위키데이터 속성 추적}}
'''고급 프로그래밍 언어''' 또는 '''하이 레벨 프로그래밍 언어'''({{lang|en|high-level programming language}})란 사람이 이해하기 쉽게 작성된 [[프로그래밍 언어]]로서, [[저급 프로그래밍 언어]]보다 가독성이 높고 다루기 간단하다는 장점이 있다. [[컴파일러]]나 [[인터프리터]]에 의해 [[저급 프로그래밍 언어]]로 번역되어 실행된다. [[C (프로그래밍 언어)|C 언어]], [[자바 (프로그래밍 언어)|자바]], [[베이직]] 등 대부분의 프로그래밍 언어들은 고급언어에 속한다. 추상화의 정도는 프로그래밍 언어가 얼마나 높은 수준인지를 정의한다.<ref>[https://web.archive.org/web/20070826224349/http://www.ittc.ku.edu/hybridthreads/glossary/index.php HThreads - RD Glossary]</ref>

1960년대에 [[컴파일러]]를 이용한 고급 프로그래밍 언어들은 보통 [[오토코드]]라 불렀다.<ref name=kleith>{{서적 인용|last=London|first=Keith|제목=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|isbn=0571085938|page=184|chapter=4, Programming|quote=The 'high' level programming languages are often called autocodes and the processor program, a compiler.}}<!--the book does not have an ISBN number, instead it has an SBN number. There is no typo in the previous sentence.--></ref> 오토코드의 예는 [[코볼]]과 [[포트란]]이 있다.<ref name=kleith2>{{서적 인용|last=London|first=Keith|제목=Introduction to Computers|year=1968|publisher=Faber and Faber Limited|location=24 Russell Square London WC1|isbn=0571085938|page=186|chapter=4, Programming|quote=Two high level programming languages which can be used here as examples to illustrate the structure and purpose of autocodes are COBOL (Common Business Oriented Language) and FORTRAN (Formular Translation).}}<!--the book does not have an ISBN number, instead it has an SBN number. There is no typo in the previous sentence.--></ref>

컴퓨터용으로 설계된 최초의 고급 프로그래밍 언어는 [[콘라트 추제]]가 개발한 [[플랑칼퀼]](Plankalkül)이다.<ref>{{ill|Wolfgang Giloi{{!}}Giloi, Wolfgang, K.|de|Wolfgang Giloi}} (1997). "Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language". IEEE Annals of the History of Computing, vol. 19, no. 2, pp.&nbsp;17–24, April–June, 1997. [http://doi.ieeecomputersociety.org/10.1109/85.586068 (abstract)]</ref> 그러나 이 언어는 추제의 기간 동안 구현되지는 않았으며 그의 초창기 기여는 [[제2차 세계 대전]]으로 인해 다른 개발로부터 상당 부분 분리된 상태였다. 영향력 있는 최초의 고급 언어는 [[포트란]]으로서 IBM의 초창기 [[오토코드]] 시스템의 기계 독립적 개발 언어였다.

== 실행 방식 ==
현대의 고급 언어를 실행하는 데에는 일반적으로 3가지 방식 가운데 하나가 쓰인다:
; 해석(인터프리터): [[인터프리트 언어|인터프리터 언어]]로 작성된 코드가 있을 때 컴파일 과정 없이 문법을 읽고 직접 실행한다. 인터프리터라는 프로그램은 각 프로그램 문을 읽고 프로그램 흐름을 추적하여 무엇을 할지 결정하고 이를 수행한다. 인터프리터와 컴파일러가 결합된 형태의 경우 프로그래밍 문을 기계어로 컴파일하고 그것을 실행한 뒤, 기계어는 버리고 줄을 다시 실행할 때 해석을 새로 다시 한다. 아래에 나열된 다른 두 종류에 비해 인터프리터는 가장 단순한 언어의 동작 구현체이다.
; 컴파일 : [[컴파일 언어]]로 작성된 코드가 있을 때 문법은 실행 가능한 형태로 변환된 다음 실행한다. 컴파일에는 두 종류가 있다:
:; 기계어 생성 : 일부 컴파일러들은 소스 코드를 [[기계어]]로 직접 컴파일한다. 컴파일을 위한 원초적인 방식이며, 기계어로 직접적으로 완전하게 변환된 언어들은 순수하게 컴파일된 언어(truly compiled language)라 부른다. ([[어셈블리어]] 참고.)
:; 중간 표현 : 특정 언어로 작성된 코드가 중간 표현으로 컴파일되면, 이 표현은 소스 코드를 다시 읽어들이지 않고도 나중에 실행할 것을 염두에 두고 최적화하거나 저장해 둘 수 있다. 중간 표현이 저장될 때 이는 [[바이트 코드]]와 같은 형태일 수 있다. 그 다음 중간 표현은 실행을 위해 해석되거나 추가적인 컴파일 과정을 거친다.
; 소스 대 소스 번역 (다른 프로그래밍 언어로의 번역): 특정 언어로 작성된 코드는 저급 프로그래밍 언어라는 형태로 변환될 수 있으며, 이를 위한 네이티브 코드 컴파일러들이 널리 이용된다. [[자바스크립트]]와 [[C (프로그래밍 언어)|C 프로그래밍 언어]]는 이러한 번역기들을 위한 주요 대상이다. (예로서 [[커피스크립트]], [[치킨 스킴]], [[에펠 (프로그래밍 언어)|에펠]] 참고.)

== 같이 보기 ==
* [[추상화 (컴퓨터 과학)]]
* [[저급 프로그래밍 언어]]

== 각주 ==
{{각주}}

{{프로그래밍 언어의 유형}}
{{전거 통제}}

[[분류:고급 프로그래밍 언어| ]]
[[분류:프로그래밍 언어 분류]]