आईडीएल (प्रोग्रामिंग लैंग्वेज)

IDL, इंटरएक्टिव डेटा लैंग्वेज के लिए संक्षिप्त, एक प्रोग्रामिंग भाषा है जिसका उपयोग डेटा विश्लेषण के लिए किया जाता है। यह विज्ञान के विशेष क्षेत्रों में लोकप्रिय है, जैसे कि खगोल विज्ञान, वायुमंडलीय भौतिकी और चिकित्सा इमेजिंग। आईडीएल पीवी-वेव के साथ एक सामान्य सिंटेक्स (प्रोग्रामिंग भाषाएं)  साझा करता है और उसी  codebase  से उत्पन्न होता है, हालांकि बाद में भाषाओं में विस्तार से बदलाव आया है। जीएनयू डेटा भाषा (GDL) और Fawlty Language (FL) जैसे मुफ्त सॉफ्टवेयर या फ्रीवेयर कार्यान्वयन भी हैं।

सिंहावलोकन
IDL ऐरे प्रोग्रामिंग, संख्यात्मक विश्लेषण  और इंटरएक्टिव है, और आमतौर पर बड़ी मात्रा में डेटा ( मूर्ति प्रोद्योगिकी  सहित) के इंटरेक्टिव प्रोसेसिंग के लिए उपयोग किया जाता है। सिंटैक्स में फोरट्रान से कई निर्माण और सी (प्रोग्रामिंग भाषा) से कुछ शामिल हैं।

IDL की शुरुआत शुरुआती OpenVMS फोरट्रान से हुई थी, और इसका सिंटैक्स अभी भी इसकी विरासत को दर्शाता है: {{mono|findgen}en}} उपरोक्त उदाहरण में फ़ंक्शन फ़्लोटिंग पॉइंट नंबरों की एक-आयामी सरणी देता है, जिसमें 0 से शुरू होने वाली पूर्णांक की श्रृंखला के बराबर मान होते हैं।

ध्यान दें कि दूसरी पंक्ति में संचालन पहली पंक्ति में बनाए गए पूरे 100-तत्व सरणी के लिए सदिश तरीके से लागू होता है, सामान्य उद्देश्य सरणी प्रोग्रामिंग भाषाओं (जैसे एपीएल प्रोग्रामिंग भाषा, जे प्रोग्रामिंग भाषा या के प्रोग्रामिंग भाषा) के अनुरूप ) करेंगे। इस उदाहरण में शून्य से विभाजन है; IDL एक अंकगणितीय अतिप्रवाह की रिपोर्ट करेगा और संबंधित तत्व में NaN मान संग्रहीत करेगा y सरणी (पहला वाला), लेकिन अन्य सरणी तत्व परिमित होंगे। NaN को इसके द्वारा उत्पन्न विज़ुअलाइज़ेशन से बाहर रखा गया है plot आज्ञा।

अधिकांश अन्य सरणी प्रोग्रामिंग भाषाओं के साथ, आईडीएल वेक्टर संचालन करने में बहुत तेज़ है (कभी-कभी फोरट्रान या सी में एक अच्छी तरह से कोडित कस्टम लूप के रूप में तेज़) लेकिन अगर तत्वों को अलग-अलग प्रसंस्करण की आवश्यकता होती है तो काफी धीमी होती है। इसलिए संख्यात्मक रूप से भारी संगणनाओं के लिए IDL (या उस मामले के लिए किसी अन्य सरणी प्रोग्रामिंग भाषा) का उपयोग करने की कला का एक हिस्सा अंतर्निहित वेक्टर संचालन का उपयोग करना है।

