2008년 02월 26일
Incremental Development
매일의 작은 변화를 소홀히 하지 말아야 한다.
작은 변화가 조금씩 쌓여서 예상치 못한 큰 변화가 되는 것이다.
-마리안 라이트 에델만
# by | 2008/02/26 09:45 | Log | 트랙백 | 덧글(0)
# by | 2008/02/26 09:45 | Log | 트랙백 | 덧글(0)
# by | 2008/02/24 22:43 | 미분류 | 트랙백 | 덧글(0)
# by | 2008/02/24 19:37 | 기억보조 | 트랙백 | 덧글(0)
# by | 2008/02/21 18:17 | 기억보조 | 트랙백 | 덧글(0)
스크립트 언어 VM
자바스크립트, 펄(Perl)을 포함한 대부분 스크립트 언어는 소스를 파싱한 후에 트리 형태로 만들어 놓고 트리를 따라가면서 프로그램을 실행하는 구조였다. 이러던 것이 몇몇 스크립트를 중심으로 하부에 VM을 정의해 스크립트 실행 성능을 높이고 있고 널리 쓰이는 스크립트 대부분이 VM 기반으로 이행하고 있다.
* 자바스크립트의 경우 공식 구현이 하나만 있는 것은 아니지만 어도비가 모질라 재단에 공여한 AVM2(ActionScript VM 2)가 그런 예다. ECMA 표준 4판에 포함될 내용을 지원하기 위한 내용을 포함하다 보니 JVM과 상당히 비슷해졌고 스택 기계 형태에 내부적으로 JIT 컴파일러를 가지고 있다.
* 파이선(Python) 역시 스택 기계 형태의 VM을 가지고 있고 완전하지는 않지만 JIT 컴파일러 구현도 있다.
* 게임에서 많이 사용하는 Lua의 경우 RISC와 비슷하게 레지스터 개념을 도입한 VM을 사용하며 이런 형태 탓에 성능이 뛰어 나다는 점을 강조하고 있다.
* PHP는 Zend 엔진으로 넘어가면서 일찌감치 바이트코드 기반으로 넘어간 상태다.
* 그 외 루비의 YARV, 펄의 Parrot 같은 프로젝트도 진행 중으로 앞으로 스크립트 언어 구현에 VM이 사용되는 것을 흔히 보게 될 것으로 보인다.
JVM
일반에 공개된 것은 1995년이지만 자바의 기본이 된 Oak 언어는 1990년 초에 이미 완성되었다고 한다. JVM이 최초인지는 확실하지 않으나 이전까지의 시도에 비해 특이한 점은 바로 데이터 흐름 분석(data flow analysis)과 데이터 형 개념을 활용해 실행 전에 바이트코드를 검증할 수 있게 한 점이 아닌가 한다. 여기에는 몇 가지 의미가 있는데, 우선 이전까지의 VM은 바이트코드가 잘못되어 C로 작성한 프로그램처럼 메모리를 망가뜨리거나 하는 경우에 대해 고려하지 않았지만 자바는 네트워크를 통해 움직이는 코드를 표방, 검증을 중심에 놓았다. 또 실행 전에 상당 부분의 검증을 행함으로써 실행시 성능을 깎아 먹는 안전 검사를 줄여 성능을 높이고 기계어로 변환하기 쉽도록 했다.
원문 : http://www.ibm.com/developerworks/kr/library/dwclm/20080212/?ca=dnn-krt-20080220
# by | 2008/02/20 10:30 | 기억보조 | 트랙백 | 덧글(2)
# by | 2008/02/19 09:15 | Log | 트랙백 | 덧글(0)


# by | 2008/02/16 01:38 | Log | 트랙백 | 덧글(0)

# by | 2008/02/13 22:16 | Log | 트랙백 | 덧글(0)
방금 전까지 잘 돌아가던 시스템을
빌드한번 잘못했다가 말아먹을뻔했다.
bad class file이라는 듣도보도 못한 에러메세지를 뱉어내면서....으..
얼마전에 이클립스에서 책에 있는 예제들 따라 해보다가 타이거로 바꿨던 기억이...
문제는 금방 해결됐다.
시스템의 jdk버전과 이클립스 자바 컴퍼일러 버전을 맞추면 된다(아마도...-_-;;).
# by | 2008/02/01 10:03 | 기억보조 | 트랙백 | 덧글(0)