본문 바로가기
KNOU/요약정리

[python] 파이썬의 이해

by bottlesun 2023. 5. 16.
728x90

파이썬의 탄생

히도 판로쉼(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년 과학 연구와 교육을 목적으로 개발

클라우드 기반 주피터 노트북 개발 환경

→ 주피터 노트북 + 구글 드라이브를 결합한 서비스

→ 데이터 분석 및 딥러닝 연산 등 고성능 컴퓨팅 리소스 활용 가능

728x90

댓글