इतिहास
IDL के पूर्ववर्ती संस्करणों को 1970 के दशक में बोल्डर में कोलोराडो विश्वविद्यालय में वायुमंडलीय और अंतरिक्ष भौतिकी (LASP) की प्रयोगशाला में विकसित किया गया था। एलएएसपी में, डेविड स्टर्न वैज्ञानिकों को व्यक्तिगत अनुप्रयोगों को लिखने या संशोधित करने के लिए प्रोग्रामर को नियोजित किए बिना परिकल्पनाओं का परीक्षण करने की अनुमति देने के प्रयासों में शामिल थे। IDL की विकासवादी श्रृंखला में पहला कार्यक्रम जिसे स्टर्न ने विकसित किया था, उसका नाम रूफस था; यह एक साधारण वेक्टर-उन्मुख कैलकुलेटर था जो PDP-12 पर चलता था। यह दो-अक्षर के कोड को स्वीकार करता है जो एक अंकगणितीय ऑपरेशन निर्दिष्ट करता है, ऑपरेंड के रूप में सेवा करने के लिए इनपुट रजिस्टर और गंतव्य रजिस्टर। पीडीपी-8 पर विकसित रूफस का एक संस्करण मार्स मेरिनर स्पेक्ट्रम एडिटर (एमएमईडी) था। एलएएसपी वैज्ञानिकों द्वारा मेरिनर 7 और मेरिनर 9 से डेटा की व्याख्या करने के लिए एमएमईडी का उपयोग किया गया था। बाद में, स्टर्न ने एसओएल नामक एक कार्यक्रम लिखा, जो पीडीपी-8 पर भी चला। अपने पूर्ववर्तियों के विपरीत, यह फोरट्रान-जैसे सिंटैक्स के साथ एक सच्ची प्रोग्रामिंग भाषा थी। एसओएल कुछ आदिम ग्राफिक्स क्षमताओं के साथ एक सरणी-उन्मुख भाषा थी।

स्टर्न ने 1977 में LASP को छोड़कर रिसर्च सिस्टम्स इंक. (RSI) की स्थापना की। पहला RSI उत्पाद PDP-11 के लिए IDL था। इस रिलीज में, आईडीएल द्वारा समर्थित ग्राफिक्स मुख्य रूप से टेक्ट्रोनिक्स टर्मिनल और रास्टर ग्राफिक्स डिस्प्ले थे। RSI ने अपना पहला IDL लाइसेंस नासा के गोडार्ड अंतरिक्ष उड़ान केंद्र  और बॉल एयरोस्पेस एंड टेक्नोलॉजीज कार्पोरेशन को 1979 में बेचा। दो साल बाद RSI ने IDL का एक प्रारंभिक VAX/VMS संस्करण जारी किया, जिसे VAX MACRO और FORTRAN में लिखा गया था। इसने VAX वर्चुअल मेमोरी और 32-बिट एड्रेस स्पेस का लाभ उठाया। वायुमंडलीय अनुसंधान के लिए राष्ट्रीय केंद्र (एनसीएआर), मिशिगन विश्वविद्यालय, बोल्डर में कोलोराडो विश्वविद्यालय और नौसेना अनुसंधान प्रयोगशाला ने इस संस्करण के साथ आईडीएल का उपयोग करना शुरू कर दिया।

1987 में RSI ने IDL के विकास कार्य को यूनिक्स वातावरण में स्थानांतरित कर दिया, जिसके लिए VAX IDL के मौजूदा संस्करण के पोर्ट के बजाय C में कोड को फिर से लिखने की आवश्यकता थी। स्टर्न और अली बहरामी ने सन 3 पर यूनिक्स के लिए आईडीएल को फिर से लिखा, भाषा को बढ़ाने और सुधारने के लिए फिर से लिखने का लाभ उठाया। इसके बाद, आईडीएल को और विस्तारित किया गया और यूनिक्स, वीएमएस, लिनक्स, माइक्रोसॉफ्ट विंडोज (1992) और मैक ओएस (1994) के कई रूपों में पोर्ट किया गया।

