문법이 쉽게 직관적인 프로그램 언어
호환성이 좋고, IoT, 머신러닝 등 여러분야에 사용
세계에서 2번째로 많이 사용하는 프로그램 언어
아름다운 것이 보기 싫은 것보다 좋다.

프로그램 언어
사람이 기계에게 명령하기 위해선 기계의 말로 전달해야 한다.

한국어, 영어, 일본어, 중국어를 사용하듯 컴퓨터는 컴퓨터말을 사용한다.
컴퓨터가 사용하는 말중 하나가 Python 언어이다.
영어(인간) → *컴파일러(번역기) → CPU → 실행 → 결과물
- 컴파일러(compiler)란, 특정 프로그램 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 변역 프로그램을 말한다.
- high-level programming language를 실행 프로그램을 만들기 위한 lower level language(ex, machine code 등)로 바꾸는데 사용 된다.
- 원래의 문서를 소스 코드 혹은 원시 코드라 부르고, 출력된 문서를 목적 코드라 부른다.
- 목적 코드는 주로 다른 프로그램이나 하드웨어가 처리하기에 용이한 형태로 출력되지만 사람이 읽을 수 있는 문서 파일이나 그림 파일 등으로 옮기는 경우도 있다.
- 원시 코드에서 목적 코드로 옮기는 과정을 컴파일(compile)이라고 한다.
- 컴파일러는 소스 프로그램을 읽어서 즉시 결과를 출력하는 인터프리터와는 구분된다.
(현대에 들어 많은 인터프리터가 JIT 컴파일 등의 기술로 실시간 컴파일을 수행하므로, 컴파일러와 인터프리터 사이의 기술적 구분은 사려 가는 추세)
반응형
Python은 컴파일러(compiler)가 필요 없는
스크립트 언어(Script language)
Python의 특징
스크립트 언어, 동적 타이핑, 플랫폼 독립적
1. 스크립트 언어(Script language)
- 위에서 언급한 컴파일 과정 없이 인터프리터(Interpreter, 해석기)가 소스 코드를 한 줄씩 읽어 들여 곧바로 실행하는 스크립트 언어다.
- 컴파일 과정이 필요하지 않아 실행 결과를 바로 확인 할 수 있다.
- 따라서 바로 수정하면서 손쉽게 코드를 작성 할 수 있다.
컴파일 언어 | 스크립트 언어 |
C, C++, JAVA 등 | Python, R 등 |
- 컴파일 과정을 통해 인간의 코드를 기계어로 번역해야 함 - 실행 및 수정에 비교적 많은 시간 소요 - 기계어로 한 번 번역되면 빠른 실행 속도 |
- 별도의 컴파일 과정 없이 인터프리터가 소스코드를 한 줄씩 읽어 가며 바로 실행 - 컴파일 없이 바로 실행, 결과 바로 확인 후 빠르게 수정 - 번역과 실행이 동시에 이뤄져 컴파일 언어보다 느림 |
2. 동적 타이핑(Dynamic typing)
- 변수 자료형을 지정하지 않고 단순히 선언하는 것만으로 값을 지정할 수 있다.
- 변수 자료형은 코드가 실행되는 시점에서 결정된다.
- 자료형 변환 시 번거로운 과정을 거치지 않아도 된다는 장점있다.
- 하지만, 코드 실행 도중 예상치 못한 타입으로 인한 에러가 발생할 수 있다는 특징이 있다.
정적 타입 언어 | 동적 타입 언어 |
- 프로그래머가 변수에 들어갈 데이터 타입을 명시해 줘야함 - 컴파일 시점에 변수 타입이 결정됨 |
- 변수 타입을 사전에 선할 필요 없이 변수만 선언해 값을 지정 |
## Pytyhon 변수는 데이터 타입을 동적으로 변경 가능하다.
## 변수의 메모리 할당도 프로그램 실행시 자동으로 이뤄진다.
# integer 데이터 타입
x = 10
type(x)
# string 데이터 타입으로 변경
x = '123'
type(x)
# int()활용하여, interger 데이터 타입으로 변경
x = int(x)
type(x)
3. 플랫폼 독립적(Platform-independent)
운영체제별로 컴파일할 필요가 없기 때문에 한 번 소스 코드를 작성하면 어떤 운영체제든 활용 가능
- 대부분의 운영체제에서 동일하게 사용할 수 있다. (리눅스, 유닉스, 윈도우즈, 맥 등)
- "사람 > 문화권 > 언어"의 관계처럼 "컴퓨터 > 운영체제 > 프로그램 언어"로 구성된다.
- Pyhton은 마치 영어처럼 운영체제에서 같은 사용법으로 대화할 수 있다.
반응형
왜 Python을 사용해야 하는가?
배우기 쉽고 빠른 개발 속도, 높은 확장성, 활발생 생태계
1. 문법이 간단하고 배우기 쉽다
- 인간의 사고와 유사한 문법
- 따라서, 비전공자도 접근 하기 쉬운 언어이다.
- 유명한 C 언어, JAVA에 비하면 굉장히 직관적이다.
- 쉽고 간결한 문법 때문에 개발 속도도 빠르다.
▼ 각 언어로 Hello World를 출력할 경우
## C++
#include <iostream>
using namespace std;
int main() {
cout<<"Hello World";
return 0;
}
## Java
public class Solution {
public static void main(String args[]) {
System.out.println("Hello World");
}
}
## Python
print("Hello World")
2. 높은 확장성 및 이식성
- 다른 언어나 라이브러리에 쉽게 접근해 연동 가능하다. (글루 언어, glue language)
ex) 딥러닝 python + 단순연산 C/C++ 언어 - 애플리케이션의 성능을 보장할 수 있으며 동시에 별도 설치나 구성과정 없이 스크립트 언어의 장점 또한 함께 누릴 수 있다.
3. 활발한 생태계 및 커뮤니티(오픈소스)
- 수많은 표준 라이브러리를 제공한다.
- 사용자(프로그래머)는 모든 코드를 일일이 작성할 필요 없이 기존 작성된 표준 라이브러리를 활용 하면 된다.
- 활발한 생태계 및 커뮤니티 활동으로 문제 발생시 빠르게 해결하고, 협업을 강화할 수 있다.
- Padas, numpy 등

Python의 단점
매우 느리다
- C언어 대비 10배에서 300배 정도로 느리다.
- 하지만, 기술의 발달로 컴퓨터 성능이 올라가면서 적은량의 작업에선 무시할 정도의 차이다.
- 연산이 많이 필요한 프로그램을 구동한다면 어쩔수 없이 느려진다.
반응형