{{위키데이터 속성 추적}}
{{Infobox programming language
| name = ALGOL 60
| paradigm = [[절차적 프로그래밍|절차적]], [[명령형 프로그래밍|명령형]], [[구조적 프로그래밍|구조적]]
| released = {{시작 날짜와 나이|1960}}
| designer = [[존 배커스|배커스]], [[Friedrich L. Bauer|Bauer]], [[Julien Green|Green]], [[Charles Katz|Katz]], [[존 매카시 (컴퓨터 과학자)|존 매카시]], [[페테르 나우르|나우르]], [[앨런 펄리스|펄리스]], [[Heinz Rutishauser|Rutishauser]], [[Klaus Samelson|Samelson]], [[Adriaan van Wijngaarden|van Wijngaarden]], [[Bernard Vauquois|Vauquois]], [[Joseph Henry Wegstein|Wegstein]], [[Michael Woodger|Woodger]]
| influenced_by = [[알골 58]]
| influenced = 이후에 나온 대부분의 명령형 언어 (이른바 알골 계열 언어). 예: [[시뮬라]], [[CPL (프로그래밍 언어)|CPL]], [[파스칼 (프로그래밍 언어)|파스칼]], [[에이다 (프로그래밍 언어)|에이다]], [[C (프로그래밍 언어)|C]]
}}
'''알골 60'''(ALGOL 60, '''ALGO'''rithmic '''L'''anguage 19'''60'''의 준말)은 [[알골 (프로그래밍 언어)|알골]] 계열의 컴퓨터 프로그래밍 언어의 멤버이다. [[BCPL]], [[B (프로그래밍 언어)|B]], [[파스칼 (프로그래밍 언어)|파스칼]], [[시뮬라]], [[C (프로그래밍 언어)|C]] 등의 다른 수많은 프로그래밍 언어에 영향을 주었다. [[알골 58]]은 코드 블록 및 이들을 제거할 <code>begin</code>과 <code>end</code> 쌍을 도입하였다. 알골 60은 [[범위|어휘 범위]]의 [[네스티드 함수]] 정의를 처음 추가한 언어이다.

== 역사 ==
[[존 배커스]]는 알골 58에 맞춘 프로그래밍 언어를 기술하는 [[바쿠스-나우르 표기법|바쿠스 표기법]]을 개발하였다. [[페테르 나우르]]는 알골 60에 맞추어 이를 개선하고 확장하였으며 [[도널드 커누스]]의 제안에 따라 이름을 [[바쿠스-나우르 표기법]]으로 변경하였다.<ref>Knuth, Donald E. (1964) Backus Normal Form vs Backus Naur Form. Communications of the ACM 7(12):735-736</ref>

== 특성 ==
=== 알골 60 예비 낱말 및 제한되는 식별자 ===
표준 [[:en:Burroughs large systems|Burroughs large systems]]의 하부 언어에서 35가지 예비 낱말(예약어)이 있다.:
{|
|
* <code>ALPHA</code>
* <code>ARRAY</code>
* <code>BEGIN</code>
* <code>BOOLEAN</code>
* <code>COMMENT</code>
* <code>CONTINUE</code>
* <code>DIRECT</code>
|
* <code>DO</code>
* <code>DOUBLE</code>
* <code>ELSE</code>
* <code>END</code>
* <code>EVENT</code>
* <code>FALSE</code>
* <code>FILE</code>
|
* <code>FOR</code>
* <code>FORMAT</code>
* <code>GO</code>
* <code>IF</code>
* <code>INTEGER</code>
* <code>LABEL</code>
* <code>LIST</code>
|
* <code>LONG</code>
* <code>OWN</code>
* <code>POINTER</code>
* <code>PROCEDURE</code>
* <code>REAL</code>
* <code>STEP</code>
* <code>SWITCH</code>
|
* <code>TASK</code>
* <code>THEN</code>
* <code>TRUE</code>
* <code>UNTIL</code>
* <code>VALUE</code>
* <code>WHILE</code>
* <code>ZIP</code>
|}

