현대의 프로그래밍 언어라면 List와 Hash 또는 이와 유사한 데이터 구조를 가지고 있을 것입니다니다. IDL도 2011년 IDL 8.0 부터 List와 Hash 데이터 구조를 사용할 수 있습니다.
그 전에는, 배열(Array)와 구조체(Struct)로 프로그래밍을 했지만(지금도 List와 Hash 없이 행복하게 IDL 프로그래밍을 하시는 분들이 많습니다. 아직까지는 List와 Hash 안쓰는 사용자가 더 많을 것 같습니다), 더 편리하고, 더 유연하게 데이터를 다룰 목적으로 List와 Hash를 사용할 수 있습니다. IDL에서 List와 Hash를 적극적으로 도입하고, 이에 대한 속도 문제도 상당히 개선하여, 다른 프로그래밍 언어에 뒤지지 않는 List와 Hash 퍼포먼스를 보여 주고 있습니다. 그 성과 중 하나가 IDL-Python Bridge이며, 이를 통해 IDL과 Python이 데이터를 공유할 수 있는 정도입니다.
그렇지만, 아무리 세상이 바뀌어도, List와 Hash는 Array와 Structure의 속도를 따라올 수는 없습니다. 사람이 쓰기 더 편한 쪽으로 가는 것이 List와 Hash이지, 컴퓨팅 속도를 더 빠르게 하기 위한 것이 아닙니다. Array와 Structure는 틀이 짜여진 대로 데이터를 꽂아 넣어야 하기 때문에, 유연성은 떨어집니다. 그렇지만 틀에 맞춰져 있기 때문에 데이터를 읽고 쓰는 것은 훨씬 빠릅니다. 원고지에 맞추어 글자를 써 넣으면, 나중에 "몇 글자 썼지?"를 금방 셀 수 있는 것과 같은 원리입니다.
오해가 없어야 할 것이, List의 한 요소로 배열이 통채로 들어가면, 그 Array에 접근해서 데이터를 처리하는 속도는 Array 속도 그대로 나옵니다. List의 한 요소로 있는 Array를 꺼내 오는 것은 순간의 일이기도 합니다. Array의 모든 요소를 List의 개별 요소로 변환하는 것은 문제가 있을 수 있지만, Array가 통채로 List의 한 요소로 들어가는 것은 전혀 문제가 없습니다. 이와 같이, List는 다른 List를, Array를 , Structure를 품을 수도 있는 자유분방한 데이터 구조라는 점을 기억해 두세요. 그래서 편리한 데이터 타입이고, 그렇기 때문에 최고의 속도를 내는 목적과는 거리가 멀 수밖에 없습니다.
첨부 문서에 IDL의 List와 Hash를 소개합니다.
감사합니다.
현대의 프로그래밍 언어라면 List와 Hash 또는 이와 유사한 데이터 구조를 가지고 있을 것입니다니다. IDL도 2011년 IDL 8.0 부터 List와 Hash 데이터 구조를 사용할 수 있습니다.
그 전에는, 배열(Array)와 구조체(Struct)로 프로그래밍을 했지만(지금도 List와 Hash 없이 행복하게 IDL 프로그래밍을 하시는 분들이 많습니다. 아직까지는 List와 Hash 안쓰는 사용자가 더 많을 것 같습니다), 더 편리하고, 더 유연하게 데이터를 다룰 목적으로 List와 Hash를 사용할 수 있습니다. IDL에서 List와 Hash를 적극적으로 도입하고, 이에 대한 속도 문제도 상당히 개선하여, 다른 프로그래밍 언어에 뒤지지 않는 List와 Hash 퍼포먼스를 보여 주고 있습니다. 그 성과 중 하나가 IDL-Python Bridge이며, 이를 통해 IDL과 Python이 데이터를 공유할 수 있는 정도입니다.
그렇지만, 아무리 세상이 바뀌어도, List와 Hash는 Array와 Structure의 속도를 따라올 수는 없습니다. 사람이 쓰기 더 편한 쪽으로 가는 것이 List와 Hash이지, 컴퓨팅 속도를 더 빠르게 하기 위한 것이 아닙니다. Array와 Structure는 틀이 짜여진 대로 데이터를 꽂아 넣어야 하기 때문에, 유연성은 떨어집니다. 그렇지만 틀에 맞춰져 있기 때문에 데이터를 읽고 쓰는 것은 훨씬 빠릅니다. 원고지에 맞추어 글자를 써 넣으면, 나중에 "몇 글자 썼지?"를 금방 셀 수 있는 것과 같은 원리입니다.
오해가 없어야 할 것이, List의 한 요소로 배열이 통채로 들어가면, 그 Array에 접근해서 데이터를 처리하는 속도는 Array 속도 그대로 나옵니다. List의 한 요소로 있는 Array를 꺼내 오는 것은 순간의 일이기도 합니다. Array의 모든 요소를 List의 개별 요소로 변환하는 것은 문제가 있을 수 있지만, Array가 통채로 List의 한 요소로 들어가는 것은 전혀 문제가 없습니다. 이와 같이, List는 다른 List를, Array를 , Structure를 품을 수도 있는 자유분방한 데이터 구조라는 점을 기억해 두세요. 그래서 편리한 데이터 타입이고, 그렇기 때문에 최고의 속도를 내는 목적과는 거리가 멀 수밖에 없습니다.
첨부 문서에 IDL의 List와 Hash를 소개합니다.
감사합니다.