[CS스터디] 알고리즘은 이상, 프로그래밍은 현실

G-NOTE·2022년 7월 26일
0

항해99

목록 보기
17/36

알고리즘은 이상, 프로그래밍은 현실

  • 알고리즘은 추상적이고 이상적인 절차를 기술한 것이기 때문에 현실 고려 사항은 무시하게 된다.
  • 반면 프로그램은 실제로 해당 작업을 완료하기 위해 수행해야 하는 단계를 서술한다.

따라서 프로그램은 추상화되어 있는 알고리즘을 컴퓨터가 직접 처리할 수 있는 형태로 구체화될 것이라고 볼 수 있다.

다른 프로그램을 처리하기 위한 프로그램

1950년대 초, 프로그래밍에 수반되는 단순 반복 작업을 처리하기 위한 프로그램이 등장하면서 프로그래밍의 효율성을 크게 높였고, 이는 소프트웨어의 발전에 큰 기여를 했다.

이처럼 특정한 처리를 수행하는 프로그램을 assembler라고 한다. 이 프로그램 작성에 필요한 언어를 어셈블리어(assembly language)라고 하며, 이 수준의 프로그래밍을 어셈블리어 프로그래밍(assembly language programming)이라고 한다.

어셈블리어(assembly language)

어셈블리어는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 어셈블리어는 기계어 형태의 오브젝트 코드로 해석해주는 컴퓨터 언어 프로그램인 어셈블러(assembler)를 통해 기계어로 번역된다.

기계어는 0, 1로만 이루어져있다. 기계가 사용하는 숫자의 의미를 프로그래머가 외워서 사용하기엔 매우 어렵고, 낮은 레벨에서 이 숫자의 의미를 사람이 이해하기 쉬운 언어로 번역한 것이다.

mov al, 061h

기계어(machine language)

기계어는 CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어를 의미한다.
기계어는 어셈블리어와 일대일 대응이 되므로 프로그래밍에서 기계어는 대부분 어셈블리어를 통해 작성된다.

10110000 01100001

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

1950년대 말 ~ 1960년대 초에 특정 프로세서 아키텍처에 독립적인 고수준 프로그램 언어가 개발되었다.
고수준 언어로 작성된 코드는 번역기 프로그램을 통해 대상 프로세서의 어셈블리어로 된 명령어로 변환된 다음, 어셈블러에 의해 컴퓨터가 이해할 수 있는 비트로 변환되어 메모리에 로드되고 실행된다.

컴파일러(compiler)

컴파일러란 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 의미한다.
주로 사람들이 이해하기 쉬운 고급 언어에서 컴퓨터가 이해할 수 있는 기계어로 번역하기 위해 사용한다.

컴파일러가 지켜야 하는 조건

  • 컴파일러는 언어를 다른 언어로 변경하는 과정에서 기존 언어가 가진 프로그램의 뜻을 보존해야 한다.
  • 실용적인 측면에서, 컴파일러는 입력된 프로그램을 어떤 면에서든지 개선해야 한다. (EX. 고급 언어를 기계어로 컴파일하면 기계가 이해할 수 없었던 언어를 이해할 수 있도록 '개선'한 것이 된다.)

과거에는 최대한 효율적으로 코드를 생성하기 위해 프로세스 단계의 명령어까지 고려했지만, 현재는 풍족한 메모리와 컴퓨터의 성능 향상으로 프로그래머가 개발 명령어 수준의 효율성까지 걱정하는 일은 줄어들었다.

고급 언어와 저급 언어

고급 언어
사람이 이해하기 쉽게 작성된 프로그래밍 언어
저급 언어보다 느리지만 가독성이 높고 다루기 쉽다.
고급 언어를 사용하면 효율적인 프로그래밍을 위해 특정 프로세서의 명령어 레퍼토리를 알아야 할 필요가 없다.

저급 언어
컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어
실행속도가 매우 빠르지만 사람이 배우기 어렵고 유지보수가 어렵다.

초기 고수준 언어

포트란(Fortran)

과학과 공학 분야에서 계산을 표현하기 위한 목적으로 사용되는 언어로, 현재까지도 사용하는 언어이다.

코볼(COBOL, Common Business Oriented Language)

사무 데이터 처리 목적으로 사용된 언어로, 재고 관리, 송장 작성, 급여 계산 등에 사용되는 자료 구조와 계산을 쉽게 표현할 수 있다.
오래전에 개발되었지만 현재까지도 사용되는 코볼 프로그램은 많다.

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

1964년 프로그래밍 교육을 위한 쉬운 언어로 만들어졌고, 간단하며 컴퓨팅 자원을 적게 요구하기 때문에 개인용 컴퓨터에서 사용할 수 있는 첫 번째 고수준 언어였다.

참조

1일 1로그 100일 완성 IT 지식 (저자 : 브라이언 W. 캐너핸)
https://ko.wikipedia.org/wiki/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%EC%96%B4
https://ko.wikipedia.org/wiki/%EA%B8%B0%EA%B3%84%EC%96%B4
https://opentutorials.org/course/2471/13906
https://ko.wikipedia.org/wiki/%EA%B3%A0%EA%B8%89_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4

profile
FE Developer

0개의 댓글