#programming-paradigm
노트 10개
Frontend › JavaScript
객체 지향 프로그래밍과 JavaScriptgoto → 절차적 프로그래밍 → 구조체 → 클래스로 이어지는 흐름에서 객체 지향이 왜 나왔는지, 캡슐화·상속·추상화·다형성이 무엇을 풀었는지 정리하고, 클래스 없이 프로토타입과 일급 함수로 OOP를 흉내 낸 JavaScript에서는 객체 지향과 함수형의 균형을 잡는 것이 핵심이라는 결론을 다룬다.
Frontend › JavaScript
반응형 프로그래밍과 RxJS반응형 프로그래밍은 데이터 흐름과 변경 전파에 초점을 둔 선언적 패러다임이다. 스프레드시트와 웹 프레임워크로 개념을 잡고, Pull에서 Push로, 제어의 역전으로 비동기를 단순하게 보는 법, 이벤트를 배열처럼 다루는 RxJS의 Observable과 연산자, 실무에서 막히는 소스 만들기와 Hot·Cold, Vue·MobX·시그널이 쓰는 의존성 추적(읽을 때 구독, 쓸 때 통지)의 원리를 정리한다.
Frontend › JavaScript
함수형 프로그래밍함수형 프로그래밍을 순수 함수·불변성·선언적 패턴이라는 학술 용어 대신 액션·계산·데이터 구분, 카피 온 라이트와 방어적 복사, 계층형 설계와 추상화 벽으로 다시 읽고, 인자를 미리 채워 함수를 특수화하는 커링과 부분 적용을 다룬다. 액션에서 계산을 빼내 테스트하기 쉬운 코드를 늘리고, 상태·변경·효과를 줄이고 모으고 미루는 리팩터링, 효과를 데이터로 반환하는 기법, 로직을 데이터로 적는 데이터 주도 프로그래밍, 프론트엔드의 요구사항을 입력에서 화면까지의 파이프라인으로 보는 법을 정리한다. 구조적 공유(영속 자료구조), data-last·자동 커링 라이브러리 규칙, 어플리커티브와 지연 Future, 대수적 데이터 타입까지.
Computer Science › Operating System
구조적 동시성동시 작업의 수명을 코드 블록에 묶어, 블록을 빠져나갈 때 그 안에서 띄운 작업이 모두 끝나 있게 하는 원칙. go 문·스레드 생성·콜백처럼 흐름을 갈라놓고 돌아오지 않는 기본 요소는 goto처럼 지역적 추론을 깨뜨린다. nursery·TaskGroup·coroutineScope가 이를 대체해 예외 전파, 자원 정리, 취소를 자동으로 보장한다.
Computer Science › Programming Languages
같은 문제, 열다섯 가지 설계: 상태와 결합을 다루는 법터틀 그래픽(앞으로 가기, 돌기, 펜 올리기)이라는 단순한 문제를 객체 지향 클래스부터 순수 함수 모듈, 함수형 코어 API, 에이전트, 인터페이스·함수 의존성 주입, 상태 모나드, 커맨드 배치, 이벤트 소싱, 스트림 처리, 인터프리터, 추상 자료형, 능력 기반 API까지 열다섯 가지로 구현하며 상태를 누가 쥐는지와 구현과 어떻게 떼어 내는지를 비교한다. 행동(인터페이스)이 아니라 데이터(커맨드 타입)로 결합을 끊는 방식의 장점도 정리한다.
Computer Science › Programming Languages
객체 지향의 본질: 메시징객체 지향이라는 말을 만든 앨런 케이의 관점에서 OOP의 본질을 메시징·캡슐화·늦은 바인딩 세 가지로 정리한다. 클래스와 상속은 C++·Java가 대중화한 구현 방식일 뿐 필수 조건이 아니며, 핵심은 상태를 숨긴 독립 개체들이 메시지로 협력하는 구조다.
Computer Science › Programming Languages
위임 패턴과 Kotlin by객체가 받은 요청을 다른 객체에 넘겨 처리하는 위임 패턴과, 이를 언어 문법으로 지원하는 Kotlin의 by 키워드를 정리한다. 클래스 위임은 인터페이스 구현을 통째로 다른 객체에 맡기고, 프로퍼티 위임은 getter/setter를 맡기며, by lazy와 by viewModels()가 그 대표적인 쓰임이다.
Computer Science › Programming Languages
프로그래밍 언어의 계보와 선택기계어·어셈블리에서 고급 언어까지 세대 구분, 1950년대 Fortran·LISP부터 2010년대 Rust·Go·Kotlin·Swift·TypeScript까지 언어가 어떤 문제를 풀려고 이어져 왔는지, C++가 여전히 쓰이는 분야, 언어별 에너지 효율 연구의 결론을 정리한다.
Computer Science › Programming Languages
프로그래밍 패러다임명령형·선언형·객체 지향·함수형·반응형·관점 지향·제네릭·동시성 프로그래밍이 각각 무엇을 중심에 두고 코드를 짜는지 비교한다. 패러다임을 레코드·클로저·동시성·이름 붙은 상태 같은 개념의 묶음으로 보는 관점, 관찰 가능한 비결정성과 상태 표현력이라는 두 축, 새 개념이 필요하다는 신호인 창조적 확장 원칙, goto를 없앤 구조적 프로그래밍, 명령형·함수형·객체 지향의 차이와 객체 지향의 네 기둥(추상화, 캡슐화, 상속, 다형성)과 추상화·캡슐화·정보 은닉의 구분, is-a·has-a 관계를 정리한다. 함수형의 순수 함수·부수 효과·참조 투명성과 순수 함수가 스레드 안전한 이유, 클래스와 객체 지향이 같은 말이 아닌 이유도 다룬다.
Computer Science › Programming Languages
프로그램이 실행되기까지: 컴파일, 바이트코드, 인터프리터, GC소스 코드가 CPU에서 돌기까지의 세 갈래(네이티브 컴파일, 바이트코드 + VM·JIT, 인터프리터)와, 운영체제가 실행 파일을 띄워 종료하기까지의 단계, 가비지 컬렉션이 관리하는 영역과 추적·참조 카운팅의 비교, 순환 참조와 retain cycle, GC의 장단점과 Java·Python·Go의 방식, 브라우저에서 네이티브 코드를 돌리는 WebAssembly를 정리한다.