- ベストアンサー
いろいろな言語に関する質問(スクリプト)
★現在、とあるソフトを開発していますが、このソフトで処理する 動作を外部の手続きファイル(スクリプト)を読み込むことで機能 拡張できるように考えています。 ・そこで、ちょっとした専用のスクリプト言語を開発しようと思って います。質問内容はどの言語でも良いですが、それぞれの言語で 便利そうな仕組みを教えて下さい。たとえば、私は C/C++ 言語しか 使ったことがありませんが『if』、『switch』、『while』、『for』 のほかに BASIC やそれ以外の言語より、『until』、『repeat』や C/C++の『do-while』をまねた、独自の『do-until』やバッチ処理の 『FOR』コマンドに似せた『fortable』の制御を可能にしようと思っ ています。 ・基本的に文法構造の制御に関する仕組みを考えているので、関数の 機能ではありません。ただし、変数に関する扱い方や宣言の仕方は いろいろとアイディアを出してくれてかまいません。何でもね。 ・今、ちょっとだけ『Perl』の文法を検索して言語使用などを見ましたが もっと良い文字列(配列など)の操作仕組みがあれば、アイデアとして 取り入れたいと思います。整数に関する変数の扱い方も募集します。 ・以上。制御系を中心にスクリプト言語にあれば便利そうな仕組みや サイト、または言語名を教えて下さい。お願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
アプリに組み込んで使える言語ということならこういものも Lua/組み込み系言語 Wiki* http://wikiwiki.jp/lua/ リンク先に Squirrel という別の言語も紹介されています。こちらは良く知らない のですがC++で書かれたものとか。 言語の規模からいうとPythonよりずいぶんと小さいと思います。 ただ日本語で読める情報が得られるかどうかという点を考えると Pythonに一歩譲るかも。
その他の回答 (5)
- MrBan
- ベストアンサー率53% (331/615)
(C++屋さんらしいので)日本以外でC++屋さんに人気が高いという Pythonとかも参考にどうですか。 Boostにも連携機能が提供されています。 独自言語にしない利点は、習熟工数以外にも、 外部ライブラリ/外部参考資料の有無だと思います。 # EMCAScriptは標準化されたJavaScriptなので、 # (標準名は知られてなくても)実質の知名度は最高クラス。
お礼
★ちょっと調べてみました。 ・『Python』言語は、オープンソースでフリーなオブジェクト指向型の プログラミング言語のようですね。 ・アプリケーションの開発もできるようで、1つのソフトの機能拡張の 枠を超えた、立派な言語を作るのもありですね。 ・今回は、フロー制御を中心に質問してみましたが、豊富なライブラリ を備えて独立した言語としても利用価値がありそうですね。 ・ただ、独自言語にすると『外部ライブラリ』やら『参考資料』が独立 してしまいますね。独自仕様か?標準化言語か?少し迷うところです。 ・『実質の知名度』が高い方が良さそうですね。 ・このアドバイス、誠にありがとうございました。
- toro777777
- ベストアンサー率16% (43/257)
テキストエディタのスクリプト(マクロ)とし emacsのLispはかなり優秀な分類でしょう。 質問者が作りたいものによりますが emacs Lispをそのまま移植するのも手だと思います。 (ただしemacsはGPLなのでLispのエンジンを独立させて 動的リンクにして元々のソフトに対してGPLのしがらみを受けないように したり工夫は必要ですが)
お礼
★昔、『Lisp』を聞いたことがあります。 ・今回、文法構造のフロー制御を、今後すべての外部スクリプトの 土台としてスクリプト言語を開発しようと思っています。 ・toro777777 さんのアドバイス通り、スクリプト・エンジン部分は 独立させて、動的リンクにさせる予定です。 ・また、ライブラリも必要により動的リンクして拡張できるように 考えています。→ソフトによってライブラリ関数にバリエーションを 持たせようという考えです。(最小限のライブラリ関数に抑えるため) ・言語エンジンとアプリケーションとのやり取りを只今、模索中です。 ・最後に、『Lisp』もいろいろ種類が増えたようですね。 ・一度、この言語について調べてみます。 ・アドバイスをありがとう。御座います。
- nerosuke
- ベストアンサー率33% (39/115)
私はゲームを作成する際の独自のコンパイル型のスクリプト言語を作成しました。 細かい仕様はお教えできませんが、問題になったのは、スタックの問題です。 変数、関数共にスタックを消費して作成しましたので、スクリプトが走ってる間はセーブ(保存)ができない物になってしまいました。(現在改良済)。 排他的な処理をするのであれば問題はございません。 質問者様の過去の回答等を見ていると、これくらいは予想されているとは思いますが一応念のため・・・
お礼
★インタプリタ(スクリプト)は過去にたくさん作りました。 ・しかし、作るたびに仕様が少しずつ違っていたりして、今回はどのソフトにも 対応できるための言語仕様(スクリプト)を考えようかと思ったのです。 ・今回は、nerosuke さんの回答にあるようにコンパイル型のスクリプト言語を 考えています。 ・助言の通り、スタックの消費はきちんと考えています。 ・ただ、スクリプトが走ってる間の排他的な処理が今回の最大のテーマのようですね。 ・昔、私も BASIC 程度のインタプリタはいくつか作った経験がありますが、 Windows マシーンではなく MS-DOS 用でした。今回がマルチタスク環境での 初スクリプト言語になるわけです。 ・処理中にセーブ(保存)ができないスクリプトにしない様にする予定です。 ・助言、ありがとうございました。
- PED02744
- ベストアンサー率40% (157/390)
秀丸エディタのマクロ機能などを参考にされてはいかが?
お礼
★マクロ機能という考えもありますね。 ・確かに『秀丸エディタ』などのエディタには、エディタを最大限に活用する 強力なマクロが備わっていますね。 ・もしかしたら、スクリプト言語と大げさにしなくても良いかもしれませんね。 ・この考えの方針で少しスクリプト仕様を考えていきます。 ・回答ありがとうございました。
- venzou
- ベストアンサー率71% (311/435)
独自仕様より、一般的な仕様を取り入れた方が、スクリプトを書く人が楽だと思います。処理エンジンも出回ってますから、一から作る必要もないですし。 私は使った事はないですが、こちらなんかいかがでしょう? http://ja.wikipedia.org/wiki/ECMAScript もし私が使うとしたら、言語の仕様より、デバッグ機能(ステップ実行など)が充実している方がうれしいですね。
お礼
★『ECMAScript』ですか。初めて聞きました。 ・やはり独自仕様よりも一般的な仕様にした方がスクリプトとしての存在価値がありそうですね。 ・処理エンジンが出回っているとは知りませんでした。 ・貴重な情報とリンク先も読ませてもらいました。 ・デバッグ機能は重要ですね。 ・これからの研究のテーマになりそうです。 ・貴重な情報をありがとうございました。
お礼
★Lua言語はかなり参考になります。 ・私が考えている言語仕様とほぼ同じ仕組みのようですね。 ・既にフリーソフトとして存在しているのですか。知りませんでした。 ・やはり、アプリケーションの機能拡張するために多くの人たちが 同じような仕組みを生み出しているようですね。 ・これを参考に『組み込み系言語』を使う方向で外部の手続きファイル を読み込んで、機能拡張できるように考えて行きます。 ・皆様の貴重なアドバイスを今後とも参考にしていきたいと思います。 ・どうもありがとう御座いました。 ・以上で、質問を締め切ります。