1992 में IDL में विजेट्स जोड़े गए, जो ग्राफिकल यूज़र इंटरफ़ेस  के साथ घटना-संचालित प्रोग्रामिंग प्रदान करते हैं। 1997 में आईओएन (आईडीएल ऑन द नेट), एक वेब सर्वर-आधारित प्रणाली, व्यावसायिक रूप से जारी की गई थी। ईएनवीआई (सॉफ्टवेयर) का पहला संस्करण, रिमोट सेंसिंग मल्टीस्पेक्ट्रल और हाइपरस्पेक्ट्रल छवि विश्लेषण के लिए आईडीएल में लिखा गया एक एप्लिकेशन, 1994 में जारी किया गया था। ईएनवीआई (सॉफ्टवेयर) बेटर सॉल्यूशंस कंसल्टिंग, एलएलसी द्वारा बनाया, विकसित और स्वामित्व में था, जब तक कि इसे खरीदा नहीं गया था। ईस्टमैन कोडक द्वारा अक्टूबर 2000 में BSC संयोगवश उनकी RSI की खरीद के साथ हुई। RSI ने 1994 से अक्टूबर 2000 तक BSC, LLC के साथ लाइसेंस समझौते की शर्तों के तहत ENVI (सॉफ्टवेयर) को बेचा, विपणन और समर्थन किया। 1997 में IDL में नई वस्तु और सूचक प्रकार और सीमित वस्तु-उन्मुख प्रोग्रामिंग क्षमताएं जोड़ी गईं।

आईडीएल को व्यापक रूप से अंतरिक्ष विज्ञान में लागू किया गया है, उदाहरण के लिए solarsoft में। यूरोपीय अंतरिक्ष एजेंसी ने Giotto (अंतरिक्ष यान) अंतरिक्ष यान द्वारा लिए गए हैली के धूमकेतु के लगभग सभी चित्रों को संसाधित करने के लिए IDL का उपयोग किया। हबल अंतरिक्ष सूक्ष्मदर्शी की मरम्मत करने वाली टीम ने मुख्य दर्पण में विसंगतियों का निदान करने में सहायता के लिए IDL का उपयोग किया। 1995 में, एक अंतरिक्ष यान पर सवार अंतरिक्ष यात्रियों ने पराबैंगनी विकिरण का अध्ययन करने के लिए लैपटॉप पर लोड किए गए IDL का उपयोग किया। वर्तमान में, अन्य अनुप्रयोगों के बीच, IDL का उपयोग संयुक्त राज्य नौसेना अनुसंधान प्रयोगशाला, यूएसए और रदरफोर्ड एपलटन लेबोरेटरी, यूके में STEREO मिशन के SECCHI भाग के अधिकांश विश्लेषण के लिए किया जा रहा है।

RSI मार्च 2004 में आईटीटी उद्योग की पूर्ण स्वामित्व वाली सहायक कंपनी बन गई। 15 मई 2006 तक, RSI ने ITT Visual Information Solutions के रूप में व्यवसाय करना शुरू कर दिया। प्रभावी 31 अक्टूबर 2011, पुनर्गठन के परिणामस्वरूप, वह कंपनी एक्सेलिस दृश्य सूचना समाधान बन गई।, IDL का स्वामित्व और रख-रखाव  हैरिस भू-स्थानिक  के पास है।

विशेषताएं
कंप्यूटर भाषा के रूप में, IDL:
 * गतिशील रूप से टाइप किया गया है।
 * चर, कार्यों और प्रक्रियाओं के लिए अलग-अलग नामस्थान हैं, लेकिन कोई नामस्थान पदानुक्रम नहीं है।
 * मूल रूप से सिंगल थ्रेडेड था लेकिन अब इसमें कई मल्टी-थ्रेडेड फ़ंक्शन और प्रक्रियाएं हैं।
 * सभी कार्य तर्क हैं मूल्यांकन रणनीति # संदर्भ द्वारा कॉल करें; लेकिन समस्याओं को नीचे देखें।
 * में नामित पैरामीटर हैं जिन्हें कीवर्ड कहा जाता है जो संदर्भ द्वारा पारित किए जाते हैं।
 * संदर्भ या मान द्वारा नेस्टेड रूटीन कॉल में नामित पैरामीटर इनहेरिटेंस प्रदान करता है।
 * चर को पूर्व घोषित करने की आवश्यकता नहीं है।
 * दिनचर्या के बीच वैश्विक मूल्यों को साझा करने के लिए सामान्य ब्लॉक घोषणाएं और सिस्टम चर प्रदान करता है।
 * ऑपरेटर ओवरलोडिंग के साथ-साथ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक मूल रूप प्रदान करता है, जो कुछ हद तक स्मॉलटाक के समान है।
 * कचरा संग्रह के लिए संदर्भ गणना का उपयोग करते हुए, सूचक और वस्तु चर के एक सतत, वैश्विक ढेर को लागू करता है।
 * एक व्याख्या किए गए, स्टैक-आधारित इंटरमीडिएट पी-कोड (ए ला जावा वर्चुअल मशीन) के लिए संकलित करता है।
 * बड़े सरणियों से डेटा निकालने के लिए एक सरल और कुशल इंडेक्स स्लाइस सिंटैक्स प्रदान करता है।
 * विभिन्न पूर्णांक आकार, साथ ही सिंगल और डबल सटीक फ़्लोटिंग पॉइंट वास्तविक और जटिल संख्याएँ प्रदान करता है।
 * संयुक्त डेटा प्रकार प्रदान करता है जैसे कि वर्ण तार, सजातीय प्रकार की सरणियाँ, सूचियाँ, हैश तालिकाएँ, और मिश्रित डेटा प्रकारों की सरल (गैर-श्रेणीबद्ध) रिकॉर्ड संरचनाएँ।

