μ΅κ·Όμ CACM κΈ°μ¬ [1]μμ, μ μλ λ¨κ³λ³ κΈ°λ₯μ λν ꡬνμ μ μν©λλ€ . κ·Έλ€μ μ μλ €μ§ κ²μ²λΌμ΄ μ©μ΄λ₯Ό μ¬μ©νλ©°, μ΄λ€ μΈκΈλ λͺ λ°±ν μκ°μ²λΌ 보μ΄μ§ μμ΅λλ€.
κ·Έλ€μ μ§§μ μ€λͺ μ μ 곡ν©λλ€ (κ°μ‘° κ΄μ°κ³Ό μ°Έμ‘° λ²νΈκ° λ³κ²½λμμ΅λλ€. μλλ 22μ λλ€)
νλ‘κ·Έλ¨ μμ±κ³Ό κ΄λ ¨νμ¬ Taha and Sheard [2]μ μν΄ ν립 λ λ€λ¨κ³ νλ‘κ·Έλλ° (MSP, μ§§κ² μ€ν μ΄μ§) μ νλ‘κ·Έλλ¨Έκ° νλ‘κ·Έλ¨ ννμ νκ°λ₯Ό νκΈ° λ¨κ³λ‘ λͺ μ μ μΌλ‘ μ§μ°μν¬ μμκ²νλ€ (λ°λΌμ, μ€ν μ΄μ§). νμ¬ λ¨κ³λ ν¨κ³Όμ μΌλ‘ λ€μ λ¨κ³μ νλ‘κ·Έλ¨μ ꡬμ±νκ³ μ€ννλ μ½λ μμ±κΈ°λ‘μ μμ©νλ€.
κ·Έλ¬λ Tahaμ Sheardλ λ€μκ³Ό κ°μ΄ μλλ€.
λ€λ¨κ³ νλ‘κ·Έλ¨μ λͺ¨λ λμΌν νλ‘μΈμ€ λ΄μμ μ½λ μμ±, μ»΄νμΌ λ° μ€νκ³Ό κ΄λ ¨λ νλ‘κ·Έλ¨μ λλ€. λ€λ¨κ³ μΈμ΄λ λ€λ¨κ³ νλ‘κ·Έλ¨μ ννν©λλ€. μ€ν μ΄μ§ λ° κ²°κ³Όμ μΌλ‘ λ€λ¨κ³ νλ‘κ·Έλλ°μ λ°νμ ν΄μ μ€λ² ν€λλ₯Ό μ§λΆνμ§ μλ λ²μ© μ루μ μ νμμ±μ ν΄κ²°ν©λλ€.
μ€ν μ΄μ§μ΄ ν¨κ³Όμ μ΄λΌλ κ²μ 보μ¬μ£Όλ μ€λλ μμ μ λν λͺ κ°μ§ μΈκΈλ³΄λ€ κ°λ μ΄ λ μ€λλμλ€λ κ²μ μμν©λλ€. μ©μ΄ μ체μ λν μ°Έμ‘°λ μ 곡νμ§ μμ΅λλ€.
μ΄λ¬ν μ§μ μ λͺ¨μλμ§ μμΌλ©΄ μ§κ΅νλ κ²μ²λΌ 보μΈλ€. μλ§λ Rompfμ Oderskyκ° μ΄ κ²μ Tahaμ Sheardκ° μ μν κ²μ μ μ©ν κ²μΌμ§λ λͺ¨λ₯΄μ§λ§, λκ°μ λ€λ₯Έ κ΄μ μΌ μλ μμ΅λλ€. κ·Έλ€μ μ€μν μ μ νλ‘κ·Έλ¨μ΄ λ°νμμ μμ μ μΌλΆλ₯Ό λ€μ μμ±νλ€λ μ μ λμνλ κ² κ°μ§λ§, κ·Έκ²μ΄ νμν λ₯λ ₯μΈμ§ μΆ©λΆν λ₯λ ₯μΈμ§λ λͺ¨λ₯΄κ² μ΅λλ€.
κ·Έλμ, 무μμνλ€ μ€λΉ μ΄λ¬ν λ§₯λ½μμ μ€λΉμ ν΄μμ κ°κ°μ λκΉ? μ΄ μ©μ΄λ μ΄λμμ μ λν©λκΉ?
- κ²½λ λͺ¨λ ν μ€ν μ΄μ§ : T. Rompfμ M. Odersky (2012)μ λ°νμ μ½λ μμ± λ° μ»΄νμΌ λ DSL μ λν μ€μ©μ μΈ μ κ·Ό λ°©μ
- W. Tahaμ T. Sheard (2000)μ λͺ μ μ μ£Όμ μ μ΄μ©ν MetaML λ° λ€λ¨κ³ νλ‘κ·Έλλ°
λ΅λ³
λ΄κ° μλ ν, λ¨κ³λ³ κ³μ° μ΄λΌλ μ©μ΄ λ μ΄ λ Όλ¬Έ μμ Bill Scherlisμ μν΄ μ²μ μ¬μ©λμμ΅λλ€ . κ·Έ μ΄μ μλ β λΆλΆ νκ° β λΌλ μ©μ΄ κ° κ±°μ κ°μ κ°λ μΌλ‘ μ¬μ©λμμ§λ§ λ¨κ³μ κ³μ°μ μμ΄λμ΄λ λ―Έλ¬νκ² λ€λ¦ λλ€. λ μμ΄λμ΄λ λͺ¨λ Kleeneμ Smn μ 리 μ κ΄λ ¨μ΄ μμ΅λλ€.
λ μΈμ μ ν¨μ μ΄ μμ§λ§ νλμ μΈμ μΈ m μ μκ³ μλ€λ©΄ 첫 λ²μ§Έ μΈμμ λν μ§μμ μ¬μ©νμ¬ ν¨μ κ³μ°μ λ°λ‘ μν ν μ μμ΅λλ€. κ·Έλ° λ€μ λ¨μ κ²μ κ³μ°μ΄ λ λ²μ§Έ μ μμλ μΈμμλ§ μμ‘΄ νλ ν¨μ Ο m ( n ) μ λλ€.
Ο(m,n)m
Οm(n)
Οm(n)
Ο
m
n
Οβ²
m
Οm
n
Οβ²
m
Οm
Οm
Ο
Οβ²
- λ¨κ³λ³ ν¨μλ₯Ό μ μνλ λ°©λ²?
- λ¨κ³μ ν¨μλ₯Ό μ μνκΈ° μν΄ μ΄λ€ νλ‘κ·Έλλ° μΈμ΄ λ° μ ν μμ€ν μ μ¬μ©ν΄μΌν©λκΉ?
- κ·Έλ¬ν μΈμ΄μ μλ―Έλ 무μμ λκΉ?
- λ¨κ³λ³ κΈ°λ₯μ μΌκ΄μ±κ³Ό μ νμ±μ μ΄λ»κ² 보μ₯ν©λκΉ?
- λ¨κ³λ³ ν¨μλ₯Ό μλ λλ λ°μλμΌλ‘ ꡬμ±νλ λ° μ μ©ν κΈ°μ μ 무μμ λκΉ?
- μ°λ¦¬λ κ·Έλ¬ν κΈ°μ μ μ νμ±μ μ΄λ»κ² μ¦λͺ ν©λκΉ?
λ¨κ³λ³ κ³μ°μ μ€μ λ‘ λ§€μ° μ€μν©λλ€. μ€μ λ‘ λͺ¨λ μ»΄νμΌλ¬λ μ€μ λ‘ λ¨κ³μ κ³μ°μ λλ€. μμ€ νλ‘κ·Έλ¨μ΄ μ£Όμ΄μ§λ©΄ λ³νλκ³ μ΅μ ν λ λμ νλ‘κ·Έλ¨μ ꡬμ±νμ¬ μ€μ μ λ ₯μ μ·¨νκ³ κ²°κ³Όλ₯Ό κ³μ°ν μ μμ΅λλ€. μ°λ¦¬λ μ¬λ¬ λ¨κ³λ₯Ό μ κΈλ§νκ³ μ¬λ°λ₯Έ μκ°μ μ¬λ°λ₯Έ μμ μ μνν΄μΌνκΈ° λλ¬Έμ μ€μ λ‘ λ¨κ³μ κ³μ° νλ‘κ·Έλ¨μ μμ±νλ κ²μ μ΄λ ΅μ΅λλ€. μ»΄νμΌλ¬λ₯Ό μμ±ν λͺ¨λ μ¬λλ€μ κ·Έλ¬ν λ¬Έμ λ‘ μ΄λ €μμ κ²ͺμμ΅λλ€. λ€λ₯Έ νλ‘κ·Έλ¨μ μμ±νλ νλ‘κ·Έλ¨μ μμ±νλ κ²λ μ΄λ ΅μ΅λλ€. κΈ°κ³ μΈμ΄ νλ‘κ·Έλ¨ (μ»΄νμΌλ¬), SQL 쿼리 (λ°μ΄ν°λ² μ΄μ€ μ‘°μ) λλ HTML / μλ² νμ΄μ§ / μλ° μ€ν¬λ¦½νΈ μ½λ (μΉ μμ© νλ‘κ·Έλ¨) λ° μλ§μ λ€λ₯Έ μμ© νλ‘κ·Έλ¨ μΌ μ μμ΅λλ€.
λ΅λ³
λ€λ₯Έ λ΅λ³μ κΈ°μ μ μΌλ‘ μ ννμ§λ§ μ»΄ν¨ν° κ³Όνμκ° λ¨κ³μ κΈ°λ₯μ κ΄μ¬μ κ°λ μ΄μ λ₯Ό μ ννκ² μ΄ν΄νμ§ λͺ»νλ€κ³ μκ°ν©λλ€.
λ¨κ³μ κΈ°λ₯μ μμ±νμ¬ νλ‘κ·Έλ¨μ μμ±νλ νλ‘κ·Έλ¨μ μ μν©λλ€. νλμ μ€μ μΈμ΄ μ΄λ‘ μ ν° λͺ©ν μ€ νλλ μ μ¬μ μ¬μ¬μ©μ μ΅λννλ κ²μ λλ€. μ°λ¦¬λ μ μ©ν ν¨μμ κ°μ²΄ μΌλΏλ§ μλλΌ κ³ μ°¨μμ κ±΄μΆ κ΅¬μ‘°λ₯Ό μ 곡ν¨μΌλ‘μ¨ νλ‘κ·Έλλ¨Έλ₯Ό λλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μμ±ν μ μκΈ°λ₯Ό μν©λλ€.
λͺ¨λ μμ©κ΅¬ μ½λλ₯Ό μ κ±° ν μ μλ€λ©΄ μ’μ κ²μ λλ€. μ¬μ μΈμ΄λ₯Ό μ΅μν ν μ μμ΄μΌν©λλ€. μλ₯Ό λ€μ΄, μ£Όμ΄μ§ μ€λ λ λμμΈμΌλ‘ λ€λ₯Έ λμ€ν¨μ²μ ν΅μ νλ μ΄λ²€νΈ μ€μ¬ λμ€ν¨μ²λ₯Ό μνλ€λ©΄,μ΄λ₯Ό μ»΄ν©νΈνκ² μ§μ ν μ μμ΄μΌνλ©° λͺ¨λ IO 리μ€λμ ν μ€λΈμ νΈ λ° μ€λ λ μ°κ²°μ ν΄λΉ μ€νμμ λΉλ ν μ μμ΄μΌν©λλ€.
λλ©μΈ μΈμ΄λ μ°λ¦¬κ° μ°Ύκ³ μλ κ°κ²°ν νν μΈ κ²½ν₯μ΄ μμ΅λλ€. μ¬λλ€μ΄ λλ©μΈμμ νλμ μΌν λ, κ·Έλ€μ΄ μ¬μ©νλ μΈμ΄λ λλΆλΆμ μ 보 μ€λ³΅μ μμ κ³ λ¨μν μ¬μμ΄λλ κ²½ν₯μ΄ μμ΅λλ€. λ°λΌμμ΄ μ€λΉ μ΄λ‘ μ λλ©μΈ μΈμ΄μμ μ€ν μΈμ΄λ‘μ λ²μ μμ€ν μ΄λλ κ²½ν₯μ΄ μμ΅λλ€.
μ»΄νμΌλ¬λ κΈ°μ μ μΌλ‘λ λ¨κ³μ μ΄μ§λ§ λͺ©νκ° μμ΅λλ€. νλ μ€ν μ΄μ§μ λͺ©νλ μ¬μ¬μ©μ κ·Ήλννκ³ κ°λ₯ν κ²½μ° νλ‘κ·Έλ¨ κ΅¬μ±μ μλννλ νλ‘κ·Έλ¨μ ꡬμΆνλ νλ‘κ·Έλ¨μ ꡬμΆνλ κ²μ λλ€. νλ‘κ·Έλ¨μ κΈ°λ₯ μꡬ μ¬νμ΄ νλ‘κ·Έλ¨μ΄λΌλ©΄ κ·Έκ²μ μ’μ κ²μ λλ€.
Czarneckiμ Eisenecker (ISBN-13 : 978-0201309775)μ βGenerative Programmingβμ μ°Έμ‘°νμμμ€.
λ΅λ³
λ¬Έμ λ κΈ°μ¬ [1]μ λν κΈ°μ μ μΈ κ΄μ μμ μ 곡λ©λλ€. κ³ λ €μ€μΈ λ¬Έμ λ μΌλ° μ½λμ νΉμ μ½λ μ¬μ΄μ κΈ΄μ₯ μμμ λλ€.
νλ‘κ·Έλ¨μ λ²μ© λλ νΉμ λͺ©μ μΌλ‘ μμ± λ μ μμ΅λλ€. λ²μ© μ½λλ λ€μν μν©μμ μ¬μ©ν μ μλ€λ μ₯μ μ΄ μμ§λ§, νΉμ λͺ©μ μ½λλ μ€ν νκ²½μ κ³ μ ν νΉμ±μ νμ©νμ¬ μ¬μ¬μ© κ°λ₯μ±μΌλ‘ ν¨μ¨μ±μ μ»λ λ°©μμΌλ‘ μμ± λ μ μμ΅λλ€.
λ¬Όλ‘ μ°λ¦¬λ μ΄λ¬ν κΈ΄μ₯μ ν΄κ²°νκ³ μν©λλ€. κ·Έκ²μ μΌλ°μ μΈ μ½λ μ ꡬ체μ μΈ κ΅¬νμ λλ€.
μ°λ¦¬λ λ€μκ³Ό κ°μ μ§λ¬Έμ ν μ μμ΅λλ€ : μΌλ°μ μΈ λͺ©μ μ μν΄ μ½λλ₯Ό μμ±νλ κ²μ΄ κ°λ₯νκ°? κ·Έλ¬λ μ€ν μ€μ νμ¬ μν©μ μλμΌλ‘ νΉνλλλ‘ν©λκΉ?
μ΄κ²μ (μΌλ°) νλ‘κ·Έλ¨μ΄ νΉμ μν©μ λ§κ² λ°νμμ μ€μ€λ‘ μμ± (μ¬)λλλ‘νλ μμ΄λμ΄λ₯Ό λ³μμ΅λλ€.
κ²°κ³Όμ μΌλ‘ μ€μν μ°κ΅¬ λ°©ν₯μ νλ‘κ·Έλλ¨Έκ° λ²μ© μ½λλ₯Ό μμ±ν λ€μ λ°νμμ κ³ μ±λ₯ νΉμ μ½λλ‘ μ ννκ³ ν¨μ¨μ μΌλ‘ μ ν ν μμλ μΈμ΄ λ° μ»΄νμΌλ¬ κΈ°μ μ λν κ²μμ λλ€.
Javaμ JITκ° μ’μ μλΌκ³ μκ°ν©λλ€. ν κ°μ§ νΉλ³ν μμ΄λμ΄λ λ€λ¨κ³ νλ‘κ·Έλλ°μ΄λ©° Leeλ λ€μκ³Ό κ°μ΄ μ€λͺ ν©λλ€.
μ΄ μ°κ΅¬ λΌμΈμμ ν΅μ¬ μμ΄λμ΄ μ€ νλλ μ€λΉ κ°λ μ λλ€. μ°λ¦¬λ μΌλ ¨μ λ¨κ³λ‘ μ§νλλ νλ‘κ·Έλ¨μ μ€νμ μμν©λλ€. κ° λ¨κ³λ μ΄ν λ¨κ³μμ μ¬μ©λλ κ°μ κ³μ°ν©λλ€. κ·Έλ¬λ―λ‘ μ°λ¦¬κ° μ°Ύλ κ²μ νλ‘κ·Έλ¨ μ½λλ₯Ό μμ±νμ¬ μ΄λ»κ² λ μ΄λ¬ν λ¨κ³κ° λͺ ν ν΄ μ§λλ‘νλ κ²μ λλ€. μ΄κ²μ΄ λ¬μ±λλ©΄, μ°λ¦¬λ νκΈ° λ¨κ³ μ½λκ° μ΄κΈ° λ¨κ³μ κ³μ° κ²°κ³Όμ λν΄ μ΅μ νλλ μ½λ μμ±κΈ°λ‘ μ»΄νμΌλλλ‘ λ°°μ΄ ν μ μμ΅λλ€.
μ¦, βμ€ν μ΄μ§ (staging)βμ κ³μ° / μ€νμμ μμμ μλ³νλ μ μ ν κΈ°λ₯ / μ½λλ₯Ό 보λ λ°©λ²μΌλ‘, μ΄μ μμμ κ²°κ³Όλ₯Ό μλ©΄ λ¨μν λ μ μμ΅λλ€. λ¬Έμ μ 첫 λ²μ§Έ μΈμ©λ¬Έμμμ κ°μ΄ βμ§μ°βκ³μ°μ λ¨κ³λ₯Ό μ¬λ°λ₯΄κ² λΆλ¦¬νκΈ° μν΄ νμν λΆμμ© μΌ μ μμ§λ§ μμ μ΄ μλλλ€.
Rompfμ Oderskyλ λΉ λ₯Έ νΈλ¦¬μ λ³ν μ μλ‘λ€ μ μμ΅λλ€.
- μ¬μ°μ κ³ μ΄λμΉ : Peter Leeμ κΈ°μ μ κ΄μ (2012)