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

심채운·2022년 8월 3일
0

cs

목록 보기
3/15

고수준 프로그래밍 언어의 개발

1950년 말, 1960년 초에 컴퓨터가 프로그래머를 대신해서 더많은 일을 수행하게 되는 또 다른 움직임이 일어났다. 그것은 특정 프로세서 아키텍처에 독립적인 고수준 프로그래밍 언어 (High-level porgramming language)의 개발이다. 고수준 언어를 쓰면 사람이 표현하는 방식에 가까운 용어로 계산 과정을 작성할 수 있다. 고수준 언어로 작성된 코드는 번역기 프로그램을 통해 대상 프로세서의 어셈블리 언어로 된 명령어로 변환된 다음, 어셈블러에 의해 비트로 변환되어 메모리에 로드되고 실행된다. 번역기 프로그램은 보통 컴파일러(Compiler)라고 부른다.

의미

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

Z = X + Y

이것은 'X와 Y라는 메모리 위치에서 값을 가져와, 두 값을 더하고, Z라는 메모리 위치에 결과를 저장하라'라는 의미이다.

각 어셈블러는 각자의 어셈블리 언어 명령어를 실제 명령어의 비트 패턴으로 변환하는 일뿐만 아니라 변수 X,Y,Z를 저장할 메모리 위치를 확보하는 일을 담당. 비트 패턴은 각각의 컴퓨터에 대해 거의 완전히 다르게 변환된다. 같은 입력 표현이 두 개의 다른 컴파일러와 각각의 어셈블러를 거치면서 서로 다른 두 가지 명령어와 비트패턴으로 만들어진다.

프론트엔드는 고수준 프로그래밍 언어로 작성된 프로그램을 처리해서 어떤 중간 형태로 만들고, 각 백엔드는 공통된 중간 표현을 특정 아키텍처에 맞는 어셈블리 언어로 변환한다.

  1. 고수준 언어는 어셈블리 언어에 비해 큰 이정을 갖는다. 사람들이 생각하는 방식에 더 가까워 배우고 사용하기 더 쉽다. 고수준 언어에서는 프로그램을 효율적으로 짜기 위해 특정 프로세서의 명령어 레퍼토리를 알아야할 필요가 없다.
  2. 고수준 언어로 작성된 프로그램은 특정 아키텍처에 종속되지 않는다. 그러므로 같은 프로그램이 여러 아키텍처상에서 실행될 수 있다.

컴파일 단계는 몇가지 명백한 에러를 미리 점검하게 해준다. 여기에는 철자오류, 괄호 불일치 같은 구문 오류, 정으되지 않은 변수에 대한 연산 같은 것들이 포함된다. 실행 프로그램이 만들어지려면 프로그래머가 이러한 에러를 반드시 고쳐야만 한다. 반면 어셈블리 언어 프로그램에서는 구문 오류 이외의 에러는 검출하기 어렵다. 어셈블러는 명령어의 실행순서까지는 상관하지 않아서 논리적인 흐름이나 전후 관계를 파악하지 못하기 때문이다.

어셈블리어란?

어셈블리어란 사용자가 이해하기 어려운 기계어 대신에 명령 기능을 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어입니다.

컴파일 vs 어셈블

고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일(Complie)한다고 하고 어셈블리어로 작성한 원시 프로그램을 어셈블러가 번역하는 작업을 어셈블(Assemble)한다고 합니다.

초기의 고수준 언어

초기 고수준 언어들은 특정 응용 분야에 집중된 형태였다.

  • FORTRAN은 초창기 언어 중 하나인데, '수식 변환 Formula Translation'에서 이름이 유래했고 오늘날에는 '포트란Fortran'으로 표기한다. 포트란은 존 배커스가 이끈 IBM 팀에서 개발했고, 과학과 공학 분야에서 계산을 표현하는데 매우 성공적으로 사용됐다. 많은 과학자들이 첫 프로그래밍 언어로 포트란을 배웠다.

  • 1950년대 후반에 등장한 코볼 CO-BOL이다. 코볼은 어셈블리 언어를 대체할 고수준 언어를 만들기 위한 그레이스 호퍼의 작업 결과물에 큰 영향을 받았다. 코볼은 특히 사무 데이터 처리 목적으로 사용되었고, 재고 관리, 송장 작성, 급여 계산 등에 사용되는 자료 구조와 계산을 쉽게 표현할 수 있는 언어적 특징이 있다.

  • 당시의 또 다른 언어인 베이직 BASIC은 1964년에 다트머스 대학에서 일하던 존 케메니와 톰커츠가 개발했다. 베이직은 프로그래밍 교육을 위한 쉬운 언어로 만들어졌다. 베이직은 특히 간단하면서 컴퓨팅 자원을 적게 필요로 해서 개인용 컴퓨터에서 사용할 수 있는 첫 번재 고수준 언어였다. 마이크로소프트 창업자인 빌 게이츠와 폴 앨런은 1975년에 알테어 마이크로컴퓨터용 베이직 컴파일러를 만들면서 사업을 시작했는데, 이것이 마이크소프트의 첫 번째 제품이다.

결론

초창기에는 컴퓨터가 비싸고, 느리고, 성능에도 한계가 있어, 고수준 언어로 작성된 프로그램이 매우 비효율적일 것이라는 우려가 있었다. 컴파일러가 숙련된 어셈블리 언어 프로그래머가 작성한 것만큼 작고 효율적인 어셈블리 코드를 잘 만들지 못했기 때문이다. 지금은 컴퓨터가 수백만 배 빠르고 메모리가 풍족해졌기에 프로그래머가 개별 명령어 수준의 효율성까지 걱정하는 경우는 드물다.

profile
불가능, 그것은 사실이 아니라 하나의 의견일 뿐이다. - 무하마드 알리

0개의 댓글