[ 前へ | 目次 | 次へ ]

プログラミング

ここまでは、いわゆる電卓ソフトとしての機能を扱ってきました。ここからは、順番の手続きに沿った計算や、条件分岐や繰り返しなど、プログラミングによる高度な処理を活用していきましょう。

ここではまず、リニアンプロセッサーにおけるプログラミングの概要について、軽く説明します。


リニアンプロセッサーの中核処理エンジンは、とても高性能 !

リニアンプロセッサーにおけるほぼ全ての処理は、 「 VCSSL エンジン 」という中核処理エンジンが担っています。 このエンジンは、電卓ソフト用の処理エンジンとしてはとても高性能で、 1 秒間に1 億回 ( 100 M FLOPS )を超える高速計算が可能です。

  

しかし、人間が電卓のボタンを叩けるのはせいぜい 1秒に数回 なので、普通に使っていても全く処理速度を活かしきれず、 ただオーバースペックなだけになってしまいます。

もしも、リニアンプロセッサーの処理エンジンの性能を最大限に発揮できたなら、 複雑な処理を全自動化して一瞬で完了させたり、膨大なデータをまとめて処理したり、 精密な科学技術計算を行ったり、様々な事ができるでしょう。 これを可能にしてくれるのが、「 プログラム 」の仕組みです。

「 プログラム 」 とは 「 する事のリスト 」

それでは、「 プログラム 」とは一体何なのでしょうか。それは、「 する事のリスト 」です。

例えばあなたが、自分で電卓のボタンを押して複雑な計算を行う代わりに、他の人にやってもらう場合を考えてみてください。 その場合、どういった数値に、どういった内容の計算をして、 結果をどのようにまとめるのか、「 する事のリスト 」を紙に書いて渡す事でしょう。

例えば、「 1 から100 までの素数の和を求めよ 」といった計算の場合は、下記のようなリストになるでしょう。

▼人間が人間に処理を頼む時の、「 する事のリスト 」
・ここからの内容を、1 から100 まで繰り返してください。( 繰り返し中の回数をi とします )
・もしi を、2 からi-1 まで全ての数で割って、余りが一回も0 にならないなら、それは素数です。
・もしi が素数なら、i の値を合計に足してください。
・繰り返しはここまでです。
・最後に、合計の値を教えてください。

※ 実はこの場合には2,3,5,7 で割った余りのみで素数か判定できるのですが、簡単のため上のようにしています。

これを受け取った人は、そこに書かれている通りに電卓を叩いて、計算を行ってくれるわけです。 実は、この 「 する事のリスト 」 が、プログラムなのです。

実際のプログラムは、機械にとって分かりやすい言語で記述

ただし、上のような普通の文章は、人間が人間に伝える場合には良いのですが、機械に伝える場合には、 言い回しなどが不必要に複雑だったり、曖昧だったりして、理解するのが難しいという問題があります。 よく 「 日本語は難しい 」 と言われますが、ただでさえ人間にとっても難しいのに、機械にとっては難し過ぎるのです。

そこで一般に、機械やソフトウェアに「 する事のリスト 」を伝えたい場合は、「 プログラミング言 語 」と呼ばれる特別な言語で記述します。プログラミング言語は、人間の話す言語(自然言語)に 特有の曖昧さや複雑さを排除した、機械にとって都合の良い言語です。

※ あくまで「自然言語に比べて」という意味であって、プログラミング言語の中でも機械寄りのもの(機械語、アセ ンブリ言語)から、人間寄りのもの(高級言語、スクリプト言語)まで、色々なものがあります。

先ほど例に挙げた、人間用の「 するの事リスト 」を、ちゃんとプログラミング言語で書き直すと 下記のようになります。これが、一般に「 プログラム 」と呼ばれるものです。

▼人間が機械に処理を頼む時の、「 する事のリスト 」 = プログラム

プログラムの利点

