Motive

CERN ROOT의 스크립트를 보다보면 (혹은 내가 스크립트를 작성하다보면) 변수의 타입이 본래의 C언어와는 비슷하면서 다른 것들이 등장한다. 예를 들어 정수형 변수는 C에서는 int라는 타입을 쓰는데, ROOT 환경에서는 Int_t로 해도 작동한다. 사실 간단한 데이터 분석에서는 뭐로 해도 상관없긴 한데 ROOT로 프로그래밍할때는 첫글자를 대문자로 바꾸고 뒤에는 _t가 붙는 ROOT 자체의 변수형을 습관적으로 쓰곤 한다. 문제는 vim에서는 이러한 ROOT 자체 변수형을 강조해 주지 않는다. 이러한 변수형이 존재하는지 vim은 모르기 때문이다. 그래서 변수의 선언 부분이 눈에 잘 띄지 않아 불편한 점도 있고 vim 에디터가 간지도 잘 나지 않는다.

왜 쓸까?

나도 처음에 ROOT를 배우기 시작할 때는 그냥 남들 따라서 int 대신 Int_t를 사용했지 그 이유를 정확히 알지 못했고 알려고 하지도 않았다. 나는 한참이나 후에 알았는데, 거두절미 하자면 다음 링크에서 그 이유를 찾을 수 있다.

https://en.wikibooks.org/wiki/ROOT/Handling_Data/ROOT_Data_Types

요약하자면 다음과 같음. intdouble 등의 표준 변수형은 컴퓨터에 따라 2바이트를 쓰기도 하고 4바이트를 쓰기도 하는 등 사이즈가 통일되어 있지 않다. 거대한 양의 데이터를 처리할 때는 사용하는 메모리의 양 등을 민감하게 고려해야 한다. (메모리 터지면 계산 날아가니깐…) 하지만 이 컴퓨터 저 컴퓨터에서 같은 변수임에도 메모리 사이즈가 다르거나 하면 여간 난감하지 않을 수 없다. 그게 싫어서 ROOT에서는 어느 머신에서든 데이터형들이 동일한 메모리 사이즈를 점유하게끔 독자적인 타입을 만들어 쓰는 것이다. 요즘 컴퓨터들은 거의 다 64비트 운영체제라 이런 문제가 생기는 상황은 매우 드물겠으나 조심해서 나쁠 것은 없다. 위 링크의 마지막 문장은 다음과 같다.

“It is strongly recommended to use this types when programming ROOT.”

List of CERN ROOT’s Data Types

구글에 검색을 하면 다음과 같은 변수형의 목록을 얻을 수 있다. intdouble 등도 눈에 띄지만 절대다수는 ROOT에서만 쓰이는 타입이다.

https://root.cern/root/html534/ListOfTypes.html

근데 Reference가 ROOT5만 나오고 ROOT6용으로는 검색이 안된다. 뭐… 타입이 5나 6이나 달라진 게 없다고 치면 될듯.

vim Syntax 수정

vim이 설치된 컴퓨터의 ~/.vim/syntax/c.vim 파일을 보면 C언어를 위한 구문강조 규칙이 정리되어 있다. 없으면 알아서 찾아서 다운받아 저 위치에 놓으면 됨. 저 파일의 뒤에 아래와 같은 내용을 추가하면 vim에서도 ROOT의 자료형을 강조해준다.

Type들은 내가 위 링크에서 리스트를 가져와 노가다로 정리했고, contant들은 내가 개인적으로 기억하고 있는 것들과 ROOT의 소스코드를 뒤져서 빠진 것을 추가해서 직접 작성했음.

카테고리: Computer Language

0개의 댓글

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다