• ベストアンサー

いろいろな言語に関する質問(スクリプト)

★現在、とあるソフトを開発していますが、このソフトで処理する  動作を外部の手続きファイル(スクリプト)を読み込むことで機能  拡張できるように考えています。 ・そこで、ちょっとした専用のスクリプト言語を開発しようと思って  います。質問内容はどの言語でも良いですが、それぞれの言語で  便利そうな仕組みを教えて下さい。たとえば、私は C/C++ 言語しか  使ったことがありませんが『if』、『switch』、『while』、『for』  のほかに BASIC やそれ以外の言語より、『until』、『repeat』や  C/C++の『do-while』をまねた、独自の『do-until』やバッチ処理の  『FOR』コマンドに似せた『fortable』の制御を可能にしようと思っ  ています。 ・基本的に文法構造の制御に関する仕組みを考えているので、関数の  機能ではありません。ただし、変数に関する扱い方や宣言の仕方は  いろいろとアイディアを出してくれてかまいません。何でもね。 ・今、ちょっとだけ『Perl』の文法を検索して言語使用などを見ましたが  もっと良い文字列(配列など)の操作仕組みがあれば、アイデアとして  取り入れたいと思います。整数に関する変数の扱い方も募集します。 ・以上。制御系を中心にスクリプト言語にあれば便利そうな仕組みや  サイト、または言語名を教えて下さい。お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.6

アプリに組み込んで使える言語ということならこういものも Lua/組み込み系言語 Wiki* http://wikiwiki.jp/lua/ リンク先に Squirrel という別の言語も紹介されています。こちらは良く知らない のですがC++で書かれたものとか。 言語の規模からいうとPythonよりずいぶんと小さいと思います。 ただ日本語で読める情報が得られるかどうかという点を考えると Pythonに一歩譲るかも。

Oh-Orange
質問者

お礼

★Lua言語はかなり参考になります。 ・私が考えている言語仕様とほぼ同じ仕組みのようですね。 ・既にフリーソフトとして存在しているのですか。知りませんでした。 ・やはり、アプリケーションの機能拡張するために多くの人たちが  同じような仕組みを生み出しているようですね。 ・これを参考に『組み込み系言語』を使う方向で外部の手続きファイル  を読み込んで、機能拡張できるように考えて行きます。 ・皆様の貴重なアドバイスを今後とも参考にしていきたいと思います。 ・どうもありがとう御座いました。 ・以上で、質問を締め切ります。

その他の回答 (5)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.5

(C++屋さんらしいので)日本以外でC++屋さんに人気が高いという Pythonとかも参考にどうですか。 Boostにも連携機能が提供されています。 独自言語にしない利点は、習熟工数以外にも、 外部ライブラリ/外部参考資料の有無だと思います。 # EMCAScriptは標準化されたJavaScriptなので、 # (標準名は知られてなくても)実質の知名度は最高クラス。

参考URL:
http://boost.cppll.jp/HEAD/libs/python/doc/
Oh-Orange
質問者

お礼

★ちょっと調べてみました。 ・『Python』言語は、オープンソースでフリーなオブジェクト指向型の  プログラミング言語のようですね。 ・アプリケーションの開発もできるようで、1つのソフトの機能拡張の  枠を超えた、立派な言語を作るのもありですね。 ・今回は、フロー制御を中心に質問してみましたが、豊富なライブラリ  を備えて独立した言語としても利用価値がありそうですね。 ・ただ、独自言語にすると『外部ライブラリ』やら『参考資料』が独立  してしまいますね。独自仕様か?標準化言語か?少し迷うところです。 ・『実質の知名度』が高い方が良さそうですね。 ・このアドバイス、誠にありがとうございました。

回答No.4

テキストエディタのスクリプト(マクロ)とし emacsのLispはかなり優秀な分類でしょう。 質問者が作りたいものによりますが emacs Lispをそのまま移植するのも手だと思います。 (ただしemacsはGPLなのでLispのエンジンを独立させて 動的リンクにして元々のソフトに対してGPLのしがらみを受けないように したり工夫は必要ですが)

Oh-Orange
質問者

お礼

★昔、『Lisp』を聞いたことがあります。 ・今回、文法構造のフロー制御を、今後すべての外部スクリプトの  土台としてスクリプト言語を開発しようと思っています。 ・toro777777 さんのアドバイス通り、スクリプト・エンジン部分は  独立させて、動的リンクにさせる予定です。 ・また、ライブラリも必要により動的リンクして拡張できるように  考えています。→ソフトによってライブラリ関数にバリエーションを  持たせようという考えです。(最小限のライブラリ関数に抑えるため) ・言語エンジンとアプリケーションとのやり取りを只今、模索中です。 ・最後に、『Lisp』もいろいろ種類が増えたようですね。 ・一度、この言語について調べてみます。 ・アドバイスをありがとう。御座います。

  • nerosuke
  • ベストアンサー率33% (39/115)
