프로그래밍에 관하여

Sonny·2019년 8월 16일
1

Etc

목록 보기
1/4
post-thumbnail

1. 저급언어

컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어로 실행속도가 매우 빠르지만 배우기가 어려우며 유지보수가 힘든 것이 단점, 일반적으로 기계어와 어셈블리어를 일컫는다.

1.1 기계어

기계어는 CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어로 컴퓨터가 이해할 수 있는 유일한 언어이다.

일반적으로 소프트웨어 프로그램은 하나 혹은 그 이상의 프로그래밍 언어들(C++, Java 등)으로 작성된다. 컴퓨터는 이러한 프로그래밍 언어들을 이해할 수 없기 때문에 Compile 단계를 거쳐야 한다. 작성한 코드가 Compile되고 기계어로 변환이 완료되면 컴퓨터는 해당 코드를 이해하고 실행할 수 있게 된다.

  • Compile? 원시 코드에서 목적 코드로 옮기는 과정

1.2 어셈블리어

기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어로 컴퓨터 프로세서를 다루기 위한 가장 기본적인 언어이다. 소프트웨어 개발자는 어셈블리어를 이용하여 오로지 CPU가 수행해야 할 직접적인 작업에 관한 내용만을 명령내릴 수 있다.

어셈블리어는 일반적으로 함수나 변수와 같은 편의를 위한 고차원적인 기능들은 가지고 있지 않다. 또한 일반적으로 CPU의 종류에 따라 어셈블리어는 다르다. 어셈블리어는 소프트웨어 개발자가 성능적인 필요에 따라 혹은 고차원 언어에서 수행 불가능한 명령어들을 사용하고 싶을때 유용하기도 하다.

어셈블리어가 유용한 이유

기계어는 숫자들로만 이루어져 있어 사람이 읽고 이해하기는 힘들다. 어셈블리어를 이용하면 기계어의 내용들을 사람이 읽고 이해할 수 있는 방식으로 거의 동일하게 작업이 가능하다.

  • 장점 : 개발자가 컴퓨터의 모든 작업 실행에 대한 전권을 갖고있다
  • 단점 : 컴퓨터가 수행하는 모든 작업을 세부적으로 명시해주어야만 한다.

어셈블리어가 왜 저급언어일까?

어셈블리어는 컴퓨터가 수행하는 모든 작업에 대해 1:1로 대응하는 수준으로 명령을 내리고 작업을 해야하기 때문이다.

어셈블리어와 고급언어는 어떻게 다를까?

고급언어는 저급언어들의 기능들을 조금 더 추상화하여 우리에게 제공해준다. 그로인해 개발자는 어떻게 작업을 해야하는지보다 무엇을 해야하는지에 더욱 집중할 수 있다.

하지만 고급언어로 쓰여진 프로그램은 어셈블리어로 쓰여진 프로그램에 비해 절대적으로 성능이 떨어질 수 밖에 없다.

  • 고급 언어 : Python, Java, JavaScirpt, Clojure 등이 있다.

2. 고급언어

사람이 이해하기 쉽게 작성된 프로그래밍 언어로서, 저급 프로그래밍 언어보다 가독성이 높고 다루기 간단하다는 장점이 있으며 크게 컴파일 언어와 인터프리터 언어로 나눌 수 있다.

컴파일 언어와 인터프리터 언어의 차이점

한국어로 쓴 편지를 영어로 번역할 때 번역가에게 번역을 요청한 상황으로 예를 들 경우,

  • 인터프리터 언어 : 편지를 가져가서 한 문장, 한 문장 읽으면서 동시에 번역하는 상황과 유사하다.
  • 컴파일 언어 : 사전에 이미 번역해놓은 편지를 친구에게 전달해주는 것과 유사하다.

실제로 컴퓨터가 이해하기 위해서는 프로그램 또한 일종의 번역 작업을 반드시 거쳐야 한다.

2.1 컴파일 언어

  • 특징 : 작성한 코드를 기계어로 변환하여 그 결과물을 특정 기계어를 사용하는 컴퓨터들만 이해할 수 있다.

  • 단점 : 다양한 플랫폼에서 실행될 수 있는 프로그램을 만들고 싶다면 여러가지 버전을 Compile해야 한다.

2.2 인터프리터 언어

  • 특징 : 인터프리터가 내장된 모든 컴퓨터에서 실행할 수 있다. 가장 좋은 예로 JavaScript를 들 수 있다. 사용자의 컴퓨터에 JavaScript 코드가 전달된다면 그것은 어디서든 통용 가능한 버전이 된다.

  • 장점 : 브라우저에 내장된 인터프리터가 해당 코드를 필요한 순간에 번역하여 컴퓨터에게 전달하고 명령을 내리게 된다.

  • 단점 : 프로그램이 실행됨과 거의 동시에 번역 작업이 이루어지기 때문에 성능 상의 약점이 있을 수 있다.

최신 컴퓨터들은 너무나도 빨라서 이런 성능상의 약점은 인간이 느끼기엔 굉장히 미미하다. 하지만 CPU를 많이 사용하는 3D 게임이나 복잡도가 높은 프로그램을 실행하게 되면 느끼게 될 수도 있다.

참고사이트

profile
FrontEnd Developer

0개의 댓글