アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。どうも、初めまして。

タイトルの通り、自分でプログラミング言語を作成したいのですが、
どこから手をつけていいのかわかりません。
作成するにあたって、必要になる知識などはありますか?
一応、扱える言語は「HSP3」と「ActiveBasic」です。
中学生なのでフリーの言語しか勉強していませんが、
Web講座を見て独学で勉強いたしました。

「HSP3」と「ActiveBasic」ではどちらの方が作りやすいですか?
やはり、「ActiveBasic」の方ですか?

ご回答のほどよろしくお願いします。

A 回答 (8件)

★アドバイス


・スクリプト言語を自作したいようですね。
>(HSP3で作成:未定)→ActiveBasicで作成→C言語の勉強→作成
 この順で作成するより最初からC言語をお勉強しながら作り上げていくのはどうでしょうか。
 『HSP3』そのものがスクリプト言語のような感じですのでこれで作るのは無理・無駄です。
 『ActiveBasic』の方がしっかりとした言語です。
 コンパイルして機械語になった exe を作成してくれます。
・まずは言語の仕様を決めた方が良いです。
 私も11年前に簡単なインタプリタを作成しましたが、ころころと仕様を変えてしまったために
 完成するまでに時間が掛かりました。そのときに参考にしたのが N88-BASIC です。
 インタプリタを作るためにわざわざ N88-BASIC 日本語版を買いました。
 買った理由はマニュアルを参考にするためでした。
・仕様も最初は簡単なタイプが良いでしょう。
 例えば
 (1)変数は a-z の 26 個だけ。
 (2)if、else、switch の条件分岐。
 (3)for、while、do-whileの反復処理。
 (4)変数などは整数型、実数型、文字列型は最低限用意。
 (5)サブルーチンを定義、呼び出せる。
 (6)グローバル変数(A-Z)、ローカル変数(a-z)を定義できる。
 (7)組み込み関数の呼び出し、エラー処理。
 (8)その他
 こんな感じだけでも最初は難関です。
・最終的にC言語を使って作成するなら次のサイトを参考にして下さい。
 http://www.nakka.com/soft/ns/→『nScript』
 この言語の仕様は『言語仕様』のリンクを読んでみて下さい。
 http://www.nakka.com/soft/ns/ns.txt→『言語仕様』
 この言語のコンセプトは『C言語ライクな簡易スクリプト』だそうです。
 ソースファイルもダウンロードできます。
 無料のCコンパイラを用意さえすればきっとコンパイルできるでしょう。
 コンパイルが出来たらいろいろといじってみるのも良いな。
・あとこのようなスクリプト言語を作る前に『式』を評価する処理を作成して下さい。
 回答者No.6さんのアドバイスにありますね。まずは数式を評価(計算)する処理を
 作ります。数式には四則演算以外に関数を呼び出したら戻り値を使って評価する
 ようにします。ここがポイントです。→言語の仕様が式評価の場合。
 数式を評価できたらif、elseなどの条件分岐とfor、whileなどの繰り返し文も
 処理できるようにします。このとき内部でどのように繰り返し文を処理するように
 管理するかが一番難しいところです。楽な方法では独自の言語のソースを一旦
 中間コードにコンパイルしてその中間コードを擬似アセンブラのように処理します。
 この方法が処理速度が早くなり、作るときも実装しやすいと思います。

最後に:
・まずはしっかりとしたプログラミング言語を習得して下さい。
 『HSP3』は遊びのプログラム程度しか活用できません。
 『ActiveBasic』か、『C言語』を先にお勉強して下さい。
 あと数式を評価するタイプを先に作ります。
 これが出来れば独自の言語の1/4は完成したような感じです。多分1/4だな。
・以上。

参考URL:http://www.nakka.com/soft/ns/
    • good
    • 1
この回答へのお礼

アドバイスありがとうございます。
とりあえず、「HSP3」での言語作成はやめておきます。(向いていないようなので)

