Home [파이썬 프로그래밍 기초] 3강 - 파이썬의 이해
Post
Cancel

[파이썬 프로그래밍 기초] 3강 - 파이썬의 이해

💡해당 게시글은 방송통신대학교 정재화 교수님의 '파이썬 프로그래밍 기초' 강의를 개인 공부 목적으로 메모하였습니다.



학습 목표


  • 파이썬의 특징을 설명할 수 있음
  • 파이썬 프로그램의 실행 과정을 나열할 수 있음
  • 파이썬 프로그래밍 환경의 특징을 설명할 수 있음



주요 용어


  • 프로그래밍 패러다임
    • 프로그래밍을 생성하는 접근 방식
  • 라이브러리
    • 자주 사용되는 프로그래밍 구성 요소를 미리 작성하여 패키징한 프로그램 모음
  • 주피터 노트북
    • 오픈소스 웹 기반 대화형 개발 및 실행 환경



강의록


파이썬의 개요

파이썬의 탄생

  • 히도 판 로쉼(Guido van Rossum) 1991년 개발
    • 네덜란드 암스테르담 대학에서 컴퓨터 전공
    • 좋아하는 코미디 ‘Monty Python’s Flying Circus’에서 이름을 따옴
    • 크리스마스 주 연구실이 잠겨 할 일이 없어 만든 프로그래밍 언어
  • 분산 운영 체제(아메바)의 시스템 관리를 위한 쉘 스크립팅 언어로 개발
    • 스크립트
      • 명령어를 순차적으로 나열
      • 운영 체제가 어떤 순서로 동작해야하는지 명령어를 집합으로 만들어놓은 형태
  • 다중 프로그래밍 패러다임 채용
    • 정의
      • 프로그램을 생성하는 접근 방식
    • 명령형 프로그래밍, 절차적 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍 지원
    • 패러다임
      • 현실 세계를 어떠한 방식으로 모델링하는 것에 대한 여러 관점들을 규칙화하여 만든 것
  • 다목적 활용
    • 응용 프로그램과 웹, 백엔드, 사물 인터넷(IoT) 분야 뿐만 아니라 교육적인 목적으로 활용

파이썬의 발전 과정

  • 1991년 ABC의 후속 프로그래밍 언어로 개발
  • 1999년 DARPA에 ‘Computer Programming for Everybody’ 제안
    • DARPA
      • 미 국방성 연구 기관으로 이곳에서 최초의 인터넷이 탄생
  • 2000년 파이썬 2.0 출시
    • 커뮤니티를 통한 개발 체계 시작
  • 2008년 파이썬 3.0 출시
    • 비 하위 호환을 갖는 메이저 업데이트
      • 정수 부분에 있는 버전 → 메이저 업데이트
      • 소수점 대에 있는 버전 → 마이너 업데이트

파이썬의 인기

image.png

image.png

image.png

  • 대형 개발자 커뮤니티 지원
  • 직관적이고 가독성이 높은 문법
  • 다양한 라이브러리와 프레임워크 제공
  • 데이터 과학, 머신러닝, 웹 개발 등에서 활발히 사용됨

Pythonic (파이썬스러움)

image.png

  • 독립적
    • 다양한 플랫폼에서 실행 가능
    • 운영 체제를 가리지 않고 모두 실행이 가능해 플랫폼 독립적임
  • 오픈 소스
    • PEP(파이썬 개선 제안) 기반의 개방형 개발 방식
  • 인간적
    • 의사 코드(Executable pseudocode) 수준의 문법
    • 자연어와 유사한 문법 구조
  • 신속성
    • 빠른 개발 속도
    • 여러 라이브러리와 프레임 워크들이 만들어져있어 빠르게 가져다 프로그래밍 할 수 있음
  • 직관적
    • 읽고 쓰기 쉬운 코드 스타일
    • 생각을 빠르게 코드화 시킬 수 있음

