LangDev

프로그래밍 언어 개발에 관심 있는 사람들의 모임입니다.


특정 도메인을 위해 언어를 수정해서 쓰는 것에 대해 어떻게 생각하세요?

2008-08-14 00:18:47

오늘 귀가해서 씻다가 엉뚱한 생각이 떠올랐습니다. 모티브는 MacRuby에서 얻었는데, IoLua 같은, 비교적 수정하기 수월한 언어를 도메인에 맞게 사용하는 것이 과연 도움이 될까 하는 생각이 들었습니다. (그러니까, 그렇게 해보면 재밌겠는데… 도움은 될까?)

구체적으로는, ORM 같은 복잡한 프레임워크를 사용하는 대신, 언어에서 PostgreSQL 쿼리 문법을 사용할 수 있고, ORDBMS의 각종 오브젝트들의 식별자와 언어 내의 식별자를 일치시켜서 사용해보면 어떨까 하는 생각입니다. 유사 코드를 쓰자면 아래처럼 될 것 같은데; (.NET의 LINQ나 Oralce Pro*C와 비슷하네요.)

names = select id, name from person where name like "a%"

for id, name in names do
    print(id .. ". " .. name)
end

문법을 좀 더 편하게 만들면 select를 반복문으로 만들 수도 있을 것 같고…

select id, name from person where name like "a%" do
    print(id .. ". " .. name)
end

또, 해당 언어에서 정의한 함수를 stored procedure 호출하듯 사용할 수도 있고요. 언어와 DBMS를 긴밀하게 통합할 경우 여러가지 할 수 있는 것들이 많을 것 같습니다.

하지만 과연 이렇게 언어를 확장해서 쓰는 것이 좋은 접근일까요? 대부분의 경우 좋지 않겠지만, 몇 가지 조건을 둡니다.

  • 오직 이 프로젝트를 위해서만 쓰일 언어입니다.
  • 이 프로젝트가 PostgreSQL 플랫폼에서 벗어날 일은 없습니다.
  • DB 관련 작업이 굉장히 많습니다.

덧. 약간 진지하게(?) 올리는 고민 상담;입니다.

홍민희 님이 2008-08-14 14:42:09에 고쳤습니다.

트랙백 주소: http://langdev.net/post/trackback/140

  1. 홍민희 2008-08-14 00:23:12

    아, LangDev 분들은 대부분 아실테지만, 위 의사 코드는 Lua를 확장했다고 가정한 것들입니다.

  2. 아침놀 2008-08-14 01:33:41

    텍스트큐브는 배포용 프로그램이라 이런 생각을 할 수 없다는 게 아쉽군요 orz

  3. semmal 2008-08-14 06:47:30

    시간으로 보다 효용성으로 보나 언어를 고치는 것보다 DSEL을 만들어 쓰는 것이 더 좋지 않을까요?

  4. Heungsub 2008-08-14 13:04:37

    코드에 직접 쿼리를 쓰는건 굉장히 매력적이지만 역시 DSEL로 만드는게 더 나을 것 같네요.

  5. 홍민희 2008-08-14 14:41:33

    DSEL로 힘든 부분이 있습니다. stored procedure를 공유한다거나 하는 아이디어들이요.

  6. wookay 2008-08-14 16:01:27

    Ambition 참고해봐요 http://ambition.rubyforge.org/

  7. 홍민희 2008-08-15 15:53:04

    좋은 자료 감사합니다. 재미있네요.

목록보기

← C++얼마나 복잡한 언어인가요? | 유니코드를 지원하는 언어를 만들려면 →