現在、勉強中の「Active Basic」での言語作成を目標に勉強したいと思います。
まだ自分自身「C言語」を学ぶ気も、余裕もありません。(現時点では)
もちろん、最終的には絶対「C言語」を学ぶ必要があると思うので、
目先にはおいておきたいと思います。

「Active Basic」で作るとなると文献資料などは極端に少なくなりそうですが、
自分なりにがんばってみたいと思います。

まず、数式を評価する処理について調べたいと思います。

お礼日時:2007/12/17 01:40

HPでmini言語の作り方を公開している方がおります、開発言語としては


C++のほうがよい。
下記URLを参照ください
http://www005.upp.so-net.ne.jp/h-masuda/cl/index …
    • good
    • 1
この回答へのお礼

情報提供ありがとうございます。
参考にさせていただきます。

お礼日時:2007/12/06 23:08

>どこから手をつけていいのかわかりません。



とのことですので、とりあえず電卓を作ってみるのはいかがでしょう。
数式を入力して、答えを返すアプリケーションです。
電卓(数式)も立派な言語ですし、これをクリアしなければプログラミング言語はまだ無理でしょう。

言語は何でも構わないでしょう。処理系を実装するということがどういうことかが分かっていれば、些細なことです。分かっていなければ、書籍の多いC言語、Javaにするのが無難です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

その電卓というのは、【1+1】などの【数式】を入力して答えを出す物ですよね?

では、一回作ってみます。

お礼日時:2007/10/22 18:28

ActiveBasicでは無いですが(十進BASICという言語で書かれています)BASICで書いたTiny(簡易)Basicインタプリタ言語がありました。


http://www.urban.ne.jp/home/kz4ymnk/seminar/basi …
下のほうの「言語処理系」の「Palo Alto Tiny BASIC インタプリタ + STARTREK.BAS」からダウンロードできます。何の解説も無いので自力で解読する必要はあります。
「数式処理」を読むと自力で電卓を作れる資料があります。電卓処理は言語処理の基本みたいなものですから勉強することをお勧めします。

言語を作るときに検索キーワードを書いておきます。
・文法を記述する「BNF記法」
・計算式の処理関連「逆ポーランド記法」
数式は必ず逆ポーランド記法が必要なわけでは無いですが、多くが採用しています。
・言語を解析する「構文解析」「意味解析」
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ActiveBasicでなくても十進BASICはN88-BASICなどとあまり文法的にかわらないので、すごくためになります。
数学処理や、そういう知識を全て吸収して(容易ではないと思いますが)
プログラミング言語作成に移りたいと思います。そうでないと作れ無いと思うので。

一つ一つ、Wikipediaで調べたりして知識を深めたいと思います。

やはり、C言語で作るとなるとC言語を最初から勉強しないといけないので(難しいと聞いているので)
いま、出来る力で精一杯がんばってみたいと思います。
C言語に入るのはそれからでも遅くないと思うので。
ですがおいおいやる予定なので、C言語を薦めて下さった方にも大変感謝しています。

予定としては、
(HSP3で作成:未定)→ActiveBasicで作成→C言語の勉強→作成
という風にしていきたいと思います。

締めの雰囲気ですが、まだ質問は打ち切りませんので、
よろしくお願いします。

お礼日時:2007/10/17 20:39

> >必要な道具は、紙とペンがあれば十分です。

(もちろん、ワープロでも可)
>
> それはどういう意味でしょうか?

「プログラミング言語」というのは、早い話が「仕様」のことです。仕様を作るだけなら筆記具以外の道具はいらないということです。
インタープリタとかコンパイラとかは、その仕様を実際のコンピュータの上で実現するための「言語処理系」であり、新しく作ったプログラミング言語で書かれたプログラムを、直接的か間接的かに関わらず、機械語に翻訳するためのトランスレータに過ぎません。

最終的にインタープリタを実装するにしても、まずは仕様を固めることが重要であることを理解してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

なるほど、プログラミング言語=仕様をPCで具体化したものなんですね。
どういう仕様にするか考案して固めてみます。

お礼日時:2007/10/17 18:50

