トップページ⇒tech
48コメント16KB

インタープリター言語スレ。

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/12/24(金) 07:38:04
重要:実行時に中断してプログラムを修正しても途中から継続実行
できるものに限る。

会話型で動的に修整、状態変更できないものはいらない。
0002デフォルトの名無しさん2010/12/24(金) 07:40:07
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0003デフォルトの名無しさん2010/12/24(金) 08:24:48
質問です。

中断して、全削除という修正をしたらどうなりますか?
0004デフォルトの名無しさん2010/12/24(金) 08:50:35
>>1
会話的に、動的に修正、状態変更ができないものは、
対象から外す、の意味かな。
0005デフォルトの名無しさん2010/12/24(金) 08:52:48
smalltalkとlisp族の一部はcompiler型だが>>1の要望は満たすけど除外なわけね?
0006デフォルトの名無しさん2010/12/24(金) 08:56:21
>>1
何故そこが「重要」なのか。理由を聞かせてください。
0007デフォルトの名無しさん2010/12/24(金) 09:18:15
>>6
人工衛星や探査機。
打ち上げ後にバグを発見したときに、リモートで修正するため。
0008デフォルトの名無しさん2010/12/24(金) 09:27:54
>>7
親スレッドを並列で参照している小スレッドがあって、
親スレッドのルールデータベースを「中断せず」に変更。
小スレッドから次にこの部分が参照された時から、修正
される、が普通でしょう。
小スレッド部分を「中断」してしまうと、落っこちてしまう
かもしれない。
0009デフォルトの名無しさん2010/12/24(金) 09:55:45
>>7
ボイジャーは確か観測対象の惑星ごとにプログラムの入れ替えをおこなっていたはずだが、
インタプリタなんか使ってないはずだぞ。
0010デフォルトの名無しさん2010/12/24(金) 14:13:17
私はSWI-Prologで>>1の指定に沿ってると思う。
だけど割り込みを入れて中断し、プログラムを取り替えて
再開というのは実務では希。ほとんどがマルチユーザーで、
それぞれ別の環境で実行中だが、実行を止めずに、
しかも気が付かないようにその中核部分を変更してしまい
たい、というものだ。この中核部分周辺にモニターを仕組ん
でおいて、これをエージェントとして使う。
>>1で掲げるインタプリタの条件付けはちょっと外れている
ように感じる。
0011デフォルトの名無しさん2010/12/24(金) 20:55:58
>>7
FROM書き換えて再起動じゃないの、普通
001262010/12/25(土) 00:44:39
ごめん、自分は >>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の話っぽい、ごめん。
0013デフォルトの名無しさん2010/12/25(土) 15:38:50
途中で止めて変更できる仕様でも、結局つじつまが合わなくなるだけだろ
func1内の変数aを指しているポインタbを持つfunc2を実行中に中断して、
変数aを削除する変更を入れたらどうなるのか?
0014デフォルトの名無しさん2010/12/25(土) 19:14:09
>>11
あの時代にFROMなんてものはなかった
おそらく磁気コアメモリー
0015デフォルトの名無しさん2010/12/27(月) 07:11:13
インタプリタ言語をそのまま使用することより、
手を入れてより強力なインタプリタ環境を構築
している場合が多いと思うが、こういうものも
紹介していけばいいのかな。
0016デフォルトの名無しさん2010/12/30(木) 06:39:57
ソケット経由が多いだろうけど、遠隔地から、プログラムを送り込んで、
GO! ,あるいは命令を動的に組み合わせる,実行環境を確認しながらの実行。
こういう制御はインタプリタでないと難しい。
0017デフォルトの名無しさん2010/12/30(木) 08:36:05
CPUが機械語を解釈して実行する仕組みそのものが
インタプリタだから、なんでもアリだな
0018デフォルトの名無しさん2010/12/30(木) 08:45:07
>>16
OSとシェル組み込めばいいだけの話じゃん。
0019デフォルトの名無しさん2010/12/30(木) 09:46:39
>>18
シェル経由を認めれば、そりゃなんだってできるだろ。
0020デフォルトの名無しさん2010/12/30(木) 19:02:01
OSが要らないインタープリタなんて、遙か昔のシステムだぞ。
0021デフォルトの名無しさん2010/12/31(金) 09:32:55
>>20
OSがbootする前にsystem構成やboot設定をやるためのforth系のインタプリタだったら
今でもざらにあるじゃん
0022デフォルトの名無しさん2011/01/01(土) 06:35:07
SWI-Prolog
Prologの中で数少ない活火山処理系のひとつ。
発展には目を見張るものがあるし、使い易いことも
確かですが。さて、
弱点、欠点は?
Prolog自体のそれを含めてあげてください。
0023デフォルトの名無しさん2011/01/03(月) 19:06:38
>smalltalkとlisp族の一部はcompiler型だが>>1の要望は満たすけど
>除外なわけね?

コンパイラをインタープリターと言うのは知的障害か?
ソース修整で再スタートする時点で会話型じゃないわ。
エラーがでても修整してそのポイントから継続できないのは
チンカスだとわからんのか?


0024デフォルトの名無しさん2011/01/03(月) 19:23:36
エラーがでても修整してそのポイントから継続できるコンパイラだってある、
という話だとわからんのかこのチンカスは。
0025デフォルトの名無しさん2011/01/03(月) 21:07:05
対話的なインタプリタが多いだけであって
対話型かどうかとインタプリタかってのは別なんじゃなかろうか
0026デフォルトの名無しさん2011/01/04(火) 21:16:36
>>23
> ソース修整で再スタートする時点で会話型じゃないわ。
ほえ?
> エラーがでても修整してそのポイントから継続できないのは
はぁ?

