Octaveとは




|Octaveのインストール>

<プログラミングを始める前に|



Octaveによるプログラミングに戻る


目次



Octave


 公式サイト(英語)に依れば、Octaveとは、「科学計算用のプログラミング言語」です。計算とその結果の視覚化に優れ、無償で使用できると書かれています。




 Octaveが作られた背景やその言語仕様については、wikipediaが詳しいので、そちらをご覧ください。





Octaveを使用しての所感


 Octaveを使用していて思うことを、主にC言語と対比させながら書きます。

 このページの内容は、プログラミング初心者の方には、分かり辛い話になっていると思います。

 ここでの話題は、Octaveを扱うときに知らないと困るような話ではないので、初心者の方は流し読みするなり、飛ばして次のページに行ってもらって構いません。




 Octaveの最大の特徴は、あらゆる面でとても簡単だということです。

 C言語で簡単な計算をしようと思ったら、まずテキストファイルを開き、最初におまじないを書いて、変数の型を宣言して、計算のプログラムを書いて、コンパイルして、ようやく計算開始、という流れです。

 コンパイルの段階でエラーが出たら、テキストファイルを修正し、コンパイルし直さなければいけません。

 一方のOctaveは、本体を起動させ、コマンドウィンドウに数式を打ち込み、Enterを押せば計算してくれます。

 エラーが出たら数式を打ち直し、Enterを押せばいいだけです。1回1回コンパイルしなくてもいいのです。




 さらにOctaveは、グラフを用いた視覚化が非常に楽です。計算などで配列を用意し、plot関数に入れればグラフが出てきます。

 C言語でグラフを描くには、gnuplotなどの外部アプリケーションを利用しなければいけません。設定などが大変です。

 Octaveも、実はgnuplotを使ってグラフを描画しています。

 ですが、Octaveをインストールした時に、gnuplotが同時にインストールされ、環境も勝手に整えてくれます。Octaveでグラフを描くのは簡単です。




 もう一つ、簡単さという点で、先に少し述べた型宣言について書いておきます。nという文字に整数1を代入するコードを、C言語とOctaveで書くと、

・C言語
int n=1

・Octave
n=1;

となります。

 C言語のintというのは、整数型を表しています。これを書くことで、nが整数であるとコンピューターに伝えています(型の宣言)。型は他にも、浮動小数点数型、文字列型などがあります。




 C言語やFORTRANでは、静的な型付けというシステムが使われています。これは、計算に使う変数の型をあらかじめ宣言して決めておき、プログラム中の変数にそれを適用する、というものです。

 一方、Octaveやpythonは、動的な型付けというシステムを採用しています。最初に変数の型宣言をしなくても、システム側が勝手に変数の型を推定して、プログラムに適用してくれます。

 Cでは型宣言をしなければいけない分、コードを書く手間がかかります。特に、変数が多いプログラムでは、管理が大変です。

 また、変数の型を正確に宣言しなければならず、型のことをしっかり理解してコードを書かなければ、エラーの原因となります。




 ただ、Octaveやpythonなどの、型宣言をしなくて良いというメリットは、大きなデメリットも含んでいます。

 その一つは計算速度です。forループで何千、何万回と計算させると顕著ですが、C言語に比べ、Octaveやpythonは100倍くらい遅いです。

 それは、Octaveやpythonでは変数を計算に使うたび、その変数の型を確認するという動作が入るからです。これがかなりの遅延を引き起こします。

 動的な型付けは、計算を遅くする原因になります。

 pythonならば、C言語の型宣言を取り入れるcythonというシステムを使い、C言語に近い速度を出せます。

 しかしOctaveではそうもいきません。計算速度の遅さは、Octaveでは避けられない問題です。




 もう一つの動的な型付けのデメリットは、変数の型について学べないことです。変数の型について知ることは、プログラミングをする上で重要です。

 Octaveやpythonを使う際は、型について知らなくても、プログラムを組むことはできます。

 ですが、たまに変数の型がエラーを引き起こすことがあります。

 そうなると困ったもので、型についての知識がないと、何がエラーの原因なのか見つけることができません。

 私はOctaveでライフゲームのプログラムを作っている時、型の違いによるエラーが起きて、なぜエラーが起きているのか分からず苦労しました。




 また、型宣言以外のOctaveを使うデメリットとして、できることが限られる、ということが挙げられます。

 Cやpythonは、計算以外にもかなりのことができます。webプログラミングや、GUIプログラムの作成などがその一例です。

 一方のOctaveは、今のところ、計算とその可視化ぐらいしかできません。

 ただ、色々なことができない分、計算と可視化に特化していて、操作が簡単だというのが、Octaveの強みでもあります。

 なのでプログラミング初学者の方には、まずOctaveでプログラムの論理構造や浅い仕組みを理解し、必要に応じて他の言語に手を出すということをお勧めします。

 Octaveで学んだことは、他の言語でも役立ちます。




 ここまでの話をまとめると、Octaveは簡単に使える計算ソフトで、データの可視化が得意です。比較的簡単に習得でき、プログラムの初歩を学ぶのに最適です。

 その一方で、計算が遅いということや、プログラミングの仕組みを深く学べないというデメリットも併せ持っています。

 これらを踏まえた上で使用すれば、強力な計算用、学習用ツールとして役立つでしょう。


Octaveとの出会い


 私が初めてプログラミングに触れたのは、大学1年でCを習ったときです。

 当時はプログラミングの右も左も分からず、言われるがままにテキストファイルを開いてプログラムを書き、コンパイルしていました。

 C言語はあまり面白くなかったので、情報の講義で単位をとった後は、もう触れたいと思いませんでした。




 再びプログラミングに触れたのは、それから2年後の、物理の内容をOctaveで学習するという講義です。この講義で初めてOctaveを知りました。

 とは言え、講義を受けているときに、Octaveが好きになったわけではありません。

 最初は、他の言語と何が違うのかも分かりませんでしたし、そもそもOctaveがどういった位置づけの物かも、分かっていませんでした。




 octaveについて本格的に知識を集め始めたのは、講義がすべて終わった後でした。

 私は、フラクタルなどの美しい図形が好きで、特にマンデルブロ集合†1が大好きです。これらをいつか、自分で描いてみたいと思っていました。

†1 :複素数の知識を使って描ける図形です。詳しくはマンデルブロ集合の描き方をご覧ください。

 ふと、Octaveはそれを実現してくれる物なのではないか、と思い、勉強を始めました。




 それからというもの、美しい図形を本で探し、それをOctaveで描くプログラムを作り続けました。

 そのかいあって、今ではかなり色々な模様を描けるようになりました。マンデルブロ集合を描くのもお手の物です。

 Octaveで挫けずにプログラミングを勉強できたおかげで、プログラミング言語pythonでマンデルブロ集合を描くguiプログラムを作ったり、拡大していくアニメーションも作れるようになりました。

 Octaveによって、マンデルブロ集合を自在に描くという、1つの夢を叶えることができたのです。


|Octaveのインストール>

<プログラミングを始める前に|



octaveによるプログラミングに戻る

ホームページのTOPに戻る