回答No.3

私はゲームを作成する際の独自のコンパイル型のスクリプト言語を作成しました。 細かい仕様はお教えできませんが、問題になったのは、スタックの問題です。 変数、関数共にスタックを消費して作成しましたので、スクリプトが走ってる間はセーブ(保存)ができない物になってしまいました。(現在改良済)。 排他的な処理をするのであれば問題はございません。 質問者様の過去の回答等を見ていると、これくらいは予想されているとは思いますが一応念のため・・・

Oh-Orange
質問者

お礼

★インタプリタ(スクリプト)は過去にたくさん作りました。 ・しかし、作るたびに仕様が少しずつ違っていたりして、今回はどのソフトにも  対応できるための言語仕様(スクリプト)を考えようかと思ったのです。 ・今回は、nerosuke さんの回答にあるようにコンパイル型のスクリプト言語を  考えています。 ・助言の通り、スタックの消費はきちんと考えています。 ・ただ、スクリプトが走ってる間の排他的な処理が今回の最大のテーマのようですね。 ・昔、私も BASIC 程度のインタプリタはいくつか作った経験がありますが、  Windows マシーンではなく MS-DOS 用でした。今回がマルチタスク環境での  初スクリプト言語になるわけです。 ・処理中にセーブ(保存)ができないスクリプトにしない様にする予定です。 ・助言、ありがとうございました。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

秀丸エディタのマクロ機能などを参考にされてはいかが?

Oh-Orange
質問者

お礼

★マクロ機能という考えもありますね。 ・確かに『秀丸エディタ』などのエディタには、エディタを最大限に活用する  強力なマクロが備わっていますね。 ・もしかしたら、スクリプト言語と大げさにしなくても良いかもしれませんね。 ・この考えの方針で少しスクリプト仕様を考えていきます。 ・回答ありがとうございました。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

独自仕様より、一般的な仕様を取り入れた方が、スクリプトを書く人が楽だと思います。処理エンジンも出回ってますから、一から作る必要もないですし。 私は使った事はないですが、こちらなんかいかがでしょう? http://ja.wikipedia.org/wiki/ECMAScript もし私が使うとしたら、言語の仕様より、デバッグ機能(ステップ実行など)が充実している方がうれしいですね。

Oh-Orange
質問者

お礼

★『ECMAScript』ですか。初めて聞きました。 ・やはり独自仕様よりも一般的な仕様にした方がスクリプトとしての存在価値がありそうですね。 ・処理エンジンが出回っているとは知りませんでした。 ・貴重な情報とリンク先も読ませてもらいました。 ・デバッグ機能は重要ですね。 ・これからの研究のテーマになりそうです。 ・貴重な情報をありがとうございました。

