لغة البرمجة IDL
لغة IDL ، اختصارًا لـ Interactive Data Language (لغة البيانات التفاعلية )، هي لغة برمجة تُستخدم لتحليل البيانات . وهي شائعة الاستخدام في مجالات علمية محددة، مثل علم الفلك ، وفيزياء الغلاف الجوي ، والتصوير الطبي . تشترك IDL في بنية نحوية مشتركة مع PV-Wave ، وقد نشأتا من نفس قاعدة البيانات ، على الرغم من اختلاف اللغتين لاحقًا في التفاصيل. كما توجد تطبيقات مجانية أو بدون تكلفة ، مثل GNU Data Language (GDL) و Fawlty Language (FL).
ملخص
لغة IDL هي لغة متجهة ، رقمية ، وتفاعلية، وتُستخدم عادةً للمعالجة التفاعلية لكميات كبيرة من البيانات (بما في ذلك معالجة الصور ). يتضمن تركيبها العديد من البنى من لغة فورتران وبعضها من لغة سي .
نشأت لغة IDL من لغة فورتران VMS المبكرة ، ولا يزال تركيبها النحوي يُظهر تراثها:
x = findgen ( 100 ) / 10 y = sin (x) / x plot ,x,y تقوم الدالة findgen في المثال أعلاه بإرجاع مصفوفة أحادية البعد من الأرقام العشرية، بقيم تساوي سلسلة من الأعداد الصحيحة تبدأ من 0.
لاحظ أن العملية في السطر الثاني تُطبَّق بطريقة مُتجهة على مصفوفة العناصر المئة المُنشأة في السطر الأول، على غرار ما تفعله لغات برمجة المصفوفات العامة (مثل APL و J و K ). يحتوي هذا المثال على قسمة على صفر؛ سيُبلغ IDL عن تجاوز حسابي ، ويُخزِّن قيمة NaN في العنصر المُقابل من مصفوفة y (العنصر الأول)، بينما ستكون عناصر المصفوفة الأخرى محدودة. يتم استبعاد قيمة NaN من التمثيل المرئي الناتج عن أمر الرسم .
كما هو الحال مع معظم لغات برمجة المصفوفات الأخرى، تتميز لغة IDL بسرعة فائقة في عمليات المتجهات (أحيانًا بنفس سرعة حلقة مخصصة مكتوبة جيدًا بلغة Fortran أو C)، ولكنها بطيئة نسبيًا عند الحاجة إلى معالجة العناصر بشكل فردي. لذا، فإن جزءًا من فن استخدام IDL (أو أي لغة برمجة مصفوفات أخرى) لإجراء العمليات الحسابية المعقدة هو الاستفادة من عمليات المتجهات المدمجة.
تاريخ
طُوِّرت الإصدارات السابقة من لغة IDL في سبعينيات القرن الماضي في مختبر فيزياء الغلاف الجوي والفضاء (LASP) بجامعة كولورادو في بولدر . في LASP، شارك ديفيد ستيرن في جهودٍ لتمكين العلماء من اختبار الفرضيات دون الحاجة إلى مبرمجين لكتابة أو تعديل التطبيقات الفردية. كان أول برنامج في سلسلة تطوير IDL الذي طوره ستيرن يُدعى Rufus؛ وهو عبارة عن آلة حاسبة بسيطة موجهة نحو المتجهات تعمل على جهاز PDP-12 . كان يقبل رموزًا من حرفين تُحدد عملية حسابية، وسجلات الإدخال التي تُستخدم كمعاملات، وسجل الوجهة. أُطلق على إصدار من Rufus طُوِّر على جهاز PDP-8 اسم محرر طيف مركبة مارس مارينر (MMED). استخدم علماء LASP برنامج MMED لتفسير بيانات مركبتي مارينر 7 ومارينر 9. لاحقًا، كتب ستيرن برنامجًا يُدعى SOL، والذي كان يعمل أيضًا على جهاز PDP-8. على عكس الإصدارات السابقة، كان SOL لغة برمجة حقيقية ذات بنية نحوية شبيهة بلغة FORTRAN. كانت لغة SOL لغة موجهة نحو المصفوفات مع بعض إمكانيات الرسومات البدائية. [ 1 ]
ترك ستيرن مختبر فيزياء الغلاف الجوي والفضاء (LASP) ليؤسس شركة أنظمة الأبحاث (RSI) عام 1977. وكان أول منتج لشركة RSI هو برنامج IDL لجهاز PDP-11. [ 1 ] في هذا الإصدار، كانت الرسومات التي يدعمها IDL تقتصر بشكل أساسي على محطات Tektronix وشاشات عرض الرسومات النقطية. باعت RSI أولى تراخيص IDL لمركز غودارد لرحلات الفضاء التابع لناسا وشركة Ball Aerospace & Technologies Corp. عام 1979. بعد ذلك بعامين، أصدرت RSI نسخة أولية من IDL لنظام VAX/VMS، مكتوبة بلغة VAX MACRO ولغة FORTRAN. استفادت هذه النسخة من الذاكرة الافتراضية لنظام VAX ومساحة العناوين 32 بت. [ 1 ] بدأ المركز الوطني لأبحاث الغلاف الجوي (NCAR) وجامعة ميشيغان وجامعة كولورادو ومختبر الأبحاث البحرية باستخدام IDL مع هذا الإصدار.
في عام ١٩٨٧، حوّلت شركة RSI أعمال تطوير لغة IDL إلى بيئة يونكس ، مما استلزم إعادة كتابة الكود بالكامل بلغة C بدلاً من نقل النسخة الموجودة من VAX IDL. [ ١ ] أعاد ستيرن وعلي بهرامي كتابة IDL لنظام يونكس على جهاز Sun 3، مستفيدين من إعادة الكتابة لتوسيع اللغة وتحسينها. لاحقاً، تم توسيع IDL ونقلها إلى عدة إصدارات من يونكس، وVMS، ولينكس، ومايكروسوفت ويندوز (١٩٩٢)، وماك أو إس (١٩٩٤).
أُضيفت الأدوات المصغّرة إلى لغة IDL عام 1992، مما أتاح برمجةً قائمةً على الأحداث مع واجهات مستخدم رسومية . وفي عام 1997، طُرح نظام ION (IDL على الشبكة)، وهو نظام قائم على خادم ويب، تجاريًا. أُصدرت النسخة الأولى من برنامج ENVI ، وهو تطبيق لتحليل صور الاستشعار عن بُعد متعددة الأطياف وفائقة الأطياف مكتوب بلغة IDL، عام 1994. ابتكرت شركة Better Solutions Consulting, LLC برنامج ENVI وطورته وامتلكته حتى اشترته شركة Eastman Kodak من BSC في أكتوبر 2000 بالتزامن مع استحواذها على شركة RSI. قامت RSI ببيع وتسويق ودعم برنامج ENVI بموجب اتفاقية ترخيص مع BSC, LLC من عام 1994 حتى أكتوبر 2000. أُضيفت أنواع جديدة من الكائنات والمؤشرات، بالإضافة إلى إمكانيات محدودة للبرمجة كائنية التوجه ، إلى لغة IDL عام 1997.
استُخدمت لغة IDL على نطاق واسع في علوم الفضاء، لا سيما في الفيزياء الشمسية . فقد استخدمت وكالة الفضاء الأوروبية IDL لمعالجة معظم صور مذنب هالي التي التقطتها المركبة الفضائية جيوتو . كما استخدم فريق إصلاح تلسكوب هابل الفضائي IDL لتشخيص الأعطال في المرآة الرئيسية. وفي عام 1995، استخدم رواد فضاء على متن مكوك فضائي IDL المثبت على حاسوب محمول لدراسة الأشعة فوق البنفسجية. وحاليًا، تُستخدم IDL، من بين تطبيقات أخرى، في معظم تحليلات جزء SECCHI من مهمة STEREO في مختبر الأبحاث البحرية الأمريكية (NRL ) ومختبر رذرفورد أبليتون في المملكة المتحدة.
أصبحت شركة RSI شركة تابعة مملوكة بالكامل لشركة ITT Industries في مارس 2004. وفي 15 مايو 2006، بدأت RSI أعمالها تحت اسم ITT Visual Information Solutions . وفي 31 أكتوبر 2011، ونتيجةً لإعادة الهيكلة، أصبحت الشركة تُعرف باسم Exelis Visual Information Solutions . وفي عام 2015، استحوذت شركة Harris Geospatial Solutions على شركة IDL ، والتي أصبحت فيما بعد L3Harris Geospatial Solutions . وفي أبريل 2023، استحوذت شركة NV5 Geospatial على شركة IDL .
سمات
كلغة برمجة حاسوبية، IDL:
- يتم تحديد نوعها ديناميكيًا .
- يحتوي على مساحات أسماء منفصلة للمتغيرات والوظائف والإجراءات، ولكن لا يوجد تسلسل هرمي لمساحات الأسماء.
- كانت في الأصل أحادية الخيوط ولكنها الآن تحتوي على العديد من الوظائف والإجراءات متعددة الخيوط.
- يتم تمرير جميع وسائط الدالة بالمرجع ؛ ولكن انظر "المشاكل" أدناه.
- يحتوي على معلمات مُسماة تُسمى الكلمات المفتاحية والتي يتم تمريرها بالمرجع.
- يوفر توريث المعلمات المسماة في استدعاءات الروتين المتداخلة، عن طريق المرجع أو القيمة.
- لا يتطلب تعريف المتغيرات مسبقاً .
- يوفر تعريفات الكتل المشتركة ومتغيرات النظام لمشاركة القيم العامة بين الإجراءات.
- يوفر شكلاً أساسياً من البرمجة الموجهة للكائنات، يشبه إلى حد ما لغة Smalltalk ، بالإضافة إلى تحميل المعاملات الزائدة .
- ينفذ كومة عالمية مستمرة من مؤشرات ومتغيرات الكائنات، باستخدام عد المراجع لجمع البيانات المهملة.
- يتم تجميعها إلى رمز وسيط يتم تفسيره ويعتمد على المكدس (على غرار الآلة الافتراضية لجافا ).
- يوفر صيغة فهرسة بسيطة وفعالة لاستخراج البيانات من المصفوفات الكبيرة.
- يوفر أحجامًا مختلفة للأعداد الصحيحة، بالإضافة إلى أعداد حقيقية ومركبة ذات دقة مفردة ومزدوجة.
- يوفر أنواع بيانات مركبة مثل سلاسل الأحرف، والمصفوفات المتجانسة، والقوائم، وجداول التجزئة ، وهياكل السجلات البسيطة (غير الهرمية) لأنواع البيانات المختلطة.
مشاكل
بعض هذه الميزات، التي تجعل استخدام IDL تفاعليًا في غاية السهولة، تُسبب أيضًا صعوبات عند بناء برامج كبيرة. يُعدّ نطاق الاسم الواحد إشكاليًا بشكل خاص؛ فعلى سبيل المثال، أدت تحديثات اللغة التي تتضمن وظائف مدمجة جديدة في بعض الأحيان إلى إبطال عمل مكتبات علمية كبيرة. [ 2 ]
يتم تمرير المصفوفات بالمرجع، وهذه الآلية هي ميزة معلنة للغة لإعادة البيانات من روتين فرعي - على النقيض من ذلك، يتم نسخ شرائح المصفوفة قبل تمريرها، بحيث لا تتدفق تعديلات البيانات مرة أخرى إلى نطاقات المصفوفة (بعد خروج الروتين الفرعي)، مما ينتهك مبدأ أقل قدر من المفاجأة .
لا تزال العديد من المخالفات التاريخية باقية من التراث المبكر للغة، مما يتطلب حلولاً فردية من المبرمج. على سبيل المثال:
- يمكن تنفيذ فهرسة المصفوفات وإدخال الدوال الفرعية باستخدام نفس الصيغة تمامًا (الأقواس)؛ هذا الغموض، بالإضافة إلى استخدام مساحة اسم واحدة لجميع المتغيرات والدوال الفرعية، قد يتسبب في توقف البرنامج عن العمل عند تعارض الدوال الفرعية المُعرَّفة حديثًا أو امتدادات اللغة مع أسماء المتغيرات المحلية. يستطيع مبرمجو لغة تعريف الواجهة (IDL) تجنب العديد من هذه المشاكل باستخدام الأقواس المربعة لفهرسة المصفوفات، وبالتالي تجنب التعارضات مع أسماء الدوال التي تستخدم الأقواس.
يمكن التخفيف من المشكلة السابقة باستخدام خيار المُصرّف هذا:
COMPILE_OPT STRICTARR
اتخذت شركة ITT Visual Information Solutions (ITT VIS) ، مطورو لغة IDL، خطوات واضحة لمنع توافق رمز البايت مع بيئات أخرى. تستخدم الملفات التي تحتوي على إجراءات مُجمّعة تنسيق بنية بيانات ثنائية مُوسومة لم يُنشر رسميًا، ولكن تم فحصه وتوثيقه من قِبل المستخدمين [ 3 ] ، كما تحتوي أيضًا على الإشعار التالي كنص ASCII مُضمّن داخل كل ملف محفوظ:
تحتوي ملفات الحفظ/الاستعادة الخاصة ببرنامج IDL على معلومات ملكية غير منشورة حول البرنامج. لذا، يُحظر إجراء هندسة عكسية لهذا الملف بموجب شروط اتفاقية ترخيص المستخدم النهائي لبرنامج IDL (IDL EULA). يُطلب من جميع مستخدمي IDL قراءة شروط اتفاقية ترخيص المستخدم النهائي والموافقة عليها عند تثبيت البرنامج. يجب أن يكون لدى أي برنامج يقرأ أو يكتب ملفات بتنسيق الحفظ/الاستعادة الخاص ببرنامج IDL ترخيص من شركة NV5 Geospatial Solutions, Inc. يمنح صراحةً الحق في القيام بذلك. في هذه الحالة، سيتم تضمين الترخيص مع البرنامج للاطلاع عليه. يُرجى إبلاغ مدير حسابك أو مندوب المبيعات عن أي برنامج لا يحمل هذا الترخيص.
اعتبارًا من أغسطس 2023 لم يتم اختبار هذا البيان في محكمة قانونية. كما أن هذا البند من اتفاقية ترخيص المستخدم النهائي (EULA) الخاصة بـ IDL لا يسري في أستراليا، وذلك بموجب المادتين 47D و 47H من قانون حقوق النشر الأسترالي.
أمثلة
تم إنشاء الرسومات التالية باستخدام لغة IDL (يتضمن الكود المصدري):
- صورة لبيانات عشوائية بالإضافة إلى الاتجاه، مع خط أفضل ملاءمة وتنعيمات مختلفة
- رسوم بيانية لنسبة دلتا-أو-18 مقابل العمر والعمق (من EPICA و Vostok)
- أمثلة من معرض صور IDL لـ coyote IDL
انظر أيضاً
- قائمة برامج التحليل العددي
- ENVI – حزمة برامج لمعالجة الصور مبنية بلغة IDL
- IRAF – بيئة مجانية لمعالجة البيانات الرسومية من إنتاج NOAO
- MATLAB – بيئة حوسبة تقنية توفر إمكانيات مشابهة لـ IDL
- NumPy – إضافة للغة بايثون تمنحها إمكانيات حسابية للمصفوفات مشابهة لتلك الموجودة في IDL
- لغة بيانات بيرل (PDL) – امتداد للغة بيرل يمنحها إمكانيات حسابية على المصفوفات مشابهة لتلك الموجودة في لغة IDL
- سايلاب - لغة برمجة عالية المستوى ذات توجه عددي مصممة للحوسبة العلمية والواجهات
- Solarsoft – مكتبة لتحليل البيانات الشمسية وأنشطة تشغيل المركبات الفضائية مكتوبة بشكل أساسي بلغة IDL
- GDL – لغة بيانات GNU، وهي تطبيق مجاني مشابه لـ IDL.
- لغة فاولتي - لغة فاولتي هي مترجم متوافق مع IDL8 (لغة البيانات التفاعلية).
مراجع
- 1 2 3 4 شينلي، مايك (1991-01-19). "أسئلة وأجوبة حول IDL" . مؤرشف من الأصل بتاريخ 2018-10-07 . تم الاطلاع عليه بتاريخ 8 فبراير 2019 .
- ↑ فانينغ، ديفيد. "تعارضات تسمية البرامج في IDL 8" . مؤرشف من الأصل في 6 مارس 2014. تم الاطلاع عليه في 30 سبتمبر 2014 .
- ↑ ماركواردت، كريج (21-12-2011). "مواصفات تنسيق غير رسمية لملف IDL "SAVE"" . تم الاسترجاع في 13-02-2013 .
روابط خارجية
- الصفحة الرئيسية لـ IDL
- دليل كويوت لبرمجة IDL ( مؤرشف بتاريخ 24 أغسطس 2023 في أرشيف الإنترنت)
- مكتبة مستخدمي علم الفلك IDL في مركز غودارد التابع لناسا، مؤرشفة بتاريخ 30 أغسطس 2005 على موقع Wayback Machine
- الصفحة الرئيسية للغة فولتي
- برنامج معالجة الصور
- لغات برمجة المصفوفات
- برامج رسومات علوم الأرض
- لغات البرمجة العددية
- برنامج الرسم البياني
- لغات البرمجة التي تم إنشاؤها عام 1977
