코딩일상

[CS스터디]고수준 언어에서 프로그램 실현까지!! 본문

Study/CS

[CS스터디]고수준 언어에서 프로그램 실현까지!!

solutionMan 2022. 8. 4. 13:25
반응형

고수준언어?? 저수준 언어??

컴퓨터에 가까울 수록 저수준 언어, 인간과 가까울수록 고수준 언어라고 한다.

컴파일링이란 고수준 언어를 저수준 언어로 변환하는 과정이다.

저수준 언어

컴퓨터 친화적이기에, 컴퓨터가 잘 이해할 수 있도록 아주 구체적이고 꼼꼼하게 작성해야 오류를 막을 수 있다. 따라서 아주 정밀한 문법이 요구되며, 인간이 작성하기에 어렵고 유지보수가 불편하다는 단점이 있다.

 

그러나 철저한 문법을 지키기 때문에 여럿이 협업할 때 실수를 방지할 수 있으며, 컴퓨터가 이해하기에 쉬워 저사양 컴퓨터에서도 빠르게 동작할 수 있다는 장점이 있다. IPTV, 복합기, 스캐너, 라디오, 프로젝터, 프린터와 같이 컴퓨터의 역할이 크게 요구되지 않거나 작은 하드웨어에서 동작하는 저사양 컴퓨터를 통해 작업할 때 주로 사용한다. 

 

 

고수준 언어

인간 친화적인 언어로, 문법을 정밀하게 작성하지 않아도 맥락에 따라 많은 부분이 생략 가능하다. 따라서 작성하기가 편하며, 유지보수가 쉽다는 장점이 있다. 그러나 컴퓨터가 이해하는 데 저수준 언어에 비해서는 시간이 걸린다.


고수준언어가 나온이유??

 

어셈블리어(영어: assembly language) 또는 어셈블러 언어(assembler language)는 기계어와 일대일 대응이 되는

컴퓨터 프로그래밍의 저급 언어이다.


컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다

때문에 문제가 발생하게 되는데, 새로운 아키텍쳐가 적용된 CPU가 나올때마다 매번 같은 프로그램을 새로나온 CPU에 맞는 어셈블리어로 다시 작성해야 했다. 이 때문에 통일된 언어체계로 작성한 코드의 필요성이 대두되고, 여기서 고급 프로그래밍 언어가 나오게 된다.

하지만 컴퓨터는 고급 언어로 작성한 코드를 바로 인식하지 못하기 때문에 이를 번역해줄 과정이 필요했고, 이것이 우리가 아는 컴파일이다.


컴파일러(compiler)와 인터프리터(interpreter)

이렇듯 고급 프로그래밍 언어를 사용하게 되면서, 이를 어셈블리어로 번역해주는 작업의 역사 또한 시작됐다고 볼 수 있다. 앞서 말한 번역을 하는 방식에는 2가지가 있는데 하나는 컴파일러 방식이고 하나는 인터프리터 방식이다.

 

컴파일러(compiler)

  • 전체 파일을 스캔하여 한꺼번에 번역한다.
  • 초기 스캔시간이 오래 걸리지만, 한번 실행 파일이 만들어지고 나면 빠르다.
  • 기계어 번역과정에서 더 많은 메모리를 사용한다.
  • 전체 코드를 스캔하는 과정에서 모든 오류를 한꺼번에 출력해주기 때문에 실행 전에 오류를 알 수 있다.
  • 대표적인 언어로 C, C++, JAVA 등이 있다.

인터프리터(interpreter)

  • 프로그램 실행시 한 번에 한 문장씩 번역한다.
  • 한번에 한문장씩 번역후 실행 시키기 때문에 실행 시간이 느리다.
  • 컴파일러와 같은 오브젝트 코드 생성과정이 없기 때문에 메모리 효율이 좋다.
  • 프로그램을 실행시키고 나서 오류를 발견하면 바로 실행을 중지 시킨다. 실행 후에 오류를 알 수 있다.
  • 대표적인 언어로 Python, Ruby, Javascript 등이 있다


고수준 언어(컴파일러 언어 + 인터프리터 언어)의 종류?


컴파일러 언어의 종류

1) C

모든 컴퓨터 시스템에서 사용할 수 있도록 설계된 프로그래밍 언어. 다양한 플랫폼에서 비교적 동일한 구현이 가능. 시스템 프로그램 개발에 매우 적합하며, 응용 프로그램 개발에도 많이 쓰임.

2) C++

기존 C언어의 기능을 완전히 포함하면서 객체지향 프로그래밍을 지원하는 언어. 다중상속, 템플릿, 연산자 오버로드, 예외처리, 실행 시 형식별 등의 기능이 있다

3) C#

문법적인 특성이 자바와 상당히 유사하며 C#을 통하여 다룰 수 있는 닷넷 플랫폼의 기술들조차도 자바를 염두에 둔 것이 많아서 자바와 가장 많이 비교된다

 

 

인터프리터 언어의 종류

1) Python

다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부하며, 여러 교육기관, 연구기관 및 산업계에서 이용이 증가하고 있다. 관련 문서도 정리가 잘 되어 있고, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리도 쉽다

2) Ruby

쉽고 이식성이 높은 언어로, 유닉스, 리눅스, 윈도우, OS X, MS-DOS 등 많은 플랫폼에 이식되어 있다. 순수 객체지향 언어라 정수나 문자열 등을 포함한 데이터 형ㅅㄱ 등 모든 것이 객체이다

3) Basic

절차형 언어로 교육용으로 개발되어 문법이 쉬운 언어. 다양한 종류의 베이직이 존재하며 소스 코드는 서로 호환되지 않는다. 인터프리터 방식이 많았으나 최근에는 컴파일러 방식도 많아지고 있다

 

어샘블리어 코드

 


레퍼런스

 

컴파일러(compiler)와 인터프리터(interpreter)의 차이

컴파일(compile)의 역사컴파일 이야기를 하기전에 어셈블리어에 대해서 간단하게 짚고 넘어가야 한다. 어셈블리어란 무엇인가? 어셈블리어를 위키에서 검색하면 정의를 알 수 있는데, 이 정의에

velog.io

 

컴파일러 작동과정 - Google 검색

컴파일러에서는 전처리부는 입력 프로그램이 잘 구성되었는지 확인하고, 이를 IR로 변환시킨다. 후처리부는 IR을 목표 시스템의 명령어들로 변환시킨다. 후처리부는 IR만을 가지고 처리하기 때

www.google.com

 

 

어셈블러와 컴파일러와 인터프리터의 차이 그리고 무엇일까

어셈블러와 컴파일러와 인터프리터의 차이 그리고 무엇일까 일단 먼저 어셈블러 언어, 컴파일러 언어, 인터프리터 언어 종류를 간단하게 알려드리겠습니다. 아래 표와 같이 나와있습니다. 어셈

allprogrammertistory.com

 

반응형
Comments