사칙연산 CLI 계산기 — 5개 언어 비교 시리즈 중 Python 구현.
동일한 사양의 계산기를 C, C++, C#, Python, Rust로 각각 구현하고, 언어마다 "관용적인(idiomatic)" 방식이 어떻게 다른지 비교하는 학습 프로젝트입니다.
python calculator.py빌드 과정 없음. Python 3.x만 있으면 됩니다.
계산기 (예: 3 + 4, 종료: q)
> 3 + 4
= 7
> 10 / 3
= 3.33333
> q
input()+str.split()— 한 줄을 받아 공백으로 3조각(숫자 연산자 숫자)으로 나누는 가장 단순한 파싱.float()+try/except— Python의 관용구인 EAFP(Easier to Ask Forgiveness than Permission) 스타일. "일단 변환을 시도하고, 실패하면 예외로 처리"하는 방식이 사전 검사보다 파이썬답습니다.if/elif연산자 분기 — 이 규모에서는 dict 매핑보다 읽기 쉬워 단순 분기를 선택.
장점
- 5개 구현 중 코드가 가장 짧고 읽기 쉬움
- 빌드가 없어 수정 → 실행 사이클이 즉시 — 프로토타이핑 최강
- 예외 처리로 오류 로직이 본 흐름과 분리되어 깔끔
단점
- 타입 오류를 실행해봐야 발견 (동적 타입)
- 5개 구현 중 실행 속도 최하
- 배포하려면 상대방 PC에도 Python 필요
| C | C++ | C# | Python | Rust | |
|---|---|---|---|---|---|
| 실행 방식 | 네이티브 | 네이티브 | .NET(JIT) | 인터프리터 | 네이티브 |
| 메모리 관리 | 수동 | 수동(RAII) | GC | GC | 소유권 |
| 오류 처리 | 반환값 검사 | 스트림 상태 | TryParse | 예외(EAFP) | Result+match |
| 코드 길이 | 중간 | 중간 | 짧음 | 최단 | 최장 |
공통점: 5개 구현 모두 "루프 → 한 줄 입력 → 3조각 파싱 → 연산자 분기 → 출력" 구조이며, 잘못된 입력·0 나누기에 죽지 않도록 명시적으로 처리합니다.
가장 큰 차이는 오류 처리 철학: C는 개발자 재량, Python/C#은 런타임 보호, Rust는 컴파일 타임 강제.