[컴퓨터 개론] 소프트웨어 이해하기

업데이트:

다양한 애플리케이션

애플리케이션은 App이나 어플이라고 줄여 말하며, 스마트폰에만 국한된 것이 아닌 컴퓨터나 노트북에서 사용하는 프로그램들도 모두 애플리케이션에 포함된다.

애플리케이션이란?
프로그램을 만드는 사람이 아닌 실제 사용자가 직접 사용하는 프로그램을 말한다.

요즘은 스마트폰이 컴퓨터와 상당히 유사해져서 겹치는 애플리케이션이 많고, 스마트폰에서만 사용되는 애플리케이션도 있다.

컴퓨터나 스마트폰이 아닌 에어컨, 선풍기, TV, 블루투스 스피커 등에도 리모콘 혹은 버튼으로 동작을 가동시킬 수 있는데, 이것도 일종의 애플리케이션이다.

계산기나 상점의 키오스크도 애플리케이션에 해당된다.



애플리케이션을 만드는 프로그램

애플리케이션은 프로그래밍 언어로 코딩을 해서 만들어진다.

코드가 작성이 완료되면, 어떤 소프트웨어가 영어와 숫자가 섞인 프로그래밍 코드를 실행할 수 있는 애플리케이션으로 바꾸어준다.

이렇게 애플리케이션을 만들어 주는 소프트웨어는 컴파일러인터프리터 두 종류로 나눌 수 있다.



프로그래밍 언어의 번역기, 컴파일러

다양한 프로그래밍 언어 중에 컴퓨터가 이해할 수 있는 언어는 Machine Code(기계어) 밖에 없다.
그렇기 때문에 사람이 작성하기 쉬운 고수준 프로그래밍 언어를 컴퓨터가 실행할 수 있는 기계어로 번역해야 한다.
한 언어의 코드를 다른 언어의 코드로 바꾸어 주는 것을 컴파일러라고 한다.컴파일러는 일종의 프로그래밍 언어의 번역기라고 할 수 있다.

  1. 컴파일러를 이용해 고수준 언어를 머신코드로 바꾼다.
  2. 사용자의 컴퓨터에 머신코드를 보내준다.
  3. 사용자의 컴퓨터가 머신코드를 실행해서 프로그램이 동작하게 된다.

  • 컴파일러의 단점

머신코드를 사람이 이해할 수 없다.
따라서, 머신코드 중에 원하는 일부만 수정할 수가 없다.
기능을 고치려면 고급 언어를 수정해서 다시 컴파일러를 통해 컴파일 해야 한다.

개발을 할 때 한번에 코드를 다 작성하는 것이 아니라, 일부 작성 후 실행해보는 방식을 반복한다.
이 과정을 수 많이 반복하게 되는데 그 때마다 컴파일을 해줘야 한다.
게다가 컴파일 과정에는 시간이 소요되기 때문에 단 한 줄의 코드만 수정하려고 해도 대기 시간이 필요하기 때문에 불편하다.

컴파일러는 좋은 프로그램 실행 방식이지만 빠르게 개발할 수 없다는 단점이 있다.



실시간 코드 실행기, 인터프리터

컴파일러를 사용하면 개발할 때 매번 컴파일을 다시해야하는 어려움이 있었다.
개발자들이 컴파일 단계 없이 고급 언어를 바로 실행할 수 있는 방법을 고민하게 되었고, 그 과정에서 인터프리터가 탄생했다.

인터프리터는 한 줄씩 즉흥적으로 실행해주는 프로그램으로, 코드 번역기가 아닌 코드 실행기이다.

인터프리터는 코드를 한 줄씩 즉시 실행하기 때문에 코드 수정 후 컴파일 과정 없이 바로 결과를 확인할 수 있기 때문에 개발 속도가 향상된다.

  1. 사용자 컴퓨터에 프로그래밍 코드 자체를 전송한다.
  2. 사용자의 컴퓨터에서 코드를 기계어로 바꾸는 번역 과정을 실시간으로 진행한다.
    (사용자의 컴퓨터에 인터프리터(코드 실행기)가 있어야 한다.)

보통 고수준 언어보다 머신코드의 코드 량이 훨씬 많기 때문에 컴파일러 방식에 비해 고수준 언어 자체를 전달하는 인터프리터 방식의 프로그램의 용량이 더 작다.

  • 인터프리터의 단점

  1. 컴파일러 방식에 비해 실행 속도가 느려지게 된다.
  2. 프로그래밍 코드가 그대로 전송되기 때문에 유출 위험성이 있다.



컴파일러 vs. 인터프리터

image


  • 프로그래밍 언어의 종류에 따른 실행 방식 차이

컴파일러 : 개발 편의성은 떨어지지만, 실행 속도는 빠르다.
인터프리터 : 개발 편의성이 높지만, 실행 속도는 느리다.

코드의 실행 방식은 프로그래밍 언어의 특징과도 연결이 된다.

저수준 언어 : 개발 편의성은 떨어지지만 실행 속도는 빠르다.
고수준 언어 : 개발 편의성이 높지만 실행 속도는 느리다.

이렇게 동일한 특징이 컴파일러와 인터프리터에서도 각각 나타나기 때문에 언어마다 주로 쓰이는 실행 방식이 있다.


고수준 언어는 개발 편의성이 생명인 언어인데 매번 컴파일 과정을 거치게 된다면 장점을 잃어버리기 때문에 고수준 언어는 인터프리터 방식을 주로 사용한다.

저수준 언어는 개발 과정이 힘들더라도 최고의 성능, 효율, 속도를 만들고자 하기 때문에 인터프리터 방식을 통해서 느린 환경에서 실행된다면 장점을 잃어버리기 때문에 저수준에 비교적 가까운 언어들은 컴파일 방식을 주로 사용한다.



꿀팁 노트 : 첫 번째 컴파일러는 어떻게 만들었을까?

컴파일러가 만들어지기 전에는 개발자가 직접 컴퓨터의 언어를 배워서 컴퓨터가 실행할 수 있게 코딩하는 것이 일반적이었다.




[코드잇-컴퓨터 개론]https://www.codeit.kr/courses/intro-to-computer

태그:

카테고리:

업데이트:

댓글남기기