| En

Go 패키지 네이밍 규칙

이 글은 Go 공식 블로그의 “Package Names"와 Go 코드 리뷰 코멘트, 표준 라이브러리 설계 사례를 참고하여 작성했다. Go 패키지 설계 철학 Go의 패키지 시스템은 다른 언어와 결이 다르다. Java처럼 복잡한 패키지 계층 구조나 C++의 네임스페이스 시스템을 두지 않고, 패키지 경로(Package Path)와 패키지 이름(Package Name)을 분리해 간결하면서도 표현력 있는 코드를 작성하도록 설계했다. 또한 Go는 디렉토리 구조나 아키텍처 패턴에 엄격한 규칙을 강제하지 않는다. 대신 프로그래머에게 유연성을 주면서도 읽기 쉬운 코드를 위한 분명한 가이드라인을 제시한다. 이런 접근은 표준 라이브러리의 패키지 구조에서도 확인할 수 있으며, 핵심 원칙은 다음과 같다. ...

2025년 2월 15일 · 6 분 · 1222 단어 · In-Jun

네트워크 소켓

소켓(Socket)은 네트워크 통신의 종단점(endpoint)을 추상화한 소프트웨어 인터페이스다. 1983년 UC Berkeley의 4.2BSD 유닉스 운영체제에서 처음 등장했으며, 오늘날까지 인터넷 통신의 근간을 이루는 핵심 기술로 자리 잡고 있다. 소켓은 IP 주소와 포트 번호의 조합으로 네트워크상의 고유한 통신 지점을 식별하고, 프로세스 간 데이터 교환을 위한 표준화된 API를 제공한다. 소켓의 역사와 발전 Berkeley Sockets의 탄생 Berkeley Sockets(BSD Sockets)은 1982년 BSD UNIX 4.1에서 처음 소개되었으며, 1986년 BSD UNIX 4.3에서 개정된 버전이 현재까지 널리 사용되고 있다. 처음에는 사실상(de facto) 표준이었으나, 이후 POSIX 사양의 공식 구성 요소로 채택되어 거의 모든 운영체제에서 동일한 인터페이스로 네트워크 프로그래밍을 할 수 있게 되었다. ...

2024년 6월 8일 · 6 분 · 1122 단어 · In-Jun

Call by Value와 Call by Reference

함수 인자 전달 방식(Parameter Passing Mechanism)은 함수를 호출할 때 인자를 어떻게 넘길지 정하는 개념이다. 이 방식은 코드의 동작 방식과 성능에 직접적인 영향을 주기 때문에 프로그래밍에서 매우 중요하다. 대표적인 방식인 Call by Value와 Call by Reference의 차이를 이해하면 더 효율적이고 안전한 코드를 작성할 수 있다. 함수 인자 전달 방식 개요 함수 인자 전달 방식이란? 함수 인자 전달 방식(Parameter Passing Mechanism)은 함수 호출 시 실인자(Actual Parameter)의 값이나 참조를 형식 매개변수(Formal Parameter)에 어떻게 전달하는지를 정의하는 메커니즘으로, Call by Value, Call by Reference, Call by Name, Call by Need 등 다양한 방식이 존재한다. ...

2024년 5월 16일 · 9 분 · 1882 단어 · In-Jun

Java 프로그래밍 입문

Java는 1995년 Sun Microsystems에서 James Gosling이 이끄는 팀에 의해 개발된 객체지향 프로그래밍 언어이다. “Write Once, Run Anywhere(한 번 작성하면 어디서나 실행)“라는 슬로건 아래 플랫폼 독립적인 실행 환경을 제공하며, 2024년 현재 TIOBE 프로그래밍 언어 순위에서 꾸준히 상위권을 유지하고 있다. 기업용 애플리케이션, 안드로이드 앱, 빅데이터 처리, 웹 서비스 등 다양한 분야에서 널리 사용되며, 강력한 타입 시스템과 풍부한 표준 라이브러리, 활발한 커뮤니티를 바탕으로 지속적으로 발전하고 있다. Java 개요 Java란? Java는 Sun Microsystems(현재 Oracle)에서 개발한 범용 객체지향 프로그래밍 언어로, JVM(Java Virtual Machine) 위에서 실행되어 플랫폼 독립성을 제공하며, 강력한 타입 검사, 자동 메모리 관리(가비지 컬렉션), 멀티스레딩 지원 등의 특징을 가진다. ...

2024년 5월 16일 · 10 분 · 2009 단어 · In-Jun
[email protected]