공부내용 몇개추가 + root 경로 변경
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
---
|
||||
id: CPython 20260410
|
||||
created: 2026-04-10 09:16
|
||||
tags:
|
||||
- python
|
||||
aliases:
|
||||
---
|
||||
## 💡 생각
|
||||
Python은 일종의 문법이고 이 문법을 cpu가 알아먹을 수 있게 변환해주는 엔진이 CPython이다.
|
||||
|
||||
> [!question]
|
||||
> Q. Python은 일종의 문법이고 이 문법을 cpu가 알아먹을 수 있게 변환해주는 엔진이 CPython이다.
|
||||
> 라고 보면되는거야?
|
||||
>
|
||||
> A. 정확한 요약입니다! 비유하자면 **Python은 언어(설계도)**이고, **CPython은 그 언어를 실행 가능한 기계어로 번역해주는 번역가(구현체)** 라고 볼 수 있습니다.
|
||||
|
||||
그래서 CPython 을 사용할 때 Visual Studio Build Tools 가 필요한가보다.
|
||||
기반이 C니까..
|
||||
|
||||
---
|
||||
## 📑 개념
|
||||
CPython은 Python 프로그래밍 언어의 **기본 구현체**이자, 전 세계에서 가장 널리 사용되는 파이썬 실행기입니다. 파이썬 언어 자체는 '명세(Specification)'이고, 이를 실제로 컴퓨터에서 돌아가게 만든 '소프트웨어'가 바로 CPython입니다.
|
||||
|
||||
## 📌 파이썬의 표준 구현체: CPython
|
||||
|
||||
우리가 터미널에 `python`이라고 입력해서 실행하는 프로그램의 정식 명칭은 **CPython**입니다. 이는 파이썬이라는 언어의 설계도(명세)를 **C 언어**로 구현한 결과물입니다.
|
||||
|
||||
- **해석기(Interpreter):** 파이썬 코드를 읽어서 컴퓨터가 이해할 수 있는 바이트코드로 바꾸고 실행하는 엔진 자체가 C로 작성되어 있습니다.
|
||||
|
||||
- **자료형:** 파이썬의 숫자(`int`), 리스트(`list`), 딕셔너리(`dict`) 같은 기본 자료형들도 내부적으로는 C의 구조체(struct)로 정의되어 있습니다.
|
||||
|
||||
## 주요 특징
|
||||
|
||||
- **C 언어로 작성:** 이름에서 알 수 있듯이 C 언어로 개발되었습니다. 파이썬 코드를 실행하기 위해 C 언어의 성능과 시스템 접근 능력을 활용합니다.
|
||||
|
||||
- **인터프리터이자 컴파일러:** 파이썬 코드를 바로 실행하는 것처럼 보이지만, 내부적으로는 파이썬 코드를 **바이트코드(Bytecode)** 로 먼저 컴파일한 후, 이를 CPython 가상 머신(VM)에서 해석하여 실행합니다.
|
||||
|
||||
- **표준 구현체:** 파이썬 재단(PSF)에서 관리하며, 새로운 파이썬 기능이 추가될 때 가장 먼저 반영되는 기준점이 됩니다.
|
||||
|
||||
## 📝 파이썬을 실행하는 도구는 CPython 외에도 여러 가지가 있습니다.
|
||||
> [!note]
|
||||
> |**종류**|**특징**|
|
||||
|---|---|
|
||||
|**PyPy**|JIT(Just-In-Time) 컴파일러를 사용하여 CPython보다 실행 속도가 훨씬 빠름.|
|
||||
|**Jython**|자바 가상 머신(JVM) 위에서 동작하며 자바 라이브러리 활용 가능.|
|
||||
|**IronPython**|.NET 프레임워크 기반으로 동작.|
|
||||
|
||||
---
|
||||
|
||||
하지만 Python 이라고 하면 그냥 CPython 이라고 보면 됨.
|
||||
하지만 **CPython**이 가장 널리 쓰이기 때문에, 보통 우리가 파이썬이라고 부르는 것은 이 CPython 엔진을 뜻하는 경우가 99%입니다.
|
||||
라고 함.
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
id: 파이썬의 탄생 배경 20260410
|
||||
created: 2026-04-10 09:33
|
||||
tags:
|
||||
- python
|
||||
aliases:
|
||||
---
|
||||
## 💡 생각
|
||||
강력한 성능을 자랑하는 C,C++ 언어를 현대적인 문법과 방식으로 사용하고 싶다.
|
||||
라는 니즈의 해결책으로 개발되었다.
|
||||
|
||||
---
|
||||
## 📑 개념
|
||||
파이썬은 **개발자의 시간**과 **컴퓨터의 시간** 사이에서 아주 영리한 타협점을 찾은 결과물입니다.
|
||||
|
||||
## 1. 개발 효율성과 실행 속도의 트레이드오프(Trade-off)
|
||||
|
||||
C나 C++는 하드웨어를 직접 제어할 수 있어 성능을 극한으로 끌어올릴 수 있지만, 메모리 관리나 복잡한 문법 때문에 개발자가 신경 써야 할 부분이 너무 많습니다.
|
||||
|
||||
- **C/C++의 철학:** 컴퓨터가 최대한 빠르게 일하게 만들자. (사람이 고생하자)
|
||||
|
||||
- **파이썬의 철학:** 사람이 최대한 편하고 빠르게 코드를 짜게 만들자. (컴퓨터는 좀 더 고생해도 된다)
|
||||
|
||||
---
|
||||
|
||||
## 2. 성능의 한계를 극복하는 전략: 80/20 법칙
|
||||
|
||||
파이썬 개발자들은 모든 코드가 다 빠를 필요는 없다는 점에 주목했습니다. 프로그램 실행 시간의 **80%** 는 전체 코드의 **20%** 도 안 되는 핵심 연산 구간에서 소요됩니다.
|
||||
|
||||
- **핵심 엔진 (C/C++):** 계산이 많이 필요한 무거운 작업(수치 연산, 인공지능 행렬 계산 등)은 C/C++로 미리 만들어 둡니다.
|
||||
|
||||
- **사용자 인터페이스 (Python):** 사용자는 파이썬이라는 쉬운 도구로 이 엔진들을 조립하고 명령만 내립니다.
|
||||
|
||||
|
||||
이렇게 하면 **개발 속도(파이썬)** 와 **실행 속도(C/C++)** 라는 두 마리 토끼를 모두 잡을 수 있게 됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 3. 파이썬의 창시자, 귀도 반 로섬의 의도
|
||||
|
||||
파이썬을 만든 귀도 반 로섬은 당시 시스템 관리자들이 복잡한 C 언어 대신, **읽기 쉽고 쓰기 편하면서도** 운영체제의 기능을 충분히 활용할 수 있는 언어를 원한다는 것을 알고 있었습니다.
|
||||
|
||||
그는 파이썬을 **확장 가능한(Extensible)** 언어로 설계했습니다. 즉, 파이썬으로 만들다가 성능이 부족하면 그 부분만 C로 짜서 끼워 넣을 수 있게 만든 것이죠.
|
||||
|
||||
---
|
||||
|
||||
## 4. 현대의 관점: '인터페이스'로서의 정점
|
||||
|
||||
질문하신 것처럼, 오늘날 파이썬이 데이터 과학이나 AI 분야에서 독보적인 1위가 된 이유도 이 인터페이스 역할 덕분입니다.
|
||||
|
||||
- **TensorFlow/PyTorch:** 실제 딥러닝 연산은 C++와 CUDA로 돌아가지만, 전 세계 연구자들은 파이썬으로 모델을 설계합니다.
|
||||
|
||||
- **Pandas/NumPy:** 복잡한 데이터 분석 처리는 내부의 C 코드가 수행하고, 사용자는 간단한 파이썬 함수 하나로 결과를 얻습니다.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user