プログラミング言語を自作した方はいますか?また、作った理由やその言語の特徴、利点、もし新しく言語を自作する場合最低限必要な知識など詳しく教えていただけるとありがたいです。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2013/09/11 15:34:22

ベストアンサー

id:Sampo No.3

回答回数556ベストアンサー獲得回数104

文字を使わず図形の組み合わせでプログラムを書く、ビジュアルプログラミング言語というのを大学院で設計していました。
http://ci.nii.ac.jp/naid/110007685114

言語の設計と実装には、情報科学の中でも最初の課程なのですが、状態機械論、言語クラス論を押さえておく必要があります。

そうすると言語の文法というものをBNFという形式で厳密に記述できるようになります。

文法を厳密に記述できたら、ソースコードを読み取って構文解析するプログラムは自力でも単純作業で書けますし、単純作業ってことは自動で作成してくれるソフトがいろいろあります。

文法解析されたプログラムをどうするか、ここからは方針が分かれるのですが、機械語に変換してネイティブプログラムにしたいとなると、

  • 機械語を勉強する(たいへん)
  • 機械語変換はLLVMに任せることにしてLLVM中間コードの作り方を勉強する(ややたいへん)

のどちらかですかね。
構文解析結果を意味論に従ってコードに変換していきます。

機械語に変換するのでなくインタープリタ実行するのなら、ソース解析器に意味論の実行エンジンを作り込んでいくことになります。

意味論ってのが厳密な記述手法がないというかあることはあるけどまだるっこしいので、構文解析の先は泥臭い設計作業が待っています。

とまあここら辺までで出て来た各キーワードをさらっていけば言語自作に必要な知識は集まるんじゃないかと思います。

その他の回答2件)

id:NAPORIN No.1

回答回数4892ベストアンサー獲得回数909

プログラミング言語 Misa すごく下品です
「ほむほむ」だけでプログラミングできる言語登場 わけがわからないよ - ねとらぼ
Brainfuck - Wikipedia
===
誤解される方がいらっしゃるようですので書き添えますが3つとも私自身がつくったものではないです。こういう形の言語(バリエーションですが)ならわりと簡単につくれ、特徴的にすることもできるようです、というご紹介になります。

他2件のコメントを見る
id:taknt

質問は
「プログラミング言語を自作した方はいますか?」ですよ。

2013/09/11 12:13:50
id:NAPORIN

いるようですよ、という答えですが…

2013/09/11 19:15:04
id:sibazyun No.2

回答回数1823ベストアンサー獲得回数246

昔、コントローラの一種に対する簡易アセンブラを作ったことがある。
確か1ワード16ビットで、機械語は定まっているが、さすがにそれではコーディング
効率が上がらない。だから、たとえば J 10 (十進数で10アドレス先にジャンプする)と書いたら、命令フィールドはJを十六進のC0に、10を十六進の0Aに変える、
といったもの。

あ、でこの「簡易アセンブラ」自身はミニコンピュータのアセンブラ言語で作成。

id:Sampo No.3

回答回数556ベストアンサー獲得回数104ここでベストアンサー

文字を使わず図形の組み合わせでプログラムを書く、ビジュアルプログラミング言語というのを大学院で設計していました。
http://ci.nii.ac.jp/naid/110007685114

言語の設計と実装には、情報科学の中でも最初の課程なのですが、状態機械論、言語クラス論を押さえておく必要があります。

そうすると言語の文法というものをBNFという形式で厳密に記述できるようになります。

文法を厳密に記述できたら、ソースコードを読み取って構文解析するプログラムは自力でも単純作業で書けますし、単純作業ってことは自動で作成してくれるソフトがいろいろあります。

文法解析されたプログラムをどうするか、ここからは方針が分かれるのですが、機械語に変換してネイティブプログラムにしたいとなると、

  • 機械語を勉強する(たいへん)
  • 機械語変換はLLVMに任せることにしてLLVM中間コードの作り方を勉強する(ややたいへん)

のどちらかですかね。
構文解析結果を意味論に従ってコードに変換していきます。

機械語に変換するのでなくインタープリタ実行するのなら、ソース解析器に意味論の実行エンジンを作り込んでいくことになります。

意味論ってのが厳密な記述手法がないというかあることはあるけどまだるっこしいので、構文解析の先は泥臭い設計作業が待っています。

とまあここら辺までで出て来た各キーワードをさらっていけば言語自作に必要な知識は集まるんじゃないかと思います。

  • id:standard_one
    言語を丸ごとではないですが、学生の時に言語拡張用のプリプロセッサを作りました。
    完全に趣味の世界でした。
    いやー、あの頃はPC触るのが楽しかった。

    最低限必要な知識は「自作言語をどうすれば実行可能になるかを知ること」でしょうね。
    マシン語を直接吐くようなのを目指しているなら別ですが、それはいきなり掲げる目標としては高すぎるので、まずは自分の考えた言語を何らかの高級言語に変換することになると思います。
    ということで「自作言語をどうすれば実行可能になるかを知ること」=「自由自在に扱える高級言語を身につける」となります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません