新しいスクリプト言語を設計する!
■ このスレッドは過去ログ倉庫に格納されています
0001 ◆opMJSavJhM
NGNG言語が少ないような気がします。例えば。。。
PERL - 大変メジャーで、実績も十分!
しかし、記号&暗号のようなスクリプト言語と感じるのは私だけでは無いはず
です。昔やった、sendmailの設定ファイルを何故か思い出します。
RUBY - 最近(?)人気急上昇のメジャー言語!ネーミングも良い!
しかし、(善し悪しは別として)オブジェクト指向言語であるが故に、私の様
にいまだに抵抗を感じる方もきっと多いはず。
そこで、オブジェクト指向でない分かりやすいスクリプト言語を設計してみた
いと思うようになりました。
いろいろと、アドバイスなりアイデアなりを頂けると嬉しいです。
0412デフォルトの名無しさん
NGNGそれならWSHと言う良いスクリプト言語環境がある。
0413デフォルトの名無しさん
NGNGはぁ ?
VB6 は、DWORD, PDWORD, PINT32, PCHAR, 関数ポインタ なんて型無いけど、WindowsAPI 呼べますが。
まあ、使いにくいというのは確かだが。
0414デフォルトの名無しさん
NGNGDWORD は INT32でもいいと言えばいいか
参照渡しが出来れば多少広い範囲が呼べるね
構造体型で渡す場合に多少不便程度だけど、そういうのは大抵COMサポートのもっと便利なの用意されてるしね。
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGものすごい分厚さのオブラート(ラップ)を通じてな。
0419デフォルトの名無しさん
NGNGどうやって???
0420デフォルトの名無しさん
NGNG_asm{}
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGhttp://members.goo.ne.jp/home/madcap0
0423デフォルトの名無しさん
NGNG画像処理ソフトの組み込み用だけど、このソフトを作る目的自体が
画像処理ソフトというより簡易スクリプトの実験だったりして。
とりあえず、第一段階として
型はバッファ、整数、bool程度
構文はfor-next/do-while/if/(組み込み)関数呼び出し
変数や関数の評価・代入のみで加減乗除などの演算はなし(というか、
演算関数の評価で代用)
といった簡単な処理系から作ってみるつもり。
変数の管理や関数呼び出しはやったことがあるから、この段階で
難しそうなのは制御構文か。
0424名無し@沢村
NGNG出発点 (0,0,…,0), 吸収点 (1,1,…,1) の
n次元超立方体上の対称量子ウォークの
吸収時間は Tr Xn - 1 で与えられるんだよ。
ここで Xnは方程式の解となるんだよ。わかるか?
おれはいまそういう簡単な研究に取り組んでいるんだよ!!!
0425デフォルトの名無しさん
NGNG関数呼出しって、どうやって実現しましたか?
例えば、sin()/log()/exp()/... ってあったとして、
if(script=="sin"){ ...}
if(script=="log"){ ... }
if(script=="exp"){ ... }
見たいな感じに1文づつ処理していったのでしょうか?
OS組み込みor標準関数なら、なんかうまくやって
一発で書き表すことができんでしょうかね?
0426デフォルトの名無しさん
NGNG{ "sin" , func_sin , 1},
{ "cos" , func_cos , 1},
{ "abs" , func_abs , 1},
{ "sqrt", func_sqrt, 1},
{ "log" , func_log , 2},
こういうふうにして
static int func_abs( void )
{
float f;
if( pop( &f ) != 0 ) return -1;
push( fabs(f) );
return 0;
}
こんな関数作ってた
俺の式入れるとグラフだしてくれるソフト
0427デフォルトの名無しさん
NGNGちょっぴり勉強になった。
0428名無し@沢村
NGNGおまいらよ、量子重ね合わせの状態とは何かわかるか?
まあくだいていえば、一台の車が右向きに走っている状態と左向きに走っている状態が同時に成立しているということよ。
だが、おれらが実際見ると、車は右向きか左向きかに固定して走ってるだろ?それは観測することによって、重ね合わせの状態のうちのひとつが固定するからよ。
おまいらよ、重ね合わせの状態のうちのひとつがどれに固定するかは、重ね合わせの係数によって決まるのよ。おまいらよ、重ね合わせの係数は複素数よ。複素数の勉強をしてみろ?
おまいらよ、量子PCでいう演算とは、この量子重ね合わせの状態を担う物理系に対して、パルス電波を与えることよ。
いままでのPCでは4bitで表現できる16の状態のうち一つについて1回づつ演算を行い、合計16回計算して16通りの結果を出力してたが、量子PCでは4bitで表現できる16の状態を同時に実現している重ねあわされた量子状態に対して1回の演算を行い、結果を出力するんだよ。
当然処理bit数が増えるほど、量子PCの威力は大きくなるわな。だから並列処理よ。
だが、おまいらよ、その演算結果を見ようとすると、重なり合った状態のうちの一つしか見れないだろ?
この問題を解決するものとしてShorのアルゴリズムというのがあるよ。
Shorのアルゴリズムは量子PCの教科書には必ず出てくる有名なアルゴリズムだから、見てみろ?
おまいらよ、このようにこれからのプログラムは量子の時代よ。
おまいらもひとつ量子言語をつくってみたらどうだ?量子でないプログラミングなんてザコよ!
0429423
NGNG私が以前作ったプログラムは、変数・関数を数値として評価し、代入文
で変数にその結果入れていくようなスクリプトを処理するもので、
a=3
b=inc(inc(a))
とするとinc(引数の数値を1増やす)によって値が増えbに5が入る、と
いう感じのもの。処理手順としては、まず=や括弧で文の構成要素ごと
に分離して検査・評価し、代入文なら右辺の評価結果を左辺(左辺は
変数または未定義変数候補文字列のみ有効)に代入する、という流れ。
関数は、引数に一つの「数値(即値か有効な定義済み変数、関数)」
をとるようにしたから、まず()で分け
文字列1(文字列2)
という形の部分があったら、文字列2を評価し、有効な数値(即値
か変数、または評価しうる関数呼び出し)であれば、その値を取得。
続いて文字列1を検査し、関数名なら文字列2を評価した引数の
数値に対して関数の機能(+1など)を適用し、その値を関数全体の
評価とする、という処理をしてみた。
0430名無し@沢村
NGNGおまえのそのやり方は古典よ。サルがやっと2足歩行を覚えた段階だな。
少しは頭を使ってみろ?
0432423
NGNG私の場合は、そもそも「外」を歩いてみたこともない段階だからね。
2足歩行より先に4本足で動き回る練習からしないといけない。
0433デフォルトの名無しさん
NGNGやっぱり括弧付四則演算が書けないと読み辛いよ。
再帰下降で処理すれば括弧付四則演算も容易だから挑戦してみたら?
0434名無し@沢村
NGNG再帰下降法?原始的なやり方だな。
離散フーリエ変換で処理したほうがスマートだよ。
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG単なるバカが無理してるとしか見えない芸風だ。 改善を求む
0437デフォルトの名無しさん
NGNGだな。
俺も昔は式の解析でいろいろ苦労した記憶があるんだが
最近書き直したらやたら簡単に書けてびびった。
0438山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0439デフォルトの名無しさん
NGNG山崎渉のしわざかー
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNG釣りか ?
0442デフォルトの名無しさん
NGNGそれはどのように動く?
局ののところ、(例えOS標準の数学関数であったとしても)
1関数づつ記述しているのと、大差ないとおもわれ
0443>>429
NGNGで、OSのライブラリ呼ぶときはどうしてましたか?
1つ1つライブラリを呼ぶコードを書いてましたか?
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG平均はおまえらが下げてる。
0446デフォルトの名無しさん
NGNGおまえには分からんだろう?(w
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG自作スクリプト言語からその中間言語に変換するコンパイラの3つのプロジェクトを作ったらいいんじゃないか?
中間言語は、
・スタックマシン
・32bit整数+32bitFloat の2つの型のみ。
・文字列は中間言語メモリイメージ中に埋め込んでそのアドレスを渡すのみ
・文字列は読み込みのみ変更不可
程度でどうでしょ? あんまり機能豊富にするならJavaVM使えって言われそうだし
0450デフォルトの名無しさん
NGNG大事なはスクリプト言語。まずはその仕様を
決めないと先にすすめない。
実装手段として中間言語が出てくるかもしれないが
順番が逆。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG中間言語の仕様と違ってスクリプト言語の仕様は、これはもう簡単には決まらないぞ。
特に実用的なって事になるとな
ギコbasicの時は、面白いというだけで作ったけどなあ
0453デフォルトの名無しさん
NGNGことごとく潰れている‥‥‥。
まず作者がある程度動作するプロトタイプを好き勝手につくり、
それを叩き台にして議論して改良したほうが実は現実的かと。
0454デフォルトの名無しさん
NGNGdup pop
push(pop + , - , not , Int2Float,Float2Int, そのアドレスの値 )
push(pop pop + - * / and or xor > == >= <= <> )
1+4バイト命令:
push( 即値、グローバル変数、ローカル変数)
push( pop グローバル変数配列、ローカル変数配列)
if (pop) then 分岐
分岐,CALL
命令空間が余ったら inc dec とか即値用短形式に割り振る
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGhttp://www.geocities.co.jp/SiliconValley-Oakland/8522/data/Script.txt
0457デフォルトの名無しさん
NGNG要は自分の功績を自慢したいと。
0458デフォルトの名無しさん
NGNGハゲ堂!
0459デフォルトの名無しさん
NGNG最近はオブジェクト指向一色って感じもするけど、そのあたりはどう?
0460デフォルトの名無しさん
NGNGなんでもかんでも出来る高機能スクリプトなら欲しいかもしれないし
ちょっと自分のプログラム中に組み込んで、カスタマイズ性を大きくしたりの用途なら不要だろうし
0461デフォルトの名無しさん
NGNGオブジェクト指向はいらん罠〜(w
0462デフォルトの名無しさん
NGNG新しいクリトリス言語って何?
0463423
NGNGといってもほとんど中間コード実行システムになっているな・・・。
簡易コンパイラも作らないと。
私も以前バイトコード(というか4バイトコード)インタプリンタを
作ってみたけど、スクリプト言語を作る前に実験のつもりでバイナリ
コードを実行する仮想マシンを作っておくと良いかも。コードの判別
やパラメータの解釈、メモリの管理などを文字列ベースのコードより
単純な形で練習できる。
テストのためにアセンブラが欲しくなるから、自然にアセンブリ言語
処理系(超簡易スクリプト)も作りたくなるだろうし(^^;。
0464名無し@沢村
NGNG採用されれば、何千万円もの開発資金を援助してもらえるよ。
もちろん定期的に進行具合をPM(プロジェクトマネージャー)に見せなければならないなどの、面倒くさい点は山ほどあるがね…
だが、それだけあれば、会社なんかやめて、毎日寝てくらせるぞ!!
PMにはアラン・ケイや伊地知をはじめ、いろんな大学教授や企業の研究者などがいる。
またPMは好きなやつを選んで応募できるから、気の合いそうなやつを選ぶといいよ。
これからは、個人でソフトを開発するなら、未踏ソフトウエア創造事業の時代だと思うが、どうよ?
0465山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0466山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0467デフォルトの名無しさん
NGNG0468山崎 渉
NGNG0469デフォルトの名無しさん
NGNG0470山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGLuaスレ dat落ちしてまったの!?
プログラミング言語 Lua
http://pc2.2ch.net/test/read.cgi/tech/1034182349/
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNGやたら古いスレあげてますね。
ところで、あなたに明日はあるんでしょうかねえ?
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG残業なくなったのは助かったけど、
職も失った
0480デフォルトの名無しさん
NGNG0481KM
NGNGhttp://bbs.infoseek.co.jp/Board02?user=qlbkncgtxapyiで教えてください・・・
また、このような質問はどこでするべきなのか教えてください、時間が無いもので。
0482self
NGNGお題目は Parrot です。
o メインサイト
http://www.parrotcode.org/
o メーリングリスト
http://www.nntp.perl.org/group/perl.perl6.internals
o Parrot のソース
http://cvs.perl.org/snapshots/parrot/
o Parrot の CVS ツリー
http://dev.perl.org/cvs/
o Parrot 入門
http://www.namikilab.tuat.ac.jp/~sasada/prog/parrot-intro.html
o 洗練されたPerl: Perl 6文法と正規表現
http://www-6.ibm.com/jp/developerworks/linux/041203/j_l-cpregex.html
0483self
NGNG要するにチラシの裏です。基本的には sage 進行で行きます。
まず現状ですが、2004/10/9 に 0.1.1 がリリースされています。
コード名は Poicephalus でムラクモインコの事です。
必要な機能は大分揃ってきているみたいです。
http://www.parrotcode.org/
> Objects, threads, garbage collection, a JIT compiler, namespaces,
> subroutines, a range of basic types (e.g., arrays, hashes, BigInt), NCI
> (for calling into native libraries) and multi-method dispatch for vtable
> methods are all available.
また、i386/ppc linux と Mac OS X ではちゃんと動くようです。
http://cvs.perl.org/viewcvs/cvs-public/parrot/PLATFORMS?rev=1.30
0484self
NGNGo Thread を使うには PMC を定義しなくては行けないの?
(PASM/IMC オンリーでスレッドサポートを書けないのか?)
o コンパイラを書くとしたら、Perl が良いのか、C が良いのか
(Perl のモジュールを呼び出せる様にする作法とか)
o Perl 5 と同居させるにはどうしたら良いか
(まだコンパイルしていないです)
o ブートストラップはやはり面倒くさい
(各 OS に入るまで時間掛かりそう)
o FreeBSD と Solaris での開発状況
(サポートプラットフォームには入ってる)
取り敢えず、使い方や内部構造を調べていきたいです。
0485self
NGNGo tarball がでかい
(実行ファイルがどのくらいの大きさになるかの方が大事だけど)
o ソースツリーがちょっと分かりにくい
(ast, classes, dynclasses, dynoplibs とかは root に無い方が
分かり易い気がする)
o Build システムが Perl 依存、それもかなり
(Perl でプリプロセスした C のソースとか見たくないし)
o 実行速度と必要メモリサイズはどのくらいか
0486デフォルトの名無しさん
05/01/19 22:38:230487デフォルトの名無しさん
05/01/24 14:58:08漏れらはケツの穴がガバガバだからな!
0488デフォルトの名無しさん
05/02/09 15:20:390489デフォルトの名無しさん
05/02/10 00:47:07Parrotは面白そうだけど、使えるようになるのはいつかなぁ
0490デフォルトの名無しさん
05/02/16 03:11:000491デフォルトの名無しさん
05/02/17 23:46:25出来なければお前の頭が糞ね。
0492デフォルトの名無しさん
05/02/18 01:38:20parrot-0.1.1をWinXP+VC.NETでインスコ。
README.win32 の指示に従ってicu-2.8-Win32_msvc7.zipを入手。
Configure.pl に対するオプションも指示通り。パスだけ自環境に合わせて変更。
何の問題もなくnmake完了。parrot.exe は 2,172KB。
ttp://www.namikilab.tuat.ac.jp/~sasada/prog/parrot-intro.html なんかでは
アセンブラとJakoが紹介されていたので、とりあえず、Jakoを弄る。
わかったことは、
・上記ページのJakoに関するコードは古くて駄目っぽい。
・現状のJakoではPerlArrayが使えないっぽい。
配列が使えないのはキビシイのでJakoは窓から投げ捨てた。
/* --- チラシの裏 ここまで --- */
0493デフォルトの名無しさん
05/02/18 02:00:36Jakoを窓から投げ捨てたので、Perl6を弄る。
parrot-0.1.1\languages\perl6 にて
>perl perl6 HelloWorld.p6 するも、だいぶ経ってから Hello, World! 。
perlコード → imcに変換 → pbmに変換 → parrot実行 という流れか?
毎回imcファイルもpbmファイルも消し去ってくれるので毎度時間がかかる。
-B オプション(stop after creating .pbc file)で解決。
と思いきやさっぱりpbcファイルが残らない。
しかたないので -I オプションで imcファイルを残し、残りはparrot.exeで。
>perl perl6 -I hoge.p6
>parrot -o hoge.pbc hoge.imc
>parrot hoge.pbc
HelloWorld.
面倒すぎるので、俺は何か間違ってるはずだ。
perl6を一寸だけ弄ってわかったこと。
・現状forループが使えないっぽい。10回のループを3回で抜ける。そもそもカウンタ変数が++されない。
・メタくそ遅い。ほぼ同内容のスクリプトでperl5.8の4倍かかる。-Oオプションがいる?
/* --- チラシの裏 2枚目 ここまで --- */
0494デフォルトの名無しさん
05/02/19 12:51:42>>493
> perlコード → imcに変換 → pbmに変換 → parrot実行 という流れか?
> 毎回imcファイルもpbmファイルも消し去ってくれるので毎度時間がかかる。
これ、勘違いだった模様。
そもそもpbcファイルは吐いておらず、imcファイルをparrotで実行っぽい。
/* --- チラシの裏 3枚目 ここまで --- */
0495デフォルトの名無しさん
05/02/27 14:46:210496デフォルトの名無しさん
05/03/13 13:48:08ちょっと狭すぎる。
0497デフォルトの名無しさん
05/03/14 00:56:24いざとなったらトイレに流せるから安全。
0498デフォルトの名無しさん
2005/04/06(水) 13:48:230499デフォルトの名無しさん
2005/04/30(土) 15:57:000500デフォルトの名無しさん
2005/04/30(土) 16:00:39本当ですか?
怖くて確かめられません。
0501デフォルトの名無しさん
2005/04/30(土) 16:25:030502デフォルトの名無しさん
2005/04/30(土) 16:34:270503デフォルトの名無しさん
2005/05/01(日) 09:19:030504デフォルトの名無しさん
2005/05/01(日) 17:20:48Squeakが近いかな
0505あげ
2005/06/29(水) 09:19:50ttp://staff.aist.go.jp/y-ichisugi/chummy/
ってどーよ?
0506デフォルトの名無しさん
2005/06/29(水) 20:41:140507デフォルトの名無しさん
2005/07/02(土) 13:57:370508デフォルトの名無しさん
2005/07/04(月) 20:29:460509デフォルトの名無しさん
2005/07/04(月) 22:03:090510デフォルトの名無しさん
2005/08/17(水) 22:34:58適当なスレが見つからないので、ここで。
ようは、COBOLやC++やEiffelのような、妙に面倒な型宣言と、
Perlもびっくりの安直な本文コーディングが混在した
奇妙な言語です。
Cでいえば、.c ファイルは Perl なみ。が、しかし、.h ファイルはCOBOLなみ、
みたいな風ですね。
0511デフォルトの名無しさん
2005/08/17(水) 22:53:42じゃあ、parrotでおながいします。
■ このスレッドは過去ログ倉庫に格納されています