IDL (Interactive Data Languageの略)は、データ分析に使用されるプログラミング言語です。天文学、大気物理学、医用画像処理など、科学の特定の分野で広く利用されています。IDLはPV-Waveと共通の構文を持ち、同じコードベースから派生しましたが、その後、言語の細部は異なっています。GNU Data Language(GDL)やFawlty Language(FL)など、無料または無償で利用できる実装も存在します。
IDLはベクトル化され、数値計算が可能で、対話型言語であり、大量のデータ(画像処理を含む)の対話型処理によく使用されます。構文にはFortranの多くの構成要素とC言語の構成要素がいくつか含まれています。
IDLは初期のVMS Fortranから派生したものであり、その構文には今でもその名残が見られる。
x = findgen ( 100 ) / 10 y = sin (x) / x plot ,x,y 上記の例のfindgen関数は、0から始まる一連の整数値を持つ浮動小数点数の1次元配列を返します。
2行目の演算は、汎用配列プログラミング言語(APL、J 、 Kなど)と同様に、1行目で作成された100要素の配列全体にベクトル化された方法で適用されることに注意してください。この例にはゼロ除算が含まれています。IDLは算術オーバーフローを報告し、y配列の対応する要素(最初の要素)にNaN値を格納しますが、他の配列要素は有限になります。NaNはplotコマンドによって生成される可視化から除外されます。
他のほとんどの配列プログラミング言語と同様に、IDLはベクトル演算の処理速度が非常に速く(FortranやC言語で適切にコーディングされたカスタムループと同等の速度になる場合もある)、要素を個別に処理する必要がある場合はかなり遅くなります。そのため、IDL(あるいは他の配列プログラミング言語)を数値計算量の多い処理に使用する際のコツの一つは、組み込みのベクトル演算を活用することです。
IDLの前身となるバージョンは、1970年代にコロラド大学ボルダー校の大気宇宙物理学研究所(LASP)で開発されました。LASPでは、デイビッド・スターンが、プログラマーを雇って個々のアプリケーションを作成または変更することなく、科学者が仮説を検証できるようにする取り組みに関わっていました。スターンが開発したIDLへの進化の連鎖における最初のプログラムはRufusと名付けられ、PDP-12上で動作するシンプルなベクトル指向の計算機でした。これは、算術演算、オペランドとして機能する入力レジスタ、および宛先レジスタを指定する2文字のコードを受け入れました。PDP -8上で開発されたRufusのバージョンは、火星探査機マリナースペクトルエディタ(MMED)でした。MMEDは、LASPの科学者によってマリナー7号とマリナー9号のデータを解釈するために使用されました。その後、スターンはSOLというプログラムを作成し、これもPDP-8上で動作しました。前身の言語とは異なり、SOLはFORTRANのような構文を持つ真のプログラミング言語でした。SOLは配列指向の言語で、基本的なグラフィックス機能も備えていました。[ 1 ]
スターンは 1977 年に LASP を離れ、Research Systems Inc. (RSI) を設立した。RSI の最初の製品は PDP-11 用の IDL であった。[ 1 ]このリリースでは、IDL でサポートされるグラフィックスは主に Tektronix の端末とラスターグラフィックス ディスプレイであった。RSI は 1979 年に、NASA のゴダード宇宙飛行センターとBall Aerospace & Technologies Corp.に最初の IDL ライセンスを販売した。2 年後、RSI はVAX MACROと FORTRANで書かれた IDL の最初の VAX/VMS バージョンをリリースした。これは VAX の仮想メモリと 32 ビット アドレス空間を利用した。[ 1 ]国立大気研究センター(NCAR)、ミシガン大学、コロラド大学、海軍研究所は、このバージョンで IDL の使用を開始した。
1987年、RSIはIDLの開発作業をUnix環境に移行したが、これは既存のVAX IDLのバージョンを移植するのではなく、C言語でコードを完全に書き直す必要があった。[ 1 ] SternとAli BahramiはSun 3上でUnix用のIDLを書き直し、この書き直しを利用して言語を拡張および改良した。その後、IDLはさらに拡張され、Unixのいくつかのバリアント、VMS、Linux、Microsoft Windows(1992年)、およびMac OS(1994年)に移植された。
ウィジェットは 1992 年に IDL に追加され、グラフィカル ユーザー インターフェイスを備えたイベント駆動型プログラミングが提供されるようになりました。 1997 年に、Web サーバー ベースのシステムである ION (IDL On the Net) が商用リリースされました。 IDL で記述されたリモート センシングのマルチスペクトルおよびハイパースペクトル画像解析用アプリケーションであるENVIの最初のバージョンは1994 年にリリースされました。ENVIは Better Solutions Consulting, LLC によって作成、開発、所有されていましたが、2000 年 10 月に Eastman Kodak が RSI を買収したのと同時に BSC から買収されました。 RSI は、 1994 年から 2000 年 10 月まで、BSC, LLC とのライセンス契約の条件に基づいてENVI を販売、マーケティング、サポートしました。 新しいオブジェクトおよびポインタ型、および限定的なオブジェクト指向プログラミング機能が 1997 年に IDL に追加されました。
IDLは、例えば太陽物理学など、宇宙科学の分野で幅広く応用されています。欧州宇宙機関(ESA)は、ジオット探査機が撮影したハレー彗星のほぼすべての画像を処理するためにIDLを使用しました。ハッブル宇宙望遠鏡の修理チームは、主鏡の異常を診断するためにIDLを利用しました。1995年には、スペースシャトルに搭乗した宇宙飛行士が、ノートパソコンにインストールしたIDLを使用して紫外線放射を研究しました。現在、IDLは、他の用途の中でも、米国海軍研究所(NRL )と英国ラザフォード・アップルトン研究所におけるSTEREOミッションのSECCHI部分の解析の大部分に使用されています。
RSIは2004年3月にITT Industriesの完全子会社となった。2006年5月15日現在、RSIはITT Visual Information Solutionsとして事業を開始した。2011年10月31日、組織再編の結果、同社はExelis Visual Information Solutionsとなった。2015年、IDLはHarris Geospatial Solutionsに買収され、後にL3Harris Geospatial Solutionsとなった。2023年4月、IDLはNV5 Geospatialに買収された。
コンピュータ言語としてのIDL:
IDLを対話的に非常に簡単に使用できるようにしているこれらの機能の中には、大規模なプログラムを構築する際に困難を引き起こすものもあります。単一の名前空間は特に問題があり、たとえば、新しい組み込み関数を含む言語のアップデートによって、大規模な科学ライブラリが無効になることがあります。[ 2 ]
配列は参照渡しされ、このメカニズムはサブルーチンからデータを渡すための言語の特長として宣伝されています。一方、配列スライスは渡される前にコピーされるため、データの変更が(サブルーチン終了後に)配列範囲に反映されることはなく、最小驚きの原則に反します。
言語の初期の歴史から引き継がれた多くの不規則性が残っており、プログラマーによる個別の回避策が必要となる。例として以下が挙げられる。
上記の問題は、以下のコンパイラオプションを使用することで軽減できます。
コンパイルオプション STRICTARR
IDL の開発元であるITT Visual Information Solutions (ITT VIS)は、他の環境とのバイトコード互換性を防止するための明確な措置を講じています。コンパイル済みルーチンを含むファイルは、公式には公開されていないものの、ユーザーによって調査および文書化されているバイナリタグ付きデータ構造フォーマットを使用しています[ 3 ]。また、保存された各ファイル内に、次の通知が ASCII テキストとして埋め込まれています。
IDL 保存/復元ファイルには、IDL プログラムに関する未公開の専有情報が含まれています。そのため、IDL エンドユーザー使用許諾契約 (IDL EULA) の条項に基づき、このファイルのリバースエンジニアリングは禁止されています。すべての IDL ユーザーは、IDL をインストールする際に、IDL EULA の条項を読み、同意する必要があります。IDL 保存/復元形式のファイルを読み書きするソフトウェアは、NV5 Geospatial Solutions, Inc. から明示的にその権利を付与するライセンスを取得している必要があります。この場合、ライセンスはソフトウェアに同梱されていますので、ご確認ください。ライセンスが付属していないソフトウェアについては、アカウントマネージャーまたは営業担当者にご連絡ください。
2023年8月現在 ただし、この条項は法廷で検証されたことはありません。また、IDLのEULAの当該条項は、オーストラリアの著作権法第47D条および第47H条の規定により、オーストラリアでは効力を持ちません。
以下の図はIDLを使用して作成されました(ソースコードも含まれています)。