알골(ALGOL)은 Algorithmic Language의 약자로서, 1950년대 후반 유럽을 중심으로 개발된 프로그래밍 언어이다. 당시 미국 IBM에서 개발한 포트란(Fortran)에 대항하기 위해 1958년 스위스 취리히의 국제회의에서 제안되었다. 알고리즘의 연구 개발에 이용되었으나, 널리 보급되지는 못하였다.
개요
알골(ALGOL)은 알고리즘언어(ALGOrithmic Labguage)의 약자로 이 언어는 계산과정묘사 지향적인 언어이자 알고리즘 묘사 지향적인 언어이다. 대표적인 블록구조 언어이기도하다. 대수 계산이나 논리적인 연산 처리를 하는 경우에 적합한 프로그램 언어이다. 1960년에 ALGOL 60으로서 문법서가 제정되었다. 그 후 ALGOL 69도 발표되었다. [1] 알골은 세계 최초의 구조화언어로서 엄격한 기초이론과 형식화된 어법 규칙을 가진다.
역사
- 알골은 1958년 IBM의 연구 개발팀이 개발한 것으로 같은 해 취히리에서 개최한 국제 상업 학술 컴퓨터 위원회에서 ACM(Association of Computing Machinery) 팀과 당시 연방 독일의 응용수학과 역학협회(GAMM)가 건의한 알고리즘 표시법을 종합해 ALGOL 58을 만들었다. 1959년에 IBM은 ALGOL 코드를 실행시켰다.
- 1960년 국제정보처리학회연합(IFIP)에서 유럽의 학자들을 중심으로 만들어졌다. 1월 튜링상 수상자 앨런 펄리스는 파리에서 열린 전 세계 일류 소프트웨어 전문가들이 참석한 토론회에서 <알고리즘 언어 ALGOL 60 보고>를 발표해, 알고리즘 언어 ALGOL 60을 확립했다. [2] 유럽의 학자들 중심으로 만들어졌기 때문에 유럽쪽에서 많이 사용되었고 미국쪽에서는 포트란을 많이 사용하였다고 한다.
- 알골 50 : 당시 이름은 IAL였다.
- 알골 60 : 1960의 준말로 문법이 BNF 표기법으로 기술,구조화된 프로그래밍의 형태를 갖춘다. BCPL, B, 파스칼, 시뮬라, C 등의 다른 수많은 프로그래밍 언어에 영향을 주었다.또한 알골 60은 어휘 범위의 네스티드 함수 정의를 처음 추가한 언어이다. 알골 60'이라는 새로운 언어는 신대륙의 포트란에 대항하기 위해 만들어졌다.[3]알골은 포트란(FORTRAN) 언어와 비교했을 때 두 가지 장점이 있다.
- 프로그래밍 언어 중에서 처음으로 지역 변수를 사용 : FORTRAN 언어는 전역변수(하나의 변수는 모든 코드에서 하나의 의미로만 사용)만 사용 가능했지만, ALGOL은 지역변수를 사용하면서 하나의 코드 안에서 다른 함수라면 다른 의미를 가질 수 있었다.
- 재귀라는 프로그래밍 설계 사상 : 재귀는 하나의 문제를 여러 개의 작은 문제로 나누고, 각각의 작은 문제 안에서 해결하고 전체적인 답을 얻는 것을 말한다. 포트란 언어의 설계자인 배커스는 ALGOL 문법을 설계하던 중 전후 문맥이 무관한 문법형식이라는 그의 최신 연구 결과를 사용해 ALGOL 언어 회의에서 논문을 교류했다. 마감일을 넘겨 논문집에 실리지는 못했지만 덴마크의 수학자 페테르 나우르가 큰 영감을 받았고 배커스의 문법에 대한 감수와 수정을 해서 더욱 완벽하게 만들었다. 여기서 컴퓨터계의 유명한 베커스-나우르 표기법(BNF)이 탄생했다. 이 표기법은 <알고리즘 언어 ALGOL 60 보고>안에 쓰였다. [2]
- 알골 68 :1968년에는 ALGOL 68이 개발되었다. ALGOL-10과 매우 유사하며, IFIP(국제 정보 처리 학회)에서 발표된 언어의 이름으로 알골 60을 발전시켜 다목적용의 강력한 언어로 만들 계획으로 설계했다. 2단계 문법 Wijngaarden 표기법으로 문법이 기술했고, 다양한 데이터형을 다루는 융통성이 주어져 과학 계산용의 범주를 벗어나 사무 처리용까지 적용범위를 확대했다.[4] 기능이 너무 복잡해 실제로는 많이 사용되지 않고 있다. 일괄처리 체제에 적합한 입출력 방식으로 되어있어 주로 일괄처리시스템에 사용된다.[5]
특징
수치 계산 절차를 표준화된 형태로 정확하게 컴퓨터에 나타내는 데 쓰이는 산술 언어로 이 언어는 컴파일러가 있는 상황에서 컴퓨터에 수치 계산 과정을 인식시키는 것 외에 개인 간에 수치 계산 과정을 전달하기 위한 수단으로도 사용된다. 국제 협약에 의해 표준화된 국제 대수 언어(International Algebraic Lan-guage)는 알골의 전신이다. [6]
프로그램을 여러 단계의 블록으로 나누어 작성할 수 있도록 해 주는 언어의 구조. 즉 프로그램 작성 시 일련의 문장을
하나의 프로시저나 함수로 묶고 이러한 프로시저나 함수들을 계층적으로 조직하여 하나의 프로그램을 만들어 내는 블록구조를 사용하여
하향식 설계를 자연스럽게 구현하여 프로그램을 이해하기 쉽다.
또한 지역 변수와 다른 블록을 포함하며 변수의 유효 범위가 블록 내로 제한되므로, 기억 장소가 절약되고 오류의 가능성이 적다.[7]
각주
- ↑ 전기용어사전〈알골 - 용어 해설〉 , 《네이버 지식백과》
- ↑ 2.0 2.1 담 정〈제3세대언어-고급언어〉 , 《소프트웨어 문화개론》, 2016-08-31
- ↑ 이성규 기자, 〈IT 거인들은 왜 프로그래밍 언어에 집착할까〉, 《BLOTER》, 2014-06-18
- ↑ 시사상식사전〈용어-시사상식사전〉 , 《네이버 지식백과》
- ↑ 컴퓨터인터넷IT용어대사전〈알골 68〉 , 《네이버 지식백과》
- ↑ 컴퓨터인터넷IT용어대사전〈알골 60〉 , 《네이버 지식백과》
- ↑ IT용어사전〈블록 구조〉 , 《네이버 지식백과》
참고 자료
- 전기용어사전, 〈알골 - 용어 해설〉, 《네이버 지식백과》
- 시사상식사전, 〈알골 - 시사상식사전〉, 《네이버 지식백과》
- 컴퓨터인터넷IT용어대사전, 〈알골 68〉, 《네이버 지식백과》
- 이성규 기자, 〈IT 거인들은 왜 프로그래밍 언어에 집착할까〉, 《BLOTER》, 2014-06-18
- 담 정, 〈제3세대언어-고급언어〉, 《소프트웨어 문화개론》, 좋은땅, 2016-08-31
같이 보기
이 알골 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.
|
개발 : 프로그래밍 □■⊕, 소프트웨어, 데이터, 솔루션, 보안, 하드웨어, 컴퓨터, 사무자동화, 인터넷, 모바일, 사물인터넷, 게임, 메타버스, 디자인
|
|
프로그래밍 언어
|
ASP • C 언어 • C++ • C# • CSS • D 언어 • HTML • HTML5 • JSP • PHP • R • XHTML • XML • XSLT • 고(Go) • 고급언어 • 기계어 • 델파이 • 러스트 • 루비 • 루아 • 리액트 • 리퀴디티 • 무브 • 미켈슨 • 베이직 • 브이비스크립트 • 비주얼 C++ • 비주얼베이직(VB) • 비주얼베이직닷넷(VB.NET) • 솔리디티 • 스몰토크 • 스위프트 언어 • 스칼라 • 스크립트 언어 • 알골 • 어셈블리 • 언리얼스크립트 • 얼랭 • 에이잭스(Ajax) • 엠에프씨(MFC) • 오브젝티브-C • 오브젝트 파스칼 • 오카멜 • 웹어셈블리(WASM) • 이와즘(eWASM) • 자바 • 자바스크립트 • 저급언어 • 제이슨(JSON) • 제이쿼리(jQuery) • 카멜 • 코볼 • 코틀린 • 콜드퓨전 • 타입스크립트 • 파스칼 • 파워스크립트 • 파이썬 • 펄(Perl) • 포트란 • 프로씨(Pro-C) • 피엘에스큐엘(PL/SQL) • 피엘원(PL/I) • 하스켈
|
|
개발방법론
|
CBD 개발방법론 • EA • 구조적 개발방법론 • 객체지향 개발방법론 • 라이브러리 • 람다 아키텍처 • 모듈 • 모듈화 • 벤치마킹 • 소프트웨어 개발방법론 • 스크럼 • 스프린트 • 아키텍처 • 아키텍트 • 애자일 • 웹개발방법론 • 정보공학 개발방법론 • 컴포넌트 • 테일러링 • 템플릿 • 폭포수 모델 • 프로젝트 • 프로토타입 • 피드백
|
|
코딩
|
EUC-KR • UTF-8 • 값 • 글루웨어 • 노팔로우 링크 • 두팔로우 링크 • 디버깅 • 디코딩 • 마크업 • 버그 • 부트스트랩 • 세이브포인트 • 소스코드 • 시큐어코딩 • 아스키 • 액티브엑스 • 오픈소스 • 유니코드 • 인코딩 • 재컴파일 • 주석 • 컴파일 • 컴퓨터 프로그램 • 코드 • 코딩 • 태그 • 테스트 • 테이블 • 텍스트 • 파싱 • 퍼블리싱 • 퓨니코드 • 하드코딩 • 하이퍼링크 • 하이퍼텍스트
|
|
프로그래밍
|
C 명령어 • 객체 • 객체지향 • 객체지향 프로그래밍 • 거짓 • 관계연산자 • 기본형 변수 • 널 • 논리 • 논리연산 • 논리연산자 • 다중상속 • 다형성 • 대입 • 대입문 • 대입연산자 • 더블 • 도스 명령어 • 디폴트 • 레지스터변수 • 루프 • 리눅스 명령어 • 리턴 • 메모리 주소 • 메소드 • 멤버 • 명령문 • 명령어 • 무한루프 • 문자 • 문자열 • 바이트 • 반복문 • 배열 • 변수 • 분기 • 분기문 • 불린 • 브레이크 • 비교연산자 • 비트연산자 • 산술연산자 • 상속 • 상수 • 생성자 • 선언 • 선언문 • 설정자 • 속성 • 스위치 • 스태틱 • 시프트연산자 • 실행 • 실행문 • 어노테이션 • 에코 • 역참조 • 연산 • 연산문 • 연산자 • 오버로딩 • 오버라이딩 • 외부변수 • 윈도우 명령어 • 유닉스 명령어 • 인스턴스 • 인스트럭션 • 인클루드 • 인터페이스 • 임포트 • 입력 • 입력문 • 입출력 • 입출력문 • 자료형(데이터 타입) • 자바 명령어 • 자바 예약어 • 자바 컬렉션 • 전역변수 • 접근자 • 접근제어자 • 정보은닉 • 정수형 • 정적변수 • 제어 • 제어문 • 제어자 • 조건 • 조건문 • 조건연산자 • 주소 • 증감연산자 • 지역변수 • 참 • 참조 • 참조변수 • 초기화 • 추상메소드 • 추상클래스 • 추상화 • 출력 • 출력문 • 캡슐화 • 케이스 • 클래스 • 파라미터(매개변수) • 파이널 • 패키지 • 퍼블릭 • 포인터 • 프라이빗 • 프로텍티드 • 필드(멤버변수) • 함수 • 환경변수
|
|
명령어
|
abstract • array • boolean • break • byte • case • char • continue • default • double • do while • echo • elif • else • else if • false • final • float • for • gosub • goto • if • if else • import • include • int • join • long • long long • null • print • printf • println • private • protected • public • return • scanf • short • stdio.h • static • string • switch • temp • then • true • unsigned • void • while
|
|
디자인패턴
|
구조패턴 • 동시성패턴 • 동시실행패턴 • 모델-뷰-컨트롤러 패턴 • 상태패턴 • 생성패턴 • 싱글톤패턴 • 아키텍처패턴 • 전략패턴 • 커맨드패턴 • 행동패턴
|
|
프로그래밍 인물
|
귀도 반 로썸 • 그레이스 머레이 호퍼 • 니클라우스 비르트 • 댄 브릭클린 • 더그 커팅 • 데니스 리치 • 리누스 토르발스 • 리처드 그린블라트 • 마거릿 해밀턴 • 마크 앤드리슨 • 빈트 서프 • 빌 게이츠 • 빌 조이 • 스티브 잡스 • 에이다 러브레이스 • 제임스 고슬링 • 척 벤턴 • 켄 톰슨 • 팀 패터슨
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|