코딩/정말 나는 잘 알고 있을까?

프로그래밍 언어가 뭐야?

호상박 2022. 8. 4. 19:33

다양한 프로그래밍 언어가 존재함에 따라 각기 다른 분야에서 다른 언어들이 사용되고 있다.

어떤 언어들이 존재하고, 그 언어들이 가진 장단점에 따라 어디서 사용되는지 알고 있어야 한다고 생각이 들어 정리해보았다.


프로그래밍 언어 (Programming Language)

컴퓨터 시스템을 구동시키는 소프트웨어를 작동시키기 위한 형식 언어를 의미한다. 쉽게 말하면, 컴퓨터를 이용하기 위한 언어이다. 이는 저급 언어와 고급 언어로 나뉘는데, 우리가 흔히 볼 수 있는 자바스크립트나 파이썬 등은 고급 언어에 해당한다. 고급 언어일수록 사람이 사용하는 언어와 가깝다.

저급 프로그래밍 언어 & 로우 레벨 프로그래밍 언어 (low-lever programming language)

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

 

- 기계어 : 기계어는 특별한 변환 과정 없이 컴퓨터가 직접 처리할 수 있는 유일한 언어이다. 현재 프로그래머들은 대개 기계어로 직접 프로그램을 작성하지는 않는데 그 까닭은 고급 언어가 자동으로 다루는 수많은 세부 사항들을 신경써야 하기 때문이다. 모든 명령마다 수많은 코드를 기억하고 찾아야 하고, 수정하기 또한 매우 어렵다.

- 어셈블리어 (assembly language) : 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 0과 1의 이진수로 프로그램을 하는 기계어는 인간의 관점에서는 컴퓨터가 바로 읽을 수 있다는 점만 빼면 장점이 없는 언어이기 때문에 이를 보완하기 위해 나온 언어가 어셈블리어이다.

모토로라 MC6800 어셈블리어

 

고급 프로그래밍 언어 & 하이 레벨 프로그래밍 언어 (high-level programming language)

사람이 이해하기 쉽게 작성된 프로그래밍 언어로, 저급 프로그래밍 언어보다 가독성이 높고 다루기 간단하다는 장점이 있다. 컴파일러나 인터프리터에 의해 저급 프로그래밍 언어로 번역되어 실행된다.

- 컴파일러(Compiler) : 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 말한다. 원래의 문서를 소스 코드 혹은 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 부른다. 원시 코드에서 목적 코드로 옮기는 과정을 컴파일이라고 한다. 소스 코드를 컴파일 하는 이유는 대부분 사람에게 이해하기 쉬운 형태의 고급 언어로부터 실행가능한 기계어 프로그램을 만들기 위해서다. 좁은 의미의 컴파일러는 주로 고급 언어로 쓰인 소스 코드를 저급 언어로 번역하는 프로그램을 가리킨다. 번역 실행 과정을 거쳐야 하기 때문에 번역 과정이 번거롭고 번역 시간이 오래 걸리지만, 한 번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠르다. 컴파일러를 사용하는 언어에는 C언어, Java등이 있다.

- 인터프리터(Interpreter) : 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 인터프리터는 고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램이다. 프로그램이 직접 실행되므로 목적 프로그램은 생성되지 않지만, 프로그램 실행 시 매번 줄 단위로 번역/실행 되기 때문에 실행 속도는 느리다. 인터프리터를 사용하는 언어에는 Python, BASIC, SNOBOL, LISP, APL 등이 있다.

 

- 포트란 (FORTRAN) : 과학 계산용 언어로 뛰어난 실행 효율성으로 성공한 언어

- 코볼 (COBOL) : 회사의 사무용 자료 처리 언어로 개발되었다. 기계 독립적인 부분과 기계 종속적인 부분을 분리하는데 성공한 언어이다.

- ALGOL : 알고리즘 연구개발을 위한 목적으로 개발된 언어, 실무보다는 주로 교육용으로 사용되었다.

- APL : 고급 수학용 프로그래밍 언어

- PL/1 : 과학, 공학 및 산업 응용 프로그램을 위해 개발된 명령형 프로그래밍 언어

