1 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:49:02 ] プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 過去スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ 3 pc5.2ch.net/test/read.cgi/tech/1070089173/ 4 pc5.2ch.net/test/read.cgi/tech/1100097050/ 5 pc8.2ch.net/test/read.cgi/tech/1106129164/ 6 pc8.2ch.net/test/read.cgi/tech/1115335709/ 7 pc8.2ch.net/test/read.cgi/tech/1129287390/ 8 pc8.2ch.net/test/read.cgi/tech/1131273918/ 9 pc8.2ch.net/test/read.cgi/tech/1135082582/ 10 pc8.2ch.net/test/read.cgi/tech/1146844753/ 11 pc11.2ch.net/test/read.cgi/tech/1160879890/ 12 pc11.2ch.net/test/read.cgi/tech/1188688416/ 関連リンクは多分 >>2-10 あたり
657 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:00:23 ] >>643 >>655 >>かなり古くさいスタイルの仕様、実装になってしまっていることと、 >>概論で終わっているような本を参考文献に挙げることは、対応していると思う。 仕様と実装が古い、そして参考文献が対応してるって書いてあるから、 643はドラゴンブックを古いと思っていることは拙い文章だけど解る。
658 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:07:16 ] おちつけ。 >>637 はエロゲや携帯電話のゲーム用のスクリプトだぞ。 それにしては強力だし妥当な言語仕様だと思うぞ。
659 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 22:35:14 ] C言語にMASMの強力なマクロが使えればいいと思っていたが、 実際にやる奴が居たなんて…
660 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 23:08:03 ] 面白そうな言語だね。 マクロの全容とサンプルソースを見てみたいね。
661 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 02:32:06 ] 中田先生の本の第2版が出るらしいよ
662 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 02:48:16 ] save,loadがバグfix時の文章追加でずれるのか。 プロはそんなところまで考えないといけないのか。 大変だな。
663 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 05:55:04 ] なんだか面白い話になってるね。 メイドゲーの始祖の殻の中の小鳥のプロデューサーでありプログラマのKENJI氏か。 年下だけどオレがこの道に入った元凶の1人だ。音楽プログラムが凄い人だ。 こうなったらシステムを公開して欲しいって言ったら、罰が当たるよね。 過去に関わったタイトルも100以上で、オレが買ったのも10は下らない。 天才っているもんだね。 CG,WAV圧縮もオリジナル、それら全てにMAKE内蔵って事は 100本以上というタイトルを考と公開されているKMAKEと言うのを見てみれば分かるが高性能。 DOSもK-DOSとか言う物がゲームに入ってて、さらにUMBメモリツールのUMBCNFGの作者。 うーん、システムを公開して欲しい。 >>661 2版が出るんですか。1版を持っている自分は買わないですが、 立ち読みはしてみたいですね。 中田先生はいつまでたってもエネルギッシュですね。凄い!
664 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:19:34 ] >>652 確かに関数型言語の実装のしかたがわかる文献となると、まだ論文とかが頼りかなぁ。 Tiger Book の訳本が出るけど、あれにもないんだっけ? >>662 ベタデータでセーブするかねぇ? ハッシュをJSONみたいな形式でセーブするとかすればロバストになると思うが。 確かにコンティニュエーションとかコアダンプを丸ごと保存してプロセスを停止・再開 という手段も世の中にはあるが。 Lispのマクロは、プリミティブとしてリスト構造を切った貼ったできる(List processor だけに)。 ありがちな、文字列レベル+α程度の編集能力しかないマクロと一緒にしちゃいかん。 2版が出る、って、中田先生のどの本よ。 厚い最適化の本? > if 式 elseif 式 else end / while 式 end / do while 式 / for 式;式;式 end などが記述出来ます それら自身は<文>なんだよね。 詳細を埋めると、 <文> : if <式> <文> elseif <式> <文> else <文> end / while <式> <文> end / do <文> while <式> / for <式>;<式>;<式> <文> end ってことでいいのかな?
665 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:50:01 ] >>651 >>663 俺がやったエロゲも作ってたw メモリツールも使ってた。同一人物だったとはね。 >>664 あの分厚い最適化の本は2版が出てもいらんわ。 まだ最初の奴、読み終わってないからなw 中田が監修した本の2版なら絶対買わない。 >それら自身は<文>なんだよね。 >詳細を埋めると、 ブログを見る限りだと文の区切りは改行臭い。 ネストできない事はさすがに考えられないからそれで正しいと思う。
666 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:54:39 ] >>664 関数型言語実装本は何冊も出てるよ。訳本がないだけで。
667 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:57:23 ] どちらにしろ訳者が糞だとダメ本になるから英語版を買った方がお財布にも優しい。
668 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 12:32:45 ] MinCamlならコンパイラの作者は日本人だから、解説文書は日本語が中心だよ。 後、東大やJAISTの講義で使われているから、その講義資料や学生の個人HPを漁るもよし。 もしも英語が読めれるなら、ググるといくらでも論文は見つかるんだけどね。 まったくインターネット万歳、いい時代になったもんだと思う。
669 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:15:54 ] 公開は断られたね。残念。
670 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:17:41 ] 未記入様。 makeを内蔵したのは、 別exeにするとどうしても読み込みのオーバーヘッドが無視できなくなるからです。 マスターアップの時にはデーターが完成するのが当日とか当たり前にあります。 自分のシナリオコンパイルは1fileで1秒前後、自分のwavファイルで0.1秒前後です。 特にwavファイルは最後に入ってくることが多いので、wav圧縮は0.1秒前後のため、 外部makeを呼び出していると1万fileだと相当なオーバーヘッダがつきます。 ですので内蔵しております。oggだとこうはいきませんよね。 1万fileで外部makeだと少なくとも5時間は掛かります
671 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:00:35 ] 上で既出だけど 中田先生のコンパイラの構成と最適化第2版が20日に出版 www.asakura.co.jp/books/isbn/978-4-254-12177-3/
672 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:09:28 ] KMAKEってのが気になって見てみたけど、 依存型じゃなくって単体ファイルの比較なのね。 たしかにWAVの圧縮には依存型じゃない方が良いと思う。 MAKERだとWAVFILEを2ヵ所に記述しないといけないからね。 マクロはMAKERとほぼ同じだね。 この仕様でフルアセンブラなんて凄いね。 DISKへスワップ機能を入れたりUMBCNFGと言い、 MAKE時のFREEMEMORYをよっぽど空けたかったんだろうね。
673 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:22:23 ] >>671 1版を持って無いから買いたい。しかし高いな。 >>672 makeはさすがにスレチ。自重してね。
674 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:55:50 ] 素朴な疑問なんだが、makeって何のことを言ってるんだ? 普通makeといったらMakefileを動かす実行プログラムのことを言うと思うんだが。
675 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:16:58 ] >普通makeといったらMakefileを動かす実行プログラムのことを言うと思うんだが。 それでokだと思うよ。 kmakeはmakefileを動かすプログラムみたいだね。 それをスクリプトコンパイラやwav圧縮に統合してるみたいだ。 面白いアプローチだし、0.1秒の速度を万単位のファイルの圧縮に使って マスターアップの時間を稼いでるみたいだね。 しかし、エロゲーってwavファイルがマスターアップの直前に来るのか。 少しでもスピードを稼ぎたいのは分かるが、 もっと余裕を持ったスケジュールで作れない物なのかね。
676 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:01:09 ] >しかし、エロゲーってwavファイルがマスターアップの直前に来るのか。 ねーよ。 収録完了後2日〜1週間後が納期。Waveでもoggでも注文した形式で作ってくれるよ。 よっぽどアレなスケジュール組んでるんじゃね? スレの内容に即したことをいうなら、Advの演出みたいなやたらと巨大な量になるスクリプトなら、 マクロで計算式を埋め込むことなんかよりも、むしろ計算式をスクリプトから外に出してしまうことをオレなら考えるな。
677 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:28:13 ] KENJI氏の所は今年6本だからね。しかも延期は今のところ2本も無いみたい。 ブログ見ても書き方が簡素な演出方法と細かい演出方法を用意している、 よっぽどタイトなスケジュールなんだろう a)1行でロードと表示をする ;Bキャラを左にCキャラを右に表示 ld_cg1 h00bw00,h00cw00 ;BキャラとCキャラを左右に動かし、間にAキャラ出現 ld_cg1m h00bw00,h00aw00,h00cw00 ;BキャラとCキャラはその位置のままでAキャラを消す ld_cg1 h00bw00,cls0,h00cw00 b)ロードと表示をわける ;Bキャラを0番レイヤーにロードし、立ち位置を左(0-4のうち1)にし、表示優先順位を最低(0)にする。 ld_layer 0,h00bw00,1,0 ;Cキャラを1番レイヤーにロードし、立ち位置を左(0-4のうち3)にし、表示優先順位を1にする。 ld_layer 1,h00Cw00,3,1 ;ロードしたBキャラとCキャラをフェードインで表示する putcg 1
678 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:29:21 ] ;Bキャラをより左(0-4のうち0)に移動させる move h00b,0 ;Cキャラをより右(0-4のうち4)に移動させる move h00c,4 ;Aキャラを2番レイヤーにロードし、立ち位置を真ん中(0-4のうち2)にし、表示優先順位を2(一番手前)にする。 ld_layer 2,h00aw00,2,2 ;BキャラとCキャラを左右に動かし、間にAキャラ出現 putcg 1 ;Aキャラを2番レイヤーにロードし、立ち位置を真ん中(0-4のうち2)にし、表示優先順位を2(一番手前)にする。 ld_layer 2,cls0,2,2 ;BキャラとCキャラはその位置のままでAキャラを消す putcg 1
679 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:31:04 ] 誤)KENJI氏の所は今年6本だからね。しかも延期は今のところ2本も無いみたい。 正)KENJI氏の所は今年6本だからね。しかも延期は今のところ1本も無いみたい。
680 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:46:26 ] どうやらバグfixも出てないようだな。 破綻してるスケジュールじゃなくて スクリプトの簡素化とwav納期の短縮でこなしてる。 マクロを使いまくって、バグを出にくくする体制にしてるんだろう。
681 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:02:55 ] マクロ自体にバグが入ると酷い事になるけどな
682 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:40:02 ] 100本以上、エロゲを作ってるんだから大丈夫だろ。 久々にエロゲ板をみてみたら規制で大変なことになってるみたいだな。
683 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 03:20:56 ] しかし面白そうな言語だ。 全容をみてみたい。
684 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 05:51:46 ] >>672 FREEMEMORYじゃなくてコンベンショナルメモリでしょ。
685 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 06:14:31 ] 構造文すら全命令をマクロ化、MAKE内蔵、実践に即した実装だとLISP信者の俺は思う。
686 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 06:24:09 ] エロゲってバカにしてたけど、中々やるな。 シューティングのキャラの移動にも使える。 と思ったら、17才の時にセーラー服戦士フェリス(ヴァリスのパクリ?)で敵の 移動パターン制御に何かしらの言語を使っていた可能性も有るのか。 21年前か。いまだに現役か。 悪いけど言語仕様は古いと思うが21年前の17才が何かしらの言語を 作ったと考えると、今のマクロ主体のシステムは実測論による今までの集大成か。 素直に凄いと思う。 しかし自分がプログラマーだと思うとオブジェクト指向を入れて欲しい。
687 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 06:29:59 ] 全ての構造文は if not 式 goto,if 式 goto,goto の3命令で表せると実証してるしな。 構造文のサンプルだけでもみたいな。
688 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 07:41:43 ] ソースクレ厨と同じじゃないか うぜえんだよ LISPでもやってろ
689 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 09:47:10 ] しかし、作ってるのがエロゲ屋ってのが、そんなに感銘を受けるものなのかね? 見習うべきは吉里吉里(KAGはちょっと微妙)とか、バンナムの中の人が作ってるXtalとか、 ソースも手に入るんだし、いくらでもあると思うんだが。 採用実績だってXtalはともかく、吉里吉里は相当のものがあるし。 kikyou.info がつながらん...
690 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 10:32:53 ] >>689 > しかし、作ってるのがエロゲ屋ってのが、そんなに感銘を受けるものなのかね? たしかにそこに惹かれてるとしか思えないような糞言語だな。
691 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 10:37:47 ] 各レスの鼻息と具体性がここまで綺麗に反比例してると笑える。
692 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:48:00 ] 糞とかいってる奴はもっと良い言語をスクラッチで組めるのか? 俺には無理だ。
693 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 11:55:23 ] HPのフリーツールをみてると何でも水準以上の物を作っているところが凄い。 DOS時代からの生き残りか。
694 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:06:25 ] 電卓かなんか?
695 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:07:33 ] >>687 見事に全ての構造文を if not,if,goto で記述している _ KENJI ― 2009/11/08 11:53 まずはdo-whileではなく、正しくはdo-endと記述する事を訂正させてください。 それと吉里吉里などもっと凄い言語が公開されていますので、 ソースコードなどはそちらを参考にした方がよいと思います。 switch-caseはテーブルではなくif文の固まりです 文字列はゲーム用スクリプタなのでもちろん"(ダブルクオーテーション)では挟まずベタうちです。 ラベルやプリプロセス命令(#が付く命令)も行頭でなくとも記述できます (sample) while exit_flag==0 sel game_flag,ゲームをスタートさせる,ゲームを終了させる if game_flag==0 ゲームをスタートさせます game_start 1 else sel ans,ゲームを終了させる,キャンセル if ans exit_game 1 end end end 実際のマクロ記述については長いので省略。以下をみてね。 kenjikakera.asablo.jp/blog/2009/11/04/4676336#c
696 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:16:54 ] >>695 > 見事に全ての構造文を if not,if,goto で記述している ifとgotoにメモリがあればTuring完全なわけだし。
697 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:20:21 ] で、メッセージを英語化して、start game と exit game にする時はどうするの?
698 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:21:54 ] >>696 高度なマクロ機能があれば、whileとかforとかswitchとかを 全部ifに変換するようなマクロとか考えられるよね。
699 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:30:20 ] コンベンショナルメモリを広く使うため、UMBCNFGとか使ったな。 あの頃はコンベンショナルメモリが広くないと動かないゲームがあったんだよな。 音源ドライバもMSDRVとレコンポーザ互換で複数画面が使えるんで重宝した。 たしか音源ドライバは118音源の2OPモードが使える唯一のDOSドライバだったんだよな。 そして分裂守護神トゥインクルスターと殻の中の小鳥か。 分裂守護神トゥインクルスターはなぜACT2がでなかったか不明だった。 あの変身シーンをまた見たい物だよ。ニコ動にはないんだよな。 殻の中の小鳥はメイドブームの始祖だよな。 それに、よくネタにされるセーラー服戦士フェリスか。 ニコ動でみたけど、当時の98シューティングってこういう感じなのか。 こういったゲーム開発を支えたのがmacro志向言語でmake内蔵か。 LISPの思想を継承してると思ったが、見てみたらプリプロセッサ命令の山。 面白い物だ。
700 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:33:49 ] >>697 特攻しました。
701 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:33:56 ] ゲ製板にフォークしたいような勢いだな、と思ったんだが、 スクリプト で検索したら既にいくつかスレあるな。過疎ってるしw ゲーム用スクリプトの話題はそっちに分ける?
702 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:49:27 ] >>698 いやgoto用ラベル管理が必要になるだけで、 後はCのマクロレベルで問題なし。
703 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 12:55:27 ] >>702 Cマクロレベルだとネストの管理が出来ないだろう。 それに#defineマクロは記述性が悪い。
704 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:06:24 ] 殻の中の小鳥と分裂守護神トゥインクルスターは あの当時の98ユーザーなら知ってるとして、 セーラー服戦士フェリスはパッケージにRPGって書かれてたんだぜ。詐欺だよ。 しかもスピードが速すぎてマシンクロックを落とすか ファンクションキーでスピードを落とさないとゲームにならないんだよ。 フェリスの後継のコズミックサイコは音楽CDが付属していて 今でも高値で売られてるんだよ。
705 名前:700 mailto:sage [2009/11/08(日) 13:07:50 ] _ KENJI ― 2009/11/08 12:52 金曜日から質問攻めが凄いですね。 1人の方なのでしょうか? それともどこかで話題になっているのでしょうか。 どこかで話題になっているようでしたら教えていただけると幸いです。 質問の答えですが、半角英文が先頭に来るメッセージの場合 mes game start と記述するか、#defineでmesをm辺りに定義して m game start とでも記述してください。 半角英文が日本語の中に来るときはそのまま半角文字を記入してokです。 まあしかし、ゲーム中には全角英文字しか使わないので滅多に出番がありませんが。 start_game 1とexit_gane 1はstart_game(1)とexit_game(1)とも記述出来ます。 後はこの場合メインループの外側でstart_game(local)やexit_game(local)の様に外部に登録します。Cとは違い、前方参照も出来ます。
706 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:16:55 ] ここに本人が書いてるみたいなレスは、転載か何かか。
707 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:19:52 ] >>703 ラベルをスタックで管理。> ネスト
708 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:22:17 ] 98ユーザーも結構多いんだな。 こういった内部でしか使われない言語が表に出ると反応が様々で怖いな。 俺がスクラッチから作った言語がこのスレに晒されたらと思うと怖いな。
709 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:23:42 ] >>707 それじゃあ、if not goto,if goto,gotoだけじゃないじゃん。
710 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:24:23 ] 今から>>708 の言語を捜すスレになりました。
711 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:31:40 ] >>709 それはターゲット言語であって、処理系の話じゃないでしょ? その辺はちゃんと区別できないと。
712 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:34:13 ] IBM5100ユーザーも結構多いんだな
713 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:35:27 ] >>707 おいおい、C言語の力を使ったら何だって出来るだろ? マクロだけで実装してるから話題になっているわけで、趣旨が違うぞ。 >>708 フツーの人はそうだよ。言語処理系のソースコード公開するのも怖いし。 吉里吉里の人は特別だよ。
714 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:51:17 ] >吉里吉里の人は特別だよ。 吉里吉里スクリプト自体は、仕様としてはさほど大したものではない。 仕様を真似して似たようなオブジェクト指向スクリプト言語を構築してみたが、 コンパイラ+VMで2週間くらいでできたよ。 吉里吉里がすごいのはKAGというADVゲーム開発環境一式が公開されていることと、 それによる市販ソフトの実績が十分にあるところだな。
715 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 13:55:40 ] >>713 そのマクロ機能実現に、ラベルのスタック管理が必要だってことでしょ? popしてるじゃん。そのマクロのコード読めてないの?
716 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:01:39 ] >>714 VMの性能はおいといてもコンパイラをスクラッチで2週間で組めるのならあんた十分凄いよ。 吉里吉里というのは自分は知らんが、KAGというのは吉里吉里上のラッパかな? ここに出ているマクロ言語は自分には6人月の仕事だ。
717 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:09:14 ] >>715 いや、だから言語の仕様上だけで実装してるのがすごいんじゃん。 ああ、わかった。#defineマクロ機能を完全にとpop機能を実現するコンパイラを 作れば同じ事が出来るって言いたいんだな。 LISP信者には悪いが可読性の悪いLISPや#defineマクロよりmasm似にたマクロを 使えた方が可読性は増す。 あと、Cの#define中って、#ifdefとか#ifって使えたっけ? 使えるのならCの#defineの実装って結構やっかいそうだな。
718 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:12:10 ] あ、でもだめだ。#defineではlocalなラベルは作れん。
719 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:19:02 ] >>716 最近は48時間な時代だからなあ
720 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:21:54 ] 一つずつ名前をつけるのもめんどくさいほどの大量のフラグとパラメータの 複数スナップショット取れる風な恒久化っていうのはいいね。 俺言語を作ろうとすると文字列のサポートとかマンドクさくなるので こういう状態遷移管理専用言語もおもしろそうだ。 昔、bitか何かで「ある番地(A)からある番地(B)のデータを引いて0になったらある番地(C)へ飛ぶ(だったっけ?)」な 命令が1つあれば、他の命令はこれの組み合わせで実装できるとかあって1つしか命令無いんだから、 A, B, Cのアドレスを並べておくだけでいいとか。
721 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:24:09 ] だーらLispのマクロはマクロプロセッサ的なマクロとは別物だっての。 アセンブラのマクロといえば、NASMのマクロがラベルのプッシュ・ポップとかの 機能をもってたかな。
722 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:30:34 ] うろ覚えで鼻息の荒い奴はいったい何なんだ
723 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:31:05 ] だれもForthのことを思い出してくれない。
724 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:32:15 ] >>715 #calc __cmd_num __cmd_num+1 #define local1 "f_{__cmd_num}" こんな命令が有るようだとさすがに#defineとpush/pop程度の実装では無理だよ。 全ての条件文にユニークなラベルを発効する命令だと思う。 >>721 Lispは高性能なのは分かるが記述性が自分には難点。 Wizerd級になると一瞬で判別できるみたいだけどね。
725 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:34:09 ] >>724 それがラベル管理でしょ。 ワンパスコンパイラのコード読んだことないの?
726 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:37:40 ] 煽るだけの奴が一番頭悪そうだな
727 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:40:37 ] 久々に高純度の自己紹介レスを見た。
728 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:45:21 ] >723 LispはメジャーだけどForthはダメだなぁ。 こういったシナリオ系のスクリプト言語と相性良いと思うんだけどね。Forth。
729 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:46:16 ] 今はJVMで簡単に俺言語を試せて楽だね。 バイトコード吐いてもいいし、 まずはJavaコード生成でもいいし。
730 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:47:31 ] >>715 完全な#define命令とpush/popだけでは無理だよ。いい加減諦めな。 >>719 天才は日本の財産だ。体に気をつけろ。 >>720 >よって、プリプロセッサの大きさに比べてコンパイラの大きさは小さい。 >そして強力な文字置換により、文字セットもプリプロセッサ時、コンパイル時、実行時の3段階で解決される。 文字セットも3種類必用だそうだ。逆にめんどくさくないか? >>721 一時期LISPにはまったが、やみつきになる言語だよな。RPNもやみつきになったな。 >>722 ここも天才だけが来るスレじゃないし、仕方がないんじゃん。 間違えを認められれば先に進めるし、反論だけの奴はその程度の奴だし。 >>723 わりい、忘れてた。 >>724 そんなにいきり立つなよ。言ってることが正論でも相手が受け入れなくなる。 新言語で週末は面白かったけど、特攻は>>697 レベルの事でするのは相手に失礼。 まあ、なんだ。ここは天才が比較的多いんだから、 もっと柔軟に楽しく言語を作ろうぜ。 言語を作るってのはプログラミングにおいてOSを作るのに匹敵し、 神になれるんだからさ。
731 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:50:14 ] >>725 今更ラベル管理を言ってもまあむりだ。 最初の#defineとpush/popだけで実装はどこへ行った。
732 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:51:05 ] >>702 > いやgoto用ラベル管理が必要になるだけで、 > 後はCのマクロレベルで問題なし。
733 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:54:16 ] >>732 おっちゃん、言ってることがどんどん増えて行ってるよ。 あんたの負けだよ。
734 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:54:52 ] >>732 これじゃ言ってることわからん奴もいるわな。
735 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:55:25 ] 過去のレスを「増えていってる」とは言わんのでは。 相手の言ってることのうち都合の悪いところを忘れたもん勝ちの 口喧嘩でもしてるなら別だけど。
736 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:58:33 ] >>698 >>702 は処理系の話だろ? >>696 は実行系の話だろ? >>733 は区別付いてないじゃないの? 作ったことない人は混同しがちだけど。
737 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 14:59:43 ] >>735 一端ゆっくり考えて、#defineと何が必用だか1つのレスに分かり易くまとめてくれないか。 IDが出ないもんでぶつ切りの主張だと何言っても通用しないぞ。 while-endの仮想コードでも良いよ
738 名前:736 mailto:sage [2009/11/08(日) 15:00:23 ] >>736 > >>698 >>702 は処理系の話だろ? 処理系→翻訳系
739 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:01:23 ] >>737 IDが出ないなら、相手を同一人物だと思わないほうがいいんじゃないの。 735は俺だけど、少なくとも今日は初めて書き込んだぞ。
740 名前:737=733 mailto:sage [2009/11/08(日) 15:02:10 ] 区別は付いてるさ。 ただ、同じ奴が言ったとは分からなかった。
741 名前:737=733 mailto:sage [2009/11/08(日) 15:06:15 ] >>739 すまん。IDがでないと不便だな。
742 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:07:39 ] いや別に不便じゃないよ。 仮想敵と戦わなければいいだけ。
743 名前:737=733 mailto:sage [2009/11/08(日) 15:12:04 ] >>742 了解。 まあなんだ、言語仕様のことだから、レスは2つとかに分けず1つに書くか 名前を明記して欲しかったな。
744 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:17:30 ] じゃあ次はこのC言語がターゲットの片言Algolコンパイラについて話そうか。 catb.org/retro/cfoogol.shar.gz 500行弱だな。
745 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:17:50 ] まぁ、逆に「仮想別人」のケースもあるけどなw やたら興奮気味に、仮想敵だとか見えない敵云々言ってるのがいたら、そいつは 「ズバリ言い当てられけど隠れ蓑があるから上手く逃げてやるぜざまあ見ろ」 的な昂ぶり方をしている可能性もある。
746 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:20:49 ] Algolしらん。FORTHは昔、MZ系PCのOS、S-OSに実装されてなかったっけ。
747 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:27:02 ] >>744 nを初期化し忘れてやがるw > サンプルコード
748 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:29:58 ] みんな凄いんだね。 C/C++でブログのプリプロセッサ並の物を作るとしたら、どれくらい時間がかかる? ラベルはハッシュ管理かね、HPとコンパイルスピードを見る限りは。 大量のラベルが生成されるだどうね。 SAVEデーターとバグFIXで増える文字列はどうやって解決してるのだろう。 あと、未読既読機能。VMの力も使ってるんだと思うけど。
749 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:35:05 ] >>748 C言語で集中的に出来るんなら1週間でマクロの仕様を考えて、1ヶ月でプログラムかな。 C++ならもうちょっと短くできる。
750 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:36:54 ] C言語に落とすのか>foogol エラーがあるとreturnしちゃうのが新鮮かな? ttp://catb.org/retro/ logoはなんとなくSMC-70で使った覚えがあるがpilotってどんなのだっけ?
751 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:36:57 ] C/C++でやろうとするから大変なんじゃないの? PythonとかGCある言語なら二週間くらい。 ただああいうのは言語機能そのものよりも、 ドメインとマッチしているかどうか、 実務支援のリソースが豊富かどうかで 良し悪しが決まってくる。
752 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:41:16 ] >>750 rpilot.sourceforge.net/rpilot.txt
753 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:42:17 ] >>750 focalは「きだあきら版」じゃないか。
754 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:47:37 ] プリプロセッサのプログラム自体は1ヶ月ぐらい(C言語)だけど、 仕様を考える時間が結構かかりそうだな。 3段階の文字列解決とかコンパイラ本体とVMの全ての仕様を同時に考えないといけない。 作りながら仕様変更等もありそうだから、一概には言えないな。
755 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:55:13 ] シナリオを1秒でコンパイルとかwavを0.1秒でコンパイルとかスピードに命を掛けてるみたいだし、 やはりプリプロセッサ、コンパイラ、VMとの兼ね合いがあるから日数は簡単に出せないな。
756 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:06:56 ] 「wavをコンパイル」 こういう用法はやめてくれ
757 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 16:07:44 ] 正しくはwavを圧縮だな。