파이썬 소개

변현섭·2023년 7월 25일
0
post-thumbnail

요즘 프로그래밍 언어 중 가장 핫한 언어를 꼽으라면 단연 파이썬일텐데요. 프로그래머들은 왜 그토록 파이썬에 열광하는걸까요? 파이썬을 본격적으로 배우기에 앞서, 파이썬이 어떠한 언어인지, 또 파이썬을 왜 배워야 하는지 간단히 살펴보도록 하겠습니다.

1. 파이썬 소개

파이썬은 1991년에 개발된 언어로, 가독성이 높고 쉬운 문법 덕분에 다른 프로그래밍 언어보다 빠른 습득이 가능하다는 특징이 있다. 그러다보니 프로그래밍을 전공하지 않은 비전공자를 중심으로 인기를 끌게 되었는데, 바로 이러한 점이 오늘날의 파이썬 열풍을 불러일으킨 주된 요인이지 않을까 싶다. 파이썬은 현재 데이터 분석과 모델링을 다루는 통계학부터 딥러닝과 인공지능을 활용하는 의학에까지 다양한 분야에 걸쳐 활용되고 있다.

파이썬의 인기를 실감할 수 있는 몇가지 자료를 살펴보기로 하자. 검색량을 기준으로 프로그래밍 언어 선호도를 조사하는 TIOBE index의 조사 결과를 보면, 2022년 1월 기준 파이썬이 선호하는 프로그래밍 언어 1위(13.58%)를 차지했다.

또한, 오라일리 미디어가 온라인 학습 플랫폼의 학습 과정 및 사용자 선호도를 분석해 발표한 프로그래밍 언어 순위에서도 파이썬이 Java와 C++을 제치고 가장 높은 사용률을 보였다.

2. 파이썬의 특징

1) 스크립트 언어

파이썬은 컴파일 과정 없이 인터프리터가 소스 코드를 한 줄씩 읽어 곧바로 실행하는 스크립트 언어이다. 스크립트 언어의 특성상 컴파일 과정이 필요하지 않기 때문에, 실행 결과를 바로 확인하고 수정할 수 있으며, 코드 작성의 난이도 또한 매우 낮다.

※ 컴파일 언어 VS 스크립트 언어
컴파일 언어는 컴파일 과정을 통해, 작성한 코드를 기계어로 번역해 실행하는 방식이다. 반면, 스크립트 언어는 별도의 컴파일 과정 없이 인터프리터가 소스 코드를 한 줄씩 읽어가며 바로 실행하는 방식이다.
컴파일 언어는 소스 코드를 컴파일하는 과정을 거쳐야 하므로, 실행 및 수정에 비교적 많은 시간이 소요되지만, 한 번 기계어로 번역된 이후에는 매우 빠른 실행 속도를 보인다.
이와 달리, 스크립트 언어는 컴파일 없이 곧바로 실행되므로, 결과를 바로 확인하고 수정할 수 있지만, 번역과 실행이 동시에 이루어지므로, 실행 속도가 컴파일언어에 비해 느릴 수 밖에 없다.

※ 스크립트 언어 & 인터프리터 언어
스크립트 언어와 인터프리터 언어는 비슷한 개념으로 사용되고 있지만, 엄밀히 말하면 다른 개념이다. 스크립트 언어는 코드를 interpret하는 방식으로 동작하는 언어를 의미하고, 인터프리터 언어는 소스 코드를 실행할 때, 컴파일 단계를 거치지 않고 바로 해석하여 실행하는 언어를 의미한다. 물론, 두 언어의 차이점이 명확하지는 않기 때문에 같은 개념처럼 사용해도 무방하며, 실제로 파이썬은 스크립트 언어이면서, 인터프리터 언어이다.
하지만, 스크립트 언어이면서 인터프리터 언어가 아니거나, 반대로 인터프리터 언어이면서 스크립트 언어가 아닌 경우도 있을 수 있다. 대표적으로, MATLAB은 스크립트 형태로 작성되지만, 컴파일 단계를 거쳐 실행파일을 생성하기 때문에, 스크립트 언어이지만 인터프리터 언어가 아니다. 또한 Java는 컴파일 언어와 인터프리터 언어의 특징을 모두 갖는 하이브리드 언어로, 스크립트 언어는 아니지만, 인터프리터 언어의 특징을 갖고 있다.

2) 동적 타이핑

