[프로그래밍 언어론] C/C++/JAVA/Python 비교, 프로그래밍 언어 순위, C++와 Java 차이

다양한 프로그래밍 언어

프로그래밍 언어 순위
[그림 1] 프로그래밍 언어 순위 (출처 : Tiobe)

 

소스코드 품질평가 기업인 TIOBE index에서는 평점이나 선호도를 기반으로 프로그래밍 언어의 순위를 평가하고 발표한다. 티오베 인덱스에 따르면 2022년 6월 현재 1순위는 Python이 차지하고 있는 것을 확인할 수 있다. 그 뒤로 C언어, Java, C++ 등이 위치하고 있음을 확인할 수 있다.

 

이처럼 1위부터 4위까지를 차지하고 있는 C, C++, Java, Python에 대하여 비교, 분석해보자. 

 

 

※ 본 포스팅을 읽기 전 참고하면 좋은 글들 : 

 

 

[프로그래밍 언어론] 객체 지향 프로그래밍(OOP : Object Oriented Programming)란? OOP의 장단점

객체 지향 프로그래밍(OOP)과 객체(Object) 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는

code-lab1.tistory.com

 

[프로그래밍 언어론] 컴파일러와 인터프리터의 차이점

컴파일러(Compiler)란? 컴파일러는 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램을 말한다. (출처:https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB..

code-lab1.tistory.com

 

 

C언어

1. 절차지향형 언어이다.

-> 절차지향형 언어란 말 그대로 절차를 지향하는 언어이다. 즉, 코드들이 일련의 순서를 가지고 수행되는 것이 중요하다. 따라서 함수들의 순차적인 진행이 이루어지는 식으로 프로그램이 동작하게 된다.

 

2. 컴파일러 언어이다.

->따라서 인터프리터 언어에 비해 실행 속도가 빠르다. C언어는 실행 속도가 빠른 편에 속한다.

 

3. 호환성이 뛰어나다. 

-> 호환성이 뛰어나기 때문에 다른 프로그래밍 언어와 호환성이 좋다.

 

4. Low Level 언어의 특징을 가진다.

-> 어셈블리어 수준으로 하드웨어를 제어할 수 있다. 따라서 임베디드 시스템, 운영체제, 하드웨어 제어 시스템 개발 등에 C언어가 주로 사용되고 있다. 

 

5. 배우기 어려울 수 있다.

-> Low Level 언어의 특징 상 다른 언어보다 학습 장벽이 높은 편에 속한다. 

 

6. 시스템 자원을 개발자가 직접 제어할 수 있다.

-> Garbage Collection 등 시스템 자원(메모리 등)을 자동으로 관리해주는 언어에 반해, C언어는 개발자가 시스템 자원을 직접 제어할 수 있다. 이는 장점이 될 수도 있고, 단점이 될 수도 있다. 세심한 주의를 기울이지 않으면 큰 문제가 발생할 수 있다.

 

 

 

C++

1. 객체 지향언어이다.

-> C++는 C언어의 문법적 체계를 그대로 계승했다. 이때 생산성을 높이기 위해 객체 지향 개념을 도입하였다. C언어와 마찬가지로 컴파일러를 사용한다.

 

2. 타입 체크를 엄격히 한다.

-> Runtime Error의 가능성을 줄이고 디버깅을 돕는다.

 

3. 실행시간의 효율성 저하를 최소화한다.

-> 인라인(in-line) 함수의 도입 등 함수 호출로 인한 성능 저하를 막는다.

 

 

Java

1. 객체지향 언어이다.

-> Java는 C++과 마찬가지로 객체지향 언어이다. 하지만 설계 목표의 차이에 따른 차이가 존재한다. Java는 보안, 이식성, 빠른 개발에 비중을 두었지만, C++는 속도와 C언어와의 하위 호환성에 중점을 두었다. C++가 성능면에선 더 빠른 편이다.

 

2. 인터프리터와 컴파일러를 모두 사용한다.

-> Java는 인터프리터 언어 혹은 컴파일러 언어라고 단정 지어 말하기 어렵다. 둘 모두를 사용하기 때문이다. 간단히 설명하자면 Javac(Java Compiler)를 이용해 소스코드를 .class 파일로 컴파일하고, 이후 JVM의 인터프리터에서 바이트코드를 한 줄씩 읽어 실행하게 된다.

 

3. Garbage Collector가 존재한다.

-> C 나 C++는 개발자가 손수 메모리를 해제할 수 있다. 하지만 Java는 버그를 일으키지 못하게 Garbage Collector가 메모리 해제를 담당한다. 자세한 내용은 다음 글을 참고하자.

 

 

[JAVA] Garbage Collection(가비지 컬렉션)의 개념과 동작 과정

Garbage Collection(가비지 컬렉션)이란? JVM에는 Garbage Collecter(가비지 컬렉터)가 존재한다. 가비지 컬렉터는 더 이상 참조되지 않는 Garbage(가비지)라고 불리는 불필요한 메모리를 알아서 정리해주는

code-lab1.tistory.com

 

4. 웹 서비스 개발, 안드로이드 앱 개발에 주로 사용된다.

-> 백엔드 서버 개발, 안드로이드 앱 개발 등에 주로 사용된다.

 

 

 

Python

 

1. 객체지향 언어, 스크립트 언어, 인터프리터 언어이다.

-> 파이썬은 스크립트 언어로 컴파일 과정 없이 인터프리터에 의하여 실행된다. 컴파일 언어에 비해서는 속도가 느린 편이다.

 

2. 동적 타입 언어이다.

-> 변수의 자료형을 따로 지정하지 않고 선언하는 것만으로 값을 지정할 수 있다. 따라서 변수의 자료형은 코드가 실행되는 시점에 결정된다. 이는 장단점이 있을 수 있다.

 

3. 플랫폼 독립적 언어이다.

-> 인터프리터 언어의 특징 중 하나로, 운영체제에 따라 컴파일할 필요성이 없기 때문에 플랫폼에 독립적이다.

 

4. 배우기 쉬운 편이며 생산성이 높다.

-> 쉽고 간결한 문법 덕문에 러닝 커브가 낮은 편이며, 빠르게 개발이 가능하다. 

 

5. 높은 확장성 및 이식성

-> 다른 언어나 라이브러리에 쉽게 접근하여 연동할 수 있다. 

 

6. 활발한 생태계

-> 최근 많은 개발자들이 파이썬을 사용해 오픈소스 프로젝트를 진행한다. 뿐만 아니라 커뮤니티도 활발하여 많은 정보를 찾을 수 있다.  

 

7. Garbage Collection을 지원한다.

-> Java와 마찬가지로 Garbage Collection을 지원한다.

 

8. 딥러닝, 빅데이터, AI 개발 등에 사용된다.

-> 많은 딥러닝, 빅데이터, AI 개발 등에 Python을 사용하는 것을 확인할 수 있다.

 

 


참고

 

1. https://www.tiobe.com/tiobe-index/

 

 

반응형

댓글

Designed by JB FACTORY