2011年10月1期プログラムインタープリター言語スレ。
TOP カテ一覧 スレ一覧 削除依頼 ▼
・ 次のスレ
iモード携帯電話用Java(iアプリ) Part22
今作ってるシステムのフレームワークとアーキテクチャを淡々と語るスレ
emacsでeclipseと同等の開発環境は作れるのか?
誰かcsoのチートツール作ってくれませんか
インタープリター言語スレ。
- 1 :10/12/24 〜 最終レス :11/11/22
- 重要:実行時に中断してプログラムを修正しても途中から継続実行
できるものに限る。
会話型で動的に修整、状態変更できないものはいらない。
- 2 :
- このスレッドは天才pンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
- 3 :
- 質問です。
中断して、全削除という修正をしたらどうなりますか?
- 4 :
- >>1
会話的に、動的に修正、状態変更ができないものは、
対象から外す、の意味かな。
- 5 :
- smalltalkとlisp族の一部はcompiler型だが>>1の要望は満たすけど除外なわけね?
- 6 :
- >>1
何故そこが「重要」なのか。理由を聞かせてください。
- 7 :
- >>6
人工衛星や探査機。
打ち上げ後にバグを発見したときに、リモートで修正するため。
- 8 :
- >>7
親スレッドを並列で参照している小スレッドがあって、
親スレッドのルールデータベースを「中断せず」に変更。
小スレッドから次にこの部分が参照された時から、修正
される、が普通でしょう。
小スレッド部分を「中断」してしまうと、落っこちてしまう
かもしれない。
- 9 :
- >>7
ボイジャーは確か観測対象の惑星ごとにプログラムの入れ替えをおこなっていたはずだが、
インタプリタなんか使ってないはずだぞ。
- 10 :
- 私はSWI-Prologで>>1の指定に沿ってると思う。
だけど割り込みを入れて中断し、プログラムを取り替えて
再開というのは実務では希。ほとんどがマルチユーザーで、
それぞれ別の環境で実行中だが、実行を止めずに、
しかも気が付かないようにその中核部分を変更してしまい
たい、というものだ。この中核部分周辺にモニターを仕組ん
でおいて、これをエージェントとして使う。
>>1で掲げるインタプリタの条件付けはちょっと外れている
ように感じる。
- 11 :
- >>7
FROM書き換えて再起動じゃないの、普通
- 12 :
- ごめん、自分は >>1 じゃないんだ。
Practical Common Lisp
http://books.google.com/books?id=Bby4FJy49QUC&pg=PA18&lpg=PA18&dq=%22Deep+Space+1%22+lisp&source=bl&ots=0tuAX1vO4N&sig=P-fjd2ECumKYiBlusS4owqTAADQ&hl=en&ei=Zb0UTZWNA5GyvgO00OHHDQ&sa=X&oi=book_result&ct=result&resnum=6&ved=0CCEQ6AEwBQ
ただ、これを思い出しただけなんだ。
けどこれってインタープリタ関係失くって、REPLの話っぽい、ごめん。
- 13 :
- 途中で止めて変更できる仕様でも、結局つじつまが合わなくなるだけだろ
func1内の変数aを指しているポインタbを持つfunc2を実行中に中断して、
変数aを削除する変更を入れたらどうなるのか?
- 14 :
- >>11
あの時代にFROMなんてものはなかった
おそらく磁気コアメモリー
- 15 :
- インタプリタ言語をそのまま使用することより、
手を入れてより強力なインタプリタ環境を構築
している場合が多いと思うが、こういうものも
紹介していけばいいのかな。
- 16 :
- ソケット経由が多いだろうけど、遠隔地から、プログラムを送り込んで、
GO! ,あるいは命令を動的に組み合わせる,実行環境を確認しながらの実行。
こういう制御はインタプリタでないと難しい。
- 17 :
- CPUが機械語を解釈して実行する仕組みそのものが
インタプリタだから、なんでもアリだな
- 18 :
- >>16
OSとシェル組み込めばいいだけの話じゃん。
- 19 :
- >>18
シェル経由を認めれば、そりゃなんだってできるだろ。
- 20 :
- OSが要らないインタープリタなんて、遙か昔のシステムだぞ。
- 21 :
- >>20
OSがbootする前にsystem構成やboot設定をやるためのforth系のインタプリタだったら
今でもざらにあるじゃん
- 22 :
- SWI-Prolog
Prologの中で数少ない活火山処理系のひとつ。
発展には目を見張るものがあるし、使い易いことも
確かですが。さて、
弱点、欠点は?
Prolog自体のそれを含めてあげてください。
- 23 :
- >smalltalkとlisp族の一部はcompiler型だが>>1の要望は満たすけど
>除外なわけね?
コンパイラをインタープリターと言うのは知的障害か?
ソース修整で再スタートする時点で会話型じゃないわ。
エラーがでても修整してそのポイントから継続できないのは
だとわからんのか?
- 24 :
- エラーがでても修整してそのポイントから継続できるコンパイラだってある、
という話だとわからんのかこのは。
- 25 :
- 対話的なインタプリタが多いだけであって
対話型かどうかとインタプリタかってのは別なんじゃなかろうか
- 26 :
- >>23
> ソース修整で再スタートする時点で会話型じゃないわ。
ほえ?
> エラーがでても修整してそのポイントから継続できないのは
はぁ?
どっちも、普通にできてるけど、Lispの処理系
hint: incremental compile
つか、リスタートなんてのはほとんどの言語がLispのパクリちゃうかなぁ
- 27 :
- (loop for i in '(1 2 0 0 3 4) do (print (/ 1 i)))
で div by zero で止まったところから (/ 1 i) の部分を (if (zerop i) "inf" (/ 1 i)) に
修正して継続するとかどうやるの?
- 28 :
- >>27
そんなのできる言語あるの?
- 29 :
- インタープリターや、コンパイラーでもインクリメンタルコンパイルができるLISPみたいな
言語なら普通に可能とかって、そういう主張なんだと理解していたのだが、違うのか?
- 30 :
- cont
- 31 :
- 遅レスだけど、
>>29
普通は無理じゃないかな。
Lisp とか Smalltalk で想定しているのは関数やメソッド単位での動的置き換えだと思われ。
普通はコンパイルやディスパッチの単位は関数やメソッドでしょ。コンパイルする前の
ソースコードを呼び出せる処理系もあるけど、コンパイルした後の関数を字句上の位置で
置き換えるのまでは難しいんじゃないかな。
もちろんメモリ上にある命令列を手動で置き換える事は可能だろうけど、それはどの言語
でも出来るっちゃーできるからね。
- 32 :
- さすがに「どの言語でも」ってことはないだろう。
たとえばPythonでやれるもんならやってみそ。
- 33 :
- そんなちゃっちゃと出来るとは思ってないけど、原理的には、デバッガをプロセスに
アタッチしてデータを書き換える様に、Python のインストラクションを書き換えれば
良い訳でしょ
このレベルではどの言語でも大した差はないと思われ
- 34 :
- >>33
>>23の
エラーがでても修整してそのポイントから継続できないのは
だとわからんのか?
が標準でできるインタプリタはない、でいいのかな?
- 35 :
- 行番号つけてRUNすればどうなんだ?
- 36 :
- >>33
デバッガとか持ち出した日にゃ、基本、何でもありじゃん!
「どの言語でも」まで言い切るなら、せめて言語内で完結できることを根拠にしろよ。
- 37 :
- 基本的には無理だと思うなぁ
純粋にファイル(標準入出力含む)を直接インタプリトしてる言語だって、
自信を読み込んだファイルのコンテキスト変わるもんなぁ
foo() { ... ここでエラー ...}
^ ここまでまき直さないと foo の変更は反映されないと思うんだが
だけど、ファイルは別の場所に移動してるとおもうよ
実際問題スタックになにがしかを保存する言語壊滅じゃね?
- 38 :
- >>36
だから最初に無理だって言ってるじゃん。
無理だと断ってる所にあんまり突っ込むなってw
- 39 :
- みんなでインタプリタ言語作ろうぜ
構文はどれに似せようか
- 40 :
- やりたいことをそのまま書けるようなのがいいよ
ADD A TO B GIVEN C
みたいな感じで
- 41 :
- >>40
もうCOBOLみたいなのはやめようぜ
- 42 :
- >>41 例えば、Prolog
:- op(750,xfx,が).
% 状況
天気 が 晴れ.
テニスコード が 空いている.
卓球室 が あいている.
%
どんなスポーツをするか(テニス) :- テニスをする,!.
どんなスポーツをするか(卓球) :- 卓球をする,!.
どんなスポーツをするか(なにもしない) :- なにもしない.
テニスをする :- テニスができる.
卓球をする :- \+(天気 が 晴れ),卓球ができる.
なにもしない :- \+(テニスをする),\+(卓球をする).
テニスができる :-
'天気が晴れの場合は, テニスコードが空いているならテニスができる。'.
'天気が晴れの場合は, テニスコードが空いているならテニスができる。' :-
天気 が 晴れ,
テニスコード が 空いている.
卓球ができる :- 卓球室 が あいている.
- 43 :
- >>42
バックトラックとかのからくりがないと、こういう簡素な構文には
ならないのかな。これで速度がでればねぇ・・・
- 44 :
- それなんてmakefile?
- 45 :
- メモ
CINTが有名だが、教育現場などではUltra-Cが使われているそうな。
で、Ultra-CはChに名前を変えてバージョン更新中。
経緯
もともと外部スクリプトを使う方法としてhsp3imp.dllに出会ったが
Lua、Squirrelを知った。
さらに、サクラエディタなどに組み込まれているPpa.dllを、ダウンロードした時に気がつき、
Rubyもdll駆動できるっぽい話がちらほらあるようだが
結局AnsiC準拠が一番ということでCINTのDLLを探していたらUltraC→Chを発見したのがさっき。
Wiki見れば一発だったかも。
目標は、シンプルで高機能な言語で
UWSCのようなコールバックのないスクリプトと平行して動きながらデータのやり取りが出来て
DLLインジェクションでチートが出切るスクリプト。
Luaはなんとか可能かもしれないけどデータのやり取りがめんどいかなと。
HSPのは実行して終わりっぽい。
UltraCは有料なのもあるけどたぶんDLLじゃ呼べないかなと。配布も出来そうにない。
- 46 :11/11/22
- 長っ
TOP カテ一覧 スレ一覧 削除依頼 ▲
・ 次のスレ
iモード携帯電話用Java(iアプリ) Part22
今作ってるシステムのフレームワークとアーキテクチャを淡々と語るスレ
emacsでeclipseと同等の開発環境は作れるのか?
誰かcsoのチートツール作ってくれませんか