- '프로그램을 짜서 문제를 해결하는 것' 에 대한 higher-order 문제 해결책 중 하나는 아마 '프로그래밍 언어를 만들어서 프로그램을 더 잘 짜기' 를 들 수 있을 것이다.

- 간단한 일을 쉽게 할 수 없는 언어적 환경의 문제점은 단지 생산성을 저하시키는 것에 국한되는 것이 아니라 사고방식의 확장을 가로막는 요소가 된다.

- C++ 이나 Java, C# 같은 지시형(Imperative) 범용언어로 어떤 특정 문제영역에 대해 반복적으로 많은 량의 코드를 짜게 되는 상황에 처해 있다면 새로운 언어에 대해 관심을 가져볼 필요가 있다.

- 실용주의 프로그래머에서는 1년에 새로운 언어 하나씩 배우기라는 과제를 제시한다.

- 김창준님의 블로그에 소개된 언어 2가지
나를 만든 언어 http://www.ibm.com/developerworks/kr/library/dwclm/20080819/
J 언어 (자바랑 아무 관계 없다) http://www.jsoftware.com
Io 언어 http://www.iolanguage.com/

- 새로운 언어들에서 배우거나 차용해 올 수 있는 개념들은 어떤 것들이 있을까?
- Io 언어 : 액터 개념, 프로토타입 개념, 동시성
- J 언어 : 간결한 알고리즘 표기

- 게임 프로그래머로서 c++ 이나 lua 같은 범용 언어 이상의 언어가 유용할 경우는 어떤 경우가 있을까?
- 다양한 게임내 오브젝트들의 행동 표현
   - 특히, 오브젝트와 클래스의 구분이 모호해지는 케이스에서 프로토타입 개념이 유용하다
- 전략의 기술(description), 반응의 표현
   - 오브젝트의 행동을 순서단위로 쓸 수 있으면 더 직관적
   - FSM 을 더 간결하게 표현할 방법
- 다양한 패킷에 대해 반응하는 서버
   - 언어에 내장된 패턴매칭 개념을 활용하여 패킷에 대응하는 핸들러를 바로 연결
   - C 언어에서 등장하는 거대한 switch 를 대체할 수 있도록 한다
- 등등..

- 완전히 새로운 언어를 만드는 것보다, 기존 언어에서 어쩔 수 없이 써야하는 지저분한 boiler-plate code 를 대신 만들어주는 preprocessor 를 사용하는 방법도 있다
  - Qt Library 의 signal & slot
  - C 의 #define 으로는 한계가 뚜렷

- 언어를 만들어 코드를 줄이는 것은 ultimate refactoring 이다

- Less code, Easy to read, Hard to misuse

imcgames 의 김학규입니다