[ 前へ | 目次 | 次へ ]

VCSSLの概要

最初に、開発者視点で率直に目指したものなども交えて、C系言語ユーザーの方向けに、VCSSLの概要を短くまとめてみます。


電卓ソフトや現実の電卓(ポケコン含む)には、関数定義や自動処理の機能として、 何らかのプログラミング言語をサポートしているものが結構あります。

あくまで筆者個人の勝手な考察ですが、 電卓で動作するプログラミング言語には、以下のような点が要求されると考えています:

少ない学習コスト
→ 電卓のために多くの学習コストを費やす人は恐らく少ない
短い計算コードを手軽に書ける
→ 大規模よりも小規模重視、計算重視
コンパクトな実装と仕様
→ 処理系を開発しやすい、搭載しやすい、移植しやすい
数値計算の処理速度
→ 少なくともある程度の幅の数値計算には耐えないといけない

実はVCSSLも、もともと電卓ソフト用に開発したものです。 つまり、何らかの斬新な言語仕様やパラダイムから作ったというよりは、 最初に具体的な用途がまずあって、上のような要求点があり、そこから仕様が決まったという傾向の言語です。

実際のVCSSLの開発コンセプトは以下の通りです:

少ない学習コスト
・ 数値計算分野のC系言語ユーザーを主眼に置いた、C系の標準的な文法
・ 独特の文法は可能な限り避ける
短い計算コードを手軽に書ける
・ 汎用性を削り、C系の中でも簡素な文法に
・ 静的型付けでありつつ、やや緩めに
・ 簡易用途の補助を重視した標準ライブラリ
コンパクトな実装と仕様
・ 制御構造の構文は if (if-else) / for / whileの3種
・ 基本的なプリミティブ型は int / float (=double) / complex / string / bool の5種
・ 非オブジェクト指向、大規模向けのパラダイムは特に追わない
・ 参照型やポインタを排除してGCを省略、配列を含む全ての型を値型に
数値計算の処理速度
・ 倍精度浮動小数点数演算で数十MFLOPS 〜 100MFLOPS
・ 高速な動的評価(eval)

最初に 「 少ない学習コスト 」 を挙げていますが、やはり開発当初はあくまで電卓用だったので、この点は最も重要でした。 実際、既存の電卓ではシンプルなBASIC系を採用しているものをよく見かけます。 しかしVCSSLでは、数値計算分野のC/C++ユーザーを特に重視したかったので、C系の文法を採用しました。 その代わりに、C系の中でも標準的な、なるべく独特でない見た目になるようにしました。

とは言っても、とっつきやすいBASICと比べて、Cは汎用重視の色が濃いので、「 短い計算コードを手短に書ける 」ために、 どれだけ(他のC系スクリプト言語のように)小回りを確保するかという配慮も必要です。

結局は妥協点ですが、以下のような感じになりました( FizzBuzz ):

上の通り、VCSSLはC系スクリプト言語の中でも保守的で、相応しい形容はまさに 「 電卓とかで動くCっぽいやつ 」 という感じです。実装をコンパクトに抑えるためのサブセット的な面も強いです。

一転して、標準ライブラリについてはある程度の汎用性を確保しています。 これは筆者自身が数値計算をやっていて、「 シミュレーションの可視化などをもっと手軽にできたらいいのに 」 と思っていた事に由来しています。 つまり計算メインでもアニメーション描画などを行いたい場面は結構あるわけで、C/C++は速い代わりに、そのあたりを面倒に感じていました。 そしてVCSSLはせっかくC系の文法で手軽さを意識したので、そのあたりをカバーできれば、(重い計算はやはりC/C++ですが)ライトなシミュレーションなどで活きる言語になるかもしれないと思いました。

実際、VCSSL 2.0以降は単体のスクリプト言語としても公開しており、標準ライブラリも(簡易用途向けであまり高度な事はできませんが)GUIや2D/3Dグラフィックスなどをサポートし、手軽に可視化などを行えます。

ローレンツアトラクタの図
ローレンツ方程式を4次ルンゲ=クッタ(RK4)法で数値積分し、その解曲線を描くVCSSLプログラムです。 描かれる解曲線は、「 ローレンツアトラクタ 」として非常に有名です。

波の図
凸レンズ形状をした高密度媒質を、波が通過する様子をシミュレーションするVCSSLプログラムです。 レンズ通過時に波が屈折し、焦点に集まる様子を、アニメーションで見る事ができます。

次回は、実際にVCSSLでプログラムを書いて実行し、基本的な入出力を行ってみます。



スポンサーリンク



スポンサーリンク

この階層の目次
お知らせ

リニアンプロセッサー nano の先行開発版やソースコードリポジトリを公開
2019年04月16日 - オープンソースで開発中の小型プログラム関数電卓ソフト、「 リニアンプロセッサー nano 」の先行開発版やソースコードリポジトリを公開しました。概要と使用方法、ビルド方法などについて解説します。

各ソフトウェアの最新版を一括でリリース、OpenJDKのJava実行環境(JRE)に対応
2019年03月06日 - RINEARNでは3月6日に、主要なソフトウェアの最新版を一括でリリースしました。今回のアップデートには、以前お知らせした、OpenJDKで生成したJREへの対応が含まれています。その概要等をお知らせします。

次回のVCSSL 3.4.10において、関数1個の挙動に非互換な修正が適用されます
2019年02月12日 - VCSSLの次回の正式リリース版3.4.10において、これまでドキュメントと実際の挙動が異なっていた描画系の関数1個に、非互換な修正が適用されます。その詳細と、使用コードでの対応方法について解説します。

新着
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
[公式ガイドサンプル] ポリゴンを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体の基本的な構成要素となるポリゴンを生成し、3D空間に配置します。
2019年05月20日
[公式ガイドサンプル] CSVファイルにデータを書き出し&読み込んで、複雑な3次元曲面のグラフを描く(魔法陣形)

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、魔法陣のような3次元曲面のグラフを描画します。
2019年05月17日
[公式ガイドサンプル] CSVファイルにデータを書き出し&読み込んで、複雑な3次元曲面のグラフを描く(花形)

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、花の形の3次元曲面のグラフを描画します。
2019年05月16日
[公式ガイドサンプル] CSVファイルにデータを書き出し、読み込んで3次元のメッシュグラフを描く

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、3次元のメッシュグラフを描画します。
2019年05月16日
開発元Twitterアカウント

スポンサーリンク