프로그래밍 언어 개발에 관심 있는 사람들의 모임입니다.
|
2008-07-24 23:51:00
|
국제 표준이 있는 표준화된 언어의 경우 프로그래밍 언어의 어떤 구현이 표준을 따르는지 판단하는 문제가 생깁니다. 표준이 없는 경우에도 널리 쓰이는 구현과의 호환성이 문제가 될 수 있습니다. 따라서 표준을 만들거나 프로그래밍 언어를 디자인 할 때부터 이런 것을 생각해두면 좋을 것입니다. 가장 유명한 것은 Sun이 관리하는 Java의 TCK(Technology Compatibility Kit)가 아닐까요? Sun이 아닌 다른 회사에서 만드는 JVM들이 꽤 있지만 TCK를 통과하지 않으면 Java 상표를 사용할 수 없습니다. TCK는 공개가 아니기 때문에 오픈 소스에서 만든 Java 테스트 수트가 Mauve입니다. GNU Classpath와 함께 개발되었고 내용이 충실합니다. Mauve는 이제 Jacks(Jacks is an Automated Compiler Killing Suite)라는 멋진 이름의 Java 컴파일러 테스트 수트도 포함하고 있는데, Jacks 수트는 썬의 공식 Java 컴파일러에서도 버그를 잡은 것으로 유명합니다. Donald Knuth의 TeX에는 TeX 상표를 사용하는데 필요한 TRIP이라는 테스트가 있습니다. 이 테스트를 통과하지 않고 TeX이라는 이름을 사용하면 상표권 침해가 됩니다. Ada는 국방성에서 만든 언어답게 이 부분이 아주 잘 되어 있어, 모든 Ada 구현은 ACATS(Ada Conformity Assessment Test Suite) 통과를 목표로 한다고 보면 됩니다. C는 “C 컴파일러의 표준 준수는 컴파일러 벤더가 정한다”는 농담이 있을 정도로 확립된 테스트 수트가 없습니다만 GCC의 c-torture라는 매우 적절한 이름의 테스트 수트가 C의 현실세계를 반영한다고 하겠습니다. Common Lisp는 Paul Dietz가 관리하는 ansi-tests가 사실상의 표준입니다. ECMA 표준인 JavaScript는 최초의 JavaScript 구현과 같이 만들어진 Mozilla의 멋대가리 없는 이름을 가진 JavaScript Test Library가 모든 자바스크립트 구현이 사용하는 기본입니다. 최근 여러 구현의 난립으로 호환성 문제가 중요한 이슈로 떠오르고 있는 Ruby의 경우 RubySpec이 미래의 표준이라고 하겠습니다. 다른 사례로 어떤 것이 있을까요? 서상현 님이 2008-07-24 23:52:29에 고쳤습니다. |
트랙백 주소: http://langdev.net/post/trackback/112
네이밍 센스들이 좋군요; 제가 만들 언어에 테스트 수트를 만든다면 이름을 계율원(戒律院)으로 짓지 않을까 합니다. (무협 소설에 자주 등장하는 소림사 내 계율을 감시감독하는 곳!)
네, 저 무협 오덕후 맞아요.
이름 이야기가 나와서 말인데 TRIP은 TeX 구현을 “관광 보내드린다”는 뜻이 아니겠어요? =3
일단 제 언어가 남들이 쓸 정도로 가치가 있다는 생각이 들면 이런 작업을 해봐야겠습니다.
문제는 그 날이 과연 올까? 하는 것이죠. 흐흐
regression test라는 명목으로라도 꼭 필요한 게 아닌가 싶습니다. 언어 구현체 작업이 녹록치가 않아서요.;
필요성에 대해서는 공감하지만, 지금은 때가 아닌 것 같습니다. 무엇보다 저 스스로 귀찮으면 다 때려치울 것 같아서 최대한 맘이 틀어지지 않도록 쉬엄쉬엄하고 있는 중이라서요. 지금은 “꾸준히” 하는 것이 “잘” 하는 것보다 더 중요한 것 같습니다.
흐흐… 사실 저도 언어 문법이 계속 바뀌고 있어서 test suite를 다시 뜯어 고쳐야 할 상황이긴 합니다. -_-; 꾸준히 작업해야 겠죠.
현재 많이 쓰이는 언어-기능들의 수트 같은것도 있을법 한데…
시간나면 한번 찾아봐야겠네요. :)