GNU Octave

limbaj de programare
GNU Octave

GNU Octave
Autor inițialJohn W. Eaton[*][[John W. Eaton (author and maintainer of GNU Octave, worked as a computer administrator for a chemical engineering group at the University of Wisconsin–Madison)|​]]
Torsten Lilge[*][[Torsten Lilge |​]]  Modificați la Wikidata
DezvoltatorJohn W. Eaton
Versiune inițială1988
Ultima versiune9.2.0[1]  Modificați la Wikidata ()
Repohg.savannah.gnu.org/hgweb/octave Modificați la Wikidata
Scris înC++
Sistem de operareCross-platform
Disponibil în19 limbi
TipScientific computing
LicențăGNU General Public License
Prezență online
http://www.gnu.org/software/octave/


Octave este un program de calculator pentru efectuarea de calcule numerice. El este în general compatibil cu MATLAB. Este parte a GNU Project. Este un software liber în conformitate cu termenii Licența Publică Generală GNU.

Proiectul a fost conceput în jurul anului 1988. La început a fost destinat să acompanieze un curs de proiectare a unui reactor chimic. Dezvoltarea propriu-zisă a fost inițiată de către John W. Eaton în 1992. Prima versiune alpha datează din 4 ianuarie, 1993 și în 17 februarie, 1994 a fost lansată versiunea 1.0. Versiunea 3.0 a fost lansată în 21 decembrie, 2007.

Este de remarcat faptul că numele nu are nimic de-a face cu octavele muzicale. Octave își trage numele de la Octave Levenspiel, un fost profesor al principalului autor, profesor care era renumit pentru abilitatea sa de a efectua rapid calcule.[2]

Detalii tehnice

modificare
  • Octave este scris în C++ folosind librăriile STL.
  • Octave folosește un interpretor pentru a executa limbajul Octave.
  • Octave se poate extinde folosind module încărcate dinamic.
  • Interpretorul lui Octave lucrează împreună cu gnuplot și software-ul Grace pentru a crea grafice, diagrame care se pot salva sau printa.

Octave, limbajul

modificare

Limbajul Octave este un limbaj de programare interpretat. Este un limbaj de programare structurat (similar cu C) și suportă multe funcții comune din C, și, de asemenea, anumite apeluri de sistem și funcții ale sistemelor compatibile POSIX.[3] Nu există, însă, suport pentru transmiterea argumentelor prin referință.[4]

Programele Octave constau dintr-o listă de funcții sau un script. Sintaxa este bazată pe matrice și oferă diverse funcții pentru operațiile cu matrice. Octave nu este orientat-obiect, dar suportă diverse structuri de date.

Sintaxa sa este foarte apropiată de cea din MATLAB, și cu o programare atentă a scriptului se poate obține rularea corectă atât în Octave cât și în MATLAB.[5]

Pentru că Octave este disponibil sub Licența Publică Generală GNU, poate fi copiat și utilizat în mod gratuit.[6] Programul rulează pe mai multe sisteme de operare ca: Unix, Unix-like, precum și pe Microsoft Windows.[7]

Caracteristici notabile

modificare
Autocompletarea comenzilor și numelor de variabile

Apăsarea tastei TAB în linia de comandă determină Octave să încerce completarea numelor de fișiere, funcții sau variabile (similar cu comportamentul bash). Octave utilizează textul dinaintea cursorului ca porțiune inițială a numelui de completat.

Istoricul comenzilor

Când rulează în mod interactiv, Octave salvează comenzile introduse într-un buffer intern pentru a putea fi reapelate și modificate.

Structuri de date

Octave include un suport limitat pentru organizarea datelor în structuri. De exemplu:

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
Scurtcircuitarea operatorilor logici

Operatorii logici `&&' și `||' din Octave sunt evaluați prin scurtcircuitare (ca și operatorii echivalenți din limbajul C), spre deosebire de operatorii element cu element `&' și `|'.

Operatorii de incrementare și decrementare

Octave include operatori de incrementare și decrementare, `++' și `--', similari cu cei din C, atât în formă prefixată, cât și în formă postfixată.

Tratarea erorilor

Octave suportă o formă limitată de tratare a excepțiilor modelată după limbajul de programare LISP. Forma generală a unui bloc unwind_protect de tratare a erorilor arată astfel:

unwind_protect
  body
unwind_protect_cleanup
  cleanup
end_unwind_protect
Liste de argumente de lungime variabilă

Octave are un mecanism real de tratare a funcțiilor ce primesc un număr nespecificat de argumente, fără limită superioară explicită. Pentru a specifica o listă de zero sau mai multe argumente, se utilizează argumentul special varargin ca fiind ultim (sau unic) argument.

function s = plus (varargin)
  if (nargin==0)
    s = 0;
  else
    s = varargin{1} + plus (varargin{2:nargin});
  endif
endfunction
Liste de valori returnate cu lungime variabilă

O funcție poate returna orice număr de valori utilizând valoarea specială returnată varargout. De exemplu:

function varargout = multiassign (data)
  for k=1:nargout
    varargout{k} = data(:,k);
  endfor
endfunction
Integrare cu C++

Cod Octave poate fi rulat și direct dintr-un program C++. De exemplu, acest cod apelează funcția Octave 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());

Compatibilitatea cu MATLAB

modificare

Octave a fost construit să fie compatibil cu MATLAB. Are, prin urmare, multe care caracteristici asemenea cu MATLAB:

  1. Matricea este tipul de dată fundamental.
  2. Suport inclus pentru numere complexe.
  3. Funcții matematice puternice și librării de funcții extinse.
  4. Extensibilitate sub formă de funcții definite de utilizator.

Există câteva diferențe importante, deși minore:

  1. Comentariile pot fi precedate de caracterul # cât și de caracterul %
  2. Diverși operatori specifici C sunt suportați: ++, --, +=, *=, /=
  3. Șirurile de caractere pot fi definite cu caracterul " precum și cu caracterul '.

Documentație

modificare

Interfețe grafice

modificare

Interfețe Web

modificare
  1. ^ GNU Octave 9.2.0 Released (în engleză), , accesat în  
  2. ^ Eaton, John. „About Octave”. Accesat în . 
  3. ^ „GNU Octave - Controlling subprocesses”. . Arhivat din original la . Accesat în . 
  4. ^ „GNU Octave”. Accesat în . 
  5. ^ „Frequently asked questions about Octave (with answers)”. Arhivat din original la . Accesat în . 
  6. ^ „About Octave”. Accesat în . 
  7. ^ „Frequently asked questions about Octave (with answers)”. Arhivat din original la . Accesat în . 

Legături externe

modificare