본문 바로가기

ProgrammingPhilosophy3

[Golang] Go의 Goroutine과 Channel: 공유하지 말고 소통하라 "Do not communicate by sharing memory; share memory by communicating."— Go Concurrency Design Principle (https://go.dev/blog/codelab-share)Go 언어는 단순히 "멀티스레드를 쉽게 쓰는 언어"가 아닙니다. 그보다 더 근본적인 목표는 안전하고 명시적인 동시성(Concurrency) 제어입니다. 이를 위해 Go는 goroutine과 channel이라는 두 축을 제공하며, 이는 CSP(Communicating Sequential Processes) 이론을 기반으로 한 혁신적인 동시성 모델입니다.목차Go의 동시성 철학과 CSP 모델Goroutine: 경량 논리 스레드익명함수와 Goroutine 활용다중 C.. 2025. 11. 10.
[Golang] Go의 defer, panic, recover: 예외 없는 오류 제어 메커니즘 Go 언어는 try-catch나 throw 같은 예외(Exception) 구문을 제공하지 않습니다. 대신 단순하고 예측 가능한 흐름 제어를 위해 defer, panic, recover 세 가지 키워드를 사용합니다. 이는 Go의 핵심 철학 — 단순함(Simplicity), 명확성(Clarity), 가독성(Readability) — 을 그대로 반영한 설계입니다.목차예외 처리의 철학: 왜 try-catch가 없는가defer: 지연 실행과 자원 정리panic: 런타임 에러의 명시적 발생recover: 패닉에서의 복구세 키워드의 실행 순서와 동작 원리실무 예제: 안전한 파일 처리다른 언어와의 비교 분석결론: 단순함이 만드는 안정성예외 처리의 철학: 왜 try-catch가 없는가C++, Java, Python 등 .. 2025. 11. 9.
[Golang] Go에 삼항연산자(?:)가 없는 이유: 언어 설계 철학과 가독성 우선주의 Go를 처음 배우는 개발자들이 자주 하는 질문 중 하나는 바로 "왜 Go에는 삼항연산자(?:)가 없을까?"입니다. C, Java, JavaScript 등 대부분의 언어에 익숙한 사람이라면 이 부재가 다소 불편하게 느껴질 수 있습니다. 하지만 이는 Go 언어의 핵심 설계 철학 — 단순함(Simplicity), 명확성(Clarity), 가독성(Readability) — 을 지키기 위한 의도적인 결정입니다.목차삼항연산자란 무엇인가?Go 언어 설계자들의 공식 입장Go의 언어 설계 철학: Less is More삼항연산자가 없는 실질적 이유들Go에서의 조건부 표현 대안다른 언어와의 비교 분석커뮤니티 반응과 논쟁결론: 제약이 주는 자유삼항연산자란 무엇인가?정의와 기본 문법삼항연산자(Ternary Operator)는 .. 2025. 11. 9.