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
2022 프로그래밍 언어 순위와 주요 언어 Top5
바야흐로 코딩 의무 교육화 시대! 빠르게 바뀌는 시대에 맞춰 프로그래밍 언어 종류에 대해서 알아보고, 프로그래밍 언어의 특징도 정리해 봅시다!
elice.io
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/
BME228
Portability (이식성) 처음 개발된 HW 및 SW 환경 외에서 실행이 가능한지를 나타내는 특성. 100% 동작을 보장한다 라기보다는, 어느 정도의 수정 이 이루어져야 실행이 가능한지 를 나타낸다고 보는
dsaint31.me
Binding 이란?:
- 프로그래밍에서 특정 식별자(identifier)나 이름에 속성이나 객체를 연결하는 과정
[Programming] Binding: Name Binding and Language Binding
Programming에서의 Binding(binding)이란?binding은 프로그램이 실행되는 동안 특정 identifier (or name)에어떤 속성이나 객체 등의 실제 대상을 binding(연결)하는 것을 의미함.Binding의 기본 개념Name or Identifier Us
ds31x.tistory.com
gluecode란?
- 서로 다른 소프트웨어 컴포넌트나 시스템을 연결하여 작동하게 하는 코드를 의미
[Programming] glue code and binding
glue의 사전적 의미는 "풀" (종이를 붙이는 딱풀 또는 접착제)을 의미한다. glue code란 말 그대로 연결 또는 붙여주는 코드를 가르킴. 붙이는 대상을 넣어서 정의하면 다음과 같음. "glue code"는 서로
ds31x.tistory.com
같이 읽어보면 좋은 자료들
[Python] Programming Language and Introduction of Python.
Computer and Program https://dsaint31.tistory.com/436 [CE] Computer and Program. 개인적으로 선호하는 Computer의 정의는 다음과 같음 (wikipedia). A computer is a machine that can be programmed to carry out sequences of arithmetic or logical
ds31x.tistory.com
'Programming' 카테고리의 다른 글
[Python] Expression vs. Statement (0) | 2023.06.12 |
---|---|
[WSL] Install WSL (Windows Subsystem for Linux) (0) | 2023.06.12 |
[Python] Dynamic Typed Language vs. Static Typed Language (0) | 2023.06.11 |
[Python] Keyword란? (Soft Keyword 포함) (0) | 2023.06.11 |
[Python] Comments and Docstrings (0) | 2023.06.11 |