オリジナルなプログラミング言語を作ってみたいと考えています。
ただ、どうやって作ればいいかがわかりません。
私は、今のところ、Perl、なでしこ等々、簡単なプログラミング言語での
プログラミングしか出来ません。
しかし、プログラミング言語を作ることによって、
プログラミングの勉強にもなると考えているのですが
まずは、簡単なものでもいいので、それらしいものを作るには
何から勉強を始めればいいでしょうか、
又、他の言語を覚える必要はありますか。アドバイスを御願いします。
もしくは、例えば、参考になりそうなWEBサイトや、
書籍等々でも、結構です。宜しく御願いします。
No.15ベストアンサー
- 回答日時:
★アドバイス
>何から勉強を始めればいいでしょうか、
最終目標が本格的なプログラミング言語を目指しているようなので
次の順序で進めてみましょう。
(1)Perl、なでしこレベルではとても無理ですのでC言語をお勉強します。
(C言語の理由はサンプルがたくさん存在する。その他本格的に作れるなど)
(2)C言語で文字列の操作を学習→語句解析の基礎
(3)C言語でデータの管理を学習→構文解析の基礎(構文木など)
(4)N88-BASICのような言語を学習→自作プログラミング言語の参考になる
(5)ミニBASICをサンプルを見ながら作成→小規模なプログラミング言語誕生!
(6)最初は整数変数(A-Z)と四則演算、代入と変数の表示のみ作成。
(7)if、for、while、goto などを順に機能追加。
(8)その他はいろいろな命令を追加。
こんな感じです。
・正直ミニBASICを作れるようになるまで早くても1年以上はかかります。(人にもよるが…)
また一番重要なのはC言語などの言語の知識です。
ここが不十分ですと先がありませんので十分に身につけて下さい。
>参考になりそうなWEBサイトや、
下に参考になりそうなサイトを3つ紹介します。
紹介1をよく読んでください。
きっと今後、役に立ちます。
・紹介1
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …→『Part3 超小型BASICインタプリタを作ってみよう』
http://software.nikkeibp.co.jp/software/download …→『日経ソフトウエア ダウンロード2005年』
↑
『2005年10月号』のt30510.lzh、t40510.lzhをダウンロード(C言語ソース)
VC++用なので無料版などをダウンロードすればコンパイル可能。
・紹介2
http://www005.upp.so-net.ne.jp/h-masuda/cl/index …→『C言語』
http://www005.upp.so-net.ne.jp/h-masuda/cl/CTran …→『トランスレータ miniBASIC to C』
http://www005.upp.so-net.ne.jp/h-masuda/cl/Cmcas …→『インタプリタ作成 miniCASL』
http://www005.upp.so-net.ne.jp/h-masuda/cl/Cmbas …→『インタプリタ作成 miniBASIC』
3つともソースがダウンロード可能です。
・紹介3
http://www.vector.co.jp/soft/win95/prog/se205747 …→『とんでもBASIC』
Vectorさんのソース付きのソフトです。
参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
この回答への補足
細くというより追記ですが、意見をお聞かせ下さい。
日本語プログラミング言語と、そうでない言語。
どちらを作ったほうが良いと思いますか?又、どちらのほうが、作るのが簡単だと思われますか?
実現までのプロセスのアドバイスと、
参考サイトを教えていただいてありがとうございます。
ひとまず、C言語を頑張ってみようと思います。
No.17
- 回答日時:
日本語プログラミング言語は個人的に嫌い. アルファベットならそのまま入力すればいいだけなのに, なぜわざわざ「日本語に変換」せにゃならんのか.
とまあ個人的な好き嫌いはさておいて, 「自然な」日本語を使おうとすると字句解析が困るような気がします. (例えば) 英語なら「単語は空白で区切る」というルールがあるので字句解析が簡単なんですが, 日本語にはこんな便利なルールがないので「どこからどこまでが単語なのか」で困るんじゃないかな. Mind 以来「ひらがなは無視」というルールをベースにすることが多いけど, 助詞は普通ひらがなで書くので完全に無視するわけにもいきません. 例えば「3 で 5 を割る」と「3 を 5 で割る」は違う処理なので, 助詞の「を」と「で」は無視できないということになります. 同じ問題は COBOL にもあるけど
DIVIDE A BY B (B で A を割る)
DIVIDE A INTO B (B を A で割る)
と前置詞の違いで区別できるのでまだ楽です.
ということで, (それなりに) メジャーな言語をまねて*個人的に気に入らないところ*をいじってみるといいかもしれない.
Forth に挑戦ってのは... 無謀かなぁ, やっぱり.
No.16
- 回答日時:
★アドバイス
>日本語プログラミング言語と、そうでない言語。
↑
自分の好みでしょう。(私は日本語プログラミングは好まない派です)
>又、どちらのほうが、作るのが簡単だと思われますか?
↑
日本語の処理よりも英字の処理が簡単です。
それに普通のプログラミング言語のように命令部分が『英字』で
コメントやメッセージが『日本語』という方が見やすい気がします。
日本語でプログラミングできる言語(ひまわり,なでしこ)は初心者向けですが
色分けがないと命令なのか、コメント(メッセージ)の区別がつきにくいので
個人的には嫌いです。
・下に『なでしこ』の作者さんの記事があります。
読んでみて下さい。
http://www.atmarkit.co.jp/news/200708/07/ll3.html→『「なぜ作ったのか?」、オレ様言語作った人々 - @IT』
あと次のリンクもどうぞ。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …→『プログラム言語を作る!』
・最終的に自作のプログラミング言語をどのようなユーザに使ってもらいたいかを
良く考えてから製作すれば良いでしょう。これにより日本語プログラミング言語を
つくるかどうかを決めます。対象者が初心者か、中級者か、上級者でも利用可能か。
参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
ご意見をお聞かせいただいて、ありがとうございます。
では、日本語でないプログラミング言語を、まずは目指すことにします。
(初心者の人も、中級者の人も使える言語を。)
また日本語プログラミング言語を、作りたくなったら、
それを改造するか、作ったノウハウを使って一から作りたいと思います。
確かに、私も思いますが、なでしこで作ったプログラムのソースは、
なでしこエディタでないと、色わけが出来ないので、とてもとても見づらいです・・・。
ありがとうございました。
No.14
- 回答日時:
たぶん,Javaは嫌だとかPerlではなんちゃらら
とかいってる段階で相当道は長いというか・・・・
読んだだけで理解した気になってるあたりでも
きっとまだまだなんでしょうね
そもそも言語なんかは何でもいいんです.
その根底にあるアルゴリズムとか,考え方,
「俺様言語」に何をさせたいか・・・そういう部分がメインです.
必要ならプログラミング言語はその場で覚えればいい.
言語を作るんなら,どなたかも仰ってましたが
Lisp(Common LispでもScheme)あたりは案外いいのかも.
maximaなんかはLispが根っこにあるし,そもそも
人工知能系の研究が発祥みたいだし.
いわゆる「関数型」の言語は,言語そのものを作るのに
むいてるのかも知れない.Haskellなんかも
他の言語つくるのに向いてるというか,perl6の(試験)実装は
Haskellで書かれてるしねえ.
perlでも「Higher-Order Perl」なんかは
パーサの実装を解説してるし,
Parse::RecDescentなんていうパーサの
モジュールもある(「はてなダイアリー」はParse::RecDescentで
実装されてるね).
あとは英語の本は必須でしょう.
それから岩波の「ソフトウェア」系の本とか.
各種アルゴリズムの定番というかバイブルは
やぱりKnuthのThe Art of Compuer Programmingあたりかな
近藤嘉雪さんの「C言語のためのアルゴリズムとデータ構造」なんかは
まとまってて読みやすい.
正規表現の基本的な実装例とかも出てる.
毎コミの「いまどきのプログラミング言語の作り方」は
単にJavaを使ってるというだけで,
考え方とかはかなり一般的なものだと思う.
再帰降下法で実装してるし,解析木とかもサンプルつきで出てるしね.
No.13
- 回答日時:
Wikipediaのcompilerの説明が大体分かったのであれば、
言語処理系を作成するのに必要な知識は揃っているはずです。
あとはlexical analysis、syntax analysisなどのalgorithmを
好きな作譜言語で記述するだけです。
なでしこでもPerlでも大嫌いなJavaでもかまいません。
これだけで即、compilerの出来上がりです。
> 俺様言語ではなく、最終的には、もっと誰でも使えるようなものを
> 作れるようになりたいと考えています。
それではEsperantoを学んではいかがでしょうか。
より多くの人に使ってもらうためには、
international lingua francaとして作られたこの言語を
学んでも損はないでしょう。
自分で言語を作るにあたっては考えるよりも感じることが大事です。
感性を磨くためにも
『The Art of Computer Programming 』
http://www.amazon.co.jp/Computer-Programming-Vol …
を読まれるのがいいでしょう。また、
『Structure & Interpretation of Computer Programs』
http://www.amazon.co.jp/Instructors-Accompany-St …
も必読でしょう。こちらも日本語訳が出ていますが、
あまり評判が良くないので原書をあたることをお勧めします。
言語の定義をどのように行えばいいのかを知るには
『The Definition of Standard ML』
http://www.amazon.co.jp/Definition-Standard-Ml-R …
を参考にされるといいでしょう。
せっかく作るのですから、曖昧な定義ではなく、
しっかりとした形式的定義をすべきです。
Forthと共にあらんことを。
ありがとうございます。比較的高い本ですね・・・。
まずは、そこまで本格的につくろうとも思っていないのですが
そういう知識も必要なのでしょうか。
又、英語はムリなので、読むなら日本語にしておきます
ありがとうございました
No.10
- 回答日時:
MicroSoft PowerPointは見るためのビューアーは無償配布されています。
http://www.microsoft.com/Downloads/details.aspx? …
「いまどきのプログラム言語の作り方」を持ってますがコレはコード付きで具体的に解説されていて分かりやすいです。
※絶版ですが比較的新しい本なので探せば未だ流通在庫が残ってるかも。
「スモールコンパイラの制作で学ぶプログラムのしくみ」とか
中田育男氏の「コンパイラ」関係の書籍など
プログラム言語を作る為の参考書は探せばたくさんあります。
ただ、実現する為のプロイグラミング言語はC++かせめてJavaが出来ないと厳しいと思います。
Parl、なでしこ しか経験が無いのではサンプリソースが読めないでしょう。
C/C++はVisualStudio2008EEやTurboC++が無償配布されていますし、Javaは無償配布されているJDKとEclipseが使えます。
ありがとうございます
C言語も何時かは勉強しようかと思っていました。
WEBで検索して見てみてもいまいち違いがわからないのですが、
CとC++では、どちらが向いているでしょうか。
また、どちらのほうが、まだ簡単でしょうか
No.9
- 回答日時:
.pptはMicrosoft PowerPointですので、持ってない人も多いかも。
。。古いデータはHTMLで残ってます。
http://risky.cs.inf.shizuoka.ac.jp/old/compiler2 …
前半が逆ポーランド記法のアルゴリズム、
後半が全体の構文解析のためのアルゴリズムです。
> 電卓づくり
経験があるPerlかなでしこで良いと思います。
> Java
JavaとPerl、なでしこは、文法があまりにも違うので(特にオブジェクト指向の所)
内容は見てみないとわかりませんが、もしかすると大半が参考に出来ないかも知れません。
ありがとうございます。
Microsoft Office2003一式を持っていますのでpptも見れます。
電卓づくりは、Perlかなでしこで十分なのですね。
たしかに、Javaと、Perl/なでしこは、文法がかなり違いますよね。
他の、Javaプログラミングの本なら読んだので、違うことはわかるのですが・・・。
やはり、あまり参考になりそうじゃないですか。
いや、これを機会に他のプログラミング言語も
勉強したほうがいいかな。とも思っているのですが。
No.8
- 回答日時:
ANo.7です。
これを質問者さんのライフワークとするといいかもしれませんね。
プログラミングにはアルゴリズムとゆうものがあります、
これを習得すると上達が早いと思います。
プログラミングを始めると、アルゴリズムの壁に当たり先へ進めなくなる時があります、
こうゆう時は頭を冷やして休息しましょう、そうするといいアイデアが出てきます。
プログラミング言語ですが、最初は好きなものから取り組んだ方がいいと思います。
http://www5c.biglobe.ne.jp/~ecb/index.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- アプリ botの作り方 1 2023/03/23 17:29
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- Windows 10 パソコン得意な人どうやって勉強したか教えてください 13 2022/04/26 00:41
- 法学 コンピューター プログラミングの言語で記述されたプログラミングのコード一式は、作った人に 著作権があ 4 2023/08/04 17:31
- その他(プログラミング・Web制作) プログラミングを勉強してますが、難しくて、中々頭に入りません。 ふと思いましたが、今はサイト作成ツー 12 2022/12/21 19:46
- その他(学校・勉強) 自分の市場価値を高めるには 3 2022/07/12 09:11
- その他(IT・Webサービス) 障害者の将来の仕事について 7 2022/11/20 13:09
- その他(プログラミング・Web制作) ネットで簡単に開発できるプログラミング言語 2 2022/07/26 14:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
C++ ってなんて読む?
-
VBSでDim、Private、Publicの違い
-
C言語とhtmlの違いを どな...
-
楽しくて最高のプログラミング...
-
COBOLで文字タイプを数字...
-
なぜコンピューターをよく知っ...
-
TO_CHARで小数点以下がある場合...
-
プログラミング言語の制作方法...
-
rpa化する言語としてら何があり...
-
Pythonって何を意識した言語な...
-
任天堂で使うプログラミング言...
-
順列の内容をすべて表示するプ...
-
C++における継続行
-
プログラミング言語「C#」の難...
-
Solve()とは、なんですか?
-
プログラムに書かれる"%"記号の...
-
C++は何に適している?
-
ABAPのラジオボタンについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
楽しくて最高のプログラミング...
-
Pythonって何を意識した言語な...
-
C言語とhtmlの違いを どな...
-
プログラムに書かれる"%"記号の...
-
COBOLでのNOT = の AND条件
-
C++ ってなんて読む?
-
質問失礼します。 プログラム言...
-
プログラミング言語の制作方法...
-
UNITY Float型の接尾辞fって
-
C言語って古いですか?
-
Int('1234') で、strをかんたん...
-
COBOLで文字タイプを数字...
-
TO_CHARで小数点以下がある場合...
-
最新のプログラム言語を学ぶに...
-
C++における継続行
-
vbaとc言語の関連性について
-
VBScriptで引数を省略したい場合
-
VBSでDim、Private、Publicの違い
-
HTMLとC++で、どんなホームペー...
おすすめ情報