Programming Buttom-Up
언어 속 언어 EDSL

많은 개발자들은 생각을 한다. 그리고 그 생각들은 걸러져 널리 알려진다. 꼭 걸러져 좋은것만 알려지는 것은 아니겠지만 그렇다 할지라도 널리 알려진 생각들은 한번쯤 고려해볼만 하다.

얼마전 "애자일 이야기"에 들어갔는데 위와같은 글이 있었다. 처음에는 대수롭지 않게 여겼지만 두번째 볼때는 웬지 관심이 갔다. 그래서 관련자료로 링크되어 있는 글을 읽고 아울러 상향식 프로그래밍(Programming Buttom-Up)에 대한 글도 읽었다.

그래서 언어속의 언어를 만드는 상향식 프로그래밍에 대해 본 글에 대해 간단히 정리를 해 봤다.

프로그램이 커지면 나눌수밖에 없게 된다. 그러면 이때 어떻게 나누어야 하는가? 전통적인 접근방식은 top-down design을 따른다. 이 방식은 프로그램이 일곱 가지의 일을 해야 한다면 일곱 가지의 하위 루틴으로 나누고 첫번째 하위 루틴은 또 네가지의 일을 해야 하니까 네 가지의 루틴으로 나눈다. 이렇게 나누는 일을 반복하여 프로그램을 완성한다.

경험있는 Lisp프로그래머는 다른 방법으로 즉 buttom-up design이라고 불리는 원리에 따라 나눈다. Lisp에서는 프로그램을 만들려고 하면 이러저러한 연산이 Lisp에 있었으면 좋겠다는 생각을 하게 되고 그러한 것들을 만든 후에 실제 프로그램을 만들어 나가게 된다. 그리고 나른 부분들도 그렇게 해서 만들어 나간다. 언어와 프로그램은 같이 발전한다. 마침내 언어가 그 프로그램을 위해 디자인 된 듯 보이게 될 것이다. 결국 코드는 깨끗하고 작고 효율적이게 된다.

이것은 단지 같은 프로그램을 다른 순서에 따라 작성하는 것을 의미하지 않는다. buttom-up으로 일할 때 결국 마지막에는 대개 다른 프로그램이 된다. 하나로된 프로그램 대신 보다 추상적인 연산을 수행하는 큰 언어와 작은 프로그램을 얻게 된다. 이렇게 할때 몇몇 이점이 있다.
  1. 언어가 더 많은 일을 하여 프로그램이 더 작고 더 기민해지게 된다.
  2. 재사용성이 향상된다.
  3. 일기 쉬은 프로그램을 만든다.
  4. 코드의 패턴을 언제나 경계하게 만드는 원인이 되기 때문에 프로그램의 설계에 대한 생각이 더 뚜렷해지게 한다.
결국 Buttom-up방식으로 한다면 다른 언어를 사용해도 그만큼 효과가 있지만 Lisp는 그러한 사고의 틀을 잡히도록 도와주므로 Lisp로 연습하면 좋겠다는 것으로 결론을 내린다.

EDSL, Embedded Domain Specific Language은 특정영역에 국한된 언어를 기존의 언어 위에 만드는 것이다. 이것은 곳 일종의 추상화 라이브러리를 만들어서 그것을 사용하여 언어를 확장하는 것을 말한다. 결국은 Buttom-up 방식으로 프로그램을 만드는 것을 말한다. 이것에 대한 한가지 예가 Rake이다. 위 관련자료를 보면 더 많은 예를 제시하지만 일단은 요즘 루비에 관심이 있기 때문에 루비로 된 예가 눈에 띄었다.

Lisp는 함수형 언어이다. 비슷한 것으로 스킴이 있으며 또 ML이라는 것도 있다. Lisp가 그런 효과를 줄 수 있다면 ML도 그런 효과를 줄 수 있을 것이라는 생각이 든다. 대학교 2학년 2학기때 프로그래밍 언어론 수업을 들을 때 주로 ML프로그래밍에 대해 다루어졌고 그 사고로 훈련했던 기억이 있다. 이것이 프로그래밍 사고를 고치고 향상시켜 줄 수 있다는게 당시는 잘 이해가 안돼었는데, 아무래도 다시한번 ML을 둘러봐야겠다.

위 글에서 김창준씨는 이렇게 말했다.
개인적으로는 EDSL이라는 주제를 발견하고 거기에 심취한 이후로는 제가 과거에 짰던 코드들은 거의 대부분 부족한 점들이 많이 발견되더군요.
나 역시 그렇게 되지 않을까 싶다..
by 이한길 | 2006/04/28 19:39 | 다른 이야기들 | 트랙백(9) | 덧글(0)
트랙백 주소 : http://hangulee.egloos.com/tb/10354
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Ambien. at 2008/02/17 12:49

제목 : Ambien overnight.
Which is better ambien cr or lunestra. Ambien not working. Buy ambien 12.5 mgm overnight mail md consultation. Generic ambien. Ambien cr. Ambien hallucinations dizziness. Buy ambien 10....more

Tracked from Ephedrine pi.. at 2008/04/20 15:15

제목 : Ephedrine extra ephedrine faq.
Ephedrine. Vasopro ephedrine. Ephedrine hcl michigan....more

Tracked from Percocet. at 2008/04/30 06:01

제목 : Percocet vs lorcet for pain.
Buy percocet online. Percocet addiction. Difference between percocet and vicaden. Long term use of percocet. Percocet dangers of abuse. Percocet shipped cod no prior....more

Tracked from Buy valium c.. at 2008/05/02 02:48

제목 : Valium.
Valium....more

Tracked from at 2008/06/20 13:43

제목 : dog in nationwide insurance ad
saps.progressing incomes ...more

Tracked from Adderall xr. at 2009/05/05 10:12

제목 : Doctors adderall.
Adderall idiopathic edema. Dexadrine adderall comparison. Dosage and tolerance to adderall. Adderall....more

Tracked from Hydrocodone .. at 2009/05/14 08:17

제목 : Hydrocodone.
Hydrocodone. Hydrocodone side effects of withdrawal. Withdrawal frpm hydrocodone....more

Tracked from at 2009/07/14 06:02

제목 :
phenomena clowns Harmonistic meetinghouse ...more

Tracked from at 2009/07/29 02:43

제목 :
maximizing tangible leftmost:...more

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >