채널에서 보고 정리한 글입니다.
프로그래밍 언어 기본 틀과 자바스크립트 언어의 기본 요소를 살펴봅니다.
철학 - 합리주의, 상대주의 (부모는 무조건 부모인가? 누구의 자식이지 않는가?)
가치
원칙
패턴
동기
language code (c,java, javascript == text file)
machine language (compile된 컴퓨터 언어, text file 일수도 있다.)
run
language code (c,java, javascript == text file)
machine language (메모리 내부에서 변경된다. 매번 만들 수 도 있다.)
run
script program을 잘 이해하기 위해서 Runtime 에 대해 잘 알아야 한다.
runtime 은 메모리에 로드 하고 적재하는 시점이다.
Loding
Instruction Fetch & Decoding
Fetch: 외부 버스에서 Memory 의 명령어를 가져온다.
Instruction : cpu가 해석할 수 있는 명령어
디코더는 memoery의 추상 명령어를 cpu의 명령어로 Decoding 한다.
파일을 메모리 적재하고 ,적재된 명령들을 순차적으로 실행하면 종료된다.
Loding → { Instruction Fetch & Decoding → execution → } → terminate
Run
static time (상대적으로 static)
run time
static time (상대적으로 static)
run time
여기 까지가 프로그램 생명주기
memory, address, pointer, variables, dispatch
메모리 주소의 블록은 컴퓨터 환경마다 다르다 (32bit, 64bit)
32bit 의 최대의 메모리는 가질 수 있 는 크기는 4G 이다.
( 직접 참조) b 의 배신 알아 보기
&A 의 &는 c언어의 주소 연산자, 즉 메모리 주소를 반환하는 연산자 이다.
A의 메모리 주소는 11번이라는 것을 알 수 있다.
*B 의 * 는 포인트 긴잡 참조 연산자, 즉 메모리 번지의 값을 반환 하는 연산자 이다.
B의 값이 있는 주소, 즉 B의 값 11인 의 주소 번지의 값을 반환 한다. == test
B의 참조 값을 변경 했을 경우
실행 상 문제가 되지 않는다. 하지만 남은 코드를 보았을 때 C, D 는 B의 값을 참조 한 것으로 보이지만, B는 배신을 하여 최초의 A가 아닌 K 를 참조하게 된다.
이러한 직접 참조의 문제 (배신의 문제) 를 해결하기 위해서는 더블 디스패치를 이용한다.
B의 참조 가 변경 되더라도 남은 코드를 봤을 때, 직접 참조보다 추측하기 쉬워진다.
여기 부터 javascript basic
literals 리터럴
statements 문
expression 식
identifier 식별자