까멜레오 OCaml 지원.

Posted 2008. 4. 28. 13:48
까멜레오는 주로 Python과 C로 작성되었습니다. UI와 위젯 작성은 파이썬으로 하고, 속도가 생명인 미디어 재생/분석 코드는 C로 작성되어 있습니다.  그런데, 프로젝트를 하다보니 코드를 C로 작성하면 아무래도 작성 시간도 오래 걸리고, 품질도 그리 높지가 않더군요. 특히, 메모리 깨먹는 버그나 멀티쓰레드 관련 버그는 정말 괴롭습니다.

최근에 이런 문제를 돌파해보고자 함수 언어인 OCaml을 까멜레오 구현 언어로 추가하기 위한 작업을 끝마쳤습니다. 특히, 비디오 처리(video processing) 코드를 OCaml로 작성해서 오류를 줄이고 작성 속도도 높여보자는 것이 가장 중요한 취지입니다.

기존 까멜레오 코드가 상당 부분 파이썬으로 코딩되어 있기 때문에 OCaml와 Python을 연결하기 위해 Pycaml 프로젝트를 가져다가 조금 고쳤습니다. OCaml과 Python이 직접 붙는 것은 아니고, Ocaml의 C 인터페이스를 이용해 Python/C API에 붙이는 방식으로 구현되어 있습니다.

아직 기본적인 데이타 타입 변환만 있고, Python의 list, tuple. dict와 OCaml의 list, tuple, assoc list 등을 변환해주는 코드 등이 부족한 상태라 사용이 그리 쉽지는 않은 상태입니다. 이쪽은 OCaml로 코드를 작성하면서 조금씩 추가해 나가려고 생각하고 있습니다.



Scala BOF in Tokyo April 30

Posted 2008. 4. 25. 08:51
일본 자바 유저 그룹(JJUG)에서 개최하는 Cross Comunity Conference 2008 에서 Scala를 주제로 한 세션이 2개 열리는군요. 내용은 당연히 일본어로만 진행된답니다-_-

http://www.java-users.jp/contents/events/ccc2008spring/


16:30 - 17:20 A-5 Scala for enterprise application empowerd by Lift
by Ushio Tsuyoshi(Mamezou, Co.)

17:40 - 18:30 BOF-1 Post-Java? Possibilities of JVM based functional OO
language Scala
by Hanyuda Eiiti (Mamzou, Co.)
   Mizushima Kouta (Tsukuba university, Computer Science)
   Seki Takashi (TBS television, Digital center)

참고: 엔터프라이즈 어플리케이션 개발로 소개하는 Lift는 Scala 기반의 웹프레임워크라고 생각하시면 됩니다.

Scala 이상한 점

Posted 2008. 4. 22. 19:48
마소 원고 쓰면서 Scala를 가지고 놀다가 재밌는 사례를 발견했습니다.

val은 보통 변하지 않는 값(immutable)을 선언할 때 쓰는 키워드인데, 다음과 같이 선언을 했더니 오류가 발생하지 않고 x 가 1이 되더군요.

scala> val x: Int = x + 1
x: Int = 1


우변의 x + 1은 x가 아직 초기화 되지 않았기 때문에 오류가 발생해야 맞을 것 같은데, 신기하게 그냥 0으로 초기화되고 1을 더해서 x의 값은 1이 되었습니다. scala-user 메일링 리스트에 물어봤더니, Scala 인터프리터에서 위와 같이 선언하면 다음과 같은 클래스를 생성한다고 합니다.


class Foo {
     int x;
     public Foo() {
         x = x + 1;
     }
 }

x가 필드가 되기 때문에 x은 자동으로 0이 할당되고, x + 1은 1이 됩니다. 이건 구현상의 이슈고, Scala에서는 적절히 오류가 발생해야 맞을 것 같은데, 언어 명세에 어떻게 정의해놨는지 모르겠군요.


« PREV : 1 : ··· : 8 : 9 : 10 : 11 : 12 : 13 : 14 : ··· : 82 : NEXT »