早朝に行われた自作言語のライブラリについての意見交換
こういうショボい言語でいいから、コンパイラを完成させたいな。 http://blog.livedoor.jp/south_kanto_dm/archives/51692011.html
2010-09-16 03:59:02今作ろうとしているプログラミング言語には、データ型にはintしかないけど、浮動小数点や文字も扱えるようにして、文字列を扱う標準関数を追加したら、実用的な言語になるのかな。
2010-09-16 04:00:31オブジェクト指向言語に別のパラダイムの言語を引っ付けて、文字列を扱う標準クラスを付け加えたら、使ってくれる人は出てくるかな。個人で言語を作る上で、壁になるのはライブラリと知名度なのかな。
2010-09-16 04:01:58@kimuraya ライブラリは、C言語で書かれたDLL(.dllや.soなど)を呼べるようになれば半分解決するような感じもするかもしれません。
2010-09-16 04:05:26@kimuraya よく見るのはその言語からCのライブラリを叩く方法を用意してラッパを提供することすね。その言語自身が多少ショボくてもCの性能で機能を提供できるし
2010-09-16 04:09:48@tana_ash 他の方からも、それを勧められたことがあります。Visual C++も標準関数はDLLの中にあるようです。標準関数の内部では、Windows APIを呼び出しているのでしょうね。そう考えると、標準関数はその様な形で提供しても問題ないのかもしれません。
2010-09-16 04:12:25@kimuraya 「@load "hoge.dll"」「@decl "hoge" "hoge" int int => int」のような構文を利用してもおもしろいかもしれませんね。
2010-09-16 04:17:37@kimuraya ちなみにloadはDLLの読み込み、declは登録する関数名、DLLの中での関数名、関数の型を登録する構文みたいな感じで。
2010-09-16 04:19:12@kimuraya Lispは実装しやすいです。CommonLispの規格準拠とかは厳しいですが。1000行の実装とかあって小さな処理系の参考になりますし
2010-09-16 04:20:26@s50 Cの標準関数も、VC++の場合、Cランタイムライブラリ(CRT)という形で提供されている事を思い出しました。CRTの中でWindows APIを呼んで、ファイルの処理などを行っているのでしょうから、標準関数はラッパだと思うのが良いかもしれませんね。
2010-09-16 04:21:27@hitsujibane 以前も、Lispの処理系は実装が簡単だという話を聞いたことがあります。今はLispまでは手が回らないのですが、来年にはLispの学習と共に、処理系の自作もやってみたいです。
2010-09-16 04:23:08@kimuraya WinのAPIからしてDLL越しに叩くC関数的なインターフェースですね。内部ではシステムコール呼ぶためのCPUの命令使ってますが
2010-09-16 04:28:45@kimuraya Cのラッパにするとバッファリングが多重になって重いとか、C側の抽象化と俺言語側の抽象化のミスマッチが許せない場合にはその言語側で書くす。まあそういう問題がなかったり許せたりするケースではCのインターフェースが世界共通言語、て感じに有効活用されることが多いす
2010-09-16 04:31:53自作言語の標準関数は、Cランタイムライブラリのラッパーみたいなものを作れば良いのだろうか。自作言語の関数から、Cの標準関数を呼び出して、Cの標準関数はWindows APIを呼び出して、Windows APIはWindowsカーネルを…(以下略)
2010-09-16 04:32:06@kimuraya ほんといまさらですみませんが、C++言語のカラクリという本にC++の出来た経緯があって、その中で言語の初期の成長のさせ方などが載っています
2010-09-16 05:41:26@kimuraya 【続き】その中で、C++での起こったことを例に最初にインタプリタを作って、コンパイラに成長させていく過程がありますので、参考になるかもしれません
2010-09-16 05:44:34