파이썬 개요
1. 파이썬의 기원
- 1990년 네덜란드 암스테르담, 귀도 반 로섬에 의해 개발
- 1991년 발표된 인터프리터형 언어
- 왜 개발했는가?
- (2008, 구글 개발자 컨퍼런스에서)
- “1989년 12월, 저는 크리스마스 주중에 저의 ‘취미’가 될 만한 프로그램을 찾고 있었습니다.”
- 1999년, DARPA에게 Computer Programming for Everybody라는 자금 제안서를 제출하여 Python에 대한 나의 목표를 정의하였습니다. 당연히 무료이며 오픈 소스이므로 누구나 개발할 수 있습니다.
- 평이한 영어로 이해할 수 있는 코드, 일상적인 업무에 대한 적합성과 짧은 개발 시간 등 장점을 기반으로 파이썬은 대중적인 프로그래밍 언어가 되었습니다.
2. 파이썬의 특징
- 쉽게 익힐 수 있는 프로그래밍 언어이다(문법이 쉽다).
- 간결하다.
- 강력하다.
- 무료(오픈소스)이다.
- 개발 속도가 빠르다.
그런데… 정말 쉬울까?
2.1 파이썬이 쉽다는 말은 누가 했을까?
- 귀도 반 로섬: 취미로 프로그래밍 언어를 만들 정도의 엄청난 능력자 → 쉽다는 기준이 일반인과 다름
- 기존 개발자: 개발 경험이 풍부하므로 C/C++/C#, Java 등과 비교하면 당연히 쉬움 → 쉽다는 기준이 일반인과 다름
- 영어권 일반인: “평이한 영어로 이해할 수 있는 코드”가 개발 기준 → 당연히 접근하기 쉬움 → 쉽다는 기준이 한국인과 다름
- 비 영어권 일반인: “뭔 소린지 하나도 모르겠다!!!”라는 반응이 생각보다 많음 → 진짜 쉽나??
2.2 입문자에게 파이썬은…
- 파이썬의 특징이자 장점인 동적 언어 → 입문자에겐 의미를 알 수 없는 특징
- 자료형을 신경 쓰지 않아도 됨 → 나중에 꼬이기 시작하면 답이 없음
- 객체지향, 절차지향, 함수형 언어의 특징을 모두 지원 → C/C++/C#/Java 등 다른 언어의 특징을 모두 신경 써야 할 지도 모름
- 엄격한 들여쓰기, 탭, 스페이스… → 알려진 것과 다르게 코드의 형태를 매우 엄격하게 관리
- 등등…
2.3 시작부터 겁을 주는 이유는?
- 그럼에도 불구하고 파이썬의 접근성은 타 언어보다는 용이하다.
- 이해가 잘 가지 않더라도 나 혼자만 뒤처지는 것이 아니다!!
- 겁먹을 필요 없다!! 해 보면 그래도 다른 것보다는 쉽다!!
2.4 그러면 다시 한 번.. 파이썬의 언어적 특징
- 플랫폼 독립적인 언어 : 어떤 운영체제든 상관없이 사용할 수 있는 언어 → 글쎄..
- 인터프리터 언어 : 컴파일러 언어와 달리 소스코드 자체가 바로 실행되는 언어 → 속도는 느리지만, 간편하게 사용 가능
- 객체 지향 언어 : 해당 프로그램이 해결해야 할 문제의 구성요소를 요소 별로 정의한 뒤 각 요소의 기능(메서드)과 정보(속성)를 정의하여 요소들을 결합하고, 프로그램을 작성하는 방식 → 클래스 지원 언어
- 동적 타이핑 언어 : 프로그램의 실행 시점에서 각 프로그램 변수의 타입을 결정하는 언어 → 적어도 코딩할 때는 크게 신경 쓰지 않아도 됨
3. AI/데이터 과학 분야에서는 왜 파이썬을 많이 사용할까?
3.1 국내 도입
- 1991년에 발표된 언어지만 국내에선 그다지 주목받지 못해..
- 책장에서 발견한 옛 파이썬 도서 (1998.01.17 발행) 대학생때 사 놓고 거의 보지 않음
- 알파고 이후, AI에 대한 관심이 급증하면서 일단 외국의 트렌드를 따라 감
- 그럼 외국에서는 왜?
3.2 데이터 과학, AI 분야에 대한 파이썬의 강점
- 개발 속도, 개발의 용이성 등 다양한 특징
- 언어 자체적으로 64Bit 이상의 매우 큰 정수 연산 지원 → 이·공학 분야에서 많이 활용
- 매우 다양한 기능의 라이브러리 제공(특히 이·공학 분야를 위한 강력한 기능 제공)
- Numpy, Pandas, SciPy, Scikit-Learn, Matplotlib 등 복잡한 수치와 시각화, 큰 데이터에 특화된 라이브러리를 포함한 매우 다양한 기능의 라이브러리 제공
- 이·공학 분야의 경우
- 수많은 데이터를 기반으로 특정한 모델의 연구 개발 및 실험 지속, 성능 증명이 필수
- 인터프리터형 언어의 특징 + 다양한 라이브러리 → 연구 과정에서 요구되는 노력 감소 지원
- 이러한 이유들로 인해 채택됨
3.3 파이썬의 단점
- 느리다
- 인터프리터형 언어이므로 코드를 한 줄씩 읽고 해석하여 실행
→ Cpython 확장 모듈: 개발된 파이썬 모듈을 C/C++ 루틴 호출 연동 등을 통해 성능향상
→ Cython: Cpython 확장 모듈을 쉽게 생성하도록 지원하는 컴파일 언어
- 인터프리터형 언어이므로 코드를 한 줄씩 읽고 해석하여 실행
- 디자인, 환경 등에 대한 제약: 개선을 위한 다양한 라이브러리 개발 중
GUI 지원 취약: QtPy, Tkinter 등 라이브러리 및 툴킷 지원으로 보완 중
- 인터프리터형 언어: 장점인 동시에 단점