موديليكا
لغة موديليكا أو مودليكا هي لغة برمجة تستخدم في النمذجة وهي كائنيّة المنحى (شيئية أو بالإنجليزية: object-oriented) متعددة المجالات وتستخدم في النمذجة الموجّهة للمكوّنات (الهندسية مثلا) في أنظمة معقّدة مثل تلك الأنظمة التي تحوي مكوّنات جزئية ميكانيكية أو كهربية أو إلكترونية أو هيدروليكية أو حرارية أو خاصة بالتحكم أو خاصة بالقدرة الكهربائيّة أو موجّهة لعملية معيّنة. استخدامها هو أقرب إلى لغة في.إتش.دي.إل-أا.إم.إس VHDL-AMS وفِريلوج Verilog (تلك اللغات المستنبطة من صناعة الإلكترونيات) بمعنى أنها تصف النظام في صورة مجموعة من المعادلات. والمحاكي المرتبط لها مهمته إيجاد حل لمنظومة المعادلات في كل خطوة زمنية (مثلا : كل ثانية).
اللغة لها صفه أكثر عمومية من منافساتها ، وتستفيد من البرمجة كائنيّة التوجه (ومبدأ توارث خصائص نموذج معيّن من خصائص نموذج آخر مما يعطي مرونة أكبر في الكتابة). ومع ذلك ، فإن استخدامها حاليا محدود جدا في مجال الالكترونيات، وإن كانت مستخدمة في العديد من المجالات الأخرى.
لغة موديليكا هي لغة حرة (مجانية ومفتوحة المصدر) تم تطويرها بواسطة جمعية موديليكا وهي جمعية غير ربحيّة. اللغة والمكتبات وبعض أدوات المحاكاة لدى موديليكا هي مجانية ومفتوحة المصدر وقد تم استخدامها في التطبيقات الصناعية. والتطوير والترويج لموديليكا تنظمه جمعية موديليكا Modelica Association.
جمعية موديليكا تطور أيضا مكتبة موديليكا القياسية الحرة والتي تحوي حوالي 1360 نموذج عام للمكوّنات و 1280 وظيفة برمجيّة (دالّة برمجية) في مختلف المجالات، وذلك حتى الإصدار 3.2.1 .
الغرض من اللغة هو وصف الأنظمة الديناميكية. النماذج توصف عن طريق المعادلات التفاضلية و المعادلات الجبرية والمعادلات المتقطّعة (أو بالإنجليزية discrete) ويمكن أيضا عمل نماذج بلغة موديليكا عن طريق المعادلات التفاضلية الجزئية بعد عمل التقطيع الرياضي discretisation من أجل تحويل تلك المعادلات إلى كود برمجي. كما تتيح اللغة البرمجة الرسوميّة وتدعم سلسلة مراتب الحالة للآلات ولها العديد من المميزات الأخرى.
في الواجهة الأمامية للتطبيقات البرمجيّة التجارية للغة مودليكا يأتي برنامج آمِي.سيم AMESim لشركة إيماجين إس.أا Imagine SA الفرنسية (والتي هي الآن جزء من شركة سيمنز بي.إل.إم Siemens PLM للبرمجيات)، ودايمولا Dymola لشركة دايناسيم أا.بي Dynasim AB السويدية (والتي هي الآن جزء من شركة أنظمة داسو Dassault Systemes)، وأنظمة كاتيا CATIA Systems لشركة أنظمة داسو Dassault Systemes (وأنظمة كاتيا تعتبر من الأنظمة الرئيسية المستخدمة في التصميم باستخدام الحاسب الآلي CAD)، وساي.مودليكا CyModelica لشركة معامل ساي.ديزاين CyDesign الأمريكية والتي أصبحت الآن مجموعة إي.إس.آي ESI Group، وبرنامج وولفرام سيستيم.موديلَر لنمذجة الأنظمة Wolfram SystemModeler (والذي كان يسمى سابقا ماث.مودليكا MathModelica) لشركة وولفرام ماث.كُور أا.بيWolfram MathCore AB السويدية (والتي هي الآن جزء من شركة وولفرام للأبحاث Wolfram Research)، وبرنامج سيميوليشن.إكس للمحاكاة SimulationX للشركة الألمانية آي.تي.آي المحدودة ITI GmbH، وبرنامج مابل.سيم MapleSim للشركة الكندية مابلسوفت Maplesoft.
جا.موديليكا دوت أورج JModelica.org هي منصّة مرنة ومفتوحة المصدر تم بناؤها على لغة موديليكا وتستخدم في الاستمثال (الأمثلة أو بالإنجليزية: optimization) وفي المحاكاة وتحليل النظم الديناميكية المعقدة. الهدف الرئيسي من هذا المشروع كان عمل منصّة مفتوحة المصدر صالحة للاستخدام في الأغراض الصناعية وتستخدم في المحاكاة والاستمثال لنماذج لغة موديليكا، وفي ذات الوقت، تقدّم منصّة مرنة تعمل كمعمل افتراضي يستخدم في مناهج وخوارزميات البحث والتطوير.
أوبن موديليكا (موديليكا مفتوحة المصدر أو OpenModelica) هي بيئة برمجيّة تستخدم في المحاكاة والنمذجة وهي مفتوحة المصدر ومبنيّة على لغة موديليكا وهي موجّهة للاستخدام الأكاديمي والصناعي.
وتطويرها على المدى الطويل هو مهمة منظّمة غير ربحيّة هي المجموعة المتحدة لموديليكا مفتوحة المصدر Open Source Modelica Consortium OSMC.
إن الهدف من الجهد المبذول في أوبن موديليكا OpenModelica هو بناء بيئة برمجيّة شاملة ومفتوحة المصدر تستخدم لغة موديليكا وتترجم الكود الخاص بها وتقوم بعمل المحاكاة والنمذجة بناء على برمجيّات حرّة (مجّانية ومفتوحة المصدر) يتم نشرها في الصورة الثنائية (بالإنجليزية: binary أي: التنفيذية أو بالإنجليزية: executable) بالإضافة إلى الكود المصدري (بالإنجليزبة: source code) لتستخدم في البحث والتدريس بالإضافة إلى الاستخدام الصناعي.
بيئة المحاكاة الحرة سايكوس Scicos (وهي جزء من برنامج سايلاب SciLab وتسمّى أيضا إكس.سي.أو.إس Xcos) تستخدم لغة موديليكا بشكل جزئي لنمذجة المكوّنات (الهندسيّة مثلا).
ولتلخيص ما سبق يمكن القول بأن موديليكا تستخدم في :
إن السعي لتصميم لغة موديليكا قد بدأه هيلدنج المكفست في أيلول/سبتمبر عام 1996. وكان الهدف هو تطوير لغة برمجة كائنية التوجه (شيئية) تستخدم لنمذجة الأنظمة التقنية (التكنولوجية) تمكّن المهندسين من إعادة استخدام وتبادل نماذج الأنظمة الديناميكية بهيئة نمطيّة (قياسيّة أو بالإنجليزية: standardized format).
لغة موديليكا 1.0 بنيت على أطروحة من رسالة الدكتوراه الخاصة بهيلدنج المكفست وعلى خبرة لغات النمذجة: ألّان Allan ودايمولا Dymola و إن.إم.إف NMF وأوبجكت.ماث ObjectMath وأومولا Omola و +سيدوبس SIDOPS+ وسمايل Smile.
كان هيلدنج المكفست المخطط الرئيسي للغة موديليكا، ولكن العديد من الناس الآخرين ساهموا كذلك .
وفي أيلول/سبتمبر عام 1997 تم إطلاق الإصدار 1.0 من مواصفات لغة موديليكا والتي كانت الأساس للتطبيق العملي للنموذج المبدئي الذي كان من خلال نظام برنامج تجاري يدعى دايمولا Dymola.
في عام 2000 ، أنشئت جمعية غير ربحية هي جمعية موديليكا وأنشئت لكي تدير التطوير المستمر للغة موديليكا ولمكتبة موديليكا القياسية الحرة.
وفي نفس العام، بدأ استخدام لغة موديليكا في التطبيقات الصناعية.
تشبه لغة مودلكا لغات البرمجة كائنية التوجه مثل سي++ أو جافا، إلا إنها تختلف عنها في جانبين من الجوانب المهمة.
الأول هو أن لغة موديليكا هي لغة نمذجة وليست لغة برمجة تقليدية.
فالأصناف (الفصائل أو بالإنجليزية: classes) في لغة موديليكا لا يتم ترجمة الكود البرمجي لها بالطريقة المعتادة، بل يتم تحويل الأصناف إلى كائنات برمجيّة (أشياء برمجيّة أو بالإنجليزية: objects) وبعد ذلك يتم التعامل معها بواسطة محرك المحاكاة (بالإنجليزية: simulation engine).
ومحرّك المحاكاة لا يتم تحديده بواسطة اللغة (أي: لغة موديليكا)، ولكن بعض الإمكانيات التي يجب أن تكون متوفرة فيه هي التي يتم تحديدها.
والجانب الثاني هو أنه بالرغم من أن الأصناف (الفصائل أو بالإنجليزية: classes) قد تحوي مكوّنات خوارزميّة تشبه تلك التي توجد في العبارات (أو الجُمل) والبلوكات البرمجيّة في لغات البرمجة التقليدية، إلا أن المحتوى الرئيسي لها هنا هو مجموعة من المعادلات الرياضيّة.
فعلى النقيض من عبارة التعيين (بالإنجليزية: assignment) المعتادة التي تشبه هذه
x := 2 + y
والتي فيها الطرف الأيسر من العبارة يتم تعيين قيمة محسوبة له عن طريق الطرف الأيمن، فالمعادلات (في لغة موديليكا) يوجد فيها تعبيرات رياضية في كلا الطرفين الأيمن والأيسر، مثل هذه المعادلة،
x + y = 3 * z
فالمعادلات هنا ليس المقصود منها وصف التعيين (بالإنجليزية: assignment) بل هي تصف التساوي (بالإنجليزية: equality).
وبمصطلحات لغة موديليكا، يمكن القول بأن المعادلات لا تحتاج إلى تعريف مسبق للمقدّمات البرمجية.
ومحرك المحاكاة قد يعالج المعادلات رمزيّا (وعادة يكون هذا ضروريا) وذلك لتحديد ترتيب عمليات التنفيذ وكذلك تحديد أي من المكونات في المعادلة قد يتم اعتبارها مدخلات وأيها قد يتم اعتبارها مخرجات.