๐Ÿ“Œ ํ•œ ์ค„ ์š”์•ฝ

Expression์€ ๊ฐ’์„ ์‚ฐ์ถœํ•˜๋Š” ๊ณ„์‚ฐ์ด๊ณ ,

Statement๋Š” ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ์žฅ์ด๋‹ค.

Statement๋Š” ์ข…์ข… Expression์„ ๋‚ดํฌํ•œ๋‹ค.


โœ… ํ•ต์‹ฌ ์š”์•ฝ

ํ•ญ๋ชฉ Expression (ํ‘œํ˜„์‹) Statement (๋ฌธ์žฅ)
๋ชฉ์  **๊ฐ’(value)**์„ ๊ณ„์‚ฐ **ํ–‰๋™(action)**์„ ์ˆ˜ํ–‰ (ex: ์ƒํƒœ ๋ณ€๊ฒฝ)
๊ฒฐ๊ณผ ์–ด๋–ค ๊ฐ’์„ ์‚ฐ์ถœ ๋ณดํ†ต ๊ฐ’์€ ์—†๊ณ  ๋ถ€์ž‘์šฉ(side-effect) ๋ฐœ์ƒ
์ƒํƒœ ๋ณ€ํ™” ์—†์Œ ๋˜๋Š” ์ œํ•œ์  (์ผ๋ฐ˜์ ์œผ๋กœ ์—†์Œ) ์žˆ์Œ (๋ณ€์ˆ˜ ๋ณ€๊ฒฝ, ๋ฃจํ”„ ์‹คํ–‰ ๋“ฑ)
๋…๋ฆฝ ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ ์ผ๋ฐ˜์ ์œผ๋กœ ๋…๋ฆฝ ์‹คํ–‰ ๋ถˆ๊ฐ€ ๋…๋ฆฝ ์‹คํ–‰ ๊ฐ€๋Šฅ (ํ•œ ์ค„ ๋‹จ์œ„ ์ฝ”๋“œ)
์˜๋ฏธ๋ก ์  ํ•ด์„ โŸฆexprโŸง : Env โ†’ Value โŸฆstmtโŸง : State โ†’ State ๋˜๋Š” โ†’โŠฅ
์˜ˆ์‹œ 1 + 2, x * y, f(3) x := 1, if ... then ..., while ...
ํฌํ•จ ๊ด€๊ณ„ Statement ์•ˆ์— Expression์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ Expression์€ Statement์˜ ๊ตฌ์„ฑ ์š”์†Œ์ผ ์ˆ˜ ์žˆ์Œ

โœ… ๊ด€๊ณ„ ์„ค๋ช…

1. Statement๋Š” Expression์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค

2. ๋ฐ˜๋Œ€๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Œ


โœ… ์–ธ์–ด์— ๋”ฐ๋ฅธ ์ฐจ์ด (๋ณด๋„ˆ์Šค)

์–ธ์–ด ์œ ํ˜• ํŠน์ง•
C, Java Statement์™€ Expression์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•จ
Python, JavaScript ์ผ๋ถ€ Expression์ด Statement์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•จ (print("hi"))
Lisp, Haskell, Rust ๋ชจ๋“  ๊ฒƒ์ด Expression์ผ ์ˆ˜ ์žˆ์Œ (expression-based language)