Python 이란
Python은 현재 가장 많이 사용되는 High-Level Programming Language 중 하나임.
사실, Machine Learning (특히 Deep Learning) 분야와 Data Science 분야, 그리고 Scientific Computing분야에서 가장 많이 사용되는 언어라고 할 수 있다.
기반 기술을 개발하는 이들이나
Web Application이나 Desktop Application이나
스마트폰 App를 개발하는 이들의 경우엔
JavaScript나 C, C++, Rust, Go 등등을 애용하겠지만.
또한, 기존의 automation 등의 분야 외에도,
ML과 DS의 성공을 통해 확보하게 된 수많은 사용자들을 지지를 통해
Web Application이나 Desktop Application로의 활용도도 점점 높아지고 있음.
https://elice.io/newsroom/kind_of_programming_language
Python의 특징 (장점)
Python의 특징은 다음과 같다.
General Purpose
Programming Language :- Python은 거의 모든 분야의 프로그램 개발이 가능함.
- 상대적으로 "embedded system"이나 "스마트폰 어플" 개발에선 널리 사용되는 편은 아니지만... 가능은 하다.
- C, C++ 등으로 작성된 고성능 또는 널리 사용되던 라이브러리들을 language binding을 통해 쉽게 활용 가능함.
- Python 문법으로 작성한 코드로 실제로는 C, C++의 라이브러리를 활용하는 방식이 가능함.
Cross-Platform
Programming Language :- Python은 Linux, Windows, macOS 등 다양한 platform에서 사용가능함.
- 이를 가르켜
highly portable
이라고 한다.
Interpreter
Program Language (or Interpreted Language) :REPL
(Read-Eval-Print Loop)을 통한 개발이 가능함.- runtime에 dynamic binding을 통해 개발의 유연성을 제공함.
- 이는 효율적인 코드 작성과 디버깅을 가능하게 함.
Readable and Expressive Syntax
:- 높은 가독성과 간결함이 가능한 syntax를 가지고 있으며,
- 특유의 indentation(들여 쓰기) 기반의 code block을 채택하여 높은 가독성의 코드 작성이 보다 쉬움.
Large Standard Library and Extensive Third-party Library
:- Python Standard Library로 풍부한 library와 module들이 제공되며,
- 그 이상으로 풍부하며 다른 어떤 programming language들에 뒤지지 않는
- 최고 수준의 다양한 외부 그룹들이 제공하는 library와 framework들을 가지고 있음.
Integration and Scripting
:- Python은 C, C++, Java 등 다른 언어들을 쉽게 통합할 수 있는 특징을 가지고 있어서
glue language
라고 불리기도 하며,- automation이나 system관리에서 요구되는 scripting task를 쉽고 효율적으로 수행할 수 있는 장점을 지님.
- 동시에 다른 언어들의 강력한 기능을 binding과 dynamic linking을 통해 손쉽게 활용할 수 있음.
- Language Binding과 Dynamic Linking 등을 통해,
- 프로그램이 까다로운 C, C++이 아닌 보다 인간 친화적인 Python 문법을 활용하여
- C, C++ 등의 코드로 만들어진 고성능 라이브러리를 활용할 수 있음.
- 참고 자료: https://ds31x.tistory.com/208
Large and Active Commuity Support
:- 오늘날 가장 인기 있는 언어 중 하나로 수많은 우수한 개발자를 보유하고 있으며,
- 이를 바탕으로 활발한 user community가 구축되어 있음.
- 동시에 다양하고 질 높고 광범위한 online-documentation과 tutorial, support 등을 강점으로 가짐.
단점?
Python은 매우 다양한 분야에서 강력한 기능의 SW를 매우 쉽고 효율적으로 작성할 수 있게 해주는 언어임.
단점이라면 쉬운 문법과 높은 수준의 abstraction으로 인해
Computer에 대한 low-level 지식을 익히는데 큰 도움이 안 되며,
(모든 것에는 trade-off 가 있음)
Python으로 프로그래밍 언어를 시작한 이들이 다른 언어들로 시작한 경우보다
다른 programming language를 상대적으로 익히기 어려워 한다는 이야기가 많은 편임.
(이는 워낙 Python이 인간 친화적이고 이를 통해 높은 생산성을 가지기 때문이기도 함.)
대조적인 언어가 C
와 C++
언어임.
이들은 기본적으로 low-level 지식을 익히지 않고는 제대로 활용하기 어렵고
이들을 제대로 마스터하면 다른 언어들을 쉽게 익히는 것으로 유명하다.
참고: 주요 용어
Portability 란? (POSIX에 대한 설명을 통해 이식성에 대한 이해를 할 수 있는 글임)
- 소프트웨어 또는 하드웨어가 처음 개발된 환경 외의 다른 환경에서도 실행될 수 있는 특성을 의미
https://dsaint31.me/mkdocs_site/CE/ch15/ce15_2_4_portability/
Binding 이란?:
- 프로그래밍에서 특정 식별자(identifier)나 이름에 속성이나 객체를 연결하는 과정
gluecode란?
- 서로 다른 소프트웨어 컴포넌트나 시스템을 연결하여 작동하게 하는 코드를 의미
같이 읽어보면 좋은 자료들
'Programming' 카테고리의 다른 글
[Python] Expression vs. Statement (0) | 2023.06.12 |
---|---|
[WSL] Install WSL (Windows Subsystem for Linux) (0) | 2023.06.12 |
[Python] Dynamic Language vs. Static Language (0) | 2023.06.11 |
[Python] Keyword란? (Soft Keyword 포함) (0) | 2023.06.11 |
[Python] Comments and Docstrings (0) | 2023.06.11 |