Written by JS970
on
on
프로그래밍언어론 2023-03-16 수업정리
Flow
- IAL(ALGOL)(1958)
- COBOL(1960)
- APL(1962), SNOBOL(1962)
- PL/I(1964), C(1972)
- BASIC(1964)
IAL(ALGOL)(1958)
IAL
- International Algorithmic Language
- FORTRAN을 만든 사람인 John Backus등 유럽과 미국의 여러 사람들의 합작으로 만들어졌다.
- 이 언어의 탄생 배경은 당시 사용되던 FORTRAN이 IBM 타겟 머신에서만 동작하였고, 이에 알고리즘 기술용 언어로 개발되었다.
- 출판, 논문, 발표 등에 사용되었다.
- 기계어로 바꿀 수 있었다.(mechanically translatable into machine languages)
언어적 특징(ALGOL 58)
- 정형화된
type
개념을 사용하였다.(mode) - 식별자의 가변 길이를 지원했다.
- 입력 파라미터와 출력 파라미터를 구분했다.
- compund statement(start ... end) -> 블록
- 조건 분기문에 else if 구문이 추가되었다.
- 따로 I/O가 존재하지 않았다. 컴파일러 구현이 힘들어질 것이라고 생각하여 machine dependent하게 설계하였다.
언어적 특징(ALGOL 60)
- BNF(Backus - Naur - Form)의 구문 표기법을 채택했다.
- compund statement -> block statement(local scope)
- pass by name, pass by value의 인자 전달 방식을 지원한다.
- 재귀 프로시저, stck-dynamic array를 지원했다.
- 하지만 여전히 따로 I/O는 존재하지 않으며, String handling이 없었다.
평가
- BNF 방식의 채택
- 첫 번째 machine-independent language
- 복합문, 블록 구조를 처음으로 제안했다.
- I/O operation이 없어서 이식성이 떨어졌다.
- call by name방식 등 너무 flexible한 특징이 많아서 가독성이 좋지 않았다.
- 널리 사용되지는 않았다(FORTRAN이 있어서...)
COBOL(1960)
- Business Computing Environment로 개발되었다(common businiess oriented language).
- IBM에서는 동일한 목적으로 COMTRAN을 설계했었다.
- 사무용으로 미 해군에 의해 개발되었다.
- 60년대에 발표되었으나 50년대에 개발했으므로 BIG-4에 포함된다.
- FLOW-MATIC에 기반했다.
- FLOW-MATIC(on UNIVAC)
언어적 특징
- 수학 연산자로 영문 이름을 사용했다(ADD, SUB ...)
- Data부분과 Code부분이 완전히 분리되었다.
- 모든 선언(statement)은 동사로 시작한다.
Design Goal
- 최대한 간단한 영어와 비슷하게(자연어와 비슷하게) 보이게 만들었다.
- 덜 효율적이더라도 더 사용하기 쉽게 만들었다.
- Must not be biased by implementation problems
평가
- High-level language에서 macro의 개념을 처음으로 제시했다.
- 계층적 자료 구조가 처음으로 구현되었다.(구조체 -> record)
- 30자 이상의 긴 이름을 지원했다.
- 데이터 분할 및 파일 레코드에 대한 강력한 지원을 했다.
- 여전히 lagacy code로 널리 사용중이다.
APL(1962), SNOBOL(1962)
APL
- A Programming Language
- Matrix, Array 연산에 강했다.
- 초기에는 HDL(Hardware Description Language)로 개발되었다.
- Writability는 좋은데 readability는 좋지 않았다.(프로그램 가독성이 많이 떨어졌다)
- 후속인 APL2는 1984년에 IBM에서 개발되었으며, 2021susdp Log-On Software로 소유권이 매각되었다. 현재는 채험판만 무료로 사용 가능하다.
SNOBOL
- "StriNg Oriented and symBOlic Language"
- string manipulation language로 개발되었다.
- string pattern matching을 위한 강력한 operation을 제공한다.
- 이 언어에서 유래한 SNOWBOL이라는 언어도 있다.
BASIC(1964)
- non-science student도 배우기 쉽고, 사용하기 쉽게 개발되었다.
- "pleasant and friendly"하게 개발되었다.
- 과제 등의 제출을 위해 결과물이 빠르게 나오도록 개발되었다.
- 무료이다.
- User time이 Computer time보다 중요하게 여겼다.
- 이전의 패러다임에서는 computer time이 더 중요하게 여겨졌다.
평가
- time-sharing environment개념을 도입한 첫 번째 언어이다.
- 코드가 거의 기계어 수준이었다.(structure of the program is very poor)
APPLE II Emulator(for Windows) 를 통한 BASIC Programming 체험
PL/I(1964)
- 1964년 당시 기준으로 Scientific Computing -> IBM1620, 7090을 target machine 으로 FORTRAN으로 작업했다.(user group : SHARE)
- Business Computer영역에서는 IBM1401, 7080을 target machine으로 COBOL이 사용되었다.(user group : GUIDE)
- 이러한 상황 속에서 새로운 Universal Computing Environment가 필요했다.(Scienticif, Business 특화가 아닌 Universal)
- a new computer to support both kinds of applications
- a new language to support both kinds of applications
평가
- 동시 작업의 지원(concurrent tasks)
- 예외 처리 지원(exception handling)
- 재귀 프로시저 지원(ALGOL에서도 사용되었다.)
- pointer data type사용
- 배열의 cross section 을 지원했다.
- A(*, I) , B(*, 2, *) 와 같은 표현으로 배열 자르기를 지원했다
- 너무 크고 너무 복잡했다.
- 실제로 scientific, business분야에서 다 사용되기는 했으므로 부분적인 성공(?) 으로 보기도 한다.
C(1972)
- Dennis Ritchie에 의해 Bell연구소에서 1972년 개발되었다.
- 시스템 프로그래밍을 위해 개발되었다(UNIX)
- B언어에 기반하여 설계되었다.
- ALGOL 68, BCPL의 영향을 받은 언어이다.
- 이후 글에서 다시 다룬다.
평가
- complete type checking이 부족했다
- Flexible
- UNIX를 통해 광범위하게 사용되었다