関連するQ&A

  • プログラムのことで質問です。言語はjavaスクリプトです。

    プログラムのことで質問です。言語はjavaスクリプトです。 ある動作をfor文で繰り返します。 for文の中にifがはいっていて、ある範囲の中はその動作をしないようにしたいのです。 その範囲とは、ある変数1と変数2があり、変数1から変数1+変数2の中です。 変数1のみ除外なら簡単にできるのですが・・どのようにしたらこの動作ができるでしょうか?二時間悩んだのですがわかりません。 教えてください。よろしくお願いします。

  • 流れ図からプログラムに直してください!【C言語】

    その流れ図をC言語のプログラムに直してくれませんか? 処理2はscanf(..);って感じの内容です。 入口 処理1 for(処理2; 判断; 処理4){ 処理3 } 出口 って感じかなって思ったんですが、for文の中にscanfの文を入れてもいいのかわからずに悩んでます。 ループ文なのでwhile文、for文、do..while文のどれかかな?って思ったんですが違う気もして、わかるかたいらっしゃいませんか?

  • C言語について質問です。

    C言語について質問です。    問題:繰り返し命令と階乗の計算 カウンタ用変数nの値を1から10まで1ずつ変化させて、その値を階乗用変数Kiに順次、掛け算していき、10の階乗を求めよ。 ki=1×2×3×4×5×6・・・・・×9×10 <==10! また、1/n!は小数点以下10桁まで求めよ。 実行結果は    n                 n!             1/n!    1                 1             1、0000000000    2                 2             0、5000000000    3                 6             0、1666666667    4                24             0、0416666667    5               120             0、0083333333    6               720             0、0013888889    7              5040             0、0001984127    8             40320             0、0000248016    9            362880             0、0000027557   10           3628800             0、0000002756                            続行するには何かキーを押してください、、、、、、 上のように実行結果が出るようにプログラミングしたいのですがわからないので 分かる方よろしくお願いします。 ちなみに今まで習ってきたのは、if文、switch文、do文、while文、for文なんですがこのプログラミングは、for文でおねがいします。 長文失礼しました。

  • C言語

    C言語 10進数n(0<n<256)を2進に変換させろ 配列を使うな do-whileでnを入力させることはできましたが、そこから先がわかりません。 for文を使えと言われたのですが……

  • ゲームを作るためのスクリプト言語の勉強について。

    ゲームを作るために、プログラミングについて勉強を始めたいと思っている者です。 またDXライブラリやUnityなど比較的高難易度なツールを使っているわけではなく、RPGツクールやMMF2など初心者向けのツールを使っています。 RPGツクールやMMF2の初歩的な扱いには大分慣れてきたと思うので、変数を使ってより複雑なゲームを作りたいと考えているのですが、いまひとつ変数について理解できず、アルゴリズムもよくわかりません。 色々なサイトを調べたところ、いきなりC言語などのプログラミング言語から入るよりも、Rubyなどのスクリプト言語から勉強したほうがとっつきやすいし比較的簡単だという話だったので、スクリプト言語を勉強したいと思っているのですが、何かおすすめの言語とかはありますか? 今現在は、lua、Rubyのどちらにするかで悩んでいます。おすすめの参考書などありましたら教えてください。 またスクリプト言語の勉強はRPGツクールやMMF2といったツールの変数やアルゴリズムを理解するのに役立つのでしょうか? もし大して役に立たないということであれば、何か効果的な勉強法などありましたら教えていただけると嬉しいです。 ご回答、よろしくお願いします。

  • 【シェルスクリプト】 ローカル変数、グローバル変数

    シェルスクリプトのローカル変数、グローバル変数の取り扱いで迷っています。 ---------------- #!/bin/bash count=0 cat file | while read i do count=`expre $count + 1 ` done echo $count ---------------- fileの中身をcatで流して、それを一行ずつ読み込みます。 そのつど、count の値を増やしていくようにしたいのですが、最後の出力値は0となります。 cat→whileで読み込ませて処理している間はローカル変数として扱われているのでしょうか。 またそうであるならば、シェルスクリプトでグローバル変数を明示的に宣言するにはどうのようにすればいいのでしょうか。

  • C言語に関することについて教えてください

    学校の問題集にでてきた問題がわかりません、どうか教えてください 1 プログラムの役割、必要性について説明せよ 2 プログラムにおける変数と定数の役割を説明せよ。また、ローカル変数の有効な範囲について説明せよ。 3 C言語で使う変数が他について、宣言子と、printf関数、scanf関数それぞれにおいて対応する書式指定子を対応表にせよ。また、変数名を決める際に守るべき文法上の規則と、プログラマとして配慮すべき事項を説明せよ。 4 配列について、その役割と定義方法を説明せよ。 5 コンピュータにおける文字処理に必須なアスキーコードについて説明せよ。 6 C言語における文字列について、文字列定数、文字列変数を説明せよ。 7 C言語における繰り返し処理の文法(for,while,do~while)を、プログラムコード列を示して説明せよ。 8 C言語における条件判断の文法(if,else,else if)を、プログラム列を示して説明せよ。 9 繰り返し、条件判断において利用する論理式(等値演算子、関係演算子、論理演算子等で記迷する式)について、その記迷の方法を論理和、論理積も含めて説明せよ。 10 変数のアドレスについて説明せよ。また、ポインタについて、アドレスとの関連性を踏まえて、その役割と定義方法を説明し、具体的な使い方のプログラムコード例を示せ。 11 ポインタと配列の関係について、ポインタによる配列操作を列に説明せよ。 12 関数について、その役割と定義方法について説明せよ(戻りがた、関数名、引数リスト)。また、自作関数をそれらを利用するmain関数のプログラムコード例を示せ。 13 scanf関数の戻り値について、その内容を説明して、どのような際に利用すると便利か、プログラムコード例を示して説明せよ。 14 引数にポインタを利用する関数のプログラムコード例を示して、ポインタの必要性、重要性を説明せよ。 15 構造体について、その役割と定義方法を説明し、具体的な使い方のプログラムコード例を示せ。 16 ファイルポインタについて説明し、ファイル入出力の方法についてプログラムコード例を示して説明せよ。

  • C言語について…

    C言語についてですが… while文とdo while文はどう違うんですか?プログラムの書き方が違うくらいでしょうか? またwhile文とdo while文のどちらかしか使えない場合、どちらを使いますか?理由もお願いします。

  • スクリプトファイルについて

    スクリプトファイルってC言語みたいになんか文法とかあるんですか?

  • c言語プログラミングでの質問?です。

    学校でc言語プログラミングを使って簡単なゲームを作りなさい。 という課題が出ました。 下記の条件に沿って作れとのことです。 なかなかいいアイデアが浮かばないんですが、なにかちょうどいいものないですかね? ・scanf文を使うこと。。 ・if文を使うこと。 ・for文(while文)を使うこと。 ・rand関数を使うこと。 ・自分で定義した関数を使うこと。 ・配列または文字列を使うこと。

専門家に質問してみよう