오픈 소스

  • 파이썬 관련 개선을 위한 제안(PEP)
    • 많은 개발자의 의견을 수용하고 토론하며 발전한 언어
    • 새로운 파이썬의 기능, 파이썬 프로세스, 환경에 대해 커뮤니티에 설계 문서나 정보를 제공
    • 파이썬 기능의 간결한 기술적 사양과 기능을 위한 근거들을 제공
    • 커뮤니티의 의견을 수집, 합의 도출, 반대 의견 청취
  • PEP 8(스타일 가이드) 대표적

인간적 & 직관적

  • 실행할 수 있는 의사 코드(Executable pseudocode) 수준의 문법
    1
    2
    
      if 3 in [1, 3, 5, 7]:
          print("3이 들어있습니다")
    
    1
    
      리스트 [1, 3, 5, 7]에 3이 포함 되어 있으면 "3이 들어있습니다"를 출력하시오
    

생산성 & 신속성

  • C
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
      int i, n;
      int sum = 0;
    
      printf("입력:");
      scanf("%d", &n);
    
      for(i = 0; i < n; i++)
      {
          sum += i;
      }
    
      printf("합은 %d", sum);
    
  • Python
    1
    2
    3
    4
    5
    6
    7
    
      n = int(input("입력:"))
      sum = 0
    
      for i in range(1, n+1):
          sum += i
    
      print("합은" + sum)
    

대형 개발자 커뮤니티

image.png

라이브러리와 프레임워크

  • 주어진 라이브러리들을 빠르게 임포트하여 쉽고 편하게 사용 가능

    image.png

    • Pytorch, TensorFlow
      • 딥 러닝을 위한 라이브러리
    • astropy, biopython
      • 각종 과학 기술 분야에서 특화되어 사용할 수 있음
    • matplotlib, Bokeh, pandas
      • 어떤 데이터의 결과를 만들어내고 그래프화 할 수 있게 함
    • ipython, jupyter
      • 편리하게 개발할 수 있는 환경 제공
    • flask, django
      • 대형 프로젝트 개발 시 특정 순서대로 개발하기 위한 프레임워크 제공
    • numpy, Numba, SymPy
      • 수치 해석 관련된 여러가지 기능을 내장하고 있는 라이브러리

파이썬의 단점

  • C나 Java 등으로 작성된 프로그램보다 느린 속도
  • 완전한 애플리케이션 단독 개발이 불가능
    • 쉘 스크립트 언어 용으로 개발
    • 모바일 앱 등 응용 애플리케이션 개발 불가능
  • 대안으로 Rust 또는 Go 고려 가능

파이썬 프로그램의 실행

파이썬 실행 환경

  • 플랫폼에 독립적이며 인터프리터 식 객체 지향적 동적 타이핑(dynamically typed) 대화형 언어
    • 윈도우, 리눅스, 유닉스, 맥OS 등 다양한 운영 체제(플랫폼)에서 별도의 컴파일 없이 실행 가능
    • CPython, PyPy, Cython, Jython 등 다양한 인터프리터 환경 사용 가능
    • 프로그램을 객체로 모델링
    • 변수의 자료형을 지정하지 않음
    • 작성한 코드에 대한 수행 결과를 바로 확인하고 디버깅하면서 코드 작성 가능

CPython

  • C 언어로 개발된 파이썬 인터프리터
    • C 구현 라이브러리와의 연동을 통한 확장에 최적
    • 컴파일러의 유형
      • 소스 코드를 기계어로 바꾸어주는 컴파일러와 인터프리터
      • 셀프 호스팅 컴파일러
        • 부트 스트래핑 단계를 통해 자신의 언어로 작성한 컴파일러
      • 소스 대 소스 컴파일러
        • 타 언어로 작성한 컴파일러
  • 오픈소스로 커뮤니티의 기여로 지속적 발전

파이썬 프로그램 실행 과정

  • 파이썬 애플리케이션은 소스 코드 형태로 배포

    image.png

    • CPython이 컴파일 후 바이트 코드(.pyc) 파일 생성
    • 파이썬 가상 머신은 바이트 코드를 한 라인씩 실행
    • 변경 없이 재 실행 시 바이트 코드로 빠르게 실행
      1. 파이썬 애플리케이션 → 소스 코드 작성 (.py)
      2. CPython이 바이트코드(.pyc)로 변환
      3. 바이트코드를 파이썬 가상 머신(PVM)이 실행
      4. 실행 결과 출력

