파이썬이라는 언어에 대한 이해도가 1도 없는 것 같아서 처음부터 차근차근 알아보려고 합니다. 해당 카테고리는 개념 정리에 목적이 있습니다.
파이썬이란 1991년 귀도 반 로섬(Guido van Rossum)이 발표한 인터프리터 언어입니다.
대표적인 예시로는 Python, JavaScript 등이 있습니다.
컴퓨터는 기본적으로 0과 1로 이루어진 언어를 이해하는데 이건 우리 입장에서는 너무 어려우니... 보다 편리한 언어로 프로그래밍을 하고 싶을 겁니다. 그래서 우리가 원하는 언어로 코딩을 하면, 인터프리터는 우리가 사용하는 언어를 컴퓨터가 이해할 수 있는 언어로 해석해줍니다.
우리가 레시피를 보고 한 단계씩 읽고 해석하면서 요리를 만드는 것처럼 개발자가 원하는 언어로 코드를 작성하면 컴퓨터는 코드 한 줄 또는 한 문장을 읽어들이고 바로 실행합니다. 이렇게 하면 코드를 작성하면서 발생하는 문제나 결과를 거의 실시간으로 확인할 수 있습니다. 그럼 개발자는 코드를 작성하면서 오류나 결과를 보고 수정할 수 있습니다. 마치 음식의 간을 보면서 맛을 조절하거나 더 많은 재료를 추가하는 것처럼 말이죠.
인터프리터 언어는 어떤 종류의 컴퓨터나 운영 체제에서도 코드를 그대로 실행할 수 있는 능력이 있습니다. 이는 마치 파파고처럼 어느 나라에 가도 번역을 가능케 해준다고 생각할 수 있습니다. 그래서 개발자들은 어디서든 코드를 작성하고 실행할 수 있어 매우 편리합니다.
인터프리터 언어는 해당 코드에서 오류가 발생하면 더이상 번역 및 실행을 못하기 때문에 오류 발견이 쉬워 디버깅이 쉽습니다. 이는 개발자가 개발하는데 편리한 환경을 제공합니다.
간단하게 설명하자면, 소스 코드 전체를 컴퓨터가 이해할 수 있는 기계어로 번역한 뒤, 이 번역된 코드를 한번에 실행하는 두 단계를 거칩니다. 즉, 번역과 실행이 완전히 따로 이뤄진다는 뜻입니다. 대표적인 예로는 C, C++이 있습니다.
예를 들어, 3시간에 걸쳐 코드를 컴파일 했는데 변수 이름에 오타가 나서 에러가 발생하면 다시 3시간에 걸쳐 컴파일을 해야합니다. 하지만 이미 컴파일 된 프로그램이라면 실행만 하면 되기 때문에 편리할 수는 있습니다. 그리고 OS(운영 체제)마다 실행할 수 있는 기계어가 다른 경우가 있기 때문에 해당 OS에 맞는 컴파일러로 다시 컴파일러를 해줘야 하는 경우도 생깁니다.
파이썬은 이런 컴파일 과정이 필요없이 인터프리터에 의해 동시 번역이 되는 것입니다.
현재도 파이썬의 사용자층은 점점 늘어가는 추세로, 특히 귀도가 구글에 입사하고 구글의 3대 개발 언어 중 하나로 채택되어 더 유명해졌습니다.
파이썬의 문법은 간결하고 직관적이어서 가독성이 좋아 쉽게 이해할 수 있습니다. 특히 코드를 작성할 때 들여쓰기(띄어쓰기나 탭)를 사용하여 코드블럭을 구분하기 때문에 자연스럽게 가독성이 높아질 수 밖에 없는 구조입니다. 이는 코드를 작성하고 유지보수하는데 도움이 됩니다.
파이썬은 동적 타입 언어로 변수의 자료형(타입)을 명시적으로 지정해 줄 필요 없이 변수를 선언할 때 값에 따라 파이썬이 자동으로 그 타입을 결정해 주기 때문에 개발자가 불필요한 타입 선언을 신경쓰지 않아도 됩니다.
파이썬(동적 타입 언어)
num = 55 # 정수
num = "Hello World" # 문자열
num = [1, 2, 3] # 리스트
C or Java(정적 타입 언어)
int num = 55; # 정수 타입
인간의 사고와 유사하다고 볼 수 있을 정도의 간결하고 쉬운 문법으로 인해 쉽게 학습할 수 있어 사람들의 유입이 쉽고, 다른 언어에 비해 적은 코드로 동일한 작업을 수행할 수 있기 때문에 비교적 오류 발생이 적고 생산성이 뛰어납니다.
또한, 많은 라이브러리를 제공하기 때문에 코드 작성 시간을 단축할 수 있고, 더불어 확장성과 이식성이 뛰어나 높은 성능의 애플리케이션 개발이 필요하다면 C나 C++ 같은 언어나 라이브러리에 쉽게 접근해서 연동하여 사용할 수 있습니다.
파이썬은 다른 컴파일 언어에 비해 실행 속도가 느릴 수 있습니다. 이는 특히 실시간 성능이 중요한 애플리케이션에는 부적합할 수 있습니다. 빠른 실행 속도를 요구하거나 하드웨어를 직접 제어해야 하는 프로그램에는 파이썬이 적합하지 않을 수 있습니다.
파이썬은 변수 타입이 실행 중에 동적으로 결정되는 동적 타입 언어인데 이로 인해 예상하지 못한 타입 관련 오류가 발생할 수 있으며, 디버깅이 어려울 수 있습니다. 정적 타입 언어와 비교할 때 이러한 유형의 오류를 미연에 방지하기 어려울 수 있습니다.
x = 5 # x는 정수
x = "Hello" # 이제 x는 문자열
y = 10
z = x + y # 이 줄에서는 x가 문자열이므로 정수와 문자열을 더하려고 하면 타입 오류가 발생합니다.
print(z)
파이썬은 다양한 데이터베이스 시스템과 연동할 수 있는 드라이버를 제공하나, 모든 데이터베이스 시스템을 완벽하게 지원하지 않습니다. 특히 대규모 기업이나 조직에서 파이썬을 데이터베이스와 연결하는 데 파이썬과의 호환성이 부족하거나 제대로 지원이 되지 않을 수 있습니다. 파이썬은 일반적으로 높은 수준의 언어로, 데이터베이스 액세스와 관련된 작업에서 성능과 확장성 면에서 한계를 가질 수 있습니다. 대량의 데이터 처리나 빠른 데이터베이스 액세스가 필요한 경우, 다른 언어나 기술을 고려해야 할 수 있습니다.
대규모 조직에서는 데이터의 보안 및 트랜잭션 관리가 중요한데, 파이썬은 이러한 측면에서 미흡할 수 있습니다. 또한, 파이썬의 데이터베이스 관련 라이브러리와 도구는 다른 기술에 비해 지원과 커뮤니티가 한정적일 수 있습니다.
따라서 파이썬을 데이터베이스와 통합하려는 경우, 조직의 목표와 요구 사항을 고려하고 필요한 경우 더 강력한 데이터베이스 관리 시스템을 고려해야 합니다.