Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

calculator-csharp

사칙연산 CLI 계산기 — 5개 언어 비교 시리즈 중 C# 구현.

동일한 사양의 계산기를 C, C++, C#, Python, Rust로 각각 구현하고, 언어마다 "관용적인(idiomatic)" 방식이 어떻게 다른지 비교하는 학습 프로젝트입니다.

실행

dotnet run

.NET 8 SDK 필요.

계산기 (예: 3 + 4, 종료: q)
> 3 + 4
= 7
> 5 / 0
0으로 나눌 수 없습니다
> q

무엇을 썼고, 왜 썼는가

  • 최상위 문(top-level statements) — 최신 C#은 class Program { static void Main... } 보일러플레이트 없이 스크립트처럼 바로 시작할 수 있습니다.
  • double.TryParse — 예외를 던지는 double.Parse 대신, 성공 여부를 bool로 반환하는 .NET의 표준 검증 패턴. "실패가 예상되는 파싱"에는 예외보다 TryParse가 관용적입니다 (Python의 EAFP와 대비되는 지점).
  • string? (nullable 참조 타입)Console.ReadLine()이 null일 수 있음을 타입으로 표현하고, 컴파일러가 null 검사를 유도합니다.

이 언어의 장단점 (이 프로젝트 기준)

장점

  • TryParse, string? 등 안전한 표준 패턴이 언어 차원에 내장
  • 5개 중 Python 다음으로 짧고, 정적 타입의 안정성은 유지
  • Visual Studio·NuGet 등 도구 생태계가 뛰어나 생산성 높음

단점

  • .NET 런타임 필요 — 단일 파일 배포 시 실행 파일이 큼
  • 시작(JIT 워밍업)이 네이티브 언어보다 느림
  • 사실상 Microsoft 생태계 중심 (크로스플랫폼은 되지만)

5개 언어 비교 요약

C C++ C# Python Rust
실행 방식 네이티브 네이티브 .NET(JIT) 인터프리터 네이티브
메모리 관리 수동 수동(RAII) GC GC 소유권
오류 처리 반환값 검사 스트림 상태 TryParse 예외(EAFP) Result+match
코드 길이 중간 중간 짧음 최단 최장

공통점: 5개 구현 모두 "루프 → 한 줄 입력 → 3조각 파싱 → 연산자 분기 → 출력" 구조이며, 잘못된 입력·0 나누기에 죽지 않도록 명시적으로 처리합니다.

가장 큰 차이는 오류 처리 철학: C는 개발자 재량, Python/C#은 런타임 보호, Rust는 컴파일 타임 강제.

License

MIT

About

사칙연산 CLI 계산기 — 5개 언어 비교 시리즈 (C#)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages