Skip to main content

Command Palette

Search for a command to run...

Basic overview of Python

파이썬의 쓰임새와 동작원리, 계절학기 1주차

Updated
4 min read
Basic overview of Python

Contents

1️⃣파이썬의 쓰임새 (Uses of Python)

2️⃣파이썬의 특징 (Features of Python)

3️⃣ 파이썬의 원리(Principals of Python)


Before getting into Python... what is High-level language and Low-level language?

언어는 고급형 언어(High-level language)와, 저급형 언어(Low-level language, Assembly language, Machine code 등)로 나뉘는데 고급형 언어는 사람에게 친숙한 언어, 최대한 닯아 있는 언어이다. 컴퓨터와 최대한 닮아있는 언어는 저급형 언어이다. 사람이 알아듣기 힘들지만 처리속도가 빠르다는 장점이 있다. 컴파일러(Compiler)라는 번역기를 통해서 기계어로 번역이 되기도 한다.

지구에는 영어, 한국어등 다양한 언어가 존재한다. 컴퓨터 프로그래밍도 마찬가지로 여러가지 언어가 존재한다. 학교에서 제 2외국어로 중국어, 일본어 등 유행이 존재하듯이 컴퓨터 언어에도 존재한다. 파이썬은 AI, 빅데이터와 연관 있는 언어이기 때문에 개발 수요의 증가와 함께 높은 이용률을 보이고 있는 추세이다.

컴퓨터는 반도체 소자를 사용하여 전기적 신호가 있으면 1, 없으면 0 이렇게 이진법을 알아 들을 수 있다. 프로그래밍 언어를 배운다는 것은 컴퓨터가 알아들을 수 있는 문법을 배운 다는 뜻과 같다. 프로그래밍 언어는 최종적으로는 기계어로 번역이 되어 컴퓨터가 작업을 수행하게 된다.

"2와 5를 더해라"는 사람의 언어이다. 컴퓨터는 이 문장을 0, 1로 되어있는 기계어(ADD A B)에서 11010 같은 식으로 번역이 되야지만 동작이 가능하다.

오늘은 고급형 언어에 속하는 파이썬의 개요에 대해서 배울 예정이다.


1️⃣파이썬의 쓰임새 (Uses of Python)

✅ 파이썬이란? (What is Python?)

1990년 암스테르담의 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터형 언어이다. 구글에서 만든 소프트웨어의 50% 이상이 파이썬으로 작성되었다. 드롭박스(Dropbox), 인스타그램(Instagram)등이 있다. 공동 작업과 유지 보수가 매우 쉽고 편하여 활용성이 높다. 파이썬은 고급형 언어 중에서도 사람의 언어와 닮아있다.

✅파이썬의 쓰임새(Uses of Python)

시스템 유틸리티(System Utility)
컴퓨터를 분석, 구성, 최적화 또는 유지 관리하도록 설계된 시스템 소프트웨어이다. 그 예로는 바이러스 백신 소프트웨어, 파일 압축 및 해제 소프트웨 등이 있다.

GUI 프로그래밍(GUI Programming)
화면에 윈도우 창을 만들고 프로그램을 동작시킬 수 있는 메뉴나 버튼, 그림 등을 추가하는 것이다. GUI 프로그래밍을 위한 도구들을 갖추고 있어, GUI 프로그램을 만들기 쉽다. 웹이 아닌 직접적으로 어플리케이션(워드,포토샵 등)을 사용할 때 GUI를 통해 작업을 한다. 예로는 Tkinter(티케이인터)가 있다.

C, C++결합 (Combination of C, C++)
C나 C++로 만든 프로그램을 파이썬에서, 파이썬으로 만든 프로그램을 C나 C++에서 사용 가능하다. 결합을 통해 처리속도를 높이는 쓰임새로 활용이 가능하다.

참고로 파이썬에 비해 C와 C++는 사람의 언어와 비슷하지 않다. 하지만 실행속도가 빠른 장점이 있다. 임베디드시스템, 전투기, 탱크, 자동차 , 비행기 등의 기계의 빠른 제어를 요구하는 소프트웨어에서도 C와 C++를 사용한다.

웹 프로그래밍(Web Programming)
웹을 기반으로 수행되는 어플리케이션이다. 근래에 앱 설치를 하지 않고 웹브라우저를 통해 실행할 수 있는 프로그램이 많아졌다. 예를 들어 은행 프로그램 설치 없이 웹에서 계좌이체, 인터넷 커뮤니티, 이메일 등 웹 브라우저를 통해 접하는 프로그램들은 모두 웹 프로그래밍이다. 웹 브라우저 상에서 어플리케이션 수행이 요청되고, 어플리케이션은 Web serve에서 수행 후 결과값을 브라우저로 전송한다.

