특집기사:Xtend의 새로운 타입 시스템

위클립스
이동: 둘러보기, 찾기
Article.png 특집기사 정보
Sven Efftinge.jpg
원문 보기
저자 Sven Efftinge
역자 이지율

요즘은 수학과 컴퓨터 과학 두 분야의 박사 학위를 갖춘 사람만이 자바 컴파일러를 쓸만한 자격을 갖춘 시대라고 볼수 있습니다.[1]

Xtend는 자바의 타입 시스템을 구현했으므로, 이미 동일한 수준의 복잡도를 다뤘다고 볼 수 있습니다.. 아니, 자바보다 더 나은 것들도 좀 있죠:

그러니 박사 학위 몇 개정도를 더해도 괜찮겠군요.

목차

[편집] Write Once, run...

우리는 보통 제품의 주요 코드들을 두 번 정도는 새로 씁니다(최소한!). 최초에 구현한 이전의 타입 시스템도 작동하기는 하지만, 람다 표현을 사용하는 복잡한 타입 추론 케이스등을 비롯하여 다양한 시나리오가 추가되기 시작하면서, 장기적인 안목에서 고품질을 유지하기에는 너무 느리고 복잡해졌습니다. 우린 견고한 테스트 슈트를 가지고 있기 때문에, 별 해가 없어 보이는 변경점들이 테스트를 깨트리기 시작하는 것을 파악할 수 있었습니다.

짧게 말하자면: 작년 4월, 우리는 타입 시스템을 다시 작성하기로 했습니다.

[편집] 외로운 영웅

Sebastian

세바스챤은 퍼포먼스의 향상 뿐 아니라, 우리 모두가 더 쉽게 코드를 이해하고 디버그할 수 있는 장래가 촉망되는 아이디어를 갖고 있었습니다. 우리는 다른 개발 및 유지보수 일정을 중단할만한 여유가 없었고, 다른 팀들이 멋진 새로운 기능을 추가하기 위해 일하는 동안, 1인팀이 긴 여행을 떠나게 되었습니다.

거의 1년 전쯤, 세바스챤이 이 일을 시작했습니다. 우리는 언어의 의미론에 대해 무수히 토론했지만, 내가 코드를 직접 살펴보지는 않았습니다. 대부분의 언어 의미들은 명확해졌으며, 다른 자바 컴파일러들에 의해 증명되었습니다. 따라서 그는 거대한 산을 혼자 오르기 시작했죠.

이는 매우 리스크가 높은 일이고, 프로젝트에서 이렇게 중요한 부분을 단 한명에게 의지하는 것이 좋지 않은 생각이란 것을 압니다. 만약 그가 실패했다면 우린 1년을 허비한 셈이죠. 하지만 그가 해낼 것이라는 것을 알고 있었습니다(어차피 그가 못해냈다면, 달리 그걸 해낼 수 있을 만한 사람을 알지도 못합니다).

심지어 12월 릴리즈 목표를 연기해가면서, 많은 시간이 흘렀습니다. 드디어 1월의 마지막 즈음, 새로운 타입 시스템이 이전 것을 교체하여 작동할 수 있도록 구축되었습니다. 변경은 매우 부드러웠죠. 잘 돌아갑니다.

여기에 관련한 바로 어제 close 된 버그질라 이슈가 있습니다. 이는 95개의 다운 스트림 버그들을 블록하고 있었죠! 그들 대부분은 이제 수정되었고, 테스트 및 검증작업을 거치며 이슈들을 닫기고(close) 있습니다. 약간의 단순한 최적화만 가미했음에도 이미 퍼포먼스는 25%나 개선되었습니다.

또 언급할만한 가치는, 단 이틀의 소개만으로 모든 팀들이 새로운 코드에 기반하여 작업을 지속할 수 있었다는 점입니다. 코드는 필수불가결한 복잡도를 넘어 설만큼 명백히 파악 및 디버그가 쉽습니다. 또한 훨씬 더 포괄적인 테스트 슈트를 가질 수 있게 되었습니다. 20,000개가 넘는 단위 테스트를 통해 실수로 뭔가 깨트리는 일을 방지할 수 있습니다. 모든 테스트는 우리가 가진 디펜던시의 모든 상위 및 하위 버전에서 작동합니다. 이러한 테스트 슈트 없이 이런 소프트웨어가 관리되고 진화할 수 있는 방법은 없습니다.

새로운 타입 시스템은 믿을수 없는 공학의 조각이며, 위대한 성공입니다. 이는 새로운 멋진 기능들과 향상들을 포함하는 새로운 Xtend 릴리즈의 기초가 될 것입니다.

세바스챤, Xtend 커뮤니티는 멋지게 성장할 거고, 빚 하나 졌어요.

[편집] 링크

[편집] 참조

  1. Srikanth S. Adayapalam(Eclipse JDT)가 자바8의 타입추론의 복잡성을 언급하며 한 말.

이 기사에 대한 의견은 토론 페이지를 통해 나눌 수 있습니다.

개인 도구
이름공간
변수
행위
포탈
탐색
도움
도구모음