파이썬 인기 배경
- 전 세계적으로 높은 사용 비중 확보
- 다양한 공개 소스 저장소와 개발 커뮤니티에서 널리 사용
- AI, 딥러닝, 데이터 분석, 클라우드 분야에서 강한 영향력 형성
- 교육용 언어를 넘어 산업 전반의 핵심 언어로 자리잡은 상태
파이썬 창시자
- 창시자: 히도 판 로쉼(Guido van Rossum)
- 네덜란드 출신 개발자
- 암스테르담 대학에서 수학과 컴퓨터 전공
- 1989년부터 파이썬 개발 시작
파이썬 이름 유래
- 뱀 이름에서 온 명칭 아님
- 코미디 프로그램 Monty Python's Flying Circus에서 이름 차용
- 발음의 인상과 어감에서 착안한 명칭
파이썬 최초 목적
- 교육용 언어로 출발한 것 아님
- AI 전용 언어로 출발한 것 아님
- 분산 운영체제 Amoeba의 시스템 관리용 셸 스크립팅 언어 목적
- 파일 관리, 자동 실행, 반복 작업 처리 목적 포함
셸 스크립팅 언어 성격
- 운영체제 작업 자동화 목적
- 파일 처리
- 프로그램 실행 및 중지
- 반복 작업 배치 처리
- 시스템 관리 작업 지원
파이썬 발전 흐름
1989년 개발 시작
- 히도 판 로쉼이 파이썬 설계 시작
1991년 공개 버전 배포
0.9버전 공개- 핵심 개념 포함 상태
1999년 CP4E 제안
- Computer Programming for Everybody
- 모든 사람이 쉽게 배울 수 있는 언어 방향 제시
- 대중화 철학 강화
2000년 파이썬 2.0 출시
- 모듈 개념 강화
- 재사용성 향상
2008년 파이썬 3.0 출시
- 기존 2.x와 비호환 구조 도입
- 문법과 구조 개편
- 현재 파이썬 생태계 기준점 형성
2020년 파이썬 2 종료
- 2.x 공식 지원 종료
- 3.x 체계 완전 통합
파이썬 기본 철학
- 읽기 쉬운 문법
- 간결한 표현
- 명확한 구조
- 사람이 이해하기 쉬운 코드 지향
- 다양한 목적에 활용 가능한 범용 언어 지향
파이썬 활용 분야
- 응용 프로그램 개발
- 웹 백엔드 개발
- 데이터 분석
- 인공지능
- 딥러닝
- 클라우드 컴퓨팅
- IoT
- 교육용 프로그래밍
파이썬 철학 문서
- The Zen of Python
- 파이썬 설계 철학을 담은 문구 모음
- 코드 작성 방향과 문법 변화의 기준 역할
대표 방향
- 아름다움 중시
- 명확성 중시
- 단순성 중시
- 복잡성 최소화
- 예외 남용 지양
- 실용성 중시
파이썬스러움 개념
- Pythonic
- 파이썬답게 문제를 해결하는 방식 의미
- 단순 문법 사용만 뜻하지 않음
- 명료하고 읽기 쉬운 해결 방식 포함
파이썬 핵심 특징
- 플랫폼 독립성
- 인간 친화성
- 직관적 문법
- 신속한 개발성
- 개방형 생태계
- 대규모 커뮤니티 기반
플랫폼 독립성
- Write once, run anywhere 성격
- Windows, macOS, Linux 등에서 동일 코드 실행 가능
- 운영체제 변화에 따른 코드 수정 부담 감소
- 문제 해결 자체에 집중 가능
지원 기반
- 인터프리터 구조
- 표준 라이브러리 제공
- 가상 환경 지원
인간 친화성
- 사람이 읽기 쉬운 문장 구조 지향
- 난해한 기호 사용 최소화
- 초보자 진입 장벽 완화
- 전문가에게도 빠른 표현 방식 제공
직관적 문법
- 영어 문장처럼 읽히는 구조 다수
- 불필요한 기호 최소화
- 코드만 보고 동작 의도를 파악하기 쉬운 편
- 의사 코드 수준의 가독성 확보
신속한 개발성
- 짧은 코드로 기능 구현 가능
- 표준 라이브러리 풍부
- 파일 처리, 데이터 처리, 네트워크 기능 내장 수준 높음
- 동일 기능을 더 적은 코드로 구현 가능한 경우 많음
다중 패러다임 지원
- 명령형
- 절차형
- 객체지향형
- 함수형
효과
- 문제에 맞는 방식 선택 가능
- 특정 스타일에 묶이지 않는 유연성 확보
- 범용 언어로서 활용 폭 확대
개방형 생태계
- 오픈소스 기반 발전
- 커뮤니티 토론 중심 개선
- 다수 개발자 참여 가능
- 기능 제안과 수정 과정 공개
PEP 개념
- Python Enhancement Proposal
- 파이썬 기능 개선 제안 문서
- 언어 문법, 기능 추가, 스타일 기준 등 정리
중요 문서
- PEP 8: 스타일 가이드
- PEP 20: The Zen of Python
PEP 8 의미
- 파이썬 코드 스타일 기준 문서
- 들여쓰기
- 줄 길이
- 공백 사용
- 이름 규칙
- 가독성 중심 작성 원칙 정리
대형 커뮤니티 강점
- 개발자 수 많음
- 공개 라이브러리 수 많음
- 문제 해결 자료 풍부
- 학습 자료 풍부
- 협업 구조 활성화
결과
- 개발 진입 장벽 감소
- 라이브러리 재사용성 증가
- 생태계 선순환 구조 형성
주요 라이브러리 생태계
- NumPy
- Pandas
- Matplotlib
- Scikit-learn
- TensorFlow
- PyTorch
활용 분야
- 수치 계산
- 데이터 분석
- 시각화
- 머신러닝
- 딥러닝
파이썬 장점 정리
- 읽기 쉬운 문법
- 간결한 코드
- 빠른 개발 가능
- 재사용성 우수
- 다양한 분야 적용 가능
- 풍부한 라이브러리
- 대규모 커뮤니티 지원
- 교육용 언어로 적합
- 실무용 언어로도 강력함
파이썬 한계 정리
- 실행 속도 상대적으로 느린 편
- 인터프리터 구조 기반 한계 존재
- 실시간성 요구가 강한 분야에는 불리
- 대규모 고성능 연산에서는 한계 존재
- 모바일 앱과 데스크톱 GUI를 파이썬만으로 완결 개발하기 어려운 경우 존재
파이썬 속도 한계 배경
- 인터프리터형 언어 구조
- 코드 한 줄씩 해석하며 실행
- C, C++, Java 등과 비교 시 느릴 수 있음
- 실시간 처리, 대규모 고속 연산에서는 불리
GUI 개발 한계
- 파이썬 단독으로 완전한 앱 개발에 제약 존재
- 모바일 앱 개발에는 별도 기술 결합 필요
- 데스크톱 GUI도 보조 라이브러리나 다른 언어와의 결합 자주 사용
예시
- Tkinter
- C#
- Objective-C
- 기타 래핑 구조 활용
파이썬 실행 환경 정의
파이썬은 다음 성격을 가짐
- 플랫폼 독립형
- 인터프리터형
- 객체지향형
- 동적 타이핑 언어
- 대화형 언어
동적 타이핑 의미
- 변수 선언 시 자료형을 미리 고정하지 않음
- 값에 따라 자료형이 동적으로 정해짐
- 초보자 입장에서 문법 부담 감소
- 유연성은 높지만 자료형 관리 주의 필요
대화형 언어 성격
- 전체 프로그램 완성 후 실행만 하는 구조 아님
- 일부 코드만 따로 실행 가능
- 실행 결과 즉시 확인 가능
- 오류 지점 파악과 수정이 비교적 쉬움
CPython 의미
- C 언어로 구현된 파이썬 인터프리터
- 가장 표준적인 파이썬 구현체
- 일반적으로 "파이썬"이라고 하면 CPython 기준인 경우 많음
특징
- 호환성 높음
- 표준 구현체 역할
- C 라이브러리와 연동 쉬움
CPython 한계
- 멀티코어 활용 제약 존재
- 정적 언어 대비 실행 속도 한계 존재
- 성능 한계 극복을 위한 다른 구현체나 확장 기술 필요할 수 있음
파이썬 프로그램 실행 과정
1단계 소스 코드 작성
.py파일 형태 작성
2단계 바이트코드 변환
- CPython이 바이트코드 생성
3단계 가상 머신 실행
- Python Virtual Machine이 바이트코드 실행
4단계 최종 기계어 실행
- 실행 과정에서 실제 동작 수행
특징
- 변경 없는 재실행 시 바이트코드 재활용 가능
- 인터프리터형이지만 내부적으로 바이트코드 단계 존재
개발 환경 종류
- IDLE
- Jupyter Notebook
- Google Colab
IDLE 특징
- 파이썬 기본 제공 개발 환경
- 설치 시 함께 제공
- 가볍고 단순한 구조
- 초보자 학습용으로 적합
- 디버깅 가능
- 기능은 단순하지만 빠른 편
Jupyter Notebook 특징
- 웹 기반 대화형 개발 환경
- 코드 블록 단위 실행 가능
- 문서화와 설명 작성 가능
- 마크다운 지원
- 데이터 분석, 실험, 교육에 적합
Google Colab 특징
- 구글 클라우드 기반 Jupyter 환경
- 별도 고성능 PC 없이 사용 가능
- 구글 드라이브 연동
- 협업 가능
- GPU 등 고성능 자원 일부 활용 가능
- 교육, 실습, 데이터 분석, 딥러닝 실험에 유리
정리
- 파이썬은 셸 스크립팅 언어에서 출발한 범용 언어
- 읽기 쉬운 문법과 간결한 표현이 핵심 강점
- 플랫폼 독립성과 풍부한 라이브러리 생태계 보유
- 대규모 커뮤니티와 오픈소스 구조를 기반으로 빠르게 발전
- 실행 속도와 GUI 단독 개발 측면에서는 한계 존재
- 대표 개발 환경으로 IDLE, Jupyter, Colab 사용 가능
- 실습 환경으로는 Google Colab 활용 예정