GNU 옥타브

옥타브(Octave)는 수치해석용 자유 컴퓨터 소프트웨어로서, MATLAB과 호환성이 높다. 옥타브는 GNU 프로젝트의 하나이다. 옥타브는 매스매티카같은 컴퓨터 대수 체계가 아니라 과학적 계산을 위한 도구이다.

 역사 

1988년 경부터 아이디어가 시작되었다. 처음에는 화학반응기 설계 강좌에서 사용할 목적이었다. 1992년 존 W. 이튼(John W. Eaton)이 실질적인 개발을 시작했다. 1993년 1월 4일에 최초의 알파 배포판이 나왔으며, 1994년 2월 17일에는 정식버전 1.0이 배포되었다. 2017년 2월 24일에는 4.2.1 버전이 배포되었다.

이름은 음악의 옥타브와 아무런 관련이 없다. 옥타브란 이름은 특정 수치계산 문제의 좋은 근사치를 빨리 내놓는 것으로 유명했던 초기 개발자들 가운데 한 명인 옥타브 레벤스필 교수의 이름에서 따온 것이다.

 기술적인 상세설명 
 기본적으로 매트랩과 동일한 문법을 가지고 작성된다.
 옥타브는 C++ 표준 라이브러리를 사용하여 C++로 만들어졌다.
 옥타브는 옥타브 스크립트 언어를 실행하는 인터프리터를 사용한다.
 옥타브는 동적으로 로드할 수 있는 모듈을 사용해서 확장할 수 있다.
 옥타브 인터프리터는 gnuplot과 Grace software와 연계해서 표와 그래프, 차트를 만들 수 있고, 그것들을 저장하거나 인쇄할 수 있다.

 프로그램언어로서의 옥타브 
옥타브 언어는 인터프리트 형식의 프로그래밍 언어다. C언어처럼 구조적 프로그래밍 언어이며 많은 일반적인 C 표준 라이브러리 함수를 지원하고 유닉스 체계의 call과 함수를 지원하도록 확장될 수 있다. 그러나 주소 참조를 이용한 함수 파라미터 넘겨주기는 불가능하다.

옥타브 프로그램은 함수요청이나 스크립트의 목록으로 구성된다. 언어는 행렬에 근거하며 행렬 연산용의 다양한 함수를 제공한다. 옥타브는 객체지향 프로그램은 아니지만, 자료 구조체를 지원한다.

문법체계는 매트랩과 매우 닮았으며 신중하게 스크립트를 프로그램하면 옥타브와 매트랩에서 함께 실행될 수 있다. 그러나 세부적인 명령어 특히 플로팅관련은 gnuplot에 전적으로 의지하기 때문에 matlab과 차이를 피할 수 없다. 실제로 octave를 이용한 그래프작성은 gnuplot의 명령에 대한 지식이 필요하며 gset 또는 __gnuplot_set__의 함수를 이용하여 gnuplot에 직접 전달하여야 한다.(버전 2.1.73에서)

옥타브가 GNU GPL 아래에서 만들어졌기 때문에, 자유롭게 복사하여 사용될 수 있다. 프로그램은 유닉스와 유닉스 계열 운영체계에서뿐 아니라 마이크로소프트 윈도우 운영 체제에서도 실행된다. 현재 윈도에 설치할 수 있는 버전은 시그윈을 이용하는 것과 시그윈 없이 독립적으로 윈도 시스템에 설치하는 방법이 있는데 버전 2.1.73에서는 시그윈이 없는 상태에서는 최소한의 시그윈 시스템을 구축하는 식으로 설치한다. 두 경우 모두 한글로 된 파일이름이나 변수의 사용에 문제가 있어 영문으로 된 디렉터리에 접근하는 것이 안전하다.

 주목할 만한 특징들 
 명령어와 변수명 완성 
탭 완성(TAB completion)을 지원한다. 즉, 명령 라인에서 처음 몇 글자만 입력한 상태에서 탭(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

 같이 보기 
 수치 분석 소프트웨어 목록

 각주 

 외부 링크 




분류:GNU 프로젝트 소프트웨어
분류:수치 프로그래밍 언어
분류:C++로 작성된 자유 소프트웨어
분류:크로스 플랫폼 자유 소프트웨어
분류:자유 수학 소프트웨어
분류:데이터 분석 소프트웨어
분류:배열 프로그래밍 언어
분류:Qt를 사용하는 소프트웨어
분류:기계 학습 및 데이터 마이닝 소프트웨어