Language/Python

파이썬 기초 프로그래밍 3. 파이썬의 이해

yuns94 2023. 3. 29. 22:16
방송대 Python
학습목차
1️⃣ 파이썬의 개요
2️⃣ 파이썬 프로그램의 실행
3️⃣ 파이썬 프로그래밍 환경 

 

01. 파이썬의 개요

 

파이썬의 탄생 1

👉 히도 판로쉼(Guido van Rossum) 1991년 개발

-> 네덜란드 암스테르담 대학에서 컴퓨터 전공

-> 좋아하는 코미디 'Monty Python's Flying Cricus'를 따라 명명

-> 크리스마스 주 연구실에 잠겨 할일이 없어 만든 프로그래밍 언어

 

👉 분산 운영 체제(아메바)의 시스템 관리를 위한 쉘 스크립팅 언어로 개발

명령어를 순차적으로 나열 운영체제가 어떤 순서로 동작해야 하는지

명령어를 집합으로 만들어 놓은 형태를 스크립트라 하고 

이러한 목적을 가지고 만들어진 언어가 파이썬(Python)이다.

 

 

파이썬의 탄생 2

👉 다중 프로그래밍 패러다임 채용

-> 정의 : 프로그램을 생성하는 접근 방식

-> 명령형 프로그래밍, 절차적 프로그래밍,

객체지향 프로그래밍, 함수형 프로그래밍 지향

현실 세계를 어떠한 방식으로 모델링하는 것에 대한 여러 관점들을 규칙화하여 만든 것이 페러다임 

 

👉 다목적 활용

-> 응용 프로그램과 웹, 백엔드 개발, 사물 인터넷 분야 뿐만 아니라 교육적인 목적으로도 활용

 

파이썬의 발전 과정

👉 1991년 ABC의 후속 프로그래밍 언어로 시작

👉 1999년 DARPA에 'Computer

Programming for Everybody' 제안

👉 2000년 파이썬 2.0 출시

-> 커뮤니티를 통한 개발 체계 시작

👉 2008년 파이썬 3.0 출시 

-> 비 하위 호환성을 갖는 메이저 업데이트

 

파이썬의 인기

 

파이썬 답다 'Pythonic'

 

 

오픈소스

👉 파이썬 관련 개선을 위한 제안(PEP)

-> 많은 개발자의 의견을 수용하고 토론하며 발전한 언어

-> 새로운 파이썬의 기능, 파이썬 프로세스, 환경에 대해 커뮤니티에 설계 문서나 정보를 제공

-> 파이썬 기능의 간결한 기술적 사양과 기능을 위한 근거들을 제공

-> 커뮤니티의 의견을 수집, 합의 도출, 반대의견 청취 

👉 PEP 8 ( 스타일 가이드 ) 대표적 : 이렇게 만들어 놓으면 효율적으로 프로그래밍 할 수 있다는 가이드라인

 

인간적 & 직관적

실행할 수 있는 의사 코드(Executable pseudocode) 수준의 문법

 

 

 

생산성 & 신속성

 

 

대형 개발자 커뮤니티

전세계적으로 1500만명에 개발자 커뮤니티를 가지고 있다. 

장점 : 프로그램이 정상적으로 돌아가지 않는다면 대형에 커뮤니티에서 문제를 신속히 찾아 개선을 할 수 있다.

검색을 통해서 신속히 해결책을 찾을 수 있다는 큰장점이 있다.

 

 

라이브러리와 프레임워크

왼쪽은 Python -  오른쪽은 Java / C

 

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

 

 

파이썬의 단점

👉 C나 자바 등으로 작성된 프로그램보다 느린 속도

👉 완전한 애플리케이션 단독 개발이 불가능

-> 쉘 스크립트 언어 용으로 개발

-> 모바일 앱 등 응용 애플리케이션 개발 불가능 

    ㄴ Rust 또는 Go 프로그래밍 언어로 만들 수 있다

 

 

2.  파이썬 프로그래밍의 실행

 

파이썬 실행 환경

👉 플랫폼에 독립적이며 인터프리터식 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어

-> 윈도우, 리눅스 , 유닉스 , 맥OS 등 다양한 운영체제(플랫폼)에서 별도의 컴파일 없이 실행 가능

-> CPython , PyPy , Cython , Jython 등 다양한 인터프리터 환경 사용 가능

-> 프로그램을 객체로 모델링

-> 변수의 자료형을 지정하지 않음

-> 작성한 코드에 대한 수행 결과를 바로 확인하고 디버깅하면서 코드 작성 가능

 

CPython 

👉  C 언어로 개발된 파이썬 인터프리터

-> C 구현 라이브러리와의 연동을 통한 확장에 최적화

