νλ‘κ·Έλλ° μΈμ΄ μμ
----
----
μμ μ 보 ¶
κ΅μ: κΉμ±μ‘° κ΅μλ μμ
ννμ΄μ§
μμ
λ΄μ©: νλ‘κ·Έλλ° μΈμ΄μ ꡬν & ꡬμ±μμμ λν μ λ°μ μ΄ν΄.
κ΄λ ¨ νμ΄μ§ ¶
μ°Έκ³ μλ£ ¶
μΆμ² μμ
μμ μ μλ―Έ
λΉλ‘ "μλ μΈμ΄"μΉΈμ λμ¬μ― μ΄μμ μΈμ΄λ₯Ό μ€μ€μ΄ μ μ΄λ£μ μ μμ§λ§, μ»΄ν¨ν° 곡νκ³Όλ₯Ό λ€λλ©΄μ "μ λ§ μλ" μΈμ΄λ νκ°μμ νμ¬ μ ννλ μΈμ΄ νλ λ μ λμ΄λ€. μΌλ¨ μ£Όλ³ μ¬κ±΄μ΄ λ€λ₯Έ μΈμ΄λ₯Ό 곡λΆν μ¬μ λ₯Ό νλ½νμ§ μκ³ , μ΄κ±Έ κ²©λ €, κ³ λ¬΄νλ μ¬λμ΄ μ무λ μλ€λ κ²μ΄ λ¬Έμ λ€. λλ ν κ² μμ΄, κ΅κ³Όκ³Όμ μμ CμΈμ΄λ₯Ό μλ°λ‘ λ체νλ κ²λ§μΌλ‘ "μ°λ¦¬ νκ΅ μ μ°νκ³Όλ λ―Έλμ§ν₯μ μ΄κ³ μμ λκ°λ..."μ΄λΌλ μ μ 문ꡬλ₯Ό λ΄κ±°λ κ²μ 보면 μ λ§ μνκΉμΈ λΏμ΄λ€. μ MITμμλ μ μΌ μ²μ κ°λ₯΄μΉλ μΈμ΄λ‘ Schemeμ λͺλ
μ§Έ κ³ μνκ³ μμκΉ.
νλ‘κ·Έλλ° μΈμ΄λ₯Ό λ°°μ°λ κ²μ μ¬κ³ μ ννμ λ°©μμ νλ λ λ°°μ°λ κ²μ΄λ€. λ°λΌμ, μ€μ¬ ν΄λΉ μΈμ΄λ‘ νλ‘κ·Έλλ°μ ν κΈ°νκ° λ³λ‘ μλ€κ³ ν΄λ, νμ΄ν μΈμ΄λ₯Ό νλ λ λ°°μ°λ κ²μ κ°μΉμλ μΌμ΄λ€. λμμ λ¬΄μ¨ μΈμ΄λ₯Ό λ°°μ°λλ, μ΄λ€ μ νμ€λ₯Ό μ΅νλλλ κ²μ ν¬κ² μ€μνμ§ μλ€. μΈμ΄λ λ³νκ³ μ¬λ©Ένκ³ μ μνλ©°, μ νλ λ°λλ€. κ·Έλ³΄λ€ κ·Έλ° μΈμ΄ μ λ³μ κΉλ €μλ λ€μν ν¨λ¬λ€μμ μ νκ³ μΆ©λΆν μ΄ν΄νκ³ μ μ©ν μ μμ΄μΌ νλ€. νμ§λ§ μ΄κ² κ°λ₯νλ €λ©΄ ꡬ체μ μΈ μΈμ΄λΌλ μ±λμ ν΅νμ§ μμ μκ° μλ€.
κ·Έλ¬λ―λ‘, μ΄λ° ProgrammingLanguageClassκ° μ€μνλ€. μ΄ μμ
μ μ νλ©΄ λ€λ₯Έ ν¨λ¬λ€μμ λ€μν μΈμ΄λ₯Ό μ ν κΈ°νκ° κ±°μ μ 무νλ€. μμ μ λͺ¨κ΅μ΄κ° μλ°μλ€λ©΄, LISPμ Prolog, ICON, Smalltalk λ±μ μ νκ³ λμ λͺ μ°¨μ λμ΄μ§ μμ μ μλ°νΈ(Kungfuμ λ³νν)λ₯Ό λ°κ²¬ν μ μμ κ²μ΄λ©°, μλ°μ μμμ μ΄νΌκ³ λ¬Έμ μ μ μ°ννκ±°λ μμ νλ μ§μ ν λꡬ주μμ κΈ°μ¨μ λ§λ½ν μ μμ κ²μ΄λ€. νκ°μ§ μΈμ΄μ λ
Έμκ° λμ§ μλ κΈΈμ λ€μν μΈμ΄λ₯Ό λΉκ΅ νλ¨, νλͺ
νκ³ μ νμ μΈ μ¬μ©μ ν λ₯λ ₯μ κΈ°λ₯΄λ λ² μΈμ μλ€. --κΉμ°½μ€
κ°μ₯ λ§μ΄ μ°μ΄λ μΈμ΄λ§ λ°°μ°λ©΄ λμ§ μλκ°
κΌ κ·Έλ μ§λ μμ΅λλ€. λ€μν μΈμ΄λ₯Ό λ°°μ°κ³ , νΉν νλ₯ν λμμΈλ μΈμ΄(κ° μμλ€μ΄ μλ‘ μμΆ©νμ§ μκ³ μ κΈ°μ μΌλ‘ μ‘°νλμ΄ νλμ 건κ°ν μνκ³λ₯Ό μ΄λ£¨λ)λ₯Ό μΆ©λΆν μ νκ² λλ©΄, μ무리 λ¬Έμ μλ μΈμ΄λ₯Ό μ°κ² λλλΌλ "μ νμ "μΈ μ¬μ©μ΄ κ°λ₯ν΄μ§λλ€.
"Students usually demand to be taught the language that they are most likely to use in the world outside (FORTRAN or C). This is a mistake. A well taught student (viz. one who has been taught a clean language) can easily pick up the languages of the world, and he or she will be in a far better position to recognize their bad features as he or she encounters them."
-- C. H. Lindsey, History of Algol 68. ACM SIGPLAN Notices, 28(3):126, March 1993.
----
κ°μΈμ μΌλ‘ νκΈ°μ€ κΈ°μ΅μ λ¨λ λΆλΆμ μ£Όλ‘ λ ν¬νΈλ€μ μν΄ μ΄λ£¨μ΄μ‘λ€. Recursive Descending Parser λ§λ€μλκ±°λ μΈμ΄ νκ°μ (C++, Java, Visual Basic) μμ±νλκ². μμ μκ°λλ μμ§ν λ무 μ‘Έλ €μ; κΉμ±μ‘° κ΅μλμ΄ λΆμνλ¨ μκ°μ΄ λ€ μ λμλ€λ -_-; (SEμͺ½ μκ°λΉ PPT μ§νλμ΄ 60μ₯μΌλ PLμ΄ 3μ₯μ΄μ¬μ κ·Ήκ³Ό κ·Ήμ λ¬λ Έλ€λ;) μμ μ€λͺ κ³Ό λ€λ₯΄κ², μμ μκ°λλ λͺ λ Ήν μΈμ΄ νλ¬λ€μμ μΈμ΄λ€λ§ μ€λͺ λ¨.
μμ
μκ°λ κΈ°μ΅λλ건 μΈμ λ λΉλμ λμμΈ Fortran, λͺ¨λ κ² μλ²½ν Ada, κ·Έ μ΄ν μ€μ©μ μΈ μ ν C++, Java. --μμ²
μμ²μ΄ νλ§μ λμ.. μ μ§ λͺ¨λ₯΄κ².. μ± λ§ μ½μ΄ μ£Όλ λ―ν.. κΈ°λΆμ΄ λ€μ΄.. μ λ§ μ€λ€.. λ νμ΄ λμλ―.. νΌμ 곡λΆν λ μ¬λ°κΈ°λ§ νλλ°.. κ΅μλ μμ λ€μλλ μμ΄λ κ² μ‘Έλ¦¬λμ§.. -_-a -- μν
----
μ€μλνκ΅ μ»΄κ³΅κ³Όμ μ»΄νμΌλ¬ μμ μ΄ νκ°λλ κ²½μ°κ° λ§μλ°, μ»΄νμΌλ¬μ PL λ μ€ νλλ νλ‘κ·Έλλ¨Έκ° λ건, μ μ°νμκ° λ건 λ°λμ νμν κ΅μμ΄λ€.
μ»΄νμΌλ¬λ₯Ό λ
ννλ €λ μ¬λλ€μ μ»΄νμΌλ¬μΆμ²μμ μ°Έκ³ .
----
무μ¬κ²°μ μ°κ³ μλ νλ‘κ·Έλ¨ μΈμ΄μ λ΄λΆλ₯Ό λ°°μΈ μ μλ μκ°μ λλ€. κ°μΈμ μΌλ‘λ μ΄λ° μ λ° μ리λ₯Ό νλμ μμκ° λλ§λ€ μ¬λ―ΈμμκΈ° λλ¬Έμ μμ μκ°λ μ¬λ―Έμμμ΅λλ€. (μ λ§ κ°μ΄ λ£λ μ΄λ€μ μ‘Έλ¦° λͺ¨μμ΄λλΌκ³ μ.) κ³Όμ μμ μμ²λ μ€μλ₯Ό λ§μ΄ μ μ§λ¬μ μνκΉμ§λ§, κ³Όμ μ체λ κ°μ λ΄μ©κ³Ό λ§€μ° μ μ νκ² μ°κ²°λ κ²μ΄λΌκ³ μκ°ν©λλ€.
μμ¬μ΄ λΆλΆμ νλ‘κ·Έλ¨ μΈμ΄λ‘ μ΄λ κ³Όλͺ©μμλ λΆκ΅¬νκ³ , μ€λͺ μ λΉμ€μ λ§μ΄ μ°μ΄λ μΈμ΄μΌμλ‘ λμλ μ μ λλ€. ν¨μνμΈμ΄(FunctionalLanguage)λ κΈ°λ§ κ³ μ¬ λ°λ‘ μ μκ°μ ν μκ°λ§μ λλ΄λ €λ€κ°, κ·Έλλ§ λλ΄μ§λ λͺ»νκ³ μμ½ λΆλΆλ§ νμμ΅λλ€. κ·Έ λ°μ μ’ λ₯μ λν΄μλ κ±°μ μ μ°¨μ μΈμ΄, νΉν Cκ³μ΄ μΈμ΄λ₯Ό μ€λͺ νλ€κ° λΆμ° μ€λͺ μΌλ‘ λμ€λ κ²½μ°κ° λ§μμ΅λλ€. λ Όλ¦¬νμΈμ΄(LogicLanguage)μ λν μ€λͺ μ κ±°μ λͺ» λ΄€μ΅λλ€. μ΄μ°¨νΌ μ°μ§ μμ μΈμ΄λΌκ³ μκ°ν΄μμΌκΉμ.--Leonardong
----
see also SoftwareEngineeringClass
- Programming Language Pragmatics by Michael L. Scott : μ΄μ κΉμ§ λμ¨ νλ‘κ·Έλλ° μΈμ΄λ‘ μμ μ€ λͺ μκ°λ½ μμ κΌ½νλ λͺ
μ .
- Programming Language Processors In Java : Compilers and Interpreters by David A. Watt & Deryck F. Brown
μμ μ μλ―Έ
----
κ°μΈμ μΌλ‘ νκΈ°μ€ κΈ°μ΅μ λ¨λ λΆλΆμ μ£Όλ‘ λ ν¬νΈλ€μ μν΄ μ΄λ£¨μ΄μ‘λ€. Recursive Descending Parser λ§λ€μλκ±°λ μΈμ΄ νκ°μ (C++, Java, Visual Basic) μμ±νλκ². μμ μκ°λλ μμ§ν λ무 μ‘Έλ €μ; κΉμ±μ‘° κ΅μλμ΄ λΆμνλ¨ μκ°μ΄ λ€ μ λμλ€λ -_-; (SEμͺ½ μκ°λΉ PPT μ§νλμ΄ 60μ₯μΌλ PLμ΄ 3μ₯μ΄μ¬μ κ·Ήκ³Ό κ·Ήμ λ¬λ Έλ€λ;) μμ μ€λͺ κ³Ό λ€λ₯΄κ², μμ μκ°λλ λͺ λ Ήν μΈμ΄ νλ¬λ€μμ μΈμ΄λ€λ§ μ€λͺ λ¨.
μμ²μ΄ νλ§μ λμ.. μ μ§ λͺ¨λ₯΄κ².. μ± λ§ μ½μ΄ μ£Όλ λ―ν.. κΈ°λΆμ΄ λ€μ΄.. μ λ§ μ€λ€.. λ νμ΄ λμλ―.. νΌμ 곡λΆν λ μ¬λ°κΈ°λ§ νλλ°.. κ΅μλ μμ λ€μλλ μμ΄λ κ² μ‘Έλ¦¬λμ§.. -_-a -- μν
----
μ€μλνκ΅ μ»΄κ³΅κ³Όμ μ»΄νμΌλ¬ μμ μ΄ νκ°λλ κ²½μ°κ° λ§μλ°, μ»΄νμΌλ¬μ PL λ μ€ νλλ νλ‘κ·Έλλ¨Έκ° λ건, μ μ°νμκ° λ건 λ°λμ νμν κ΅μμ΄λ€.
----
무μ¬κ²°μ μ°κ³ μλ νλ‘κ·Έλ¨ μΈμ΄μ λ΄λΆλ₯Ό λ°°μΈ μ μλ μκ°μ λλ€. κ°μΈμ μΌλ‘λ μ΄λ° μ λ° μ리λ₯Ό νλμ μμκ° λλ§λ€ μ¬λ―ΈμμκΈ° λλ¬Έμ μμ μκ°λ μ¬λ―Έμμμ΅λλ€. (μ λ§ κ°μ΄ λ£λ μ΄λ€μ μ‘Έλ¦° λͺ¨μμ΄λλΌκ³ μ.) κ³Όμ μμ μμ²λ μ€μλ₯Ό λ§μ΄ μ μ§λ¬μ μνκΉμ§λ§, κ³Όμ μ체λ κ°μ λ΄μ©κ³Ό λ§€μ° μ μ νκ² μ°κ²°λ κ²μ΄λΌκ³ μκ°ν©λλ€.
μμ¬μ΄ λΆλΆμ νλ‘κ·Έλ¨ μΈμ΄λ‘ μ΄λ κ³Όλͺ©μμλ λΆκ΅¬νκ³ , μ€λͺ μ λΉμ€μ λ§μ΄ μ°μ΄λ μΈμ΄μΌμλ‘ λμλ μ μ λλ€. ν¨μνμΈμ΄(FunctionalLanguage)λ κΈ°λ§ κ³ μ¬ λ°λ‘ μ μκ°μ ν μκ°λ§μ λλ΄λ €λ€κ°, κ·Έλλ§ λλ΄μ§λ λͺ»νκ³ μμ½ λΆλΆλ§ νμμ΅λλ€. κ·Έ λ°μ μ’ λ₯μ λν΄μλ κ±°μ μ μ°¨μ μΈμ΄, νΉν Cκ³μ΄ μΈμ΄λ₯Ό μ€λͺ νλ€κ° λΆμ° μ€λͺ μΌλ‘ λμ€λ κ²½μ°κ° λ§μμ΅λλ€. λ Όλ¦¬νμΈμ΄(LogicLanguage)μ λν μ€λͺ μ κ±°μ λͺ» λ΄€μ΅λλ€. μ΄μ°¨νΌ μ°μ§ μμ μΈμ΄λΌκ³ μκ°ν΄μμΌκΉμ.--Leonardong
----
see also SoftwareEngineeringClass