// / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
スクリプトエンジン作ってみたい。 お勧めのサイト教えて
やっぱいいや
@wiki 更新しときました。
パーサジェネレータは検索すれば山ほどひっかかるけど、 スキャナージェネレータは少ないね。 すぐに見つかるのはLex, Flex, JLex, JFlexくらいか。 UINTVAL = "[0-9]+"; のように書けばスキャナークラスを生成してくれる、 お手軽スキャナージェネレータは無いのかな?
18 :
デフォルトの名無しさん :2009/02/07(土) 15:58:49
各コードジェネレーターが生成したコードの処理速度を比較結果を掲載しているサイトってないの?
ここで聞いていいのかわからんけど、ActionScriptのDSL処理系ってない? ActionScriptっていちいちコンパイルせなあかんやん? 面倒なんよね オンザフライで処理してくれるDSLあると便利何やけど、emebedded向けなライブラリないかな? 検索してるんだけど、全然でてこないんだ
>19 むかしActionScriptで書かれたJavaScript実装で、fiberみたいなこともできるのがあったけど、 ググッたら出てこなかったorz...
>>16 マイ・オートマトンブームを起こすしかない。
23 :
19 :2009/02/08(日) 01:06:23
Xtalの作者ってバンダイナムコゲームスで活動してるんだな…
保守
27 :
16 :2009/03/25(水) 05:11:37
XtalのPEG採用って、言語仕様側じゃなくて、アプリ側だったのか。 言語仕様側だったらセミナーにはぜひ行ったところだったんだが。
Xtalスクリプトのコンパイラ自体はC++でがりがり書いてるからな。 PEGパーサを組み込みライブラリとして持つとのことようだが(詳しくはソースコード参照)
コンパイラつーか、パーサね。 パーサジェネレータ使わずにがりがり書いてるね。腕力のある人はうらやましいわ。
31 :
転載 :2009/04/05(日) 09:38:58
IGDA Japan chapter - ニュース
http://www.igda.jp/modules/news/article.php?storyid=1622 13:10 - 14:00
「ごく簡単な並列処理スクリプトシステムの設計と実装」
□講師
小久保啓三(HAL東京)
(株)スクウェアでの代表作「ロマンシング・サガ」「FF5」「クロノトリガー」「FF7」。クロノトリガーとFF7では、スクリプトシステムの設計と実装に携わる。
14:00 - 14:50
「『サクラ大戦Ⅴ』でのスクリプト運用事例」
□講師
秋葉晴樹(セガ)
株式会社セガ 第三CS研究開発部 リードプログラマ。
代表作は、サクラ大戦シリーズ、のび太の新魔界大冒険、ブレイザードライブ。
サクラ大戦シリーズは3から参加、主にADVパートのプログラムを担当。
15:20 - 16:10
「汎用スクリプト言語Xtal 設計と実装」
□講師
石橋立宣(バンダイナムコゲームス)
NBGI プログラマ。
PSP塊魂のエンディングミニゲームやシステム周り担当。
PSP太鼓のADV部分やシステム周り担当。
趣味で、C++組み込み用スクリプト「Xtal」を開発。
16:10 - 17:00
「Squirrelスクリプトを使った実装と活用」
□講師
神尾隆司(スクウェア・エニックス)
Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル の開発に関わる。
北出智(スクウェア・エニックス)
PS2 聖剣伝説4、Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル 等の開発に関わる。
32 :
デフォルトの名無しさん :2009/04/07(火) 12:55:27
誘導されてきました。よろしくお願いします。 自作ソフトで使うマクロの文法を、拡張しようと思い、 lexやらyaccやらbisonやら調べ始めたのですが・・・難しい・・・ 例えば呼び出し前に新たなトークンを追加したり、関数定義みたいなことが 出来るようにするサンプルを探しているのですが、見つかりません。 ・自作ソフトはプラグインで拡張可能になっていて、マクロのプラグイン名 を自前で解析していますが、区切り文字の検出とか括弧の扱いとか、自力 では限界なので・・・プラグイン名を追加トークンにして、ライブラリお 任せ一発という形に出来ればと思っています。 (プラグイン辞書の関数ポインタ呼び出しみたいな形) ・マクロの中で関数マクロの定義が出来るようにといいのですが、 function hoge(a, b, c) = { age; sage(a, b); uge(c); } hoge(1, 2, 3); こういうのを実現しているサンプルなどありましたら教えてください。
現状、どういう風に構文解析とかしていて、どういう風にマクロを実行したり プラグインを呼び出したりしてるわけ?
今の時点の文法はシンプルです。プラグイン名と引数、セミコロンのみ。 hoge[(...)]; [...] プラグイン名を配列に積み上げて、一括でマクロ構文を読み込み、 セミコロンで分割して、参照の配列に積み直し。 動かすときに、それぞれのインターフェースを順に呼び出す形です。 これだと代入操作ひとつ出来ないので、何か良い方法を探しています。
関数名だろうが変数名だろうが,言語組み込みじゃないトークンは トークン化の時点では何も考えず全部「識別子」一括りでおk
そもそも、「変数」といったものをどうやって実現したらいいのか、とか、 スクリプトを読み込んで、関数定義があったら何をして、関数の呼び出しが あったら何をするのか、とか、そういうことがそもそも全くわかってないのでは? なんか配列って言ってるけど、リストとか木とかをポインタで操るコードは 書ける? それができないと本格的な処理系は無理。
目先にとらわれて本質が見えてない感じがする 高レベルな言語を触ったりしてみてもいいんじゃない
yacc 電卓、で検索すれば簡単な電卓の例がいくつも出てくると思うが...
40 :
デフォルトの名無しさん :2009/04/07(火) 17:02:05
yacc/lexを自作するところから始めるのがお勧め。
LLVMの簡単な使い方ってどこ見ればいいのですかね?
おー、世の中にはこんな便利なものがあるのか。 たとえ苦労してでも勉強して使いこなしたいところだな。
>>38 コンドーさんの「yaccによるCコンパイラ」がおすすめ
・・・なんだけど、プレミアがついちゃって高いんだよなあ
>>46 日本語の文書!!
いや実は挫折してました。ごめんなさい。がんばります。
紙メディアで出てるGNUのBison解説とかどうかな?
> 内容は
>>46 の一番下と同じなのだけど、絶版で値段が高騰しているのが問題かな。
うわわわ。絶版してたのか。
読みやすいように、要点だけ説明しておこう。 まずは字句解析から。 まずはソースファイルを読み込み、字句解析にかける。 字句解析では文字列を切って、種類を表すタグを付ける。 (タグはenumなどの定数) 例えば、 int main(void) {return 0;} ならば、字句解析の結果は elem(INT, "int"); elem(ID, "main"); elem(PAREN_L, "("); elem(VOID, "void"); elem(PAREN_R, ")"); elem(BRACE_L, "{"); elem(RETURN, "return"); elem(INTLITERAL, "0"); elem(SEMICOLON, ";"); elem(BRACE_R, "}"); のようになる。 (elemはC++のクラスのつもり) 引数は左がenum定数で右は文字列ね。 一行を1つの構造体 (またはクラスやタプル) に入れると便利。 (Flexだと種類と文字列を別々に取得するんだったかな?)
字句解析の結果を構文解析にかける。 上の例だと、ベタに書くと以下のようになる。 Program : INT ID PAREN_L VOID PAREN_R BRACE_L RETURN INTLITERAL SEMICOLON BRACE_R ; 「=」の右側には、どういう種類の文字列がどういう順で並んでいるかを書く。 これだと本当に上の例しか読めなくなるので、 例えばVOID型で中身の無い関数も定義できるようにすると、以下のようになる。 (「|」は「または」という意味, 複数のパターンのどれでもいい場合に使う) Program : INT ID PAREN_L VOID PAREN_R BRACE_L RETURN INTLITERAL SEMICOLON BRACE_R | VOID ID PAREN_L VOID PAREN_R BRACE_L BRACE_R ; これで、以下のコードも読めるようになった。 void main(void) {}
しかし、こうやって全部のパターンを網羅していくときりが無いよね。 だから、部分的に抜きだして共通化する。 上の例だと、 Program : ReturnType ID PAREN_L VOID PAREN_R BRACE_L Body BRACE_R ; ReturnType : INT | VOID ; Body : // 空の場合は何も書かない | RETURN INTLITERAL SEMICOLON ; こんな具合に、共通でない部分を追い出してやるわけだ。 # void型なのにreturnしている関数や # int型なのにreturnしていない関数も読めるようになったことに注意。 構文解析では、一度に完璧な定義を書こうとせずに、 少しずつ解析できるパターンを増やしていくとやりやすいと思う。
>>30 LLVMもbisonパーサから手書きのパーサにかえたんだっけ。
案外、手書きの方が開発しやすいのかな?
構文の規模や性質や、頻繁に規則をいじるかどうか、などなどによる。
このレベルがわからないんじゃ 言語なんて作るの無理
AS3.0以降はRegExpあるから、自作してもすぐ出来るだろ
RegExpで字句解析するの?
RegExpで字句解析しないの?
な・・・RegExpで字句解析しただと!?
パース、構文木生成、式解釈、ニーモニック生成、コード出力をやるだけだ。 慣れたらゼロからでも数日で実装できる。
LLVMを勉強したいです 書籍ってありますか?
本家のドキュメントがよい。
本家にkaleidoscopeっていう処理系を作りながらllvmを憶えるチュートリアルがあるよ。
>>61 「文字列の先頭からアルファベットに引き続く、空白までの連続部分のマッチ」に
該当すれば、それを予約語として認識し、文字列からその部分を取り除いて
再度先頭から…を繰り返しているんだろう。
>>62 getChr()で一文字づつ文字を読み込んで、「空白の次にアルファベットだから
このトークンは予約語」というアタリの付けかたをしているんだろう。
ドラゴンブック二版の邦訳買ってきたよ。すごい紙薄い。
いい紙なのかな。TAOCPみたいな?
バラシテスキャンしないと
[これはひどい] 絵本とかでバーコードがシールになってて、買ったらはがせるのあるけど、 そうしてほしいところだな。技術書だから無理に決まってるけど。
なんか本当に剣と魔法の挿絵になってね?
楯が Syntax Directed Translation 剣が LALR Parser Generation 鎧が……読めにゃい 竜が Complexity of Compiler Design かな?
Data Flow Analysis か
コンパイラ第2版ってどこ改訂されたの?
全面的に
読みやすくなってる?
>>75 もう画像流れてるわ
第一版と同じで鎧は syntax directed translation じゃなかろうか
default を「省略時解釈」とか、そういうのが無くなってるといいんだが
> 第一版と同じで鎧は syntax directed translation じゃなかろうか
それは盾だって
>>75 に
> default を「省略時解釈」とか、そういうのが無くなってるといいんだが
往年の教科書では定番だったよねそういう訳
最近の本は「既定の…」になるの?w
ごめん、data flow analysis だな
85 :
デフォルトの名無しさん :2009/06/06(土) 01:03:33
検索でここまで辿り着きました。 宜しくお願いします。 現在、オブジェクト指向のクラスの実装などが、 コンパイラでどのように実現されているのかに興味を持ち、勉強中です。 コンパイラの本も何冊か買い、簡単に目を通しましたが、 殆どが手続き型言語のコンパイラの解説で終わっており、資料の少なさに困っています。 自分で探した範囲で、オブジェクト指向型言語のクラスの実装等に触れられている本は、 『コンパイラの構成と最適化』(朝倉出版)しか見つけることが出来ませんでした。 『コンパイラ―原理・技法・ツール』の第2版版が最近出版されたようなので、 書店で立ち読みをして見ましたが、オブジェクト指向言語に関しては、 余り記述がされていないようです(短時間立ち読みをした程度なので、見落としてるだけなのかもしれませんが…)。 上で記述した以外に、オブジェクト指向言語の具体的な実装について書かれたコンパイラ等の書籍などがご存知の方がいらっしゃいましたら、本の題名等をご教示頂けると幸いです。
なぜそんなにオブジェクト指向にこだわるのか理由がよく分からないな。 まあ、単純にオブジェクト指向を特徴としている言語の実装が知りたいなら、 ソースコードを入手して眺めるのが一番早いだろう。 RubyやPythonなんかでどうだ?
>>85 gcc読んでここでその成果全部書けよ
そしたら教えてやるから
『いまどきのプログラミング言語の作り方』に、ちょっとだけ載ってたかなあ
>>86 OOPにこだわる切欠は、自分で作ったCのプログラムを逆アセンブルして、アセンブリ言語の勉強をしていた時、JavaなどのOOP言語では、どのようにソースコードがバイトコードなどに置き換えられ、クラス等がどの様に実装されているのかに興味を惹かれたためです。
PythonやRudyに関しては、恥ずかしながら名前しか知りませんでした。
ソースコードもダウンロードしてみました。
再度の質問になり恐縮ですが、これはコンパイラのソースコードではないかと考えていますが、その様な理解で良いのでしょうか?
どちらにせよ、自分の勉強不足は明らかなので御指摘を元に、勉強してみます。
アドバイスをありがとう御座います。
>>87 まだ勉強を始めたばかりで、恥ずかしながらgccについては、知りませんでした。
gccについて、これから勉強してみたいと思います。
>>88 検索して見つけることが出来ました。
Amazonで買おうかとも思いましたが、プレミアが付いているようで、とても高いですね。
Webで本文が見られるみたいなので、それを見させていただきます。
ご教示ありがとうございます。
>>89 Amazonでも今は取り扱っていないようですね。
評判の良い本のようなので、購入を検討してみます。
ありがとうございました
>>90 RubyやPythonは、オブジェクト指向のスクリプト言語だ。
現代のスクリプト言語はいったんバイトコードにコンパイルされてから実行される形式が一般的で、
従ってコンパイラと呼びうるすべての要素がソースコード内に含まれている。
そしてそこから先(バイトコードをどのように動かすかの仮想マシンの実装)もあるわけだ。
いい教材になるわけで。
92 :
90 :2009/06/06(土) 10:21:50
>>91 そうなんですか。
その事については、知りませんでした。
コンパイラの動作をソースコードを読むことで確認出来るというのは、
私のように学習を目的としている者にはありがたい話です。
Rudyは書籍やWebでの資料が充実しているようなので、これから調べてみます。
ご教示、ありがとう御座いました。
>>90 参考までに、Javaのバイトコード仕様はSunのサイトで閲覧できる (英語)。
SunのJDKに付属しているjavapとかで逆アセンブルできるよ。
他にEclipse用のプラグイン「Bytecode Outline plugin for Eclipse」とかでも。
Eclipse用だと「Classfile Inspector」(有料 99Euro)ってのもあったけど、いまググったら
サイトが消滅したようだ。
あんまり道を示しすぎてもパンクすると思うんだが。 85とは関係なしに紹介したいサイトがあるなら、俺が消化するから構わず続けてくれ。
普段はレキサ・パーサレベルの話しか出ないのに、堰を切ったようにいろいろ出てくるな 実はみんな、教えることに飢えてたのか?
lexerかparserより先に進んだ質問者がなかなかいないからじゃないかな
じゃあ俺がお前らの意見を聞いて 万人が理解できるlexerとparserの サンプル書いてやる ということでまず何をすればいいぉ?
文法決めれ
四則演算はネット上にゴロゴロしてるからイラネ
forループとif-else-endifの構文サンプル
106 :
90 :2009/06/09(火) 22:05:49
>>93 教えて頂いて、ありがとう御座います。
絶版の資料が無料で公開されているのは、ありがたいですね。
>>94 Javaのバイトコードにも、興味があります。
Java仮想マシン仕様は、日本語の書籍でも出版されているので、今度読むつもりでした。
仮想マシンの概念は、コンピュータのアーキテクチャとも密接に関わってくる事項なので、興味深いですね。
>>96 正直、英語はまともには読めません。
日本語の資料で勉強するのに限界を感じているので、
英語の勉強をやり直そうと思ってます。
>>98 今まで知らなかった資料が多いので、参考になります。
英語の資料が多いですね。
コンパイラの勉強の前に、英語をやり直して、
資料をまともに読めるようになってから、勉強をし直すべきかもしれません。
コンパイラの勉強は、思っていたよりもしんどそうですが、
今まで知らなかった資料を紹介していただいたので、今後の勉強の指針が見えた気がします。
教えていただいた資料を参考に、頑張ってみます。
>>105 それだッッッ
ブロックの扱いがどうやればいいのか
悩みまくっている俺にはおいしいです ^q^
^
>>101 lexer parser 何てどうとでもなるから
cps とか ssa あたりの内部表現の評価手法を,
最適化方法に合わせた一覧として提示してくれ
>>108 どうとでもならない人のための相談室スレだと思うんだ。
だから、出来る人は我慢して、ここはレベルを下げて欲しいんだ。
平行すりゃいいじゃん 誰か一人のためのスレってわけでもないんだし。
>>108 オレは専門家じゃないのでCPSもSSAもどちらの用語も知らなかったが、
これってLLVMで全部実装されてるんじゃね?
やはりLLVMの包括的な解説記事が欲しいところだな。
>>111 LLVMは既に提出されているものをうまくつなぎ合わせてるだけ
つなぎ合わせ方法はいくらでもある
各要素項目を網羅的に解説したものがほしい
つか、現場にいるとそっち系をゆっくり、みてる暇がない
>>113 実務者としては、実装されてない方法より
既に実装されているものの解説のほうが遥かに役に立つ。
>各要素項目を網羅的に解説したものがほしい
この分野に詳しくないので外野の意見だが、それなら洋書を漁って読めばいいんじゃね?
>>108 Tiger Bookや"Practical Improvements to the Construction
and Destruction of Static Single Assignment Form."は読んだの?
>>114 > 実務者としては、実装されてない方法より
> 既に実装されているものの解説のほうが遥かに役に立つ。
ぶっちゃけここで質問している人が、
現実に使われているコンパイラのソースを参考にして、
自分のコードに反映させるのは難しいと思う。
そのくらいコンパイラは複雑化している。
さらに学習用のコンパイラは関数型言語で書かれているものが多く、
実務指向の人とは相容れないものがあるだろう。
謙虚な気持ちで学習するのが一番。
>>114 > 実務者としては、実装されてない方法より
> 既に実装されているものの解説のほうが遥かに役に立つ。
要素手法が見えにくいんだよね。まとまってしまうと。
ましてや、cps とか ssa 使った状態での複合リダクションとなると。
> この分野に詳しくないので外野の意見だが、それなら洋書を漁って読めばいいんじゃね?
そりゃたくさん持ってるさ
ただ、現場をかかえてるとそっちばっかやってるわけに行かなくなるんだよな
>>116 > さらに学習用のコンパイラは関数型言語で書かれているものが多く、
> 実務指向の人とは相容れないものがあるだろう。
それは気にならないんだけど、細切れの論文掻き集めて整理やり直す時間はとれねぇよ
実務指向でコンパイラを今時つくりたい、なんて人はいないと思う スクリプトでDSLをさっくり組むならともかく
>>90 http://www.amazon.co.jp/コンパイラとバーチャルマシン-Text-今城-哲二/dp/4274133087 ↑この本に、オブジェクト指向も例外処理も分かりやすく載ってるよ。
薄くてすぐに読めるし、お薦め。
ただ、日本語で概要が載っているだけなので、
実装するには自分で知恵を絞らないとだけど。
現代的なコンパイラは、内部で何度も変換を繰り返して、
最終的に実行可能なコードをはく。
オブジェクト指向の場合は、最初の方で非オブジェクト指向の
Cみたいなコード (AST) に変換してしまうと、
後はよく書籍に載っているような方法が使えていいと思う。
コンパイラを全部 (シンタックスシュガーの除去から
アセンブラの出力まで) 自作するのは、大規模過ぎて現実的じゃない。
だから、自分が関心を持っている部分以外は
なるべく既存のものを利用するといいと思う。
例えばCのコードを書きだすコンパイラを書けば、
アセンブラごとにジェネレータを自分で書かなくても
多くの環境で動くし、最適化もCコンパイラに頼める。
例外処理などはCでは実装しにくいので、
必要ならLLVM IRを出力するという方法もあるよ。
121 :
119 :2009/06/13(土) 19:32:59
以前、Javaバイトコードに変換するコンパイラも書いたことがあるけど、 Javaだと「.class」ファイルはクラス単位でオブジェクト指向になっていて、 オブジェクト指向「からの」変換はJVMが担当している。 だから、バイトコードの仕様を読んでも、あまり参考にはならないと思う。 同じ理由で、JVMをターゲットにした (「.class」ファイルを生成する) コンパイラも皆、参考にならないと思う。
リンゴの本見ればコンパイラなんて3日で書けるだろ
>>121 最近はclassファイルを扱うためのライブラリがたくさんあるよ。
>>121 が言ってるのは、Java のオブジェクト指向的な面
(動的バインディングとか)が実現されてるのは、Java VM自体
なので(invokevirtual命令とか)、オブジェクト指向言語を
ふつうのCPU上で実現するコンパイラの参考にはならん、と
いうこと。
ドラゴンブック超える神本の出版が確定! プログラミング言語を作る プログラミング言語を作るなんて究極の楽しみだ!
>>125 著者の「プログラミング言語を作る」のサイトはぐだぐだ進行な上に
今ブログをチェックしてみたら最新エントリがエロゲの話で
しかもトンデモ理論だったので失笑せざるを得なかった
立ち読みはしてみるつもりだけど、はずれじゃないかなぁ
前橋さんが言語本出すのか。 まあ、変なものにはならないでしょ。
>>128 あの人の作る言語は神レベルの美しさだぞ
お前こそ何言ってるんだw?
>>129 どの人??
>>125 >>129 は信者だろうな。
ポインタ本とか、Java謎本とか、結構悪くなかったと思うけど、今回もそういう
他に類例のないところを押さえる趣向かねぇ。
ドラゴンブックに代わる、なんてことはないないw
>ドラゴンブックに代わる、なんてことはないないw 学術書と実用系趣味本を一緒にすること自体おかしいよね
ドラゴンブック買ったけど、全然役に立たなかった。オナニー書籍 りんご本のほうがよほど役に立ったわ というくらい
>>133 具体的に書かれてないと、単に難しいことが理解できなかった可哀想な趣味グラマにしか見えないな
ドラゴンブック喧嘩せず
ドラゴンブックは、 字句解析、構文解析はツールを使うから詳しくなる気はないし、 構文解析向けの言語理論にも興味ないって人にはまったく不向き。 構文解析ツール作ってみたいなって人、 計算機科学科の学生には今でもいい本の一つ。
そこから先のバックエンドについても、高度な話の基本になるところを 押さえてあるからね。
>>136 「内容に興味のない人には不向き」っていうことですねわかります
特定書籍の信者って面白いね。 反撃が全部「ぼくは君をこういうキャラに設定したぞ。どうだ悔しいだろう」だし。
>>140 具体的に書かれてないと、単に難しいことが理解できなかった可哀想な趣味グラマにしか見えないな
>>140 構文が曖昧です。君からキャラへの変換は明示的なキャストが必要です。
coinsは最凶最悪
>>139 いやだから、内容に興味があるのは”前提”として、
その人たちにとって良い本かを議論しないと意味ないじゃんという話
まぁ全体的にいい本っていう論調だし俺も同意するが
まずドラゴンブック読めない奴はゴミ これ世界の常識あるね
このスレで勧められ板から、ドラゴンブックせっかく奮発して買ったのに、 いきなりしょっぱなからはじめから変な数式ばっかでいやになった…。 論文とかたまに見るけど、どうして人にわかるように書かないんだろうか? 大学行ってたら、小学生でもわかるように、って習わなかったんだろうか?
小学生でもわかるように書くと厚さと著作にかかる時間とが値段が10倍になりますがよろしいか。
>>147 え?あの程度の数式読めないの?
何それこわい
10倍じゃ全然きかないか
>>147 ただ単に読むのが早すぎただけでしょ。積読して、適正になったらまた読む
小学生でもわかるように、ってのは 無 理 。 大学の教科書で、小学生でもわかるように書いてあるものなど皆無です。 高校生で奮発して読もうと思っているなら、学校の先生にでも相談しなさい。 多分集合の記号とか論理式とかでつまづいてるんじゃないかと思うんだけど。
先に簡単なの何冊か読めばいいのに
ドラゴンブックが一番簡単 これも読めないゆとりは来るな
ドラゴンブック読まなくてもコンパイラ作れるけどね
読まないと読めないは違う
数年前、文系の見方で書いたとかいうコンパイラの本ってあったよね 日本のコンパイラの第一人者が監修になってたから、わりと買った人多い? たとえ話がぜんぜん例えになってなくて大混乱 巻末のJavaで書いたコンパイラのプログラムはほとんどCからの丸写しみたいなつくりだった。
上のほうですでに出てたかw
むしろ、ドラゴンブックは、それさえ読めれば、相当なコンパイラが書ける本だろ。 確かLSI-Cの作者がそう言ってたと中村正三郎か誰かが書いていた記憶がある。
コンパイラを書けるくらいの人なら読める
>>160 「ドラゴンブックを読めば誰でもLSI-Cぐらいのコンパイラは書ける」だなw
LSI-Cのひとはyacc互換のコンパイラコンパイラも作っていましたよね。 「ドラゴンブック読めば誰でもコンパイラコンパイラは書ける」なの?
スクリプトエンジンプログラミング 買ってきた。半分くらい読んだとこ。 なんか書いてみたいなレベルの自分にとっては、ぴったりのイメージ なんだが、この本あんまり話題に上らないね・・・ C++出来ない自分にゃ読み替えるのが大変w javaVM向けの中間言語を吐くやつのサンプルとかがあると、最高 だったんだけど。
>>162 LSI-Cは1980年代始めから中頃までが全盛期だと思うが、
当時最高の最適化を行なう最強コンパイラですよ。
作者はデータフロー解析、レジスタカラーリングは、
原論文をバリバリ読んでいた人だと思う。
かなりの腕前の人。
>>167 著者の最初に名前上がってる人、コボラーだね。
まじかよw 興味あったけど買うのよしたw
作者じゃないが。最近発売された「プログラミング言語を作る 」がインタープリタ もバイトコードコンパイラのソースも載ってるぞ。買って読んでないから内容は 知らんが。
MiniCamlで良いじゃん。
スレ住人に聞くけどJIT関係の最適化に関するプロファイリングネタはここでいいのかな?
さっきJavaで書かれた独自形式の中間言語を出力する コンパイラが欲しいと書いてる人がいたが、 よくよく考えてみると、.NETやJavaなどのそれ自体が 中間言語でかかれててJITコンパイラまで付いてる環境では、 下手に独自で作るよりもその環境の中間言語を出力してしまう、 要するにコンパイラそのものを作ってしまったほうが簡単なんだよな。 中間言語の書式や(基本的に)仮想マシンの仕様を考えなくて済む。 だからJavaにおけるGroovy、.NETにおけるIronPythonなど、 中身はインタプリタというよりもコンパイラそのものだ。
そこでLLVMやCOINSが出てくるわけだ。
プログラミング言語を作るは神本 ドラゴンブック不要といわれる理由がよくわかる 読んでみろ
はい。
はいじゃないが。
>>170 ,175
信者か作者かしらんがいい加減うざい
そう思わせるのが目的のアンチかもよ
プログラミング言語を作る 買って読んでみたぞ 普通の本だろこれ 金返せよ
え?俺の本からは神様が出てきたぞ?正に神本だと思ったw
無理に面白いこと言おうとしなくてもいいよ
ドラゴンブック持ってないのに コンパイラの本書いてるやついるけど あいつは何なの?
分かりません。
>>169 いや、コボラーはコボラーでもIBMの奴隷って意味のコボラーじゃないからw
188 :
デフォルトの名無しさん :2009/06/27(土) 23:40:48
>>160 確か、LSI-Cの作者がそれしか読んでないとかいってただけだと思う。
万人に当てはまるわけではない と
大昔の話じゃいろいろ説明をつけないと通じないんだなあ…… というかその大昔の時点で意味わかってなかったのか? LSI-Cの最適化は凄いとよく言われたが 詰めが甘くて実際には骨折り損だという話もあったよ コンパイル時間はMS-Cの倍だったしね
>>189 8080版の最適化の話だろすごかったの
LSI-C(笑)
4004(笑)
知ってる人だけ。。。 MSX-Cは変数が自動でレジスタに割り当てられるんだけど、 そうなるとポインタを介したアクセスと一貫性がなくなる。
MSX-C = LSI-C
>>194 変数のポインタを取り出せばメモリ上に確保しなおしてたよ
それともループ内に持ち込んだ変数を割り込み処理で外部から変更した時に関与が出ないって意味で言ってる?
#include <stdio.h> #pragma nonrec main() { int n; int *p; p = &n; n = 10; *p = 100; printf("n = %d\n", n); } MSX-C のマニュアルに載ってたサンプル。 これで「n = 10」と表示されるそうな。
なんじゃこりゃ。 これが仕様なの?
往年の8ビットマイコン用Cコンパイラの#pragmaか コード書く人もコンパイラの振る舞いにあわせて組んでたんだね
逆だろ。 pragmaはコンパイルの動作を指定するためにある。
MSX-CでC言語を勉強したんだけど、これによくはまった。 レジスタに割り当てないこともできるけど。 #pragma nonrecはローカル変数をstaticがついているかのようにする。 non-recursiveの略。CPUの制限でスタック上の変数にアクセスするのが 遅いからです。コードの再利用のことを考えてのことだと思う。 あとMSX-Cはlongと浮動小数点数がないんです。 #ifもない。if文で代用とマニュアルにありました。実行されないコードは 生成されない。 なにかの役に立つかな?
#pragma有効で組むか さもなくば死か この時代にCを開発用途に使えたという時点である意味幸運だったとも言える
8080でのスタックフレームってめんどくさいよな
高級言語を意識して設計されてないから仕方ない Z80だとIX/IYで強引にやるのか?汎用/裏レジスタで最適化とかしてたら凄いが
IX/IYは人間向きのレジスタで、 便利ではあるけど遅いからコンパイラは使わない。 (HD64180あたりになると結構速かったが) LSI-C(MSX-C)はもちろん裏レジスタ使いまくり。
むかし見たLSI-C80の広告ではIXかIYをフレームポインタに使っていた コードが掲載されていた。 MSX-Cは裏レジスタ,IX,IYを使うコードは生成しなかったと思う。 付属のライブラリでは使っているかもしれませんが。 スタック上のローカル変数アクセスの方法はどうだったか記憶にありません。 MSX-Cのアセンブリ言語出力をZ80に最適化するプログラムを書いた人もいるようです。 僕も出力を見ていたときすこし考えたことありました。 アセンブリ言語レベルで8080から8086に変換するプログラムの存在を古い本で読んだのも思い出しました。
コンパイラが将来性のない 回顧主義者おっさんのたまり場であることがよくわかる だから日本は研究でも実業でもこの分野でチョン以下になる。
>>207 そんな愚にも付かないことを言ってるヒマがあったら、
LLVM向けに何かメジャーな言語を移植するのだ。
LLVMは糞だろ
>>210 Milepost GCCがあるから不要
自分でコードをチューニングするという古臭い時代は終わったの
自動的に学習して最適なコードを出力してくれるからLLVM自体不要なの
幼稚園児かw
>>211 というか、同じようなアイデアのllvm-gccのほうが有名なわけだが?
>>211 完全自動化だし、今年後半のコンパイラ関係の
賞総なめにするって言われてるけどねぇ
EUレベルの国家プロジェクトと田舎大学の糞プロジェクト
比較されてもねぇ
幼稚園児だな
ヒント:実績
Milepost GCCのICIな人たちが次はLLVMでやってみるって言ってんですがねえ…
基地外は相手にするなよ
>>219 君がろくに論文も読んでないのが良く分かりました。
このスレふつうのコンパイラをつくろうを 宣伝したやつフルボッコにするからな
著者の関係者なのか?
8080でLLVM実装まだ?
ゼッパチでよければ
x86用のコードを吐くCコンパイラの、64bit整数(long long)まわりを読んでいます。 addl $1,%eax adcl $0,%eax みたいな簡単なものは理解できたのですが、シフト演算や乗算・除算になると 追い方が悪いのか理解力が弱いのかさえ分からなくなってきました。 この手のことを解説したサイトって無いのでしょうか。
>>228 たぶん自分で調べたほうが早い。
最適化をかけないデバッグビルドで、
演算させるたびに何か関数(printf)でも呼び出す形にするといいよ。
デバッガ知らないの?gdb?
前提知識であるx86のアセンブリの知識はあるの?
$(GCC)/gcc/longlong.h まじお勧め
234 :
デフォルトの名無しさん :2009/07/08(水) 09:10:38
>>230 gcc使う人はたいていデバッガ使わないでしょ。
デバッガに頼り切ってるのはVS厨が多い。
> gcc使う人はたいていデバッガ使わないでしょ。 そういう人って デバッグがデバッガに頼り切りではないという面もあるにしろ デバッガを使いこなせてないという面もあるんじゃないかな。
>>234 それは偏見。
組み込みLinux開発ではgdbくらい使いこなせないとお話になりません。
>>236 それは偏見。
組み込みLinux開発ではgdb使ってるようではお話になりません。
gdbは使いこなせるけど使ってないケースもあるわけで
printfの方が高機能なわけで
Caper良さそうなのですが字句解析(Lexar)には 何を使うのがいいでしょうか? おすすめを教えてください。
Caper良さそうなのですが字句解析(Lexar)には 何を使うのがいいでしょうか? おすすめを教えてください。
手書きでOK
243 :
デフォルトの名無しさん :2009/07/08(水) 19:48:27
手書きでいいと思う 文字列→数値のパースみたいなランタイムの処理に流用しやすいし
本気で速度気にするならflex出力を手修正とかがいいんじゃないか
245 :
デフォルトの名無しさん :2009/07/09(木) 01:22:53
アセンブリから機械語にどうやって変換しているんですか?
まずOPコードを暗記するんだ 相対アドレスも数をこなせば暗算できるようになる
>>245 アセンブラを使う。
gccに-vオプションつけてみな。
248 :
デフォルトの名無しさん :2009/07/09(木) 09:50:38
>>241 Caperはgcc+Perlで開発されているので字句解析にはPerlを使うと馴染みやすい。
Linuxには必要なものがすべて揃っている。
249 :
デフォルトの名無しさん :2009/07/09(木) 10:10:50
>>247 あなたの作っているコンパイラに対してアセンブラは自前ですか?
母国語でおk
アセンブラどころかリンカもローダも自作したが 最初は使えるものを使って、徐々に置き換えていけばいいんじゃない
Richard Bornatのコンパイラの本でお勧めですか?
日本語でおk
やさしいコンパイラ(デコイ本)はやめたほうがいい ふつうの方は神本確定の出来だった
やさしいコンパイラ貶して ふつうの方宣伝してる人は まったく具体的な指摘がないんだよな
と、ここぞとばかりに架空の傾向を持ち出すわけですね。
257 :
デフォルトの名無しさん :2009/07/25(土) 09:32:51
ふつうのコンパイラ良書なんでしょうか 学生なのでちょっと資金余裕がなくて
研究室で買ってもらえばいい。あるいは図書館。
259 :
デフォルトの名無しさん :2009/07/26(日) 02:01:07
mingw-jpの使い方まったくわからないので どなたか教えてもらいたいのですが
>>260 なんかスタイルシートが効いてなくて生々しいレイアウトになってない?
>>261 うちの環境だとこうなってる
IE6 ちゃんと出る
FireFox スタイルシートが効かない
Google Chrome スタイルシートが効かない上に画像も表示されない
264 :
263 :2009/07/27(月) 11:30:13
今見たら直ってました。
265 :
261 :2009/07/27(月) 12:19:46
うーん。うちのFirefoxだと変わらずだな。 エラーコンソールになんか出てるけど、それが原因を示してるのかわからん...
>>265 リロードしたらOKになったよ、うちのFX
うちもFirefoxだと一度目はスタイルシート読み込まれないな まぁスレには関係ない話題だが
.NET周りで使えるもの、という条件だが。 ・Lexical analyzer and parser generator 単純だがよくできている。構文木を食わせてソースコードを吐かせるBison式。 最初これで作りかけていたが、パーサーを構築できてもそのパーサーが予定の挙動をしない場合、デバッグの方法が困難。 (テーブルに分解されてしまうため、ソースが追いかけられない) パーサーの動作は高速と思われる。 ・Irony パース、構文木構築までをやってくれるコンパイラを動的に構築してくれる。 簡単なGUIのパーサーチェッカーが付いていて、開発がかなり楽 (すごい楽かはもっと楽なものがあるのかどうか知らないので……) 動的に構築する分lapgより遅いかもしれないが、とりあえず自分の目的にはこれで十分なので。 ただ、コンパイル済みコードを吐かすために自分用の構文木を もう一度作り直す羽目になるのは激しくビミョー……。 (別にそのまま構文木を消化していったっていいわけだが。 まあ少なくともテキスト形式で出力するにはあの構文木のオブジェクト構造は向いてないな)
修正と補足。 「構文木を食わせて~」は、「BNF定義を食わせて~」が正しい。 lapgもIronyもどちらもEBNFではなくBNF式。(Wikipediaで調べた限りでは) ただしどちらもパースに正規表現が使える。 lapgは非Ascii文字の正規表現パースがどうも挙動が怪しい……。 Ironyはホワイトスペースの除去以外にも非構文要素を取り除けるチャンスがあるので小回りが効くようだ。 (といったところも気に入っている)
JetBrains Meta Programming System これが最強他は全て旧世代の糞技術
.NET向けの旧来のスタイルのものとしてはGPPG/GPLEXが定番 GPPGはIronRubyにも使われてる
ドラゴンブック買ってきたぞ!さあ読むぞ!
>>273 なるほど……。
現在はMPPG/MPLEXと名前が変わってるようだけどね。
どうせいずれVisual Studioの胸を借りる(SDKを使ってオレ様IDEを作る)予定なので、
はじめからこちらで構文解析を実装しておいた方が
構文の強調、InteliSenceなどで使い回しが利くかもしれない。
結構進んでてあとはエラー周りくらいだったんだが、破棄してしまうかなぁ……。
>>276 HPみてみたら、GPPG is closely related to the “Managed Package Parser Generator” application
って書いてるね。
今仕様を決めているスクリプトは文法がPythonに似ているので
IronPythonがどうなってるか調べてみたら、こっちはパーサーを自前で書いてる……?
(ソースコード中に直接コメントでBNFが書いてある)
ともあれ、BNF定義の中に直接コード片が埋め込めるGPPG/MPPGの仕様は興味深いね。 ただそれだけに、PDFドキュメントだけじゃなくて実際に動くサンプルプロジェクトが欲しいところだなぁ。 どっかにお手ごろなのが落ちてないかな。
>>278 > ともあれ、BNF定義の中に直接コード片が埋め込めるGPPG/MPPGの仕様は興味深いね。
>>276 のサイトも見ないで聞くがyaccなんかのアクションとは違うもの?
同じです 言語定義が処理系を実装する言語に依存しないというのは,むしろ流行りの売り文句です
>>281 > 同じです
じゃあ
>>278 は何が興味深いんだろうか?
> 言語定義が処理系を実装する言語に依存しないというのは,むしろ流行りの売り文句です
JavaでいうとSableCC的なやつかな
JavaCC+JJTree、ANTLRでもできるが
> GPGP is a generator for LALR(1) parsers. It accepts a > “YACC/BISON-like” input specification and produces a C# output > file. The parsers that it produces are thread-safe, with all parser > state held within the parser instance. プログラミング言語非依存でもないよ。
>>280 ,281
278だが、その点で言えば、269で挙げたLexical analyzer and parser generatorはC++/Java/C#形式で吐き出せるよ。
だがこちらとしては、実装言語の非依存性などどうでもよい。
パーサーを実装しやすい仕様になっていればそれでいいわけ。
実装しやすさという観点で言えば、BNF式ごとにコードが埋め込めるGPPGは小回りが利きそうだし、
コンパイラやエラー処理があらかじめ一通り実装された状態で使えるIronyよさげ、というわけで。
>>284 話の流れが見えてなくてすまないが、要は昔ながらのコンパイラ・コンパイラが
欲しくてGPPGがそうだってだけ?
仕様が興味深いというから何か目新しいネタがあるのかと期待しちゃったんだが
ANTLRみたいなのって,C#にも対応してるよと謳ってるのが多いけど ランタイムの実装が糞すぎて使い物にならないのが多いんだよね
>>286 学者風情が作った糞ライブラリに
期待するなよw自作しろ
>>285 他のやつらとこのスレの趣旨的にはどうか分からないが、
オレとしては自分で仕様を決めたスクリプトを他の形式にコンパイルするのに
必要十分な環境をそろえられればいい。
GPPG(MPPG)はスレの流れからするとyaccに仕様が近いようだが、(いわゆる昔ながらのコンパイラ・コンパイラ)
別にそれにこだわりはない。
むしろIronyによる作りやすさを評価してるくらいだ。
ともあれ、構文木を作った後が大変なんだがな……。
確かに、はじめてyaccを知ったときは大変興味深かった。 >289はGPPG?で今その感動を味わっているわけだ。
>>289 あんなバグフィックスも含めて、
ちゃんとメインテナンスされてるどうかわからんツールよく使えるな。
近況はブログにでも書いてて欲しい。
>>291 リリース版しか見てないだろ。
Subversionのリポジトリみたら今月に至るまでコミットされつづけてるぞ。
というか、作者に連絡して修正パッチを投げてさっき返事が来たところだ。
codeplexにおけるプロジェクトratingsも★5つだし、どこが気に入らないのか知らないが、
まあオレが使いこなせれば済むことだからいいや。
yaccを知らずに僕らは生まれた~ lexを知らずに僕らは育った~
PEG世代の歌か?
夏休みなんで C++でPEGかpackratのパーサ作ってみたいのですが 何を参考に作るのが面白いでしょうか?
ポリエチレングリコール? いやいや・・
>>295 PEGは新しい概念で古い言語向けにはあまり実装されて無いんじゃね?
Haskell、Pythonあたりを使うことをお勧めする。
PEGって使いやすいの? CFGに比べた利点・欠点とか こういうのが書きやすいとか書きづらいとかありますか。
原理的には、バックトラックのあるトップダウンパーザの受け入れる文法そのもの なので、CFGに比べて、原理を理解してしまえば直感的。 利点とも欠点ともとれるけど、レキシカルアナライザと統合される。 ナイーブな(メモ化なし)実装だと、指数的に時間がかかり、かつ無駄が多い。
C#の処理系ってことでIronMetaを眺めてみたが、こりゃあ異次元行ってるな。 ぱっと見ただけじゃさっぱりわからんぞ……。
? これ別にC#をパースしてるわけじゃないと思うよ yaccみたいにテキスト的に処理してるだけだろ
>>302 まあそうなんだけど、C#自体の文法と似通っていて、
どこまでがC#の文法なのかが非常にわかりにくい。
どう見ても構文の宣言とラムダ式の定義が混じって見える。
>>303 そもそもそういう人が処理系なんて書けるの?
>>304 んんー、昨日いっぱいまでで、Irony使って大体書き上げてしまったぞ。
単独ファイルのコンパイルは文法の厳密化とか以外は大体こんなもの。
あとはエラー出力を整理してGUIくっつけて複数ファイルのコンパイルに対応したらおしまい。
ソースコード吐き出し式よりライブラリ式の方がオレには使いやすいようだ。
C#って文法は単純でも中身は超複雑だぞw
中身w
PEGのパーザジェネレータ作るのはかなり簡単だよ。LL(1)やLALR(1)のパーザジェネレータ 作るのと比べてもかなり簡単。LLやLR系だと文法に対するグローバルな解析が必要になるけど PEGはそういうのしなくていいし。パーザジェネレータじゃなくてパーザコンビネータならもっと簡単に書ける 無名関数に相当する機能がある言語だったら、大体100行程度で基本的な機能を持ったものを作れる
PEGの利点: ・原理的にyaccとかのLALR(1)より強力なので、yaccでハンドリングするのが難しい文法も簡単に扱える(ことがある) ・レクサとパーザが統合されてるので、Rubyの"#{exp}"みたいな式埋め込み文字列みたいな文法も簡単に扱える ・Rubyとかではトリッキーな事をしてこの問題を回避している ・アルゴリズムが簡単なので挙動を理解しやすい=文法をデバッグしやすい(かも) PEGの欠点: ・ナイーブな実装では最悪の場合指数関数時間(だけど、実用上最悪ケースはそんなに起きないと思う) ・メモ化(Packrat)しても、定数係数でLLやLRとかの非バックトラック型のパーザよりは遅い ・Packratだと、状態付きパーザを扱うのが難しい(シンボル表を参照しながらパーズする場合など) ・レクサとパーザが統合されてるので、空白とかの処理がやや面倒
それはPackratパーザ? それともバックトラック?
>>310 Packratも基本的には、単にナイーブなPEGパーザをメモ化するだけなので、多少手間が増えるくらいで、実装は難しくは無い
とりあえずLISP系でスマートに実装してみて! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
なんかPEG/Packrat詳しい人がいるみたいなので質問させてくれ。 手元のPEGのサンプルは四則計算を解釈していて、いきなりインタプリタとして動くようになっている。 いきなり動かすんじゃなくて構文木構築の段階で動作をとめることはできるんだろうか? それから途中まで解析した文脈を情報として続く解釈で再利用できるだろうか? 例えばPythonの文法を考えてもらうとして、 # ***ここから*** if [Expr]: [Sentence] [Sentence] [Sentence] # ***ここまで*** Pythonでは構文の範囲は字下げで表現しているので、 if文の範囲を調べるのに字下げの数を数えないといけない。 どうやって解釈させたらいいのかわからなくて戸惑っているところなんだが。
そのサンプルは、構文木を作ってから四則演算を実行してるんじゃなくて、 いきなり構文を解析しながら四則演算をしてるんじゃなかろうかという気がするが。 オフサイドルールとかはPEGの鬼門だということかと。 確か原論文では、それを理由にHaskellはムズいとして、Javaのパーザを 実装していた。 多分さがせば解決方法が出てる論文もあるだろうと思うのだけど。 パーザを状態付きにする方法は原論文にある。
>>309 > 定数係数で
この言葉遣いはちょっと変なのでは?
>>314 字下げ処理はレキサの仕事と割りきってしまえばそれほど難しくはないでしょ。
先読みして{と}に相当するものに変換できるから。
317 :
313 :2009/08/04(火) 18:20:40
(use srfi-9) (define-record-type result (make-result x y) result? (x value) (y next)) (define (app parser f) (lambda(in) (define r (parser in)) (if r (make-result (f (value r)) (next r)) #f))) (define (term str) (lambda(in) (if (equal? (string-scan in str ' index) 0) (make-result str (substring in (string-length str) (string-length in))) #f))) (define (/: x y) (lambda(in) (or (x in) (y in)))) (define (^: x y) (lambda(in) (define r1 (x in)) (if r1 (let ((r2 (y (next r1)))) (if r2 (make-result (cons (value r1) (value r2)) (next r2)) #f)) #f))) (define (seq p . parsers) (fold (lambda(x y) (^: y x)) p parsers)) (define (rep0 parser) (lambda(in) (let loop ((rest in) (rs '())) (define r (parser rest)) (if r (loop (next r) (cons (value r) rs)) (make-result (reverse rs) rest))))) (define (rep1 parser) (^: parser (rep0 parser))) (define (? parser) (/: parser (app (term "") (lambda(v) '())))) (define (& parser) (! (! parser))) (define (! parser) (lambda(in) (if (parser in) #f (make-result '() in)))) (define-syntax rule (syntax-rules() ((_ name body) (define name (lambda(in) (body in))))))
318 :
313 :2009/08/04(火) 18:25:10
なんとか1レスの範囲に収めたが、そのせいもあって、読みづらくなってる。その辺は読む側 の環境で適当になんとかしてくれ。あと、Gaucheのライブラリ関数string-scan使ったので、Gauche でしか動かんと思う。string-indexとかに置き換えれば、他のSchemeでもたぶん動くと思われ。 Schemeは普段使わないんで、Scheme使いの人からするとアレなコードかもしれんが、そのへんは勘弁。 使い方は以下のような感じ。文脈自由文法では表現できない、A^n B^n C^nの文法。 (rule S (seq (& (^: A (! (term "b")))) (rep1 (term "a")) B (! (term "c")))) (rule A (seq (term "a") (? A) (term "b"))) (rule B (seq (term "b") (? B) (term "c"))) (display (S "aaabbbccc"))
319 :
313 :2009/08/04(火) 18:28:52
Pythonのインデントルールみたいなのは、レキサがインデント処理する事が前提だから、PEG/Packrat で処理する場合でも、レキサを別に用意した方が書きやすいと思う。レキサがあったらPEGじゃないというわけ じゃないので別に構わないはず(基本単位が文字の代わりにトークンになるだけ)。
>313 うお、本当にできてる! たしかにこれはクロージャ使えない言語では無理だ こういう風になったけど合ってますか? gosh> (display (S "aaabbbccc")) #<result 0pbb1788>#<undef> gosh> (define res (S "aaabbbccc")) res gosh> (result? res) #t gosh> (value res) (((() #0="a" #0# #0#) (#1="b" (#1# (#1#) . #2="c") . #2#) . #2#)) gosh> (next res) ""
321 :
313 :2009/08/04(火) 19:34:21
>>320 たぶんそれであってる。まあ、これだけだと構文エラー時のエラーメッセージ
表示とかどうしようも無いし、実用的にしようと思うと、色々付け足す必要があるけど、
コアの部分はこれくらい簡単だということで。
みんな論文みながら作ってるの? どうやってpackrat実装すればいいかよくわからん
21世紀…人類はいまだに左再帰問題を克服できずにいた
324 :
313 :2009/08/05(水) 00:55:09
>>322 一応、自分が作ったときは論文参考にしたけど、基本的にナイーブなPEGパーザ+メモ化に過ぎ無いから
それさえわかっていれば、自力で実装することもできると想う。ヒントとして、上で書いたSchemeによる
パーザコンビネータで、各非終端記号の解析結果をメモ化するにはどうすればいいか考えてみて。
Rats!とか高度な最適化してる奴はまあソース読むしかないと思うけど。
左再帰の論文もあったような。
COBOLインタープリタを作ろうと思ったが挫折。 制定されているキーワードの数が尋常じゃない。 商用COBOLコンパイラを作っているメーカーの人はマジ天才。
何でそんなものを作ろうと思ったんだw
COBOLかっこいいじゃん。大文字で。 Cを使える人はいっぱいいるけど、COBOLはそうはいない。 だからこっそり開発して職場のヒーローになろうと思ってね。 でも道は遠かった・・・使うのと作るのとは別物なのだ。
>>327 > 制定されているキーワードの数が尋常じゃない。
何のためにパーサジェネレータがあるんだか
まあ、BNF 打ち込むだけで疲労困憊ってのはあるかもしれんが…
大文字使いたいだけならマクロでも使えばいいじゃん
>COBOL ほとんどは命令の名前なんだから、Identificationのレベルで区切って、 命令の判別はあとの段階にまわした方が簡単になるんじゃない? あとはまあ、フリーソフトのCOBOLの処理系なんて昔ならともかく今ならいくつもあるんだし、作らないという手も。
ゲームのNPCとかにスクリプトを使いたいんだけど 参考になるサイト教えて、lexとかyaccとか難しいのはいらない
>>334 とっつきは悪いかもしれないけど、yacc&lexを使った方が
結局は落だと思うよ。
>>334 オープンソースのスクリプトの処理系を組み込んだ方が普通は楽。
オレはそれにシナリオ記述用の独自形式のスクリプトと2種類用意しているが。
>>334 ゲームの性質(リアルタイムとかアドベンチャーとか)にもよるけど
ゼロから勉強しなきゃいけないならYaccとかbisonとかの支援受けるのは悪くないと思うよ
組み込みでスクリプトをその場解析する必要があるならLRのパーサを裸で実装したマイクロPlan(1970年代のbitの記事)とかもあるからそういうレガシーなものもいいかもしれない(これは中間コードVMとしても結構興味深い)
っというわけで334がどういうものを欲しているかによって回答が異なるのだな
luaは洋ゲーで良く使われてる
>>337 マイクロPlan懐かしすぎ
臨時増刊捨てなきゃよかった
>>339 同じく後悔してる
他にもmicro StarTrekやTinyBASICのソースもあったんだよな
>>334 ゼロから勉強するつもりで、もし入手できるなら「翻訳系構成法序論」がお勧め。
えらく堅苦しい題名だけど、たった136ページで翻訳系(コンパイラ)から
翻訳器生成系(yaccのようなコンパイラコンパイラ)まで作成方法が解説してある。
言語はPascal系なModula-2だけど、難解なアルゴリズムではないから、
C/Javaなどに慣れていれば読解に問題はないと思う。
あと、自前で言語処理系を作らないつもりなら、Tcl/Ruby/Pytonみたいな
汎用スクリプト言語をゲームアプリの中に「埋め込む」ことも検討できる。
ゲーム専用のスクリプトエンジンについては、よく分からんなぁ。
老婆心だが、Tcl/Ruby/Python のうち、Rubyを組み込むのは やめたほうがいいと忠告しておこう Tclはもともと組み込みのための処理系だし、Pythonもある程度 考えてあって商用も含めて実績も多い。 R(以下略
PL/0まじおすすめ 許されるのは小学生までだけど
>>334 tclかluaを使うことにして、公式ドキュメントを。
>>334 あとはまあ、NPCの台詞や動き程度なら、
イベントの発生条件とイベントの内容をデータとして書ければいいわけだから、
スクリプト言語を使うまでもなく、
XMLやYAMLなどで宣言的データとして書く方法もある。
ちょうど、同じようなものを自分で作ろうとしているところ。
>>341 スレ違いの質問で悪いが、続きを聞かせてくれ。
実際、Pythonを組み込んだオプソだけど高機能な3Dソフトを
知っているし、それに対してRubyはvimくらいしか実績を知らない。
ただ、Rubyの組み込みに何か技術的に致命的な欠陥があったりするのか、
あるいは、それほどPythonが組み込みに優れているのかまでは分からないんだ。
それとも単に
>>341 の印象で語ってるのか?
>>345 341ではないが、代わりに答えてみよう。
Rubyでは処理系そのものをライブラリの形で差し替えたり、
あるいはJavaや.NETの枠組みで処理系そのものを再実装したりの試みは広く行われているが、
Rubyを組み込みスクリプトとして使用する例はオレもRPGツクールXPくらいしかしらない。
あまりその辺の分野は活発ではないような気がする。
いい加減スレ違いだから、これ以上の話はRubyのスレに行ってくれ。
独自に実装かつ、yacc&lexは難しいと言うなら、LISPかForthがいいんじゃね? LISPはよく見るから、あえてForthでやってみてくれ。
>>345 ruby は GC というかメモリ管理まわりの兼ね合いで
組み込みがかなり面倒、という話を聞いたことがある
スレチだけど、言語実装の話でもあるので、ちょっとRubyの話を続けると、 組み込みに向かないのは、evalがあるのが大きいと思う。 そのせいで、パーサとVMが独立できないので、言語まるごと組み込む必要が あるのが大変なんじゃないかと。 1.9でその辺は変わったみたいだけど。
行の1文字目で処理を分ける程度でいいんじゃね?
1文字で思い出したけど、変数名が1文字の場合はハッシュ使わないで 26個のテーブルってのどう?
いつの時代のBASICだよ
353 :
デフォルトの名無しさん :2009/08/13(木) 15:08:53
Rubyの話をもちっと聞かせてくれ。 俺も拡張機能用にPythonを組み込んだアプリは良く見るが Rubyを組み込んだアプリは見たことが無い。 これは単にRubyが歴史が浅いからなのか、それともRubyが組み込みで使えない深い理由があるのか?
じゃあこのスレっぽく話を広げようか 俺341だけど、言いだしっぺっぽいので まず指摘されてたけど、メモリ管理の点で、1.8時代はネイティブスレッドとは 破滅的に相性が悪かったし、ウィンドウシステム・3D・DirexX関係も 相性はあまりよくない。 それに対してPythonは参照カウントとマーク&スイープの組み合わせで、 マーク&スイープもおとなしいタイプ。 参照カウントってのはちょっとダサいが、質実剛健だしその点では好感。 あと、これは俺の想像だけど、Pythonの作者は、PythonからCを使うってのと CからPythonを使うってのを対称的で対等なものとして考えている雰囲気があるし、 技術的に変なこだわりはなくて、いろんなところに配慮しながら無難な実装をしてる。 Rubyは実装技術オタクのMatzが作ったので、変なところでこだわってたり 無駄に離れ業やってたりしてタチが悪い ただし、Rubyは将来的にはマルチVMも可能にしようという方向で動いてるようだから そこらへんは変わってくるかもしれない
とりあえず Google SketchUp が Ruby 組み込みだったはず。
357 :
デフォルトの名無しさん :2009/08/14(金) 01:20:18
Q. 64bitプログラムとは、どのような文を書くといいのですか A. コンパイラが64bitコンパイルできるなら何でも64bitプログラムになります 心底「ダメだこのバカ」と思った
360 :
デフォルトの名無しさん :2009/08/14(金) 21:52:07
トークンという物について質問させてください。 例えば s = "ABC"; という文があった場合トークンは、 1. s 2. = 3. " 4. ABC 5. " 6. ; でいいのでしょうか? とくに文字列が "ABC" で1つのトークンなのか "とABCと"で3つのトークンなのかがわかりません。
s = "ABC" ; と分けるのが一般的かと思います
Forthは"が単独トークンになるね。
363 :
345 :2009/08/15(土) 00:07:23
スクリプトエンジンのスレだから、
「組み込み用途における技術的観点での比較」に絞ってレスする。
宗教戦争を煽る気はない。
>>346 >あまりその辺の分野は活発ではないような気がする。
Rubyは組み込みの実績が少ないし活動が活発ではないという理由かな。
それは技術的な理由からは外れている気がする。そうなった理由(背景)がこのスレの主題。
>>349 >そのせいで、パーサとVMが独立できないので、言語まるごと組み込む必要が
>あるのが大変なんじゃないかと。
Rubyが言語まるごと(パーザ+VM)組み込む必要があるのは事実。
ただし、個人的な感覚として、アプリケーションにスクリプトを組み込む目的の多くは、
ユーザによるアプリケーション機能の自由な拡張(スクリプティング)なのだから、
まるごと実装は欠点にはならないと思う。(JavaVMのようなコンパイラ系は別)
(長いので続く)
364 :
345 :2009/08/15(土) 00:10:47
(
>>363 の続き)
>>355 >まず指摘されてたけど、メモリ管理の点で、1.8時代はネイティブスレッドとは
>破滅的に相性が悪かったし、
Rubyとネイティブスレッドとの破滅的な相性の悪さは事実なので同意。
ただし、多くのアプリケーションでは、ネイティブスレッドが前提とはならない
(あるいはRubyの疑似スレッドでもかまわない)ケースが大半を占めるのではないかと思う。
>ウィンドウシステム・3D・DirexX関係も相性はあまりよくない。
RubyもGNOME, WxWidget, Qt, Cocoa, SDLとウィンドウ(GUI toolkit)は揃っているし、
3DもOpenGL拡張ライブラリがあるから、相性が悪い理由にはならない。
DirectXは(おそらく)Rubyで対応しておらず、Phytonの実績が多いのかも(?)しれないが、
それは実績が多いという事実の言明だけであって、具体的な技術面の指摘ではない。
そもそも、これらは拡張ライブラリであってエンジン組み込みではないからスレ違い。
>それに対してPythonは参照カウントとマーク&スイープの組み合わせで、
>マーク&スイープもおとなしいタイプ。
GC制御に関わる所有ルールの難解さは、RubyにもPythonにも同様に存在する。
またGC方式の差異は、組み込み用途の利点とは直接的に結びつかないのでスレ違い。
(もし関連性があると考えているなら、具体的に差異を説明してください)
>あと、これは俺の想像だけど、Pythonの作者は、PythonからCを使うってのと
>CからPythonを使うってのを対称的で対等なものとして考えている雰囲気があるし、
対称性はRubyも変わらない。実装の難易度も同等というのが、個人的な実感。
(まだ続く)
365 :
345 :2009/08/15(土) 00:15:27
(
>>364 の続き)
>技術的に変なこだわりはなくて、いろんなところに配慮しながら無難な実装をしてる。
これは(スレ違いだけど)同感で、PythonがSimple is bestを追求してるのは好感。ただし、
>Rubyは実装技術オタクのMatzが作ったので、変なところでこだわってたり
>無駄に離れ業やってたりしてタチが悪い
については、組み込み用途とは無関係だし、Rubyがスキャナとパーザの実装で
離れ業をしている事を除けば、具体性の無いMatzへの個人批判でしかないのでスレ違い。
以上、個人の印象/主観を除いたRubyの組み込み用途における技術的な問題点をまとめると、
- 言語まるごと(パーザ+VM)組み込む必要がある
- ネイティブスレッドとの破滅的な相性の悪さ
の二点のみ。組み込み用途に限れば、Pythonと比較した決定的な欠陥は見当たらない。
実際、拡張ライブラリ(Ruby->C呼び出し)を自作できるRubyプログラマであれば、
Ruby組み込み(C->Ruby呼び出し)も難儀な実装作業ではない、というのが個人的な実感。
(PythpnでもPython->C呼び出しが実装できない人であれば(その逆の)組み込みが難しいのは同じ)
(ゴメン、次で最後だから許して)
366 :
345 :2009/08/15(土) 00:18:02
(
>>365 の続き)
あと(技術的な観点ではないけど)付け加えるとすれば、
Pythonは公式文書として組み込み方法が解説されているのに対して、
Rubyはインタプリタソース(ruby-1.8.x-xxx.tar.gz)に含まれるごく簡単な解説が
唯一の公式文書であるため、自力でネット/書籍から情報を得る必要があるという差異が、
組み込み実績という結果に大きく影響していると思われる。
これだけだと何の事か分かりずらいと思うので、最後に具体的なアドバイスをまとめる。
- RubyプログラマはRuby組み込みで、PythonプログラマはPython組み込みを選ぶのが楽
- ただし、ネイティブスレッドが前提なアプリケーションであれば、Pythonしかない
- どちらも知らない人は、(解説文書が整備されている)Phyton組み込みが無難な選択(=お勧め)
- ただし、言語の選択は、システム全体を見渡してから判断すべき(解説文書の有無だけで
言語を選択すると、本末転倒になる恐れがある(木を見て森を見ず))
長文/連投のスレ汚し、失礼しますた。
元々の話のゲームのスクリプト用途とかなら 既に挙げられてはいるけど lua みたいな 最初から組み込み用に作られたものを使うのが無難じゃないかな 変に難しいこと考えなくても楽に組み込めるし
長過ぎて読んでないが、 結局Rubyを無理やり組み込む人はいないと
これだけ長文でレスしたくせに、中身がほとんど無いじゃないか。 スレ違いをいちいち長ったらしく指摘しなくていいからもっと短くまとめろよ。 > あと(技術的な観点ではないけど)付け加えるとすれば、 > Pythonは公式文書として組み込み方法が解説されているのに対して、 > Rubyはインタプリタソース(ruby-1.8.x-xxx.tar.gz)に含まれるごく簡単な解説が > 唯一の公式文書であるため、自力でネット/書籍から情報を得る必要があるという差 > 異が、組み込み実績という結果に大きく影響していると思われる。 付け加えじゃなくて、ここが一番重要なところだろ。
機能的にはschemeやjavascript辺りのサブセットがVMで動けば十分 バランスが取れたのがlua 実際にスクリプトを書かせる対象を想定しないとな
>>366 まず、俺の主観が入っているってのはその通り。その点はすんまそん
てかあまり深く考えずに書き込んだけど、363氏の説明の方がほとんど
正しいと思います。
いくつか書きたいのは、
PythonのGCは停止時間(いわゆるレスポンス)が悪くない。
循環参照を解消するために定期的に
マーク&スイープする必要があるけど、そのタイミングは制御できる。
たとえばゲームでいえばシーン暗転の時にやるとか。
Rubyは逆で、楽だけど大味な制御しかできない
以前に256倍網道編でarton氏がpure rubyでゲーム作ってたけど、
実際実行すると結構カクカクだった
ついでにいうとCから使ってるとファイナライザが欲しくなるが、
CPythonならスコープはずれたら解放されることが(個別実装の仕様として)
保証されるので楽。
これらが決定的な利点・欠点かどうかは状況に依存するね。もちろん
あと実装じゃなくて完全にスレチだけど、ライセンスが違うのと、
(用途によるが)配布の際にバイトコード化可能かいう点もある。
以上で撤収します
forthってGCってあるんだっけ? あれ?ディクショナリ内にメモリって確保するんだっけ?
組み込み用スクリプトのインタプリタとライブラリのデバッグに時間を掛けたくないよね ゲーム本体よりも大きいと本末転倒だし ソースがせいぜい2~3ファイル、合計数百行程度、使えるライブラリは関数をテーブルに登録ぐらいが理想か
374 :
345 :2009/08/15(土) 02:21:05
>>371 >まず、俺の主観が入っているってのはその通り。その点はすんまそん
こちらこそネチネチ書いてスマンかったです。ただ主観/印象で論議すると
宗教戦争に陥りがちだから、それを避けたかった。分かってくださいませ。
>Rubyは逆で、楽だけど大味な制御しかできない
RubyもGCを明示的に起動できますよ。シーン暗転前に起動すればいいと思いますが....。
>実際実行すると結構カクカクだった
カクカクになるのは、GCとは別の要因ではないかと思います。
GCが原因なら、(比較的あいた間隔で)実行が固まったように見えるはずですから。
>CPythonならスコープはずれたら解放されることが(個別実装の仕様として)
>保証されるので楽。
これは、(Cスタック上に)auto変数としてPythonVMを確保すれば、そのVMと実行環境が
まとめて自動的に解放されるということでしょうか?
もし本当なら、(Rubyと比較して)かなりプログラマの負担が減りますね。
あと同一プロセス上でのマルチVM(インタプリタ)も簡単に実現できると思われますし。
>あと実装じゃなくて完全にスレチだけど、ライセンスが違うのと、
Rubyライセンスは、とっても緩やかなものです。Matzは言語オタクだから、
(権利の主張よりも)自分の作品を使ってくれることに喜びを感じてるのだと想像させるほどに。
>(用途によるが)配布の際にバイトコード化可能かいう点もある。
これも、(オプソなプロジェクト以外では)採用を決めかねない大きなPythonの利点ですね。
ソース非公開というニーズは多いと思いますから、
>>363 の最後の段落は撤回します。
いまさらなんだが既存のスクリプトエンジンを組込む話は 組込み系言語スレがふさわしいと思う。
javascriptはBOTとかのチートツールで使われてる
>>375 でもあそこでpとかrとか言ったら荒れるんだよね
>>355 > 参照カウントってのはちょっとダサいが、質実剛健だしその点では好感。
mark & sweepと併用するやり方は、
どっちをメインにするとしても、極めて有効なやり方だよ。
Rubyは実装として美しくない 最近の高スペックPC当て込んだ バブル言語だろ
Forthは基本的にはライブラリ(辞書)管理もFILOだから、 GCという概念がない。動的なデータ構造も(スタック以外)ないし。 PostScriptは確かスナップショットのようなものを取って、 明示的に指定してそのスナップショット以降に確保されたものを 解放するとかそういう機能がある、と思った。
おれ科学計算系で、3回くらいPythonが組み込まれてるソフトを 触ったことがあるよ。個人的な感想だが、pythonの微妙に面倒臭いところが、 組み込みだと逆にぴったり使いやすいんだわ。説明しづらいけど。 Rubyの自由さは組み込み向けだと正直いらない。
>>363-366 おおむね同意だが、
>>349 に対するレスはやや違うと思う。
漠然とスクリプトエンジンと題した場合、真っ先に求められるのは
書いたスクリプトをその場で実行できる手軽さであり、
必然的にインタプリタの要件を満たすことになる。
これに現在主流がバイトコンパイル式であることを勘案すると
言語まるごと(パーサ+VM)を組み込むことがほぼ確定になる。
まあオレがオレオレ処理系を作るときはスクリプトのコンパイラは
事実上のジェネレータとして実装して、
生成物は汎用のスクリプトの処理系に渡してしまうから
自作部分は純粋なコンパイラになるわけだが。
開発用にはそれとは別にスクリプトのタイムスタンプを見て
自動的にコンパイル作業を行う機能を追加することになるだろう。
ruby のライセンスは GPL よりは緩いけど 他の組み込み向け言語に比べると だいぶめんどくさい方だと思うけどな まぁライセンス云々はスレ違いだけど
>>382 パーサーの要不要は用途次第かと
ゲーム用とかだと開発時は素早く試行錯誤したいが
リリース後は基本的にはスクリプトをいじる必要がないので
そういう場合パーサーは無駄なので最終的には外せる方が良い
実行環境がプアなものは特に
これが噂の「すり合わせ」というやつか
生インタプリタも、中間形式分離型も両方ある奴がほしい、という 要望ってこれからも大きいかな? 今のところメジャーなもので、実現したものってないような気がするけど。
388 :
345 :2009/08/15(土) 18:25:09
>>387 Pythonであれば、以下のようなカキコがあるから、
パーザとVMは分離できるように見えるけど、違うの?
Pytonにはevalは存在しないみたいだし(
>>349 参照)
>>371 >(用途によるが)配布の際にバイトコード化可能かいう点もある。
>>380 > Forthは基本的にはライブラリ(辞書)管理もFILOだから、
> GCという概念がない。動的なデータ構造も(スタック以外)ないし。
それは嘘。
FORTHを採用する場合、
後置記法を採用するくらいだから、
非常に小さいインタプリタが必要とされている局面。
だからプアな処理系が多いと言うだけで、
GCをバッチリ実装した処理系はあってもいい。
データがFILOで済むというのも嘘。
辞書に登録したら不必要になる順序はプログラム次第。
まあ誰もスクリプトでFORTHなんか使いたくないからどうでもいいけどなw
391 :
387 :2009/08/15(土) 20:03:53
>>388 実際にPythonやRubyでパースが曖昧になるようなケースは知らないが、
evalがあると分離しにくいのは確かだろうね。ちなみにPythonにもevalはある。
そこれりすぷれすよ
Rubyが使われないのは単に実績がないからなんでしょ どんどん使えばいいと思うよ
組み込みスクリプト用のLispってあるの?
emacs lisp
Ypsilon
elisp
ruby
>>394 小さな独自Lisp系ならいくらでもあるよ(CLとかSchemeとかの規格準拠じゃなければ8ビット機でだって動くんだもの)
400 :
345 :2009/08/16(日) 01:27:27
>>391 え、Pythonにもevalあるんですか?!うーむ
どちらが真実かは、結局は自分で調べなさいということですな。
python -c 'print eval("1+1")'
402 :
345 :2009/08/16(日) 01:52:09
>>394 LISPerは自分用のがあるから
他人の糞LISPなんて使わない
>>403 というか、そんな結論ありきな考え方をするやつなら
そもそもこんなスレに来る必要がないわけだが。
> データがFILOで済むというのも嘘。 > 辞書に登録したら不必要になる順序はプログラム次第。 少なくとも伝統的なFORTHなら辞書は一方向リンクトリストで最後に 登録されたものから順につながってるし、最後に登録されたワードを グローバルなワークエリアが指している。 FORGETワードは、特定のワード以降に登録されたワードを全部捨てて しまう。 そういう構造だから、基本的にGCはない。
ABAPのEBNFください
ANTLRで苦戦していて質問したいのですが、このスレでいいでしょうか? もしくは専用スレを立てる?
このスレでいい。
410 :
408 :2009/08/31(月) 11:58:13
お言葉に甘えて。 ng : n=TOKEN (v=INT|v=FLOAT) -> ^(PARAM $n $v) ; ok : n=TOKEN v=(INT|FLOAT) -> ^(PARAM $n $v) ; ngルールみたいな書き方はダメでしょうか? antlrは通るのですが、C言語からそれを呼び出すと セグメンテーションフォールトします。
411 :
408 :2009/08/31(月) 11:59:43
ごめん。ngルールとokルールが逆だった。 v=(INT|FLOAT)がNGで(v=INT|V=FLOAT)がOK. ANTLR的にv=(INT|FLOAT)という書き方はNGなのでしょうか?
出来ればツール頼らずに 手続き型言語作りたいんだけど どのくらい大変なん
コンパイラもアセンブラもリンカもエディタもツールですよ・・・
Brainfuckならパンチカード手打ちしてもできるんだろうな
TinyBASICくらいの規模なら机上でいけるんじゃないかな
ツールってyaccとかlexのことか? なくても大差ないと思うよ
>>412 LLで混乱しない文法なら問題ないんじゃないの?
このスレだったと思うけどμplanとかpascalの構文なら自己記述できるし
>>412 どういうコードに落とし込むかってあたりが問題になる位で落としやすいVMを設計すれば32Kワードもありゃ言語コンパイラは書ける
UCSD p-systemとかが実際そんなものだ
案ずるより産むが易しってあたりの言語なら悩む前に書き始めてみればいい
コード公開してもいいのなら行き詰まってから助けを求めに此処に戻ってこい
いまどきこだわることはないと思うが、 たいがいの言語ならちょいと工夫すればだいたいトップダウンパーザで書ける。
>>412 PerlやRubyで書けば、素で描いてもまあ2週間くらいで。
LISPだと数分~数時間
yane lispおすすぬ
Lisperあっち行け
おおっ
わからない単語がいっぱいでてきた
たくさんレスありがとう
>>416 そういうことです
>>418 Lispなら作れたからアルゴリズムで行き詰る事は多分無いんだけど
Lispに比べると全然ソース量が桁違いになりそうでヘタレてる・・・
>>420 2週間!!
以外と速い
頑張ってみます
Lispすげー
Lisp作れたならその上でマクロ書けば数日で手続き型言語作れないか?
LISPのインタプリタの作り方ならLISPの入門書の最後に例題で出ているレベル JavaとかのGC機能が前提の言語ならそんなに難しくないはず コンパイラなら知らん LISPのインタプリタと手続き型言語のインタプリタはつくりがまったく違うと思うけどなあ
↓このスレの住民なら1レス以内に作れるレベル
LISPで全部できると思うならそうすればいい。
ただ、なぜいつまで経ってもLISP系が主要プログラミング言語にならないかの理由についても考慮すべき。
>>424 パーサー、構文木構築、構文木消化・変換、出力を順番に作って中間出力を目で確認する。
中間出力はPerlならData::Dumper、RubyならYAMLで。
この辺がC/C++ではしち面倒くさすぎてスクリプト言語でコンパイラを実装する理由。
よほど大規模なマイ言語のスクリプトを構築しない限りは速度面の不満も出ないしね。
>>429 C++はSTLとかを使えば面倒な部分がなくなってスプリクト言語で実装するレベルにならない?
>>424 Lispの処理系を書いたことがあるってことは、コンパイラ理論は知っているんだよな?
インタプリタ、中間コード吐いてVM上で動かす、ネイティブバイナリ吐く、
と色々パターンがあるが、基本はまず、再起下降パーサー書いて抽象構文木に
落として、実行するインタプリタを書く。それが出来たら(中間表現に落として
最適化して)コード生成。
>>430 C++のSTLでYAML並みの読み書き柔軟性得るのにどれだけコストが必要か考えてみて。
boost:serialization ってものも
ruby信者は痛いので気づいたらそれ以降触らないようにしてる
大体IRを一々ファイルに書き出す必要もねーだろw Pretty-printerを書いとけば十分
>>432 シリアライゼイションを覚えたての子供ですね?
437 :
デフォルトの名無しさん :2009/09/08(火) 16:33:32
ANTLR3でトークンとしてヒットするけど出力しないトークンはどうやって定義すれば良いのでしょうか。 このTOKENでDQを無視してSTRINGだけツリーパーサーで欲しいのですが… SKIP()はセグメンテーションフォールトで落ちました. TOKEN : DQ STRING DQ ; fragment DQ : '"' ; fragment STRING : ( ES | ~('\\'|'"') )* ; fragment ES : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\');
ADD 3 TO 4 という文があった場合 BNFするとしたら、どうするのがカッコいいですか?
<文> ::= "ADD" "3" "TO" "4"
キンコンキンコンキンコンキンコンキンコンキンコン
AST? ATS?
>>442 AST
AST
AST
たすけてください
>>439 みたいな文法だったらツリーにする必要なくね
だね。 リスト(線形)でじゅうぶん。
自然言語を再現したいのか 本当に "ADD" <NUM> "TO" <NUM> なのかでずいぶん違うよな
"ADD" <NUM> "TO" <NUM> なのです その跡にFROMとかつくかもしれないのです お願いします
それでも再帰構造さえなければツリーはいらん
でも、その後学のために 作ってみたいのです お願いします
だから構文そのものがツリー構造じゃないからツリーにならないんだって
>>450 COBOLみたいな構文もツリー構造じゃないから無理?
COBOLに式あったっけかな。 要するに、 <式> :== <式> + <式> とか <文> :== <IF文> | ... <IF文> :== "IF" <式> "THEN" <文> ("ELSIF" <文>)* ("ELSE" <文>)? "FI" みたいな再帰的な構文があると、再帰的なデータ構造でないと いけないわけで、木が必要になる。 アセンブラみたいなのだったらリスト(線形)で十分。 SQLってどうなの? 識者求む。
副問合せ句とかが在るから、再帰じゃないと表現できないんじゃないかな。 ところで、ORACLEのマニュアルにある図ってなんって言ったっけ? BNFが図になってる奴。
構文図
Expression ::= "ADD" Factor "TO" Factor Factor ::= Num | "(" Expression ")" Num ::= "0".."9"+ かもしれん。 これならツリーになる?
AND, OR, UNION等は再帰で定義するから木で表す。
>>455 その構文のインスタンスはツリーに出来る。
その構文そのものは再帰があってDAGになる。
458 :
デフォルトの名無しさん :2009/09/17(木) 02:22:52
デザインパターンを駆使してコンパイラを自作しています。 ・字句解析=Chain Of Responsibility ・構文解析=Interpreter のように作っていてうまくいっているのですが、 意味解析はどのパターンを使えばいいでしょうか? どこかのサイトでVisitorを使うとか見たような気がするのですが。
>>458 先に仕様があってそれから設計を施していくわけで、
手段と目的を混同しちゃいかん。
誰も君のコンパイラの設計がどうなってるのかなんて知らんだろ。
つか, 関数型言語なら別の選択あるだろうけど, 手続き型言語の場合, パーサジェネレータ使った方が 早い処理系ができるだろうに………
>>460 それは文法によるだろう。
言語処理系の書きやすさを第一に考えて言語を設計した場合、
手書きの再帰下降パーサでも十二分な速度が出ることはD言語などで実証されている。
Interpreterで構文解析っておかしいだろ どういう設計なのか知らんがVisitorとInterpreterは相互変換できるからどっちかに統一するべき
性能はむしろ手書きのパーサのほうが出る。 手書きパーサが不利で、パーサジェネレータが有利なのは以下のような点。 ・構文規則とアクションがすっきり分離させて記述できる ・LL(1) に収まらない文法を記述するためのテクニックに煩わされない ・規則をあれこれ変更するのが簡単 あと現代的なテクニックをかじりたいならパーサコンビネータライブラリとか使ってみたら?
Scalaの勉強していてパーサコンビネータを触っていたんだけど、 電卓の次に思い浮かぶ使い道がコンパイラとかインタプリタになってしまう。 その間ぐらいで、手ごろな練習のネタって無いものかなぁ?
>>464 発想の出発点を見直せば、その人なりのネタは見つけられると思うけどね。
自分だと、最近はRubyでツール作りする機会が多いから、そのコマンド引数
(サブコマンドやオプション指定の組み合わせ)を解釈するのにRaccを使うことがある。
他にも差分記述のある知識表現にPrologのDCGで簡単なDSL(ドメイン固有言語)を作ってみたり、
同じ発想で差分記述のできるテストデータ記述言語をRaccで記述したり。
極端な例だと、Webアプリのプロトタイプ開発で、画面遷移を制御するためにyaccを使い、
画面(フォーム)定義言語もyaccで実装するというマニアックな設計をしたことも。
要は「パーサ」イコール「言語処理系」という思い込みを捨て、単なる再帰的な
データ構造の処理に適した「道具」にすぎないと考えれるのがいいのではないかと思う。
>>465 オレだったらそういう用途の処理用データはXMLやらYAMLやらで定義ちゃうだろうな。
>>464 ・ ラムダ式の使える関数電卓
・ 文字列がメールアドレスとして正しいかチェックするプログラム(コメントのネストにも対応)
・ 装飾をネストできる独自Wiki
・ テンプレートエンジン
469 :
465 :2009/09/17(木) 20:21:28
>>466 最初は同じ事を考えていたんだ。でも、自分一人で作る/使うぶんにはいいんだけど、
他のメンバが使う/使わせることを考えると、エラー処理(構文検査)も考えなけりゃならない。
XMLならDTDやRELAX-NG、YAMLならKawflyみたいなスキーマ定義が必要になる。
そこまでするくらいなら、汎用パーザを使うのがいいんじゃないかと、最終的に判断した。
パーザで適切な構文木さえ構築してしまえば、あとはVisitorパターンを駆使することで、
XMLでもYAMLでも(Latexでも....)出力形式の切り替えは簡単な処理で実現できるからね。
>>467 あたり
>>465 なるほど、使い道としては面白いですね。ちょうど今、コマンドライン解析のあたりやってるし。
でも、勉強としてやってるんで、これが正解ってのがあるほうがいいです。
仕様も自分で考えるんだと、パースしやすいような仕様にしてしまうんで。
>>468 メールアドレスって、foo@examples.comだけじゃなく、"foo" <foo@examples.com>, …のほうですよね。
それはやりがいがありそうなネタですね。
>>470 ・PCRE(Perl 5 Compatible Regular Expression Library)の正規表現のパーズ。
・POSIX shellの文法のパーズ。
>>462 Interpreterパターンって構文解析の為のパターンじゃないの?
InterpreterはASTのノードに自分自身と子の評価を行う処理を直接埋め込むことで ASTをそのまま実行するパターンだよ あらかじめ構文解析を行ってASTを作っておく必要がある
デザインパターンとか大層なもんじゃないでしょ
Interpreterパターンが構文解析のために利用されるのは正しい表現だと思われ。
あらかじめ構文規則に沿ってオブジェクトを配置する必要があるのは事実だけど、
それは構文解析とは別の話しだし、(yaccみたいな)パーザジェネレータも同じだから。(
>>473 )
最近はデザインパターンから入る若者が多いから、ごっちゃにして考えやすいけどね。
まあ、デーザインパターンなんて大層なもんじゃないという意見に同意するよ。(
>>775 )
>>462 =473=476?
君はたぶんいろいろと間違って理解してるからGOF本をしっかり読みなおした方がいいよ
確かにデザインパターンは大層なものじゃないとは思うが、間違った理解は周りの人を
混乱させてむしろ害悪だから
>>478 >VisitorとInterpreterは相互変換できる
できない
VisitorとInterpreterでは全く目的が異なる
>InterpreterはASTのノードに自分自身と子の評価を行う処理を直接埋め込むことで
>ASTをそのまま実行するパターンだよ
処理を直接埋め込むこと、そのまま実行することは必須ではない
(GOF本「実装」欄の2.を参照)
>あらかじめ構文解析を行ってASTを作っておく必要がある
ASTの生成方法までは定義されていないが、Interpreterパターンと言った場合、
(ASTを生成する)Clientオブジェクトもパターンの構成要素に含めて考える方が一般的
(GOF本「構成要素」欄と「実装」欄の1.を参照)
>>477 自分は
>>462 ,473じゃないヨ
>>479 まったく、その通りだね
ところで、GOF本のアレをInterpreterパターンと呼ぶのはどう思うかな?>>all
自分にはインタプリタという言葉のニュアンスから違和感があるんだけど
と、スレらしい話題に戻してみる
逆。Parsingにinterpreter patternってのは単純な場合のみ。 ASTインスタンスの生成を行うのは、interpreter patternの仕事だけど、 (ASTインスタンス生成は解釈の特殊な形態の一つ) parsingそのものはInterpreter patternの仕事じゃない。 単純な例だと一体化しているので、混同しているケースが結構多い。 日本語版wikipediaの記述がその例。(これは古い英語版を元にしている) GoFより > The pattern doesn't address parsing. When the grammar is very complex, > other techniques (such as a parser) are more appropriate.
GOFの神格化進んでいるんだね。怖いね。
必要以上に貶めている人がいるから 訂正してくれてるだけでしょ?
ヤレヤレ
485 :
デフォルトの名無しさん :2009/09/23(水) 08:13:49
形式言語と正規表現って別物ですか? 同じものですか?
>>485 正規表現は形式言語の一種である、という解釈でだいたい合っていると思う。
C言語はプログラミング言語の一種である、と同じ解釈ね。
あと、そういう言い方をするなら、正規表現ではなく正規言語だろうね。
正規表現と正規言語は別のものだが?
488 :
デフォルトの名無しさん :2009/09/23(水) 09:02:34
正規表現と正規言語と正規文法はどういう関係ですか? コンパイラの理論の基になっているのは生成文法なんですか? もし、チョムスキーが生成文法を発表しなかった世界があったら その世界で使われているコンパイラはどんな物だと思いますか? COBOLとFORTRUNとlispですか?
ちったあ自分で調べろ
古い変な本しか手に入らないか 周囲に変なことを吹き込む人がいるか 釣りか なんにせよ調べる気はあるまい
それにしてもチョムスキーのこんな持ち上げ方って久々に見たw
調べる=知ってる人に聞く じゃないの? 本やネットってゴミ情報が多すぎて 知りたい情報にたどりつくまで 手間と時間がかかりすぎるからさ 知ってる人にズバリ答えてもらうのが一番なのよ
チョムスキー理論の理解こそが自然言語処理実現の第一歩だぁー!!と 必死になって文献を読みあさっていた、過去の自分を思い出すw
文字列が長すぎて strlen()が'\0'にたどりつくまで 手間と時間がかかりすぎる って話を思い出した
と思ったが、最後のは少し興味あるな。 チョムスキーが発表しなくても、同様の概念(TMとか再帰とか翻訳とか形式体系とか)はあるから 結局は同じようなものに落ち着くような気がする。
BNF自体はチョムスキーの発明でもないしな
インド人だっけ?凄いよね。
誰がインド人?
501 :
デフォルトの名無しさん :2009/09/23(水) 17:21:39
大体が↓のような感じで構文解析までが行われると思うのですが、 ソースコード → 字句解析 → トークンリスト → 構文解析 → 構文木 トークンリストはトークンクラスのリストと表せますが、 構文木はどのような形になると思いますか?
構文要素クラスの木構造
開始記号クラスかな
このあいだまでは「パニーニ」と表記してた気がするが、最近は「パーニニ」なのか。 昔インド人の先生に尋ねたら俺の耳にはパニニーと聞こえたが。 てかBNFはバッカス(と、本人はあまり乗り気でないようだがナウア)の功績だろ一応はやっぱ。
インド人の発音は独特だから
日本人の発音の方がはるかに独特です
かもしれぬ インド人と言っても様々だ が、日本人がインド人の発音を聴き取るのは慣れないと無理 驚くというか途方に暮れるぞ
詳しく!
なるほど。たしかみてみよう
確かめた結果、 ザンギュラのスーパーウリアッ上 でした
ダトル・オブ・ぷよぷよ
ゆとり教育は嘆かわしい。 中学生の息子の机に数学のノートが開いていた。 なんと、数式にビックリマークを付けて遊んでいた。 出てくる数字はほとんどが1桁の整数のかけ算。 しかも答が間違ってる。 小学校の九九の復習にもなってない。 本当に嘆かわしい...。
>>513 ゆとり教育でなければ九九ができるようになるはずだという発想がすでにおかしい
人任せにしてないで、自分で教えてあげたら?
多分、どっかでつまずいてそのままになってるんだと思うよ。
>>514 ネタにマジレス、カコワルイ。
ここは息子インタプリタが自然数の階乗をパースして計算していると考えるんだ。
ネタだと気付かないところがすでにおかしい
不思議なインド人に対抗するには 九九じゃなくて二五六二五六やらせるべき
>>513 を読んで想像すべきだった状況の例
3!×5!=720
階乗は習ってねーや
「ジョークを解説するのはカエルを解剖するのと似ている。 解剖されたカエルには誰も興味を示さないし、カエルは死ぬ」
なんかえらく主観的な格言だなぁ 説得力のある文体に騙されそうになるけど
解剖したカエルは、フランス人スタッフがおいしく頂きました。
最初からコンテキストもなにもなしにジョークを投下するやつが悪い
antlrworksで正規表現の [0-9]{1,16} ってどうやって書けばいいの?
526 :
デフォルトの名無しさん :2009/09/27(日) 04:32:51
日本ではコンパイラの研究ってあんまはやってないの? 有名な研究室ってどこ?
>>526 コンパイラ site:ac.jp で検索してみるとか。
タイガーブックの最新版ってどうよ? 今月末に出るけど
どうよ?だと? 自分で買ってきて報告しろやヴぉけ
無駄無駄 どうよ?厨はいつだって人から貰うだけ
俺の上腕二頭筋どうよ?
すごく・・・ぷよぷよです・・・
タイガーブックがついに邦訳されて今月末に出版されるよ
無駄無駄 されるよ?厨はいつだって人から貰うだけ
preccsより腐ってない フリーのプロトコルコンパイラ知りませんか?
尻いりませんか?だと? いいのかい?ホイホイ突いちまって
>>535 preccsのドコが腐っていると感じたのかな?
自分は初見だったのでググってみて、CSPというかOccamの実装という印象を持った。
そのうえで、予想される「腐って」いそうな点をあげてみる。(実際には触っていないヨ)
・コンパイラの実装がバグだらけ
・マルチスレッディングに対応していない
・デバッグが難しい
・プロトコル記述(状態遷移)が直感的ではない
・メッセージ処理機能が不十分
・プロトコル定義の網羅性に欠ける
あと、このスレよりもネットワークプログラミングスレ向きな話題かも。
このスレだと「自分の好みに合ったコンパイラを作れ!」なレスが中心になってしまう気がする。
実質パーサの話題に終始してるがな コンパイラですらない インタプリタでもない
じゃ、話題の提供ヨロシク
Pythonでコマンドを作って、 自作のスクリプトでそのコマンドを呼び出すという仕組みで処理系を構築してる。 すでにある程度動いてるんだが、 現状手動で作成してるコマンドの一覧をPythonのプログラム側からどうやって吐き出そうかなと考えているところ。 sed/awkあたりで簡単に切り貼りできるような形式を用意できるといいかなぁ。 できればコマンドのマニュアルも一緒に生成できるといいんだが。 現在固定になってるコマンド一覧は実際にはXMLファイルで、 コンパイラがデシリアライズの形で一括で読み込める仕組みにしている。 XMLを手作業で編集するのはしんどいので、シリアライズで書き出す簡単なプログラムを用意して、それを毎回手で編集してる。
>>540 JavaDocみたいに定型のコメントを書くのはどうですか?
pydoc
実装には命令型言語より関数型言語の方が向いているのかな Pugsが出てからずいぶん経つのにPerl6まだ出ない
>>543 そんな漠然としたレベルの話だと、好みでとしかいいようがないんじゃ。
ただ、Haskellの論理的な記述能力は空恐ろしいものがあるな。
例えばYAMLパーサのリファレンス実装はHaskell製だ。
HTMLの仕様書用意されてはいるが仕様の詳細までは網羅されておらず、参考程度にしかならない。
で、ソースコードみてみたら、ほとんどBNF式そのまんま。
これをネイティブで解釈するんかHaskellは……。
再帰下降パーザを書くのに関数型言語は合ってると思う パーザ以外の部分は知らん
Haskellは新しく演算子をユーザ定義できるからな。 優先順位を付けて。それが例えinfixでも。 出来る奴が書いたコードの記述力は破壊的。 Parser Combinatorの発明は、奴等ならではだろう。
>>546 > Haskellは新しく演算子をユーザ定義できるからな。
> 優先順位を付けて。それが例えinfixでも。
それPrologでもできるよ。何十年も前から
PrologのDCGはBNFそのものだしな。 単純にパーザ記述の容易さを比較するならPrologに軍配があがる。
間を取ってLISPだな そのままLISPの処理系速度で実行できるし
RubyとHaskellがベスト
noop
Ocamlが至高 ほかは糞
Ocamlなぁ。 こんどはOcamlでスクリプティングやってみるかなぁ。 静的型付言語の割りにコンパイラが賢いので 人間はあまり型を気にする必要がないというところがよさげだな。
>>548 DCGはいいものだったけど、
元になっているPrologが独自すぎて流行らなかったな。
一時はちょっとややこしい構文解析はDCGの独壇場だったのに。
>>554 スレ違いになるけど、Prologがブームだった頃「PrologはAI言語である」みたいな解釈の
説明が多かったため、AIブームの終焉と一緒にPrologへの関心も冷めてしまったように
感じてる。Prologなんて記号処理言語の一つで、「道具」にしかすぎないはずなのに。
DCGが自然言語研究の中から生まれたのは事実だけど、パーザ記述向けの「道具」として、
今でも有効に活用できるものだと思う。固定観念さえ捨てることができれば....。
とりあえず、Prologによるコンパイラ開発に興味を持った人向けに書籍を紹介する。
・Prologの技芸, L.Sterling&E.Sharpiro著, 共立出版
Prolog中級者向けの内容で、全体で557ページ、DCGには12ページ、コンパイラ(構文解析/
コード生成/アセンブラ)に関しては24ページが割り当てられている。
昔、Prologで簡単なBASICインタプリタをちょこちょこっと作る話が 載ってるウェブページあったなぁ。
プログラマならなんか成果物だして世の中の役に立て。
マ板でやれ
OCaml使いの間では"O"の部分は使わないのが常識らしいな。
OCamlさん 何してはるんですか
DSLを設計するための良書ってないですかね?
>>562 良書かどうかは分からないけど、とりあえず手持ちの書籍を紹介。
・lex & yacc, John R,Levine他共著, アスキー出版局(O'Reilly本)
この本ではCUI向けのメニュー生成言語、言い換えるとCUI向けメニュー生成処理に特化した
DSLの開発手法が紹介されている。 本全体が429ページで、そのうち33ページがDSL。
あるいは設計しようとしているDSLの適用分野(ドメイン)が明確になっていて、
それをここで提示できるのなら、その分野における類似したDSLを紹介したり、
その類似DSLに関する書籍を紹介したりすることができるかもしれない。
もし適用分野が明確ではなく、一般的なDSL設計技術を勉強したいという話であれば、
残念だけど「一般コンピュータ言語設計論」みたいな題名の抽象的で難解な書籍を
探すしかないと思う。自分は紹介できないや。
ただし、発想を変える事で参考になるやり方もある。
最近ではXMLで様々なデータやルールといった情報を表現することが
普通に行われていると思うけど、そのXMLで表現するタグ構成というのは、
目的とする分野に特化したDSLの一種であると考えることもできる。
だから「XML文書設計法」みたいな題名の書籍を読むことが、参考になるかもしれない。
# ほとんど参考にできるレスじゃなくてゴメソ
# あるいは、推薦図書/必読書のためのスレで質問してもいいのでは?
565 :
デフォルトの名無しさん :2009/10/12(月) 20:50:00
566 :
563 :2009/10/13(火) 10:06:24
うーみゅ、
>>562 が期待していたのはMartin Fowler氏の定義した
DSLという用語だったのね。このスレでの質問だったから、
てっきりパーザでミニ言語を作りたいのだと思い込んでしまったぜ。
漏れは釣られたのか?....orz
>>566 internal DSLとexternal DSLと呼び分けるのが一般的かと
>>563 はきちんと説明して偉いと思うよ。
マーチン・ファウラーがいうDSLを実装するにも、
lex&yaccは必要になることがある。
本人乙
内部DSLだとlex yaccの出番なくね?
DSLでも表記はS式 or 逆ポーランドで良いと思うんだけどな。 俺言語でS式&逆ポーランド&三項演算子というのをやったことあるけど、なかなか良い感じだった。
x^2 + 3 * x + 4 と (x 2 ^ 3 x * + 4 +) あなたはどっちが好きですか
DSLぐらいだったら二項演算子無しでも良いんじゃね? 俺言語だとこんな感じかね x 2 ..pow 3 x ..multi ..plus 4 ..plus
想定するDSLのプログラマによるよね。 自分用・ギーク向け・趣味用途ならS式でも逆ポーランドでもいいけど スーツ/エンドユーザー向け・パッケージソフトだったりすると流石に無謀だろ。
x 3 + x * 4 +
>>576 引数の数を演算子の前のドットの数で表してるんですね。
それって
>>576 氏の発明ですか?それともそういった処理系がありますか?
fortran
後ろに置いたピリオドで、スタックに積んだ返した数を表すのはどうだろう 前後逆か? .*で不定長引数とか
何のためのスタックかわからん
584 :
576 :2009/10/16(金) 01:17:54
>580 俺の発案。forth系なんて流行ってないから誰もこんなこと考えないって。 コロンも活用すればそこそこ大きな引数でも使えるから実用的だよ。 .one ..two .:three ..:four こういうのもWordレベルで一意になるから解析が楽チン。 4 3 2 1 ..sum // 3 4 3 2 1 .:sum // 6 4 3 2 1 ..:sum //10
585 :
576 :2009/10/16(金) 01:27:49
>582 それは考えた。Wordレベルで一意になるから良さげだった。 …………普通はデフォルトの戻り値で十分なので後ろピリオドは要らないけど。 他にもこんなことを実装したんだけど、プロセス実行をどうするか考えているので実装は進んでない。 ..func //デフォルトの戻り値 ..func: //戻り値2つ ..func:. //戻り値3つ ..func[] //戻り値無し(廃棄) ..func[0] //配列型戻り値(全体) ..func[1] //配列型戻り値の1番目を返す ..func[-1] //引数を返す
>>584 あんまり突っ込むのも無粋だが、
.2sum とか .8sum とかの方が
見やすくて短くて解析も楽な気がしねぇ?
587 :
576 :2009/10/16(金) 02:23:54
その辺りは好みですな。 個人的にはwordの中に数字が入るのが嫌なんでね…………
言語は仕様考えて、加減乗除ライブラリと、1文字出力ルーチン作って 階乗とかfib関数作るところまでで、たいてい飽きるの俺法則
>>584 そうでしたか。
>>576 氏は天才だと思います。
FORTHみたいな言語を自作するときは参考にさせてもらいます。
プレフィックスの数字で長さとかを決めるのって、 昔のFORTRANの文字列(5HHELLO とか)みたいでなんかヤだなぁ。 Verilogのビット幅指定がそうなんだけど。
俺、中学の頃、逆ポーランド記法のこと何て、 聞いたことも、無かったけど、自分で、思いついてた、、、
逆ポーランド記法は日本語に似ているから、日本人にとってはある意味自然なんだよな。
惜しいかな 変なことを考える中学生に今少し学問があれば
>>591 「お前が思いつくようなことは、すでに誰かが思いついてる」
ベッコアメの社長が親父に言われたんだったかな?
大昔に見た記事だから忘れたけど
それなりの環境にいれば思いつくことは思いつく。 しかし思いついたことを実現まで持っていく奴はなかなかいなくて、大抵 思いついた数年後に世の中のどこかからそれを実現させた会社がでてくる。
つ LISP
>>592 2から3を引く
3を2から引く
どちらも日本語として自然ですが、RPNとしてはどちらかが間違いですよね?
一見そう見えるというだけだと思います。
>>597 2から3を引く --> -1
3を2から引く --> 1
どちらもRPNとして正しいと思うが?
日本人は中学で語順で格を示す英語学ぶのだから、 それは機能語である助詞の機能によって、 語順が変えられるのだとすぐ気づくだろう。
>>597 >3を2から引く
これは日本語として自然か?
漏れにはえらく不自然に見えるが....。
逆にRPN(Forth系言語)なら "から" を減算元属性付加、"を" を減算先属性付加という
ワードであると考え、ワード "引く" ではスタック上の属性値を参照することで、
演算対象値を決定できる。これなら3と2が逆でもオケー。以下は例。
3 :スタックに3をPUSH
を :スタックの先頭値に演算先属性を付加
2 :スタックに2をPUSH
から :スタックの先頭値に演算元属性を付加
引く :スタックから値を2個POPし、減算子(演算元値 - 演算先値)を評価して、結果をPUSH
602 :
598 :2009/10/18(日) 12:13:11
そういう風に、本来のRPNにないものを導入しないとダメじゃん、って話。
シューティングで弾幕とか敵の動きをスクリプト化したくて Java上で動くスクリプトエンジンを作ろうと思ったのですが、 ・・何から始めたらいいんでしょうか。 スクリプトに使う言語はLuaにしようと思っています。
Java上なのにLuaなのかよ。
Jua
>597 おいおいおい、日本語が逆ポーランドの構造しか持っていないなんて言ってないぜ。 日本語の特徴の一つ(述語を中心とした後置型)が逆ポーランドに似ているということだよ。 ~して、~して、~して、……。といった感じでだらだら続けられるのも日本語の特徴だよな。 そういや、各国の言葉の特徴をイラストにしたのがあったな。日本は渦巻だっけ?
> といった感じでだらだら続けられるのも日本語の特徴だよな。 逆ポーランド記法から夢が膨らむネット言語学者乙 英語でもできるし、日本語よりもっと簡単なぐらいだ。 新聞などではさすがに極端なのはないが 小説でも眺めてみるとよい。 見るからに馬鹿そうな著者を選ぶのがポイント。
逆ポーランド記法を使えば、自然言語処理の能力がアップするに違いない!
つ「日本語の語順と逆ポーランド記法」「和文の語順と逆ポーランド記法」どちらも水谷
どんなの? >608 日本語よりも柔軟に組めるの?
緩いだけだろ 日本語で曖昧さがなく読みやすい長い文を書くのには 読点の使い方や語順を工夫したりとか技術がいる
つまり、時代はラテン語か
>>613 西洋人にとってのラテン語にあたるものが日本で学ぶ漢文なのよ(割とマジで)
古代ギリシャ語でおk
古文に相当する授業ではたとえばイギリス人ならシェークスピアとか読む。
字句解析を手書きするのって難しい・・
古文だろ。
南部ヨーロッパだと昔使っていた言語だけど、 北部ヨーロッパだと別の民族の言葉だな。
「から引く」と「を引く」の二つの演算子つくればいいだけじゃん。とカメレス。 どっちもドンラーポとしては正常だよね。
そこは語尾屈折で
624 :
デフォルトの名無しさん :2009/11/06(金) 11:41:09
Rubyで俺DSLを作りたいのですが、パーサーの作り方を解説したURLはないでしょうか
ウェブページはあるかもしれんが、URLだけで解説するのは無理だな。 冗談はともかくとして、とりあえず Racc 使い方、で検索するとか。 先頭に出てくるページは、今なんか落ちてるようだが。 ていうか言語内DSLじゃダメなの?
626 :
624 :2009/11/06(金) 13:27:03
検索しましたがraccで良いような気がします(合ってますか?) ”Rubyを256倍使うための本 無道編”というraccの解説本がありましたが絶版でした。 どこかに良い資料はないでしょうか。 最終的には俺言語、俺コンパイラ、俺VMが作りたいです。
>>626 ネットで見つかる資料でとりあえずいいと思うんだけど。
それ、ざっと見たけど、まともに構文解析してない気がする。 ...ゲームスクリプトエンジンとして、インタプリタがセーブ・ロードをサポートする所の考察は面白いが。 アセンブラのような文法(ベタッとした、入れ子になった構造がない言語)なら、 それでも構わないけど、どうやら if や式に現れる入れ子構造をどうやって処理したら いいか、わからなくって手詰まりになっちゃったんじゃないかな? > もし、複雑な物を使いたい場合、 > スクリプトコンパイラを使うに乗っている拙作の acc.exe を使うか、lexとyaccで作った方が良いと思います。 と本人が言ってるように、yaccも使わないし、再帰降下パーザを手で書くわけでもなく、 シンプルに済ませたいなら、if や while なんかの入れ子なんぞもっての他、 式も (1 + 2) * (3 + 4) なんて複雑な式はきっぱりあきらめる、と。 それくらい割りきらないとダメっつーか。 まぁ昔のFORTRANや、BASICインタプリタは、なんだかんだのテクニックを使って、 そういうのを実装してたわけなんだけどさ。
現実に使っていると思われるスクリプトコードの一例がブログに載っているが、そこの一部で説明されているものと大差ないんだな。 変数名を(固定プリフィクス+数字)の形でしか表せないように見える。 管理するの大変そうだ。
C言語と同等の機能の#define、 MASMライクな#macroの2種類があり、もちろん様々な条件コンパイルも出来、 最終的にプリプロセッサは、式(逆ポーランド)と DD,DW,DB,stringにスクリプトを解析してコンパイラに渡す。 よって、プリプロセッサの大きさに比べてコンパイラの大きさは小さい。 そして強力な文字置換により、文字セットもプリプロセッサ時、コンパイル時、実行時の3段階で解決される。 本人曰く、 21年プログラマやってて、13年同じシステムを使ってるって と書かれてるから、さすがにそんなチープな物じゃないんじゃない? しかし、カナ入力なんてじじいかよw
ブログの回答で初心者にドラゴンブックと中田の本を紹介してるw
誰か特攻しやがったw
またおまえらかw
> 変数名を(固定プリフィクス+数字)の形でしか表せないように見える。
> 管理するの大変そうだ。
アルファベット2文字とかそういう制限ならわかるけど、
わざわざそんな制限つけるとか考え辛いし、そういう名前で変数を管理する
世界にいる、ないしそういう環境で学んだ人ってことなんじゃないかな?
ドラゴンブックと中田先生の本(どれ? 厚い奴薄い奴ペーパーバックの奴と
いろいろあるけど)って、結構わかってるじゃないかw
一昔前なら市販品だったようなレベルのCコンパイラだって書けるぞ。
つまり
>>629 のコンテンツは覚醒前に書いたっつーことかね。
ぜひ今の知識とノウハウを注ぎ込んで書き直していただきたい。
masmのマクロって俺よく知らないんだよな。構造化アセンブラみたいな記述が
できるようになるマクロセットを作れたりとか結構すごいらしいんだけど。
変数名は英数文字で表現できます。マルチバイトでは表現できません。 メッセージ命令の中でもレジスタ間接などを使って計算結果やストリング配列の表示も出来ます メッセージ中に直接式を入れることも出来ます。 if 式 elseif 式 else end / while 式 end / do while 式 / for 式;式;式 end などが記述出来ます これらは全てプリプロセス時に、#amacroでifn_goto 式,label / if_goto 式,label と goto labelに分解されます。 式は代入式と評価式の区別は付けません。それとポインター式があります。 式はC言語と同等の物だと思ってください。演算子の優先順位も合わせてます。 記述性はVB並と思ってください。それに強力なマクロと強力な置換が追加されていて、 それらを使って、windows apiを呼び出すようになっています。 逆に言うと、強力なマクロと強力な置換を使い、システムをラッパーしなければ 最低限のゲームシステムの支援(文字表示やCG表示)しかなく windows apiやcopyrect命令などの呼び出しが必用になり、 ゲームシステムとしては使い物になりません。 式関連は最適化もしています。 コンパイラ自体は以上の実装なので、 ウチで作った携帯電話用のゲームシステム等ともマクロを変えて併用しています。
以下がendマクロの実装例です #amacro end( d0 )(local0,local1,localn,localt,localcase) ; ; end ( while,do,for,switch,if ) ; #getnum localt 2 #getnum localn 3 #subnumsp 3 #define local1 "f_{localn}" #unstr local1 #if (localt==10) ; while #define local0 "b_{localn}" #unstr local0 goto local0 local1: #elseif (localt==11) ; do #define local0 "b_{localn}" #unstr local0 if_goto local0,d0 local1:
#elseif (localt==12) ; for #define local0 "b_{localn}" #unstr local0 goto local0 local1: #elseif (localt==13) ; switch #popnum localcase #substrsp 1 #define local0 "case_{localn}_{localcase}" #unstr local0 local0: local1:
#elseif (localt==14) ; if #popnum localcase #define local0 "if_{localn}_{localcase}" #unstr local0 local0: local1: #else #error end文の対応が異常です #endif #endm
LispやSchemeはマクロのお化け 複雑な構文をマクロに委ねるってアプローチはありだと思うけど 括弧はイヤだ
>>636 > ドラゴンブックと中田先生の本(どれ? 厚い奴薄い奴ペーパーバックの奴と
> いろいろあるけど)って、結構わかってるじゃないかw
> 一昔前なら市販品だったようなレベルのCコンパイラだって書けるぞ。
かなり古くさいスタイルの仕様、実装になってしまっていることと、
概論で終わっているような本を参考文献に挙げることは、対応していると思う。
何をやってるかさっぱりわからない。 みんな理解できるのか? だったとしたら、みんなが普通で俺がバカと言うことになるw
>>642 ほう、そうなのか。
しかしこの仕様なら、リンカさえ作れば色々なCPUの実行型を作れて面白そうだな。
>>643 関数型言語みたいだね。現代のoopには対応できないのかね。
まーエロゲのスクリプトみたいだからこれでもオーバースペックだよな。
end命令1個作るのにわざわざこんなに記述するのは嫌だな。 中間スクリプターは地獄だな。 多分本人が作ってるんだろうけど。
逆にマクロさえ作ればいくらでも言語を拡張出来る 確かにlisp的だ
lispなめんな
>>643 の言うとおりoopではない。
言語仕様としては古くさいのでは?
しかし、ゲームのシナリオを入力するだけの物にoopは必要ない。
携帯電話のゲームにも流用しているみたいだから
この人の場合は
>>643 の言うことは見当外れで
>>647 の言うことが正しい。
>>648 気に障ったか、ならば言い換えよう
マク…モゴモゴ テンプレートさえ作ればいくらでもメタ言語を拡張出来る
確かにC++的だ
…?
俺には作れないな。 17才からエロゲプログラマーか。 俺がやったゲーム、何本か作ってるw
コンパイラの理論だけじゃ関数型言語はわからんよ
>>653 649じゃないけどさ、
じゃあ何が古くさいの?
アンチドラゴンブック派?
ドラゴンブックが古くさいとも書いてないようだが…
>>643 >>655 >>かなり古くさいスタイルの仕様、実装になってしまっていることと、
>>概論で終わっているような本を参考文献に挙げることは、対応していると思う。
仕様と実装が古い、そして参考文献が対応してるって書いてあるから、
643はドラゴンブックを古いと思っていることは拙い文章だけど解る。
おちつけ。
>>637 はエロゲや携帯電話のゲーム用のスクリプトだぞ。
それにしては強力だし妥当な言語仕様だと思うぞ。
C言語にMASMの強力なマクロが使えればいいと思っていたが、 実際にやる奴が居たなんて…
面白そうな言語だね。 マクロの全容とサンプルソースを見てみたいね。
中田先生の本の第2版が出るらしいよ
save,loadがバグfix時の文章追加でずれるのか。 プロはそんなところまで考えないといけないのか。 大変だな。
なんだか面白い話になってるね。
メイドゲーの始祖の殻の中の小鳥のプロデューサーでありプログラマのKENJI氏か。
年下だけどオレがこの道に入った元凶の1人だ。音楽プログラムが凄い人だ。
こうなったらシステムを公開して欲しいって言ったら、罰が当たるよね。
過去に関わったタイトルも100以上で、オレが買ったのも10は下らない。
天才っているもんだね。
CG,WAV圧縮もオリジナル、それら全てにMAKE内蔵って事は
100本以上というタイトルを考と公開されているKMAKEと言うのを見てみれば分かるが高性能。
DOSもK-DOSとか言う物がゲームに入ってて、さらにUMBメモリツールのUMBCNFGの作者。
うーん、システムを公開して欲しい。
>>661 2版が出るんですか。1版を持っている自分は買わないですが、
立ち読みはしてみたいですね。
中田先生はいつまでたってもエネルギッシュですね。凄い!
>>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
ってことでいいのかな?
>>651 >>663 俺がやったエロゲも作ってたw
メモリツールも使ってた。同一人物だったとはね。
>>664 あの分厚い最適化の本は2版が出てもいらんわ。
まだ最初の奴、読み終わってないからなw
中田が監修した本の2版なら絶対買わない。
>それら自身は<文>なんだよね。
>詳細を埋めると、
ブログを見る限りだと文の区切りは改行臭い。
ネストできない事はさすがに考えられないからそれで正しいと思う。
>>664 関数型言語実装本は何冊も出てるよ。訳本がないだけで。
どちらにしろ訳者が糞だとダメ本になるから英語版を買った方がお財布にも優しい。
MinCamlならコンパイラの作者は日本人だから、解説文書は日本語が中心だよ。 後、東大やJAISTの講義で使われているから、その講義資料や学生の個人HPを漁るもよし。 もしも英語が読めれるなら、ググるといくらでも論文は見つかるんだけどね。 まったくインターネット万歳、いい時代になったもんだと思う。
公開は断られたね。残念。
未記入様。 makeを内蔵したのは、 別exeにするとどうしても読み込みのオーバーヘッドが無視できなくなるからです。 マスターアップの時にはデーターが完成するのが当日とか当たり前にあります。 自分のシナリオコンパイルは1fileで1秒前後、自分のwavファイルで0.1秒前後です。 特にwavファイルは最後に入ってくることが多いので、wav圧縮は0.1秒前後のため、 外部makeを呼び出していると1万fileだと相当なオーバーヘッダがつきます。 ですので内蔵しております。oggだとこうはいきませんよね。 1万fileで外部makeだと少なくとも5時間は掛かります
KMAKEってのが気になって見てみたけど、 依存型じゃなくって単体ファイルの比較なのね。 たしかにWAVの圧縮には依存型じゃない方が良いと思う。 MAKERだとWAVFILEを2ヵ所に記述しないといけないからね。 マクロはMAKERとほぼ同じだね。 この仕様でフルアセンブラなんて凄いね。 DISKへスワップ機能を入れたりUMBCNFGと言い、 MAKE時のFREEMEMORYをよっぽど空けたかったんだろうね。
>>671 1版を持って無いから買いたい。しかし高いな。
>>672 makeはさすがにスレチ。自重してね。
素朴な疑問なんだが、makeって何のことを言ってるんだ? 普通makeといったらMakefileを動かす実行プログラムのことを言うと思うんだが。
>普通makeといったらMakefileを動かす実行プログラムのことを言うと思うんだが。 それでokだと思うよ。 kmakeはmakefileを動かすプログラムみたいだね。 それをスクリプトコンパイラやwav圧縮に統合してるみたいだ。 面白いアプローチだし、0.1秒の速度を万単位のファイルの圧縮に使って マスターアップの時間を稼いでるみたいだね。 しかし、エロゲーってwavファイルがマスターアップの直前に来るのか。 少しでもスピードを稼ぎたいのは分かるが、 もっと余裕を持ったスケジュールで作れない物なのかね。
>しかし、エロゲーってwavファイルがマスターアップの直前に来るのか。 ねーよ。 収録完了後2日~1週間後が納期。Waveでもoggでも注文した形式で作ってくれるよ。 よっぽどアレなスケジュール組んでるんじゃね? スレの内容に即したことをいうなら、Advの演出みたいなやたらと巨大な量になるスクリプトなら、 マクロで計算式を埋め込むことなんかよりも、むしろ計算式をスクリプトから外に出してしまうことをオレなら考えるな。
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
;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
誤)KENJI氏の所は今年6本だからね。しかも延期は今のところ2本も無いみたい。 正)KENJI氏の所は今年6本だからね。しかも延期は今のところ1本も無いみたい。
どうやらバグfixも出てないようだな。 破綻してるスケジュールじゃなくて スクリプトの簡素化とwav納期の短縮でこなしてる。 マクロを使いまくって、バグを出にくくする体制にしてるんだろう。
マクロ自体にバグが入ると酷い事になるけどな
100本以上、エロゲを作ってるんだから大丈夫だろ。 久々にエロゲ板をみてみたら規制で大変なことになってるみたいだな。
しかし面白そうな言語だ。 全容をみてみたい。
>>672 FREEMEMORYじゃなくてコンベンショナルメモリでしょ。
構造文すら全命令をマクロ化、MAKE内蔵、実践に即した実装だとLISP信者の俺は思う。
エロゲってバカにしてたけど、中々やるな。 シューティングのキャラの移動にも使える。 と思ったら、17才の時にセーラー服戦士フェリス(ヴァリスのパクリ?)で敵の 移動パターン制御に何かしらの言語を使っていた可能性も有るのか。 21年前か。いまだに現役か。 悪いけど言語仕様は古いと思うが21年前の17才が何かしらの言語を 作ったと考えると、今のマクロ主体のシステムは実測論による今までの集大成か。 素直に凄いと思う。 しかし自分がプログラマーだと思うとオブジェクト指向を入れて欲しい。
全ての構造文は if not 式 goto,if 式 goto,goto の3命令で表せると実証してるしな。 構造文のサンプルだけでもみたいな。
ソースクレ厨と同じじゃないか うぜえんだよ LISPでもやってろ
しかし、作ってるのがエロゲ屋ってのが、そんなに感銘を受けるものなのかね? 見習うべきは吉里吉里(KAGはちょっと微妙)とか、バンナムの中の人が作ってるXtalとか、 ソースも手に入るんだし、いくらでもあると思うんだが。 採用実績だってXtalはともかく、吉里吉里は相当のものがあるし。 kikyou.info がつながらん...
>>689 > しかし、作ってるのがエロゲ屋ってのが、そんなに感銘を受けるものなのかね?
たしかにそこに惹かれてるとしか思えないような糞言語だな。
各レスの鼻息と具体性がここまで綺麗に反比例してると笑える。
糞とかいってる奴はもっと良い言語をスクラッチで組めるのか? 俺には無理だ。
HPのフリーツールをみてると何でも水準以上の物を作っているところが凄い。 DOS時代からの生き残りか。
電卓かなんか?
>>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
実際のマクロ記述については長いので省略。以下をみてね。
http://kenjikakera.asablo.jp/blog/2009/11/04/4676336#c
>>695 > 見事に全ての構造文を if not,if,goto で記述している
ifとgotoにメモリがあればTuring完全なわけだし。
で、メッセージを英語化して、start game と exit game にする時はどうするの?
>>696 高度なマクロ機能があれば、whileとかforとかswitchとかを
全部ifに変換するようなマクロとか考えられるよね。
コンベンショナルメモリを広く使うため、UMBCNFGとか使ったな。 あの頃はコンベンショナルメモリが広くないと動かないゲームがあったんだよな。 音源ドライバもMSDRVとレコンポーザ互換で複数画面が使えるんで重宝した。 たしか音源ドライバは118音源の2OPモードが使える唯一のDOSドライバだったんだよな。 そして分裂守護神トゥインクルスターと殻の中の小鳥か。 分裂守護神トゥインクルスターはなぜACT2がでなかったか不明だった。 あの変身シーンをまた見たい物だよ。ニコ動にはないんだよな。 殻の中の小鳥はメイドブームの始祖だよな。 それに、よくネタにされるセーラー服戦士フェリスか。 ニコ動でみたけど、当時の98シューティングってこういう感じなのか。 こういったゲーム開発を支えたのがmacro志向言語でmake内蔵か。 LISPの思想を継承してると思ったが、見てみたらプリプロセッサ命令の山。 面白い物だ。
ゲ製板にフォークしたいような勢いだな、と思ったんだが、 スクリプト で検索したら既にいくつかスレあるな。過疎ってるしw ゲーム用スクリプトの話題はそっちに分ける?
>>698 いやgoto用ラベル管理が必要になるだけで、
後はCのマクロレベルで問題なし。
>>702 Cマクロレベルだとネストの管理が出来ないだろう。
それに#defineマクロは記述性が悪い。
殻の中の小鳥と分裂守護神トゥインクルスターは あの当時の98ユーザーなら知ってるとして、 セーラー服戦士フェリスはパッケージにRPGって書かれてたんだぜ。詐欺だよ。 しかもスピードが速すぎてマシンクロックを落とすか ファンクションキーでスピードを落とさないとゲームにならないんだよ。 フェリスの後継のコズミックサイコは音楽CDが付属していて 今でも高値で売られてるんだよ。
705 :
700 :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とは違い、前方参照も出来ます。
ここに本人が書いてるみたいなレスは、転載か何かか。
98ユーザーも結構多いんだな。 こういった内部でしか使われない言語が表に出ると反応が様々で怖いな。 俺がスクラッチから作った言語がこのスレに晒されたらと思うと怖いな。
>>707 それじゃあ、if not goto,if goto,gotoだけじゃないじゃん。
>>709 それはターゲット言語であって、処理系の話じゃないでしょ?
その辺はちゃんと区別できないと。
IBM5100ユーザーも結構多いんだな
>>707 おいおい、C言語の力を使ったら何だって出来るだろ?
マクロだけで実装してるから話題になっているわけで、趣旨が違うぞ。
>>708 フツーの人はそうだよ。言語処理系のソースコード公開するのも怖いし。
吉里吉里の人は特別だよ。
>吉里吉里の人は特別だよ。 吉里吉里スクリプト自体は、仕様としてはさほど大したものではない。 仕様を真似して似たようなオブジェクト指向スクリプト言語を構築してみたが、 コンパイラ+VMで2週間くらいでできたよ。 吉里吉里がすごいのはKAGというADVゲーム開発環境一式が公開されていることと、 それによる市販ソフトの実績が十分にあるところだな。
>>713 そのマクロ機能実現に、ラベルのスタック管理が必要だってことでしょ?
popしてるじゃん。そのマクロのコード読めてないの?
>>714 VMの性能はおいといてもコンパイラをスクラッチで2週間で組めるのならあんた十分凄いよ。
吉里吉里というのは自分は知らんが、KAGというのは吉里吉里上のラッパかな?
ここに出ているマクロ言語は自分には6人月の仕事だ。
>>715 いや、だから言語の仕様上だけで実装してるのがすごいんじゃん。
ああ、わかった。#defineマクロ機能を完全にとpop機能を実現するコンパイラを
作れば同じ事が出来るって言いたいんだな。
LISP信者には悪いが可読性の悪いLISPや#defineマクロよりmasm似にたマクロを
使えた方が可読性は増す。
あと、Cの#define中って、#ifdefとか#ifって使えたっけ?
使えるのならCの#defineの実装って結構やっかいそうだな。
あ、でもだめだ。#defineではlocalなラベルは作れん。
一つずつ名前をつけるのもめんどくさいほどの大量のフラグとパラメータの 複数スナップショット取れる風な恒久化っていうのはいいね。 俺言語を作ろうとすると文字列のサポートとかマンドクさくなるので こういう状態遷移管理専用言語もおもしろそうだ。 昔、bitか何かで「ある番地(A)からある番地(B)のデータを引いて0になったらある番地(C)へ飛ぶ(だったっけ?)」な 命令が1つあれば、他の命令はこれの組み合わせで実装できるとかあって1つしか命令無いんだから、 A, B, Cのアドレスを並べておくだけでいいとか。
だーらLispのマクロはマクロプロセッサ的なマクロとは別物だっての。 アセンブラのマクロといえば、NASMのマクロがラベルのプッシュ・ポップとかの 機能をもってたかな。
うろ覚えで鼻息の荒い奴はいったい何なんだ
だれもForthのことを思い出してくれない。
>>715 #calc __cmd_num __cmd_num+1
#define local1 "f_{__cmd_num}"
こんな命令が有るようだとさすがに#defineとpush/pop程度の実装では無理だよ。
全ての条件文にユニークなラベルを発効する命令だと思う。
>>721 Lispは高性能なのは分かるが記述性が自分には難点。
Wizerd級になると一瞬で判別できるみたいだけどね。
>>724 それがラベル管理でしょ。
ワンパスコンパイラのコード読んだことないの?
煽るだけの奴が一番頭悪そうだな
久々に高純度の自己紹介レスを見た。
>723 LispはメジャーだけどForthはダメだなぁ。 こういったシナリオ系のスクリプト言語と相性良いと思うんだけどね。Forth。
今はJVMで簡単に俺言語を試せて楽だね。 バイトコード吐いてもいいし、 まずはJavaコード生成でもいいし。
>>715 完全な#define命令とpush/popだけでは無理だよ。いい加減諦めな。
>>719 天才は日本の財産だ。体に気をつけろ。
>>720 >よって、プリプロセッサの大きさに比べてコンパイラの大きさは小さい。
>そして強力な文字置換により、文字セットもプリプロセッサ時、コンパイル時、実行時の3段階で解決される。
文字セットも3種類必用だそうだ。逆にめんどくさくないか?
>>721 一時期LISPにはまったが、やみつきになる言語だよな。RPNもやみつきになったな。
>>722 ここも天才だけが来るスレじゃないし、仕方がないんじゃん。
間違えを認められれば先に進めるし、反論だけの奴はその程度の奴だし。
>>723 わりい、忘れてた。
>>724 そんなにいきり立つなよ。言ってることが正論でも相手が受け入れなくなる。
新言語で週末は面白かったけど、特攻は
>>697 レベルの事でするのは相手に失礼。
まあ、なんだ。ここは天才が比較的多いんだから、
もっと柔軟に楽しく言語を作ろうぜ。
言語を作るってのはプログラミングにおいてOSを作るのに匹敵し、
神になれるんだからさ。
>>725 今更ラベル管理を言ってもまあむりだ。
最初の#defineとpush/popだけで実装はどこへ行った。
>>702 > いやgoto用ラベル管理が必要になるだけで、
> 後はCのマクロレベルで問題なし。
>>732 おっちゃん、言ってることがどんどん増えて行ってるよ。
あんたの負けだよ。
>>732 これじゃ言ってることわからん奴もいるわな。
過去のレスを「増えていってる」とは言わんのでは。 相手の言ってることのうち都合の悪いところを忘れたもん勝ちの 口喧嘩でもしてるなら別だけど。
>>735 一端ゆっくり考えて、#defineと何が必用だか1つのレスに分かり易くまとめてくれないか。
IDが出ないもんでぶつ切りの主張だと何言っても通用しないぞ。
while-endの仮想コードでも良いよ
738 :
736 :2009/11/08(日) 15:00:23
>>737 IDが出ないなら、相手を同一人物だと思わないほうがいいんじゃないの。
735は俺だけど、少なくとも今日は初めて書き込んだぞ。
区別は付いてるさ。 ただ、同じ奴が言ったとは分からなかった。
いや別に不便じゃないよ。 仮想敵と戦わなければいいだけ。
>>742 了解。
まあなんだ、言語仕様のことだから、レスは2つとかに分けず1つに書くか
名前を明記して欲しかったな。
まぁ、逆に「仮想別人」のケースもあるけどなw やたら興奮気味に、仮想敵だとか見えない敵云々言ってるのがいたら、そいつは 「ズバリ言い当てられけど隠れ蓑があるから上手く逃げてやるぜざまあ見ろ」 的な昂ぶり方をしている可能性もある。
Algolしらん。FORTHは昔、MZ系PCのOS、S-OSに実装されてなかったっけ。
>>744 nを初期化し忘れてやがるw > サンプルコード
みんな凄いんだね。 C/C++でブログのプリプロセッサ並の物を作るとしたら、どれくらい時間がかかる? ラベルはハッシュ管理かね、HPとコンパイルスピードを見る限りは。 大量のラベルが生成されるだどうね。 SAVEデーターとバグFIXで増える文字列はどうやって解決してるのだろう。 あと、未読既読機能。VMの力も使ってるんだと思うけど。
>>748 C言語で集中的に出来るんなら1週間でマクロの仕様を考えて、1ヶ月でプログラムかな。
C++ならもうちょっと短くできる。
C言語に落とすのか>foogol
エラーがあるとreturnしちゃうのが新鮮かな?
ttp://catb.org/retro/ logoはなんとなくSMC-70で使った覚えがあるがpilotってどんなのだっけ?
C/C++でやろうとするから大変なんじゃないの? PythonとかGCある言語なら二週間くらい。 ただああいうのは言語機能そのものよりも、 ドメインとマッチしているかどうか、 実務支援のリソースが豊富かどうかで 良し悪しが決まってくる。
>>750 focalは「きだあきら版」じゃないか。
プリプロセッサのプログラム自体は1ヶ月ぐらい(C言語)だけど、 仕様を考える時間が結構かかりそうだな。 3段階の文字列解決とかコンパイラ本体とVMの全ての仕様を同時に考えないといけない。 作りながら仕様変更等もありそうだから、一概には言えないな。
シナリオを1秒でコンパイルとかwavを0.1秒でコンパイルとかスピードに命を掛けてるみたいだし、 やはりプリプロセッサ、コンパイラ、VMとの兼ね合いがあるから日数は簡単に出せないな。
「wavをコンパイル」 こういう用法はやめてくれ
正しくはwavを圧縮だな。
wav変換にかかる時間なんて処理系の出来とは関係ないでしょ?
いや、音声wavの圧縮が0.1秒というのは相当早い。 多分インラインを使いまくってるんだろう。 そこから推測すると、シナリオファイルのコンパイルと圧縮が1秒というのは コードのチューンに相当時間をかけている。多分インライン使いまくりだろう。 JAVAで良いのであれば1ヶ月もあればプリプロセッサを作れるが、 プリプロセス、コンパイル、VM、その間の仕様決め、 そして最適化となると単純にプリプロセス時間だけを計ってもしょうがない。
実用になる言語ってのは、どこかしらに「巨大な~を高速に~できる」な実装が必要になると思うんださ 言語仕様では、それらが簡易に記述できれば嬉しいなとか言語ワナビの俺が言うんだから間違いはない >wav変換にかかる時間 コンパイル時間が短ければ、リリースも早くできるんじゃないか?
Cプリプロセッサ風の何か、なら0.5人月だけど、 標準が定義するところの「プリプロセッサトークン」を正確に認識し、 展開結果に、またマクロが現れるとかそういう場合についてのふるまいを、 正確に標準に定められた通り動作するものを実装しようと思ったら、 どれだけかかるかわからないな。
何でも組める天才はいるんだよ。 でも、この人は一度プログラマーを辞めようとしてるんだよな。 酒や薬(安定剤?)、そしていくつもの会社を渡り歩き、今は経営者兼任。 プログラマーとしては天才だが、人生の天才ではないな。 俺なら凡人で良い。 新しい書き込み _ KENJI ― 2009/11/08 16:15 書き忘れましたがインクルードは #include <w95gd.mac> #include "h00win0.mac" として、標準マクロと標準命令はw95gd.mac、 そのゲーム専用のマクロはh00win0.macに記述します。
>>759 > いや、音声wavの圧縮が0.1秒というのは相当早い。
> 多分インラインを使いまくってるんだろう。
0.1秒はライブラリの仕事じゃないの?
処理系関係ない。
1万ファイルだから外部プログラムの呼び出しコストを下げたいと書いてある。
>>670
764 :
762 :2009/11/08(日) 16:35:16
薬は睡眠薬かもね。イソミタール、ロヒプノールで検索したら、相当強い薬だった。
>>763 この会社の圧縮はCG,WAV,シナリオ全てオリジナルだよ。
ゲーム分解ツールで見たことがある。
多分、他人のコードが入るのを嫌う、昔気質のオールドタイプだよ。
KMAKEもフルアセンブラだから、インラインも使いまくりだろう。
圧縮に必用なビット演算はアセンブラが一番強いからね。
もしかすると、フルアセンブラかもね。
オールドタイプだから、斬新だけど古めかしいスクリプトコンパイラなのだろう。
推測ばっかだなw
767 :
759 :2009/11/08(日) 16:43:57
>>765 何が分かってないか、教えてくれ。
あまりにも自分の理解力がないのなら、答えなくても良い。
自分の馬鹿さを嘆くから。
>>766 オリジナルかどうかって事じゃなくて、
インラインだろうが、呼び出しだろうが、ライブラリだよね?
>>748 のお題は「ブログのプリプロセッサ並の物」だから別の話。
>>767 例えば0.1秒もかかる処理1万件、
これの何をインライン展開すると速くなるわけ?
外部プログラム呼び出しを辞めたのは
>>670 にある。
770 :
766 :2009/11/08(日) 16:48:34
話がわき道にそれてすまん。 それだったらCで2ヶ月かな。
771 :
766 :2009/11/08(日) 16:50:45
圧縮そのものに処理系もインラインも関係ないじゃん。 それともKMAKEで圧縮関数書いてあるの?
773 :
766 :2009/11/08(日) 16:53:35
>>769 >>ALL
>>766 で書いたインラインも使いまくりというのはインラインアセンブラ使いまくりの
間違えです。すみません。
自前の圧縮ルーチンをインラインアセンブラ使って書いてるって話なら分かる。 ただスレ違いかと…
hashをインラインアセンブラ化して2倍のコンパイルスピードだそうです KENJI ― 2009/11/08 17:13 CG,WAV,シナリオの圧縮はオリジナルです。 昔は全てアセンブラで組んでいましたが、 最近は移植性のため一度C言語で組んでそれをインラインアセンブラ化します。 圧縮のビット操作関係とプリプロセッサとコンパイラのラベル解決のプログラムはC言語版は残したままで1からインラインアセンブラで組み直しています。 インラインアセンブラの採用で圧縮展開は5倍、コンパイラは2倍くらいのスピードになります。 ゲーム本体は展開以外はほぼ同じスピードなので、インラインアセンブラを積極的に使ってません _ KENJI ― 2009/11/08 17:19 未記入様。 ご報告、有難う御座います。 読んでみると自分のせいで荒れているみたいですね。 申し訳ないです。 ここでの質問は紳士的でしたので、問題はありません。
776 :
775 :2009/11/08(日) 17:29:26
もしかしてhashを使っているという前提が違うのかもしれません。 >コンパイラのラベル解決のプログラム というのはHPでhashで説明してますが、hash以上の性能のアルゴリズムって有ります?
>>776 トライがある
まあただのトライ木ではないだろうけど
言葉が抜けてた トライを実装する場合ってことね トライ構造にした上で、シンボル化する シンボルってのは、LISPのアレね こうすると、新規のラベルかどうかはトライでインクリメンタルに、 既成のラベル同士ならアドレスの比較だけで済む
順当に考えてハッシュだろう。 キーをどうやって生成してるか分からないが、 2倍というのは凄いな。
ハッシュが2倍とは書いてないようだが
おこちゃまだから切り刻むことしか思いつかない
>>778 に補足
一意なんだからアドレスの比較も不要だな
ユーザープログラム上で比較する時は、の話
トライは順序構造だから当然文字列の大小も判定できる ハッシュだと一度文字列レベルに落とし込む必要がある 文字列処理にハッシュが使われない理由でもある
勉強になるよ。
何でこんな伸びてるの? 三行で頼む
1行で要約すると 子供がエロゲの作成過程を知って興奮
なんか最近似たようなニュースがあったな
>>786 VHSがアダルトビデオのおかげで普及したという神話もあながち…
糞とか古いとか言ってた奴の言語を見たいよ。 概要で良いからどれだけ素晴らしい言語を実用レベルにしてるか見て欲しいよ。 こういう事言っても誰もやってくれないんだよな。 口先だけだと思われたくなければやってよ。
なんで自分の力量を証明するためだけに言語を作らないといかんのだ。
実際に出来るのは理論だけか、 コンパイルスピードの遅い実用的にならない物だけだろ? コンパイルスピードを極限まで早くするためにmakeを内蔵し アセンブラを豊富に使っているプロと比べものになるわけ無いよ。 しかも言語仕様が柔軟でエロゲだけではなく 携帯電話のゲームのコンパイラにもなるんだぜ。 そんなのここのスレの住人の一握りしか出来ないよ。
>>791 今まで作ってきた言語の仕様の一部を晒せば良いんじゃないか?
じゃないと糞とか古いとか言っても説得力がない。
素人はコンパイラジェネレータを使えばok。 コンパイルスピードは目をつぶる。
795 :
790 :2009/11/09(月) 01:21:53
>>791 今までに作った素晴らしい言語の仕様を教えてくれればいいよ。
kimoi
そんな物、作れるのはほんの一握り。 皮肉だと思うが、スレに期待しすぎ。
て言うか何言ってもいちゃもんつけるんだろうなあ… 不毛だこと
さすがにもうゲームの制御ならインタプリタで十分だろうに 未だにコンパイルスピードとか言ってる人もいるんだな
よそから飛んできたんでひょっとしたら799は空気が読めてなかったかもしれない
いや普通の意見 ゲームがらみだからボルテージ上がってる子供がいるだけ
neccdとsmartdrvとatokと入れて この人のコンベンショナルメモリのツール等を使って639kb空けたよなぁ。 この人は何やるにしても究極を求めちゃうんだろうな。
DOS全盛の頃はX68000使ってたからさっぱり判らん
といっても、閑古鳥が鳴いてたスレだからな、ここ。 この話題無くなったらまたシーンとするだけだし、積極的に他へ追いやることもないよ。 誰も居なくなったこのスレを眺めて「よし、俺の仕事によってスレの純度が保たれた!」と 悦に浸ってもしょうがないし。
ボルテージ上がってる人は、KENJIさんご自身が 「それと吉里吉里などもっと凄い言語が公開されていますので、 ソースコードなどはそちらを参考にした方がよいと思います。」 と、おっしゃっていることは都合良く見落としてないかね?
謙虚なところもいいね。
とにかく、他に機種へクロス移植しやすいように マクロで構文を作りMAKE内蔵のコンパイラが有るって言うのが分かって、 LISP信者の俺は嬉しい。 OHPの方は本当に素人向けに説明しようとして放置しているみたいだな。
言語それぞれに特徴がある。 だが、それが良い。 特定言語の信者は何故それが分からん。
Hello, wolrdから先に進まないからじゃまいか?
>>810 べつにそれがわからんから信者なわけじゃないだろう。
何故それが分からん。
いい暇つぶしになった。 巨大なファイル多数を高速にコンパイル、optasmやTurboCを思い出す。 マクロで構文を作るってスピードの面でずいぶん不自由だと思うが、 ゲームで敵の移動アルゴリズムや、 リンカを作ってexe/comファイルの出力だかを多量に高速で出来るのか。 面白そうだし、是非公開して欲しいね。 構造化pic-basic見たいのを作りたいよ。
HPの方も知り合いのために作ったって書いてあるもんな。 スキルが低い知り合いだったのだろう。 なぜスクリプトコンパイラとスクリプトエンジンの分割をした方が良いとか、 ラベルの前方参照の解決方法とか、このスレじゃ当たり前のことを丁寧に 解説している。 HPも再開して欲しいな。
>>813 picじゃ逆ポーランドは荷が重すぎないか?
有難う御座います。 趣味でPICではないですがAVRのリンカを作っています。 その為に、単純比較式 r0==0 とかを1byteで記する命令を作っています。 しかしPICは変数の割り当てが難しいのでVMを作るのは大変だと思います。
>>786 なんか信者的な意見も飛び出してるしなぁ
# さっきまで規制食らってたからニヨニヨしてるしか無かったが
久々の大物だったからな。 構造文もマクロで記述、MAKE内蔵、ハイスピードコンパイル。 これを実装してるんだから良いネタだよ。 それに古いとか糞とか言う奴と賛美している奴がいて楽しかったよ。 おれは古く見えるが、仕様用途にマッチした実装だと思うよ。 このプログラマが何でも組めるというのは事実だけど天才は言い過ぎかな。
Follow集合の計算がわからん 教えてくれ Directorもついでに教えてくれ お願いします
follow集合とdirector集合かな? ググれば分かり易いサイトが結構あるけど。
くそー、規制で祭りに乗り遅れたよ。 このスレにこんなに活気が溢れたのは久しぶりだ。
楽しかったよ。98時台を思い出して自分も年をとったって感じたけどw
実践的言語だと思う。面白いから公開して欲しい。ぜひ、PEのEXEを作りたい。
公開は無理と言われている。自分で作れ。
そうか、残念。自分で作れないことはないんだけど、 他人のコンパイラがはき出すOBJをEXE(PE)にするのが好きなんだよ。 コンパイラよりリンカを作る方が好きなんだ。何故か分からんけど。
おれもLINKつくるのすきだぜ。とは言ってもcomふぁいるれべるだけどw
>>825 変な嗜好だな
リソース含めたりDLLとかは厄介だったりするけど、
それも含めて好きなの?俺はごめんだわ
828 :
825 :2009/11/10(火) 09:09:23
DLLは嫌いだけど、リソースは好き。 そう言えばリソースエディタもC/C++とほぼ同じ性能のマクロが記述できるよね。
829 :
825 :2009/11/10(火) 10:05:51
言語は一度スクラッチで作ってこつを掴んだら、 また新しい言語を作りたくなるよね。
そうだね、色々な言語仕様を考える。 しかし、ここ最近の言語仕様は実践的だな。
ハイスピードコンパイル、ハイスピード圧縮は純粋に凄いけどな。 たぶん、アルゴリズムとインラインアセンブラの力だろう。 現代のコンパイラでも、ビット演算が得意な言語はまず無いからな。 キャリーフラグが無いのも痛い。アセンブラを使って高速化する適材適所だな。
C言語ですらビット操作、キャリーフラグの多用、マクロ機能は アッセンブラには敵わない。 この人はホットスポットを見つけてインラインアッセンブラ化。 昔では当然のことをやっているだけだ。 KMAKEごときも昔の人ならアッセンブラで作る。tasm,turboc,optasm様々だ。 しかし言語体系は面白いし、色々な分野のプログラムを精力的に組んでいるところは評価できる。 でも一度プログラムを辞めたり信念が感じられない。 自信が無いのだろうか。
ブログの最初は自分はNo1と思っていたが、色々あって今の腰の低さになってる。 当時の98エロゲを知るオレには波瀾万丈で面白い人生だと思ったよ。 本人はそう思ってないだろうがw
ブログ読み終わった。PC98時代のじじいだから面白かったけど プログラムの話はほとんど無かったね。 知っているゲームはCALと殻の中の小鳥。 それとPC98時台にエロゲでシューティングが有るって話を聞いてたから3本か。 UMBCNFGの作者さんでもあるんだね。
| ||⊂⊃⊂⊃|| | || ロロロロロロ || がしゃーん | || ・ ・・・ ・・ || | || ロロロロロロ || | || Coca Θ.|| がしゃーん | ||口口口□|| |ミ||====||  ̄ ̄ ̄ ̄ 自動販売機だよ 自動で販売してくれる凄いやつだよ
>>833 40才にもなるオヤジが今まで
エロゲーのプログラムしか作ってないんだから
正直、恥ずかしくて市にたくなるレベル
>>834 社員の悪口と暴露話ばかりで
気分が悪くなった
>>836 逆に勿体ないよ。こんな人物がエロゲー会社に埋もれてるなんて。
結局、トップになったから安定を選んだのか。
所であんたは何の仕事してる?
俺は悪名高きコ○ミでサブとツールを作ってる。コンパイラもね。
>>837 エロゲスレやPC-98のスレを見ていてこのブログの存在は知っていたが、
エロゲスレでは英雄、PC-98スレではスタジオトゥインクルからの脱退までは
よくぞ話してくれたと言う雰囲気。
スタジオトゥインクルからの脱退は賛否両論で色恋での脱退説が濃厚だった。
その後の殻の中の小鳥を作って以降は同情だったな。
839 :
838 :2009/11/10(火) 20:17:54
エロゲスレ->エロゲ規制スレ。 外圧で陵辱ゲームを規制したソフ倫の理事が規制を無かったことにして暴走中。
えーと、他所でやってくんない?
>>838 コナミってゲーム作るところじゃないの?
ゲーム作らせてくれないの?
842 :
838 :2009/11/10(火) 20:34:31
すまん。他人の悪口しか言わない奴を見ると反論したくなってさ。 コ○ミではスクラッチでコンパイラ作ってたよ。 関わったソフトがほんとーにたまたま売れて社長賞とかいうのももらった。 変な会社だよ。
このスレの数字コテのアホさ加減見ればティンとくるはず。 壊れてんだよ。
844 :
838 :2009/11/10(火) 20:36:54
>>841 ゲームは1人で作る物ではないよ。
たとえば敵のアルゴリズムの為のコンパイラとか。
プログラマは企画者の単なる駒だよ。
846 :
838 :2009/11/10(火) 20:42:17
>>843 たしかに壊れてる会社だったよ。
しかし給料は良い。
所であなたは何をしてる人?研究者か何かかな?
会社に友達いるの?
848 :
838 :2009/11/10(火) 20:46:57
もちろん。飲みに行くと会社の悪口やエロゲやアニメの話ばかり。 でも、見た目はスタイリッシュな奴が多いよ。 前の会社のア○ラスでは、オタクっぽい恰好の奴が多かった。
アトラス?のどこが嫌だったん? コナミ?にしたのは何で?
>>836 エロゲと言うだけで一等下に見られるのか。
作ったプログラムで見るべきじゃないのかな。
ここではコンパイラの出来で見ないと自分の品が落ちるぞ。
>>837 悪口なんて書いてないじゃん。どこが悪口?
851 :
838 :2009/11/10(火) 21:00:33
>>849 ヘッドハンティング。給料UP。これ以上言うと身バレするから勘弁。
悪口は何時も単発だなw
ア(クアプ)ラスかもしれないだろ
>>851 いやもう見る人が見れば特定できると思うけど。
ゲロしちゃいなよ。
本当は羨ましいんだよ。 98時代はメモリツールで有名で、 思想は古いがコードを組む能力は凄く秀でている。 しかもポルシェ乗り回して2つの会社経営者。 そしてなんと言ってもメイドブームの始祖の殻の中の小鳥のプロデューサー兼プログラマ。 今もここやエロゲ規制スレでは名が通っている。 俺も何か後世に残せる物を作りたかったが、無理だった。 今はケツに火が付いたコンシューマゲーム屋の管理職。 コンパイラのプログラムを日曜にちまちま組むぐらいだ。(土曜も出社)
メイドブームってファミレスが元じゃなかったっけ かなりスレ違いだがw
もうそろそろプログラムとは関係ない話は辞めて欲しいです。 せっかくの良スレが台無しです。 コンパイラを組める方々が集まってきているスレですので、 自分よりもっと凄い方も多いと思います。 そんな中でスレタイにそった話しは自分が引き合いに出されても しょうがないですが、スレ違いの話は少なくとも自分については あまりしないでいただけると嬉しいです。 かな入力からローマ字入力に切り替えたばかりなので時間がかかるかも しれませんが、自分個人的なことはブログで質問なり罵倒なり していただけると嬉しいです。
>>856 殻の中の小鳥がメイドブームの始祖。
メイド喫茶は殻の中の小鳥の影響を受けたPiaキャロが始祖。
本人かどうかはともかく、ゲームの話はよそでやろうぜ せめて雑談スレとか
861 :
838 :2009/11/10(火) 21:44:31
>>857 (KENJI氏)
1つだけ聞かせて下さい。
なぜ、エロゲー会社にこだわったのですか?
メイドブームは知らないが これまでのメイド萌えを牽引してきたのは雪さんだよ!
中学生の頃、ログインなどでゲームソフトが 掲載されて10万とか貰えて嬉しかったのです。 その延長で高校時代にアルバイト紙を見ていたら エロゲー会社の求人が合ったので飛び込んでみました。 しかし、本当はエロゲー制作は学生時代だけにして、 ロボット関連の仕事に就きたかったのです。 でも作っていくうちにユーザーの反応がアンケートハガキやネットで ダイレクトに返ってくるエロゲーのプログラムも面白いと思い、 最終的には成り行きで会社を作ることになってしまいました。 会社の資金を獲得するために、 本当に様々な言語で様々なプログラムを組みましたが、 一番楽しいのはユーザーとの距離が近いエロゲーと言うことを 再確認させられ、未だに会社をやっています。 あと、単純にエロいシチュエーションなどを 考えるのが好きというのもあります。 最後に、スレタイにそった話題として、 エロゲなどの演出では大量にラベルが発生します。 その上、自分のVMはwindows apiのラッパーみたいな物で、 メッセージ1行表示するには20個のlocal label、 簡易版のcgの表示では100個ものlocal labelが生成されます。 ですのでラベル解決には高速なアルゴリズムと高速なプログラムが必用です。 ですので、トライ木をインラインアセンブラで組んでいます。 VMの実装方法はエロゲー会社、各社色々見たいですね。 コンパイラも最初の1文字が#だとcg表示とか、様々なようです。
864 :
383 :2009/11/10(火) 22:26:13
>>863 ご回答、有難う御座います。
好きでやっているんですね。
一番の理由ですね。
>>865 何故か一言で罵倒する人が数人いるが、理由は何だ?
有名税だよ。いちいちきにするな
はいはい、ブログでやりましょうねー
KENJI氏より凄い言語&実装をしているが、会社所属なので表に出せない鬱憤…かもしれない。 しかし、品のない言葉は発言者自身の品格を下げるから、我慢しなよ。
自演くさいレスが異様に続いて 最近変な雰囲気になっていると思ってたら やっぱり本人が来てたな。
はいはい、自作自演自作自演ね、こんな所でしてどうするw エロゲ板のシステムを考えるスレから信者が来たんだと思う ブログも賛美の嵐。 反ソフ倫のよりどころだからな。
自作自演するならエロゲーネギ板でやるでしょ。 12月に出る、ソフトをより過激に変更してる最中なんだからこんな所で油売ってる暇なんてないでしょ。 まったくもうw
本人も戸惑ってるみたいだし、忙しい人だからここら辺にしておかないか?
875 :
838 :2009/11/11(水) 06:05:05
おはよう~。
>>854 そういうの、あんまり気にしない社風。同僚が読んでいたらばれてるだろうな。
飲みの時に自分から話しちゃうから気にしないけど。
以前知り合いがスクエニ辞めてパチンコ/パチスロの下請け会社を作ったんだけ
ど、
前は超羽振りが良かったのが少し羽振りが良い程度に落ち着いたから、
パチンコ/パチスロ業界も下火になっていくだろう。
羽振りが良いままなら入れてもらおうかと思ったけど。
>>870 そう言う会社。早く辞めたいけど給料が良い。
シャワーを浴びて会社に行く前にスレでも巡回するか。
自宅だと早起きさせられるのと結婚結婚うるさいのがガンw
プログラマ40才限界説って中田先生見てると嘘だなーって思う。
老後のため、まだまだ頑張らねば。
>>862 殻の中の小鳥は10年前はコミケでも
コスプレ多数でジャンルとしても確立してたんだよ。
それはもう凄い人気だった。
あいにくブログやスレを読むまで、ヤマトで例えると
KENJI氏=西崎、栄夢氏と新井氏=松本レイジって
関係だったとは知らなかったよ。
なんか IGDA の勉強会で顔を見てそうだなw
もうそろそろ勘弁してもらえませんか?
ソフ倫関係者に相当恨まれているらしい。 _ コンパイラスレ住人 ― 2009/11/11 04:41 自作自演、乙。 _ KENJI ― 2009/11/11 09:41 そう取られてもしょうがない流れでした。 迷惑をかけましてすみません。 _ (未記入) ― 2009/11/11 09:54 ソフ倫の裏切り者。
巣に帰ってください お願いします 興味ないです
>>875 中田先生は凄いですね。
第2版も面白そうなので買います。
内容も今までの集大成と最新技術を合わせたような感じで、期待が高まる。
念のため本屋で立ち読みして、
JBOOK(ポイントが付く)でクレカで買えばクレカポイントも付くしね。
>>879 有名税でしょうね。しかし謙虚で真摯な方だ。
ブログを読んでもメンヘルっぽさは出しているが、他人の悪口なんて言ってない。
やはりソフ倫という機構の方がこのスレに紛れ込んで人格攻撃に出てるんだな。
言語の大体の仕様と実装方法が解ったから、 この一連の書き込みはもう打ち止めで良いだろう。 相手も迷惑を被っているみたいだし。 しかしそうなるとシーンとなって寂しいか感じがw
大量の巨大ファイルをコンパイルするのに、 あえてマクロで構文を実装、汎用化も高める。 そしてスピードを補うためにmake内蔵、 ホットスポットのインラインアセンブラ化、 大量のラベル解決のためにトライ木をインラインアセンブラで書く。 チト古くさいが理想と実装を両立した言い言語だったな。 13年も使って、まだ色あせないか。 まとめるとこんな感じかな。これでこのお話はお終い。 HPの方で2部を再開してくれたりソースコードを公開してくれたりしたら テンプレ入りしてもいいわだいだったが、本人にその気がないからお終い。
( ゚д゚)ポカーン
885 :
デフォルトの名無しさん :2009/11/11(水) 12:56:33
次の話題は中田先生の本だな。
GCDがLinuxでも実装されたら来るかも? FreeBSDは始まってるわけだが。
ぶり返して悪いんだけど、K氏の言語ってLL、それともLR?
電卓を手書きでつ作りました。次に作るのは何がお薦めでしょうか。
(1)パーサジェネレータを使ってみる。 (2)電卓みたいにその場で計算してしまうんではなくて、構文木を作る。 とか。
>>889 UNIXのbcみたいなプチプログラムの書ける電卓
>>892 機械的にっていうとstackかな?
構文木でやってみるのも違いが分かって良いと思うよ。
……67才でエロゲー会社社長か。好々爺って感じでほのぼのするねw
確かに職業に貴賊はないね。
次はコンパイラ界の好々爺、中田先生の2版の話をしよう。
いいかげんにエロゲだけの話は勘弁してくれ。 どうせならスクリプトのドメイン特有のノウハウをもっと話題にしてくれ。 実装はあんまり興味無いから構文とかの話の方がいいな。
ついでのダベリ話しもダメか。 その上、実装の話は嫌とかどんな我が儘。 ゆとりか? エロゲはともかく実装の話はスレチじゃないだろう。 スレは君の物じゃ無いんだよ。
Erlangを凌駕した超並列言語を実装したいのですが どうすればいいの?
>895 流れで少しだけならわかるけどさすがに脱線しすぎだろ。 実装の話でもいいけど、ドメイン特有のチューニングの話されてもあんまり面白くないからなあ。 それだったら一般的な最適化の話とか>1とかの話の方が良いわけで。 >896 オブジェクトがそれぞれプロセス/スレッドを持つようにしたらどう? 効率悪そうだけど。
>>896 上に出てるgoとlibdispatchを参考にして考えたら?
>>896 FPGA上で極小CPU同士が通信するとか。
凌駕 超並列言語 実装 漠然としすぎているから、定義から始めますか
まず、普通の並列と、超並列はどこが違うか?
超並列マシンを想定した言語ってところですか
FGPAにZ80を入れるプロジェクトって、結構あったね。 現代最大のFPGAにはZ80が何個入るんだろう。 LSI-CやASM80でスレッド間通信すれば、 超並列処理の実行形を自分で作ることも可能だね。 _ KENJI ― 2009/11/12 05:22 ふう、コンパイラスレの方も一段落したみたいです。 もし、私の弁護のために書き込まれた方がいらっしゃたのでしたら ああいう方法は逆効果です。何もせずそっとしておいていただけると嬉しいです
>FGPAにZ80を入れるプロジェクトって、結構あったね。 >現代最大のFPGAにはZ80が何個入るんだろう。 すべてのインストラクションを使うつもりなら 丸ごとCPU入れるのも有りだが 使ってない機能が大半ならスペースがもったいないだけ 自作CPUなり必要な機能部分だけでマルチにする方が効率いいよ
可哀想だしスレチだからもう辞めてやってくれ。
ランビーか次世代のGPUかだな。
ソフ倫様に楯突くとどこまでも追っていくよ。警告だよ。 KENJI、お前のせいでみんなが迷惑するんだよw
うむ。 もしかして、ワンチップ LINKS-2 とか可能かなw
>>907 何の事情か知らないが、とてつもなくキモイ。消えろ。
>>904 マイクロPlanやSweet16みたいなVMのプロセッサとか昔よくあったスタックマシン系の小さいメモリを効率よく回すタイプのCPUを山のように搭載するのもありなのか?
少し昔、INTERFACE紙でFPGAを使ったCPUコンテストをやってたな。 最新のFPGAを使えばJAVAVMを乗せたり、CISCを少量乗せたり、 単純なRISCを乗せたり出来そうだね。もちろんインオーダーで。 そうすれば、コンパイラも色々な可能性が出てくるね。
>>910 ありじゃない。x86系はenter/leaveを実装してるけど、
遅いんで実装時には使われていないけど
本来、関数型言語やoopはstackをよく使い相性が良いよね。
>>911 誤)単純なRISCを乗せたり
正)単純なRISCを多量に乗せたり
>>912 ありならOCCAM系で一つ遊んでみたいぜ
>>913 X: ありならOCCAM系で一つ遊んでみたいぜ
O: ありならTransputer系で一つ遊んでみたいぜ
>>914 一応スレタイくらい汲んでほしいって配慮じゃないの?
916 :
911 :2009/11/13(金) 01:10:53
Intelの80コアの並列プロセッサ、ランビー、次世代GPUで、 コンパイラの歴史が変わるのは決まってるね。 言語もメニイコア用の言語が出来るんだろうね。楽しみだ。 ソフ倫って奴らは本当にクズ揃いだな。
917 :
911 :2009/11/13(金) 08:29:06
いいかげんにしろ
あんまり目くじらを立てるのもどうかと…。 GPUのメニイコア用言語って、 ●Cg(C for graphics) ●HLSL(High Level Shader Language) ●GLSL(OpenGL Shading Language) とかがあるけど汎用性が無いし、 ループの展開を自動割り当てなんてVM、聞いたことがない。 面白い発想だと思うけど。
>>919 GPUはmany coreっていう範疇とは少し違う気がする
演算素子がたくさんあるんだけど、フローの数が少ないと思うの
CUDAに来年JVM搭載されるよ
922 :
911 :2009/11/14(土) 14:28:28
レンホウのせいで世界一の日本のスパコン界も壊滅。
世界一だったこともある、だろw 地球シミュレータよりあとは、頂点も裾野もズタボロじゃねーか。
924 :
911 :2009/11/14(土) 16:40:56
イヤ、報道ではそう言ってたんだよ。地球シミュレーター以降、 AMDのクラスタにさえ負けてる。
925 :
911 :2009/11/14(土) 16:43:04
正確に言うと、 レンホウのせいで世界最高峰レベルの日本のスパコン界も壊滅。 しかしAMDのクラスタにすら負けている状態なので当然か。
世界スパコン選手権脱落宣言ということか。
俺はまだよく分かってないが、12年度完成の日本のスーパーコンピュータが 世界最速になる予定だった。 だけどアメリカがそれを上回る速度のものを先にだす予定を組み 日本はアメリカの次になり国別で2位。 でも世界最高峰レベル。 民主党はそれを中止させたという話ではないの?
~~2006年 アメリカ IBM Blue Gene/L 500TFLOPS 文科省「京速コンピュータつくろうぜ」 民間「おう、世界一目指そうぜ!」 文科省「2千億かかるから民間も半分出せよ」 民間「まあ、しかたねーな」 ~~2008年 アメリカ IBM Roadrunner 1PFLOPS ~~今年5月 NEC「去年3千億の赤字、今年はトントンの予定で 追加の100億が出せそうにない。スマンナ」 (富士通のプロセッサ採用するなら、残ってる意味ないし…) 日立「NECがやめるならうちも降りる」 理研・富士通「白紙から設計し直さなきゃうわああ…」 ~~今年7月 アメリカ 1EFLOPS級スパコンの研究開始 ~~今年10月 中国 天河1号完成(理論値1.2PFLOPSに対して、実測値563TFLOPSのお粗末さ) ~~今年11月 民主党「gdgdすぎるからもうやめれ」 ←いまこのへん
ν速民はその話で散々ファビョってたな 専門家でもないのに、よく「これで日本のIT技術は終わり」なんて自信満々に言えるよ
理研って有名なワカメスープ作ってるとこだよね
科学の発展にスパコンが必要なのは明らかだけど地球シミュレータの利用料高すぎ。 まあ科学予算でスパコンつくってる国が、国防予算でやってる国に張り合えるはずがないんだけどね
932 :
911 :2009/11/16(月) 08:46:41
>>928 ここまでぐだぐだなら、国と大学メンツはおいといて、一度クールダウンする必用があるな。
それだけ金をつぎ込んでNo1に成れないのであれば、メンツも糞もない。
スカラー型とベクトル型でベクトル型に固執する日本。
ピークスピードはベクトル型がまさるがスカラー型の方が平均性能が上。しかも今はピーク時も上。
所詮、莫大な軍事予算を投入するアメリカにはいつまで経っても追いつけない。
アメリカはベクター型と専用機又はスカラー型の組み合わせも考えている
ハードウェア板にスレあるからそっちでやってね。
どうみても老害教授のメンツだよなぁ
アメリカはスピード至上主義でアセンブラでカリカリやるしかなくて それでやっと最高性能だけどけど、 日本はC,Fortranで開発できて使いやすい高性能という方向を 目指しているってことじゃないの?
スカラ型じゃ料金高いスパコンなんて誰も使ってくれないよ。 京速はスカラ・ベクトル型だったからこそ意義があった。
937 :
911 :2009/11/16(月) 16:31:58
>>953 逆じゃね?
スカラー型の方がコンパイラを作り最適化するの大変だぞ。
それより難易度の高い遅延分岐命令のコンパイラも
ゲーム業界ではいっぱい作られてるから問題ないかもしれないが。
この数字コテは何の意味があるんだ
939 :
911 :2009/11/17(火) 03:18:11
>>938 うん。同一人物の発言と解って貰いたいから。
2chのシステム上で可能で、違法じゃないことをやって何か悪いことでも?
KYだなと思っただけ
どうぞ数字コテは続けてください
どうせならNGしやすいようにトリップでもつけてくれよ
>>940-942 911氏の発言はクレイバーで問題ないと思うが。
ソフ倫関係の話もついでだし、当時PC98でLSI-Cやエロゲをやっていた者には興味深い。
941≠942だよ だから数字コテは続けてくださいと言っておろうが
>>941 &
>>942 すまん。
911氏も読みたくない奴はNGして欲しいから敢えてやってると思う。
自分も911氏と同じようにベクター型よりスカラー型の方がコンパイラを作りにくいと思う。
manycoreの実行モジュールのループをVMが管理して、走らせているスレッド単位に割り当てるとかスカラー型に有利な発想もしている。
で、トリップ付けろって話は? 911じゃ他のスレでも引っかかるから迷惑だ。 暇そうだしコテハンも付けて有名になれよ。 自意識過剰さんにはぴったりだ。
>>939 喫煙は違法じゃないがどこで吸っても良い訳じゃないだろ?
948 :
911 :2009/11/17(火) 11:38:07
>>946 有名になる気はないし、自意識過剰でもないよ。
コテハン付けるだけで何でそんなことを推測できるか教えて欲しい。
NG設定にするか読み飛ばすかのどちらかにすれば良いんじゃない?
>>947 禁止されている場所では吸えませんよね。
しかしここでは禁止されてますか?
せめてTPOをわきまえろとでも言って欲しかった。
トリップの意味判ってないのかおい トリップ付けたらそれでNG設定できるの ただの数字コテではNG設定に困るの これで通じますか?
950 :
911 :2009/11/17(火) 12:09:22
解ってますよ。では何でコテハンと読み飛ばしではダメだか、言ってみてください。 禁止はされていませんよね? 禁止されれば辞めますよ。 スレ違いで周りに迷惑をかけますので、あまり長引かせないでくださいね。
禁止されてなけりゃ何でもやる人なのか
放置すべき状態だな
殺人が禁止されてなかったら隣人を刺す人かしら
あいつを殺したくて殺したくてしょうがないんだが、法律で禁止されてるから我慢している。
周りの奴らの方がスレを荒らしてるように見えるよ!
他人の言論を封じ込め、色々なレッテルを貼り見苦しいよ。
>>952 放置して、スレタイに準じたことを話してよ。
>>953 スレを無駄に使うことは禁止されていないけど、殺人が禁止されてなかったら隣人を刺す人?
お前の行動が禁止されてるかどうかだけにかかってるからちゃかされるんだよw
つまり数字コテは荒らしを呼び込むからご遠慮願いますということだな
次スレでも「911」なのかな
>>955 いい加減自演すんなよ
おめーのカキコは丸判りなんだよ
960 :
911 :2009/11/17(火) 12:45:32
>>935 >>937 例えるなら、PS3とXBOXで、XBOXの方が(DirectXと言うのもあるが)作りやすく平均的なスピードを出せるが、
CELLのPS3はカリカリにチューンすれば高速だけど、プログラムを組むのが難しい。
>>957 一番説得力がある。
数字コテの活動 KENJI氏blog無断コピペ ↓ 自称コ○ミ社員 ↓ エロゲ雑談 ↓ 911 最後はテロリズムか。 次スレは911禁止で立てるわ。
なにこのスレの延び方。 …数字コテハンをみんなでいじくってるのか。 スレが無駄だから辞めてくんない?
数字コテハンが黙れば良いと思うよ
…ったく。好きにすれば。 俺も乗せられてスレを無駄図解したぜ。
……オイオイ、いくら何でも911氏の禁止は無しだろう。 まわりが遊んでただけじゃん。 新スレの削除依頼だしといたわ。
911氏(笑
969 :
911 :2009/11/17(火) 13:56:30
良いですよ。 禁止されたのであれば従い、コテ無しに戻るだけですから。
>>969 そうか。俺にはおまいさんに不備が有ったとは感じなかったけどな。
あえて言えば、トリップ付けてればこんな事にならなかっら次からそうしてくれ。
>>969 見えない敵と戦ってただけだよ。スレ全体の意志じゃ無いんだから、
スルーすれば良かったのにバカだな。
こんな時間から2chに張り付き、コンパイラを作るなんて、
バカと天才は紙一重って事だよ。
972 :
911 :2009/11/17(火) 15:04:44
973 :
911 :2009/11/17(火) 15:13:16
975 :
911 :2009/11/17(火) 15:42:55
>>974 サンキュウ。
超並列CPUでのコンパイラの話題の一環のつもりで書いた。
並列度が上がれば上がるほど、有効利用の方法が難しくなるね。
チップ密度が高くなりシングルスレッドだと、勿体ないし、
CPUの一部だけが使われてピンポイント発熱の問題も出てくる。
並列度を有効利用するにはOSとコンパイラのサポートが必用になってくるね。
発熱の問題はセンサーで感知し、OS側でCPUの代替コア操作が必用になってくるね。
超並列コンピューティングが中小企業や家庭レベルまで来るのはもう少しだけど、
OSとコンパイラのサポートは当分先になりそう。
それまでは、企業で複数のOSを同時に走らせ、
物理的なコンピューターの数を削減するくらいしか役に立たなさそう。
こんな事はここにいる人ならすぐ思いつく話だと思うけど。
もうある意味テロと救急車にかけたコテ
俺には君の方が無駄だと思えるんだ。
>>975 動的に、たとえばあなたが言っていたloopの並列化をすればするほど
バス・アービトレーションにより無駄が多くなり、リニアに性能は上がらないね。
特に細かく並列化をすればするほど無駄が多くなるね。
データベースやgoogle等のマルチユーザーアプリケーションや
社内クラウドコンピューティングには有利だね。
すべてをクラウド化する事には災害時やサービス会社の倒産時の面から反対だけど。
>>961 若干怒りますよ。
変人を連れこまないで頂きたい。
>>978 おまえみたいな変人が居るスレは俺等もごめんだ
>>978 こらこら。勝手に変な番号名乗るんじゃない。
このスレの303はお前じゃなくてオレだ。
なんで911はそんなに嫌われっ子なの? 3行でよろしく。
自己顕示欲の塊でスレ違いの話題を延々と繰り返すから 三行もいらなかった
って言うか、みんな性格悪くね~?
プログラマは大抵自己顕示欲が強く他人を排斥するもの。 しかもOSやスクラッチでコンパイラを作っている奴らは自分以外のコードを入れたく無かったりして偏屈。 どうしてわかるかって? 俺がそうだから。
そうゆうのは、ろくでもないプログラムしか作れない奴だけだろ。 色々な人が関わってるコンパイラ、OSはいくらでもある。
電々板に次スレ立てたのは誰やねん!
>>986 OSをつくろうのひげぽん氏やRUBYのまつもとゆきひろ氏、吉里吉里のW.Dee氏
はどうなの?
リソースとみなすか、自分で作り上げる世界の対象とみなすかは人それぞれ。
流れが速くてビックリした。しかし911を除外するのは行きすぎだと思う。
一部の独善的な人達が行動に出ただけだと信じたい。
>>986 偏見の固まりですね。事例を挙げて理論的に反論すべき。でないのなら己の品のなさを自ら公言していると言えよう。
コンピュータの黎明期にも、そして今にもそう言った手法を使い、結果を出している方がごまんと居ます。
>>987 そのスレの303氏の発言を見たが実装のことなど考えていないし
既存のプログラマが積極的に移行する価値がない(混乱する)ように思える。
C99、又はD言語からGCを取り去った言語だ。
未だに現場ではC言語が生き残り、
実用的な言語になるのに、多少泥臭くとも巨大なソースを高速にコンパイル出来ることが必用なのに、
実装に精通していない。
例え完成したとしても使い物にならない可能性が高いと私は思う。
私見なのでいくらでも反論をどうぞ。
なんでこのスレは自らの無知をごまかすような1行罵倒レスと 価値ある情報の2つに分類されてるんだ? あと実装を考えない理想論も多いか。
>>994 ごく一部の実践的コンパイラを作った奴と大多数のバカの集まりだから。
しかも大多数のバカが実権を握ってるという矛盾。
だれも自分の言語を公開しない。仕様すら公開しない。
もし、まぐれでオリジナル言語が出来たとしても、
本に載ってたサンプルを改悪した取っつきにくい文法、
実装も
>>993 の言うとおり
巨大なソースを高速にコンパイル出来ることが出来ない物しか作れない。
だからここから有名になった人は皆無かほんの一部のみ。
>出来ることが出来ない まあ落ちつけ
ウンコを撒く奴も困りものだが 価値ある情報うんぬんをあんまり強調しすぎるのもクレクレと変わらん 受動的な割にスレの状態を気にする男の方って
>>994 今このスレは酷い自演家とそれに付き合える暇人が集ってるだけだ。
恐らく価値ある情報と思ってるのも君だけじゃないかと。
意図の汲めないスレ違い長文カキコを延々とやられたら居なくなる。
早めにトリップ付けるべきだったね。
とりあえず911は病院行け
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。