프로그래밍 언어들의 차이점

김지영·2022년 6월 2일
0
post-thumbnail

세상에는 다양한 프로그래밍 언어들이 있다. 프로그래밍 언어들은 왜 이렇게 다양하고, 대체 어떤 점이 서로 다른걸까? 내가 생각했을 때 프로그래밍 언어들이 가지는 차이점을 정리 해보았다.


1. 메모리에 데이터를 저장하는 방법의 차이

컴퓨터가 프로그램을 실행하기 위해선 메모리에 프로그램을 로드해야 하는데,
운영체제가 프로그램을 아래와 같이 크게 4개의 메모리 공간으로 로드해준다. 이 공간에서 데이터를 읽고 쓰며 프로그램이 실행된다.

코드 영역 : 실행할 프로그램의 코드가 저장 되는 곳
데이터 영역 : 전역 변수와 정적(static) 변수가 저장되는 곳
스택 영역 : 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.
힙 영역 : 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.

TCP School
출처 : http://www.tcpschool.com/c/c_memory_structure

프로그램이 위의 4 공간을 가지는 것 동일하지만, 프로그래밍 언어에 따라 메모리 영역을 관리하는 방법이 다르다. C와 python을 예를들어 보자.

a 라는 변수에 정수 2를 저장한다고 가정하면,

Cint a = 2; 와 같이 작성하며, int 타입은 스택 영역에 4바이트 고정으로 2가 저장된다.

파이썬a = 2와 같이 직접 타입을 작성하지 않으며, 타입이 실행시간에 결정된다. 파이썬의 int는 크기가 고정되어 있지 않고, 4영역 중 저장위치 또한 파이썬의 Python Memory Manager가 동적으로 관리 한다.

똑같이 a에 2를 저장하는데도 언어에 따라 메모리에 저장되는 방식이 완전히 다르다.

C와 같이 타입이 고정되어 있는 언어를 정적타입언어, 파이썬과 같이 타입이 동적으로 결정되는 언어를 동적타입언어 라고 하고,

C처럼 메모리를 관리해주는 프로그램이 없는 언어를 비관리언어, 파이썬 처럼 메모리를 관리하는 프로그램이 있는 언어를 관리언어라고 한다.

2. 기계어로 변역하는 방법의 차이

프로그램을 실행하려면, 자연어로 작성된 소스코드를 기계어로 바꾸어야 하는데 그 방식에는 크게 두 가지가 있다.

  1. 컴파일러로 소스코드를 한꺼번에 기계어로 번역해 실행파일을 만들고, 그 실행파일을 CPU/메모리가 실행하는 방식. C++, C,

  2. 인터프리터가 프로그램 코드를 한 줄 씩 번역,실행 하는 방식. python, JavaScript

참고로, 내 사랑 자바는 컴파일러과 인터프리터를 모두 사용한다. javac 컴파일러가 .java파일을 .class파일로 컴파일하고, 자바 인터프리터가 .class를 해당 os에 맞게 실행한다.

1 같은 방식은 미리 컴파일을 할 수 있는 환경에서, 2같은 방식은 컴파일 시간을 기다리기 힘든 환경에서 사용한다.

3. 운영체제의 차이

운영체제의 종류로는 Linux, Unix, Windows, MacOS, Android, IOS 등이 있다. Linux, Unix, Windows의 어플은 C, C++, 파이썬, 자바, 자바스크립트 등의 언어로 만들 수 있고, Android의 어플은 자바랑 코틀린 등으로 만들고, MacOS,IOS는 swift로 만들 수 있다.

참고로, 요즘은 자바스크립트 언어로 작성한 코드를 자바,코틀린,스위프트으로 바꾸어 주는 리액트 네이티브 같은 크로스 플랫폼도 있다.

4. 프로그래밍 패러다임의 차이

프로그래밍 패러다임이란 프로그래밍 스타일을 말한다. 프로그램은 순차,분기,반복, 참조로 구성되며 프로그래밍 전략을 수립해야한다. 언어를 만들고 사용하는 사람들이 추구하는 프로그래밍 패러다임의 차이가 있다.

  1. 명령형 프로그래밍 : 문제를 어떻게 해결해야 하는지 컴퓨터에게 명령을 내리는 방법을 프로그래밍 한다
    • 절차적 언어 : C, Pascal
    • 객체지향 언어 : C++, Java
  2. 선언형 프로그래밍 : 문제를 어떻게 해결해야 하는지에 집중하고 해결방법은 컴퓨터에게 위임해버리는 프로그래밍 방법
    • SQL, HTML, XML

JavaScripts같이 멀티 패러다임을 갖는 언어도 있다.

출처 : https://velog.io/@codenmh0822/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84#%EB%AA%85%EB%A0%B9%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

5. 사용 목적의 차이

  • SQL : 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어.
  • PHP : 대표적인 서버 사이드 스크립트 언어로 전 세계 수많은 웹 시스템의 기반이 되는 언어.

0개의 댓글