파이썬 프로그래밍 환경

IDLE

  • 기본으로 포함된 파이썬 통합 개발 환경 (IDE)
    • 파이썬과 Tkinter GUI 툴킷으로 개발
    • 구문 강조, 코드 자동 완성, 스마트 들여쓰기 등이 포함된 단순한 IDE 지향
    • stepping, breakpoint, call stack을 확인할 수 있는 통합 디버거 환경 제공
  • 파이썬 공식 홈페이지에서 다운로드 가능
    • http://www.python.org

Jupyter Notebook

  • 오픈 소스 기반의 웹 플랫폼
    • 파이썬을 비롯한 40여 개 이상의 프로그래밍 언어 지원
    • 전통적인 소스코드-컴파일-실행 방식에서 벗어나 웹 기반 대화형 개발 및 실행 환경
    • 문서화하여 다른 사람과 공유하기가 편리
    • 마크 다운(Markdown)을 이용하여 코드 관련 타이틀, 설명 등 작성 가능

Google Colab

  • 2017년 과학 연구와 교육을 목적으로 개발
  • 클라우드 기반 주피터 노트북 개발 환경

    image.png

    • 주피터 노트북 + 구글 드라이브를 결합한 서비스
    • 데이터 분석 및 딥러닝 연산 등 고성능 컴퓨팅 리소스 활용 가능



연습 문제


  1. 다음 중 파이썬의 장점이라고 할 수 없는 것은?

    a. 빠른 실행 속도

    • 파이썬의 장점
      • 뛰어난 생산성
      • 대형 개발자 커뮤니티
      • 직관적 문법
  2. 파이썬 프로그램이 플랫폼 독립적으로 실행될 수 있도록 (가)와 같이 파이썬 인터프리터가 동작하는 과정에서 중간 언어로 만드는 것은? 

    image.png

    a. 바이트 코드

  3. 파이썬 프로그래밍 환경 중 오픈 소스이며 문서화가 쉽고 전통적인 소스코드-컴파일-실행 방식에서 벗어나 웹 기반 대화형 개발 및 실행 환경을 제공하는 것은?

    a. 주피터 노트북



학습 정리


  • 파이썬은 히도 판로쉼(Guido van Rossum)에 의해 1991년 분산 운영 체제(아메바)의 시스템 관리를 위한 쉘 스크립팅 언어로 개발됨
  • 파이썬은 명령형 프로그래밍, 절차적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍 패러다임을 지원함
  • 파이썬은 교육적인 목적뿐만 아니라 응용 프로그램과 웹, 백 엔드 개발, 사물 인터넷 등 다양한 분야에 활용됨
  • 파이썬은 파이썬 확장 제안(PEP)를 통해 새로운 파이썬의 기능, 파이썬 프로세스, 환경에 대해 커뮤니티에 설계 문서나 정보를 제공하는 등 많은 개발자의 의견을 수용하고 토론하며 발전한 언어임
  • 파이썬은 플랫폼에 독립적이며 인터프리터식 객체 지향적, 동적 타이핑(dynamically typed) 대화형 언어임
  • 파이썬 소스 코드는 파이썬 인터프리팅 과정에서 CPython에 의해 바이트 코드로 변환되고, 파이썬 가상 머신(PVM)이 한 라인씩 기계어 코드로 변환하여 실행됨
  • 파이썬 개발 환경에는 구문 강조, 자동 완성, 스마트 들여 쓰기 등의 기능을 지원하는 IDLE, 주피터 노트북, 구글 코랩 등이 있음
  • 구글 코랩(Colab)은 주피터 노트북과 구글 드라이브를 결합한 서비스로 데이터 분석 및 딥러닝 연산 등 고성능 컴퓨팅 리소스 활용 가능함

[데이터베이스 시스템] 2강 - 데이터베이스 모델링

[데이터베이스 시스템] 3강 - 관계형 모델