파이썬은 동적 타이핑(Dynamic Typing) 언어이다. 여기서 동적 타이핑이란, 변수의 자료형을 지정하지 않은 상태에서, 단순히 선언하는 것만으로 값을 지정할 수 있음을 의미한다. 이 때, 변수의 자료형은 코드가 실행되는 시점에 결정된다. 형변환을 위한 번거로운 과정이 불필요해진다는 장점이 있지만, 예상치 못한 타입이 할당되어 런타임 에러가 발생할 수도 있다.

이와 상반되는 개념로 정적 타이핑(Static Typing) 언어도 있다. 정적 타이핑 언어는 컴파일 시점에서 변수의 타입이 명시적으로 선언되어야 한다. 하지만 그렇다고 해서 컴파일 언어이면 무조건 정적 타이핑이고, 스크립트 언어이면 무조건 동적 타이핑인 것은 아니다.

주제에서는 조금 벗어난 설명이긴 하지만, 혼란을 방지하는 차원에서 이야기하자면, 개념을 엄격히 이분화하고 일반화해서는 안된다. 예를 들어 "스크립트 언어이면 인터프리터 언어에요?"라는 식의 궁금증을 품기보다는 "내가 사용하는 파이썬이라는 언어는 인터프리터 언어이면서 스크립트 언어구나!"를 아는 것이 중요하다는 것이다. 또한, "컴파일 언어이면, 무조건 정적 타이핑이고, 스크립트 언어면 무조건 동적 타이핑이에요?"라는 궁금증을 가지기 보다는 "내가 사용하는 파이썬이라는 언어는 동적 타이핑 언어구나!"를 이해하는 것이 중요하다. 즉, 본인이 사용하는 언어가 어떤 특징을 갖고 있는지 이해하는 것이 중요하지, 그것을 확장하여 모든 언어를 이분법적으로 나누려는 생각은 좋지 않다.

3) 플랫폼 독립성

파이썬은 리눅스(Linux), 유닉스(Unix), 윈도우(Window), 맥(Mac) 등 대부분의 운영체제에서 모두 동작한다. 운영체제 별로 컴파일할 필요가 없다는 것은 곧, 한 번 소스 코드를 작성하면, 어떤 운영체제에서도 활용할 수 있다는 것을 의미한다.

3. 파이썬의 장점

1) 간결하고 쉬운 문법

파이썬을 흔히 "인간다운 언어"라고 이야기한다. 그 이유는 파이썬의 문법이 인간의 사고와 유사하기 때문이다. 이러한 이유에서 파이썬 문법을 학습하는 데에 많은 시간을 할애할 필요가 없으며, 프로그래밍 전공자의 경우, 파이썬 문법이 얼마나 쉽고 간결한지를 몸소 느낄 수 있을 것이다. 여기서 쉽고 간결하다는 것은 코드가 직관적이고, 길이가 짧아 가독성이 높다는 의미이다.

2) 빠른 개발속도

쉽고 간결한 문법 덕분에 파이썬은 높은 생산성을 자랑한다. 파이썬을 활용할 경우 더 적은 코드로 더 많은 작업을 수행할 수 있으며, 이는 복잡한 구문으로 인해 발생할 수 있는 오류를 줄여줄 수도 있다.

3) 높은 확장성 및 이식성

파이썬은 대표적인 접착제 언어(Glue Language)이다. 즉, 다른 언어나 라이브러리에 쉽게 접근해 연동이 가능하다. 실제로, 고성능의 애플리케이션 개발에 C나 C++ 같은 언어를 파이썬과 결합해 사용하기도 한다. 이로써 애플리케이션의 성능은 보장되면서, 동시에 별도 설치나 구성과정 없이 스크립트 언어의 장점도 누릴 수 있게 된다.

4) 활발한 생태계

개인적으로 파이썬을 배워야 하는 가장 중요한 이유라고 생각한다. 파이썬은 수 많은 표준 라이브러리를 제공하기 때문에 프로그래머가 모든 코드를 일일이 작성할 필요가 없다. 또한 폭 넓은 생태계와 활발한 커뮤니티 활동으로 인해 문제 해결과 협업이 매우 빠르게 이루어질 수 있다.

4. 파이썬의 활용 사례

1) 기업에서의 활용

① Google

  • 구글은 백엔드에 C++과 파이썬을 결합해 활용하고 있다.
  • 짧은 대기시간과 엄격한 메모리 제어가 중요한 스택에는 C++로 코드를 작성한다.
  • 프로그램의 빠른 전달과 유지 관리가 필요한 부분에서는 파이썬으로 코드를 작성한다.

