최근 내가 자주 즐겨보는 개발자 유튜버분이 책을 한 권 내셨는데, 난 그분의 팬이라 아묻따 바로 책 구입했다.
역시나, 책은 알차다.
오늘은 그 책을 보면서 파이썬에 대해서 전체적으로 이야기 해볼까한다.
인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다.
인터프리터는 무엇이고 객체지향과 동적 타이핑은 무엇일까 ?
인터프리터(Interpreter)와 컴파일(Compiler)
컴파일과 인터프리터는 간단하게 말하면 내가 작성한 코드가 컴퓨터가 읽을 수 있는 ‘기계어로 번역하는 과정’에서 어떤 방식으로 번역하는 것인지를 분류한거라고 볼 수 있다.
-
컴파일 언어의 경우 프로그래밍이 마친 뒤 코드 전체를 미리 기계어로 번역(컴파일)한 다음에 실행 파일을 생성해서 실행하는 언어이다.
-
인터프리터의 경우 작성된 코드를 한 줄 한줄 읽으면서 기계어로 번역하면서 실행되는 언어이다.
위 글을 읽고 눈치 챈 사람도 있겠지만, 인터프리터의 경우 컴파일 과정이 없기 때문에 따라서 컴파일 에러 또한 없다.
컴파일 언어와 인터프리터 언어의 가장 큰 차이는 속도다.
- 컴파일 언어의 단점으로 컴파일이라는 과정 때문에 개발 시간은 늘어나지만, 장점으로는 오류로부터 비교적 안전하고 프로그램 실행 속도가 빠르다.
- 인터프리터의 경우 장점으로 빠른 개발이 가능하지만, 단점으로는 실행 속도가 느리다.
대표적인 컴파일 언어와 인터프리터 언어는 아래 표와 같다.
- 컴파일 언어 :C , C++, Java , 타입 스크립트, 코틀린, 스위프트, 스칼라, GO, 러스트
- 인터프리터 언어 : 자바스크립트, 파이썬, 루비, PHP, 펄, R
객체지향과 절차지향 프로그래밍
이제 파이썬이 인터프리터 언어라는 것을 알았다.
그렇다면 객체지향적이라는 뜻은 무엇을까?
먼저 객체지향과 절차지향 프로그래밍에 대해 알아보자.
절차와 객체지향 프로그래밍은 소스코드를 어디서부터 읽느냐에 따라 나눌 수 있다.
- 절차지향 프로그래밍
소스코드를 위에서부터 차례대로 읽는 방법을 절차지향 프로그래밍이라고 이야기한다.
소스코드를 순차적으로 실행하기 때문에 소스코드의 순서가 굉장히 중요하다.
예를 들어 쿠키를 만든다고 해보자.
쿠키 반죽을 만들고, 토핑을 뿌리고, 쿠키를 굽고, 쿠키를 포장한다.
이 과정은 분리가 되면 안되고, 순서가 틀려서도 안된다.
절차지향 프로그래밍 역시 이와 같으며, 컴퓨터의 처리 구조와 비슷하다.
장점으로는 실행 속도가 빠르다는 점이 있지만, 단점으로는 모든 구성 요소가 연결되어 있기 때문에 사소한 문제 하나만 생겨도 프로그램 전체가 돌아가지 않는다. 또한 실행 순서가 바뀌게 된다면 전혀 다른 결과를 볼 수 있다.
대표적인 절차 지향 언어로는 C언어이다.
이런 단점을 보완하기 위해 나온 개념이 객체지향이며, 대표적인 객체지향 언어가 C++이다.
- 객체지향 프로그래밍
프로그램을 다수의 객체로 만들고 이 객체끼리 서로 상호 작용하는 방법을 말한다. 객체지향에서는 각 객체의 역할이 나누어져있고, 사용하고자 하는 부분에서 각 객체가 따로 동작한다.
객체지향의 장점으로는 객체 하나에 대해 문제가 생겨도 해당 객체만 수정하면 되기 때문에 유지보수나 생산성이 좋지만, 단점으로는 설계할 때 시간이 많이 걸리며 절치지향보다 처리속도가 느리다. 또한 객체지향 언어는 대체로 난이도가 높다.
그러면 왜 파이썬을 객체지향적 언어라고 하는걸까?
사실 파이썬은 ‘절차’를 지향할 수 있고 ‘객체’를 지향할 수 있다.
파이썬은 멀티패러다임 언어이기 때문에 방식에 따라 다르게 사용할 수있다.
절차지향 언어인 C를보면 함수(function)기능은 사용할 수 있지만, Class처럼 변수와 함수를 집합으로 활용하는 개념이 없다. 여기서 Class가 중요한 이유는 객체를 만드는 설계도이기 때문이다.
따라서 파이썬에서의 Class 기능이 파이썬을 객체지향 언어라고 부르는 대표적인 이유이다.
동적 타이핑(dynamically typed)
동적 타이핑은 코드를 작성하는데 있어서 컴퓨터적 구조를 생략한 것을 이야기한다.
변수를 지정할 때, 변수의 데이터 타입 등을 명시하지 않아도 컴퓨터가 알아서 해석하는 것을 말하며, 실행속도가 느리다.
반대로 정적 타이핑은 컴퓨터적 구조를 명시해야한다.
변수를 지정할 때, int, str타입인지를 반드시 직접 명시해줘야하며, 컴퓨터가 해야할 일을 덜어주기 때문에 동적 타이핑에 비해 실행속도가 무척 빠르다.
파이썬의 특징
- 인터프리터 언어이다.
- 동적 타이핑 대화형 언어이다.
- 간단하고 쉬운 문법.
- 메모리 자동 관리( Garbage Collection)
- 높은 확장성
- 무료
파이썬 사용 분야
파이썬으로 할 수 있는 것은 굉장히 많다.
- 인공지능 개발
- 통계 및 분석
- 웹 애플리케이션
- 핀테크 및 블록체인
- 게임 제작
- 임베디드 시스템의 응용 프로그램 제작
- 업무 자동화