요즘 프로그래밍 언어 중 가장 핫한 언어를 꼽으라면 단연 파이썬일텐데요. 프로그래머들은 왜 그토록 파이썬에 열광하는걸까요? 파이썬을 본격적으로 배우기에 앞서, 파이썬이 어떠한 언어인지, 또 파이썬을 왜 배워야 하는지 간단히 살펴보도록 하겠습니다.
파이썬은 1991년에 개발된 언어로, 가독성이 높고 쉬운 문법 덕분에 다른 프로그래밍 언어보다 빠른 습득이 가능하다는 특징이 있다. 그러다보니 프로그래밍을 전공하지 않은 비전공자를 중심으로 인기를 끌게 되었는데, 바로 이러한 점이 오늘날의 파이썬 열풍을 불러일으킨 주된 요인이지 않을까 싶다. 파이썬은 현재 데이터 분석과 모델링을 다루는 통계학부터 딥러닝과 인공지능을 활용하는 의학에까지 다양한 분야에 걸쳐 활용되고 있다.
파이썬의 인기를 실감할 수 있는 몇가지 자료를 살펴보기로 하자. 검색량을 기준으로 프로그래밍 언어 선호도를 조사하는 TIOBE index의 조사 결과를 보면, 2022년 1월 기준 파이썬이 선호하는 프로그래밍 언어 1위(13.58%)를 차지했다.
또한, 오라일리 미디어가 온라인 학습 플랫폼의 학습 과정 및 사용자 선호도를 분석해 발표한 프로그래밍 언어 순위에서도 파이썬이 Java와 C++을 제치고 가장 높은 사용률을 보였다.
파이썬은 컴파일 과정 없이 인터프리터가 소스 코드를 한 줄씩 읽어 곧바로 실행하는 스크립트 언어이다. 스크립트 언어의 특성상 컴파일 과정이 필요하지 않기 때문에, 실행 결과를 바로 확인하고 수정할 수 있으며, 코드 작성의 난이도 또한 매우 낮다.
※ 컴파일 언어 VS 스크립트 언어
컴파일 언어는 컴파일 과정을 통해, 작성한 코드를 기계어로 번역해 실행하는 방식이다. 반면, 스크립트 언어는 별도의 컴파일 과정 없이 인터프리터가 소스 코드를 한 줄씩 읽어가며 바로 실행하는 방식이다.
컴파일 언어는 소스 코드를 컴파일하는 과정을 거쳐야 하므로, 실행 및 수정에 비교적 많은 시간이 소요되지만, 한 번 기계어로 번역된 이후에는 매우 빠른 실행 속도를 보인다.
이와 달리, 스크립트 언어는 컴파일 없이 곧바로 실행되므로, 결과를 바로 확인하고 수정할 수 있지만, 번역과 실행이 동시에 이루어지므로, 실행 속도가 컴파일언어에 비해 느릴 수 밖에 없다.
※ 스크립트 언어 & 인터프리터 언어
스크립트 언어와 인터프리터 언어는 비슷한 개념으로 사용되고 있지만, 엄밀히 말하면 다른 개념이다. 스크립트 언어는 코드를 interpret하는 방식으로 동작하는 언어를 의미하고, 인터프리터 언어는 소스 코드를 실행할 때, 컴파일 단계를 거치지 않고 바로 해석하여 실행하는 언어를 의미한다. 물론, 두 언어의 차이점이 명확하지는 않기 때문에 같은 개념처럼 사용해도 무방하며, 실제로 파이썬은 스크립트 언어이면서, 인터프리터 언어이다.
하지만, 스크립트 언어이면서 인터프리터 언어가 아니거나, 반대로 인터프리터 언어이면서 스크립트 언어가 아닌 경우도 있을 수 있다. 대표적으로, MATLAB은 스크립트 형태로 작성되지만, 컴파일 단계를 거쳐 실행파일을 생성하기 때문에, 스크립트 언어이지만 인터프리터 언어가 아니다. 또한 Java는 컴파일 언어와 인터프리터 언어의 특징을 모두 갖는 하이브리드 언어로, 스크립트 언어는 아니지만, 인터프리터 언어의 특징을 갖고 있다.
파이썬은 동적 타이핑(Dynamic Typing) 언어이다. 여기서 동적 타이핑이란, 변수의 자료형을 지정하지 않은 상태에서, 단순히 선언하는 것만으로 값을 지정할 수 있음을 의미한다. 이 때, 변수의 자료형은 코드가 실행되는 시점에 결정된다. 형변환을 위한 번거로운 과정이 불필요해진다는 장점이 있지만, 예상치 못한 타입이 할당되어 런타임 에러가 발생할 수도 있다.
이와 상반되는 개념로 정적 타이핑(Static Typing) 언어도 있다. 정적 타이핑 언어는 컴파일 시점에서 변수의 타입이 명시적으로 선언되어야 한다. 하지만 그렇다고 해서 컴파일 언어이면 무조건 정적 타이핑이고, 스크립트 언어이면 무조건 동적 타이핑인 것은 아니다.
주제에서는 조금 벗어난 설명이긴 하지만, 혼란을 방지하는 차원에서 이야기하자면, 개념을 엄격히 이분화하고 일반화해서는 안된다. 예를 들어 "스크립트 언어이면 인터프리터 언어에요?"라는 식의 궁금증을 품기보다는 "내가 사용하는 파이썬이라는 언어는 인터프리터 언어이면서 스크립트 언어구나!"를 아는 것이 중요하다는 것이다. 또한, "컴파일 언어이면, 무조건 정적 타이핑이고, 스크립트 언어면 무조건 동적 타이핑이에요?"라는 궁금증을 가지기 보다는 "내가 사용하는 파이썬이라는 언어는 동적 타이핑 언어구나!"를 이해하는 것이 중요하다. 즉, 본인이 사용하는 언어가 어떤 특징을 갖고 있는지 이해하는 것이 중요하지, 그것을 확장하여 모든 언어를 이분법적으로 나누려는 생각은 좋지 않다.
파이썬은 리눅스(Linux), 유닉스(Unix), 윈도우(Window), 맥(Mac) 등 대부분의 운영체제에서 모두 동작한다. 운영체제 별로 컴파일할 필요가 없다는 것은 곧, 한 번 소스 코드를 작성하면, 어떤 운영체제에서도 활용할 수 있다는 것을 의미한다.
파이썬을 흔히 "인간다운 언어"라고 이야기한다. 그 이유는 파이썬의 문법이 인간의 사고와 유사하기 때문이다. 이러한 이유에서 파이썬 문법을 학습하는 데에 많은 시간을 할애할 필요가 없으며, 프로그래밍 전공자의 경우, 파이썬 문법이 얼마나 쉽고 간결한지를 몸소 느낄 수 있을 것이다. 여기서 쉽고 간결하다는 것은 코드가 직관적이고, 길이가 짧아 가독성이 높다는 의미이다.
쉽고 간결한 문법 덕분에 파이썬은 높은 생산성을 자랑한다. 파이썬을 활용할 경우 더 적은 코드로 더 많은 작업을 수행할 수 있으며, 이는 복잡한 구문으로 인해 발생할 수 있는 오류를 줄여줄 수도 있다.
파이썬은 대표적인 접착제 언어(Glue Language)이다. 즉, 다른 언어나 라이브러리에 쉽게 접근해 연동이 가능하다. 실제로, 고성능의 애플리케이션 개발에 C나 C++ 같은 언어를 파이썬과 결합해 사용하기도 한다. 이로써 애플리케이션의 성능은 보장되면서, 동시에 별도 설치나 구성과정 없이 스크립트 언어의 장점도 누릴 수 있게 된다.
개인적으로 파이썬을 배워야 하는 가장 중요한 이유라고 생각한다. 파이썬은 수 많은 표준 라이브러리를 제공하기 때문에 프로그래머가 모든 코드를 일일이 작성할 필요가 없다. 또한 폭 넓은 생태계와 활발한 커뮤니티 활동으로 인해 문제 해결과 협업이 매우 빠르게 이루어질 수 있다.
① Google
② Instagram
③ Netflix
④ Spotify
⑤ Dropbox
① 시스템 유틸리티 제작
② GUI 프로그래밍
③ C/C++과의 결합
④ 웹 프로그래밍
⑤ 수치 연산 프로그래밍
⑥ 데이터 분석
⑦ 데이터 베이스 프로그래밍
⑧ 인공지능과 머신러닝
※ 자연어 처리
먼저, 자연어란 우리가 일상적으로 사용하는 언어로, 사람들이 의사소통하는데 사용되는 언어를 말한다. 즉, 자연어 처리는 인간이 사용하는 자연어를 컴퓨터가 이해하고 처리할 수 있도록 하는 인공지능 분야이다. 자연어의 의미를 이해하고 분석하기 위해 기계 학습, 인공지능, 언어학 등의 분야를 포함한 다양한 기술과 기법이 사용된다.
① 시스템과 밀접한 프로그래밍 영역
② 모바일 프로그래밍