- BASIC : 교육용으로 개발된 프로그래밍 언어

- SNOBOL : 스트림 자료 활용이 가장 많은 언어, 문자열 대치, 복사, 치환 등과 같은 문자열의 조작을 편리하게 수행할 수 있도록 여러가지 기능을 제공한다.

- Pascal : 간결하면서도 강력한 언어로 손꼽히고 있다. 교육용 언어로는 뛰어나다는 평가를 받고 있다.

- PROLOG : 논리 기반의 비절차적 언어, 인공지능 분야에서 주로 사용되었다.

- Ada : 미 국방성의 주도로 개발된 고급 프로그램 작성 언어, 데이터 추출과 정보 은폐에 주안점을 두었고, 입출력 기능이 뛰어나서 대량 자료 처리에 적합하다.

 

- C : 고급 언어 프로그램과 저급 언어 프로그래밍이 가능하다. 시스템 프로그래밍에 가장 적합한 언어이다. 이미 기존의 시스템은 대부분 C/C++로 이루어져 있고, 윈도우 또한 C로 개발되었다.

  • 다양한 하드웨어로의 이식성이 좋으며, 하드웨어와 관련된 부분까지 접근할 수 있다.
  • 절차 지향 프로그래밍 언어로, 코드가 복잡하지 않아 상대적으로 유지보수가 쉽다.
  • 좋은 성능, 빠른 속도를 보인다.
  • 저급 언어의 특징을 가지고 있어서 어셈블리어 수준으로 하드웨어를 제어할 수 있으나, 자바와 같은 다른 고급 언어보다 배우기가 어렵다.
  • 다른 언어와는 달리 시스템 자원을 직접 제어할 수 있으므로, 프로그래밍하는데 세심한 주의를 기울여야 한다.

- Java : 썬 마이크로시스템즈의 클래스 기반의 객체 지향적 프로그래밍 언어이다. C++언어를 바탕으로 언어 규격을 규정했다.

  • 자바의 원시코드를 고쳐 쓰거나 재컴파일 할 필요가 없기 때문에 기종이나 운영체제와 무관한 응용 프로그램의 개발 도구로 각광받고 있다. 즉, 플랫폼에 독립적이므로, 여러 운영체제나 하드웨어에서도 동일하게 실행한다. 
  • 멀티스레드를 지원하고, 각각의 스레드는 독립적으로 동시에 다른 일을 처리한다.
    - 스레드 (thread) : 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.
  • 많은 오픈소스 프레임워크로 생산성을 증가하고 유지보수 비용을 절감할 수 있다.
  • C/C++, Pascal, Fortran 언어에 비해 속도가 느리다. 다른 고급 언어들보다는 그리 떨어지지는 않지만 Python이나 GO 같은 언어와는 개발 속도가 비교하지 어려울 정도로 차이가 난다.

- Javascript : 넷스케이프 커뮤니케이션즈가 개발한 프로토타입 기반의 객체 지향적 프로그래밍 언어이다. HTML로 웹의 내용을 작성하고, CSS로는 웹을 디자인하며, 자바스크립트로는 웹의 동작을 구현할 수 있다. 자바스크립트는 주로 웹 브라우저에서 사용되나, Node.js와 같은 프레임워크를 이용해 서버 측 프로그래밍에서도 사용할 수 있다.

  • ECMAscript 표준을 따르는 언어이다. Javascript는 통칭하는 말이고, 정식 버전 명칭은 ECMAscript 5 (ES5), ECMAscript 6+(ES6+) 등이라 부른다.
  • 자바스크립트는 동적이며, 타입을 명시할 필요가 없는 인터프리터 언어이다.
  • 객체 지향형 프로그래밍과 함수형 프로그래밍을 모두 표현할 수 있다.

자바와 자바스크립트는 이름만 두고 보면 서로 관련이 있는 언어로 생각하기 쉽지만, 직접적인 관련이 없는 정반대의 언어이다. (원래 LiveScript라는 이름을 사용했는데, Java의 유명세를 타기 위해 의도적으로 작명했다는 이야기도 있다.)

