파이썬 역사
파이썬은 1980년대 말 고안되어 1989년 12월 구현하기 시작하였으며 1991년 bbc 티비 프로그램의 Monty Python’s Circus 라는 이름을 따서 만들어진 고급 프로그램언어 입니다.
파이썬의 특징은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형 공동체 기반 개발 모델을 가지고 있으며 고급프로그램 언어 입니다.
파이썬은 플랫폼이 독립적이며, 소스코드를 중간 언어로 변환 후 바로 실행하는 인터프린터 언어 입니다. 그리고 객체지향적이며 실행시간에 자료형을 검사하는 동적 타이핑(Dynamically typed) 대화형언어 입니다.
파이썬의 종류는 약 5가지 종류가 있으며 하기와 같습니다.
- CPython : C 언어로 구현되었으며 다른 구현체와 구분하여 언급할 때 사용
- Iron python : C#으로 구현된 .NET 프레임워크 위에서 동작하는 .NET 플랫폼용 인터프린터 입니다.
- Stackless Python : CPython에서 C 스택을 없앤 인터프린터 입니다.
- Jython : java로 구현되어 JVM 위에서 돌아가는 자바 가상머신용 인터프린터이며 과거에는 JPython이라고 불림
- PyPy : 파이썬으로 작성된 파이썬 인터프린터 입니다
이중에서도 CPython이 오리지날 입니다. 이와중에 DropBox에서 Pyston이란 LLVM.JIT기반의 파이썬을 개발중이라고 합니다.
파이썬 2.0은 2000년 10월 16일 배포되었고, 많은 기능이 추가되었습니다.
또한, 쓰레기 수집 기능이 탑재되었고 유니코드가 지원이 특징이며 더 투명하고 공동체 지원을 받는 형태로 되어 있습니다.
파이썬 3은 2008년 출시 되었으며 사전형, 문자열형의 내부적인 변화와 일부 구형의 구성요소를 제거 하였으며 표준 라이브러리를 재배치 하였습니다. 그리고 파이썬 3의 다음 버전인 파이썬 3.x은 2008년 12월 유니코드 등의 몇몇 영역이 개선하였으며 2.x 에서 코드가 3.x에서 호환이 안되고 2.x의 오픈소스 라이브러리 지원이 더 많습니다.
이에, 파이썬의 개발 방향은 2.x 버전 대와 3.x 버전 대와 나누어 개발 중이며 파이썬 개발자인 귀도 반 로섬은 현재 파이썬 2.7이 마지막 버전이며 앞으로 추가되거나 2.8버전이 나오지는 않을 것으로 주장하고 있습니다. 따라서 개발자들은 3.x 버전으로 옮겨 가는 것이 타당할 것으로 판단이 됩니다.
파이썬의 장점은 아래와 같이 크게 4가지로 분류할 수 있습니다.
1. 코드의 단순성과 표준성
1) 객체 지향 언어를 사용하는 코드의 구문보다 간결하게 구성됨
2) 구문이 간단하고 규칙적이며, 서술문들은 줄로 끝나고, 블록 구조는 들여쓰기로 나타냄
3) 실행 가능한 의사 코드 처럼 보인다.
2. 이식성
1) 플랫폼에 독립적이며, 모든 OS 환경에서 연동되면서 다른 언어와 연동해서 사용
2) 소스가 공개되어 있어 수정 없이 파이썬이 동작하는 모든 플랫폼에서 동작
3) 다양한 플렛폼에서 동작함
3. 객체지향
1) 절차지향 프로그램 및 객체지향 프로그래밍을 지원함
2) 절차 지향 언어에서의 프로그램 -> 프로시저 또는 함수들로 구성되며 프로그램에서 많이 재사용되는 코드 조각들을 의미함
3) 객체지향 언어에서의 프로그램 -> 객체로 구성되며, 객체란 데이터와 기능이 결합된 하나의 대상을 의미함
4) 파이썬은 C++, JAVA 에 비해 강력하고 쉬운 방법으로 객체지향을 지원함
4. 확장 가능한 라이브러리
1) 방대한 표준 라이브러리 제공
2) 여러 시스템 관련 기능 포함되어 있어 파이썬이 설치되어있는 어떤 시스템에서든지 사용가능
3) Python Package Index2에 다양한 라이브러리가 공개죔
파이썬 단점 (다중스레드의 성능이 떨어지나, 다중프로세싱으로 극복!)
파이썬은 구현 언어에 따라 자바로 만든 Jyton, .net 기반의 IronPython등이 있으며 CPython은 C로 구현된 파이썬 구현체로써 파이썬은 GIL(Flobal Interpreter Lock)이라는 치명적인 단점을 갖고 있습니다.
CPython 인터프린터는 싱글스레드(Single Thread)만 지원하여 다중스레드(Multi-Thread)에 성능이 떨어집니다.
다중스레드(Multi-Thread) 보다는 다중 프로세서(Multi-Process)를 사용하기를 권장합니다.
다중프로세싱(Multi-Process) 패키지를 제공해 스레드 이용하는 것과 비슷하게 구현하도록 지원하고 있습니다.
'ICT > Python' 카테고리의 다른 글
연산자 및 자료형 1 (0) | 2020.03.15 |
---|---|
파이썬의 키워드 및 자료형_1 (0) | 2020.03.13 |
파이썬 가상머신과 식별자 (0) | 2020.03.12 |
파이썬 구성과 특징 (0) | 2020.03.11 |