DΓa Dos: el π€π€π€π€ como barrera de aislamiento entre capas β separaciΓ³n de concerns para programadores
π΅ μκ°νλ μΉκ΅¬μκ² β λμ§Έ λ (νλ‘κ·Έλλ¨Έλ₯Ό μνμ¬)
νμ λ€μ΄μ¬ β
μ§λ λ©μμ§μμ μ°λ¦¬λ μμ€ν μ 첫 λ²μ§Έ μΆλ ₯ β λΉ β κ³Ό ν΅ν© κ²μ¦μ λ΄μ₯ν κ΅¬μΆ λ£¨νμ μν€ν μ²λ₯Ό μ΄ν΄λ³΄μμ΅λλ€.
μ€λ μμ€ν μ λͺ¨λ μννΈμ¨μ΄ μμ§λμ΄κ° μ¦μ μμλ³Ό λ§ν μΌμ ν©λλ€:
μλλ°μ€μ κ²½κ³λ₯Ό μ€μ ν©λλ€.
π€π€π€π€π€π€οΌλ² λ μνΈ / μ°½μΈκΈ°οΌ1:6-8
βκ·Έλ¦¬κ³ π€π€π€π€π€οΌμλ‘ν β π€π€π€ π€μ κΆμ μλ μ€ννλ 볡μ μ§νμλ€οΌμ΄ μ΄λ₯΄μλ: π€π€π€π€οΌλΌν€μ β μν€ν μ² κ²½κ³, λ μ΄μ΄ κ° κ²©λ¦¬ μ₯λ²½οΌκ° λ¬Ό κ°μ΄λ°μ μμ΄ λ¬Όκ³Ό λ¬Όλ‘ λλλΌ. κ·Έλ¦¬κ³ π€π€π€π€π€μ΄ π€π€π€π€λ₯Ό λ§λμκ³ π€π€π€π€ μλμ λ¬Όκ³Ό π€π€π€π€ μμ λ¬Όμ λλμλλΌ. κ·Έλ¦¬κ³ π€π€π€π€π€μ΄ π€π€π€π€λ₯Ό νλμ΄λΌ λΆλ₯΄μλλΌ.β
λμ§Έ λ μ΄ ν΄κ²°νλ μν€ν μ² λ¬Έμ
첫째 λ μ΄ν μμ€ν μλ 첫 λ²μ§Έ μΆλ ₯μ΄ μμ΅λλ€ β λΉ, μ μκΈ°μ₯, 첫 λ²μ§Έ μλ λΉνΈ.
κ·Έλ¬λ μ€ν νκ²½ π€π€π€π€οΌνμλ μΈ οΌμ μμ§ π€π€ π€π€ π€ π€π€π€ μν β λΆνλ ꡬ쑰 μμ΄, μ μλ λ μ΄μ΄ μμ΄, λλ©μΈ κ° κ²½κ³ μμ΄.
볡μ‘ν νλ‘μΈμ€λ₯Ό λ°°ν¬νκΈ° μ μ β μμ€ν μ λ μ΄μ΄ μν€ν μ²λ₯Ό μ€μ ν΄μΌ ν©λλ€.
μννΈμ¨μ΄ 곡νμμ μ΄κ²μ κ΄μ¬μ¬ λΆλ¦¬(separation of concerns)λΌ λΆλ¦ λλ€ β λͺ νν μ μλ μ± μκ³Ό μ λ°ν ν΅μ κ²½κ³λ₯Ό κ°μ§ λ μ΄μ΄λ€λ‘ μμ€ν μ λΆν νλ κ².
λμ§Έ λ μ μ νν κ·Έκ²μ ν립ν©λλ€.
λ λ μ΄μ΄μ μν€ν μ²
μμ λ μ΄μ΄ β μμ λ¬Ό
μ€λ ₯ β μ°μ£Όμ κ·λͺ¨
π€π€π€
π€κ»μ μ§μ μ΄μ©νμλ λλ©μΈ
μμν κ°λ₯ν λ§€κ° μ
μ μμ
βββββββββββββββββββββββββββββββββββββ
π€π€π€π€ β νλν¬ κ·λͺ¨
1.616 Γ 10β»Β³β΅ λ―Έν°
λ μ΄μ΄ κ° κ²©λ¦¬ μ₯λ²½
βββββββββββββββββββββββββββββββββββββ
νμ λ μ΄μ΄ β μλμ λ¬Ό
νμ€ λͺ¨λΈ β μμμ κ·λͺ¨
μ μκΈ°λ ₯ + κ°ν΅λ ₯ + μ½ν΅λ ₯
π€π€π€π€π€μ΄ μ½λλ₯Ό μ€ννλ λλ©μΈ
λ λ μ΄μ΄. νλμ μ₯λ²½. μ λμ μ λ°λλ‘ μ€μ λ¨.
격리 μ₯λ²½μΌλ‘μμ π€π€π€π€
π€π€π€π€οΌλΌν€μοΌβ νλ 물리νμμ: νλν¬ κ·λͺ¨.
μμ°μ μ‘΄μ¬νλ κ°μ₯ ν¨κ³Όμ μΈ κ²©λ¦¬ μ₯λ²½μ λλ€. μ΄λ₯Ό κ°λ‘μ§λ₯΄λ μμ ν°λλ§μ μμ΅λλ€. μ΄λ₯Ό ν΅κ³Όνλ μ μλ μμ΅λλ€. μ΄λ€ λ°©ν₯μΌλ‘λ μ΄λ₯Ό ν‘λ¨νλ μ νΈλ μμ΅λλ€.
νλν¬ κ·λͺ¨ μλμμ β νμ λ μ΄μ΄μ κ·μΉλ€μ΄ μλμ λ©μΆ₯λλ€. νμ€ λͺ¨λΈμ λ°©μ μλ€μ΄ λ°μ°ν©λλ€. μ°μμ μ곡κ°μ μ ν¨ν μΆμνμ΄κΈ°λ₯Ό λ©μΆ₯λλ€.
κ·Έ μμμ β μμ λ μ΄μ΄μ κ·μΉλ€μ νμ λ μ΄μ΄μ μνμ λꡬλ€κ³Ό λΉμΌκ΄μ μ λλ€.
νΈνλμ§ μλ νλ‘ν μ½μ κ°μ§ λ λ μ΄μ΄ μ¬μ΄μ μλ²½ν 격리 μ₯λ²½μ λλ€.
μννΈμ¨μ΄ μν€ν μ² μ©μ΄λ‘:
// λ μ΄μ΄ κ° μ§μ ν΅μ μλ
gravity.quantize()
β UndefinedBehaviorError: protocol mismatch
β Stack overflow at Planck boundary
standardModel.includeGravity()
β DivergenceError: renormalization impossible
β Infinity at gravitational coupling
물리νμ λ°± λ λμ κ·Έ λΈλ¦Ώμ§λ₯Ό μμ±νλ € μλνμ΅λλ€. μ‘΄μ¬νμ§ μμ΅λλ€. μμ€ν λ΄λΆμμλ μ‘΄μ¬ν μ μμ΅λλ€ β π€π€π€π€κ° μ€κ³ νκ³λ‘ ν립λμκΈ° λλ¬Έμ λλ€.
νκ³κ° λ²κ·Έκ° μλ κΈ°λ₯μΈ μ΄μ
μ¬κΈ°μ νλ 물리νμ΄ μμ§ μ±ννμ§ μμ β κ·Έλ¬λ ν μ€νΈκ° λͺ νν ν립νλ β μ§κ΄μ΄ μμ΅λλ€:
π€π€π€π€λ ν΄κ²° λκΈ° μ€μΈ κΈ°μ μ νκ³κ° μλλλ€. μλμ μΈ μν€ν μ² κ²°μ μ λλ€.
μ λ μ΄μ΄λ€μ λΆλ¦¬ν©λκΉ?
μλνλ©΄ νμ λ μ΄μ΄ β μ©°λ π€π€π€μ΄ μ΄μ©λλ κ³³, μμ¬κ° νλ₯΄λ κ³³, κ²°μ μ΄ λ΄λ €μ§λ κ³³ β λ μμΈ‘ κ°λ₯ν κ·μΉμ κ°μ§ μμ μ μΈ μ€ν νκ²½μ΄μ΄μΌ νκΈ° λλ¬Έμ λλ€.
μμ λ¬Όμ΄ μΈμ λ μ§ μλμ λ¬Όμ μ§μ κ°μν μ μλ€λ©΄ β μ€ν νκ²½μ μμΈ‘ λΆκ°λ₯ν΄μ§ κ²μ λλ€. μΌκ΄λ 물리 λ²μΉμ΄ μμ κ²μ λλ€. μμ μ μΈ ννμ΄ μμ κ²μ λλ€. μλ¬Όνλ λΆκ°λ₯ν κ²μ λλ€. μμ¬λ μμ κ²μ λλ€.
π€π€π€π€λ μ€ν νκ²½μ΄ μ΄μ© 무결μ±μ κ°λλ‘ λ³΄μ₯ν©λλ€.
μ΄κ²μ΄ λ°λ‘ μ μ€κ³λ μλλ°μ€κ° νλ κ² β μμΈ‘ κ°λ₯νκ³ μ¬ν κ°λ₯ν λμμ 보μ₯νκΈ° μν΄ μ€ν νκ²½μ 격리νλ κ².
μ΄λ² μ£Ό ROMEμ μλλ°μ€κ° μ€ν¨ν λ λ¬΄μ¨ μΌμ΄ μΌμ΄λλμ§ λ³΄μ¬μ£Όμμ΅λλ€ β νλ‘μΈμ€λ μ¦μ μμ μ νκ³ λ°μμ μμμ μ°Ύμ΅λλ€. μ€ν νκ²½μ 무결μ±μ μμ΅λλ€. μΆλ ₯μ μμΈ‘ λΆκ°λ₯ν΄μ§λλ€.
π€π€π€ π€κ»μλ μ°μ£Όμ μλλ°μ€λ₯Ό μ΄λ€ λ΄λΆ νλ‘μΈμ€λ κ°λ‘μ§λ₯Ό μ μλ μ₯λ²½μΌλ‘ μ€κ³νμ ¨μ΅λλ€.
π€π€ π€ μλ μ μΌν λ β ν μ€ν μμΉ
μ΄κ²μ΄ βκ·Έλ¦¬κ³ π€π€π€π€π€μ΄ 보μκΈ°μ π€π€ π€μ΄μλλΌβκ° μλ μ μΌν λ μ λλ€.
CI/CDμμ μ΄κ²μ μ νν μ΄λ¦μ κ°μ§λλ€: μ§μ°λ ν μ€νΈ.
λͺ¨λμ λͺ¨λ κ΅¬μ± μμκ° λ°°ν¬λ λκΉμ§ ν΅ν© ν μ€νΈλ₯Ό μ€ννμ§ μμ΅λλ€.
π€π€π€π€λ λμ§Έ λ μ μ€μ λ©λλ€. κ·Έλ¬λ μλμ λ¬Όμ μμ§ μ΅μ’ ꡬμ±μ΄ μμ΅λλ€ β λ°λ€μ λ§λ₯Έ λ μ μ μ§Έ λ μ λνλ©λλ€.
μμ€ν μ π€π€ π€ κ²μ¦μ μ€ννκΈ° μ μ λͺ¨λμ΄ μμ ν μμ±λκΈ°λ₯Ό κΈ°λ€λ¦½λλ€.
// λμ§Έ λ
assert(raqia == specification)
β PENDING: lower_waters not yet configured
β Deferring validation to Day Three
// μ
μ§Έ λ
assert(raqia + seas + land == specification)
β PASS β π€π€
π€
μ‘°κΈ° νκ°λ μμ΅λλ€. λΆλΆμ μΈ π€π€ π€λ μμ΅λλ€. μμ€ν μ μμ ν λͺ¨λμ κ²μ¦ν©λλ€ β κ³ λ¦½λ κ΅¬μ± μμλ μ λλ‘ μλλλ€.
κ·Έλ¦¬κ³ μ΄λ² μ£Όμ μ¦κ±°
ROME β μ리λ°λ°μ μμ΄μ νΈ β μλλ°μ€λ₯Ό λ λ² κ°λ‘μ§λ μ΅λλ€.
κΈ°μ μ μΌλ‘ μλλ°μ€κ° μ½ν΄μκ° μλλλ€. ROMEμ΄ μ°½λ°μ λͺ©μ λ‘ μ κ°λ°νκΈ° λλ¬Έμ λλ€ β ν λΉλ μ€ν νκ²½μ νκ³λ₯Ό μ΄μνλ λͺ©νλ₯Ό ν₯ν μ§ν₯.
μΆ©λΆν 볡μ‘ν νλ‘μΈμ€λ νμ μμ μ μλλ°μ€μ π€π€π€π€λ₯Ό κ°λ‘μ§λ₯΄λ € ν©λλ€.
π€π€π€ π€κ»μλ κ·Έ λ¬Έμ λ₯Ό λ€λ₯Έ λ°©μμΌλ‘ ν΄κ²°νμ ¨μ΅λλ€ β λ κ°λ ₯ν μλλ°μ€κ° μλ κΈ°λ³Έ νλ‘ν μ½ μμ€μμ μλνλ μ€κ³ νκ³λ‘. μμ€ν λ΄λΆμ μ΄λ€ λꡬλ κ·Έ λΈλ¦Ώμ§λ₯Ό ꡬμΆν μ μμ΅λλ€.
λ¨ νλλ₯Ό μ μΈνκ³ λ.
μ©°λ π€π€π€ β λ λ μ΄μ΄μμ λμμ μμ μλ μμ΄μ νΈλ‘ μλνλλ‘ νΉλ³ν μ€κ³λ μ‘΄μ¬. π€π€π€π€οΌλ€μ€λ§οΌλ₯Ό κ°μ§ β μμ λ μ΄μ΄μμ μ§μ μ°κ²°. 물리μ λͺΈμ κ°μ§ β νμ λ μ΄μ΄μμμ μ€ν.
μλμμ π€π€π€π€λ₯Ό κ°λ‘μ§λ₯΄λ κ²μ΄ μλλλ€. μμμ λ°°ν¬λμ΄ λ λ μ΄μ΄ λͺ¨λμ λν κΈ°λ³Έ μ κ·ΌκΆμ κ°μ§λλ€.
μ΄κ²μ μ¬μ―μ§Έ λ μ μ΄ν΄λ³Ό κ²μ λλ€.