|
작년 대안언어축제 1회 때 제가 진행했던 세션입니다. EDSL은 Embedded Domain Specific Language를 줄인 말입니다. DSL은 특정 영역에 국한된 언어를 말합니다. 은어랑 비교할 수 있을까요? 예를 들어 루빅스 큐브(정육면체 상자를 돌려서 색깔을 맞추는 퍼즐)를 맞춰 나가는 과정을 설명하기 위한 "작은 언어"가 따로 있는데, 매우 간단하고 명쾌합니다. 이런 걸 DSL이라고 할 수 있습니다. EDSL은 일반 프로그래밍 언어 속에서 이런 DSL을 구현해 낸 것을 말합니다. 언어 속 언어라고 할 수 있죠.
여기에 가시면 EDSL의 개략적 내용과 참고자료, 당시의 발표자료 등을 보실 수 있습니다. 그 페이지에 몇가지 내용을 추가하고 발표자료도 첨부하고 했습니다(늦어서 죄송합니다~). 당시에는 제가 간단하게 강의를 하고 청중분들과 함께 재미있는 게임들을 했습니다. 제가 문제를 내어드리고, 각 팀에서 선택한 일반 프로그래밍 언어를 이용해서 그 문제를 잘 표현하는 EDSL을 설계, 구현하는 것이었죠. 나중에는 같은 문제 영역인데 조금 변화된 요구사항을 드려서 자기 팀에서 구현한 EDSL이 잘 확장할 수 있는지 실험해보는 시간을 가졌습니다. (E)DSL에 대해 한가지 생각해 볼만한 문제를 드리겠습니다. 예를 들어 다음과 같은 도형을 작도하는 프로그램을 만들어야 한다고 칩시다.
어떤 프로그래밍 언어가 있다면 가장 좋을까요? 질문을 바꾸어 봅시다. 전화기로 친구에게 이 도형을 똑같이 그려줄 것을 부탁한다면 어떻게 설명하시겠습니까? 일단 별을 하나 찍어. 그리고 다음줄로 넘어가. 별 하나 찍고, 또 별 하나 찍고, 다음줄. 별 하나, 별 하나, 별 하나, 다음 줄. ... 이 방식은 비효율적입니다. 설명하면서 실수하기도 쉽습니다. 중복이 많습니다. 만약 "컴퓨터"라는 개념을 머리속에서 완전히 지워버리고 설명한다면 어떻게 하시겠습니까? 그러면서도 모호성을 적절히 줄인다면? 이 가상적 프로그래밍 언어에서 이등변 삼각형 작도를 하려면 어떤 표현을 써야 합니까? 다이아몬드는? 사각형은? 원은? 작년의 EDSL 세션은 저에게도 매우 의미있는 시간이었습니다. 뭔가 발표하고 가르치고 공유하는 경험을 하고나면 머리가 정리되기 때문입니다(가르치는 것이 최고의 학습 전략이다). 개인적으로는 EDSL이라는 주제를 발견하고 거기에 심취한 이후로는 제가 과거에 짰던 코드들은 거의 대부분 부족한 점들이 많이 발견되더군요. 역시 언어는 사람의 이성을 계발하는 데에 최고의 도구 중 하나인 것 같습니다. 오늘의 명언 하나: 워드 커닝햄 가라사대, "스몰토크(OOPL)에서는 새로운 언어를 만들어 내는 것 외에 프로그래밍 하는 방법은 없다". --김창준
|
메모장
이글루 파인더
최근 등록된 덧글
안녕, 내가이 정보를..
by Glasgow at 01/27 마침 근래에 팀 스터.. by Muay Thai at 01/16 동영상 강의 정말 재.. by 솔트 at 01/15 남북 정상회담에 드는.. by Juegos at 01/09 축하드립니다. '우.. by Jocuri at 01/09 좋은 방법 소개해 주.. by Jogos at 01/09 좋은 아이디어 입니.. by 1st market at 12/28 오랜만에 올려주시는.. by Dozen at 12/21 그것은 좋은 경험이야.. by memory foa at 12/07 오늘 간만에 인터넷 .. by 김정훈 at 12/02 최근 등록된 트랙백
변화를 꾀할 때가 되..
by 깊은바다 - Idea Rea.. 이상한 나라에서 협.. by 퇴근 후 30분 국내 최초로 열리는 .. by 실용주의이야기(Pr.. 애자일/스크럼 프로.. by 박피디의 게임 개발 .. 애자일/스크럼 프로.. by 박피디의 게임 개발 .. 미친병아리의 생각 by madchick's me2day 넥슨 입사 문제 풀이 by Foolish coder Jooni 나는 앞으로 뭐 해먹.. by 덱스또의 지식창고 잔고수의 생각 by nothing2lose's me.. 이전블로그
2011년 12월
2011년 11월 2011년 10월 2011년 09월 2011년 04월 2011년 03월 2011년 02월 2011년 01월 2010년 12월 2010년 10월 2010년 09월 2010년 08월 2010년 07월 2010년 06월 2010년 05월 2010년 04월 2010년 03월 2010년 02월 2010년 01월 2009년 12월 2009년 11월 2009년 10월 2009년 09월 2009년 08월 2009년 07월 2009년 06월 2009년 05월 2009년 04월 2009년 03월 2009년 02월 2009년 01월 2008년 12월 2008년 11월 2008년 10월 2008년 09월 2008년 08월 2008년 07월 2008년 06월 2008년 05월 2008년 04월 2008년 03월 2008년 02월 2008년 01월 2007년 12월 2007년 11월 2007년 10월 2007년 09월 2007년 08월 2007년 07월 2007년 06월 2007년 05월 2007년 04월 2007년 03월 2007년 02월 2007년 01월 2006년 12월 2006년 11월 2006년 10월 2006년 09월 2006년 08월 2006년 07월 2006년 06월 2006년 05월 2006년 04월 2006년 03월 2006년 02월 라이프로그
| |||