Python이란?
-
네덜란드의 개발자 귀도 반 로섬(Guiso van Rossum)이 1989년 크리스마스 휴가 중 취미가 될만한 프로그램을 찾던 중에 재미로 개발하기 시작하여 1991년에 공식적으로 출시된 프로그래밍 언어임.
- TMI : "Python"이라는 이름은 그리스 신화에 나오는 큰 뱀을 뜻한다고 하지만,
python은 귀도 반 로섬이 좋아하던 프로그램 이름에서 유래되었다고 함!
-
현재까지 최고의 프로그래밍 언어로 선정되고 있으며, 많은 기업에서 파이썬을 이용해 다양한 소프트웨어들을 개발하고 있음.
- TMI : 대표적인 예로 Google에서는 Java와 함께 Python을 메인 언어로
사용하여 프로그램들을 개발하고 있다고 함!
![](https://velog.velcdn.com/images/dankj1991/post/a8b7bb2f-aaaf-4661-9914-cd442fca8f2f/image.png)
왜 Python이 좋은 프로그래밍 언어일까?
Python
은 다른 언어들에 비해 문법구조가 쉬운 편
들여쓰기 문법
으로 인해 읽고 쓰기가 쉬움!
- 배우기도
쉽고
, 간결
하고, 코딩이 편리
하는 장점!
- 다른 프로그래밍 언어와의
호환성이 뛰어남
텍스트 데이터
를 다루기 편하고, 무한 정수
를 처리할 수 있음
- Python은
인터프리터 언어
로써 별도의 실행파일을 생성하지 않고도 바로 코드를 실행
해 볼 수 있음
- 다양하고 뛰어난
모듈(Module)
들이 많고, 커뮤니티
형성도 매우 잘 되어있음
compiler & Interpreter
- 프로그래밍 언어는 크게 컴파일러 언어와 인터프리터 언어로 구분 될 수 있음
컴파일러(Compiler) 언어 (C, C++, Java 등..)
- 자연어로 작성된 코드를 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정을 컴파일(compile)이라 함.
- 이러한 컴파일러 언어들은 코드를 기계어로 번역하는 컴파일 과정을 거친 실행용 파일을 생성하고, 코드를 실행할 때는 컴파일 과정을 거친 실행용 파일을 실행함으로써 코드 실행 결과를 출력함.
- 소스코드 -> 컴파일 -> 실행
- 장점
- 기계어를 실행하므로 인터프리터 언어보다는 실행속도가 빠르다는 점
- 단점
- 수정 사항이 발생할 때마다 다시 컴파일을 실시해야한다는 점
- 문법적 제약이 많은 편이고 운영체제에 따라 다르게 작업해야한다는 점
인터프리터(Interpreter) 언어 (Python, MATLAB, Java-script, SQL 등...)
- 필요한 소스코드만 바로 기계어로 번역해 실행하는 방식으로 코드를 실행하는 프로그래밍 언어
- 한줄씩 바로 기계어로 번역해 실행하는 방식이며, 일반적으로는 한줄씩 실행하지 않고 대본 형식으로 미리 코드를 짜서 소프트웨어를 구성하므로, 이러한 경우엔
스크립트(Script) 언어
라 부를 수도 있음
- 인터프리터 언어와 스크립트 언어는 혼용되어 쓰이는 경우가 많으므로 주의!
- 이 둘을 구분 짓기 위해 인터프리터 모드(한줄씩 실행)와 스크립트 모드(전체 실행)로 분류하기도 함
- 소스코드 -> 실행
- 쉽게 말해, 동시통역 후 실행 or 대본으로 한번에 실행
- 장점
- 수정 사항을 바로 반영하여 실행할 수 있어 동적인 기능을 지원하기가 유리함
- 디버깅시 한줄씩 실행할 수 있으므로 수정이 간편하다는 점
- 운영체제를 신경 쓸 필요 없이 작성할 수 있다는 점
- 단점
- 번역과정이 추가되므로 실행시간이 상대적으로 느리다는 점
- 문자를 읽어 실행하므로 문자를 입력하는 함수에서 오류 발생 가능성이 높다는 점
모듈, 패키지, 라이브러리, 프레임워크
모듈(Module)
? 다양한 함수와 클래스들을 묶은 python파일(.py
)을 의미함
- Module들을 묶은 폴더를
Package
라 함
- 이러한 모듈과 패키지들을 묶어서 제공되는 단순 집합을
Library
라 함
- 정해진 틀 안에서 특정 기능 구현에 집중하여 개발할 수 있도록 해주는
Framework
라는 뼈대 역할의 기술도 있음
Library
와 Framework
의 차이?
- Framework의 경우에는 전체적인 흐름을 Framework 스스로가 쥐고 있음
- 사용자는 그 안에서 필요한 코드를 짜 넣어야 함.
- Library의 경우에는 사용자가 전체적인 흐름을 주도적으로 만들 수 있으며,
- 라이브러리를 가져다가 사용하고 호출하는 방법으로 코드를 작성하면 됨.
- Python에서는 이러한
모듈, 패키지, 라이브러리, 프레임워크
를 자유롭게 설치하여 이용
할 수 있으며, 코드에서 import
함으로써 쉽게 기능들을 불러올 수 있음
데이터사이언스 분야의 대표적인 파이썬 모듈, 라이브러리, 프레임워크
(필자의 경험에 기반한 정보들이 많이 담겨져있는 정보이므로 자세하고 정확한 정보는 따로 찾아보시는 걸 추천함..)
numpy
: 다양한 기본 연산 중에서 특히 행렬 연산에 특화되어 있는 모듈
ndarray
형식의 데이터를 다루는 것이 특징
pandas
: 행과 열로 구성된 데이터프레임의 편집, 연산 등에 특화되어 있는 모듈
Series
, DataFrame
형식의 데이터를 다루는 것이 특징
matplotlib
: 가장 기본적인 파이썬 시각화 라이브러리
- 다양한 고급 시각화 라이브러리(seaborn 등...)들도 대부분
matplotlib
을 기반으로 제작되어 있기 때문에 시각화가 필요한 경우 거의 필수적으로 import해야하는 라이브러리라 볼 수 있음
Scikit-Learn
: 머신러닝 분야에서 가장 많이 쓰이는 대표적인 머신러닝 라이브러리
- 머신러닝을 위한 전처리, 학습모델, 모델성능평가 등 상당히 다양한 기능들을 제공하는 것이 특징임.
- 웬만한 머신러닝/딥러닝 라이브러리들은 학습모델들을
Scikit-Learn
에서 이용할 수 있도록 최적화하는 기능들을 가지고 있기도 할 정도로 머신러닝 분야에 있어서는 표준처럼 중요한 위치를 차지하고 있음
- 딥러닝 프레임워크
- 대표적으로
Tensorflow
, Pytorch
가 많이 쓰임
Tensorflow
- Google에서 개발한 딥러닝 프레임워크
- 정적 그래프를 생성하여 모델을 실행함
- 모델의 전체 계산 그래프를 정의한 후 모델을 실행해야하므로 동작중에 그래프를 정의하거나 조작할 수 없음
- 상대적으로 더 큰 규모의 커뮤니티를 형성하고 있음
- 문제에 대한 솔루션을 찾기가 더 수월한 편
- 대부분의 튜토리얼이나 딥러닝 입문과정에서 Tensorflow로 진행되는 경우가 많은 편
- Tensorflow-lite 등 최적화와 배포 관련 기능들이 잘 갖추어져 있어서, 모델을 배포하고자 하는 경우 좀 더 안정적인 배포가 가능한 점도 장점이라 생각함
Pytorch
- Facebook에서 개발한 딥러닝 프레임워크
- 동적 그래프를 사용하여 모델을 실행함
- 모델 동작 중에도 그래프를 정의하고 조작할 수 있음
- 최근들어 논문들에서 Tensorflow보다 더 많은 비중으로 pytorch를 이용하고 있으며, 점점 pytorch의 지지도가 더 높아지고 있는 추세
- Pytorch를 더 선호하게 되는 이유로 머신러닝 모델을 구현하는 것이 더 직관적이고 수정이 간편하다는 점 등을 꼽을 수 있다고 함.
Tensorflow
와 Pytorch
둘 모두 훌륭한 프레임워크이고, 아직은 둘 중 어느 것이 더 좋다고 판단할 수는 없으므로, 아무거나 선택하여 시작해도 무방함
IDE 통합 개발 환경
- IDE(Integrated Development Environment) 혹은 IDLE(Integrated Development and Learning Environment)라 부르기도 함
- 프로그램 개발에 필요한 코드 작성, 디버깅, 실행 등을 제공하는 Tool을 의미함
- Python 설치 후 Python IDLE을 통해서 간단한 기능들은 수행해볼 수 있지만, 좀 더 복잡한 코드를 작성하기 위해선 파이썬 기능을 더욱 쉽게 이용할 수 있도록 해주는 IDE를 설치하여 코드를 작성하는 것이 좋음
Python을 지원하는 대표적인 IDE (통합개발환경)
Jupyter Notebook
- python 코드의 입력에 대한 출력을 블럭 형태로 표시할 수 있고, 확장자는
.ipynb
라는 형식으로 저장하는 것이 특징임
- 셀 단위의 블럭으로 파이썬코드 입력과 출력을 바로 확인 할 수 있기 때문에, 입문용으로도 매우 적합한 IDE
- 코드들을 하나의 문서로 묶거나 시각화 결과를 담아내야 하는 경우에 적합함
- 다만 코드 파일 자체가 용량을 상당히 많이 차지하기 때문에 소프트웨어 프로그램을 작성하기에는 적합하지는 않음
- 즉 시각화 분석이나, 모델링 과정을 하나의 보고서로 만들어야 하는 경우에 이용하는 것이 좋음
- Jupyter Notbook은
Anaconda
를 통해 설치하여 웹으로 이용하거나, Google Colab
을 통해서도 이용해 볼 수 있음
- 컴퓨터 사양의 한계가 있는 경우엔 Colab을 통해 Jupyter Notebook을 이용하는 것이 좋지만, 런타임 제한이나 RAM 제한을 초과하는 경우엔 긴 시간동안 이용할 수 없기 때문에 이러한 점은 조심해서 사용해야 함
Pycharm
- JetBrains에서 Python에 특화되도록 개발한 통합개발환경
- 수준 높은 코드 자동 완성 기능을 제공하며, 디버깅이나 실행을 GUI 형태로 이용할 수 있음 (GUI는 쉽게말해 마우스 클릭만으로도 가능하다는 뜻)
- 또한 Git의 다양한 기능들을 IDE 내부에서 GUI 형태로 편리하게 이용할 수 있다는 장점이 있음
- 무료 버전인 커뮤니티 에디션과 유료 버전인 프로페셔널 에디션으로 나뉨
- 무료 버전에서는 python (
.py
)만 이용할 수 있어서 파이썬 입문용으로 쓰일 순 있지만... 여러 제약이 있으므로 무료로만 이용하기엔 추천할 만한 IDE는 아니긴함
- 유료 버전인 프로페셔널 버전에서는 라이브러리를 편리하게 사용할 수 있고, Jupyter Notebook을 편집하고 실행할 수 있으며, HTML, JS, SQL과 같은 다른 언어들도 지원함
- 개인적으로는 다음에 소개할 VSCode에 비해 불편한 점들이 많고 무료버전의 제약이 커서 추천할 만한 IDE는 아니긴 함...
Visual Studio Code (VSCode)
- Microsoft에서 개발한 텍스트 에디터로 2015년에 처음으로 소개되어 2016년에 정식판이 발표되었음
- 마이크로소프트의 개발 툴 중에서 최초로
크로스 플랫폼
을 지원하는 에디터인 만큼 Window, MacOS, Linux를 모두 지원
함
- 가장 큰 장점은
확장 기능을 통해 원하는 대로 IDE를 빌드하여 이용
할 수 있다는 점!
- 초기에 필요한 확장 기능을 설치하는 과정이 다소 번거로울 수 있지만, 대부분의 프로그밍 언어로 확장시킬 수 있기 때문에 Python이외에도 다른 언어로 개발해야하는 경우 입맛에 맞게 IDE를 확장시킬 수 있음
대부분의 확장 기능들이 무료로 제공된다는 점
도 큰 장점 중 하나 !
- 특히 마이크로소프트에서 직접 개발하고 관리하는 기능들이 주로 무료로 제공되는 경우가 많음
- C/C++, Java, PostgreSQL, React, Python-Jupyter, TypeScript 등...
- 현재는 Jupyter Notebook 클라이언트를 자체 내장하고 있어 설치 후 바로 이용할 수도 있고, Jupyter Notenook의 경우 변수 목록을 보여주는 기능 등 편리한 기능들을 기본적으로 제공하고 있음
- 따라서
개인적으로 가장 강력하게 추천하는 IDE
이며, Python이외에도 HTML, CSS, Java-Script 등 다양한 언어를 활용해야하는 경우
나 Windows나 Mac, Linux 등 다양한 운영체제에서 동일하게 작업해야하는 경우
에 가장 적합한 IDE라 생각함.
- Pycharm에서도 지원하는 내용이긴하지만, VSCode에서는 Terminal을 통해 CLI (쉽게말하면 마우스없이 키보드로만 조작하는 것) 환경을 지원하는데, Windows를 Linux 환경처럼 이용할 수 있도록 해주는 Git Bash의 경우 Git Bash를 직접 이용하는 것보다 VSCode의 터미널로 Git Bash를 실행하는 것이 압도적으로 편리한 점들이 많음
- 가장 편리한 점은 복붙이 가능하다는 점..! (Git Bash를 직접 이용하는 경우엔 복붙이 안되어 매우 불편함..)
- Stackoverflow에서 180개국에서 73,000명 이상의 개발자들의 답변을 바탕으로한 2022년 개발자 설문조사에 의하면 무려
74.48%
의 응답자가 IDE로 VSCode
를 이용하고 있고 이는 전체 IDE 중 압도적인 1위에 해당함.
- Pycharm은 17.24%, Jupyter는 11.61%로 집계됨 (누적 선택 항목이므로 퍼센트는 크게 신경쓰지 않아도 되며, 압도적인 비율로 VSCode가 활용되고 있다는 점을 주의 깊게 보면 될듯)
마무리
- 본 글에서는 파이썬에 대한 소개와 모듈의 기본개념, 통합개발환경(IDE)에 대한 지식들을 정리하였음
- 이후엔 파이썬 프로그래밍의 개념과 자료구조에 대해 정리해볼 예정!