표준 Burroughs large systems의 하부 언어에는 71개의 제한된 식별자가 있다:
{|
|style="vertical-align: top"|
* <code>ACCEPT</code>
* <code>AND</code>
* <code>ATTACH</code>
* <code>BY</code>
* <code>CALL</code>
* <code>CASE</code>
* <code>CAUSE</code>
* <code>CLOSE</code>
* <code>DEALLOCATE</code>
* <code>DEFINE</code>
* <code>DETACH</code>
* <code>DISABLE</code>
* <code>DISPLAY</code>
* <code>DIV</code>
* <code>DUMP</code>
|style="vertical-align: top"|
* <code>ENABLE</code>
* <code>EQL</code>
* <code>EQV</code>
* <code>EXCHANGE</code>
* <code>EXTERNAL</code>
* <code>FILL</code>
* <code>FORWARD</code>
* <code>GEQ</code>
* <code>GTR</code>
* <code>IMP</code>
* <code>IN</code>
* <code>INTERRUPT</code>
* <code>IS</code>
* <code>LB</code>
|style="vertical-align: top"|
* <code>LEQ</code>
* <code>LIBERATE</code>
* <code>LINE</code>
* <code>LOCK</code>
* <code>LSS</code>
* <code>MERGE</code>
* <code>MOD</code>
* <code>MONITOR</code>
* <code>MUX</code>
* <code>NEQ</code>
* <code>NO</code>
* <code>NOT</code>
* <code>ON</code>
* <code>OPEN</code>
|style="vertical-align: top"|
* <code>OR</code>
* <code>OUT</code>
* <code>PICTURE</code>
* <code>PROCESS</code>
* <code>PROCURE</code>
* <code>PROGRAMDUMP</code>
* <code>RB</code>
* <code>READ</code>
* <code>RELEASE</code>
* <code>REPLACE</code>
* <code>RESET</code>
* <code>RESIZE</code>
* <code>REWIND</code>
* <code>RUN</code>
|style="vertical-align: top"|
* <code>SCAN</code>
* <code>SEEK</code>
* <code>SET</code>
* <code>SKIP</code>
* <code>SORT</code>
* <code>SPACE</code>
* <code>SWAP</code>
* <code>THRU</code>
* <code>TIMES</code>
* <code>TO</code>
* <code>WAIT</code>
* <code>WHEN</code>
* <code>WITH</code>
* <code>WRITE</code>
|}

또, 고유 함수의 이름도 존재한다.

==== 표준 연산자 ====
{|border="1" style="border-collapse: collapse;"
!bgcolor=#cccccc  COLSPAN=2 ALIGN=CENTER|우선 순위
!bgcolor=#cccccc|연산자
|-
|ALIGN=CENTER ROWSPAN=3| 우선 산술 ||ALIGN=CENTER| 제1 || ↑ (power)
|-
|ALIGN=CENTER| 제2 || ×, / (real), ÷ (integer)
|-
|ALIGN=CENTER| 제3 || +, -
|-
|ALIGN=CENTER COLSPAN=2| 제2 || <, ≤, =, ≥, >, ≠
|-
|ALIGN=CENTER COLSPAN=2| 제3 || ¬ (not)
|-
|ALIGN=CENTER COLSPAN=2| 제4 || ∧ (or)
|-
|ALIGN=CENTER COLSPAN=2| 제5 || ∨ (and)
|-
|ALIGN=CENTER COLSPAN=2| 제6 || ⊃ (implication)
|-
|ALIGN=CENTER COLSPAN=2| 제7 || ≡ (equivalence)
|}

== 같이 보기 ==
* [[알골 (프로그래밍 언어)|알골]]
* [[알골 58]]

== 참조 ==
<references />

== 참고 문헌 ==
* {{서적 인용|first=Edsger W.|last=Dijkstra|authorlink=Edsger Dijkstra|제목="ALGOL 60 Translation: An ALGOL 60 Translator for the X1 and Making a Translator for ALGOL 60|year=1961|institution=Mathematisch Centrum|location=Amsterdam|number=35|url=http://www.cs.utexas.edu/users/EWD/MCReps/MR35.PDF}}
* B. Randell and L.J. Russell, ''ALGOL 60 Implementation: The Translation and Use of ALGOL 60 Programs on a Computer''. Academic Press, 1964. The design of the '''Whetstone Compiler'''. One of the early published descriptions of implementing a compiler. See the related papers: [http://www.cs.ncl.ac.uk/research/pubs/articles/papers/427.pdf Whetstone Algol Revisited], and [https://web.archive.org/web/20100525044658/http://www.cs.ncl.ac.uk/publications/books/papers/124.pdf The Whetstone KDF9 Algol Translator] by B. Randell

== 외부 링크 ==
* [http://www.masswerk.at/algol60/report.htm Revised Report on the Algorithmic Language Algol 60] by Peter Naur, et al. ALGOL definition
* A BNF [https://web.archive.org/web/20110720002957/http://www.lrz.de/~bernhard/Algol-BNF.html syntax summary] of ALGOL 60

{{전거 통제}}

[[분류:절차적 프로그래밍 언어]]
[[분류:구조적 프로그래밍 언어]]
[[분류:알골 프로그래밍 언어 계열]]
[[분류:시스템 프로그래밍 언어]]
[[분류:ISO 표준 프로그래밍 언어]]