코딩을 공부하는 POLF 입니다. 개발자들이 프로그래밍 언어로 어떤 것들을 사용하고 있는지, 그리고 어떤 특징들이 있는지에 대해서 공부해 보겠습니다. 아래 그림은 TIOBE에서 제공하는 프로그래밍 언어 인기 순위입니다. 이번 포스팅에서는 상위 프로그래밍 언어에 대해서 살펴보도록 하겠습니다.
목차 |
1. Python 1) 특징 2) 장점과 단점 2. C 1) 특징 2) 장점과 단점 3. Java 1) 특징 2) 장점과 단점 4. C++ 1) 특징 2) 장점과 단점 |
프로그래밍 언어란?
컴퓨터에게 명령이나 연산 등 개발자가 원하는 작업을 컴퓨터가 수행할 수 있도록 기계와 의사소통이 가능하게 해주는 언어를 의미합니다. 한마디로 컴퓨터에게 명령을 내리기 위한 언어입니다.
Python (파이썬) 언어
1) 특징
파이썬은 스크립트 언어(Script Language)로 해석기로 소스코드를 한줄씩 읽어가며 실행합니다. 컴파일 언어가 아니기 때문에 컴파일 과정이 필요없으며 실행 결과를 바로 확인할 수 있고, 수정도 가능하기 때문에 손쉽게 코딩을 할 수 있다는 특징이 있습니다.
파이썬은 기계어보다는 자연어에 가깝다는 특징을 가진 언어로 데이터 분석, 웹 사이트나 서비스 개발 등 다양한 분야에서 활용되고 있습니다. 문법이 프로그래밍 언어 중 가장 간결하고, 행동 기반으로 프로그램 알고리즘을 실행할 수 있으며, 웹 개발 시 파이썬만으로 작업이 가능하므로 작업량이 작다는 특징이 있습니다.
컴파일 언어 | 컴파일 언어는 '컴파일'이라는 과정을 통해 개발자가 작성한 코드를 기계어로 번역해 실행하는 언어입니다. |
스크립트 언어 | 별도의 컴파일 과정이 필요없이 인터프리터라는 해석기로 소스코드를 읽어가며 바로 실행하는 언어입니다. |
2) 장점과 단점
파이썬은 사람의 사고방식과 유사한 문법을 가진 자연어에 가까운 언어입니다. 그렇기 때문에 짧은 시간으로 파이썬 문법을 학습할 수 있고 프로그래밍을 전공하지 않은 사람도 빠른 시간 내에 파이썬을 익히고 활용하는 것이 가능하다는 장점이 있습니다. 그래서 제가 파이썬을 공부하고 있나봅니다.
쉽고 간결한 문법을 가지고 있어 생산성 또한 높습니다. 적은 소스코드로 많은 작업을 수행할 수 있고, 언어 자체가 복잡하지 않기 때문에 오류 발생을 줄일 수 있어 개발 속도가 빠르다는 장점도 있습니다. 또한 다른 언어나 라이브러리에 쉽게 연동할 수 있기 때문에 글루(Glue) 언어(접착제 언어)라고도 합니다. 고성능의 애플리케이션이 필요한 경우에는 C나 C++ 같은 프로그래밍 언어를 결합하여 사용할 수 있습니다.
파이썬은 또한 제공되는 표준 라이브러리가 많다는 장점을 가지고 있습니다. 개발자가 모든 소스코드를 하나하나 작성할 필요없이 라이브러리에서 가져와 사용할 수 있습니다. 활용하는 사람이 많기 때문에 생태계나 커뮤니티가 잘 조성되어 있어 문제가 생겼을 경우 빠르게 문제 해결이 가능하며, 다른 개발자와 협업이 쉽다는 강점이 있습니다.
하지만 파이썬은 다른 언어에 비해 속도가 느리고 파이썬을 통해 애플리케이션을 개발한 경우 메모리 사용량이 많다는 단점이 있습니다.
※ 어디에서 파이썬을 다운받을 수 있나요?
C언어
1) 특징
프로그래밍 언어는 저급 언어일수록 기계어에 가깝고, 고급 언어일수록 자연어에 가깝다고 합니다. C언어는 일반적으로 고급언어라고 하지만, 저급 언어가 가지는 특징인 하드웨어를 직접 제어할 수 있습니다. 그렇기 때문에 기계와 가깝고 더 하드웨어 운영에 있어 효율적인 코드를 만들 수 있다는 것이 특징입니다.
2) 장점 및 단점
C언어는 효율성이 좋아 대규모의 고기능 프로그램을 만들 수 있으며, 프로그램 크기가 작고 속도가 빠르다는 장점을 가지고 있습니다. 또한 범용적으로 사용이 가능한 언어로 대부분의 응용 프로그램 개발에 활용이 가능합니다. 또한 고급 언어이면서 저급 언어의 특징을 가지고 있다보니 하드웨어 제어 또한 C언어를 통해 가능합니다. UNIX 운영체제가 C 언어 개발 배경인만큼 낮은 수준의 프로그래밍 또한 가능합니다.
C언어 자체가 절차 지향적인 특성을 가지고 있고, 이해하기 쉽습니다. 정해진 순서에 따라 실행하기 때문에 단순하고 실행 속도 또한 빠릅니다. 절차지향의 가장 큰 특징은 "Top to Down"입니다. 절차지향언어인만큼 실행속도가 빠릅니다.
"절차지향언어란?" 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어 있으며, 순서대로 만들어지고 분리되서는 안되며 순서가 틀려도 안되는 언어. |
C언어가 가지는 장점인 절차지향성 때문에 단점도 존재합니다. 모든 구성요소가 유기적으로 연결되어 있다보니, 한 부분에 문제가 생기면 이 문제를 해결하기 위해 전체 시스템을 손봐야 합니다. 모듈화를 정말 잘해놓을 경우에는 그나마 괜찮다고 하지만 이 또한 쉽지 않습니다.
또 고급언어임에도 불구하고 쉽게 배우기는 힘든 언어입니다. UNIX 운영체제를 기술하기 위한 언어로 개발되었기 때문에 UNIX의 약점 또한 그래도 가지고 있습니다.
Java
1) 특징
자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체지향적 프로그래밍 언어입니다. 현재 웹 애플리케이션 분야에 가장 많이 사용하는 언어 중 하나로서 안드로이드 운영체제를 비롯한 모바일 기기용 소프트웨어 개발에 많이 활용되고 있습니다. UNIX가 배경인만큼 언어 문법의 특징은 C 언어와 유사하다는 특징이 있습니다. 또한 운영체제나 하드웨어 환경에 영향을 받지 않고 동일한 실행결과를 보여주는 등 플랫폼 독립성이 뛰어납니다.
2) 장점과 단점
객체지향언어로 개발자가 라이브러리를 통해 기존 코드를 재사용하고 모듈식으로 프로그램 개발이 가능하다는 장점이 있습니다. 웹 애플리케이션 제작시 필요한 Servlet* API 및 각종 유틸리티 클래스를 제공하기 때문에 보다 편리하게 코딩 작업이 가능합니다.
* Servlet(서블릿) : 클라이언트 요청을 처리하고, 그 결과를 반환하는 규칙을 지킨 자바 웹 프로그래밍 기술
또한 Java는 위에서 이야기했듯이 플랫폼 독립성이 뛰어납니다. 별도의 작업없이 서로 다른 기종을 넘나들며 동일하게 동작하는 프로그램은 자바의 가장 중요한 특성 중 하나라고 합니다. 서로 다른 플랫폼에서 동일한 프로그램을 실행할 수 있는 능력은 웹 기반 소프트웨어에 필수적이며, 자바는 플랫폼과 언어에 독립적이기 때문에 이를 훌륭하게 지원할 수 있습니다.
마지막으로 Java는 뛰어난 보안성을 자랑합니다. 기본적으로 메모리 보호 기법을 적용하였으며 소스코드로부터 데이터 유출을 방지할 수 있는 역컴파일 감지 기능을 가지고 있습니다.
하지만 실행 속도가 C++이나 C와 같은 언어와 비교할 때 느리다는 단점이 있습니다. 하지만 이를 보완하고자 새로운 버전에서는 최적화 작업을 거쳐 출시되었다고 하니 앞으로의 발전 가능성이 더욱 기대되는 언어 중 하나입니다.
C++
1) 특징
우선 C++언어의 탄생 배경부터 살펴볼 필요가 있습니다. 원래 C언어는 벨 연구소 소속 켄 톰슨과 데니스 리치가 함께 만들었는데 시간이 지날수록 한계점들이 드러났습니다. 속도나 메모리 관리 측면에서 효율성이 떨어졌기 때문입니다. 따라서 보다 나은 성능을 갖춘 새 언어가 필요해졌고 이때 등장한 것이 바로 C++ 언어입니다.
C++ 언어는 C 언어로부터 파생된 언어이기 때문에 문법 구조가 비슷합니다. 다만 차이점이 있다면 기존 절차지향 방식 대신 객체지향 방식을 채택했다는 점입니다. 쉽게 말해 프로그램을 구성하는 모든 요소를 각각 독립된 객체로 취급한다는 것입니다. 이렇게 되면 코드 재사용성이 높아지고 유지 보수가 용이해지기 때문에 편리성을 증가시킬 수 있습니다. 하지만 C++커뮤니티는 단순히 객체지향 프로그래밍 언어로 분류되는 것을 오류라고 여긴다고 합니다. 또한 C++의 제작자인 비야네 스트롭스트룹(Bjarne Stroustrup)은 C++은 단순한 객체 지향 프로그래밍 언어가 아니라고 설명했다고 합니다.
2) 장점과 단점
다른 언어에 밀려 점유율이 조금씩 줄어들고는 있지만, 오랫동안 사용되어왔기 때문에 많은 시스템에서 지원하며, C++로 계속 유지되는 프로젝트가 많다고 합니다. 또한 C++은 시스템 프로그래밍 언어이기 때문에 zero-cost abstraction, 즉 "네가 쓰지 않는 것에 대해서는 성능 하락을 주지 않는다"라는 것을 언어의 설계 철학으로 하고 있다고 합니다. 런타임 성능을 쥐어짜내기 위해 인라이닝, 컴파일 타임 프로그래밍 관련 수많은 기능을 도입한 언어이기 때문에 빠르게 동작하는 코드를 짤 수 있습니다.
또한 C++은 절차지향, 객체지향, 일반화 프로그래밍 등 프로그래밍 언어에서 제공할 수 있는 대다수 패러다임을 지원하는 언어입니다. 같이 비교되는 C의 경우 객체지향이나 일반화 프로그래밍을 언어 차원에서 지원하지 않기 때문에 이를 흉내내려면 알아보기도 힘든 매크로 떡칠을 동원해야 하는데, 이를 언어 차원에서 성능 하락 없이 쓸 수 있다는 것은 C에 비해 엄청난 장점이라고 할 수 있습니다.
하지만 다른 언어에 비해 복잡하고 배우기가 어렵습니다. C++ 개발자들도 모든 문법 요소를 쓰는 것이 아니라 필요한 요소들만 가져다가 쓴다고 하네요.
References.
1. 가비아 라이브러리, "파이썬 바로 알기 - 특징, 장점, 활용사례"
2. 요즘IT, "자바 언어의 장단점과 2022년 트렌드"
3. 나무위키, C++
'[POLF] : 코딩' 카테고리의 다른 글
스마트폰 애플리케이션 프로세서(AP)란? (1) | 2023.01.14 |
---|---|
통합개발환경, IDE(Integrated Development Environment) 개념 및 중요 요소 (2) | 2023.01.10 |
[용어부터 정리하자] 기계어, 자연어, 어셈블리어? (2) | 2023.01.09 |
[용어부터 공부하자] 코딩, 프로그래밍, 알고리즘의 정의 (2) | 2022.12.15 |
[용어부터 정리하자] #1. 개발자란 무엇인가? (2) | 2022.12.11 |
댓글