جنو أوكتاف

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
جنو أوكتف
Gnu-octave-logo.svg
Octave workshop screenshot.png
معلومات عامة
نوع
سمي باسم
نظام التشغيل
النموذج المصدري
المطور الأصلي
موقع الويب
octave.org (الإنجليزية) عدل القيمة على Wikidata
معلومات تقنية
أدوات الواجهة أو إطار العمل
نمط البرمجة
لغة البرمجة
التوثيق
الإصدار الأول
الإصدار الأخير
المستودع
الرخصة
الملفات المقروءة
  • GNU Octave Matrix data (text) (en) ترجم عدل القيمة على Wikidata
الملفات المنتجة
  • GNU Octave Matrix data (text) (en) ترجم عدل القيمة على Wikidata
  • التسلسل
    تأثر بـ

    أوكتف (بالإنجليزية: GNU Octave)‏ هو برنامج حاسوب يؤدي عمليات التحليلات العددية وهو في معظمه متوافق مع ماتلاب، البرنامج جزء من مشروع جنو، لذلك فهو واحد من البرمجيات الحرة تحت بنود رخصة جنو العمومية.[9][10][11]

    تاريخ[عدل]

    المشروع باشر العمل حوالي عام 1988. كان من المقرر في البداية ان يكون مرافقاً لدورة في تصميم مفاعل كيميائي. بدأ التطوير الحقيقي بواسطة جون أيتون في عام 1992. الإصدارية التجريبية الأولى (ألفا) كانت في يوم 4 يناير 1993 وفي يوم 17 فبراير، 1994 تم إصدار نسخة 1.0. نسخة 3.0 صدرت في يوم 21 ديسمبر، 2007.

    سمي البرنامج على اسم اوكتف ليفينسبل، بروفيسور سابق كان المبرمج الرئيسي تلميذاً له وكان من المعرف عنه إمكانيته بالقيام بعمليات حسابية معقدة بسرعة عالية باستخدام ورقة وقلم فقط دون الاستعانة بالة حساب إلكترونية.

    تفاصيل تقنية[عدل]

    • كتبت اوكتف بلغة سي++ باستخدام مكتبة STL.
    • تستخدم اوكتف مفسر لتنفيذ البرامج المكتوبة بلغة اوكتف.
    • تعد اوكتف قابلة للتوسيع باستخدام اجزاء ديناميكية قابلة للتحميل.
    • مفسر اوكتف يعمل بصورة تامة مع برامج غنوبلوت وGrace لرسم المخططات، الرسوم البيانية وغيرها، وكذلك طباعتها أو حفظها.

    لغة اوكتف[عدل]

    لغة اوكتف هي لغة برمجة تفسيرية وهيكلية (مشابهة للغة سي وتدعم العديد من دول مكتبة سي القياسية وكذلك عدد من استدعائات ودوال نظام يونكس. بالرغم من ذلك لكنه لا يدعم تمرير المعطيات بالمصدر.

    برامج اوكتف تتضمن مجموع من استدعاءات الدوال أو على شكل نصيص. صياغتها مبنية على مصفوفة وتقوم بتوفير مختلف الدوال لعمليات الدوال. اللغة ليست كائنية التوجه ولكنها تدعم بنية بيانات مختلفة.

    صياغتها شبيهة جداً بصياغة برمجة ماتلاب والنصيص المبرمج بعناية سوف يستطيع العمل على كل من اوكتف وماتلاب.

    بالأمكان نسخ واستخدام اوكتف بحرية وبدون مقابل لأنه مرخص ضمن بنود رخصة جنو العمومية. البرنامج يعمل تحت معظم أنظمة يونكس والأنظمة الشبيهة بيونكس، وكذلك مايكروسوفت ويندوز.

    مزايا ملحوظة[عدل]

    تكملة الأمر واسم المتغير

    كتابة رمز TAB في سطر الأوامر سوف يجعل اوكتف يحاول أن يكمل كتابة اسم المتغير، الدالة أو الملف (مشابه لتكملة الاوامر في باش). اوكتف يستخم النص قبل المؤشر كمؤشر اولي على الاسم المراد اكماله.

    تاريخ الأوامر

    اوكتف يحفظ الاوامر المكتبة في خزان داخلي عند تشغيله بصورة تفاعلية لكي يكون بالأمكان استرجاعها والتعديل عليها.

    هياكل البيانات

    يتضمن اوكتف كمية محدودة من دعم تنظيم البيانات في الهياكل. مثلاً:

    octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
    octave:2> x.a
    x.a = 1
    octave:3> x.b
    x.b =
    
     1 2
     3 4
    
    octave:4> x.c
    x.c = string
    
    مشغلات بووليان ذات الدائرة القصيرة

    مشغلات '||' و'&&' المنطقية في اوكتف تعمل بأسلوب الدائرة القصيرة (كما في مثيلاتها في لغة سي) عكس مشغلات '|' و'&'.

    مشغلات الزيادة والنقصان

    تتضمن اوكتف مشغلات زيادة ونقصان مشابهة للموجودة في لغة سي وهما '++' و'--' في كلا من اشكالهم (قبل وبعد).

    اكمال العملية قبل الانتهاء

    اوكتف يدعم شكلاً محدود من معالجة الاخطاء مبنية على نموذج 'unwind-protect' في لغة ليسب، الشكل العام لهذا النموذج يكون كما في المثال الأتي:

    unwind_protect
      body
    unwind_protect_cleanup
      cleanup
    end_unwind_protect
    
    قوائم معطيات طول المتغير

    لدى اوكتف الية حقيقة لمعاملة الدوال التي تاخذ عدد غير محدد من المعطيات بدون حد أعلى واضح. يستخم المعطى الخاص المسمى varargin لتحديد قائمة تتألف من صفر إلى أكثر من المعطيات كالمعطى الأخير (أو الوحيد) في القائمة، مثال على ذلك:

    function s = plus (varargin)
      if (nargin==0)
        s = 0;
      else
        s = varargin{1} + plus (varargin{2:nargin});
      endif
    endfunction
    
    قائمة استرجاع طول المتغير

    بالإمكان استرجاع أي عدد من القيم في دالة ما عن طريق استخدام دالة الاسترجاع الخاصة varargout، على سبيل المثال:

    function varargout = multiassign (data)
      for k=1:nargout
        varargout{k} = data(:,k);
      endfor
    endfunction
    
    تكامل C++

    بالأمكان تنفيذ أوامر اوكتف في برنامج مكتوب بلغة سي++ بصورة مباشرة. في شفرة مصدرية صغيرة لأستدعاء rand)[9000,1]) على سبيل المثال:

      #include <octave/oct.h>
    ...
      ColumnVector NumRands(2);
      NumRands(0) = 9000;
      NumRands(1) = 1;
      octave_value_list f_arg, f_ret;
      f_arg(0) = octave_value(NumRands);
      f_ret = feval("rand",f_arg,1);
      Matrix unis(f_ret(0).matrix_value());
    

    التوافق مع ماتلاب[عدل]

    تم بناء اوكتف مع مراعاة توافقه مع ماتلاب ويشارك مزايا متعددة معه، مثل:

    1. تعد المصفوفات نوع بيانات أساسي.
    2. دعم مبني داخلياً للأرقام المركبة.
    3. دوال رياضية قوية ومكتبات دوال واسعة مبنية داخلياً.
    4. التوسع عن طريق استخدام الدوال المعرفة من قبل المستخدم.

    مراجع[عدل]

    1. أ ب ت ث مذكور في: دليل البرمجيات الحرة. دليل البرمجيات الحرة: octave. الوصول: 7 يناير 2022.
    2. ^ وصلة مرجع: https://www.gnu.org/software/octave/about.html. الوصول: 19 فبراير 2020.
    3. ^ "GNU Octave"، أهلوه، اطلع عليه بتاريخ 25 يناير 2021. {{استشهاد ويب}}: تحقق من التاريخ في: |access-date= (مساعدة)
    4. أ ب "GNU Octave 7.2.0 Released" (باللغة الإنجليزية28 يوليو 2022، اطلع عليه بتاريخ 3 أغسطس 2022. {{استشهاد ويب}}: تحقق من التاريخ في: |access-date= و|date= (مساعدة)صيانة CS1: لغة غير مدعومة (link)
    5. أ ب John W. Eaton (28 يوليو 2022"Version 7.2.0 released" (باللغة الإنجليزية)، اطلع عليه بتاريخ 3 أغسطس 2022. {{استشهاد ويب}}: تحقق من التاريخ في: |access-date= و|date= (مساعدة)صيانة CS1: أسماء متعددة: قائمة المؤلفون (link) صيانة CS1: لغة غير مدعومة (link)
    6. ^ وصلة مرجع: https://hg.savannah.gnu.org/hgweb/octave/file/tip/COPYRIGHT.md.
    7. ^ وصلة مرجع: https://ftp.gnu.org/gnu/octave/.
    8. ^ وصلة مرجع: https://hg.savannah.gnu.org/hgweb/octave/rev/93c65f2a5668.
    9. ^ "Summary of important user-visible changes for version 3.2"، مؤرشف من الأصل في 30 أبريل 2016، اطلع عليه بتاريخ 05 يناير 2012.
    10. ^ Trappenberg, Thomas (2010)، Fundamentals of Computational Neuroscience، Oxford University Press، ص. 361، ISBN 978-0-19-956841-3.
    11. ^ Why can't I use code from File Exchange in Octave? It's released under a BSD license! on octave.org نسخة محفوظة 05 يوليو 2018 على موقع واي باك مشين.

    وصلات خارجية[عدل]