جنو أوكتف
جنو اوكتف GNU Octave | |
---|---|
ملف:Octave Sombrero.svg | |
ملف:Octave session.png جنو اوكتف | |
المطور | John W. Eaton |
الإصدار الأولي | 1988 |
آخر إصدار | 3.2.0 / 6 يونيو، 2009 |
الإصدار التجريبي | 3.1.55 / 25 مارس، 2009 |
مكتوب بلغة | سي بلس بلس |
المنصة | متعدد المنصات |
النوعية | برمجة علمية |
الترخيص | رخصة جنو العمومية |
موقع وب | http://www.gnu.org/software/octave/ |
أوكتف هو برنامج حاسوب يؤدي عمليات التحليلات العددية وهو في معظمه متوافق مع ماتلاب، البرنامج جزء من مشروع جنو، لذلك فهو واحد من البرمجيات الحرة تحت بنود رخصة جنو العمومية.
تاريخ
المشروع باشر العمل حوالي عام 1988. كان من المقرر في البداية ان يكون مرافقاً لدورة في تصميم مفاعل كيميائي. بدأ التطوير الحقيقي بواسطة جون أيتون في عام 1992. الأصدارية التجريبية الأولى (ألفا) كانت في يوم 4 ينياير، 1993 وفي يوم 17 فبراير، 1994 تم اصدار نسخة 1.0. نسخة 3.0 صدرت في يوم 21 ديسيمبر، 2007.
سمي البرنامج على اسم اوكتف ليفينسبل، بروفيسور سابق كان المبرمج الرئيسي تلميذاً له وكان من المعرف عنه إمكانيته بالقيام بعمليات حسابية معقدة بسرعة عالية باستخدام ورقة وقلم فقط دون الاستعانة بألة حساب إلكترونية.
تفاصيل تقنية
- كتبت اوكتف بلغة سي++ باستخدام مكتبة STL.
- تستخدم اوكتف مفسر لتنفيذ البرامج المكتوبة بلغة اوكتف.
- تعد اوكتف قابلة للتوسيع باستخدام اجزاء ديناميكية قابلة للتحميل.
- مفسر اوكتف يعمل بصورة تامة مع برامج gnuplot و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' في لغة ليسب، الشكل العام لهذا النموذج يكون كما في المثال الأتي: <source lang="matlab"> unwind_protect
body
unwind_protect_cleanup
cleanup
end_unwind_protect </source>
- قوائم معطيات طول المتغير
لدى اوكتف الية حقيقة لمعاملة الدوال التي تاخذ عدد غير محدد من المعطيات بدون حد أعلى واضح. يستخم المعطى الخاص المسمى varargin
لتحديد قائمة تتألف من صفر إلى أكثر من المعطيات كالمعطى الأخير (أو الوحيد) في القائمة، مثال على ذلك:
<source lang="matlab"> function s = plus (varargin)
if (nargin==0) s = 0; else s = varargin{1} + plus (varargin{2:nargin}); endif
endfunction </source>
- قائمة استرجاع طول المتغير
بالإمكان استرجاع اي عدد من القيم في دالة ما عن طريق استخدام دالة الاسترجاع الخاصة varargout
، على سبيل المثال:
<source lang="matlab"> function varargout = multiassign (data)
for k=1:nargout varargout{k} = data(:,k); endfor
endfunction </source>
- تكامل C++
بالأمكان تنفيذ أوامر اوكتف في برنامج مكتوب بلغة سي++ بصورة مباشرة. في شفرة مصدرية صغيرة لأستدعاء rand)[9000,1]) على سبيل المثال: <source lang="cpp">
#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());
</source>
التوافق مع ماتلاب
تم بناء اوكتف مع مراعاة توافقه مع ماتلاب ويشارك مزايا متعددة معه، مثل:
- تعد المصفوفات نوع بيانات اساسي.
- دعم مبني داخلياً للأقرام المركبة.
- دوال رياضية قوية ومكتبات دوال واسعة مبنية داخلياً.
- التوسع عن طريق استخدام الدوال المعرفة من قبل المستخدم.
وصلات خارجية
- Octave.org الصفحة الرئيسية
توثيق
واجهات المستخدم الرسومية
- Xoctave – زوكتف يغلف جنو اوكتف مستخدماً الانابيب في نظام يونكس ويجهز ادوات اضافية لجعل استخدامه أسهل، واجهته شبيهة جداً للموجودة في ماتلاب.
- OctaveNB – لربط جنو اوكتف مع نت بينز.
- QtOctave Graphical User Interface – واجهة رسومية مشابهة لماتلاب، حالياً تحت التطوير المكثف.
واجهات الويب
- Web Interface to Octave – لاستخدام جنو اوكتف عن طريق اي متصفح ويب.
- Online access to Octave – موقع يدعك بالقيام بحسابات بسيطة باستخدام جنو اوكتف على الويب.
أضافات
- Octave-forge community development page – صناديق ادوات لحل مشاكل متنوعة مطورة من قبل مبرمجين مستقلين.
- OctPlot – اداة تنتج رسوم ثنائية البعد ذات جودة عالية
- Octave graphics add-on – نظام رسم ثلاثي الأبعاد لأوكتف.
- Octaviz – نظام رسم ثلاثي الأبعاد لأوكتف.
- MPI Toolbox for Octave (MPITB) – حوسبة متوازية لأوكتف باستخدام MPI.
|
|
مشاريع شقيقة | هناك المزيد من الصور والملفات في ويكيميديا كومنز حول: جنو أوكتف |
cs:GNU Octave da:GNU Octave de:GNU Octave GNU Octave]] eo:GNU Octave es:GNU Octave fa:گنو اکتاو fi:GNU Octave fr:GNU Octave id:GNU Octave it:GNU Octave ja:GNU Octave ko:GNU 옥타브 nl:GNU Octave pl:GNU Octave pnb:GNU Octave pt:GNU Octave ro:GNU Octave ru:GNU Octave sk:GNU Octave sl:Octave sv:GNU Octave tr:GNU Octave uk:GNU Octave ur:GNU Octave vi:Octave zh:GNU Octave