CodeSpitz77 1ํ_Programming & JS elementry
๐๐๐
์ฝ๋์คํผ์ธ ๊ฐ์ ์ ๋ฆฌ๋ก
1. ์ ์ด๋ ๊ฒ ์งฐ๋. - ๊ฐ๋ฐ ๊ธฐ๋ณธ์ ์์๋ณด์. ์ฒ ํ/๊ฐ์น/๋๊ธฐ
์ฒ ํ
- ์๋์ฃผ์์ ์ผ๋ก ๋ฐ๋ผ๋ณด์.
๊ธฐ์ค (: ์ ์ด๋ ๊ฒ ์งฐ๋?.. ์ด๊ฒ๋ง ์ง์ผ๋ ๋น์ฉ์ ๊ฐ.)
- ๊ฐ์น : ์ด๋ฌ์ด๋ฌํ ๊ฐ์น๋ฅผ ์ถ๊ตฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ์์ฑํ์๋ค.
- ์์ฌ์ํต
- A๊ฐ ์ง ์ฝ๋๋ฅผ ์๋ฌด๋ ๋ชป์์๋ณด๋ฉด ๋น์ฉ๋ญ๋น
- ๋จ์ํจ
- A๊ฐ ์ง ์ฝ๋๊ฐ ๋ณต์กํ์ฌ ์๊ฑด ์ถ๊ฐ์ ๋ ๋ง์ ์๊ฐ๋ญ๋น
- ์ ์ฐํจ
- A๊ฐ ์ง ์ฝ๋์ ์๊ฑด์ถ๊ฐ์ ๋ค ๋ฏ์ด๊ณ ์ณ์ผํ๋ฉด ๋น์ฉ๋ญ๋น
- ์์น (by Kent Beck)
- ์ง์ญํ
- A๊ฐ ์ง ์ฝ๋๋ฅผ ๊ณ ์ณค๋๋ ์ ์ฒด๊ฐ ์ํฅ์ด ๊ฐ๋ฉด > ๋น์ฉ๋ญ๋น
- ์ค๋ณต์ ๊ฑฐ
- A๊ฐ ์ง ์ฝ๋๋ฅผ ๊ณ ์ณค๋๋ ๋ค๋ฅธ ๊ณณ์ ๊ทธ๋๋ก..> ๋ ์๊ฐํฌ์, ๋น์ฉ๋ญ๋น
- ๋์นญ์ฑ
- ์์_Get/Set
- A๊ฐ ์ง ์ฝ๋์ get์ ์๋๋ฐ set์ ์๋ค. ์๊ฐ๋ญ๋น
- ์ถ์์ ์ธ ์์น๋ ์๊ณ , ์ปจ๋ฒค์ ๊ณผ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ์์น๋ ์๋ค.
- ํจํด (์ ๋ฐฐ๋ค์ ๊ฒฝํ๊ธฐ๋ฐ..๊ฒฝํ๋ ๋ฐ๋ณต๋๋ฉด ์ง๋ฆฌ์ ๊ฐ๊น์์ง.)
- ๊ฐ๋ฐ๋ก
- ์ค๊ณ๋ก
- ๊ฐ์ข ์ ์ฉ ํจํด
๋๊ธฐ
- ๋น์ฉ
- ์๊ฐ
2. program๊ณผ timing
์ปดํจํฐ๊ฐ ๋ญ๊น? ํ๋ก๊ทธ๋จ์ด ๋ญ๊น?
2-1-1. program
- language code
- lint time
- ์ปดํ์ผ ์ ์ ๋ง์ ์๋ฌ๋ฅผ ์ก์ ์ ์๋ค.
lint ํ์์์ ์๋ฌ๋ฅผ ์ก๋๊ฒ ์ ์ผ ์ข๋ค!๋น๊ทผ
- machine language(๊ธฐ๊ณ์ด)
- compile time
- file
- load: file์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ๊ณผ์
- ์ฌ๊ธฐ์๋ถํฐ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ถ๋ฆฐ๋ค.
- load๊น์ง ํ๋ก๊ทธ๋๋จธ์ ์ญํ .
- run: ์คํ
- run time
- run time์์๋ ์ก์ง ๋ชปํ๋ ์๋ฌ => context error
- ๊ฐ๋ฐ์๋ค๋ผ๋ฆฌ์ ์์ฌ์ํต ๋ฌธ์
- ๊ธฐํ์์ ์ค๋ฅ
- terminate: ์ข ๋ฃ
2-1-2. script program ๐
- ์ผ๋ฐ ํ๋ก๊ทธ๋จ๊ณผ ๋ค๋ฅธ์ ์, machine language๊ฐ 4๋จ๊ณ์ ์๋ค๋ ์ .
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด์ ํด๋น๋จ
- language code: ์ฝ๋์์ฑ ํ
- file: jsํ์ผ์
- load: ๋ธ๋ผ์ฐ์ ์ ๋ก๋ํ๋ฉด
- machine language(๊ธฐ๊ณ์ด): ๊ธฐ๊ณ์ด๋ก ๋ฐ๊ฟ์
- run: ์คํ (๋งค๋ฒ ๊ธฐ๊ณ์ด๋ฅผ ๋ฐ๊ฟ ์ ์์ผ๋, ์บ์๋ฅผ ํ์๋๊ธฐ๋)
- terminate: ์ข ๋ฃ
2-2-1. program runtime
์ปดํ์ผ ํ์์ด ์์ด์ ๋ฐํ์์ด ์ค์ ๋ฐํ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ์ฌ ์คํํ๋ ๊ฒ
- loading
- instruction fetch & decoding(์ธ๋ถ๋ฒ์ค์์ ๋ช ๋ น์ ๊ฐ์ ธ์ ํด์)
- execution (์คํ)
๋ช ๋ น ํ๋๋น, 2๋ฒ๊ณผ 3๋ฒ์ ๋ฐ๋ณต
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ํ๋ก๊ทธ๋จ์ cpu๊ฐ ์๊ฐํ๋ค. (๋ ธ์ด๋ง ๋จธ์ ์ ๊ตฌ์กฐย )
- ์ปดํ์ผ ํ์์๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๊ณ ์์ง ์๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐํ์๋ ์ฌ๋ ค์ง.
- ๋๋ฌธ์ ๊ฐ์ง ๋ฉ๋ชจ๋ฆฌ ์์์ ์๋ฎฌ๋ ์ด์ ํ๋ฉฐ ๋ง๋ ๋ค.
- ์ปดํ์ผ ํ์์ ๋ง๋ค์ด์ง ํ์ผ ์์ ์ฝ๋๋ค์ ๋ค ๊ฐ์ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ์ ธ์์.
- ๋ก๋ ์ **๊ฐ์ง๋ฉ๋ชจ๋ฆฌ A์ ์ง์ง ๋ฉ๋ชจ๋ฆฌ A์ ๋งคํํด์ค์ผํ๋ค. ** (virtual memory mapping table ==
VTable)
- ์ปดํ์ผ๋ฌ ์ธ์ด๋ค์ ๋ค ๊ฐ๊ณ ์๋ ์์๋ผ๊ณ ์๊ฐํ๋ฉด๋๋ค.
- essential definition loading: ๊ฐ์ฅ ์ค์ํ ๊ฒ ๋ถํฐ ํ๋ก๊ทธ๋จ์ ์ ์ฌํ๋ค.
- VTable์ ๋งคํํ๋ค.
- run
- runtime definition loading
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐํ์ ์ค์ ํด๋ฆญ ํ ํจ์๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์๋ค.
- ์คํ ํ์๋ ์ ์๋ฌผ์ด ๋์ค๋ ์ํฉ
- ์ปดํ์ผ์์ ์ ํ์ ์ํค๋ ๊ฒ์ด ์๋๋ผ runtime๋
2-2-2. script program runtime
- ์ฌ๋ฌ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋์ด์๋ค๊ณ ์๊ฐํด๋ ๋๋ค.
- ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ ๋จ๊ณ๊ฐ ์๋ค๋ณด๋, ๋ฐํ์์ ๋ ์ด์ด๋ก ๋๋ ์ ๊ด๋ฆฌํ๋ค.
3. Memory, Address, Pointer, Variables, Dispatch ํ๋ก๊ทธ๋จ ์์์ ๋ฌด์จ์ผ์ด ์ผ์ด๋๋์ง ์๊ฐํด๋ณด์.
๋ฐ์ดํฐ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ์์ง์ด๋์ง. ์ฐธ์กฐ์ ์ฐธ์กฐ๋ฅผ ์ ์ฐ๋์ง๋ฅผ ๋ฐฐ์ฐ๋๊ฒ ํต์ฌ - (linked list, decorator, โฆ) - ์ง์ ์์ง ์๊ณ ๋ค๋ฅธ ์์ด๋ฅผ ํตํด์ ์๋ ค๊ณ ํ์ง?
3-1. Memory
๊ณ ์ ํ ๋ฒํธ๋ฅผ ์ฃผ์๋ก ๊ฐ๋ ๋ธ๋ญ์ฒด๊ณ๋ก ๋์ด์๋ค. ๋ธ๋ญ์ ๋ํ๋ด๋ ์ฃผ์๋ ๋ช์๋ฆฌ์ผ๊น? => 64bit์ธ์ง 32bit์ธ์ง
3-2. ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ
(ํฌ์ธํฐ ๊ฐ๋ )
A = "TEST"&A = 11(C์ธ์ด์์ ์ฃผ์๊ฐ์ ๋ณ์ ์์&๋ฅผ ์ฌ์ฉํ๋ค.)B = &A*B = "TEST"
์ง์ ์ฐธ์กฐ์ ์ํ์ฑ
- ์ด๋ค ๋ณ์๋ฅผ ์ธ๋ถ์ ๊ณต๊ฐํ ๋
- ์ฌ์ฉ์ฒ๋ฅผ ํ์ ์ง์ ์ ์๋ค.
- ๋๊ฐ ์ด๋ป๊ฒ ์ธ์ง ๋ชจ๋ฅธ๋ค.
- ํต์ ๊ถ์ ๋ฒ์ด๋๋ค.
C = B, D = B, ...: C์ D๋ B๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๋ค.- B์ ๋ฐฐ์ ..
B = &K: ์ฃผ์๊ฐ์ด ๋ฐ๊พธ์๋ค.
-
B๊ฐ ๋ณ๊ฒฝ๋์๊ธฐ ๋๋ฌธ์ ๋น์ฐํ C,D๋ ๋ฐ๋๊ฑฐ๋ผ ์๊ฐํ์ง๋ง, ์๋๋ค.
-
์ง์ ์ฐธ์กฐ๋ฅผ ํผํ๋ ์ด์ ์ด๋ค.
-
์ฐธ์กฐ๋ฅผ ๋ณต์ฌํ์ ๋ ๊ผญ ์ด๋ ๋ค.
- ํจ์ํ ํจ๋ฌ๋ค์์์๋ ์ฐธ์กฐ๋ฅผ ํผํ๋ ค๊ณ ํ๋ค.
double dispatch๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋ค.
B = { value: &A, V: 3 }
C = B, D = B, ...B๊ฐ ์ง์ ์ฐธ์กฐํ์ง์๊ณ , ๊ฐ์ ์ ์ผ๋ก ์ฐธ์กฐํ๊ฒ ๋ง๋ค์๋ค. Dispatch: ์ฃผ์๋ก๋ถํฐ ๊ฐ์ ์ป๋ ํ์
- Double Dispatch
- ์๋ฃ๊ตฌ์กฐ์์ linked list์ ์๋ฆฌ
- ๊ฐ์ฒด์งํฅ์์๋ ์ธํฐํ์ด์ค์ ํด๋์ค์ ๊ด๊ณ
B๊ฐ ๋ฐฐ์ ์ ๋๋ ค๋ ๋์ํ ์ ์๋ค.
3-3. Lexical Grammar (์ดํ์ ์ธ ์ธก๋ฉด์ ๋ฌธ๋ฒ)
- Control Character ์ ์ด๋ฌธ์
- White Space ๊ณต๋ฐฑ๋ฌธ์
- Line Terminators ๊ฐํ๋ฌธ์
- Comments ์ฃผ์
- Keyword ์์ฝ์ด
- Literals ๋ฆฌํฐ๋ด : ๋์ด์ ๋๋ ์ ์๋ ๊ฐ์ฒด๋ ๊ฐ์ ํํ
3-4. Language Element
์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋์ ํฐ 3๊ฐ์ง ์นดํ ๊ณ ๋ฆฌ๋ก ๋๋ ์ ์๋ค.
3-4-1. Statements: ๋ฌธ
- ์ปดํ์ผ๋ฌ ํน์ ์คํ๊ธฐ์๊ฒ ์ฃผ๋ ํํธ์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ์ ๋จ๋ ๊ฐ๋ ์ด ์๋๋ค.
- ์ฒ๋ฆฌํ๊ณ ๋๋ธ๋ค.
- Control Statement
- ex. If, For, While โฆ
- ex. ruby๋
๋ฌธ์ด๋ผ๋ ๊ฐ๋ ์ด ์๋ค.
- ex. ruby๋
๋ฌธ์ ๋๋๋ ๊ธฐ์ค์๋ 2๊ฐ์ง๊ฐ ์๋ค.
- ๊ณต๋ฌธ, ์๋ฌธ, ์ ์ด๋ฌธ, ์ ์ธ๋ฌธ
- ๊ณต๋ฌธ: ์๋ฌด๊ฒ๋ ์๋ ๋ฌธ
for(var i=0; i<5; i++);=> ์๋ฌ๊ฐ ์๋ค.- ๊ณต๋ฌธ์ ๊ธฐ์ค์
;
- ์๋ฌธ:
- ์ ์ด๋ฌธ:
- ์ ์ธ๋ฌธ: ๋ฉ๋ชจ๋ฆฌ ์์ ๋ณ์๋ฅผ ํ ๋นํ๋ ์ผ
- ๋จ๋ฌธ, ์ค๋ฌธ
if(true);if(true) a = 3; else b = 5- ์๋ฌ๊ฐ ๋์ง ์๋ ์ด์ if ์ ์ ์ ์ : if(condition1) statement1 else statementN
if (true) a=3; else if (a > 2) b = 3; else b =5;if (true) a=3; else {if (a > 2) b = 3; else b =5;}- ์๋ฌต์ ์ผ๋ก ์์ฒ๋ผ ์ค๊ดํธ๊ฐ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ. else if์ ์ด ์๋ ๊ฒ์ด ์๋๋ผ, ์๋ถ๋ถ์ if else์ ์ else๊ฐ ๊ฐ๊ณ ์๋ if else์ ์ด๋ผ๊ณ ์๊ฐํ์.
- ์ค๊ดํธ๋ ์ค๋ฌธ์์ ๋ง์ด ์ฐ์ธ๋ค.
3-4-2. Expresssion: ์
- ์์ ๊ฒฐ๊ณผ๋ ์ธ์ ๋ ํ๋์ ๊ฐ์ผ๋ก ์๋ ด๋๋ค.
- ๊ฐ์, ์ฐ์ฐ์, ํธ์ถ์
3;5;6;- ํ๋์ ๊ฐ์์ ์๋ฌธ์ผ๋ก ์ธ์งํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๋์ง ์๋๋ค.
3-4-3. Identifier ์๋ณ์
- ๋ณ์๋ฅผ ์๋ฏธํ๋ค.
- ๊ธฐ๋ณธํ, ์ฐธ์กฐํ
4. ํ๋ฆ ํ๋ก๊ทธ๋๋ฐ: ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด์๋ ๋ช ๋ น์ด์ ์ฐ์(flow) Sync Flow / Flow Control / Sub Flow
4-1. Sync Flow - ๋ฉ๋ชจ๋ฆฌ์ ์ ๋๋์ด์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋์ ์ฐ๋ฆฌ๋** ๊ฐ์ญ์ ๋ชปํ๋ค.** - ๋๊ธฐํ
ํ๋ฆ, ๋๊ธฐํ ๋ก์ง ์ด๋ผ๊ณ ํ๋ค.
4-2. ํ๋ฆ์ ์ด (flow control)
- ์ผ์๋ก ํ๋ฅด๋ sync flow๋ฅผ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ฆ์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
4-3. sub flow
- ์ด๋ค ํ๋ฆ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฐ์ด๊ธฐ๋ ํ๋ค.
- ํจ์๋ ํด๋์ค๋ฅผ ์ด์ฉํ๋ค.