본문 바로가기

TIL & WIL

CS 스터디_1일 1로그 100일 완성_26챕터

Chapter 26. 고수준 언어에서 프로그램 실행까지


# 고수준 프로그래밍 언어의 개발과 확대

1950년대 말~1960년대 초 >> 컴퓨터가 프로그래머를 대신하여 더 많은 일을 수행하게 되는 움직임이 일어남.

(프로그램 역사상 가장 중요한 발걸음이라고 저자는 표현한다)

▶ 특정 프로세서 아키텍처에 독립적인 '고수준 프로그래밍 언어(High-level programming language)' 개발인 것.

 

고수준 언어로 작성된 코드는,

1) 번역기 프로그램(컴파일러)를 통해 대상 프로세서의 어셈블리 언어로 된 명령어로 변환

2) 어셈블러에 의해 비트로 변환되어 메모리에 로드되고 실행

 

일반적인 고수준 언어에서는 두 수 X와 Y를 더하고 결과를 Z에 저장하는 계산이 다음과 같이 표현된다.

▶ Z = X + Y 

: X와 Y라는 메모리 위치에서 값을 가져와서, 두 값을 더하고, Z라는 메모리 위치에 결과를 저장하라!


# 고수준 언어의 장점

1) 사람들이 생각하는 방식에 더 가까워 배우고 사용하기 더 쉽다.

2) 특정 프로세서 명령어 레파토리를 알아야할 필요가 없으므로 더 많은 이들이 더 빨리 프로그래밍을 할 수 있다.

3) 특정 아키텍처에 종속되지 않기 때문에 같은 프로그램이 여러 아키텍처 상에서 실행될 수 있다.(다른 컴파일러로 컴파일 하기만 하면 됨)

4) 컴파일 단계에서 명백한 에러를 미리 점검할 수 있다.(철자오류, 괄호 불일치 같은 구문 오류, 정의되지 않은 변수에 대한 연산 등)

  ※ 어셈블리 언어 프로그램에서는 구문 오류 이외의 에러는 검출하기 어렵다.


# (책에서 예시로 드는) 고수준 프로그래밍 언어 여섯 가지

▶ 포트란(Fortran), C, C++, 자바(Java), 자바스크립트(JavaScript), 파이썬(Python) 

 


# 포트란(Fortran)

- 수식변환(Formula Translation)에서 이름이 유래함

- 존 배커스(John Backus)가 이끈 IBM팀에서 개발했고 이 공로를 인정받아 1977년 튜링상을 수상함

- 과학과 공학 분야에서 계산을 표현하는데 매우 성공적인 언어 >> 오늘날에도 건재함

 

<수 합산하기 포트란 프로그램>

integer num, sum
sum = 0
[10] read(5, *) num
if (num .eq. 0) goto 20
sum = sum + sum
goto 10
[20] write(6, *) sum
stop
end

 

# 코볼(COBOL, Common Business Oriented Language)

- 그레이스 호퍼(Grace Hopper)의 작업 결과물에 큰 영향을 받아 발전

- 호퍼는 초기 기계식 컴퓨터인 Havard Mark 1, 2개발 팀에서 일했고, 다음으로 Univac 1 개발에 참여한 사람임

- 사무데이터 처리 목적으로 사용 >> 재고 관리, 송장 작성, 급여 계산 자료 구조와 계산을 쉽게 표현할 수 있음

- 사용 하는 프로그래머는 많지 않아서 미국 뉴저지에서 COVID-19 시기, 실업수당 청구 처리하는 낡은 코볼 프로그램을 개선할 수

있는 프로그래머를 찾는데 애를 먹었다고...

 

# 베이직(BASIC, Beginner's All-purpose Symbolic Instruction Code)

- 1964년 다트머스 대학에서 일하던 존 케메니(John Kemeny)와 톰 커츠(Tom Kurtz)가 개발

- 프로그래밍 교육을 위한 쉬운 언어로 만들어짐

- 컴퓨팅 자원을 적게 필요로 해서 PC에서 사용할 수 있는 '첫 번째' 고수준 언어였음

- 마이크로소프트 창업자인 빌 게이츠와 폴 앨런이 1975년 처음으로 알테어Altair 마이크로 컴퓨터용 '베이직 컴파일러'를 만들면서

사업을 시작했는데, 이게 마이크로소프트의 첫 번째 작품이었음

- 베이직 언어의 주요한 변종인 마이크로소프트 비쥬얼 베이직(Visual Basic)이 오늘날에도 활발하게 사용됨

 

 


# 마무-으리

초창기에는 컴퓨터가 비싸고, 느리고, 성능에 한계가 있었기 때문에,

고수준 언어로 작성된 프로그램이 매우 비효율적일 것이라는 우려가 컸음

: 컴파일러 < 숙련된 어셈블리 언어 프로그래머♥

 

컴파일러 개발자들은 손으로 작성한 것만큼 좋은 코드를 생성하고자 노력했고,

이는 고수준 프로그래밍 언어를 확립하는데 큰 도움이 됨

 

지금은 컴퓨터가 수백만 배 빠르고 메모리가 풍족해 졌기 때문에,

프로그래머가 개별 명령어 수준의 효율성까지 걱정하는 경우는 드묾