@knok Lispを関数型言語に含めるならいっぱいありますね。 あと @masterq_mogumog さんが、こーゆーの metasepi.org/posts/2012-08-… をまとめてました。
2015-01-08 10:13:56@n_soda qiita.com/tshinsay/items… この記事を見ていて「メモリ管理あたりは難しい」というコメントがあったのですが、実装じたいはあるのですね。「つぎはぎ感がある」というのはコメントの「穴をあけて、関数世界外で行う」というくだりがそういうところなのでしょうか
2015-01-08 10:25:22Lisp Machine上のOSがあります。Symbolics上のOSがあったなーと思ったらGeneraって1982年リリースなんですね。びっくり。 en.wikipedia.org/wiki/Genera_(o… RT @knok 関数型言語で書かれたOSってあるのかな
2015-01-08 10:28:39@HironobuSUZUKI 不勉強でeliseは知りませんでした。検索すると音楽の方ばかりがヒットしてつらいです…
2015-01-08 10:36:26@knok @n_soda うーん、、、とりあえずひとつの誤解はメモリアクセスの方法が提供されていれば、如何なる作用も引き起こせる、ということだと思います。昨今ほとんどのレジスタはメモリマップされているのですから。
2015-01-08 10:40:46@masterq_mogumog @knok 穴を開けるのは問題ないですよね。ヒープ領域の確保も、ランタイムに一任するんじゃなくて関数型言語で記述できるようにしておけば問題なさそう。並列GCの技術も既にあるし。疑問は割り込みですが、GCを禁止して、割り込み時用に一定サイズを確保?
2015-01-08 10:48:47@n_soda @knok 割り込みとGCは相性がわるくて、単純な思考実験をするだけでも破綻すると思います。それから、ヒープの外、つまりレジスタマップをどうやって型で管理するかもむつかしい問題な気がします。
2015-01-08 10:51:32@masterq_mogumog @knok 「割り込み処理中はGC禁止、割り込み中にメモリ確保が起きたら、割り込み時用に予約されたヒープから確保」ならOKと考えていいんでしょうか。それとも、割り込みハンドラからは、メモリ確保自体を禁止するんでしょうか?
2015-01-08 10:53:43@knok @HironobuSUZUKI あと、@KuniSuzaki さんが書かれてますが、スティーブン・レビィの「Hackers」に書かれてた、LMIやSymbolicsのLispマシンのOSの大部分は、Lispで書かれてます。
2015-01-08 10:54:47@masterq_mogumog @knok レジスタマップについては、bus_spaceみたいな抽象化をしてしまって型で管理しないというのが一つの手ですよね。あるいは Foreign Function Interface で使われている手は、一通り使えそう。
2015-01-08 10:58:15@n_soda @knok HaskellのFFIは単に生ポインタの受け渡しになるだけです。ポインタ演算はオフセットを使うしかありません。C言語の構造体よりしょぼいプログラミングモデルになると言えます。
2015-01-08 11:06:56@masterq_mogumog @knok それはショボい。こういうのは、RPCのIDLに似た仕組みを使ってコード自動生成してやれば、もっと楽にできますよねえ。でも優先順位は低そう。
2015-01-08 11:09:51@n_soda @knok 予約されたヒープから割り込み時にメモリを確保する方式は機能すると思います。メモリ確保を禁止すると、コンストラクタを呼べないので、おそらくプロミング不可能になると思います。
2015-01-08 11:10:46@n_soda @knok 自動生成するしくみはあったりするのですが、、、既存のメモリマップを協調動作させるのがむづかしい場合もありますし、なにより負けっぽいです。構造体ぐらい組み込みで使わせろ感があります。。。
2015-01-08 11:12:06@masterq_mogumog @knok ありがとうございます。metasepi.org/posts/2013-02-… の @takeoka さんのスライド3枚目の「あらかじめインスタンス確保」が、メモリ確保禁止ってことかなあとか思ってました。
2015-01-08 11:14:00@n_soda @knok まぁ、、、 @takeoka さんは何もわかってないので。。。
2015-01-08 11:14:41@n_soda @knok @HironobuSUZUKI ちょっと外れるけどICOTではProlog Machineを開発して、その上のOSを作っていましたね。情報処理学会誌「特集:知られざる計算機 2002/2」に色々載ってます museum.ipsj.or.jp/library/ronbun…
2015-01-08 11:15:11@masterq_mogumog @knok まあでも bus_space が裏でやってる、バスの種類依存したbyte swapやら考えると、組み込みでやるにはちょっと辛そうな気もしますです。
2015-01-08 11:15:29@n_soda @knok @takeoka 最近は値ベースの関数型言語もあるようで、ここ1年ぐらいはさわっています。 ats-lang.org jats-ug.metasepi.org
2015-01-08 11:17:58@masterq_mogumog @knok @takeoka 泥縄で metasepi.org/doc/metasepi-i… をナナメ読みしたんですが、割り込みハンドラは専用ヒープなんですね。きれいな設計ですが、性能追求したくなったときにコピーが問題にならないか気になります。
2015-01-08 11:20:30