こんにちは。どうも、初めまして。
タイトルの通り、自分でプログラミング言語を作成したいのですが、
どこから手をつけていいのかわかりません。
作成するにあたって、必要になる知識などはありますか?
一応、扱える言語は「HSP3」と「ActiveBasic」です。
中学生なのでフリーの言語しか勉強していませんが、
Web講座を見て独学で勉強いたしました。
「HSP3」と「ActiveBasic」ではどちらの方が作りやすいですか?
やはり、「ActiveBasic」の方ですか?
ご回答のほどよろしくお願いします。
No.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/
アドバイスありがとうございます。
とりあえず、「HSP3」での言語作成はやめておきます。(向いていないようなので)
現在、勉強中の「Active Basic」での言語作成を目標に勉強したいと思います。
まだ自分自身「C言語」を学ぶ気も、余裕もありません。(現時点では)
もちろん、最終的には絶対「C言語」を学ぶ必要があると思うので、
目先にはおいておきたいと思います。
「Active Basic」で作るとなると文献資料などは極端に少なくなりそうですが、
自分なりにがんばってみたいと思います。
まず、数式を評価する処理について調べたいと思います。
No.7
- 回答日時:
HPでmini言語の作り方を公開している方がおります、開発言語としては
C++のほうがよい。
下記URLを参照ください
http://www005.upp.so-net.ne.jp/h-masuda/cl/index …
No.6
- 回答日時:
>どこから手をつけていいのかわかりません。
とのことですので、とりあえず電卓を作ってみるのはいかがでしょう。
数式を入力して、答えを返すアプリケーションです。
電卓(数式)も立派な言語ですし、これをクリアしなければプログラミング言語はまだ無理でしょう。
言語は何でも構わないでしょう。処理系を実装するということがどういうことかが分かっていれば、些細なことです。分かっていなければ、書籍の多いC言語、Javaにするのが無難です。
ご回答ありがとうございました。
その電卓というのは、【1+1】などの【数式】を入力して答えを出す物ですよね?
では、一回作ってみます。
No.5
- 回答日時:
ActiveBasicでは無いですが(十進BASICという言語で書かれています)BASICで書いたTiny(簡易)Basicインタプリタ言語がありました。
http://www.urban.ne.jp/home/kz4ymnk/seminar/basi …
下のほうの「言語処理系」の「Palo Alto Tiny BASIC インタプリタ + STARTREK.BAS」からダウンロードできます。何の解説も無いので自力で解読する必要はあります。
「数式処理」を読むと自力で電卓を作れる資料があります。電卓処理は言語処理の基本みたいなものですから勉強することをお勧めします。
言語を作るときに検索キーワードを書いておきます。
・文法を記述する「BNF記法」
・計算式の処理関連「逆ポーランド記法」
数式は必ず逆ポーランド記法が必要なわけでは無いですが、多くが採用しています。
・言語を解析する「構文解析」「意味解析」
ご回答ありがとうございます。
ActiveBasicでなくても十進BASICはN88-BASICなどとあまり文法的にかわらないので、すごくためになります。
数学処理や、そういう知識を全て吸収して(容易ではないと思いますが)
プログラミング言語作成に移りたいと思います。そうでないと作れ無いと思うので。
一つ一つ、Wikipediaで調べたりして知識を深めたいと思います。
やはり、C言語で作るとなるとC言語を最初から勉強しないといけないので(難しいと聞いているので)
いま、出来る力で精一杯がんばってみたいと思います。
C言語に入るのはそれからでも遅くないと思うので。
ですがおいおいやる予定なので、C言語を薦めて下さった方にも大変感謝しています。
予定としては、
(HSP3で作成:未定)→ActiveBasicで作成→C言語の勉強→作成
という風にしていきたいと思います。
締めの雰囲気ですが、まだ質問は打ち切りませんので、
よろしくお願いします。
No.4
- 回答日時:
> >必要な道具は、紙とペンがあれば十分です。
(もちろん、ワープロでも可)>
> それはどういう意味でしょうか?
「プログラミング言語」というのは、早い話が「仕様」のことです。仕様を作るだけなら筆記具以外の道具はいらないということです。
インタープリタとかコンパイラとかは、その仕様を実際のコンピュータの上で実現するための「言語処理系」であり、新しく作ったプログラミング言語で書かれたプログラムを、直接的か間接的かに関わらず、機械語に翻訳するためのトランスレータに過ぎません。
最終的にインタープリタを実装するにしても、まずは仕様を固めることが重要であることを理解してください。
ご回答ありがとうございます。
なるほど、プログラミング言語=仕様をPCで具体化したものなんですね。
どういう仕様にするか考案して固めてみます。
No.3
- 回答日時:
プログラミング言語を作ることはそこそこ難易度の高い事だとまず理解してください。
ようは、時間かかりますよ。勉強することがいっぱいありますよって事です。それ以上に面白いって良い点もありますが。覚悟は出来ましたか?私も高校生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上で参考になるサイトが無いのが問題ですね。
ご回答ありがとうございました。
>プログラミング言語を作ることはそこそこ難易度の高い事だとまず理解してください。ようは、時間かかりますよ。勉強することがいっぱいありますよって事です。それ以上に面白いって良い点もありますが。
はい!承知しています。覚悟の上です。
C言語を勉強するしかないようですね。フリーでもあったんですね。
>実際には、「HSP3」と「ActiveBasic」でも作れるんですが、WEB上で参考になるサイトが無いのが問題ですね。
http://happytown.orahoo.com/yutibonsoft_hp/
ここでは作っているようです。「ActiveBasic」で。
まだ、「ActiveBasic」で作るのをあきらめたわけではないので。
おいおいやっていくなら、C言語の方でやっておいた方がいいみたいですが。
No.2
- 回答日時:
書籍では
「いまどきのプログラム言語の作り方」
出版社: 毎日コミュニケーションズ (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」がウンコだという意味ではなく目的にそぐわないという意味です。
ご回答ありがとうございました。
書籍の方は本屋で探します。
wabサイトのほうも作成にあたってのことが書いてあり参考になりました、
ありがとうございました。
やはりCの方が無難なんでしょうね。
分かってはいたんですが、手をつける機会が無かったので。
「ActiveBasic」で作れないことは無いと思うのですが
やはり、目的にそぐわないようですね。
No.1
- 回答日時:
> 「HSP3」と「ActiveBasic」ではどちらの方が作りやすいですか?
プログラミング言語を自作するのですよね。
それであれば、HSP3とかActiveBasicは関係ありません。
必要な道具は、紙とペンがあれば十分です。(もちろん、ワープロでも可)
コンパイラとかインタープリタを作るのであれば、話はまた別です。
ご回答ありがとうございました。
>必要な道具は、紙とペンがあれば十分です。(もちろん、ワープロでも可)
それはどういう意味でしょうか?
>コンパイラとかインタープリタを作るのであれば、話はまた別です。
インタプリタ言語(または中間言語インタプリタ)を作りたいと思っております。
説明不足でしたすいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(言語学・言語) ハワイ語を勉強するためのおすすめの教材について 1 2022/11/23 18:51
- アプリ botの作り方 1 2023/03/23 17:29
- その他(学校・勉強) 自分の市場価値を高めるには 3 2022/07/12 09:11
- その他(プログラミング・Web制作) WEBアプリ開発に必要な言語 5 2023/06/28 16:57
- 大学受験 高3。通信制高校生。英検四九レベル偏差値は30も無いでしょう。社会不適合者です。 中学は2年から頭に 1 2022/05/12 22:06
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- IT・エンジニアリング プログラマーです 未経験から一年半汎用系(.NET、C#)システムを作っていました。自社なので1から 3 2023/03/16 20:13
- Windows 10 パソコン得意な人どうやって勉強したか教えてください 13 2022/04/26 00:41
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムからアイコンファイ...
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
UNITY Float型の接尾辞fって
-
Excel VBAで文字化けする (英語...
-
ゲームは何文字のプログラムで...
-
C言語を勉強していますがWindow...
-
VBSでDim、Private、Publicの違い
-
vbaとc言語の関連性について
-
今ってプログラミング言語は何...
-
UWSCはどのプログラミング言語?
-
パスカルケースの由来。
-
TANDEM言語ってあるんですか?
-
FORTRANと他の言語(c、c++、ba...
-
COBOLで文字タイプを数字...
-
VBScriptで引数を省略したい場合
-
プログラムに書かれる"%"記号の...
-
プログラマーのフリーランスと...
-
C++ ってなんて読む?
-
【Cか】ノベルゲーム【Jav...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
UNITY Float型の接尾辞fって
-
プログラムに書かれる"%"記号の...
-
vbaとc言語の関連性について
-
C言語とhtmlの違いを どな...
-
C++における継続行
-
プログラムからアイコンファイ...
-
TO_CHARで小数点以下がある場合...
-
COBOLで文字タイプを数字...
-
パスカルケースの由来。
-
VBSでDim、Private、Publicの違い
-
Excel VBAで文字化けする (英語...
-
VBSとWSHは読み方が違うだけで...
-
VBScriptで引数を省略したい場合
-
Solve()とは、なんですか?
-
プログラムははぜ小文字大文字...
-
今、コンピューター言語で、COB...
-
C++ ってなんて読む?
-
HTMLとC++で、どんなホームペー...
おすすめ情報