다양한 프로그래밍 언어
소스코드 품질평가 기업인 TIOBE index에서는 평점이나 선호도를 기반으로 프로그래밍 언어의 순위를 평가하고 발표한다. 티오베 인덱스에 따르면 2022년 6월 현재 1순위는 Python이 차지하고 있는 것을 확인할 수 있다. 그 뒤로 C언어, Java, C++ 등이 위치하고 있음을 확인할 수 있다.
이처럼 1위부터 4위까지를 차지하고 있는 C, C++, Java, Python에 대하여 비교, 분석해보자.
※ 본 포스팅을 읽기 전 참고하면 좋은 글들 :
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가 메모리 해제를 담당한다. 자세한 내용은 다음 글을 참고하자.
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/
'Computer Science > [프로그래밍 언어론]' 카테고리의 다른 글
[프로그래밍 언어론] 객체 지향 프로그래밍(OOP) vs 함수형 프로그래밍(FP) 비교 (0) | 2022.07.07 |
---|---|
[프로그래밍 언어론] 명령형(Imperative)프로그래밍과 선언형(Declarative)프로그래밍 (0) | 2022.07.03 |
[프로그래밍 언어론] 형변환이란? 묵시적 형변환 과 명시적 형변환에 대하여 (0) | 2022.03.15 |
[프로그래밍 언어론] 객체 지향 설계 5원칙 (SOLID)란? (0) | 2022.02.16 |
[프로그래밍 언어론] 컴파일러와 인터프리터의 차이점 (0) | 2022.02.10 |