プログラミング言語を作ることはそこそこ難易度の高い事だとまず理解してください。

ようは、時間かかりますよ。勉強することがいっぱいありますよって事です。それ以上に面白いって良い点もありますが。
覚悟は出来ましたか?私も高校生2年のころに言語を作ったことがありますが、どれだけ困難かやってみないと分からないと思いますけど。でも、その頃よりは圧倒的にWEB等で入手できる情報量が多いので楽になっているとは思います。
コンパイラよりはインタプリタを作った方が楽なのでインタプリタをお勧めします。

まず読み物として、「プログラミング言語を作る」
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
C言語とJAVAで解説されています。

大半がC言語かJAVAなので、C言語かJAVAを勉強したほうがWEB上の情報は多いです。
C言語だとこれとか。
http://kmaebashi.com/programmer/devlang/index.html
これとか。
http://879.hanac200x.jp/prog/makeint.htm
JAVAは詳しくないので省略します。

C言語のコンパイラは無料入手できます。ついでに入門。
http://homepage3.nifty.com/mmgames/c_guide/

実際には、「HSP3」と「ActiveBasic」でも作れるんですが、WEB上で参考になるサイトが無いのが問題ですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

>プログラミング言語を作ることはそこそこ難易度の高い事だとまず理解してください。ようは、時間かかりますよ。勉強することがいっぱいありますよって事です。それ以上に面白いって良い点もありますが。

はい!承知しています。覚悟の上です。

C言語を勉強するしかないようですね。フリーでもあったんですね。

>実際には、「HSP3」と「ActiveBasic」でも作れるんですが、WEB上で参考になるサイトが無いのが問題ですね。

http://happytown.orahoo.com/yutibonsoft_hp/
ここでは作っているようです。「ActiveBasic」で。
まだ、「ActiveBasic」で作るのをあきらめたわけではないので。

おいおいやっていくなら、C言語の方でやっておいた方がいいみたいですが。

お礼日時:2007/10/17 13:35

書籍では


「いまどきのプログラム言語の作り方」
出版社: 毎日コミュニケーションズ (2005/11)
ISBN-10: 4839919232
ISBN-13: 978-4839919238
「スモールコンパイラの制作で学ぶプログラムのしくみ 」
出版社: 技術評論社 (2004/11)
ISBN-10: 4774121770
ISBN-13: 978-4774121772
なんかが分かりやすい。
Webサイトだと
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
このあたりかな。
C++かJavaで作るのが普通でサンプル等も殆どがC/C++。たまにPascalかLispという感じだと思います。
構文解析や実行速度の問題でBASICで作る奴は居ないと思います。
※大昔のBASIC全盛時代には幾つかの例がありますが。

「HSP3」と「ActiveBasic」だと目くそ鼻くそな感はありますがActiveBasicの方がなんぼかマシな気はします。
※「HSP3」「ActiveBasic」がウンコだという意味ではなく目的にそぐわないという意味です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

書籍の方は本屋で探します。
wabサイトのほうも作成にあたってのことが書いてあり参考になりました、
ありがとうございました。

やはりCの方が無難なんでしょうね。
分かってはいたんですが、手をつける機会が無かったので。

「ActiveBasic」で作れないことは無いと思うのですが
やはり、目的にそぐわないようですね。

お礼日時:2007/10/17 13:21

> 「HSP3」と「ActiveBasic」ではどちらの方が作りやすいですか?



プログラミング言語を自作するのですよね。
それであれば、HSP3とかActiveBasicは関係ありません。

必要な道具は、紙とペンがあれば十分です。(もちろん、ワープロでも可)
コンパイラとかインタープリタを作るのであれば、話はまた別です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
>必要な道具は、紙とペンがあれば十分です。(もちろん、ワープロでも可)

それはどういう意味でしょうか?

>コンパイラとかインタープリタを作るのであれば、話はまた別です。

インタプリタ言語(または中間言語インタプリタ)を作りたいと思っております。
説明不足でしたすいません。

お礼日時:2007/10/17 13:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!