코드스피츠 오브젝트 83 #1
코드스피츠 83 #1
코드를 왜 이리 짤까 - motivation - 돈이 덜 드니까, 돈을 버니까
생각의 기저를 이루는 철학(사료의 틀)
토마스 쿤의 과학혁명
철학을 베이스로 하는 윗단계의 프레임.
구현패턴 : 생각하는 코드의 틀 (가치, 원칙, 패턴)
가치와 원칙에서 반복되는 패턴
Xoriented
어떻게 적용하느냐에 따라서 패턴이 달라짐.
Relativism : 토마스 쿤(과학 혁명의 구조)
Rationalism : 러커토시 임레(수학적 발견의 논리 : 증명과 반박)
난장판 : 파울 파이어아벤트(방법에의 도전)과 그 이후
상대주의, 합리주의
합리주의 - 최적화. 인간성을 말살하고 합리성
상대주의 : 클래스 위에도 있고, 아래도 있고, JVM은 어플리케이션이지만 클래스 기준으로는 부모
기준을 만들때는 합리성
켄트벡이 말하는 가치 : 돈으로 환산할 수 있는 가치 ( Communication, Simplicity, Flexibility )
간단하면 재사용가능. 유연하면 간단하다.
원칙 : Local consequences, Minimize repetition, Symmetry, Convention
변수의 생명주기를 짧게,
중복을 최소화 ( 중복은 제거하는 것이 아니라 발견하는 것이다 )
짝을 맞추라 Symmetry :게터세터
XOriented : SOLID, DRY, Reactive, Functional,
코딩의 생산성 : 50% 이상이 디버깅에 사용
사람의 시간 = 돈.
돈을 적게 썼다 = 시간을 적게 썼다.
공장은 사람을 적게 쓰면 돈을 버는 것은 아니다.
유연, 견고, 격리
요구사항은 바뀐다.
납기는 정해져있다.
변화에 대해서 격리에 성공해서
객체지향쪽 : 역할모델
역할모델을 이해해서 프로그래밍을 바라보는 시점이 객체지향세계에 입장
추상화
일반화, 연관화, 집단화
일반화 - Modeling, Function, Algorithm
연관화 - Reference, dependence
집단화 - Group, Category
Data 추상화
프로시져 추상화
프로시져 - 메서드가 아닌 함수. 데이터의 처리방법을 함수에게 위임
Data 추상화
- Modeling : 기억해야만 할것을 추상화. 학생 -> 학번, 이름만 추상화
- Categorization : 카테고리로 인식
- Grouping : 유한집합. 자연수 가르치고 집합.
Procedural Ab
- Generalization : 복잡계를 추상화
- Capsulization : 데이터의 은닉과 다름. ATM 기. 출금. 복잡성을 감추고 추상화된 인터페이스 노출
OOP ab
- Generalization
- Realization
- Dependency
- Association (필드)
-
- Aggregaation
- Composition
역할모델에 따른 격리 설계까지가면 아무곳이나 갈 수 있다.
=====================================================
:: Program & Timing
프로그램은 메모리에 적재될 때부터 실행될 때부터 프로그램
Language CODE ---- Lint Time
Machine language ---- Compile Time
FILE
load
run ---- Run time
terminate
왠만한 에러는 런타임에 걸리면 최악이니 Lint, Compile 타임에 잡을려고 한다.
:: Script Program
Language CODE --- LINT time
RUN --- RUN time
File Load 가 없으므로 syntax error
:: Runime
CPU
제어유닛 - 디코더
연산유닛 - 제어정보
데이터유닛
Loading
INSTRUCTIOIN FETCH & DECODING
Execution
Essential Definition Loading
VTable Mapping
RUN
RUNTIME DEFINITION LOADING
RUN
=====================================================
Pointer of Pointer
직접 참조의 문제.
B참조값을 바꾸는 순간 C,D 가 끝장난다.
파라미터로 무엇을 던지고 내가 가지고 있던 변수는 안 가져있겠지?
한번더 포인터의 포인터를 가짐으로 쿠션메모리가 있다.
동적 바인딩