수치 연산 프로그램(Numerical Computation Program)
빅데이터를 활용한 빅데이터 분석, 처리 프로그램이다. Tensorflow, Keras 등의 라이브러리를 활용한 인공지능 모델을 개발할 수 있다. 모든 산업에선 데이터가 존재하고 쌓여간다. 이 쌓이는 데이터를 분석하고 연산하는 과정이 필요한데 파이썬을 통해 만들 수 있다.

데이터베이스 프로그래밍(Database Programming)
여러 사람이 공유하고 사용 할 목적으로 통합 관리되는 정보의 집합을 데이터베이스라고 한다. Python을 이용해 데이터베이스를 저장, 관리할 수 있는 프로그램 개발이 가능하다.


2️⃣파이썬의 특징 (Features of Python)

✅인간다운 언어(Human-like language) 파이썬은 사람이 생각하는 방식을 그대로 표현할 수 있는 언어이다.

문법이 쉽고 빠르게 배울 수 있다(Easy syntax and quick learning)
문법 자체가 아주 쉽고 간결하며 사람의 사고 체계와 매우 닮아 있다. 유명한 프로그래머인 에릭 레이먼드 (Eric Raymond)는 공부한 지 단 하루 만에 자신이 원하는 프로그램을 작성하였다고 한다.

무료이지만 강력하다. (Free but powerful)
파이썬은 오픈 소스로써 무료로 언제 어디서든 파이썬을 다운로드하여 사용이 가능하다. 추가적으로 파이썬과 C는 찰떡 궁합이다. 빠른 개발 속도를 위해 프로그램의 전반적인 뼈대는 파이썬으로 만들고, 빠른 실행 속도가 필요한 부분은 그 부분만 C로 만들어서 파이썬 프로그램 안에 포함할 수 있다.

간결하다. (Known for simplicity)
프로그램이 실행 되게 하려면 줄(들여쓰기)을 반드시 맞추어야 하는데 이를 통해 가독성을 높인다. 파이썬은 가장 좋은 방법 1가지만 사용하므로 간결하다.

빠른 개발 속도(Quick development speed)
파이썬의 빠른 개발 속도를 두고 유행처럼 퍼진 말이 있다. Life is too short, You need Python.


3️⃣ 파이썬의 원리(Principals of Python)

✅파이썬의 동작원리(Python's Working Principle)

Python program ➡️ Interpret ➡️ Assembly language

명령어(command)=코드(code)라고 생각하면 쉽다.
위에 쓰여진 "코드 라인 단위로 번역"이 당연하게 느껴질 수 있지만 그렇지 않은 언어도 존재한다. 예를들어 C언어의 경우 전체 코드를 한꺼번에 해석하여 기계어로 번역해 놓는데 컴파일을 통해 바로 CPU로 수행가능한 exe파일이 생성된다. 파이썬의 경우엔 exe파일이 존재하지 않고 코드(Source Code)만 존재한다. 해석(interpret)후 수행을 반복한다. 인터프리터형 언어라고도 한다. 이와 대비되는 언어로는 컴파일형 언어가 있는데 이는 모든 코드를 통합하고 번역한다. 컴파일을 통해 번역본이 생기게되고 이 번역본으로 기계어를 수행하는 방식이다.

✅파이썬 프로그래밍의 동작원리(Python's Programming's Working Principle)

PC를 구성하기 위해선 위의 사진처럼 CPU, RAM, HDD가 최소한으로 필요하다. 파이썬은 CPU에서 실행하는데 작업을 처리하기 위해 RAM에서만 데이터를 읽고 작성한다. 하드디스크(HDD)의 느린 처리 속도는 전체적인 작업 속도 저하의 요인이 되기 때문에 프로그램 및 결과값을 저장하는 용도로만 사용한다. 예를 들어 a=2, b=3의 데이터 RAM에 있다면 CPU에서 a+b 의 작업을 처리하고 수행과 동시에 그 결과값은 RAM으로 전송되고 HDD에 저장하게 된다. RAM은 휘발성메모리, 임시기억장치이기 때문에 CPU가 꺼지면 임시 저장된 자료도 사라지게 된다. 결론적으론 위의 세가지 부품에서 데이터가 오고간다고 이해하자.

✅파이썬 프로그래밍의 동작 환경(Python Programming Environment)

Cloud computing environment: 컴퓨팅 자원이 클라우드 상에 있고, 여러명이 프로그래밍 환경을 공유할 수 있다.

Local environment: 컴퓨팅 자원이 로컬에 있고, 프로그래밍 환경을 단독으로 보유한다.


Quiz