どっちも、普通にできてるけど、Lispの処理系
hint: incremental compile
つか、リスタートなんてのはほとんどの言語がLispのパクリちゃうかなぁ
0027デフォルトの名無しさん2011/01/05(水) 01:33:29
(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)) に
修正して継続するとかどうやるの?
0028デフォルトの名無しさん2011/01/05(水) 07:57:02
>>27
そんなのできる言語あるの?
0029デフォルトの名無しさん2011/01/05(水) 14:59:34
インタープリターや、コンパイラーでもインクリメンタルコンパイルができるLISPみたいな
言語なら普通に可能とかって、そういう主張なんだと理解していたのだが、違うのか?
0030デフォルトの名無しさん2011/02/17(木) 12:03:18
cont
0031デフォルトの名無しさん2011/02/18(金) 02:48:23
遅レスだけど、

>>29
普通は無理じゃないかな。
Lisp とか Smalltalk で想定しているのは関数やメソッド単位での動的置き換えだと思われ。
普通はコンパイルやディスパッチの単位は関数やメソッドでしょ。コンパイルする前の
ソースコードを呼び出せる処理系もあるけど、コンパイルした後の関数を字句上の位置で
置き換えるのまでは難しいんじゃないかな。

もちろんメモリ上にある命令列を手動で置き換える事は可能だろうけど、それはどの言語
でも出来るっちゃーできるからね。
0032デフォルトの名無しさん2011/02/18(金) 02:57:14
さすがに「どの言語でも」ってことはないだろう。

たとえばPythonでやれるもんならやってみそ。
0033デフォルトの名無しさん2011/02/18(金) 03:18:46
そんなちゃっちゃと出来るとは思ってないけど、原理的には、デバッガをプロセスに
アタッチしてデータを書き換える様に、Python のインストラクションを書き換えれば
良い訳でしょ

このレベルではどの言語でも大した差はないと思われ
0034デフォルトの名無しさん2011/02/18(金) 06:15:48
>>33
>>23の
エラーがでても修整してそのポイントから継続できないのは
チンカスだとわからんのか?

が標準でできるインタプリタはない、でいいのかな?
0035デフォルトの名無しさん2011/02/18(金) 09:52:10
行番号つけてRUNすればどうなんだ?
0036デフォルトの名無しさん2011/02/18(金) 14:23:34
>>33
デバッガとか持ち出した日にゃ、基本、何でもありじゃん!
「どの言語でも」まで言い切るなら、せめて言語内で完結できることを根拠にしろよ。
0037デフォルトの名無しさん2011/02/18(金) 23:09:48
基本的には無理だと思うなぁ

純粋にファイル(標準入出力含む)を直接インタプリトしてる言語だって、
自信を読み込んだファイルのコンテキスト変わるもんなぁ
foo() { ... ここでエラー ...}
^ ここまでまき直さないと foo の変更は反映されないと思うんだが
だけど、ファイルは別の場所に移動してるとおもうよ

実際問題スタックになにがしかを保存する言語壊滅じゃね?
0038デフォルトの名無しさん2011/02/19(土) 07:31:35
>>36
だから最初に無理だって言ってるじゃん。
無理だと断ってる所にあんまり突っ込むなってw
0039デフォルトの名無しさん2011/03/30(水) 22:33:54.12
みんなでインタプリタ言語作ろうぜ
構文はどれに似せようか
0040デフォルトの名無しさん2011/04/01(金) 01:11:31.50
やりたいことをそのまま書けるようなのがいいよ

ADD A TO B GIVEN C

みたいな感じで
0041デフォルトの名無しさん2011/04/01(金) 18:25:37.01
>>40
もうCOBOLみたいなのはやめようぜ
0042デフォルトの名無しさん2011/04/01(金) 21:49:27.06
>>41 例えば、Prolog
:- op(750,xfx,が).

% 状況
天気 が 晴れ.
テニスコード が 空いている.
卓球室 が あいている.
%

どんなスポーツをするか(テニス) :- テニスをする,!.
どんなスポーツをするか(卓球) :- 卓球をする,!.
どんなスポーツをするか(なにもしない) :- なにもしない.

テニスをする :- テニスができる.

卓球をする :- \+(天気 が 晴れ),卓球ができる.

なにもしない :- \+(テニスをする),\+(卓球をする).

テニスができる :-
    '天気が晴れの場合は, テニスコードが空いているならテニスができる。'.

'天気が晴れの場合は, テニスコードが空いているならテニスができる。' :-
    天気 が 晴れ,
    テニスコード が 空いている.

卓球ができる :- 卓球室 が あいている.
0043デフォルトの名無しさん2011/04/05(火) 07:04:59.82
>>42
バックトラックとかのからくりがないと、こういう簡素な構文には
ならないのかな。これで速度がでればねぇ・・・
0044デフォルトの名無しさん2011/04/06(水) 15:01:54.04
それなんてmakefile?
0045デフォルトの名無しさん2011/07/05(火) 02:33:18.04
メモ

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じゃ呼べないかなと。配布も出来そうにない。
0046デフォルトの名無しさん2011/11/22(火) 19:23:06.21
長っ
0047デフォルトの名無しさん2012/07/03(火) 17:53:23.45
>>42
Prologだけど、変数が少ないから、そんなに遅くないはず。
0048uy ◆pdu1UZmweE 2012/07/03(火) 23:02:40.53
バカじゃねーの
例外さえ実装されてりゃ出来るに決まってんじゃん

それすらわからないゴミカス共
■ このスレッドは過去ログ倉庫に格納されています