Java JavaScript
컴파일 언어 인터프리터 언어
타입 검사를 엄격하게 함 타입을 명시하지 않음
클래스(Class) 기반의 객체 지향 언어 프로토타입(Prototype) 기반의 객체 지향 언어

자바스크립트에 대해 더 자세한 내용은 따로 다룰 예정이다.

 

- Python : 인터프리터 방식의 프로그래밍 언어이다. 문법이 매우 쉬워서 작성하기에 간단하기에 "실행할 수 있는 의사 코드"라는 별명을 가지고 있다. 

  • 컴파일 과정없이 인터프리터에 의해 실행 결과를 바로 확인하고 수정하며 코드를 작성할 수 있다.
  • 변수의 자료형을 지정하지 않고 선언하는 것만으로 값을 지정할 수 있는 동적 타입 언어이다. 이렇게 선언한 변수의 자료형은 코드가 실행되는 시점에 결정된다. 하지만 이는 코드 실행 도중 예상치 못한 타입에러가 발생할 수 있다는 단점이 있다.
  • 운영체제에 따라 컴파일할 필요가 없기 때문에, 대부분의 운영체제에서 동작하는 언어이다.

프로그래밍 언어의 대한 이해와 그 종류들을 알아보았다. 너무 많은 종류와 깊은 내용들이 많아서 차후에 다른 글에서 보충할 예정이다.

 

여담 )

HTML (HyperText Markup Language)는 우리가 보는 웹페이지가 어떻게 구조화되어 있는지 브라우저로 하여금 알 수 있도록 하는 마크업 언어이다. 일반적으로 HTML은 프로그래밍 언어가 아니라고 이야기 하지만, 이 논란에 있어 재밌는 글이 있어서 가져와본다.

https://yceffort.kr/2021/10/is-html-programming-language

 

Home

yceffort

yceffort.kr

 

 

출처 :

https://ko.wikipedia.org/wiki/%EC%A0%80%EA%B8%89_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4

 

저급 프로그래밍 언어 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 저급 프로그래밍 언어 (低級 프로그래밍 言語)또는 로우 레벨 프로그래밍 언어(low-level programming language)란 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%EC%96%B4

 

저급 프로그래밍 언어 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 저급 프로그래밍 언어 (低級 프로그래밍 言語)또는 로우 레벨 프로그래밍 언어(low-level programming language)란 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어

ko.wikipedia.org

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

https://opentutorials.org/course/2471/13906

 

프로그램 언어와 컴파일러 - 프로그래밍 입문

컴파일러 컴파일러(compiler)는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 프로그램을 말한다. 원래의 문서를 소스 코드 혹은 원시 코드라고 부르고, 출력된 문서

opentutorials.org

https://coding-factory.tistory.com/303

 

[Language] 컴파일러와 인터프리터란 무엇인가?

컴파일러와 인터프리터는 고급언어로 작성된 원시 프로그램(Source Program)을 목적 프로그램(Object Program)으로 번역하는 번역 프로그램이며, 프로그램 번역 방식에 따라 구분됩니다. ※ 원시프로그

coding-factory.tistory.com

https://opentutorials.org/course/2471/13907

 

프로그램 언어의 종류 - 프로그래밍 입문

1) 저급 언어와 고급 언어 ① 저급 언어 (Low-Level Language) - 기계 중심의 언어 - 실행 속도가 빠름 - 상이한 기계마다 다른 코드를 가진다 기계어 (Machine Language) : 컴퓨터가 직접 이해할 수 있는 언어,

opentutorials.org

https://jhnyang.tistory.com/83

 

프로그래밍 언어 종류(C. Java, php 등 10개)와 사용도, 순위

프로그래밍 언어 종류 프로그램을 처음 시작한다던가.. 이제 막 개발자의 길로 접어든 사람의 경우, 많은 프로그래밍 언어 때문에 '뭐가 이렇게 많지.. 무슨 언어로 개발해야 하는거지..' 헷갈릴

jhnyang.tistory.com

http://www.tcpschool.com/c/c_intro_basic

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com