1 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 11:16:19.37 ID:p6eMVAxc.net] プログラミング言語処理系の開発に興味のある人達のスレッドです。 字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換, CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン, SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化, JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。 意味論に関する話題も歓迎です。 Wikiのまとめページ www6.atwiki.jp/compilerandscriptengine/
237 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 20:41:51.08 ID:DhZyBtDK.net] >>230 ネイティブスタックにデータも置くって事だよね? データスタックは分けておいた方がイロイロ楽だったので列挙 たしかこんなの GC使う様な実装の時の仕分け 実行パスがJITでコンパイルコードと非コンパイルVMコードの行ったり来たりするとき 例外のスタックトレース(これもJIT時のアレコレあり) チープマシンにVM仕込むときアセンブラで書くのが楽しい 最後はちげぇけど
238 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 21:02:43.06 ID:SYpntI8c.net] >>231 自分のVMは典型的なスタックマシンで パラメータスタック(データスタック)とコールスタックは別です。 そのうちデータスタックをヒープ内におくか アセンブリでかかれたほうのネイティブの領域におくかってことです。 ネイティブ領域においたほうが実際のアドレスとVM上でのアドレスの変換がないので 速度としては速いのですが 欠点としてバイトコードからスタックを参照することができません 焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、 基本的になければネイティブ領域におこうかとおもっています これまでつくった経験がないので設計としてどちらがよいかわからずお聞きしました
239 名前:デフォルトの名無しさん mailto:sage [2015/05/10(日) 09:31:50.02 ID:ZQGgJB6p.net] >>232 > 焦点とてしてはそもそもバイトコードからスタックを参照することがあるのかということで、 バイトコードの設計は終わってるんじゃないのか? バイトコードの設計終わってりゃ参照の必要があるかどうかはわかってるだろうし、バイトコードの設計終わってないのに VM の構成考えてるならお前が終わってる
240 名前:デフォルトの名無しさん mailto:sage [2015/05/10(日) 09:50:11.77 ID:YKkUWNQO.net] >>233 その通りわ 出直して来ます
241 名前:デフォルトの名無しさん [2015/05/19(火) 18:50:21.34 ID:a+aajTcz.net] 番兵の文字は utf-8でも16でも32でも-1でいいんですか?
242 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 17:14:03.39 ID:ZsIPeucp.net] 動的型付けってLLVMだとどうやって実装するんだろ
243 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 19:59:28.32 ID:h+kJ9m+3.net] 構文解析+Cに変換して内部でgcc呼んでコンパイルするプログラムはコンパイラって呼んでいいの?
244 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 20:11:15.28 ID:tLjH7MQJ.net] トランスレータじゃねえの
245 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 08:23:11.34 ID:SvdcMd32.net] >>238 変換したCコードを出すならトランスレーターだけどバイナリまで出すならコンパイラーでいいだろ
246 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/28(火) 03:30:13.81 ID:92wk7rzR.net] 果たして文法を仮想化できるか
247 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 08:24:37.58 ID:zh/OeKTd.net] 凄いこと発見したんだけれどもΛの記号は上の尖がったところがルートで 下の二つの棒が辺を表しているんだな
248 名前:デフォルトの名無しさん [2015/08/19(水) 22:05:03.04 ID:caRlC37E.net] 言語非依存の仮想マシンっていうアイデアがいまいち大成功していないように見えるのって なんか理由があるのかな。
249 名前:デフォルトの名無しさん mailto:sage [2015/08/19(水) 22:59:51.18 ID:7Z0FzJPx.net] 落ちてたllvmスレを立て直した 【最速へ】LowLevelVirtualMachine 2【LLVM】 peace.2ch.net/test/read.cgi/tech/1439992758/
250 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/19(水) 23:17:16.98 ID:ynuNSl9L.net] >>242 めちゃくちゃ成功してまんがな。LLVM,clang知らないの?
251 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 00:06:05.42 ID:BI1Ot8hx.net] >>244 実際に成功していても成功していないよ・う・に・見・え・るって話
252 名前:じゃないの? XCodeのコンパイラがllvm,clangだってのは開発者にしか見えないしclangの話だけ聞いているとgccが組み込み機のCPUに対応してたころみたいに派手に活躍してるとは感じられないって事じゃ無いの? [] [ここ壊れてます]
253 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 04:55:31.33 ID:uOqBPetd.net] たぶん外国には、CASL2のような仮想アセンブラを使う、 情報処理試験が無いのだろう 2人の大学生が作ったLLVMに、Appleが飛びついた。 それで、Lattner はAppleに就職した
254 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 11:06:47.70 ID:XXXu8/KU.net] 良く言えば新世代の輝き 悪く言えば発展途上の不安定さ さらに組み込みで言えばカバー範囲の幅広さは犠牲にされがち 将来性でメシが食えるのはごく一部
255 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 11:31:12.43 ID:WmW0wMbd.net] 痛い文章だ
256 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 00:47:20.35 ID:OjRQ25eS.net] マルチメソッドを効率よく実装するにはどのようにすればよいですか?
257 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 01:10:40.39 ID:YG1kZeuQ.net] マルチメソッドって何?
258 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 01:36:14.61 ID:OjRQ25eS.net] OOPの最も基本的な機能です 引数によって、メソッドが切り替わります 多態といいます
259 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 02:01:55.26 ID:YG1kZeuQ.net] オーバーロードのことですか? ではマングリング
260 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 02:21:03.16 ID:OjRQ25eS.net] マルチメソッドはオーバーロードでは無いです 一般にオーバーロードは静的ですが、 マルチメソッドは動的です
261 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 08:00:36.10 ID:WVPITNbu.net] >>251 > 引数によって、メソッドが切り替わります はい?
262 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 08:19:25.57 ID:jJXNOMmM.net] clojureのdefmultiみたいな奴じゃないの?
263 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 11:49:46.23 ID:BYoao/vR.net] 多重ディスパッチのニッチな要求に応えるものか それとも単純な動的バインディングだけの問題なのか
264 名前:デフォルトの名無しさん mailto:sage [2015/08/26(水) 18:36:02.43 ID:XR0u/yGZ.net] マルチメソッドはC++相談室を検索すればなんなのかがわかる
265 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/30(日) 17:45:45.69 ID:bYlp1Mb/.net] >>249 パターンマッチを効率よく行う
266 名前:デフォルトの名無しさん [2015/08/30(日) 19:15:42.50 ID:nhXJHOe7.net] 型を連想配列やトライ木で管理すればO(1)
267 名前:デフォルトの名無しさん mailto:sage [2015/08/30(日) 20:08:17.93 ID:brcjELIg.net] >>259 clojureはソレだね
268 名前:デフォルトの名無しさん [2015/09/17(木) 12:38:19.48 ID:mHCGeegj.net] 中間言語の設計に関するノウハウとかアンチパターンとかが書かれた本誰か知ってる? LLVMとかP-codeとかJava VMとか、あるいはKnuthのMIX/MMIXみたいな機械語に近いレベルの言語を ソフトウェア実装すること前提に設計する場合について知りたい。 今言語設計してて、そろそろ構文解析できそうだから学んでおきたいんだけど。
269 名前:デフォルトの名無しさん mailto:sage [2015/09/17(木) 19:56:34.99 ID:7ftMaB4B.net] 最初はネイティブに落とした方がいいぞ 中間言語とか遠回りしてたらアホみたいだぞ
270 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 15:07:01.58 ID:QAQ6VXx0.net] そんな物他人に教わるくらいならおとなしく既存のを使っとけ
271 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 20:35:24.73 ID:F4ynHS7Z.net] 本として出して需要あるか?もしかしたらサーベイ論文なら探せばあるかも
272 名前:261 mailto:sage [2015/09/18(金) 21:16:12.07 ID:ArWsl8Ey.net] >>262 素直にコンパイル出来ない言語を設計してるので(clispのような)、snippetの表現をx86/amd64表記にする意義が薄いんですよね。 >>263 凝り性なもので。 >>264 一応ciniiは一通り眺めたけど、中間言語の設計に関する論文って無いんですよね。 素直に
273 名前:「中間言語」で調べると自然言語の翻訳に使う方が大量に引っかかってつらい…… [] [ここ壊れてます]
274 名前:デフォルトの名無しさん mailto:sage [2015/09/18(金) 22:17:11.93 ID:i7DEL3du.net] >>265 動的型付け必須系? ならErlangの論文とか資料あさるといいかも
275 名前:261 mailto:sage [2015/09/19(土) 09:19:04.79 ID:YlOPp2hb.net] >>266 swiftのように演算子をユーザー定義出来て、 c++のように同名異引数の関数を定義出来て、 Lispのように引数間のカンマが要らず、 Rubyのようにカッコを省ける そんな言語を設計中です。 それらの両立のために実行中に文法を書き換えて構文解析器を再構成するという手法を採ってるので、コンパイル出来ないんですよね…… clispのリードマクロを文脈依存に拡張したものだと言えば大体あってるかと。 ちょっとErlang関連の資料を見てみます。
276 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 10:26:16.30 ID:7hgo9IJ4.net] >>267 列挙してあることはシンタックス上のことで全部コンパイル時に静的に解決出来そうに見えるけど無理なの?
277 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 11:29:33.20 ID:I9CWDfzW.net] >>267 コンパイル時の都合だよね? VMの設計とはなんの関係もなさげなんだけど
278 名前:261 mailto:sage [2015/09/19(土) 12:48:32.00 ID:YlOPp2hb.net] >>268 今考えてる言語では、演算子の扱いが関数を引数の場所に関して一般化した第一級オブジェクトなので 前置引数の個数や後置引数の個数は実行してみるまで分からないので コンパイル時の識別子を用いた構文解析は無理です。 前置演算子と一引数関数が別物って変だと思ったのでそうしました。 c++風に書くと、こんな感じのが通るイメージです。 g = [](a,b){return a - b;}; if (複雑な式) { f = [](a|b,c){return a + b + c;}; // (a|b)で前置引数としてa、後置引数としてbと示すものとする。 } else { f = [](a,b|c){return a + b + c;}; } // gは2引数演算子、fは3引数演算子。 // ここではgの優先順位はfより低いものとする(c++での表現方法が無いので)。 // カッコやカンマを省いてある場合、上の条件のどちらが走っても構文上は受理される。 // 複雑な式の結果によって、これはg(1, f(2, 3, 4))及びg(f(1, 2, 3), 4)のどちらにもなりうる。 cout << (g 1 2 f 3 4) << endl; >>269 そういうわけで一度に全部読み込んでコンパイルしてから実行するという事が出来ないので、 折角だからVMも設計しようと思った次第です。 ASTから中間言語に落とすとcontinuationの実装が楽になるので。
279 名前:デフォルトの名無しさん [2015/09/19(土) 13:15:38.32 ID:hJISNbn0.net] g 1 2 f 3 4は構文解析後にはどういうツリーになっているの? フラットなままで構文解析終えて実行時にまたプチ構文解析をするの?
280 名前:261 mailto:sage [2015/09/19(土) 13:24:30.87 ID:YlOPp2hb.net] >>271 字句解析でばらばらにしてLL(1)でカッコの対応等について解いた背の低い木にして、その後実行時にLR(1)で式毎に再度解析するので > フラットなままで構文解析終えて実行時にまたプチ構文解析をするの? これであってます。
281 名前:デフォルトの名無しさん mailto:sage [2015/09/19(土) 14:10:09.60 ID:I9CWDfzW.net] おもしろい事かんがえてるなー ElixirとかBEAM-VMとか参考になるんじゃねぇの?
282 名前:261 mailto:sage [2015/09/19(土) 15:18:02.65 ID:YlOPp2hb.net] >>273 高信頼・並列分散に特化したVMのようにあちこちで言われてるみたいですね、ErlangのBEAM-VM. そう考えるとLLVMは解析容易性特化、JVMはVM自体の実装容易性特化といった所でしょうか。 VMを作るなら何かに特化させるべきなような気がしてきました。
283 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 00:52:44.57 ID:m4tWKm8w.net] 演算子に限定する意味は何だろう cout << (g 1 2 f 3 4) << endl; こんなの一見して何してるのか判らないしいっそ構文ごと第一級にすればいい そもそも実行時に構文解析機まで走らせる重い処理系って必要なのかなあ クロージャじゃあかんのかね
284 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 09:22:45.62 ID:tHziPwGz.net] この程度のアイデアしかないようじゃ才能ないわな
285 名前:261 mailto:sage [2015/09/20(日) 11:27:11.87 ID:oZCwg6h7.net] >>275 今作ってる実装だと構文はhead, body, precedence, directionをキーとするオブジェクトの配列になってるので 構文も第一級オブジェクトのインスタンスになっています。 説明不足ですんません。 コードは現在こんな感じ。もし読みたければどうぞ。 https://gist.github.com/pixie-grasper/d07388493204a5e370a2 debug-printが多かったりコメントが少なかったりしますが…… > そもそも実行時に構文解析機まで走らせる重い処理系って必要なのかなあ 必要性については私にはまだ分かりませんが、 私は昔レキシカルスコープもクロージャもポインタも継続もマクロも無い素晴らしく酷い言語(古いBASIC)で全てを考えていたので、 その経験から、どんな機能も使い慣れると必要になってくると思っています。 >>276 私馬鹿なもんで。 いいアイデアがあったら是非とも実現してくだされ。
286 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 11:30:35.69 ID:O6Xw3ijC.net] >>275-276 俺にも意味があるようには見えないけど、俺の知らない用途があるのかもしれない とにかくわからないならスルーしとけよ
287 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 18:18:01.68 ID:tHziPwGz.net] >>277 絶対真似しないと約束するなら教えてもいいぞ
288 名前:261 mailto:sage [2015/09/20(日) 18:52:58.39 ID:oZCwg6h7.net] >>279 じゃぁ真似せずに似たようなものを考えつくまで考え抜きます。 私馬鹿なので。
289 名前:デフォルトの名無しさん mailto:sage [2015/09/20(日) 20:15:16.31 ID:9UpT3677.net] >>274 BEAMは引数のMatchで分ける処理がVMにあるんでそういう意味でオモシロイコト -> BEAM参考になるんじゃねぇのって話です
290 名前:261 mailto:sage [2015/09/20(日) 21:59:23.12 ID:oZCwg6h7.net] >>281 調べてみました。 BEAMだと実行時にモジュール名、関数名、及び引数の数を指定して呼び出す関数を同定するんですね。 実引数の数がコンパイル時には分かるから命令語に引数の数を組み込めるのだと思いますが…… 今考えてる言語だと、実引数の数が自明じゃないので使いにくい気がします。 助言、ありがとうございます。
291 名前:デフォルトの名無しさん [2015/09/21(月) 19:55:02.85 ID:x6IKJHaI.net] スクリプト型の言語って実行時にコンパイル(構文解析?)が発生するから、コンパイル型の言語より遅いのですよね。 では、アプリケーションの起動時にスクリプトを読み込んだ後のパフォーマンスは、スクリプト型もコンパイル型も大差ないのでしょうか?
292 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 20:31:03.01 ID:XzxcjOEi.net] 大差あります
293 名前:デフォルトの名無しさん mailto:sage [2015/09/21(月) 21:42:55.66 ID:LoRahTLC.net] >>283 「スクリプト型の言語」やら「コンパイル」やらが何を意味してるのかにも依りますが、 よくある速度重視の構成だと、読み込み時に構文解析や意味解析、中間コード生成を終わらせて 実行時に中間コードを(1)実行可能バイナリに変換するパターンと、(2)仮想マシン上でエミュレートするパターンとの二通りがあります。 (1)の場合は変換処理そのものがそれなりに重く、 しかも高度な最適化を掛けるとそれ自体に時間が掛かってしまうので 最適化は殆ど掛けられずコンパイラ型言語の2〜3倍は遅くなりますし、 (2)の場合は1命令実行するのに命令を読み込んで比較してジャンプして、 とCPUがアナログ回路上で並列処理してる計算を逐次的に実行するのでかなり重くなります。
294 名前:デフォルトの名無しさん mailto:sage [2015/09/22(火) 13:12:55.44 ID:f7gaXzgp.net] 比較にならない スクリプトは柔軟性重視なので速度を出すためのチューニングは後回しにされる 起動時にある程度最適化できるものもあるが、 最適化のために数十秒〜数分かけたりもできない また実行直前にならないと決まらない内容も多く無駄になってしまう そもそもコンパイラ型で速度重視のソフトを作る場合は 開発者自身やライブラリがメモリレイアウトなど制御し効率を考慮したコードを書く(書ける)
295 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 18:30:15.12 ID:TpmuUHaP.net] 自分でC言語っぽいスクリプト言語とかデータ形式作ってみたけど、どうだろ? ちなみにスクリプト言語はSC3_Compilerってのに入ってるが。 ttps://osdn.jp/users/mitubasa/pf/BuildContainer/files/
296 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 01:18:18.90 ID:4Rxec7m6.net] >>283 「スクリプト言語」の定義は難しいが、おおむね (1)(ユーザーから見て)明示的なコンパイルというフェーズを経ずに実行される (2)変数に型がない (3)実行時に行える処理の柔軟性が高い(例えば関数定義など) という特徴を持つ言語を指すことが多いだろう。RubyやPythonなど で、それぞれの特徴が、実行速度を遅くすることに貢献する。 (1)→ 最適化に時間を割けない (2)→ 実行時に、変数が指すオブジェクトの種類を調べる処理が毎回入る。 (3)→ これを実現するためにバイトコードインタプリタで実装されることが多く、遅くなる もちろん厳密な定義ではないので、あくまで「おおむね」という話。 Javascriptみたいな変態事例もあるし断定的なことは何も言えない 言葉の定義の論争は不毛
297 名前:デフォルトの名無しさん mailto:sage [2015/09/26(土) 11:28:42.59 ID:GpPO3Mdd.net] >>287 (一切実行せずに)サラッと眺めた感じだと 字句解析くらい生成系やライブラリ(flex++やboost::spirit等)に頼ってみたらどうかなってのはあるかな。 変数名としてnCount(整数,カウント)の代わりにixArg(添字,引数)を使うとか 細かいところは幾つかあるかも知れんけど、それなりに読みやすいと思うよ。 stdafx.cppって名前で使ってることは察したけど、VS使うんなら プロジェクト開くのに必要なファイル(.sln等)を入れるとか、 或いはMinGW/Cygwin/msys2なんかのUnix系ツールでさくっとビルドできるようにcmakeを書くとかしておくと 評価する人が増えると思うよ。
298 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:40:28.41 ID:Qeh3kLaJ.net] おれバカで不勉強だから知らなかったえけど、最近の処理系って状態コードのお持ち帰りをしてくれるんだね 手続きAを呼んだ直後にグローバルな状態変数に何がしかの情報が入ってる(何も起きなかったとか、フックして停止させるの推奨みたいな) 面白いな〜 データを加工して返すー>関数(関数内で処理のフローに関係する記述は禁止) 処理のフローに関係するー>手続き(状態コードを標準で返す) 複数個所使うで同じ様な処理をまとめるー>サブルーチン(スタックフレームの無いローカルな手続き) プログラムを組み上げるときの構造や構成に行儀のよい作法がないと プログラムのどの時点でどのデータがどの構成や状態にあるのか把握ができなくて発狂するww で、なんでも記述できる自由度の高い処理系ほど読解困難な発狂プログラムが出来上がると
299 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 23:32:01.45 ID:F9TK8Py4.net] >>290 状態コードのお持ち帰りって何?
300 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 02:07:01.38 ID:mXRqVUnf.net] 何を言ってるのかさっぱりワカラン…
301 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 02:50:21.48 ID:rErEEAIK.net] クロージャのことかな・・・ 最初Smalltalkやlispの環境のことかと思ったけど
302 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 10:51:51.85 ID:SQrzN3D5.net] coroutineだったりして?
303 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 13:56:11.40 ID:6X8NqiS5.net] 継続じゃないの 俺は気持ち悪いとしか思わんけど
304 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 14:17:39.64 ID:ztjfyQaD.net] なんでも記述できる自由度の高い言語ほど……
305 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 22:40:32.31 ID:KmJ2byjS.net] (PEEK/POKEで)なんでも記述できる自由度の高いBASIC言語はいかがですかー
306 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 11:46:38.15 ID:YlJ45J+b.net] 文字通りステートコードの事じゃね? Unixが何十年も前に確立してるけど # make && make install
307 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 09:14:44.03 ID:yW9ExgL4.net] なんか意味不明なこと書いてすいません ステートコードで正しいと思います。 バカ正直に戻り値だけと思い込んでいたので さっき、vs2013のc++起動して、構成プロパティでx64とアセンブラコードの出力に設定して c++の入門書を買うか悩むこと5分 lispの実装でググって15分 考えるのやめて現実逃避中orz 一番自由度の高いのはアセンブラ(当たり前だけど) ただし、全て自己責任(自由度が高い=自己責任ですよ〜) なんか、適当なスクリプト言語が作れないかなと
308 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 16:02:56.87 ID:e7nwHPrn.net] >>299 「自由度」の定義は何?確かに「そのマシンで出来ることがなんでも記述できる」ならアセンブリほぼ一択だけど、 例えば「その言語のプリミティブと同等な機能を作れる」ならCommon Lispは自由度が高いし(マクロ最高!)、 或いは「その言語のプリミティブの機能を別な機能に変更出来る」ならTeXは自由度が高いよね(TeXの\endプリミティブが、なんとLaTeXでは違う機能に置き換わってる)。 例えば「その言語の文法を変えられる」って意味ならswiftやprologなんかは自由度が高い例になるだろうし、 仮にそれらの意味であればアセンブリ言語なんて自由度の欠片もない言語の一つになるよ。 適当なスクリプト言語が作りたいならHQ9+かbrainfuckか何かを作ればいいと思うよ という冗談はさておき、そのスクリプト言語で何をやりたいかによって色々変わってくるよね。 テキスト処理ならgrepやsed、awkやperlなんかは参考になるだろうし、 統計処理や数式処理なんかはRやmathematicaが有名所かな。 読みやすさ重視ならある意味ではCOBOLやBASICが、別な意味ではpythonやrubyが「読みやすさ」を重視した言語として有名だし とにかく簡単な文法にしたいならlispやpostscriptなんかが興味深い例ではある。 特殊用途向けの言語が作りたいか、汎用的な言語が作りたいか 汎用的な言語であれば手続き型か関数型か論理型か、関数や型はファーストクラスオブジェクトか、どんな文法か。 特殊用途向けの言語であればどんな用途で使うのか。 ノベルゲーム制作の補助向け(NScripter/吉里吉里等)なのか、文法記述用(regex/LR/PEG等)なのか、画像や構造を記述するもの(svg/postscript等)なのか。
309 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 16:27:55.78 ID:xsIpokn9.net] >>300 丁寧な指摘ありがとうございます。 実際にVS2013をインストールしc++の入門を開いてブレイクポイントーデバッグーアセンブラの表示までたどりつきました 実際のアセンブラのコードを見て少し頭を抱えたしだいです int a,b,c; a=1; b=a/2*2; たったこれだけのコードのアセンブラ出力も、符号拡張命令後の処理の意味が汲み取れませんでした 取り合えず高度な目標はありません NanaTerryなるアイデアプロセッサを使ってみたらとても使い心地が良かったので これをシンプルな機能に絞って実装する、そんなプログラムやアイデアを綴るTEXTを扱うtoolを 作りだす為の仕様に絞って色々検討しています。 低機能なlispっぽいなにかになる予定 最近はcコンパイラの実装まで大学のカリキュラムにあると聞いたので凄く刺激を受けました 実際c++の入門などを読んでも言語の仕様に何等かの違和感があるのです
310 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 18:59:19.08 ID:ATBGiUj9.net] こいつ覚えたての言葉を使いたいだけのワナビーだろ おそらくスレ違いなのにも気づいてないし相手すること無いぞ
311 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 19:02:17.18 ID:qifYD3R8.net] パラドックスが始まった
312 名前:デフォルトの名無しさん [2015/12/09(水) 21:43:53.38 ID:yqcBT5mk.net] CでCを作るのと、アセンブラ使ってCコンパイラを作るのと、 どっちが良いかな?
313 名前:デフォルトの名無しさん mailto:sage [2015/12/09(水) 23:21:35.10 ID:0CTdrHjr.net] CでCを作る時間をCでXを作る時間に充てるのが良い
314 名前:デフォルトの名無しさん [2015/12/10(木) 03:57:42.43 ID:zEe7T/5S.net] >>1 デュエル・マスターズ Android版 ,i-OS版、公式 dm.takaratomy.co.jp/extra/dmapp/entrygate_ds/ デュエル・マスターズ対戦CGI ex https://web.archive.org/web/20150809154946/www53.atwiki.jp/dmsuishinparty/pages/314.html デュエル・マスターズ(デュエマ)DM ONLINE 1.8a / VanGuard ONLINE 1.5a https://web.archive.org/web/20150809160254/uhyohyohyo.sak ura.ne.jp/hsp.html ヴァンガード専用ネット対戦ツール【 VanGuard Online 】 https://web.archive.org/web/20150809155032/kiimaa.jugem.jp/?eid=61 「カードファイト!!ヴァンガード」のネット対戦ができる公式オンラインゲーム「Cardfight!! Online」 2015年冬スタート https://web.archive.org/web/20150809153724/supersolenoid.blog63.fc2.com/blog-entry-6886.html 遊戯王 Automatic Dueling System https://web.archive.org/web/20150809164855/www3.atwiki.jp/ads-wiki/pages/20.html 遊戯王 デュエル・オンライン https://web.archive.org/web/20150809171527/www31.atwiki.jp/vipdo/pages/15.html https://web.archive.org/web/20140628005202/do.yugioh-portal.net/ WIXOSS WEBXOSS webxoss.com/about_en.html webxoss.com/DeckEditor/ BG(ボードゲーム)Engine https://web.archive.org/web/20151209080842/https://bgengine.net/ https://web.archive.org/web/20151209172205/14owl.hateblo.jp/entry/2015/12/09/011234 アプレンティス マジック:ザ・ギャザリング(MtG)オンライン化 homepage1.nifty.com/Q_Q/ap.html https://web.archive.org/web/20151202202725/homepage1.nifty.com/Q_Q/ap.html
315 名前:デフォルトの名無しさん [2015/12/10(木) 04:01:27.83 ID:zEe7T/5S.net] 【 オンラインTCGエディター 】 >>1 ,>>306 デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。 例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持
316 名前:っておりながら、 当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。 既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。 デュエマ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、旧ガンダム・ウォー、ライブオン、ディメンション・ゼロ、シャーマン・キング、カードヒーローなど のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。 マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。 WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。 設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。 個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。 ↓ エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。 ↓ 遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。 バトスピ、ヴァンガ、デュエマなど発売済みゲームソフトが存在してるTCGはベンダーに研究させる。 ↓ 各社TCGを再現するテストプレイ ⇒ 更に改良や修正。 ↓ 機能制限した下位版を制作しても原則として発売せず + 上位版デュエリ−グ用でサーバー稼動。 ↑ 下位版を仮に発売した場合の改造および商用利用には、別途で当社との契約が必要。 さ〜て、インド人ベンダーと日本人の翻訳兼PGを見つけよっと!ww http://wc2014.2ch.net/test/read.cgi/entrance2/1449623194/-18 [] [ここ壊れてます]
317 名前:デフォルトの名無しさん mailto:sage [2015/12/21(月) 02:59:48.04 ID:4Mx5VRPH.net] >>304 BCPLとかCの生まれをもう一度考えてみると良いんじゃ無いかな? 凸記法で言語の生成を僕が読んだのはBit別冊の何かに書かれていたPlan言語の解説だったけど、ああいう記法って今は使わないのかな? ↑ある言語を生成するのに必要な言語処理系を凸と凹で組み合わせて表記してある奴なんだけど、アカデミックな世界でなんて言う方法かしらないのでこう書いてます。
318 名前:デフォルトの名無しさん [2015/12/21(月) 21:20:55.44 ID:6WzMDceb.net] 乱数の発生のさせ方は、クロックを利用するものだけかな? 色々ありそうだけど、調べても良くはわからなかった。
319 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 01:30:01.23 ID:P1DQx2Lt.net] 時刻ではなく、プログラムを起動してから経過した時間を取得できます。それを種にする
320 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 01:34:09.74 ID:P1DQx2Lt.net] GetTickCount function システムが起動してから経過したミリ秒を取得 Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days. https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408%28v=vs.85%29.aspx
321 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 14:10:11.43 ID:dkSLpih8.net] >>309 see
322 名前:dを何にするかって話? /dev/randomとか [] [ここ壊れてます]
323 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 14:11:39.64 ID:dkSLpih8.net] >>310 >>311 プログラムやシステムの起動直後に実行するコード、プログラムではほぼ似た値を使うことになってしまう。
324 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 16:20:29.14 ID:FIUTNb/j.net] >>309 ハードウェアのADコンバータ経由(アナログなノイズジェネレータからADコンバータで拾ってくる奴)で乱数作るとかもあるけど、計算機の乱数は種から一意に求められる様な物が一般的だよ で種(seed)の値に現在時刻をつかったり、ユーザの挙動(キー入力やマウスの位置)を素にしたりして見かけ上の乱数性を生成しているのが普通。
325 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 18:18:28.54 ID:qPz15M1W.net] 専用ハードがあってもいいかと‥ 最近のCPUには載っているそうなんだが peace.2ch.net/test/read.cgi/tech/1192628099/337
326 名前:デフォルトの名無しさん [2015/12/22(火) 20:55:17.79 ID:1duNN4a3.net] 乱数表をあらかじめ組み込んでおいて、起動からの時間により、順繰り 読んで擬似的に乱数を発生させる方法はありかな?
327 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 22:21:41.42 ID:HbMu76eU.net] ねーよ
328 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 22:39:41.89 ID:S5fGjlFA.net] >>316 乱数表に見えるってだけで良いなら擬似乱数列使えばそれで済む話で わざわざ乱数表全体を組み込む意味がない
329 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 02:10:18.76 ID:o2v4fYco.net] 何でそんなに起動からの時間が好きなんだよw 女官じゃないぞ
330 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 14:48:59.82 ID:1VnhNGH+.net] 大昔の光栄ゲーでは起動時に RETURN を叩いてもらってそのタイミングで乱数初期化してたw
331 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 23:33:07.59 ID:Uv2klDgG.net] std::random_device
332 名前:デフォルトの名無しさん [2015/12/25(金) 21:30:55.13 ID:R/sO38u1.net] ユーザーのマウスの動きを、ミッキー単位で取得して乱数を...と 思ったら、プログラマはマウスを嫌がり、あまり使わないで tabキー多用する奴も多かったからな。別な手を考えた方が良いかな?
333 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 22:26:16.56 ID:DXbDvcZw.net] なあ、今時のCPUはランダムデバイス持ってることくらいは知っとこうや 幾らくたばりかけてる爺でも
334 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 08:32:40.01 ID:CDX6E7Ry.net] なあ、全員が今時のリッチなCPUを使う訳じゃないことくらいは知っとこうや 幾らゆとりのアホでも
335 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 12:19:14.32 ID:NrOPRYuI.net] CPUを明示して相談しなよ 知らんだけで乱数用のエントロピー生成命令持ってるかもしれんし IntelならOSがサポートしてなくてもIntel DNRG使えばいい
336 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 13:31:50.28 ID:4htfJ0fo.net] 俺の頭の中のcpu(10MHz)が・・・
337 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 13:55:58.15 ID:oIXuKyHb.net] リアルタイムで動画処理、画像認識、空間認識、音声認識その他諸々を全部やってのけるのって地味に凄いよな 時間あたりの消費エネルギーも、要求エネルギーが2000kcal〜4000kcal/dayとしてもおよそ100W〜200Wで非常に効率が良いし