SICP μ±
μ μ½λ€κ° abstract dataμ data structure μ λν μ€λͺ
μ΄ λ―Έν‘νκ²μ 보좩νκ³ μ μν€νΌλμλ₯Ό μ΄μ¬ν μ°Ύμλ΄€λλ°,Β
abstract data type μ νκ΅μ΄λ‘ μΆμ μλ£νμ΄κ³ , data structure λ μλ£κ΅¬μ‘° λΌκ³ λ³μλλ€λκ²μ μμλ€.Β
λ°μ΄ν°λ₯Ό μλ£ λΌκ³ λ²μνλ€λκ²λ μ²μ μ. μμΌλ‘ μλ£μ λ°μ΄ν°λ₯Ό μμ΄ μ°λλ‘ ν¨.Β
μ λΆ μμλ‘ μ½κ³ μμΌλ νκ΅μ΄λ‘ λλΌ λΆλ₯΄λμ§ μμκ° μμ΄μΌμ§...Β
μ¬ννΌ,Β
μ λ² μΈμ μμλ μλ£μ μΆμνμ λν΄ λ°°μ λ€. μ 리μ μ¬μΉμ°μ°μ ꡬνν λ μ 리μ μλ£μ ꡬνλ°©λ²μ λμ€μ μκ°νκ³ μ 리μ μλ£μ μ¬μ©λ°©λ²μ λν΄μλ§ λ¨Όμ μκ°νλ€.Β
μ΄λ°μμΌλ‘ μλ£μ μ¬μ©μ λ¨Όμ μκ°νλκ²μ μλ£μ μΆμν λΌκ³ λΆλ₯Έλ€... λΌκ³ SICP μμλ μ€λͺ νλ€.Β
κ·Έλ λ€λ©΄ μ΄ "μλ£"λΌλκ²μ μ νν 무μμΈκ°?Β
SICPμμ μλ£λ μλμ κ²λ€μ μ§ν©μ΄λΌκ³ μ μνλ€.Β Β
1. constructor μμ±μ
2. μλ£μ μ 보λ₯Ό μΆμΆ ν μ μλ selector
3. μ¬μ© λͺ©μ μ λΆν©νκΈ° μν κ°μ’ 쑰건λ€.Β
μλ₯Ό λ€μ΄μ μ 리μ μλ£λ₯Ό μ²μ μκ°ν λ SICPλ μλλ₯Ό λ¨Όμ μ μνλ€.Β
1. (make-rat <n> <d>) -> μμ±μ. λΆμκ° n, λΆλͺ¨κ° dμΈ μ 리μλ₯Ό 리ν΄νλ€.Β
2. (numer <x>) (denom <x>) -> μ λ ν°. κ°κ° λΆμμ λΆλͺ¨λ₯Ό 리ν΄νλ€.Β
3. μμμ μ μ n, dμ λν΄μ x κ° (make-rat n d)λΌλ©΄ μλμ μμ λ§μ‘±ν΄μΌ νλ€. -> 쑰건Β
보면 μ μ μλ―μ΄ κ΅¬ν λ°©λ²μ λμ€μ μκ°νκ³ μ΄λ»κ² μ¬μ©ν΄μΌ νλμ§λ§μ μκ°νκ³ μλ€.Β
μ¦, SICP μμ λ§νλ "μλ£"λ μ² μ νκ² μ¬μ©μμ μ μ₯μμ μκ°νλ©°,Β μ΄λ ν 쑰건μμ μ΄λ»κ² μ¬μ© κ°λ₯νκ°? λ‘ μ μ λλ€λ κ².Β
κ·Όλ° SICPμμ λ§νλ μλ£λ μν€νΌλμμμ μΆμ μλ£ν (abstract data type ADT)λΌκ³ λΆλ₯΄λ λ― νλ€.Β Β
ꡬ체μ μΈ κ΅¬ν λ°©λ²μ μλΒ μ¬μ©μμ μ μ₯μμ μκ°νλ μνμ λͺ¨λΈμ΄λΌκ³ νλλ―.Β
κ·Έλ¦¬κ³ μ΄ ADTλ₯Ό ꡬ체μ μΌλ‘ ꡬννλ νλμ λ°©λ²μΌλ‘ μλ£κ΅¬μ‘°κ° μλ€λλ―.Β
μλ£κ΅¬μ‘°Β μν€νΌλμ λ§ν¬
μ¦, μν€νΌλμ μμΌλ‘λ§νμλ©΄ μ΄λ€ νλ‘κ·Έλ¨μ μ€κ³ν λλΒ μΆμ μλ£νμΌλ‘ νμ μ‘κ³ , κ·Έ λ€μ μλ£κ΅¬μ‘° λ±μΌλ‘ μ€μ μλ£λ₯Ό ꡬννλ€. λΌλκ².Β
SICP μμΌλ‘ λ§νμλ©΄ μ΄λ€ νλ‘κ·Έλ¨μ μ€κ³ν λλ μλ£μ μΆμνλ₯Ό ν΅ν΄ νμ μ‘κ³ , λμ€μ μλ£μ ꡬνμ μκ°νλ€. λΌλκ±°.Β
μ€μ λ‘ μλ£(μν€μ ADT)λ₯Ό ꡬννλ λ°©μμΌλ‘λ λͺκ°μ§ λ°©λ²μ΄ μλλ°,Β
νλλ μλ£κ΅¬μ‘°λ₯Ό μ΄μ©νλκ²μ΄κ³ ,Β λ νλλ μλ£κ΅¬μ‘°λ₯Ό μ ν μ¬μ©νμ§ μκ³ ν¨μλ§μ μ¬μ©νλ λ°©λ²μ΄ μλ€.Β
μ΄μ κΈμμλ lispμ νμ΄, μ¦ 2-νν μλ£κ΅¬μ‘°λ₯Ό μ΄μ©ν΄μ μ 리μ μλ£λ₯Ό ꡬνμ νλλ°,Β
SICPμμλ μλ£κ΅¬μ‘°λ₯Ό μ ν μ¬μ©νμ§ μκ³ ν¨μλ‘λ§ κ΅¬ννλ λ°©λ²μ μκ°νλ€.Β
μλ£λ₯Ό ν¨μλ§μΌλ‘ ꡬννλκ² νλ‘κ·Έλλ° μ€νμΌμ message passing μ΄λΌκ³ λΆλ₯΄λλ° μ±ν°3μμ λ€λ£¬λ€λλ―.Β
----------- μ‘μ리 ------------------
μ΄ SICP μ± μ κ°λ μ μΆμνλ₯Ό λ§€μ° μ€μνκ² μ¬κΈ°λ λ― νλ€.Β
νλ‘μμ (ν¨μ)μ μΆμνμμλ κ°λ μ μ΄λ»κ² μΆμν ν μ μλκ°λ₯Ό κ³μν΄μ λΉλμ νμκ³ ,Β
μλ£μ μΆμν μμλ κ°λ μ μ΄λ»κ² μΆμν ν κ²μΈκ°λ₯Ό μΆμ μλ£νμ μ¬μ©ν΄μ κ°μ‘°νκ³ μλ€.Β
μ¦, SICPμ νλ‘κ·Έλλ° μΈμ΄μ μ΄ν΄ λ°©λ²μ μ΄λ»κ² μ¬λμ μμ μ νλ€μ΄ νμμΌλ‘ μ§ λ΄λ €κ° κ²μΈκ°μ μ§μ€νλ€λκ².Β
κ°μ₯ ν° μμ μ κ°λ μ μ 리νκ³ , κ°κ°μ κ°λ μ λ€μ λ μμ κ°λ μΌλ‘ μ 리νκ³ , λ€μ κ·Έκ²μ λ°λ³΅ν΄μ λ‘μ°λ λ²¨λ‘ λ΄λ €κ°λκ².Β
κ·Έκ²μ νκΈ° μν΄ ν¨μμ μΆμνμ μλ£μ μΆμνλ₯Ό μμΈνκ² μ€λͺ νκ³ μλκ²μ΄ μλκΉ?Β
μ΄λ κ² νλ€μ΄ νμμΌλ‘ κ°λ μ λ¨Όμ μ 리νκ³ , κ·Έ κ°λ μμ μ¬μ©νκΈ° μν μλ£λ 무μμΈκ°? λ₯Ό μκ°νκΈ° λλ¬Έμ SICPμμλ μλ£μ μ μλ₯Ό μ¬μ©μμ μ μ₯μμλ§ λ΄λ¦°κ².Β
λκΈ 2