[DAY 1] 파이썬 기초
Python
- 플랫폼 독립적
- 인터프리터 언어
- 객체 지향
- 동적 타이핑 언어
1. 플랫폼 독립적
- = OS에 상관없이 프로그램을 사용가능
- 플랫폼(= OS): 프로그램이 실행되는 운영체제
- 독립적인(= 관계없는, 상관없는): OS에 상관없이 한번 프로그램을 작성하면 사용 가능
2. 인터프리터 언어
- 인터프리터: 한줄씩 명령어를 입력하여, 즉각적이고 단계적으로 명령을 실행해 나가는 환경 (cmd, bash shell, …)
- 바이트코드: 해석기가 사용하는 명령어 세트로 처리된 코드로 가상 머신을 위한 어셈블리 코드
💡 실행 전에, 기계어로의 컴파일 과정을 거치지 않고, 한 줄씩 실행하면서 컴파일 하므로, 시간(퍼포먼스) 손해를 보게된다. 이를 극복하기 위해서 파이썬은 소스코드를 바이트코드로 컴파일한 다음, 이 바이트코드를 해석기가 해석하는 방식으로 실행된다.
✔️ 컴파일러 vs 인터프리터
- 컴파일러 소스코드 → 컴파일러 → 어셈블러 → CPU
- 프로그램을 실행시키기 전에 번역하므로, 운영체제에 맞춰 번역하면, 같은 운영체제 어디서든 사용 가능
- 소스코드를 기계어로 먼저 번역하고 해당 플랫폼에 최적화 된 프로그램을 실행하므로, 실행속도가 빠르고, 한번에 많은 메모리가 필요함
- 인터프리터 소스코드 → 인터프리터 → CPU
- 실행되면서 인터프리터를 실행하게 됨
- 별도의 번역과정 없이 소스코드를 실행하는 시점에 해석하여, 컴퓨터가 처리할 수 있게 하므로, 간단하고 메모리가 적게 필요하지만, 실행속도가 느리다는 단점이 있음
3. 객체 지향 언어
- 목적을 달성하기 위해 각각을 모듈로 만들어서, 조립
- 실행 순서가 아닌 단위 모듈(객체) 중심으로 프로그램을 작성
- 하나의 객체 는 어떤 목적을 달성하기 위한 행동(method) 와 속성(attribute) 을 가지고 있음
4. 동적 타이핑 언어
- 동적: 실행시점에 무언가를 결정
- 프로그램이 실행하는 시점 에, 프로그램이 사용할 데이터 타입 을 결정
파이썬 개요
Python 장단점
- 문법이 쉽고 간결함
- 이해하기 쉬운 문법
- 다양한 라이브러리
- 이미 널리 쓰이고 있음
- 생산성이 높아, 개발속도가 빠름
- OS 독립적이기 때문에 Edge Programming에서 유리
- 단점: 한줄씩 번역하는 과정이 필요하므로 느림
파이썬 코딩환경
파이썬 프로그래밍을 실행하기 위해 파이썬 인터프리터(interpreter) 와 코드 편집기를 설치하는 과정
개발환경(코딩환경) 설정
- 운영체제(OS)
- 파이썬 인터프리터
- 코드편집기(editor)
인터프리터
- Python: 일반적인 파이썬, 기본적인 모듈을 포함
- Anaconda: 다양한 과학 계산용 모듈들을 묶어서 패키지
코드편집기
- 코드 편집기의 두가지 타입
- 설치된 어플리케이션
- 윈도우의 기본 문서 편집도구: 메모장
- 리눅스의 기본문서 편집도구: vi editor, vim
- 프로그래밍 특화 문서 편집도구: sublime text, atom, VS Codes
- 웹 기반 인터랙티브 편집기
- 주피터, 코랩 → 데이터 분석 도구로서의 기능이 부각된다.
- Interactive: 무언가 주고받는다!
- 설치된 어플리케이션
사용목적에 따른 분류
- 파이썬
- anaconda + vs code
- anaconda: 간편한 파이썬 패키지 관리도구, ML의 사실상 표준
- 데이터분석 + 딥러닝
- colab + jupyter
- colab: 구글에서 제공하는 클라우드 기반 인터랙티브 코드편집기
- jupyter: ipython 커널을 기반으로 한 대화형 파이썬 쉘
- ipython: 인터렉티브 파이썬
- 일반적인 터미널 셸 + 웹기반 데이터 분석 Notebook 제공
- 사실상 데이터 분석 interactive shell의 표준
- 한줄씩 실행한 결과를 보여줌
- jupyter 단축키