समस्याएं
इन सुविधाओं में से कुछ, जो आईडीएल को अंतःक्रियात्मक रूप से उपयोग करने के लिए बहुत आसान बनाती हैं, बड़े कार्यक्रमों के निर्माण के दौरान भी कठिनाइयों का कारण बनती हैं। एकल नामस्थान विशेष रूप से समस्याग्रस्त है; उदाहरण के लिए, नए अंतर्निर्मित कार्यों को शामिल करने वाले भाषा अद्यतनों ने कभी-कभी बड़े वैज्ञानिक पुस्तकालयों को अमान्य कर दिया है। सरणियों को संदर्भ द्वारा पारित किया जाता है, और यह तंत्र एक उपनेमका से डेटा वापस पास करने के लिए भाषा की एक विज्ञापित विशेषता है - इसके विपरीत, सरणी स्लाइस को पारित होने से पहले कॉपी किया जाता है, ताकि डेटा संशोधन वापस सरणी श्रेणियों में प्रवाहित न हों (बाद में) सबरूटीन बाहर निकलता है), कम से कम आश्चर्य के सिद्धांत का उल्लंघन करता है।

कई ऐतिहासिक अनियमितताएं भाषा की प्रारंभिक विरासत से बची हुई हैं, जिसके लिए प्रोग्रामर द्वारा अलग-अलग वर्कअराउंड की आवश्यकता होती है। उदहारण के लिए:


 * ऐरे इंडेक्सिंग और सबरूटीन एंट्री दोनों को बिल्कुल एक ही सिंटैक्स (कोष्ठक) के साथ किया जा सकता है; यह अस्पष्टता, सभी वेरिएबल्स और सबरूटीन्स के लिए एकल नामस्थान के साथ मिलकर, कोड को काम करना बंद कर सकती है जब नए परिभाषित सबरूटीन्स या भाषा एक्सटेंशन स्थानीय चर नामों के साथ संघर्ष करते हैं। IDL प्रोग्रामर एरे इंडेक्सिंग के लिए स्क्वायर ब्रैकेट्स का उपयोग करके इनमें से कई समस्याओं से बच सकते हैं, जिससे फंक्शन नामों के साथ टकराव से बचा जा सकता है जो कोष्ठक का उपयोग करते हैं।

इस संकलक विकल्प का उपयोग करके पूर्ववर्ती समस्या को कम किया जा सकता है:

COMPILE_OPT STRICTARR