② Instagram

  • 파이썬으로 작성된 오픈 소스 웹 프레임워크인 Django를 기본 서버 측 언어로 사용하고 있다.

③ Netflix

  • 방대한 표준 라이브러리, 간결하고 깔끔한 구문, 대규모 커뮤니티, 풍부한 타사 라이브러리 등을 이유로 파이썬을 자사 서비스에 적극적으로 활용하고 있다.

④ Spotify

  • 음악 스트리밍 및 미디어 서비스 제공 업체 Spotify는 Python을 활용해 빌드되었다.
  • Spotify 백엔드의 80%가 파이썬으로 작성되어 있다고 알려져있다.

⑤ Dropbox

  • 외부 오픈 소스 코드와 자체 작성한 코드 모두에 파이썬을 사용하고 있다.
  • 파이썬의 창시자인 귀도 반 로썸은 Dropbox 개발자 출신이기도 하다.

2) 파이썬 활용 영역

① 시스템 유틸리티 제작

  • 운영체제의 시스템 명령어를 사용할 수 있는 각종 도구를 갖추고 있다.
  • 파일관리, 로그 분석, 시스템 모니터링 등과 같은 여러 시스템 유틸리티를 만드는데 유리하다.

② GUI 프로그래밍

  • GUI 프로그래밍을 위한 도구들이 잘 갖추어져 있다.

③ C/C++과의 결합

  • C나 C++로 만든 프로그램을 파이썬에서 사용할 수 있고, 반대로 파이썬으로 만든 프로그램을 C나 C++에서 사용하는 것도 가능하다.

④ 웹 프로그래밍

  • 웹 프로그램을 제작하기에 매우 적합하여, 파이썬으로 웹 사이트를 제작하는 경우가 많다.

⑤ 수치 연산 프로그래밍

  • 수치 연산 프로그래밍에는 사실 C언어가 더 적합하다.
  • 하지만 파이썬의 Numpy라는 수치 연산 모듈이 C로 작성되었기 때문에 파이썬에서도 빠른 수치 연산을 수행할 수 있다.

⑥ 데이터 분석

  • Numpy, Pandas, Matplotlib 등의 라이브러리를 활용하여 데이터 처리, 통계 분석, 시각화를 수행할 수 있다.
  • 아직까지는 데이터분석에 특화된 R이라는 언어가 더 많이 사용되고 있지만, 최근 들어 파이썬을 사용하는 추세가 굳어지고 있다.

⑦ 데이터 베이스 프로그래밍

  • Sybase, Infomix, Oracle, MySQL, PostgreSQL 등의 데이터베이스에 접근하기 위한 도구를 제공한다.

⑧ 인공지능과 머신러닝

  • 파이썬을 활용하여 자연어 처리, 음성 인식, 이미지 인식과 같은 인공지능 기술을 구현할 수 있다.
  • 인공지능과 머신러닝 프로그래밍에는 Scikit-Learn, TensorFlow, PyTorch, Keras 등의 라이브러리가 사용된다.

    ※ 자연어 처리
    먼저, 자연어란 우리가 일상적으로 사용하는 언어로, 사람들이 의사소통하는데 사용되는 언어를 말한다. 즉, 자연어 처리는 인간이 사용하는 자연어를 컴퓨터가 이해하고 처리할 수 있도록 하는 인공지능 분야이다. 자연어의 의미를 이해하고 분석하기 위해 기계 학습, 인공지능, 언어학 등의 분야를 포함한 다양한 기술과 기법이 사용된다.

3) 파이썬이 사용되지 않는 경우

① 시스템과 밀접한 프로그래밍 영역

  • 운영체제와 같이 엄청난 횟수의 반복과 연산이 필요한 프로그램을 만드는 데에 파이썬은 적합한 언어가 아니다.
  • 빠른 속도를 요구하거나, 하드웨어 컨트롤이 필요한 프로그램에는 사용되지 않는다.

② 모바일 프로그래밍

  • 파이썬으로 안드로인드 또는 ios 애플리케이션을 개발하는 것은 아직은 어렵다.
  • 개인적인 생각이지만, 머지 않아 모바일 프로그래밍 분야에 파이썬을 적용할 수 있을 것 같다.
profile
Java Spring, Android Kotlin, Node.js, ML/DL 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.

0개의 댓글