컴파일러의 유형
① 셀프 호스팅 컴파일러 : 부트스트래핑 단계를 통해 자신의 언어로 작성한 컴파일러
② 소스 대 소스 컴파일러 : 타 언어로 작성한 컴파일러

👉 오픈소스로 커뮤니티의 기여로 지속적 발전

-> https://github.com/python/cpython 

 

GitHub - python/cpython: The Python programming language

The Python programming language. Contribute to python/cpython development by creating an account on GitHub.

github.com

 

파이썬 프로그램 실행과정

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

-> CPython이 컴파일 후 바이트코드 .pyc 파일 생성

-> 파이썬 가상머신은 바이트코드를 한 라인 씩 실행

-> 변경없이 재실행 시 바이트코드로 빠르게 실행

 

 

IDLE

👉 기본으로 포함된 파이썬의 통합 개발 환경

-> 파이썬과 Tkinter GUI 툴킷으로 개발

-> 구문 강조, 자동 완성, 스마트 들여쓰기 등이

포함된 단순한 IDE 지향

-> stepping, breakpoint, call stack을 확인할 수 있는 통합 디버거 환경 제공

 

 

 

주피터 노트북

👉 오픈소스 기반의 웹 플랫폼

-> 파이썬을 비롯한 40여개의 프로그래밍 언어 지원

-> 전통적인 소스코드-컴파일-실행 방식에서 벗어나 웹 기반 대화형 개발 및 실행 환경

-> 문서화하여 다른 사람과 공유하기 편리

-> 마크다운(Markdown)을 이요하여 코드 관련 타이틀, 설명 등 작성 가능

 

구글 Colab (협 업 - 주피터 노트북을 개선한 형태로 제공하는 서비스)

👉 2017년 과학 연구와 교육을 목적으로 개발

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

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

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

 

 

 

 

3. 파이썬 실습

프로그래밍 개발 환경

https://colab.research.google.com/

 

Google Colaboratory

 

colab.research.google.com

 

 

 

고려대학교 교수님 초빙 강의 

 

정보과에서 추구하는 가치는 사고력  :  " 프로그래밍이 지향하는 것은 그 사고력의 관점 "

문제발견 -> 문제 해결 방법 모색 -> 문제 해결 = 프로그래밍  

 

절차적으로 생각하고 문제를 해결할 수 있도록 하는 사고력 전반을 품은 것, 프로그래밍 

우리가 일을 할 때에도 절차가 있는데... 

프로그래밍을 하게 되면 논리적으로 생각하고

절차적으로 사고하고

이에 기반한 문제 해결을 가능하게 하는 프로그래밍이다 프로그래밍의 가치는

새로운 시야로 문제를 보고 그것들을 해결하기 위해 생각하고 생각한 것들을 구현하고 표현하는 과정이 프로그래밍의 가치다 

 

Q. 어떤 걸로 프로그래밍 능력을 키워야 할까 ? 추천하는 프로그래밍 언어?

A .자기가 좋아하는 언어로 시작하면 된다.

세상을 살아갈 이치 중 하나가 프로그래밍

 

내용 : 교육용 프로그래밍은 3천개가 있다.  고등학교뿐 아니라 중학교에서도 파이썬 언어로 수업한다. 진입장벽이 낮음

기초는 파이썬으로 하고 깊이 공부하고 싶다면 자바나 다른것도 공부해봐도 좋다. 

 

내가 생각하고 있는 것들을 잘 표현할 수 있게 한 언어는 파이썬 

 

Q. 일반인들에게도 필요한 컴퓨팅 사고력, 인공지능 소양 ? 

A : 컴퓨팅 사고력이 무엇일지 생각해보면 보자 , 우리가

논리적 사고력 , 절차적 사고력 , 비판적 사고력 여러 사고력이 있는데 그 중 컴퓨팅 사고력은 무엇이 다를까 ? 

컴퓨터를 활용해서  문제 해결을 전제로 문제를 이해하고 분석하고 거기에서 해결방법을 찾아서 문제를 해결해 가는 것이 컴퓨팅 사고력이다. 프로그래밍의 가치와 일맥상통하는 컴퓨팅 사고력 .

문제를 이해하고 

 

 

Q. 파이썬 언어를 효과적으로 공부할 수 있는 방법 ? 

A : 언어를 배울 때 제일 어려운 것은 어떨ㄷ 때 어떤 단어를 써야 할 지 모르는 것 

파이썬에 처음 접할때 명령어다. 

 

Tip 

1️⃣ 각종 명령어들을 정리해 적어놓고 각 명령어를 어떻게 적용할지를 정리

2️⃣ 정리한 자료를 토대로 프로그래밍 해 본다.

언어들을 모두 자유자제로 사용해야하는데 그게 어렵다면 명령어 노트를 적어놓고 프로그래밍 언어 공부를 훨씬 쉽게 할 수 있을 것