파이썬의 탄생
히도 판로쉼(Guido van Rossum) 1991년 개발
→ 분산 운영체제(아메바)의 시스템 관리를 위한 쉘 스크립팅 언어로 개발
쉘(shell)
사용자가 입력한 명령어를 해석해서 **운영체제 내부의 커널(Kernel)**에 전달하는 명령 해석기 창
다중 프로그래밍 패러다임 채용
프로그램을 생성하는 접근 방식 ( 명령형, 절차적, 객체지향, 함수형 프로그래밍 지원)
다목적 활용
응용 프로그램과 웹, 백엔드 개발, 사물 인터넷 분야 뿐 아니라 교육적인 목적으로도 활용
발전과정
1991년 ABC의 후속 프로그래밍 언어로 시작
1999년 DARPA에 ‘Computer Programming for Everybody’ 제안
2000년 파이썬 2.0 출시
→ 커뮤니티를 통한 개발 체계 시작
2008년 파이썬 3.0 출시
→ 비 하위 호환성을 갖는 메이저 업데이트
Pythonic (파이썬답다)
- 독립적 (운영체를 안가림)
- 오픈소스
- 인간적 (자연어와 유사하다)
- 신속성 (여러 라이브러리와 프레임워크가 지원이 잘 되어있다.)
- 직관적
오픈소스
파이썬 관련 개선을 위한 제안(PEP)
→ 많은 개발자의 의견을 수용하고 토론하며 발전하는 언어
→ 새로운 기능이나 프로세스 환경에 대한 설계 문서나 정보를 제공
PEP 8 (스타일 가이드) 대표적
인간적 & 직관적
실행할 수 있는 의사 코드(Executable pseudocode) 수준의 문법
if 3 in [1,3,5,7]: print("3이 들어있습니다")
// 리스트 [1,2,3,4] 에 3이 포함되어 있으면 "3이 들어있습니다" 를 출력한다.
생산성 & 신속성
타 언어의 코드들에 비해 짧고 직관적으로 사용이 가능하다.
// c언어
int n, sum = 0;
printf("입력: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += i;
}
printf("합은 %d\\n", sum);
// 파이썬
n = int(input('입력:'))
sum = 0
for i in range(1, n+1)
sum += i
print('합은' + sum)
파이썬의 단점
C나 자바 등으로 작성된 프로그램 보다 느린 속도
완전한 애플리케이션 단독 개발이 불가능
→ 쉘 스크립트 언어 용으로 개발
→ 모바일 앱 등 응용 애플리케이션 개발 불가능
파이썬 실행 환경
플랫폼에 독립적이며, 인터프리터식 객체 지향적, 동적 타이핑(dynamically typed) 대화형 언어
→ 윈도우, 리눅스, 유닉스, 맥OS 등 다양한 운영체제(플랫폼) 에서 별도의 컴파일 없이 실행 가능
→ CPython, PyPy, Cython, Jython 등 다양한 인터프리터 환경 사용 가능
→ 프로그램을 객체로 모델링
→ 변수의 자료형을 지정하지 않음
→ 작성한 코드에 대한 수행 결과를 바로 확인하고 디버깅 하며 코드 작성 가능(대화형 언어)
CPython
C언어로 개발된 파이썬 인터프리터
→ C 구현 라이브러리와의 연동을 통한 확장에 최적
컴파일러 유형
셀프 호스팅 컴파일러 : 부트스트래핑 단계를 통해 자신의 언어로 작성한 컴파일러
소스 대 소스 컴파일러 : 타 언어로 작성한 컴파일러
파이썬 프로그램 실행과정
- 컴파일 후 바이트 코드 .pyc 파일 생성
- 파이썬 가상머신은 바이트 코드를 한 라인씩 실행
- 변경 없이 재실행 시 바이트 코드로 빠르게 실행
코드 작성 → 컴파일러(CPython) → 바이트 코드 (.pyc 파일) → 파이썬 가상 머신(PVM) → 기계어 코드
IDLE
기본으로 포함된 파이썬의 통합 개발 환경
→ 파이썬과 Tkinter GUI 툴킷 으로 개발
→ 구문 강조, 자동 완성, 스마트 들여쓰기 등이 포함된 단순한 IDE 지향
→ stepping , breakpoint, call stack 을 확인할 수 있는 통합 디버거 환경 제공
주피터 노트북
오픈소스 기반의 웹 플랫폼
→ 파이썬을 비롯한 40여개의 프로그래밍 언어 지원
→ 전통적인 소스코드 - 컴파일 - 실행 방식에서 벗어난 웹 기반 대화형 개발 및 실행 환경
→ 문서화하여 다른 사람과 공유하기가 편리
→ 마크다운(Markdown)을 이용하여 코드관련 타이틀, 설명 등 작성 가능
구글 Colab
2017년 과학 연구와 교육을 목적으로 개발
클라우드 기반 주피터 노트북 개발 환경
→ 주피터 노트북 + 구글 드라이브를 결합한 서비스
→ 데이터 분석 및 딥러닝 연산 등 고성능 컴퓨팅 리소스 활용 가능
'KNOU > 요약정리' 카테고리의 다른 글
[python] 함수 (0) | 2023.05.16 |
---|---|
[python]구조적 프로그래밍 패러다임 (0) | 2023.05.16 |
[C 프로그래밍] 메모리 동적 할당 (0) | 2023.05.10 |
[C 프로그래밍] 파일처리함수 (0) | 2023.05.10 |
[C 프로그래밍] 구조체와 공용체 (0) | 2023.05.10 |
댓글