साथ ही, धारा 47D और [http] के परिणामस्वरूप ऑस्ट्रेलिया में IDL EULA के उस प्रावधान का कोई प्रभाव नहीं है उस देश के कॉपीराइट अधिनियम का ://www.austlii.edu.au/au/legis/cth/consol_act/ca1968133/s47h.html 47H]।
 * ITT विज़ुअल इंफॉर्मेशन सॉल्यूशंस | ITT विज़ुअल इंफॉर्मेशन सॉल्यूशंस (ITT VIS), IDL के डेवलपर्स, ने अन्य वातावरणों के साथ बाईटकोड संगतता को रोकने के लिए स्पष्ट कदम उठाए हैं। संकलित रूटीन वाली फ़ाइलें एक बाइनरी टैग-डेटा-संरचना प्रारूप का उपयोग करती हैं जिसे आधिकारिक तौर पर प्रकाशित नहीं किया गया है लेकिन उपयोगकर्ताओं द्वारा इसकी जांच और दस्तावेज किया गया है लेकिन प्रत्येक सहेजी गई फ़ाइल के भीतर एम्बेडेड ASCII पाठ के रूप में निम्नलिखित सूचना भी शामिल है: IDL सहेजें/पुनर्स्थापना फ़ाइलें IDL प्रोग्राम के बारे में अप्रकाशित स्वामित्व वाली जानकारी का प्रतीक हैं। इसलिए इस फाइल की रिवर्स इंजीनियरिंग आईडीएल एंड यूजर लाइसेंस एग्रीमेंट (आईडीएल ईयूएलए) की शर्तों के तहत प्रतिबंधित है। सभी IDL उपयोगकर्ताओं को IDL स्थापित करते समय IDL EULA की शर्तों को पढ़ना और उनसे सहमत होना आवश्यक है। IDL सहेजें/पुनर्स्थापना प्रारूप में फ़ाइलों को पढ़ने या लिखने वाले सॉफ़्टवेयर के पास ITT Visual Information Solutions का लाइसेंस होना चाहिए जो स्पष्ट रूप से ऐसा करने का अधिकार प्रदान करता हो। इस मामले में, आपके निरीक्षण के लिए लाइसेंस को सॉफ्टवेयर के साथ शामिल किया जाएगा। कृपया आईटीटी विज़ुअल इंफॉर्मेशन सॉल्यूशंस को ऐसे सॉफ़्टवेयर की रिपोर्ट करें जिसके पास ऐसा लाइसेंस नहीं है..., कथन का न्यायालय में परीक्षण नहीं किया गया है।

उदाहरण
निम्नलिखित ग्राफिक्स आईडीएल (स्रोत कोड शामिल) के साथ बनाए गए थे:


 * [[:Image:Random-data-plus-trend-r2.png|रैंडम डेटा प्लस ट्रेंड की इमेज, बेस्ट-फिट लाइन और अलग-अलग स्मूथिंग के साथ
 * [[:Image:Epica-vostok-40kyr.png|उम्र और गहराई के खिलाफ डेल्टा-ओ-18 के भूखंड (ईपिका और वोस्तोक से)
 * कोयोट आईडीएल गैलरी आईडीएल इमेजिंग के उदाहरण

यह भी देखें

 * संख्यात्मक-विश्लेषण सॉफ्टवेयर की सूची
 * ईएनवीआई (सॉफ्टवेयर) - आईडीएल में निर्मित एक इमेज प्रोसेसिंग सॉफ्टवेयर पैकेज
 * IRAF - NOAO द्वारा निर्मित एक मुक्त, चित्रमय डेटा कटौती वातावरण
 * MATLAB - IDL के समान क्षमता प्रदान करने वाला एक तकनीकी कंप्यूटिंग वातावरण
 * NumPy - Python (प्रोग्रामिंग भाषा) के लिए एक एक्सटेंशन जो इसे IDL के समान सरणी गणित क्षमताएं देता है
 * [[पर्ल डेटा लैंग्वेज]] (पीडीएल) - पर्ल का एक विस्तार जो इसे आईडीएल के समान सरणी गणित क्षमताएं देता है
 * साइलैब - एक उच्च-स्तरीय, संख्यात्मक रूप से उन्मुख प्रोग्रामिंग भाषा जिसे वैज्ञानिक कंप्यूटिंग और इंटरफेस के लिए डिज़ाइन किया गया है
 * Solarsoft - IDL में मुख्य रूप से लिखे गए सौर डेटा विश्लेषण और अंतरिक्ष यान संचालन गतिविधियों के लिए पुस्तकालय
 * GNU डेटा लैंग्वेज - GNU डेटा लैंग्वेज, IDL के समान एक निःशुल्क कार्यान्वयन।
 * फॉल्टी लैंग्वेज - फॉल्टी लैंग्वेज एक IDL8 (इंटरएक्टिव डेटा लैंग्वेज) संगत कंपाइलर है।

बाहरी संबंध

 * IDL home page
 * Coyote's Guide to IDL Programming
 * The IDL Astronomy User's Library at NASA Goddard
 * Fawlty Language home page