このように、リニアンプロセッサーは、「 する事のリスト 」 = プログラム を読んで、複雑な計算を自動で行う事ができます。 このように、処理内容をプログラムにまとめる事で、次のような利点があります。

▼プログラムの利点
利点1. 人間がボタンを押すのを待つ必要がないので、常に最大の処理速度を発揮できる
利点2. いろいろな処理を複雑に組み合わせて、より高度な処理を実現できる
利点3. 一度プログラムとして書いた処理は、何度でもすぐに使用できる( = 機能を拡張できる )

利点1 に関してはこの通りで、最大1 億回/秒に及ぶ処理速度を、フルに活用する事ができます。 いちいち人間が数値を打ち込まなくても、ファイルに記述された膨大なデータを読み込んで、自動で次々と処理していく事などが可能です。

続いて利点2 ですが、プログラムは文章として記述するという形態上、ボタンの直接打ち込みに比べて、 はるかに長く複雑な処理内容を、正確に伝える事ができます。また、ボタンやウィンドウといったGUI 部品も使う事ができます。 なので、頑張って数百行から数千行規模のプログラムを書けば、もはや一つのソフトウェアと呼べるような、高度なものでも作る事ができます。

最後に、最も大きな利点と呼べるのが、利点3 です。リニアンプロセッサーでは、作ったプログラムを、 「 Program 」メニューに追加してすぐに呼び出す事ができます。つまり、一度頑張ってプログラムに書いておいた処理は、 それ以降は何度でもすぐに使えるようになるのです。これは、リニアンプロセッサーの機能を自由自在に拡張できる事に他なりません。

実際にプログラムを使ってみる

ここまでは、プログラムの仕組みを説明してきました。ここからは、実際にプログラムを使用してみましょう。 まず、メニューバーから「 Program 」メニューをクリックしてください。すると、プログラムを選択する画面が表示されます。 ここからプログラムを選択すると、そのプログラムに記述された処理が実行されます。

リニアンプロセッサーには、最初から便利なプログラムが付属しています。その一例としては、以下のようなものがあります。 この標準プログラムは、今後も追加されていく予定です。

▼プログラムの利点

・微積分: 「Program」メニュー > 「DiffAndIntegral_微積分」フォルダ

・微分方程式: 「Program」メニュー > 「DiffEq_微分方程式」フォルダ

・ベンチマーク: 「Program」メニュー > 「Benchmark_処理性能ベンチマーク」フォルダ

・いろいろな処理のサンプル: 「Program」メニュー > 「Sample_いろいろな処理のサンプル」フォルダ

新しいプログラムは「 RinearnProcessorProgram 」フォルダへ追加
たくさん集めて、自分の専門分野に特化したオリジナル電卓に !

「 Program 」メニューをクリックした時に表示されるのは、「 bin 」フォルダの中にある「 RinearnProcessorProgram 」フォルダです。 新しいプログラムを入手または自作したときは、ここに置いておきましょう。すると、「 Program 」メニューからすぐに使えて便利です。たくさん集めれば、 リニアンプロセッサーを、自分の専門分野に特化したオリジナル電卓に育てることができます。


この階層の目次
新しいお知らせ

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

リニアングラフ3D/2Dが連番ファイルのアニメーションに標準で対応
2019年07月17日 - リニアングラフ3D/2Dでは、7月17日公開の最新版より、連番ファイルを連続的に読み込みながらアニメーション描画するプログラムを同梱し、メニューから標準で使用可能になりました。その概要をお知らせします。

Vnanoのスクリプトエンジンアーキテクチャ解説2: コンパイラ
2019年07月03日 - オープンソースで開発中のスクリプトエンジン「 Vnano 」のアーキテクチャを解説する連載の第2回です。今回は、スクリプトを中間コードへと変換する、コンパイラ部分の内部をクローズアップして解説します。

コードアーカイブ新着
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
公式Twitterアカウント