[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2ch.scのread.cgiへ]
Update time : 07/24 14:25 / Filesize : 172 KB / Number-of Response : 672
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

「コンパイラ・スクリプトエンジン」相談室16



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/

2 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 11:18:41.91 ID:p6eMVAxc.net]
誰も立てないので立てた。

需要なければこのまま放置ということで。

3 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 11:19:36.24 ID:b1uNa6xY.net]
前スレ
「コンパイラ・スクリプトエンジン」相談室15
peace.2ch.net/test/read.cgi/tech/1296214398/

4 名前:デフォルトの名無しさん mailto:sage [2014/07/20(日) 13:22:32.46 ID:6KMBfrlQ.net]
前スレ落ちたの気づかなかった>>1

5 名前:片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 mailto:sage [2014/07/22(火) 13:31:35.08 ID:itpt16Wl.net]
というわけでCaperをRubyで使えるようにしなきゃいけない。。。

6 名前:デフォルトの名無しさん mailto:sage [2014/07/23(水) 00:33:25.56 ID:6DA6PhLu.net]
最近はみんなLLVMに集まる流れなのかな

7 名前:デフォルトの名無しさん mailto:sage [2014/07/24(木) 10:32:17.75 ID:w2uo6knu.net]
お手軽に言語作ってみますた なら
バックエンドは インタプリタか JVM かLLVM のどれかになるべ

あとは JSへのトランスレータか
意外に選択肢多いな

8 名前:片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 [2014/07/27(日) 13:36:28.20 ID:YSqiGYKe.net]
jonigataさん、Rubyのサポートを追加しました。

9 名前:デフォルトの名無しさん mailto:sage [2014/07/27(日) 21:59:50.89 ID:aStfmk5+.net]
JVM上で動く言語をガチで作ってる人ってバイトコードを直接出力するコンパイラ作ってるのかな。
JVM上で動くエンジン用のコードじゃなくて。

10 名前:デフォルトの名無しさん [2014/07/27(日) 22:00:59.03 ID:UgznbaEB.net]
そりゃそうだ。



11 名前:片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 mailto:sage [2014/07/28(月) 14:12:21.53 ID:DUvGztkP.net]
jonigataさんと連絡取れない。。。

12 名前:片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0 [2014/07/28(月) 16:55:40.10 ID:SnQo0cO4.net]
caperにRubyサポートが追加されたよ

13 名前:9 mailto:sage [2014/07/28(月) 21:54:34.37 ID:zEAFz2i4.net]
>>10
やっぱりですか。
ただ目標がゲームエンジンで将来的にスマホも視野に入れると直接バイトコードってのもどうかという気もします。
ただクッション入れると速度的にどうなんだろう、悩ましい。

14 名前:片山博文MZ次期CEO ◆T6xkBnTXz7B0 mailto:sage [2014/07/29(火) 01:15:58.91 ID:qgm2mseY.net]
>>1
もっと参考URLを置いてほしいぜ

15 名前:片山博文MZ次期CEO ◆T6xkBnTXz7B0 mailto:sage [2014/08/01(金) 11:03:08.58 ID:fIgY7BmT.net]
caperにPHPサポートが追加されたよ!

16 名前:デフォルトの名無しさん mailto:sage [2014/08/01(金) 15:28:56.80 ID:ARdX3qTq.net]
>>15
サポートヨロっていわれてんじゃん、がんばれ

17 名前:デフォルトの名無しさん mailto:sage [2014/08/02(土) 16:23:44.47 ID:jWpcYE6C.net]
>>13
俺は前に自作スクリプト→Javaソース→javassistでバイトコードに変換と
やってたけど遂に完成させずに投げてしまったxp

18 名前:デフォルトの名無しさん mailto:sage [2014/08/03(日) 01:07:00.19 ID:MH7BOvZw.net]
つかC並にJVM上で低レベルに動く言語が・・・ってどっかにありそうな気がする。

19 名前:デフォルトの名無しさん mailto:sage [2014/08/03(日) 12:20:45.13 ID:q8fBalr7.net]
ちょっと何言ってるかわかりませんね

20 名前:デフォルトの名無しさん mailto:sage [2014/08/03(日) 16:19:28.19 ID:/m+nZnOr.net]
>>18
日本語でおk



21 名前:デフォルトの名無しさん mailto:sage [2014/08/04(月) 00:28:33.88 ID:5WaCX4TM.net]
JVMのバイトコード吐くライブラリってもあるけど
こっちはバイトコードの知識必須
言語仕様だけ考えて満足しようぜw

22 名前:デフォルトの名無しさん mailto:sage [2014/08/04(月) 02:12:43.16 ID:BTc2ko+M.net]
どうせ中間言語に落とし込むんだしバイトコードくらい余裕だろ

23 名前:デフォルトの名無しさん mailto:sage [2014/08/08(金) 03:06:15.46 ID:W/TCi66w.net]
www.buzzword.jp/img/face10.png

24 名前:デフォルトの名無しさん [2014/08/08(金) 08:30:38.85 ID:pWDxpd5M.net]
guro

25 名前:デフォルトの名無しさん mailto:sage [2014/08/08(金) 08:47:25.07 ID:19ZqYpH8.net]
>>23
あんた誰?

26 名前:デフォルトの名無しさん [2014/08/08(金) 12:06:16.40 ID:MJ5RFc2h.net]
>>13
まず簡単なのを作って、次は作りなおせばいいじゃん。

27 名前:デフォルトの名無しさん [2014/08/08(金) 12:31:17.41 ID:U1h/L2RD.net]
>>7
最近はasm.jsみたいなのもあるしね。

28 名前:デフォルトの名無しさん mailto:sage [2014/08/08(金) 16:22:46.37 ID:F5/v+VI2.net]
>>23はウィルス注意

29 名前:デフォルトの名無しさん [2014/08/12(火) 11:48:49.30 ID:AbgWlUoH.net]
マークスイープのようにGC以外のところでGCを考えずに済み
参照カウントみたいに最大停止時間が短いGCってある?
速度は問いません

30 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 12:44:46.12 ID:A03 ]
[ここ壊れてます]



31 名前:Bg3Wq.net mailto: GCアルゴリズム詳細解説
http://seesaawiki.jp/w/author_nari/d/GC

なんと日本語!! …俺はまだ少し読んだだけだが
[]
[ここ壊れてます]

32 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 12:44:50.65 ID:+sDF17YZ.net]
>>29
実装簡単なのだとCOPY GCかぬ?
これに寿命を意識すると世代別GCに発展したのがある。

コレより先は実は最先端だったり

33 名前:デフォルトの名無しさん [2014/08/13(水) 00:05:07.82 ID:5Fn9SOB/.net]
>>31
コピーgcはやっぱメモリ効率がーんー
今のところ遅延マークスイープをなんとか使おうかと思うけどーなー
悩ましい。。。

34 名前:デフォルトの名無しさん mailto:sage [2014/08/13(水) 00:29:26.50 ID:IvuVUKO/.net]
>>32
EdenだけCopy GC,OLDに行ったらMarkSweepとか色んな掛け合わせもあるみたいだね

35 名前:デフォルトの名無しさん mailto:sage [2014/08/14(木) 01:15:17.94 ID:nk1V5Hss.net]
mostly-concurrentマーク&スイープGCは?
1. ミューテータを止めてルートセットをマーク
2. ミューテータと並行に別スレッドでマーク
3. ミューテータを止めて再度ルートセット+残り全部をマーク
4. ミューテータと並行に別スレッドでスイープ
ってやるやつ
ライトバリアがいるからGC以外のところでGCを考えずには済まないけど (そのへんは世代別も一緒だが)
最大停止時間は短いと思うよ

36 名前:デフォルトの名無しさん [2014/09/20(土) 16:42:37.06 ID:Vt9JAeIo.net]
caperが改善されて大規模なパーサーでも
早く生成できるようになったようです。

37 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 17:18:58.94 ID:INF4B04G.net]
あんまりでっかいの書かないんで今まで困った事ないのだが、吉報には違いなかったりするのでお礼を述べさせて貰います、ありがとう。
>>Thanks for ジョニガタさんとMZさん

38 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 00:08:58.31 ID:+YftySIr.net]
やること
★Ruby RaccとCaperの比較レビュー。
★CaperでCSVパーサーの作成。
★CaperでXMLパーサーの作成。

39 名前:sage [2014/09/26(金) 04:19:50.66 ID:VUi+/UsP.net]
winXP visual studio 2010 expressで
antlr4の導入できた方いらっしゃいませんでしょうか?

40 名前:デフォルトの名無しさん mailto:sage [2014/09/26(金) 10:04:23.12 ID:8tItaSRz.net]
ANTLRWorks とか言うヤツはダメなん?



41 名前:デフォルトの名無しさん mailto:sage [2014/09/27(土) 01:39:11.71 ID:oNml76ai.net]
バッチファイルみたいなのに定義ファイルかませば出せると思いきや、
JAVAしか出てこない。。。
英語よく読めない

42 名前:デフォルトの名無しさん mailto:sage [2014/09/27(土) 01:53:39.94 ID:PIGMRS01.net]
akiramero

43 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 13:57:53.54 ID:fouZ38nR.net]
やっと簡単な電卓インタプリタができたー

44 名前:デフォルトの名無しさん [2014/10/12(日) 15:26:51.34 ID:s0CJmRCd.net]
おめおめ
四則演算と簡単な制御構造が実装できると
あとは応用だから
扱う型の種類が増えない限り楽に拡張できそうだね

45 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 01:35:36.78 ID:UPM0IlOC.net]
演算子って四則演算以上のことやらすと必ずそいつが決めた優先順位に縛られて破綻するし
電卓ならLISPの(+ 1 2 3 4 5)みたいに演算子相当が無くてオペランド側をいくらでも増やせる構文の方が楽

46 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 05:56:05.61 ID:irMeVnbo.net]
それも

47 名前:そいつが決めた優先順位なわけだが []
[ここ壊れてます]

48 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 07:29:43.65 ID:Ww99Jszp.net]
LISPはLISPで解析器に都合の良い構文だと思う
もちろんそういう意味で(作る側が)楽と言ってるんじゃないのは分かっているが
もう少し使う人間のことも考えてやれと
……で行き着くのも例えばpythonだったりするのでそれはそれでうーん

49 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 19:43:22.93 ID:U9zncy/O.net]
古代言語なんだから人間向きなわけがない

50 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 19:50:43.83 ID:wwCHsqfk.net]
慣れたら何とも無いけど



51 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 23:32:38.99 ID:zZJPnNDh.net]
>>46
FORTHが一番解析器に優しいと思う、Lispは少なくとも関数に渡す引数の数は解析で判断できるけど、FORTHはそれすら捨ててる
あとLispは支援するエディタがあれば書く事に戸惑いは殆どないよ。
読むのは適切なインデントがされていないと辛いのは本当だけどそれだってRubyやらCやらでインデント無しと変わらないと思う。

なお、Pythonはインデントが構文に含まれているのが嫌い(エディタで再フォーマットできない)

52 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 07:07:45.12 ID:vNvY5rmm.net]
ある海外のファンタジー小説で、異世界召喚されたプログラマが魔法でFORTHを実装して
最強魔導師になってた。

53 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 07:26:17.53 ID:fcKonDPy.net]
May the forth be with you.

54 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 11:16:47.94 ID:6/LNQkyp.net]
Lispは見た目的に「目にひっかからない」(関数もマクロもみんな同じようにしか見えない)のが問題なんだけど、
最近流行ってる(?)みたいに ( ) と [ ] を使い分けるとかすると、だいぶ感じが違うと思う。

55 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 16:23:26.53 ID:s/tFnXbk.net]
>>52
Clojureが凄い良くできてる
()でリスト,[]でベクタ,{}でマップ、#{}でセットとリテラルの扱いが凄い綺麗

56 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 10:10:07.27 ID:9gGhLYaB.net]
{} はすごくいいね。素の lisp だとほとんど使われない記号でもったいなかった。しかも数式とも合ってる。
ただ[] は好きになれないなぁ。個人的趣味だけど。

57 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 13:15:04.28 ID:rVCkRMh+.net]
変わった趣味だw

58 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 16:34:43.21 ID:5yNYNAVX.net]
エラーメッセージを楽して、素晴らしく表示したいんですけど
いい方法を教えてください。

59 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 18:28:37.68 ID:yfMW+WpF.net]
>>56
センスのいい奴に頼む

60 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 19:12:18.30 ID:md1XyPQH.net]
言うても行桁理由以外に何か必要かね



61 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 19:25:31.66 ID:etXlBO/A.net]
ファイル名…かな

62 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 20:57:55.11 ID:68QCuiUg.net]
エラー表示は?だけでいい
というネタがあったな

63 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 00:04:36.51 ID:FPvqJpqA.net]
人間が見てるのとコンパイラが解釈してるので大きくズレがある場合とか
エラーメッセージ見てわからんことが多々ある

xxの前にxxがあります/ありません系のエラーはウンザリ

64 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 00:22:55.85 ID:E/aMB+tP.net]
print " _人人 人人_ \n",
"> 突然の死

65 名前:< ", col, ",", row, " in ",filename,":", reason, "\n",
"  ̄Y^Y^Y^Y ̄\n";
die;

楽して素晴らしい方向を考えた
[]
[ここ壊れてます]

66 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 04:19:14.28 ID:l3Xq9EsR.net]
$ nmlc -run examples/lablgl/triangle.nml
Fatal error: exception Failure("
_人人 人人_
> 突然の死 < parse error line 33
 ̄Y^Y^Y^Y^Y ̄
")
って出るようにしてみた。

67 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 07:10:13.81 ID:Pf8ySLA3.net]
何のエラーか
なぜ起こったか
どうすれば良いか

のうちどこまでエラー表示するか
表示しないものはマニュアルに書くか
統一しておくと良い

68 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 10:22:44.88 ID:P2QTHoYV.net]
何のエラーか数字で提示
あとはknowledge baseで
knowledge baseは迷宮

69 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 11:43:14.80 ID:6U4Atlhd.net]
基本的には書いた人の頭のエラーだからな。
コンパイラ的には「チェンジ!チェンジ!この子変えて!!!」
だけでいい。

70 名前:デフォルトの名無しさん [2014/11/02(日) 12:31:43.49 ID:4dYx0WR7.net]
> 関西型プログラミング言語のひとつ Kyoto のコンパイラは,文法ミスのあるコードを与えると「ふうがわりなコードどすなぁ」とだけ返すので,何が間違っているかはこちらで推測する必要がある.



71 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:39:13.58 ID:FPvqJpqA.net]
何回も間違ったらぶぶ漬けが出てきそうだな

72 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:58:18.94 ID:i2BOrYsG.net]
>>64
> どうすれば良いか

これは余計なお世話だわ

73 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 13:03:44.74 ID:FPvqJpqA.net]
この道路は工事中なので次の迂回路をご利用ください

74 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 16:35:04.02 ID:l3Xq9EsR.net]
コンパイル速ければ、エラーは1個で十分だったりするよなぁっとか。
大量に出すなら、一番先頭のエラーを一番下に出すと嬉しいとか。

75 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 12:49:03.39 ID:ljM6XCm0.net]
>> 70

迂回は出来ないんだなぁ

76 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 18:22:08.25 ID:6fFurIEN.net]
最近のghcとかだと、関数名をタイポすると似た存在する関数名を示してくれる。外してる時もあるけど。
ああいう親切さをもっと充実させるのも方向性としてはありだと思う。
あらゆるコンパイルエラーがクラウドサーバに送られ続けて典型的なミスを蓄積し続ける、とかね。

77 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 11:17:19.99 ID:bZGUB4M2.net]
大量のデータをまとめて整理した結果をどこかで見たけど
よくあるスペルミス・インポート忘れ・宣言忘れが飛び抜けていて
それ以外はごくわずかでどうでもいいという印象だった

78 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 11:19:32.39 ID:bZGUB4M2.net]
中級者以上と入門者はつまずく所が全く違うから
後者のデータだけを集めれば「入門者に最適」な言語やツールが作れるかもしれない

79 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 13:56:57.87 ID:OXvDS9Yh.net]
C言語は、研究結果;はあった方が良いみたいな話を聞いた事があるような気がする。
けど、最後だけ無しとかだったのかもしれないし、良く覚えてないなぁ。
今作ってる言語は必要な所だけ;を書くって作ってるのだけど。
初心者には難しいのかもしれないです。

80 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 15:36:24.07 ID:bZGUB4M2.net]
気の利いたエディタサポートまで考えるなら改行をまたぐ構文を禁止すべき
VBはそうなってる



81 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 15:58:19.03 ID:vqrMdBMn.net]


82 名前:lispとかでマクロ展開したときに中でエラーが起こったら行と桁の表示は諦めるしかないのかな
前に作ったとき展開後も展開前の行を引き継ぐやり方をしてたけど
[]
[ここ壊れてます]

83 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 17:04:17.39 ID:99dxtSJ/.net]
>>78
トークンに文字列だけじゃなく、もとあった位置の情報も付けたら?

>>76
どんな言語でも、ある程度本格的なプロダクトなら、たいてい、「やたら長くなるから改行を挟みたい式」と
「やたら短くて似たようなのが連続するから1行にまとめたい文」の両方が出てくるので、
どちらを強制するのも一長一短。

構文的には (a, b, c, d) と {a; b; c; d;} の、どちらも似たようなものだけど、機械的なコード生成では
後者のほうが以前は楽だった(最近は可変長配列みたいなオブジェクトに入れて、最後に
joinとか、ライブラリが充実してる言語を使うのが普通なので、あまり差は無い)。

人間の作業としては、複数行にまたがるものでは前者のほうはちょっとめんどい。
(最後の行を削ったあとで、前の行の最後も削る必要があるので)
{a,
b,
c}
みたいに閉じカッコを行末に付けてしまえばそうでもないかもだが。

あとそもそもC言語の構文では ; の規則がちょっと変則的。

84 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 23:11:55.77 ID:DC7Ttoit.net]
Lispマクロのデバッグはちょっと難しいよな。
backquoteのように構文上の構造を引き継ぐような奴ばかりならいいんだけど。

85 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 23:12:32.22 ID:DC7Ttoit.net]
デバッグ→デバッグ情報

86 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 23:31:17.91 ID:6PskSs9/.net]
複雑なマクロでもたいていは展開系見れば何とかなるね。それでも動かないマクロがたまーにあって辛いけど。

87 名前:デフォルトの名無しさん [2014/11/04(火) 23:40:21.11 ID:cufVHbaO.net]
自作のコンパイラなりなんなりはデバッグと最適化を考えたらなにも出来ない
むしろ潔く投げ捨てる勢いと割り切りで走らないとダメっしょ
俺様考えたルールで動いた万歳終わりな感じ
四則演算と条件文、あとGOTOなりCALLなりがあれば立派
それ以上の高度化は努力しだいってことで
それとも大人しくCommon Lispあたりを使って妥協するとか
Lispだと関数を生成して実行できるんだよね
例えば入力画面の項目数とか要件とかを与えて関数の形で生成して実行な感じの

俺様コンパイラ、Lispコード生成するからコンパイルや実行デバッグはそちらでオネガイみたくw

88 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 01:50:49.88 ID:j8mQRcC4.net]
そこまで楽するなら構文をリードマクロで定義したほうが早そう

89 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 07:49:49.12 ID:xr1YCX3/.net]
xmlってスクリプト言語なの?データ構造なの?
xmlを使ったスクリプト言語らしきモノもあるみたいだし、よーわからん

90 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 08:22:34.79 ID:Fpn6fvq+.net]
>>83
C とかのソース吐いて、最適化よろしくね(はーと)でいいだろ



91 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 09:54:15.68 ID:gfolKTI3.net]
>>85
データ構造だろ
パーサ作るのが楽というか有りものが使えるからxxxxMLみたいに拡張して使われるんだろう

92 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 11:54:58.98 ID:bBYPRYMe.net]
>>85
プレーンテキストってスクリプト言語なの?データ構造なの?

93 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 17:03:13.23 ID:I87EWij/.net]
>>88
只の文字列だよ
そこに意味を付けるのはまた別の事

94 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 17:58:10.42 ID:uuXXn0N9.net]
シェルスクリプトとかみたいな意味でスクリプトではない。
XSLTとか、あとワドラー氏が冗談で提案していたと思うがXMLで表現するプログラミング言語と
いうものもありうるけど、XML自体は単なるデータ構造でしかない。

95 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 21:09:37.17 ID:WN8UKbpt.net]
XMLにロジックを書く者は呪われる。やめておいた方がいい。あれはデータ形式としても冗長すぎるし、良いところはない。
S式を使うといい。

96 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 21:32:19.82 ID:uuXXn0N9.net]
XSLTは割とよくできてるよw

97 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 01:58:37.08 ID:Rw7wEfhr.net]
閉じ括弧重ね書き文化は誰も止めなかったのかねえ))))))))))))))))))))

98 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 02:08:22.53 ID:rrEEAzVB.net]
Cみたいな中括弧、改行、インデントを繰り返すのもイマイチ

99 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 19:44:15.64 ID:XxPyN8W7.net]
整ってると思うがなあ
switch, caseだけはアレだが

100 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 20:31:09.14 ID:sXupdHKX.net]
switchとcaseは同じインデントにしてbreakだけ字下げだよね?ね?



101 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 20:52:59.78 ID:4yd7iQ66.net]
>>96 に一票

102 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 22:25:11.01 ID:fMVGCDH+.net]
(,)は特別な意味持たせたいとかあるので難しいですね。
(a,)はタプルにしようか、タプルじゃないのかとか。(,a)はタプルとか。

103 名前:デフォルトの名無しさん mailto:sage [2014/11/09(日) 11:22:54.52 ID:/PoG0aeo.net]
Pythonの「1要素のタプル」はトリッキーだが面白いとは思った。
kなんとかの人が言ってるように、カッコなしでもそうなるのは罠だがw

104 名前:デフォルトの名無しさん [2014/11/09(日) 12:10:23.68 ID:6nixZySy.net]
lispだと(a)とaの違いかな

105 名前:デフォルトの名無しさん mailto:sage [2014/11/09(日) 16:44:48.42 ID:7O7eobU9.net]
>> 100

そんな感じ。名前のない構造体

106 名前:デフォルトの名無しさん mailto:sage [2014/11/09(日) 20:23:26.03 ID:15ZMIIuR.net]
いや名前ある、タプル

107 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 01:34:25.20 ID:zIX5GD/A.net]
ここって正規表現エンジンの話もいいのかな
nfaとdfaのハイブリッドエンジンを実装したいんだけど
dfaの中にnfaがあったらどう処理するかとかどこまでdfaにしていいかとかさっぱり分からない
調べてもon-the-flyという単語ぐらいしか出てこなくて実装方法とかは見つからない
知ってる人いたら教えてほしい

108 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 07:33:01.86 ID:XDoaKxdi.net]
schemeの自作コンパイラ作成の過程で、cps変換につまづいています。
よくネット上で「簡単な処理で実現できる」という感じで書いてあるのを良く見るのですが、
実際にやろうとするとなかなかできません。
具体的に何をやったらいいのでしょうか?

ちなみにlambdaでのcps変換はぎりぎり理解できてると思います。

109 名前:デフォルトの名無しさん [2014/11/10(月) 09:06:04.50 ID:hP+YfTbo.net]
Scheme使ってるならEoPLの最後のほうの章読んだらええで。

110 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 12:08:25.51 ID:s3EMdqhf.net]
>>103
つ ドラゴンブック, lazy transiyiOn evaluation

古典実装だとoriginal egrep



111 名前:デフォルトの名無しさん mailto:sage [2014/11/10(月) 17:06:44.93 ID:G4zfChd8.net]
>>100
Lisp の (a) は (a . nil) だからちょっと違う。

>>101
構造体とかそういう別の名前を持ち出したりするとややこしくなるだけ。

112 名前:デフォルトの名無しさん mailto:sage [2014/11/11(火) 02:10:53.26 ID:85SNGvMw.net]
>>106
ありがとう
でも自分の望んでるのとは違うみたい

113 名前:デフォルトの名無しさん mailto:sage [2014/11/12(水) 01:44:27.15 ID:DTrQhtqP.net]
>>108
この延長線上にある話だと理解できてないか、
SFA(semi-deterministic finite automata)を勘違いしてon-the-flyだと思っている。
前者ならGNU Rxを読めばいい。

114 名前:デフォルトの名無しさん mailto:sage [2014/11/12(水) 01:57:21.21 ID:/4vNcbkH.net]
>>109
多分後者かもしれない
自分の考えてるのは(X)*aときたら
1 ==(X)==> 1
1 ==a==> 2
というdfaを作って次のノードへの遷移条件が文字じゃなくてnfaなら
それを優先して見てマッチしたらその先に行く方法を考えてた
それならnfaとdfaをうまく組みあわせられると思って

あとsfaは今初めて知った
sfaとかon-the-flyは調べてもちゃんとした説明が出てこなくて困る

115 名前:デフォルトの名無しさん mailto:sage [2014/11/12(水) 01:59:11.10 ID:/4vNcbkH.net]
あとnfaだけかdfaだけなら偶然持ってたドラゴンブックやネットの情報が十分にあって実装出来た
ハイブリッドにする方法が分からなくて途方に暮れてる

116 名前:デフォルトの名無しさん mailto:sage [2014/11/12(水) 11:39:32.29 ID:b8dDlQST.net]
SFAでググったらランク上位の日本語の記述がこれだった
www.slideshare.net/mobile/sinya8282/ss-12170832

役に立つかは知らないけどマッチングの並列実行だってさ

117 名前:デフォルトの名無しさん mailto:sage [2014/11/15(土) 04:11:51.30 ID:2wuAQ8Y6.net]
DFAで出来ないこと、やると遅いことをNFAでやる。
DFAにならない正規表現の拡張や状態が爆発するn回繰り返しなど。

118 名前:片山博文MZ次期CEO ◆T6xkBnTXz7B0 [2014/11/29(土) 15:46:21.26 ID:AWiICJMh.net]
Caperで、Haxe用のパーサーが作れるようになったらしいぞ!!!

jonigata.github.io/caper/caper.html

119 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 19:24:39.29 ID:bjHueY84.net]
ということはjavaとphpとC#に対応したということか

120 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 19:25:23.30 ID:bjHueY84.net]
って元からしてんじゃん…



121 名前:デフォルトの名無しさん mailto:sage [2014/12/04(木) 17:14:51.41 ID:hjxCxC4V.net]
スレ立てるまでもない質問はここで 139匹目から来ました。

JavaCCで負の数と引き算を識別したいんですけど、どう定義したらいいでしょうか?

以下現状の一部抜粋(メソッド名についてはスルーしてください)
void enzan3() :
{}
{
enzan4()((<TASU>|<HIKU>)right=enzan4())*
}

void enzan4() :
{}
{
enzan5()((<KAKERU>|<WARU>)enzan5())*
}

void enzan5() :
{}
{
<MOZI>|[<HIKU>]<SUUZI>|"(" e=enzan3() ")"
}

122 名前:デフォルトの名無しさん mailto:sage [2014/12/04(木) 18:52:41.09 ID:jHjIGczB.net]
>>117
そのスレの997以降のはやってないの?

number=0..9
plus::=<expr> + <expr>
minus::=<expr> - <expr>
expr::=<number>|<plus>|<minus>
な感じになるだろうし

単項のマイナスはexprにかからない形式で-が出てきた時だし間違いようがなさそうに思うんだけど

123 名前:デフォルトの名無しさん mailto:sage [2014/12/04(木) 20:49:24.04 ID:hjxCxC4V.net]
あ。
そこの
>単項演算子と二項演算子の区別
についてはまだ調べてないです。
調べてみます。

二項演算子+,-の間に二項演算子*,/を含む式があって、
その中にカッコか数字か変数呼び出しなどがあるように定義するのではないのですか?
例えば
-1
1-2
-2*4
2/(-2+5)
などの書き方が使えるようになるといいなとか考えています。

>>118
::=って書き方は確かBNF記法でしたっけ?
その書き方についてぜんぜん知らないのでそれも調べてみます。

124 名前:デフォルトの名無しさん mailto:sage [2014/12/06(土) 17:09:31.69 ID:evyQIgPT.net]
みんなBNFとかやってるのか
char配列にして解析してるから常に最後が';'だと楽なんだよね
'{'で+1、'}'で-1、+-0の状態で';'がきたらその構文が完結する
int a;, class {}; switch{}; void hey(){}; if(true){}; for(){};

125 名前:デフォルトの名無しさん mailto:sage [2014/12/06(土) 17:17:29.59 ID:djm9MkQZ.net]
演算子の優先順位はどうしてんの?

126 名前:デフォルトの名無しさん mailto:sage [2014/12/06(土) 17:30:21.62 ID:5oGFUyw+.net]
べつに区切り文字が = だろうが : だろうが ::= だろうが BNF は BNF だ

127 名前:117 mailto:sage [2014/12/06(土) 23:05:55.88 ID:BPhK2Nlg.net]
>>120
>みんなBNFとかやってるのか
JavaCCの場合字句解析でトークン列に分解してくれて、
>>117にあるようにそのトークンの並びを書いて構文解析の定義をします。
なのでBNF記法とは違った書き方になります。

>>121
>演算子の優先順位はどうしてんの?

いい説明文が思い浮かばないので、
まずは例として1+2*3/4-5という式を構文木にしたものを以下にアップします。
fast-uploader.com/file/6973429321730/
こんなかんじのまとまりです。
演算子:/ 左辺:3(enzan5) 右辺:4(enzan5) → @(enzan4)
演算子:* 左辺:2(enzan5) 右辺:@(enzan4) → A(enzan4)
演算子:- 左辺:A(enzan4) 右辺:5(enzan5) → B(enzan4)
演算子:+ 左辺:1(enzan5) 右辺:B(enzan4) →C(enzan3)

128 名前:117 mailto:sage [2014/12/06(土) 23:06:51.00 ID:BPhK2Nlg.net]
とりあえずenzan3の定義の先頭にマイナスの記号があるかもしれないという意味合いで
以下のようなコードに変えてみました。

void enzan3() :
{}
{
[<HIKU>]enzan4() //★
((<TASU>|<HIKU>)enzan4())*
}

void enzan4() :
{}
{
enzan5()
((<KAKERU>|<WARU>)enzan5()
}

void enzan5() :
{}
{
<MOZI>|<SUUZI>|"(" enzan3() ")"
}

<>:トークン |:左右のどちらかの構文(||やOr演算子のようなもの) []:省略可能構文

129 名前:117 mailto:sage [2014/12/06(土) 23:07:27.16 ID:BPhK2Nlg.net]
すると、以下のような警告が出ました。

Warning: Choice conflict in (...)* construct at line 608, column 9.
Expansion nested within construct and expansion following construct
have common prefixes, one of which is: <HIKU>
Consider using a lookahead of 2 or more for nested expansion.

内容は選択の突出(Choice conflict)と言うもので、
私が作った構文の定義があいまいのようで
608行目(ここでは★を付けた行)の定義が他の定義とかぶっているらしく、
先頭に出てくる<HIKU>トークンが共通点らしいです。
そもそもの考え方が間違っているかもしれませんが、
それを抜きにしてもまずなぜこのような警告が出ているかわかりません。
一体なぜ出ているかわかる人いれば教えてださい。

130 名前:デフォルトの名無しさん mailto:sage [2014/12/06(土) 23:08:41.58 ID:q7blqefO.net]
>>120
java(というよりC)のforは()の内部に;が出てくるのが
>>119
javaccの書き方と大差ないみたいよ



131 名前:デフォルトの名無しさん mailto:sage [2014/12/06(土) 23:27:12.88 ID:5oGFUyw+.net]
この文脈でconflictは「衝突」と言う。
そのメッセージの通り、複数の定義で共通してるトークンがあるから、どっちの定義のほうだとして
解釈していいかわからないからエラーになる。
そのメッセージでは「Consider using a lookahead of 2 or more for nested expansion.」2個あるいはそれ以上の
先読みを使うことを検討してみろ、と言っているが、それに従ったところでうまくいくかどうかは
わからんけどね。

132 名前:デフォルトの名無しさん mailto:sage [2014/12/07(日) 01:31:54.20 ID:bfkTF4nN.net]
>>123
>>121は重要なヒント
-(1+2)とか、1+(-2)とかにその定義で対応できる?

たとえば★の行をenzan5に移してみるなり、演算子の優先順位を変えてやりなおすとか
それとは関係ないけど、3*2/4って直感的には( (3 * 2) / 4 )になりそうだけどその構文木だと右から左なのね

133 名前:デフォルトの名無しさん mailto:sage [2014/12/07(日) 01:36:47.04 ID:bfkTF4nN.net]
>>128
勘違いしたわすれて

134 名前:117 mailto:sage [2014/12/07(日) 21:58:06.68 ID:OacxF8nB.net]
>>127
選択の衝突でしたね。
間違えて覚えました;
かぶってるらしいからLOOKAHEADで先読みをしなくてはならないのはわかるのですが、
そのコードでどのパターンとどのパターンでかぶってるのかがわからなくて。

>>128
>-(1+2)とか、1+(-2)とかにその定義で対応できる?
1+(-2)のパターンは意識していましたが、-(1+2)のパターンは忘れてました。
きちんと考えなおしてきます。

135 名前:デフォルトの名無しさん mailto:sage [2014/12/07(日) 22:37:16.24 ID:bfkTF4nN.net]
>>130
試しに四則演算のみ行う言語をjavaccで作ってみたけど単行演算子程度ならLookAheadいらないよ

136 名前:117 mailto:sage [2014/12/08(月) 00:25:52.66 ID:yQ2quuvD.net]
いろいろ考えているうちに構文規則がおかしなことになってきました;
とりあえず負の数やかっこを含む数式の構文木を一通り考えてみたつもりなんですけど、
以下のような感じであっているでしょうか?
fast-uploader.com/file/6973521373227/
また、他に欠けているパターンはないでしょうか?

137 名前:デフォルトの名無しさん mailto:sage [2014/12/08(月) 18:02:04.16 ID:3czqE9B9.net]
>>132
単項演算子はどこに行ったんだ

138 名前:117 mailto:sage [2014/12/08(月) 21:29:48.11 ID:yQ2quuvD.net]
>>133
あれは構文木と言うより抽象構文木というか内部構造と言うかそんなかんじのものですね;
負の数をどう計算するか考えてたらその式や数字に-1をかければいいかなと思って作ってました。
今度はきちんと抽象じゃない構文木を考えます。 はい。

139 名前:117 mailto:sage [2014/12/08(月) 23:27:15.44 ID:yQ2quuvD.net]
とりあえず自分がわかっている範囲で -(1+2)*4 の解析木を作ってみました。
fast-uploader.com/file/6973604307310/
enzan番号という名前はやめてみました。
空欄部分は下位置調節のためや何を入れたらいいかわからない部分です。

140 名前:117 mailto:sage [2014/12/09(火) 21:43:09.57 ID:KYZ3f1RL.net]
構文規則作ってみましたが、選択の衝突が消えません。
tasuhikuのkakewaruをkakewaru2に変えると消えます。
kakewaruで呼んでるminusの[<HIKU>]がtasuhikuの<HIKU>と競合しているのかと思いましたが、
なぜなのかわかりません。
どこが間違っているでしょうか?

警告なのでとりあえず無視してjavacコンパイルして解析&実行させてみると、以下の式はきちんと実行できました。
1+2+3
-9-3
1+2*3/4-5
7+(-2)
-6*2
-(1+2)*4
(-1+2)*4
-1+2*4
4-(-2/5)
-(-(-39))/13
一応ある程度のパターンを網羅していると思います。

Warning: Choice conflict in (...)* construct at line 608, column 9.
Expansion nested within construct and expansion following construct
have common prefixes, one of which is: <HIKU>
Consider using a lookahead of 2 or more for nested expansion.



141 名前:117 mailto:sage [2014/12/09(火) 21:44:56.07 ID:KYZ3f1RL.net]
void tasuhiku():
{}
{
kakewaru() //608行目
((<TASU>|<HIKU>)kakewaru2())*
}

void kakewaru():
{}
{
minus()
((<KAKERU>|<WARU>)sikikakko())*
}

void kakewaru2():
{}
{
sikikakko()
((<KAKERU>|<WARU>)sikikakko())*
}

142 名前:117 mailto:sage [2014/12/09(火) 21:45:41.74 ID:KYZ3f1RL.net]
void minus():
{}
{
[<HIKU>]sikikakko()
}

void sikikakko():
{}
{
("(" tasuhiku() ")"
|atai())
}

void atai():
{}
{
<SUUZI>
}

143 名前:デフォルトの名無しさん [2014/12/10(水) 06:22:59.98 ID:ICK0nNNi.net]
荒らされてるなぁ・・・

144 名前:デフォルトの名無しさん [2014/12/10(水) 14:14:42.32 ID:lFxVBhH5.net]
>>136
文法作るのはものすごく難しいんだよ。
同じ文書を受理する複数の文法が存在し、複数の間で優劣がある。
しかも、優劣を機械的に評価することが難しい。

「こいつを使えば簡単にできる」というようなソフトウェア紹介を見かけると
思うけど、そんな魔法の杖みたいなソフトは無いから。
そういうこと言ってる人は、付属してきたサンプルを動かして簡単といってるだけ。
信じちゃだめだ。

構文解析器の生成系を自分で作れるようにならないと文法を作れないと思っていい。
少なくともその程度の理解は必要。

まずドラゴンブックを買ったらどうかと思うんだが。

145 名前:デフォルトの名無しさん [2014/12/10(水) 14:18:41.54 ID:lFxVBhH5.net]
まずドラゴンブックを買う。
実際に作ってみる。

この作ったものは実用にはならないよ。
テーブルが大きすぎるからね。

それでも作ることが重要。

その後に、市中に出回る生成系を使ってみたらどうだろう。
俺はこの順番が良いと思うよ。

中身の動作を知らないと使えないって、ツールとしては下等だけど、
今はまだその程度の世界なんだよ。

146 名前:117 mailto:sage [2014/12/10(水) 16:50:00.17 ID:pQyEQrGQ.net]
>>139
私のことだったら荒らそうと言うつもりは全くありません。
でも荒らしに見えてしまっていたならすいません。

>>140-141
ドラゴンブックってこれのことですかね?
www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E2%80%95%E5%8E%9F%E7%90%86%E3%83%BB%E6%8A%80%E6%B3%95%E3%83%BB%E3%83%84%E3%83%BC%E3%83%AB-Information-Computing-A-V-%E3%82%A8%E3%82%A4%E3%83%9B/dp/478191229X
(私にとって)安くないですし今そこから勉強している余裕はないので・・・。
すいません。

よそでパーサジェネレータ使った方がいいとか言われて、
Javaが好きなどの理由でJavaCCを使うようになりました。
なんにせよ周りに作ったことある人とかいないので、
www.sbcr.jp/products/4797337958.html
とか
item.rakuten.co.jp/books-sanseido/ebm-techno03/
とか片手に独学でやってます。

147 名前:デフォルトの名無しさん [2014/12/10(水) 17:17:43.47 ID:lFxVBhH5.net]
>>142
そこが勘違いなんだよ。

JavaCCを使うにはJavaCCを作れる程度の知識が必要。
だからドラゴンブックが必須。
ドラゴンブックは決して読みやすい書籍ではないよ。
どうとでもとれる表現がいくつもある。
読み解きながら理解する必要があるので、結局生成系を自分で一つ書き上げる必要がある。

「JavaCCを使えば知識がなくてもこんなに簡単」的なことを書く人は
実はJavaCCを使っていないんだよ。
そこに騙されてはいけない。
文法を作るには深い理解が必要なんだよ。
簡単にできる方法はない。

148 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 18:27:22.40 ID:eXNtCHKb.net]
誰か別の人にやってもらえばいいんだよ。クラウドソーシングとかあるじゃん。

149 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 21:11:35.37 ID:Lctd7lUm.net]
荒らされてるんじゃなくて話題がなさすぎるから一人が専有してるように見えるだけだろ?

150 名前:117 mailto:sage [2014/12/10(水) 21:46:27.74 ID:pQyEQrGQ.net]
"); //]]>-->
151 名前:3" target="_blank">>>143
>「JavaCCを使えば知識がなくてもこんなに簡単」的なことを書く人は

そこまで言われたことはないです。
一番最初は文字列を自分で解析するところからやろうとしてましたけど、
パーサジェネレータを知ってからわたしにとってはそっちの方が楽だと感じています。
ここで質問したこと以外でも詰まったりもしましたけども、
もし構文解析ツールを1から作っていたらきっとここまでたどり着くまでにもっと詰まっていると思います。

>>144
すいません。
実はこれ卒業研究なので・・・。
自分で作ってみたい→卒研のテーマに悪くないよね?
な感じで決めてしまったテーマです。

>>145
連投とかしすぎましたかね・・・;
[]
[ここ壊れてます]

152 名前:デフォルトの名無しさん [2014/12/10(水) 21:57:46.01 ID:dcz7kjCK.net]
指導教授に聞けば。

153 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 22:28:57.42 ID:ZSLSh1LL.net]
www

卒研なら自分で考えいw

154 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 22:32:59.96 ID:eXNtCHKb.net]
>>146
まさか卒業研究の本体がなんの新規性もない構文解析なわけじゃないだろう。
それが本質的な部分じゃなければ人に手伝ってもらうのもありだよ。

もし、構文解析そのものが君の卒業研究なら……
楽してでっち上げるという考えは即座に捨てて、143のいうようにちゃんと勉強して理解しな。

155 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 22:55:57.69 ID:Lctd7lUm.net]
卒研かよ
フォローして損した

156 名前:117 mailto:sage [2014/12/10(水) 23:23:29.27 ID:pQyEQrGQ.net]
>>147
Javaの研究室ではありますけど、先生は構文解析などの経験はないそうなので・・・。
ゼミのときに負の数と引き算の問題も一応聞いてみたんですけど、
残念ながら大したアドバイスをもらえませんでした。

ちなみに、研究室ではネットワーク関連のことやってる人が多いです。

157 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 23:27:11.16 ID:bWIayA6r.net]
うーん、その卒業研究、どこか新規性あるの?

158 名前:デフォルトの名無しさん [2014/12/10(水) 23:46:18.31 ID:lFxVBhH5.net]
文法を作ることの難しさを理解できていないんだよ。
嘘ではなく、本当に難しい。

実用性は無くとも理論通りに動作する生成系を自分で作るのは絶対必要。
遠回りに見えるだろうけど、これが最短の道なんだよ。

「俺の考えた言語」の文法をきちんと作れるなら、生成系程度すぐ作れる。
その逆は無いよ。

何か考え違いをしてるんだと思う。
文法程度すぐ作れるけど、生成系を作るのは難しいと思っていそう。
まるっきり逆。

159 名前:デフォルトの名無しさん [2014/12/10(水) 23:48:44.51 ID:lFxVBhH5.net]
さらに言えば、理論通り動く生成系を作っても、それは実用性を持たない。
学習のために作るんだ。

実用には、既存の生成系を使うんだよ。

そういう順番が良い。

160 名前:117 mailto:sage [2014/12/11(木) 00:04:58.83 ID:TxaNdaYp.net]
>>148 >>150
すいません・・・。

>>149 >>152
"こういうところが新しいです"
と言える自信はありません・・・。 すいません。
一番の理由は"自分で作ってみたい"と思ったからです。
あと、先生に止められることもなかったですし。
構文解析が目的と言うよりは、半分ノリで付けてしまったテーマが
「初めでも使いやすい日本語で書けるプログラミング言語を作る」
なんてテーマです。
"日本語なら初めてでもとっつきやすいかな?"なんて安易な考えで
「初めてでも」なんてつけて付けてしまいました。
構文を考える上で自分で後悔してたりします;

>>153
文法を考えるのも構文規則を作るのも楽なものではないと思ってます。
それよりも構文解析器を作るほうが難しそうと感じてしまっているのは事実です。



161 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 01:55:24.44 ID:pP5Pqqse.net]
>>153=154が優しく言ってくれてる
あなたが本当に本気なら明日にでも図書館行って、ドラゴンブック借りるといいよ
難しいけど必ず価値はあるから

162 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 06:06:17.74 ID:sSshpgwI.net]
数学の知識もないのにアンチョコ片手にMathematica使えば何でもできると思ってるようなもんだな。まあ、無理。

163 名前:117 mailto:sage [2014/12/11(木) 07:22:36.95 ID:TxaNdaYp.net]
>>156
プログラミングの棚にはなかったと思うんですけど、
とりあえず今日大学の図書館探してみます。
「ふつうのコンパイラをつくろう」の方は図書館にも置いてあったので。

164 名前:デフォルトの名無しさん [2014/12/11(木) 07:41:13.71 ID:JXHpp2tS.net]
空気読め

165 名前:117 mailto:sage [2014/12/11(木) 17:45:33.30 ID:TxaNdaYp.net]
ドラゴンブックは残念ながら大学の図書館にはありませんでしたが、
市内(他区)の図書館にはあるとのことなので取り寄せて読みます。
1万円ほどの本を買うには残念ながらお金がないもので・・・;

他に大学にあった以下のコンパイルの本び中でおすすめってありますか?
コンパイラの基礎 / 徳田雄洋著
命令レベル並列処理 : プロセッサアーキテクチャとコンパイラ / 安藤秀樹著
コンパイラ入門 : 文法から設計・製作まで / 小田一博著
Cコンパイラ設計 : yacc/lexの応用 / A.T.シュライナー,H.G.フリードマン 著 ; 矢吹道郎 〔ほか〕訳
超並列処理コンパイラ / 村岡洋一著
コンパイラ / 疋田輝雄 著
DIANA入門/言語仕様/応用 : Adaコンパイラ実現のための中間言語
やさしいコンパイラの作り方 / 中西正和 共著 ; 大野義夫 共著
新言語作成の技法 : オリジナル・コンパイラ / 大貫広幸 著
N88日本語BASIC(86)コンパイラ活用法 : Personal computer MS-DOS版 / 肥田野登 著
コンパイラの技法 / 中田育男 著
コンパイラのうちとそと / 島内剛一ほか共著
コンパイラの設計と構築 / Arthur B.Pyster 著 ; 松尾正信 訳
コンパイラの技法 / F.R.A.ホップグッド著 ; 首藤勝, 関本彰次共訳
コンパイラ構成法 / 原田賢一著
コンパイラ : プログラム言語処理の基礎 / 井上謙蔵著
コンパイラ設計技法 : 理論と実践 / T. ピットマン, J. ピーターズ著 ; 今泉貴史訳
dBASE ・ PLUSコンパイラ & アセンブラ ゜ / 桑村幸雄,池端良一 著. -- 2版
コンパイラ・コンパイラ / 井上謙蔵著. -- 産業図書, 1970.
Let's C(Ver3.0)プログラミングハンドブック : MS-DOS用Cコンパイラ / PMC研究所 編
やさしいコンパイラの作り方 / 中西正和,大野義夫 共著
Microsoft QuickC コンパイラ Ver.2.0 ランタイム ライブラリ リファレンス
コンパイラ作成の技法 / David Gries著 ; 牛島和夫訳
コンパイラ / 中田育男著

166 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 18:35:53.94 ID:yZEE5pFs.net]
文芸的なcobol+日本語ななでしこ?
>>160
あるなら手にとって読んでみればいいのに
アドバイスはできないすまん

167 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 18:43:18.72 ID:tbxqmm74.net]
>>160
中田先生の本は良い本(というか国内で学者が書いてる数少ない本)
買うかどうかとは別に読んで損はしない。

先生は多忙なのか執筆が遅いので最新を追うとちょっと遅れるけど

168 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:08:42.05 ID:O2yGUM7o.net]
>>143
んなアホな

169 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:21:08.66 ID:ED9Fc+9a.net]
中田本は結構いいね。でもドラゴンブックも読んどくべきだけどね。

170 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:26:34.20 ID:URNWWvBk.net]
ドラゴンブックに限らずあの手の堅い文章は頭に入りにくい



171 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:51:29.95 ID:HAPX7Bnj.net]
>>162
> 先生は多忙なのか執筆が遅いので最新を追うとちょっと遅れるけど

まだ執筆してるの?
最初に買った真っ白表紙のコンパイラなんて 30年以上前だったのに

172 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 20:58:28.23 ID:hXJaCtwW.net]
やさしいコンパイラの作り方と
コンパイラのうちとそとは
読み物として面白い。
でもたぶん(今じゃ)なんの役にも立たないw

173 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:22:50.68 ID:tbxqmm74.net]
>>166
2011年が最後かな
言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで
ってのをオライリーから共著で出してたはず

でも一番読み応えあるのは1999年発行の
コンパイラの構成と最適化
だと思う、この本はドラゴンブックと一緒に是非買うべきって

174 名前:言っても良い []
[ここ壊れてます]

175 名前:117 mailto:sage [2014/12/11(木) 21:35:13.25 ID:TxaNdaYp.net]
>>161
>文芸的なcobol+日本語ななでしこ?

cobolやなでしこは使ったことないのでわかりませんが、
私は英語を用いた言語よりはわかりやすいと思います。
コメント文での説明が要らないかどうかは作るものによりますけど。

>あるなら手にとって読んでみればいいのに

いろんな図書館に点々としてるそうで、
中にはどこにあるのかわからない図書館にある本だったりも・・・;
ちなみに、上げた24冊のうち私の工学部の校舎にある図書館に絞ると3冊しかないそうです。

>>162 >>164
中田先生の本読んでみます。
ドラゴンブックの方も取り寄せが届いたら読みます。

>>167
面白いならその2冊も読んでみます。

176 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:37:16.34 ID:Q8kAUXaJ.net]
>>167
> やさしいコンパイラの作り方と
> コンパイラのうちとそとは
> 読み物として面白い。

両方読んだ気がするが、内容覚えてないわ

> でもたぶん(今じゃ)なんの役にも立たないw

色々な人を呼び込むと言うのも、重要な役目だと思う
誰か「漫画で読むコンパイラ」とか書かないかなぁ w

177 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:40:57.95 ID:KrH9mSC/.net]
まともにやる気あるなら、その中のどれでも一つ真剣に取り組めばいいよ。

迷うのはそれからでも遅くない

178 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:42:20.07 ID:tbxqmm74.net]
>>170
麻宮騎亜がアップを始めたようです。

179 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 21:57:20.15 ID:JvQXLAia.net]
CPUの創り方が萌えキャラで出る時代だから
コンパイラ版が出る日も近いな

180 名前:デフォルトの名無しさん mailto:sage [2014/12/12(金) 03:52:20.71 ID:yYnp70gr.net]
疲れた時は白と黒のとびらとか。読み物だけど



181 名前:デフォルトの名無しさん mailto:sage [2014/12/13(土) 11:59:00.15 ID:KEKavmkB.net]
>>168
共著じゃなくてAntlrの作者が書いた本の監訳だよ

182 名前:名無しさん@そうだ選挙に行こう mailto:sage [2014/12/13(土) 19:31:14.67 ID:LmsGKyNP.net]
正直ドラゴンブックって内容はともかく説明はとても優しいよね
洋書はIT系に限らず懇切丁寧な事が多いと思う

183 名前:名無しさん@そうだ選挙に行こう mailto:sage [2014/12/13(土) 22:13:39.97 ID:aWFoLZL3.net]
虎も仲間に入れてやってください
サンプルがアレだが

184 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 11:19:23.48 ID:cYd/ZsDZ.net]
kmoriさん亡くなったって。

185 名前:デフォルトの名無しさん [2015/01/19(月) 11:34:19.54 ID:CzsUjspG.net]
yaccの一実装書いてた人か。南無

https://web.archive.org/web/20080206191946/d.hatena.ne.jp/kmori58/20060702/p3

186 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 15:30:26.84 ID:cYd/ZsDZ.net]
kmyaccも有名だが、「LSI-Cの作者の一人」だった。

187 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 21:04:04.33 ID:wHr1vYS1.net]
熊ヤックと読んでいた

188 名前:片山博文MZ ◆T6xkBnTXz7B0 [2015/02/18(水) 16:40:51.07 ID:9VF3MRJc.net]
C++11の正規表現でCのスキャナーをスマートに書きたい。
しかし、コメントの扱いがややこしく、また、行番号の情報を取得する必要がある。
一行ごとに読み込むべきか、従来どおりトークンに切り分けて読み込むべきか。
全部をいっぺんに読み込んで'\n'でsplitする方法は実行時のメモリーと時間がかかると思う。
どういう戦略にすべきか?

189 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/18(水) 17:03:37.74 ID:9VF3MRJc.net]
改行に特別なトークンを割り当てて、すべてのトークンを読み
込んだ後でトークンに行番号をつけてから改行のトークンを取り除くという
方法についてはどう思いますか?

190 名前:デフォルトの名無しさん mailto:sage [2015/02/18(水) 21:19:15.31 ID:po3oOzQK.net]
Cってマクロとかインクルードとか有るん?



191 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/19(木) 01:08:43.02 ID:XXveEoOV.net]
マクロやインクルードは、プリプロセッサーがやってくれるよ

192 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 12:19:19.08 ID:b9Ke1XGw.net]
プリプロセッサーの展開後の行番号って要るのかね?

193 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 19:51:00.22 ID:rp3PUwqb.net]
無かったらエラー表示するとき不便だろ

194 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 21:27:05.57 ID:wg16DBik.net]
展開後の行番号の方がいらなくね?

プリプロセッサ文てコンパイラ側でも処理するよね?
#line とか

195 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 21:31:56.28 ID:uOq48O3O.net]
コメントはプリプロセサで置き換えたらいかんのか

196 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 01:08:42.33 ID:XnZFjwve.net]
SmalltalkのVM上にJavaVMを構築してんだけど、
VMの話もここで良いんだよね。

197 名前:デフォルトの名無しさん [2015/02/21(土) 12:59:06.48 ID:eVOI8zE3.net]
OK

198 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 23:58:08.89 ID:bst4VCEg.net]
>>182
Cのスキャナって正規表現だけで表現できるんか?(構文解析しないで良いエディタのhilightingとかは大丈夫だけど)

199 名前:デフォルトの名無しさん mailto:sage [2015/02/22(日) 01:27:09.68 ID:0QFgdJ2i.net]
>>191
了解。

SmalltalkのVM上でDalvik VM用のclassも動かしたいんですが、
いちいちDalvik用のVMまで作るのがメンドイです。
Dalvik用のclass形式からJavaVM用のclass形式に変換するオススメのLibraryを教えて下さい。
Libraryの言語はSmalltalkに書き直しますので何でもいいです。

200 名前:デフォルトの名無しさん [2015/02/23(月) 17:30:23.57 ID:FikKUZMK.net]
>>192
scannerってlexerの一部。
lexer=scanner+tokenizer



201 名前:デフォルトの名無しさん [2015/02/23(月) 17:38:19.44 ID:FikKUZMK.net]
>>193
JEBはDalvikのdecompilerだから、コンパイルすればJVMのbytecodeに出来る。
https://www.pnfsoftware.com/

202 名前:デフォルトの名無しさん [2015/02/23(月) 17:41:10.47 ID:FikKUZMK.net]
javaで書いたDalvikのVM
www.eflow.jp/topics/090317.html

203 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 22:14:05.07 ID:Fe2dvIpV.net]
C++で完結するって所に惹かれてboost::spiritを試してみたが…、これは死ねる。

204 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 01:43:04.58 ID:f8A7qwV2.net]
共通部分式の除去のやり方がわかんねえ
定数伝播、四則演算も含む組み込み関数の畳み込み、使わない変数の除去、
ループ展開等を同じパスでやってるんだけど
共通部分式の除去とそれをやるのに必要な不変式の判定はまた別でやった方がいいのかな
不変式かどうかはループ最適化でも使えそうなんだけど混乱してきた

205 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/24(火) 08:04:58.95 ID:UGr8Bbp/.net]
>>198
ある計算式eについて、eの部分式を互いに参照するエントリーとして再帰的にテーブルに登録する。
登録するときにソートと重複チェックを行えば、テーブルは一意化できる。
テーブルの各エントリーの参照構造は、木構造のノードを成す。

206 名前:デフォルトの名無しさん [2015/02/24(火) 11:33:08.23 ID:wemgVVUb.net]
>>198
式の属性に関する再帰方程式の近似解をニュートン法のように求めること、
これがデータフロー計算解法の本質と理解できてないんじゃない?
ドラゴンブックのavailable, killedの説明の所読んでみれば?
同じパス内でループしながら収束するまで計算するのよ。

207 名前:デフォルトの名無しさん [2015/02/24(火) 11:35:18.85 ID:wemgVVUb.net]
ドラゴンブックのどの節か書こうとしたけど本が見つからない...
とりあえず、ここのp.10から。
dragonbook.stanford.edu/lecture-notes/Stanford-CS143/20-Optimization.pdf

208 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 17:44:49.00 ID:H95vOz7j.net]
>>199
そのテーブルに式を入れるときその式が不変かどうかを判断する部分でわからなくなってくる

>>200
ほとんど読んでないドラゴンブック見たら最適化部分についても書いてるな
これ読むの辛いな
頑張って読んで出直すか

209 名前:デフォルトの名無しさん [2015/02/24(火) 17:53:23.22 ID:avE+zAm1.net]
多分ちゃんと読んだ方がかえって早い。

共通部分式A,Bがあって、例えばBの方の除去をやると、
Bの到達性がAの到達性にも付与される。
このことは他の属性に影響を及ぼしうる。
よってもう一度計算をしないとより正確な属性を求められない。
以下ループ。
よって収束するまで繰り返すことになる。

210 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 18:04:39.54 ID:H95vOz7j.net]
変化がなくなるまで最適化処理を繰り返すのはわかった



211 名前:デフォルトの名無しさん mailto:sage [2015/02/24(火) 19:26:42.04 ID:wUDy2moe.net]
>>197
コンパイル時間がか?

212 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/02/24(火) 20:45:40.84 ID:UGr8Bbp/.net]
__declspecとか__attribute__などをパースできないと正確な構造体型のサイズ
を求めることができない。しかしattribute周りの文法がメチャクチャやなあ。

213 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/03/03(火) 01:05:04.60 ID:t6l1EelO.net]
次は"typed value"の扱いだな。定数にも型がある。型付きの値を
扱えなければ、正確な定数値を求めることはできない。

214 名前:デフォルトの名無しさん mailto:sage [2015/03/03(火) 04:49:45.03 ID:ZU1MaIS8.net]
最適化なんてイラナイよね、何処まで処理系に依存する気なんだよw

215 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 14:52:45.39 ID:u8r5MR2m.net]
初心者だがHSPって凄いね
自分でHSPみたいなの作ろうとすると途端につまづくw
内部でメッセージハンドルに登録していく言語だと思うんだけど
こんなにwinを感じさせない文法でwinと親和性高く作れるとは

216 名前:デフォルトの名無しさん mailto:sage [2015/03/08(日) 17:15:18.44 ID:8c6PRT7L.net]
ランタイムの機能の量で躓くならともかくあの文法でつまづくなら>>1で概要把握して本読めば

217 名前:デフォルトの名無しさん [2015/03/09(月) 14:52:03.75 ID:MIZIuI1f.net]
文法とOSに何の関係が?

218 名前:デフォルトの名無しさん mailto:sage [2015/03/09(月) 16:12:25.65 ID:J8WIpDef.net]
いただきジャンガリアンに辛酸をなめさせられたのだろうよ

219 名前:デフォルトの名無しさん mailto:sage [2015/03/09(月) 17:25:40.74 ID:VM1FVYaf.net]
うーん初心者だから言い方わかんないんだけど
コマンドプロンプトのスクリプトってコマンドに従って単に実行していくだけだよね
でもwinだと実行されるのは素直に考えるとメッセージが来たとき
cでウインアプリつくるときはメッセージ毎に処理を書くけど上から順に読むスクリプトは
それはできないわけだからどう整合性取るのかなってことで悩んでた

結局メッセージ毎にリストがあってコマンドを読んだらそのリストに関数ポインタ名で追加、
メッセージ毎に呼ばれる関数はその種別のリストを上から順に実行していく
こんな感じで作ったけどこれでいいのかな

220 名前:デフォルトの名無しさん [2015/03/12(木) 21:28:48.21 ID:BlO2EFmA.net]
そりゃ文法じゃなくて実行モデルだな。
イベント駆動ってことでしょ。



221 名前:デフォルトの名無しさん [2015/04/13(月) 21:09:38.60 ID:qtTodoaL.net]
「Cのコンパイラなら何日かかけて作っても良いが、C++は、一人で
作るのは嫌だ。文法をきちんとカバーするのに日数がかかりすぎるから」
と言われたよ。

222 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 02:22:50.19 ID:eOWj6Ffd.net]
javaに近い構文の言語をつくろうとしてるんだけど、
ようやくchar配列に変換したソースから関数の外側を構文解析できた。

山括弧<>、文字列リテラル、コメントに気をつけつつ、
なんとか関数の中を無視してクラス・変数・関数の名前や型名を取得して
関数の中身にとりかかるところ。

関数の中身は丸括弧()が難関になりそう。
AAAA bbbb = ((HHHH)cccc.dddd.eeee(ffff.gggg(), jjjj)).iiii();
bbbb.kkkk = -10/(8-3)-9/-3

223 名前:デフォルトの名無しさん [2015/04/22(水) 20:33:48.48 ID:rBARkljm.net]
>>216
まるで違う言語に見えてしまうのだが。

224 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 21:30:55.14 ID:eOWj6Ffd.net]
>>217
最初はクラス名、メンバ変数、メンバ関数を全部調べてからじゃないと
関数の中身に取り掛かれないと思ってた。

でもクラス名・変数名・関数名に区別は不要で、記号をヒントに階層を分解して、
それから型名の存在の有無・整合性を調べるという風にフェーズを分けれそう。

でも()が演算の優先順位、型キャスト、メソッド...どれに使われているのか
区別できるかは不安。for文とかは最初に予約語が入るからやりやすそうだけど。

Person person = ((Factory)group.cache.getFactory(provider.getResource(), url)).create();
person.id = -10/(8-3)-9/-3;

225 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 22:59:19.66 ID:LKLiXgla.net]
いまいち分からないけど、識別子の次にあったら関数呼び出しで
それ以外は式とかでいけないの

226 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 23:28:51.38 ID:eOWj6Ffd.net]
いけるか分からない。とりあえずやってみるってところ

227 名前:デフォルトの名無しさん mailto:sage [2015/04/23(木) 08:14:58.39 ID:+O6VWDUu.net]
>>219
構文次第
てか、普通識別子に続くカッコを見て初めて関数/メソッドってわかるわけだし

228 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 01:02:40.49 ID:RiYFohCl.net]
メソッドの中が上手くいかんというか何から始めたら良いのか分からん
コンパイル速度が遅くなるけど、分解フェーズを何層にも分けて
何度もループで調べていけば良いのかな

229 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 06:59:39.15 ID:EFAP6joI.net]
コンパイラの教科書の一冊でも読んで構文解析を勉強してみ

230 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 09:38:16.26 ID:ZDDsb7dY.net]
C系のクソみたいな構文ルールをそのまま真似てどうすんの
自作なら作りやすいようにキーワード追加すればいいのよ

キャスト式にキーワード付けなかったのは最大の誤りの一つ



231 名前:デフォルトの名無しさん [2015/04/27(月) 09:56:10.90 ID:qDIHhHi0.net]
SSA形式からスタックマシンのコード生成の最適化みたいなのに参考になる文献ってないかな?

232 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 14:22:00.53 ID:RiYFohCl.net]
>>224
そうだね。HaxeとかFlashからぱくって、C形式のキャストは無くしてみるわ
int i = cast Integer ( 0.005f );
int i = 0.005f as Integer;

233 名前:デフォルトの名無しさん [2015/04/28(火) 18:20:14.24 ID:PlNb5vya.net]
最終的に何を目指そうかしら

1)LLVMで動かす 
→ 超難しそう

2)Luaのように組み込みスクリプトとして動かす 
→ 重そう。メモリ管理は全部ウィークポインタで良いのかな
(C/C++組み込みならnew&deleteするようなスクリプトでも良さそう)

3)JavaScriptなどに変換 
→ たぶん例外のバックトレースとかを変換するデバッグ環境が必須

234 名前:片山博文MZ ◆T6xkBnTXz7B0 [2015/05/05(火) 23:02:55.34 ID:p1RbtT4Y.net]
コンパイラーの品質保証は、数学で証明する時代だ!!!
Coqと数学でコンパイラーが作れる!!!
compcert.inria.fr/compcert-C.html

235 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 18:57:31.49 ID:SYpntI8c.net]
バイトコードインタプリタつくっているんだけど
スタックマシンのコンパイラについて
パラメータスタック(データスタック)はヒープ上におくべき?
それともネイティブの領域におくべき?

236 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 19:41:52.28 ID:SYpntI8c.net]
>>229
訂正
コンパイラー>仮想機械

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で非常に効率が良いし

338 名前:デフォルトの名無しさん [2015/12/26(土) 20:17:52.51 ID:nC5MMPRS.net]
CPUで何でも出来るようになってしまったら、
マの出番はどんどん減ることになりそうだな。
大昔は、足し算と引き算は出来るのに、掛け算と割り算が出来ないのが
当たり前だったからな。30年くらい前のものだとな。

339 名前:デフォルトの名無しさん [2015/12/28(月) 10:04:16.17 ID:VJBFmUt0.net]
ランダムデバイスに頼るのが良いのか、迷ってしまいそうだな。
こういうのを読んでしまうと...。

ttp://cpplover.blogspot.jp/2013/07/blog-post_14.html
ハードウェア乱数生成器は信頼できるか

340 名前:デフォルトの名無しさん mailto:sage [2015/12/28(月) 10:25:27.73 ID:1a7EtF6d.net]
NSAと戦ってる人か



341 名前:デフォルトの名無しさん mailto:sage [2015/12/28(月) 12:54:32.70 ID:dgI6+oKo.net]
>>329
よくわからんけど生成された値を適当な鍵使って AES 暗号化するんじゃ駄目なの?

342 名前:デフォルトの名無しさん mailto:sage [2015/12/28(月) 12:58:36.44 ID:b3qQlUF/.net]
OSを作る時の話になってるから適当な鍵をどこから持ってくるか熟慮しないといけない

343 名前:デフォルトの名無しさん [2015/12/31(木) 19:14:36.65 ID:shZW63x7.net]
一度に数十個の乱数を生成するコードを書き、重複チェックを忘れる俺は、
やはりマには向いていないのかもしれん。コード記述の時点で
重複することが頭から抜けていた。ついうっかり...。

344 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 03:47:17.29 ID:xJBQ4MUG.net]
>>329
自分の方が質が高いのを用意できるわけw

345 名前:デフォルトの名無しさん [2016/01/05(火) 10:14:26.10 ID:n8GHd5T0.net]
「ハードよりも、俺の方が正確に動く」と、
一度で良いから言ってみたい。

346 名前:デフォルトの名無しさん mailto:sage [2016/01/06(水) 02:04:42.23 ID:DSMnLqrW.net]
楽するためにプログラミングするのであるが
一向に楽にならず

347 名前:デフォルトの名無しさん [2016/01/07(木) 17:58:56.46 ID:3JUqZlZh.net]
>>336
顧客が楽になっているだろw
裏でマが血のにじむような努力をしていることを、知る由もないからな。

348 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 18:29:10.67 ID:E6rodr+5.net]
70点じゃなくて55点で妥協すれば
費用が100分の1になるって教えてやれよ

349 名前:デフォルトの名無しさん [2016/01/10(日) 10:05:01.35 ID:KKgUy8RE.net]
>>338
それは、「バグ入りソフトを出荷する可能性も高くなる」諸刃の剣では?

350 名前:デフォルトの名無しさん mailto:sage [2016/01/10(日) 12:22:10.90 ID:a81L0ZQ5.net]
妥協するのは仕様でしょ
仕様で無理難題いうの辞めたら
コストも下がるし品質も上がるみたいな
けどスレ違いの話じゃね?



351 名前:デフォルトの名無しさん [2016/01/11(月) 20:54:13.20 ID:J50s7Qe5.net]
「妥協しないワガママな顧客」に、
「見積もりを二桁足して出したら、予想通り、注文が来なかった」
と言っていたな。最初から断る口実だったのかな。

352 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 19:46:25.75 ID:7kdSKUGZ.net]
>>338
66.66 点くらいで負かりませんか?

353 名前:デフォルトの名無しさん [2016/01/13(水) 17:31:32.57 ID:DkyDX7cg.net]
>>342
それだと、100万円の費用を85万円に値引くのが限界では?

354 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/15(金) 20:05:16.26 ID:ds1B8EUq.net]
C言語の呼び出し規約に関する文法に
詳しいサイトとかソースとかありますか?

355 名前:デフォルトの名無しさん mailto:sage [2016/01/15(金) 22:22:03.06 ID:EuNWEiBo.net]
そこで言う呼び出し規約ってのは引数がスタックでどう配置されるかって話?

356 名前:デフォルトの名無しさん mailto:sage [2016/01/15(金) 22:31:09.13 ID:+0giQcLD.net]
呼び出し規約に関する文法って何ぞ?

357 名前:デフォルトの名無しさん mailto:sage [2016/01/15(金) 22:55:08.00 ID:y9x+XKWj.net]
C言語のABIは色々あるぞ
基本はcdeclかstdcallだけど
スタック使わずレジスタでやりとりしたり
環境や処理系毎に異なる

358 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 00:11:40.49 ID:4AnwHYnZ.net]
呼び出し規約自体は文法に現れんと思うが

359 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 01:23:45.39 ID:7+H4Uotl.net]
上のcdeclとかstdcall辺りが関数の属性値として付くぐらいじゃないかと
文法的にはこれらは両立しないから複数書いたらエラーとかその程度でしょ

360 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 01:24:46.12 ID:7+H4Uotl.net]
それとgccの__attribute__())構文なんてのもある
括弧



361 名前:の中はもう何でもあり []
[ここ壊れてます]

362 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/16(土) 12:33:39.48 ID:lRbtk3RI.net]
属性について調べればいいのか
ありがとさん

363 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 12:54:05.36 ID:H0Ul8NcN.net]
>>347
独自指定子、pragma指定、
FORTRANのライブラリ呼び出すのあったね
今はextern宣言か
extern "C++"とか

364 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 14:03:21.22 ID:WTe5Q/ML.net]
サポートされる種類は環境依存だし
構文は実装依存だから
規格では書いてない
とりあえず wikipedia 見れば

365 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 06:53:14.27 ID:TV7ry5Rb.net]
>>353
環境依存と実装依存ってどう使い分けてるんだ?

366 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 08:53:28.44 ID:XM4mBu50.net]
>>354
実装であるgccはいろんな環境(プラットフォーム)で動いてる
構文はどの環境でも同じだが
どんな呼び出し規約のライブラリがあるかは

環境ごとに違う

367 名前:デフォルトの名無しさん [2016/01/19(火) 11:13:57.61 ID:79hXpIDE.net]
新しいコンパイラを作る際、わざわざ「手動でスタックを積み上げたり
開放したりする」命令は、あった方が良いのかな?
メモリ節約や速度に直接、関係するなら言語仕様を作る段階で
考えるけどね。今のパソコンはスピードが速いから、不要といえば不要かも
しれないが。

368 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:41:03.92 ID:uAThxx94.net]
そのレベルならインラインアセンブラみたいな
抜け道を作るかどうかって話になるんじゃないの

369 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:16:12.58 ID:j62B2E0v.net]
>>356
命令ってどういうこと?
Cのallocaみたいなのを言ってるの

370 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 23:54:06.44 ID:Xdnj5x+8.net]
確保開放やらはSPレジスタをいじるでいいんじゃないかな・・・
SP変更時に無効なSP値だったらエラーにするとかその程度で
コンパイラもよほど変な事しない限りpush/pop命令なんて使わんし



371 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 12:29:31.81 ID:zFAeGKrq.net]
>>356
言語自体の仕様にも依るんじゃないかな。
あと用途とか。

モノリシックカーネルのドライバ書くのに使いますーCとアセンブリの良いとこ取りですーってんなら
手動でスタック積んだり降ろしたりする命令も使うだろうけど
いまいち用途がピンと来ない。

仮にllvm-irの使用を前提にするなら、ネイティブのスタック積んだり下ろしたりするのって意味あんの?っていう議論もありか?


言語仕様を練ってて
シンプルな構文にシンプルな継続(のようなもの)を追加したら
全体的に美しさに欠ける感じになって悩んでる。

372 名前:デフォルトの名無しさん [2016/01/22(金) 12:29:02.92 ID:97wZpIfH.net]
高級言語の側で、わざわざ、pushやpop命令を言語仕様に入れる必要は
なかったか。メリットも予想ほどないみたいだな。
実行上で、スピードアップになるかと思っていたが。

373 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 12:55:06.86 ID:8nADuqf6.net]
メモリやキャッシュはレジスタよりずっと遅いからなぁ。
レジスタへのアクセスに対してL1キャッシュのアクセスには2〜3倍の時間が掛かるって言われてる。
つまり、レジスタ間mov命令に対してpush/popは1命令あたり2〜3倍遅いって事だ。

C言語のregister修飾子は知ってる?変数がレジスタに乗っかるようにする為の物なんだけど。
グラフ彩色で変数生存期間に対するレジスタの使用を最適化出来る事が知られる以前の産物だから、今は滅多に使われないけどね。

374 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/22(金) 13:18:42.18 ID:0V0RVdAH.net]
バイト列xからバイト列C(x)への変換器Cがあるとき、
Cの逆変換器C^(-1)を求める一般的な方法は何か?

375 名前:デフォルトの名無しさん [2016/01/22(金) 20:49:57.23 ID:TW3FacBd.net]
>>363
逆アセンブラです。

376 名前:デフォルトの名無しさん [2016/01/22(金) 21:58:03.16 ID:bvwDmPF2.net]
変換器Cの変換の性質がbijectiveであるという条件をつけなければいけないのではないか。

377 名前:デフォルトの名無しさん mailto:sage [2016/01/22(金) 22:13:13.93 ID:9qqofano.net]
この方法が分かれば、どんな暗号文も解読できるね!

378 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/22(金) 22:54:36.97 ID:0V0RVdAH.net]
数学板でじっくり考えることにしたよ。

有限数列上の変換について [無断転載禁止]・2ch.net
wc2014.2ch.net/test/read.cgi/math/1453437840/

379 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 09:04:11.89 ID:VPAh/uPo.net]
変換器が可逆計算できるとは限らないから一般的な方法は無いだろ。

380 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 15:07:58.00 ID:0d2orZXz.net]
メモ化とテーブルルックアップw



381 名前:デフォルトの名無しさん [2016/01/31(日) 19:36:30.55 ID:T/RwY0g5.net]
多少勉強すると、いまさらながら、Cがアセンブラにかなり近いレベルの
言語であることが、良くわかるな。
その分、マスターするのに時間もかかったが。

382 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 19:52:06.23 ID:Vno/qq2m.net]
C言語をマスターしたって奴は絶対に信用しないことにしている

383 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 20:53:44.66 ID:7LoAMsY1.net]
入門書一冊読みました=マスターしました

384 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 21:17:31.75 ID:QH+McMgz.net]
これが本当のマスターベーション

385 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 16:11:44.37 ID:aq9Mx2ga.net]
そんなあなたにスタンディングマスターオベーション

386 名前:デフォルトの名無しさん [2016/02/02(火) 10:57:23.41 ID:9eq1u0GM.net]
>>371
「C言語をマスターしました」
という奴の化けの皮をはがすのは、意外に簡単だからな。
簡単な計算機プログラムを書かせるか、あるいは、ピタゴラスの定理の
コードでも書かせるか。もっとも、そこで化けの皮がはがれるようなら、
とてもコンパイラの領域まで、進むことは出来ないだろうな。

387 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:36:11.92 ID:7f7wf/mW.net]
コンパイラを書ける最低レベルに達しているかどうかの判定がしたければ
「入力された多項式を微分する関数書くならどう書く?」ってくらいは聞きたいけど。
C言語云々じゃなくてデータ構造とアルゴリズムの問題だけど、
Cでやるならポインタと再帰とラムダ算法について知ってなきゃ答えられない。

388 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 20:19:50.93 ID:WkrnCzmR.net]
>>376
単純な多項式に限定していいなら再帰いらんでしょ
最終的に多項式に変換できる式と言うなら別だけど

389 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 22:20:22.51 ID:7f7wf/mW.net]
>>377
すまん
素で項数無限だったり微分不能な関数が入ってたりしないって意味で多項式って言っとったわ。
log(x^2+8*x)とかsin(kx+wt)とかも多項式(笑)

390 名前:デフォルトの名無しさん [2016/02/03(水) 11:44:18.92 ID:tCheJck0.net]
面接時「Cを三年ほど仕事で使っていました」
   ↓
採用後「誰だ。あいつを採用したのは!」

「最低、Cを仕事で三年間使っていること」
を条件に採用した会社で、こんなこともないわけではないからな。
本人の申告ほどあてにならないものはない。コンパイラ作成に到達する
など、夢のまた夢。



391 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 11:59:22.08 ID:uEOUJl1K.net]
他人の突っ込んだバグを直せるのが中級者
自分の突っ込んだバグを直せるのが上級者
それ以外は何の参考にもならない

392 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 12:36:45.52 ID:Gb259GwX.net]
それ以外っつーとどんなバグも直せない奴か
そりゃ確かに考慮に値しないな

393 名前:デフォルトの名無しさん [2016/02/03(水) 13:57:01.05 ID:WaqhOfMD.net]
まあもともとCはコンパイラを書くには向いてないからな
GADTとかある関数型言語で書くのが一番楽

あとコンパイラが糞になるのは大抵対象言語の糞文法と糞デザインのせい

394 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 13:57:40.61 ID:WaqhOfMD.net]
Rubyがなぜあんな巨大な糞なのかというと(お察しください

395 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 14:06:49.98 ID:uEOUJl1K.net]
実用性を求められそれに応えるごとに汚れていくのさ
ピュアでいられるのはお子様だからさ

396 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 14:17:35.65 ID:WaqhOfMD.net]
残念だがルビーの文法とデザインが腐ってるのは初期からだw

397 名前:デフォルトの名無しさん [2016/02/04(木) 01:55:33.07 ID:VXt+BkjY.net]
        ∩___∩                     ∩___∩
    ♪   | ノ ⌒  ⌒ヽハッ    __ _,, -ー ,,    ハッ   / ⌒  ⌒ 丶|
        /  (●)  (●)  ハッ   (/   "つ`..,:  ハッ (●)  (●) 丶     今、どんな気持ち?
       |     ( _●_) ミ    :/ MZうy  ::::::i:.   ミ (_●_ )    |        ねぇ、どんな気持ち?
 ___ 彡     |∪| ミ    :i        ─::!,,    ミ、 |∪|    、彡____
 ヽ___       ヽノ、`\     ヽ.....:::::::::  ::::ij(_::●   / ヽノ     ___/
       /       /ヽ <   r "     .r ミノ~.    〉 /\    丶
      /      /    ̄   :|::|    ::::| :::i ゚。     ̄♪   \    丶
     /     /    ♪    :|::|    ::::| :::|:            \   丶
     (_ ⌒丶...        :` |    ::::| :::|_:           /⌒_)
      | /ヽ }.          :.,'    ::(  :::}            } ヘ /
        し  )).         ::i      `.-‐"             J´((
          ソ  トントン     Darkなんちゃら…              ソ  トントン

398 名前:デフォルトの名無しさん [2016/02/04(木) 13:25:41.80 ID:+rC6IKS8.net]
優れた文法を手本とするには、どの言語が良いんだ?
どれもこれも長所と短所があるし。

399 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 15:53:27.61 ID:69F/iNHk.net]
優れた文法とは。

400 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 16:18:01.49 ID:ri7+Aiuk.net]
5色のうちからユーザーが好みのものを選べるのがいいんじゃないか



401 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 16:29:33.62 ID:69F/iNHk.net]
5色か

Whitespace
H9Q+
brainfuck
Lazy K
INTERCAL
あたりの文法を参考に・・・・・・

402 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 13:29:53.12 ID:BBqIJr5G.net]
フロントエンドとミドルエンドとバックエンドに分けてフロントエンドはユーザーが作れるようにしておけばいいんじゃないのか?

403 名前:デフォルトの名無しさん [2016/02/05(金) 20:10:50.78 ID:um7ZPY3u.net]
>>388
言語仕様に「整合性がある」言語の事だが。
一長一短だからな。

404 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 21:49:15.21 ID:hmTKeVMY.net]
でもテンプレートの奥深くみたいな訳の分からないエラーメッセージとか無しでな

405 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 22:53:24.24 ID:AF25xcuE.net]
ミドルにエンドは無いと思うんだが、LLVMがそんな呼び方してるのはなんか意図があるんだろうか

406 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 00:48:13.75 ID:utAdfs60.net]
>>392
大概の言語仕様は無矛盾だと(=整合性があると)思うけど。

407 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 10:06:04.94 ID:XRyA0EjL.net]
最強言語(キリッ
でも標準ライブラリも効率的なデバッグの仕組みも考えたことすらありません

408 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 12:37:09.68 ID:4z0/BkxB.net]
そもそも文法がマトモにパーズできるようなものでないと
処理系がバグりまくる(C++や

409 名前:Rubyの惨状を見よ)

静的型を用意するなら型理論に沿ったマトモな型システムでないと
処理系がバグりまくる(C++テンプレートやSwiftの惨状を見よ)
オブジェクト指向と関数型の変な折衷をするとこれまた型が
アレになって走査パスが増えて処理系が超遅くなる(Scalaの惨状を見よ)

人間が読めて、他のプログラムから容易に生成できて
(これは文法が糞だと目も当てられない事になる)、
マトモな言語機能を持った言語以外を作るなと言いたい
CやLispより退化してどうするんだ
[]
[ここ壊れてます]

410 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 15:40:31.20 ID:lxi6Zpfn.net]
手段が目的になってる人はそう思うんだろう



411 名前:デフォルトの名無しさん [2016/02/07(日) 11:42:14.16 ID:CwVox+Js.net]
かなり昔の事だが、C++のANSI規格作成で、携わっていた委員の一人が、
C++の文法の一部を誤解して覚えていたことが発覚し、周りに苦笑された
事もあったらしいからな。
「言語仕様を作る側」の頭のレベルも念頭に置かないと。
それでなければ整合性には程遠い。

412 名前:デフォルトの名無しさん mailto:sage [2016/03/09(水) 17:29:58.75 ID:ISN2ur/+.net]
gccですら実装を見送る規格は止めてほしい
CとC++の中間ぐらいの言語が欲しい
プリプロセッサとテンプレートは採用で

413 名前:デフォルトの名無しさん [2016/03/14(月) 22:18:27.17 ID:5P+EA/8R.net]
名前空間付きC言語程度の言語つくってみようかしらん
特に目的はないけどこれなら作れそうくらいな動機で

414 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 19:07:41.78 ID:RIoPtDsj.net]
>>401
前方参照OKにしてくれ

415 名前:デフォルトの名無しさん mailto:sage [2016/03/15(火) 23:33:07.78 ID:8e1lo7mI.net]
前方宣言のことだよね?
名前空間のインターフェースみたいなのできたら面白いかも

416 名前:デフォルトの名無しさん mailto:sage [2016/03/16(水) 21:23:00.37 ID:ejdJRW9Z.net]
いや、多分、前方宣言じゃなく、前方参照のことだろう

417 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 11:20:18.13 ID:U4keFPtS.net]
前方参照でC++でもいまだにエラーとしてる理由って何だっけ
2パスを嫌ってる?
でもC++って何パスもしてる気がするよね

418 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 11:51:54.16 ID:go3n9QI1.net]
Java「クラスの外に宣言書けないようにすればいいのに」

419 名前:デフォルトの名無しさん mailto:sage [2016/03/17(木) 19:00:40.54 ID:HqjZona4.net]
ヘッダーファイルという糞文化

420 名前:デフォルトの名無しさん mailto:sage [2016/03/19(土) 04:08:08.77 ID:YkVYTtmN.net]
ポインタは*がなんかダサくて嫌だ



421 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 01:20:09.95 ID:rf8iBlA4.net]
3大OSで動くようにjavaでランタイム書こうと思うんだがポインタないのが不便だね
C言語ソースに変換するほうが楽だと思うけどもう少し粘る

422 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/22(火) 02:43:19.96 ID:p3cxKPtY.net]
LLVMの話はここでいいんだよな?

LLVM+Clangを仮想Ubuntuでビルドしているが、かなり時間が掛かる。
三日間以上か。やはりC++コンパイラを仮想環境でビルドするのは無理があるのか。
実機なら数時間でビルドできるのだろうか。

423 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 06:20:07.57 ID:2k6rwd23.net]
>>409
もうC#でよくね?

424 名前:デフォルトの名無しさん mailto:sage [2016/03/22(火) 13:27:29.78 ID:YJW8F40f.net]
>>410
仮装マシンの設定間違ってるだけじゃないの?(メモリ配分とかCPU割り当てとか、Networkドライブでコンパイルしちゃったとか)

425 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 03:14:26.98 ID:o57PmMMS.net]
とりあえず関数の外側までパースしつつJVMのバイトコードを勉強してる
helloworldするためのprintln()はどうやって作ればいいのだろう?

426 名前:デフォルトの名無しさん mailto:sage [2016/03/23(水) 10:56:44.60 ID:fhNbIMvx.net]
>>413
JVM にはI/Oはない。 ネイティブコードのライブラリに投げる。

427 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 00:41 ]
[ここ壊れてます]

428 名前::07.93 ID:LUc1dGhA.net mailto: >>414
つまり最初にネイティブコードを呼ぶ仕組みが必要なのだろうか?
難しそうだし、暫定的に組み込み関数を標準APIとして用意するに留めたいなあ
[]
[ここ壊れてます]

429 名前:デフォルトの名無しさん mailto:sage [2016/03/25(金) 06:42:35.83 ID:IRDGuB0e.net]
その組み込み関数=ネイティブコードのライブラリなんでは・・・

430 名前:デフォルトの名無しさん mailto:sage [2016/03/26(土) 08:43:48.51 ID:drxQ1xsy.net]
何がしたいのか分からん
JVM を呼ぶフロントエンドとグルーを作るだけなんでしょ



431 名前:デフォルトの名無しさん [2016/03/31(木) 23:33:53.46 ID:m6GiZo6g.net]
業務ソフト開発用のコンパイラと、ゲーム開発用のコンパイラは、
当然、分けて考えないとダメだよな?

432 名前:デフォルトの名無しさん mailto:sage [2016/04/01(金) 03:11:11.66 ID:38psm3gC.net]
>>418
だめとは何が?
成果物によっては業務だと下手すると死人が出る
ゲームだと下手するとクレームで会社が倒産する
でもその成果物はコンパイラ以外にも色んな工程を経て作られたものだから
最終的にコンパイラが原因だったとしてもコンパイラやその開発者が追及を受ける謂れはない
例えばキミの作ったゴミコンパイラで死人が出たとして責任とれますか?

433 名前:デフォルトの名無しさん mailto:sage [2016/04/01(金) 12:33:03.11 ID:EVZZ0pNr.net]
そのときは体で詫びます

434 名前:デフォルトの名無しさん mailto:sage [2016/04/01(金) 13:14:37.42 ID:TsVr6Gke.net]
業務なら信頼性と生産性重視
ゲームなら実行時の性能重視 欲を言えばGPUのデバッグしやすければ勝つる

つうか強みをわかりやすくバーンと出して後は選んでもらうだけだべ

435 名前:デフォルトの名無しさん [2016/04/02(土) 11:20:43.68 ID:5nWyUO1B.net]
30年以上前に出た、ゲームセンターにあるゲームは、
意外にバグを多く含んでいたんだよな。それを承知で、
みんな遊んでいたから。コンパイラのせいには出来ないだろうが。
初期のナムコ製品なんて、バグ発見と、それを悪用した点数稼ぎが
やたら多かった。

436 名前:デフォルトの名無しさん mailto:sage [2016/04/02(土) 12:06:49.67 ID:pO9IxWzb.net]
支障のあるバグだけど修正困難なので放置されていた
というのが正しい

ゲーセンのインカムに影響するようなバグは回収されるはず

数年前にサ○ラ大戦のパチのバグで回収になって
50億の損害が出たとかあったな

437 名前:デフォルトの名無しさん mailto:sage [2016/04/02(土) 12:24:29.40 ID:k2fP1WMZ.net]
>>422
その頃のアーケードゲームはコンパイラつかってないだろ、8ビットでz80、良くて6809の時代でコンパイラはi8080向けの LSI-Cが出たか出ないかの時代だぞ
>>423
サクラ大戦ってそんなに売上げあったん?

438 名前:デフォルトの名無しさん mailto:sage [2016/04/02(土) 19:15:30.37 ID:P1i243h5.net]
>>424
> サクラ大戦ってそんなに売上げあったん?
ゲームじゃなくてこう言う話でしょ
slosoku.com/archives/5072231.html

439 名前:デフォルトの名無しさん mailto:sage [2016/04/02(土) 22:12:51.38 ID:k2fP1WMZ.net]
>>425
パチスロかパチンコなのね

440 名前:デフォルトの名無しさん mailto:sage [2016/04/03(日) 02:39:40.29 ID:iadWYSqN.net]
千円の物が百万個売れると10億なので
ゲームの方も50億くらいはあるんじゃないの



441 名前:デフォルトの名無しさん [2016/04/03(日) 21:47:29.31 ID:2hoiGC6I.net]
その昔、ナムコのゲーム開発部隊では、OSを作っていたのが二人いたそうだ。
苦心惨憺の末、ギャラガというゲームを作ったライトサイドプログラマー
の大森田氏。一方、ダークサイドプログラマーとして名高い島岡弘氏。
今ではコンパイラ作りの情報はありふれているが、やはり、当時としては
相当凄かったらしく、一目置かれていたとか。

今だと、コンパイラ作るだけでは、誰も誉めてくれないからな。
中身を見るまでは、お褒めの言葉にも預かれない。

442 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/04/03(日) 21:57:18.40 ID:YoKWiOlG.net]
ヘイジャックども、英語の重要な技術文書をどんどん翻訳して
WikiBookやGitHubに上げていこっぜ、ベイベー。

443 名前:デフォルトの名無しさん [2016/04/04(月) 01:03:07.07 ID:DatNOwTQ.net]
>>429
MSの技術解説部分も、昔は翻訳するのに制限がかかっていなかったか?
そのためにVC++を使いこなすために英文マニュアルとの格闘に
なって苦労したぜ。C++特有のわかりづらさと、英文マニュアルと、
初めて使う統合開発環境に戸惑い、ドえらく時間がかかった経験が...。

444 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/04/04(月) 08:31:57.12 ID:P4S1l6wk.net]
>>430
翻訳権ってMSDNにもあるんかいな。
いい加減、日本の著作権法にもフェアユースを
明記してほしいよな。

445 名前:デフォルトの名無しさん mailto:sage [2016/04/04(月) 16:51:18.37 ID:nzuN3Nfl.net]
MindのUnicodeとか版コンパイラ作りたい

446 名前:デフォルトの名無しさん [2016/04/04(月) 21:22:22.97 ID:DatNOwTQ.net]
VC++のWindowsAPIの説明がわかりづらかったので、Delphiを使い始め
たら、同じく日本語化がまったくされておらず、詳しい人に聞いたら、
「翻訳してはならない」と聞かされて唖然としたよw
今では、遠い昔の話だが。

447 名前:デフォルトの名無しさん mailto:sage [2016/04/06(水) 23:25:48.22 ID:WLNAeUhL.net]
やっと関数の外側をパースできたわ

448 名前:デフォルトの名無しさん [2016/04/09(土) 04:04:13.10 ID:NXdWBRID.net]
「豊富なライブラリやツール群を用意した、高額のコンパイラ」と、
「格安のコンパイラだが、別売オプションのライブラリも用意しないと、
たいしたソフトは作れない」ものでは、商売上、どちらが賢いだろうか?

449 名前:デフォルトの名無しさん [2016/04/09(土) 04:51:56.27 ID:u1ofpue+.net]
どっちも無理

450 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 07:04:44.02 ID:FoBfIIvs.net]
頭いい大学行くとコンパイラ理論とか習えたのかな?

独学してるけどさ、あらゆる犠牲を払わなきゃ理解、応用するまでいかなくない?



451 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 09:51:43.80 ID:VHmuSaPj.net]
京大はCコンパイラを全員に書かせるって聞いた

452 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 10:55:12.53 ID:yIzAT5uL.net]
コンパイラを自作するのは意味があるけど
Cが引きずるクソ設計を知ったら二度とC/C++をつかわなくなるはず

453 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 16:46:46.79 ID:NknyIt7s.net]
PascalのコードをCのコードに変換するプログラムを作れとかいう
何も考えずに出題されたとしか考えられない課題にはマジで困った

まず、関数内関数とかCに無いですしお寿司
適当な名前付けてグローバルに放り出すとしても
それだけではローカル変数のキャプチャが出来ないから
どうすんだこれ?って感じで、まぁ引数で渡すしかないんだけど
課題提出までの時間も全然足りてないし、誰も出来なかった

454 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 17:17:55.52 ID:yIzAT5uL.net]
>>440
しかるべきところにぶち上げて資質を問うべき

455 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 17:43:08.14 ID:YNau7unG.net]
ローカル変数は参照渡しすればいいだけじゃね?

456 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 21:34:08.79 ID:YC7vrxdl.net]
>>440
要するに p2c 作れってことだろ
パクれとは言わんけどコード参考にすればいいだけ

457 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 02:18:39.46 ID:tVvAXki7.net]
>>440
それ何日でやれと言われたんだ? 不可能では無いけど課題と言うにはレベル高すぎてビックリ

458 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 03:55:26.52 ID:DcOaBboz.net]
昔の事でよく覚えてないが、一か月ぐらいじゃなかったかね、良くわからんが

笑えるのが、その

459 名前:\フトを作ること自体は前座でしかなく
その後、作ったソフトを持ち寄って、レビューか何かをするのが本題の講義であって
ソフトは皆で議論をする上での、ほんの話題のための「種」にすぎないってのがね
よくあるじゃない、プロジェクトマネンジメントとかコードレビューとかの
ちょっと実際のプロジェクトを模範した感じの、実戦風のワイワイガヤガヤ系の講義
あんな感じのやつだった
これがコンパイラの講義の課題ならまだわかるんだけどねぇ
どちらにせよ、プログラミング覚えたての学部生には酷な課題
二年生でC習って、三年生でいきなりこれ作れって、そりゃ無理ですって
普通にPascalのインタプリタ作るのだって、実力的にまだ厳しいのに
そこからさらにCに変換しろだなんて

いくつかのチームに分かれていて、チームごとに与えられる課題は違っていたんだけど
俺は最も簡単な課題が当たったから何でもなかったけど
[]
[ここ壊れてます]

460 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 09:23:24.83 ID:fTRAmtFw.net]
関数内関数ってトランスレーター的には別に難しくないだろ
3日もあればできるんじゃね



461 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 09:34:58.78 ID:372ncJJS.net]
>>440 > マジで困った
>>445 > 何でもなかったけど
痴呆症乙

462 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 10:26:51.59 ID:hSypwT6Y.net]
誰も提出できなかったけど本題じゃないから授業は進んだってことだろ

463 名前:デフォルトの名無しさん mailto:sage [2016/04/10(日) 11:06:35.40 ID:jQD3kWDp.net]
ただのホラフキ―じゃん

464 名前:デフォルトの名無しさん [2016/04/11(月) 11:50:30.22 ID:3nONGRtl.net]
大昔のMacはpascalでの開発を前提にしていたからな。
(Macツールボックスは、Pascalで呼び出しを前提にしていた)
途中からはCやC++用にツールは変貌していったが。

465 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 17:10:55.05 ID:suuESVM3.net]
>>450
なつかしすぎるなぁ、light speed Cとか買ったとき「ああ、これでCで書ける」などと感動したわ

466 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 18:25:37.58 ID:8c5Uimxv.net]
C言語より動的型付け言語の方が先に広まってたって意外だなあ

467 名前:デフォルトの名無しさん [2016/04/12(火) 02:21:49.83 ID:0eQ6kuw9.net]
AppleのMPW。あるいはハイパーカード。
Think Cや、Code Warriorなど、一時は、Macで夢のようなソフト作りに
あこがれた時期もあった。でも、遠い昔の話だ。

468 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 09:22:22.73 ID:Pd8H+utR.net]
静的型付けのほうが高度なんだよ

469 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 01:10:21.79 ID:inw4nZY2.net]
俺もアセンブラ→静的型→動的型の順で作られてきたと思ってたけど
ジョブスの伝記漫画でウォズがアセンブラでBasic作る話があったような気がする

470 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 01:14:40.21 ID:rXMD6+sH.net]
基本文字列だけでいいんだよ
型なんて文字列をどう解釈するかの話だよ



471 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 01:23:46.16 ID:2h1lI58Z.net]
>>455
しらないのか?Microsoft

472 名前:デフォルトの名無しさん [2016/04/13(水) 13:34:00.12 ID:a0UNLavD.net]
もっとも愛着のあるコンパイラは、Quick BASICだった。
遠い昔の話。でも、凄く使いやすかったんだよな。

473 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 17:57:30.26 ID:V3wVZgaP.net]
コンパイラの初心者本?

「Tiny BasicをCで書く」
出版社: ソシム (2016/4/22)
ISBN-10: 4802610203
ISBN-13: 978-4802610209

474 名前:デフォルトの名無しさん [2016/04/14(木) 00:25:42.75 ID:Nyx2HJFW.net]
関数の先頭にfunctionキーワードを付けるとして長すぎるから変えようと思うんだけど
doとかjobではおかしいかなあ?

475 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 01:10:11.46 ID:FsF2j7W4.net]
>>460
fnじゃだめなん?
Clojureだと(fn [arg] brabrabra)な感じ

476 名前:デフォルトの名無しさん [2016/04/14(木) 01:29:14.13 ID:Nyx2HJFW.net]
>>461
rustのfunc, iface, modとかもそうだけど省略形はいまいちだなと思う
rubyにfor() do {}構文があるんだけど、それで関数やラムダ式の記号に
do良さげかなと思うんだけどどうかな?

477 名前:Office & Gamers @ 試験運用中(トリなしw mailto:アハ♪” uh huh [2016/04/14(木) 02:42:08.95 ID:co1HctEv.net]
コンパイラの醍醐味は式の展開だから、ここを自分で書ければあとはそれほど難しくないw

478 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 08:30:10.02 ID:BY7gxQ6D.net]
define ならわかるが do はないだろう

479 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 09:12:23.12 ID:d9D6y2bX.net]
dogazer

480 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 09:35:38.15 ID:HeHUqy+f.net]
関数も変数もletで



481 名前:デフォルトの名無しさん [2016/04/14(木) 12:27:04.84 ID:kJxBjGsl.net]
予約語テーブルに何を入れるかが難しい。
何でも詰め込みすぎると、肥大化しすぎたC++になってしまうし。

482 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 18:04:51.72 ID:FsF2j7W4.net]
>>462
そうかなぁ?
一般名詞や動詞とかぶりそうも無い省略形ってコンピュータ言語には向いているとおもうのだ。
defunとかdefnとか
無名関数作るのにはUnicode圏が一般化した今ならλ一文字とか

483 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 20:06:31.03 ID:VC8/A0Ig.net]
略語もセンスがいるよな
ところで、defunって何の略?
どうでも良いけどλなんか変換しなきゃ出てこないし入力速度最悪だな

484 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 20:21:19.82 ID:gC/abIq/.net]
>>469
> defunって何の略?
DEfine FUNction じゃね?

485 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 20:43:14.68 ID:FsF2j7W4.net]
>>469
>>470氏が書いているけどdefine functionの略だよ、common lispとかemacs lispとかでつかわれてる
λ自体は”lambda”をテキストエディタ側で差し替えるとか一文字入力のマクロをバインドすればいいだけだと思うのだよね(IDE作り込みの一環)

どっちかっつーとワタシの一押しは関数定義の宣言句に省略形を許せば良くない?ってだけなのでスレ違いではある。

486 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 00:39:50.58 ID:SCILLDG5.net]
letはconstの代わりに使う言語があるね

関数宣言にdoがないとなると色々と候補に悩んでしまうぜ
job, fun, flow, verb, work, act(action)

487 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 01:15:23.96 ID:iuB497/s.net]
>>472
再代入を許さない言語だとletがconstと等価になるからじゃないのかな?

>>460
関数宣言がfunction hoge(args)と言う形をとる事をやめて予約語(function)無しでも可能な感じはしないでもないのだけど文法に制限って起きうるかな?

(Return型) function-name(Args....)
とか
function-name(Args):Return-Type
前者はCだし、後者はJScriptの宣言形式だけど、これじゃイヤな理由も思いつかない。
グローバル変数の定義とか外部変数定義とかのvar,static,externやら名前空間のnamespaceとかpackageとかimport等の特殊な予約語彙だけ文の開始から除外すれば後者の方法で関数は定義できると思うのだけど。

488 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 03:41:30.77 ID:SCILLDG5.net]
>>473
>予約語なくせば?
変数宣言でも関数宣言でも先頭に予約語が付いてIDEが色つけてくれ

489 名前:ス方が見やすいじゃない?

もしくは関数宣言をすべて関数ポインタ(クロージャ?)のみにして、変数化してしまうか?
var function-name = ->(args...){ ... }
[]
[ここ壊れてます]

490 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 16:43:33.52 ID:3szJoJiC.net]
基本的に、普通のブロックと、関数(クロージャ)との、区別をどうするかという問題が有るからね
普通のブロックは大体{ something }こんな感じだろうけど、これは呼び出しなしで即座に実行するのが普通
一方でクロージャは呼び出さない限りは実行されない
関数やクロージャなどを引数に取る関数が有ったとして
func_name( { something } );
こんな感じに呼び出した場合、{ something }を実行した結果を関数に渡すのか
{ something }その物を関数に渡すのか、コンパイラはよくわからない
func_nameの呼び出し引数の型がクロージャであることをコンパイラが分かっていたとしても
{ something }を実行した結果がクロージャになり、それを関数に渡すという可能性もあるのでコンパイラは判断できない
そのため、明確にするためにfunc_name( function{ something } );のように
何か普通のブロックとクロージャを区別する文法が要るのだね
そうこうしていると、Javascriptが出来上がる



491 名前:デフォルトの名無しさん mailto:sage [2016/04/17(日) 17:47:06.17 ID:SCILLDG5.net]
結局function代替ワードが必要だと気付く
ラムダ記号=>だと引数に使うときダサイもんね

492 名前:デフォルトの名無しさん [2016/04/18(月) 12:27:13.85 ID:keXFBRJQ.net]
新しいコンパイラを使うとき、「特有のクセのある」
のがグラフィック関数なんだよな。
個人的には、グラフィック関数も、ANSIで定めて欲しいくらい。

493 名前:デフォルトの名無しさん mailto:sage [2016/04/18(月) 13:16:18.87 ID:pknZG/q+.net]
グラフィックなぁ
b800:0000らへんを好き勝手に弄らせてくれるなら歓迎するのだわ # ネタが古いか

494 名前:デフォルトの名無しさん mailto:sage [2016/04/19(火) 13:33:12.70 ID:6Wh9TF6d.net]
8色でいいんか?

495 名前:デフォルトの名無しさん [2016/04/20(水) 02:49:26.81 ID:dZcIDvSg.net]
最近はいじっていないので、最新のツールはよくわからんが、
昔のツールでは、RGBの三原色を元に、すべてのグラフィックを
再現していたからなあ。今考えると、ずいぶん、原始的だった。

496 名前:デフォルトの名無しさん [2016/04/20(水) 05:43:15.95 ID:wqKcWsga.net]
>>480
最新をよくわかってないのによく原始的だと解るね?

497 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 06:55:13.29 ID:XnBYIzBk.net]
シマノのギアの仕組みをよくわかってない俺にもギアのないママチャリは原始的だと思う

498 名前:デフォルトの名無しさん [2016/04/20(水) 07:16:40.91 ID:wqKcWsga.net]
自転車に例えるなら車輪を回転させて走らせるのは原始的だったなぁって言ってるのが >>480 なんだけどね

499 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 07:52:09.40 ID:UfNx2Znx.net]
えっ今もRGBじゃないの?

500 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 08:22:02.22 ID:r07pzD8i.net]
>>483
それはお前が勝手にそう思ってるだけ
ギア付きのチャリより直結のチャリの方がより原始的なのはわかるだろ?



501 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 08:29:41.63 ID:r07pzD8i.net]
>>484
ツールって言うのか何を示すのか、グラフィックっと言うものの範囲にもよる
ディスプレイ表示機構に限定すれば RGB 以外のは見たことない
グラフィックツールの話なら HSB とかの他のカラーモデルを扱えるものはあるし、プリンタは CMYK だし
そもそもこのスレで長々引っ張る話でもないし

502 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 09:12:43.14 ID:UfNx2Znx.net]
CMYKなんて大昔からあった

503 名前:デフォルトの名無しさん [2016/04/20(水) 10:07:43.41 ID:wqKcWsga.net]
>>485
RGBっていうコンピューターグラフィックス上で今でも最も基本的な部分を指して原始的って言ってるからギア云々は的外れって言ってんの

504 名前:デフォルトの名無しさん [2016/04/20(水) 11:06:43.66 ID:fkY4xDrs.net]
グラフィック関数ってOpenGLとかそういうはなしじゃないのか・・・

505 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 12:29:24.43 ID:r07pzD8i.net]
>>488
だからそれってお前のちんけな知識で語ってるだけだろ w
どういう風に対応付けるかなんて色々あるのに知識のない奴ってそれしか思い付かないから自分の考えが一番って思ってるんだよな

506 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 14:01:09.01 ID:ljSF0mgB.net]
おまえのことか

507 名前:デフォルトの名無しさん [2016/04/20(水) 15:33:41.96 ID:9SnFE2FG.net]
例えが悪いって言ってんのにどういう風に対応付けするかは色々って何言ってるのか解りませんわ。

508 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 19:30:01.52 ID:r07pzD8i.net]
>>492
> 例えが悪いって言ってんの
お前かそう思ってるだけ
って何回言えば理解するんだ?

509 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 20:27:51.87 ID:ljSF0mgB.net]
いや、お前こそが、そう思っているだけだろ
車輪の話は分かりやすかった

510 名前:デフォルトの名無しさん mailto:sage [2016/04/20(水) 22:17:47.57 ID:iD79AHEd.net]
どっちもどっち
下らんことでお山の大将になりたがるなよ



511 名前:デフォルトの名無しさん [2016/04/21(木) 01:56:58.28 ID:q7849b+A.net]
変な所を指摘したらお山の大将になりたがる猿呼ばわりか、めんどくせえスレだな

512 名前:デフォルトの名無しさん [2016/04/21(木) 02:20:43.14 ID:mxlfT2Ft.net]
スレ違いだから首釣って死ねって事だ
言わせんな

513 名前:デフォルトの名無しさん [2016/04/21(木) 12:57:39.05 ID:DAo9Zovx.net]
エプソンのプリンターも当然、CMYKだが、
「純正を使わないと、すぐに故障する」
ような構造にしてあったよな?

あれはハードの構造でそうしているのか。コードにも、純正な否かを
判断する部分を盛り込んでいるのかどうか。

514 名前:デフォルトの名無しさん [2016/04/21(木) 19:57:24.72 ID:T4pmkcSw.net]
エプソンに限らずプリンターは色の三原色持ってるのが当たり前

515 名前:デフォルトの名無しさん [2016/04/22(金) 00:36:11.07 ID:2IHAQJXj.net]
純正インク以外で壊れやすくなるのは単に質が悪いから
プリンター本体は採算度外視でインクで儲けるビジネスモデルだったのに本体壊したら元も子もない

516 名前:デフォルトの名無しさん [2016/04/22(金) 12:06:11.49 ID:300wiAoM.net]
プリンター本体も、五年もたって故障すれば、部品製造打ち切りで
修理不能で買わざるを得ないからな。キャノンはどうか知らんが、
エプソンはそうだった。とかいって、うちの勤め先の規模では、
プリンター市場に参入出来る資金力などない。
せいぜい、大手からおこぼれで仕事をもらい、コードをいじくるしか出来ない。

517 名前:デフォルトの名無しさん [2016/04/22(金) 18:41:13.87 ID:U46HjcWC.net]
ずいぶん横道にそれているが、おまえらスクリプトつくってるのか?

518 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 20:38:22.94 ID:TT82zXSl.net]
>>496
指摘が的はずれって言われてるんだろ

519 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 20:39:29.07 ID:FoP6yTJa.net]
誰がもこみちにそれているねん!!

(´・ω・`)b

520 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 20:40:58.67 ID:FoP6yTJa.net]
>>502
スクリプト言語を利用してスクリプトを作っているという意味か?
それとも自分でスクリプト言語の仕様決めて実装設計しているということか?



521 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 21:49:45.09 ID:cAq2nbH2.net]
スレタイ嫁

522 名前:デフォルトの名無しさん mailto:sage [2016/04/22(金) 23:35:58.89 ID:Eun++jyx.net]
>>505
後者の実装にスクリプト言語使っても問題はないんじゃなかろうか?

523 名前:デフォルトの名無しさん [2016/04/23(土) 07:12:36.15 ID:FJYQwL85.net]
ここで産まれたスクリプトあんの?

524 名前:デフォルトの名無しさん [2016/04/23(土) 12:40:11.44 ID:OaaA/Nov.net]
秀丸は、スクリプトを自作するときの参考になるのかね?
一応、役に立ったことは事実だが。

525 名前:デフォルトの名無しさん [2016/04/23(土) 18:35:58.00 ID:vG+aKQwy.net]
禿丸エディタを何の参考にする気だ

526 名前:デフォルトの名無しさん [2016/04/24(日) 00:18:07.79 ID:dKv+k22E.net]
秀丸は、「作業の自動化スクリプト」を書くのに便利だからな。
その仕様を元にすれば、スクリプトを自作するのに役に立つのではないかと
思ったのだが。

527 名前:デフォルトの名無しさん [2016/04/24(日) 01:48:37.36 ID:M7ZCbRga.net]
「作業の自動化スクリプト」専用のスクリプトならgradleあたりが参考に良さそうだな
ちなみに俺はantは好きだけどmavenは大嫌い

528 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 02:57:23.38 ID:ouB2BnTZ.net]
まあ秀丸はテキスト処理に特化した
自動化スクリプトの参考にはなるかもね
あれはスクリプトっていうよりマクロだけど

529 名前:デフォルトの名無しさん [2016/04/25(月) 10:50:38.19 ID:9hQeUDgV.net]
しかし秀丸には、CやWindows APIの命令が、多数というか、
かなり含まれている感じだが。

530 名前:デフォルトの名無しさん [2016/04/25(月) 17:05:01.77 ID:lstHaTya.net]
だからなんだよって感じだが。



531 名前:デフォルトの名無しさん mailto:sage [2016/04/25(月) 17:27:42.97 ID:ouB2BnTZ.net]
そのまま車輪の再発明をしてしまうと
元の秀丸を使った方が便利だから
自作スクリプトを秀丸と差別化する必要はある

532 名前:デフォルトの名無しさん [2016/04/26(火) 03:16:17.88 ID:r83feNEN.net]
そうか。秀丸に存在しない命令を考えなければならないな。

533 名前:デフォルトの名無しさん [2016/04/27(水) 00:31:37.93 ID:Toh8P/+A.net]
相変わらず手書きパーサー書いてるが、できるだけ1発でパースしつつ(LR法?)
外側から順に何度も段階分けながらパースする(LL法?)なコードも混じってる…
意味解析までたどり着くまでで力尽きそうw

534 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 06:02:05.40 ID:vmi3tpS2.net]
よほどの理由がないなら手書きなんかやめといた方が

Bison GLR 使ってた時は不自由さがなくてよかった
semantic predicate 機能は成熟しただろうか

535 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 07:02:50.92 ID:h/kgFFlp.net]
趣味でやってるんだろ
ほっといてやれや

536 名前:デフォルトの名無しさん mailto:sage [2016/04/27(水) 11:26:55.96 ID:9/2UzNftp]
手書きは面倒だけど柔軟性あるし速いので、有名な言語でも採用してる所は多い気がする。

537 名前:デフォルトの名無しさん [2016/04/27(水) 23:38:58.25 ID:Toh8P/+A.net]
手書きパーサー製作も残すは四則演算&関数呼び出しとなったが
ツリーの形状はこんな感じで良いのだろうか?
https://pastebin.mozilla.org/8868990

>>519
本よむところから始めるのはしんどいのでな・・・

538 名前:デフォルトの名無しさん [2016/04/28(木) 00:23:38.80 ID:mWNt94gr.net]
関数呼び出しだとこれでいけそう
https://pastebin.mozilla.org/8868995

小さな計算でもツリーが深くなってnew()するノードの数がもりもり増えるけど
何かもっと良い方法あったら教えてちょ

539 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 12:59:47.77 ID:Jc879At1.net]
手書きパーサなら
木構造にせずに操車場アルゴリズムかその亜種でLL(1)するのも手だぞ。

文法と文をそれぞれ入力したらテーブル作ってLR(1)するクラスを作るって手もあるけど
大真面目に書いてc++で500行〜1000行くらいにはなったと思う。

540 名前:デフォルトの名無しさん [2016/04/28(木) 14:16:09.66 ID:7cooGRk/.net]
lexとyaccは、既存のものを使うべきか、自作すべきか、悩ましいね。



541 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 15:44:59.86 ID:Jc879At1.net]
yaccは、やる気と暇があるなら
どういう文法なら曖昧性が無いか、とか、shift/reduce conflictとdangling elseとは何か、とか
いろんな事についてよく理解できるようになるって点で一度試しに書いてみる事をお勧めしたい
今までに俺が余暇でC実装した名の付いたアルゴリズムの内だとかなり難しい部類に入るけどな。

lexは文法全く固まって

542 名前:ネいなら使ったらどう?って程度じゃない?
割と簡単に使えるけど、同じくらいとは言わないものの簡単に自作できるし
ASCII範囲の文字は簡単に指定できるけどUnicodeなんかに対応する為にカスタムコードを挟むなら普通に全部組んだほうが楽な事もあるし。
[]
[ここ壊れてます]

543 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 15:46:10.30 ID:Jc879At1.net]
個人的にはPEGが気になるのですよー

544 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 18:30:43.97 ID:FI1Tv7gT.net]
コンパイラを作るはずがコンパイラジェネレーター作りがメインになってしまう不思議

545 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 18:36:57.28 ID:Jc879At1.net]
そして思うのだ

コンパイラジェネレータを書くのに向いてる言語とは・・・・・・

546 名前:デフォルトの名無しさん mailto:sage [2016/04/28(木) 22:17:59.57 ID:mWNt94gr.net]
>>524
そうだな。ここだけツリーにしないで、再帰関数で直接出力すれば良さそうだ

547 名前:デフォルトの名無しさん [2016/04/29(金) 05:30:33.58 ID:o23yQzXI.net]
バイトコードのテキストを読み込んだら
バイトコードの1行と対の関係になる命令ノードを
行数だけ配列にして上から順に実行するイメージであってる?

なんか構文木のまま実行するのと大して変わらない気がするけど
メモリの節約とかどうなんだろう

548 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 10:04:10.82 ID:GdtJdaFL.net]
バイトコードのテキストってのが若干意味不明だが
バイトコードならアセンブル(バイナリ化)しておかないか普通

a = b + c * d
を二分木のASTで
(st (ldptr local[0]) (add (ld local[1]) (mul (ld local[2]) (ld local[3]))))
みたいに格納して、ポインタ1つあたり64 bits、ノード構造体のサイズが24 bytesと仮定して
glibc mallocを使うことを仮定して全部で32 bytes * 7 = 224 bytesのヒープを消費する。

一方でレジスタ型VMを仮定して、簡単の為に1命令32 bits固定長とすると、例えば
ldptr r0, local[0] / ld r1, local[1] / ld r2, local[2] / ld r3, local[3] /
mul r4, r2, r3 / add r5, r1, r4 / st r0, r5
の7命令で与式が表現できるから、
配列の中身の長さが2^nに拡大されて予約される事を仮定すると4 bytes * 8 = 32 bytes
これに配列の管理領域が2ワード16 bytes、
glibc mallocを使うことを仮定すると2箇所の領域の管理で2ワード16 bytes必要で
合計で64 bytesのヒープを消費する。

ただ、配列には配列の問題点と言うかでっかい領域を再確保するのが難しい事があるから
文単位ではリストや木を、式単位では配列を使うってのがインタプリタとしては良いんじゃないかなとは思う。

549 名前:デフォルトの名無しさん [2016/04/29(金) 13:14:44.61 ID:mG1yRheY.net]
コンパイラ作りって、インタプリタよりも、10倍の労力がかかるよな。

550 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 15:48:32.50 ID:qwAEwLKu.net]
この辺はlispやschemeで思索しながらやると楽なんだよ



551 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 17:57:56.98 ID:ZvoRtCQG.net]
コード生成の方は関数型の基礎だけでもやってないとかえって遠回りに

552 名前:デフォルトの名無しさん mailto:sage [2016/04/29(金) 20:10:00.50 ID:YATvpu7C.net]
>>534
最終的になんで苦労してまで構文木をSchemeで生成するんだろう?っておもって結局そのままLispのMacroに化けるのである(割とマジで)
Lisperが他の言語取得者のタメにDSLを組むことはあってもLisperはLispのママ扱う方がよかったりするのよね。

553 名前:デフォルトの名無しさん [2016/04/29(金) 21:15:38.47 ID:o23yQzXI.net]
>>532
ありがたい。メモリが4倍くらい節約できるのね
もしかしたら構文木のまま動かした方が動的ロードで
面白いことが簡単に実現できるんじゃないかと迷ってたけど(evalとか)
パフォーマンスではバイトコードがかなり強力なのね

554 名前:デフォルトの名無しさん [2016/04/29(金) 23:41:20.66 ID:o23yQzXI.net]
>>532
>バイトコードならアセンブル(バイナリ化)しておかないか普通
たしかに普通は読み込み速度的にバイナリデータが望ましいのだけど、
手さぐりで試作するからメモ帳で読み書きできるテキスト形式でやってみるんだ

555 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 01:17:44.44 ID:oV2mml7H.net]
lispインタプリタって一番簡単な実装(pure lisp?)だと何行くらいで実装できる?

556 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 07:15:19.54 ID:wSqWni75.net]
>>539
基本関数だけならものすごい小さいよ
Lispが生まれた時代のマシンのメモリ量なんてアドレスのビット数が16以下だし。

557 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 10:02:54.88 ID:oKKjAnDv.net]
>>539
何で実装するかにも依る

swiftやrubyだと100行オーダーで書けるらしい
xavier.hateblo.jp/entry/2014/08/19/003609

C実装だと2000行くらいみたい
https://github.com/kototama/kml

558 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 16:03:06.15 ID:ASEjigO2.net]
行というかWin32で20KByteコアのそこそこ速いScheme処理系はCで作ったな
何行だったかは忘れたが数千行にはなる
ライブラリやフレームワークにどこまで対応するかだと毎回思う

559 名前:デフォルトの名無しさん [2016/04/30(土) 17:51:48.40 ID:iJVuG7iJ.net]
自作コンパイラでソフト作ろうとすると、やたらコアを吐くことに...。

560 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 19:28:20.97 ID:wSqWni75.net]
>>543
selfビルド可能になれば普通じゃ無いの?>>core吐かせてバイナリ生成



561 名前:デフォルトの名無しさん [2016/05/01(日) 13:17:14.33 ID:tKi6j9CT.net]
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません


562 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 17:25:31.50 ID:EieRhQfe.net]
スレ違いだから他所でやって

563 名前:デフォルトの名無しさん mailto:sage [2016/05/01(日) 21:43:24.13 ID:EieRhQfe.net]
バイトコードのはずだったのに気づいたら
関数オブジェクトのツリーを作ってた
なにやってんだ俺・・・

564 名前:デフォルトの名無しさん [2016/05/03(火) 02:36:10.72 ID:sSslXsw5.net]
自作ソフトの暴走はたまにあるが、自作コンパイラの暴走はヤバイよな。
それで別のソフトを作成した日には、最悪の結果が待つことに...。

565 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 02:55:51.64 ID:ug5Kip ]
[ここ壊れてます]

566 名前:fy.net mailto: function(機能)はrole(役割)にしよう
flowとかprocと悩んだがroleが一番良いと思う
[]
[ここ壊れてます]

567 名前:デフォルトの名無しさん [2016/05/04(水) 03:53:55.73 ID:INW31x/s.net]
昔のC言語みたいに、floatとdoubleに分けるメリットは、
今の時代にはないよな?

568 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 03:59:22.27 ID:NIqCX6OH.net]
むしろ half の出番さえ出てきてる時代。

569 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 10:09:50.25 ID:wjUC1pj0.net]
役割っていうのは受動的な考え方であり縦割り行政的でありfunctionの適切な代替表現ではない
roleは与えられた仕事をただこなすだけというイメージ
このとき、与えられる対象、つまりデータやオブジェクトがあり
担当個所をroleするという感じ
role ≒ class であり、role ≠ function

何にも縛られず自由なfunctionとroleでは思想が違う
functionは立場や部署間を飛び越えて連携して機能するイメージ
胸熱であり、自分の仕事をこなすだけのroleなどと一緒にされては困る

function( a, b, c, d );
a.role( b, c, d );

570 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 10:16:54.82 ID:wjUC1pj0.net]
例えば、日本は縦割り行政的であり、役人的であると言われ(role)
一方で、アメリカは横のつながりが強く、機能的だと言われる(function)
このように、機能と役割は対立する概念として扱われている言葉であり、思想が違う

日本の映画やドラマなんかでよく
「それは自分の仕事じゃないのでやりません」とか
逆に「自分たちの管轄だから余所者は入ってくるな」とか
役割的発想は悪いことのように扱われるのが常
逆に主人公たちは部署間を飛び越えて機能的に行動すると決まっている



571 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 12:07:39.94 ID:p+LvbHBp.net]
もうちょっとプログラマ的喩えにしようぜ。

procedure=大域環境に対して参照と破壊をするもの
function=環境を参照せず、戻り値は引数にのみ依存するもの
closure=固有の環境を持ち、その環境に対して参照と破壊をするもの
どれも意味が違う。

functionとroleはクラスとインスタンスくらい意味が違うと思う。

572 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 23:28:44.89 ID:wjUC1pj0.net]
歯車でいえば
複数の歯車が上手く連携して動いている様を機能していると言うし
個々の歯車に着目してそれぞれが自分の仕事をしている様を役割をこなしているという

手続き的に時系列に沿って考えると
個々が役割を果たした結果、全体として機能がもたらされて、また別の大きな役割を担う・・・という風に
卵が先か鶏が先か、みたいなところがあって、双方の視点はどちらも重要で
同時に扱ていかなければならないわけだけど
区別して扱われる別の視点であり、function = roleとしてしまうのは単純にセンスないというか早合点
functionとroleの考え方の微妙な違いは非常に重要で
最初の出発点が違うことで資本主義と社会主義など、時としては戦争が起こる場合もある
(つまりは、資本主義と社会主義は鶏が先か卵が先か、functionが先かroleがという思想の違い
 functionはまさに空気のようなもので、人と人をつないで機能させるお金を重視している
 roleはまさに人そのもの、その役割に主体を置いている)
functionをroleと言ってしまうのは教養がないと言われても仕方がない
自分の思考が今何に着目していて何を考えているか把握しておかないと大変なことになる
頭がよくなりたければ囲碁が良い
囲碁は碁石そのものにも着目しなければならないし、碁石と碁石の境界にも着目しなければならない
それぞれで見え方が全く変わってくるし、同時に考えなければならない
頭の体操に良い
「物」と「事」は別のものだけど、「物事」という言葉があるように同時に考えなければならないこともしばしば

573 名前:デフォルトの名無しさん mailto:sage [2016/05/04(水) 23:40:58.82 ID:ug5Kipfy.net]
関数ってそんなに抽象的な意味を持ってたのか
インプット&アウトプット、リクエスト&レスポンスの手続きくらいに見てたよ

574 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 00:33:21.20 ID:dh4q1EnN.net]
関数は二者以上の関係を表しており、二者以上の関係性が何か機能をもたらす
というより、逆算して、機能をもたらせるように、二者以上の関係性を作るのがエンジニアの仕事
だから関数もfunctionだし、機能もfunctionという
電子部品だって、回路を組んで組み合わせなければ機能しない
「関」という字が示すように、関係性は何事においても常に重要で
数学や物理はすべて関係性を数式で表すことで成り立っている
「1」という数字が何か意味を持っているというよりは、「1」と他の数字との関係性が「1」自身の立場や性質を決めている
関係性は非常に高等で、目に見えないものであるが故、尊いものとされている
というのも物事の関係性を紐解いたり、逆に利用できたり、機能的に考えることができる人は
当然、役割的思考も出来るものとされているから
役割的発想は馬鹿にでもできる
アメリカが赤のことを悪とするのもこのためで、そいうった悪の思想から自分たちを守るために
右翼の人たちは「保守」と呼ばれる
赤の思想のほうが理解しやすく馬鹿でも少年でもわかり
簡単で広まりやすいので、自分たちの尊い考え方や社会を
守らなければ、占領されてしまうという恐怖感からある種過剰な防衛をしている
年を取れば自然と物事の関係性の重要さに気付くものだから基本保守になる
そういったことを一通り分かったうえであえて福祉にも力を入れるというのが今の先進国のあり方
順番を誤ってはいけない

会社でいえば自分の役割しかしない人は指示待ち人間といわれ歓迎されない
一方で機能的に考える人は他者とのコミュニケーションを図り、関係を大事にし、目的を達成する努力をする
両方の考え方ができる人は機能的発想に加えて他者への配慮もするし、リーダー的

何事も一つの思想だけでどうにかしようとしないほうが良い
例えば「1」をオブジェクトとしてとらえるという、某言語のような考え方は全くする必要ない
数学の「1」にそのような意味はないし、全てをオブジェクトとして再認識して再構築する必要はなく
マルチパラダイム言語で良い
1+2は単に1と2を足すという解釈でよく、1に+2というメッセージをどうのこうのという意味不明な再解釈はいらない
考え方を統一しようとする必要はなく、そういった偏った思想をしても良いことはない

575 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 01:08:08.43 ID:dh4q1EnN.net]
アメリカは自由自由いつも言ってるが、いったい何に対しての自由なのか、
どこを目指しているのかというと
自分が生まれながら背負ったroleから自由である、ということ
この辺、人種差別の問題とか貧困の問題とかが出てくる

一方で、社会に対する自分の機能性のようなものは常に非常に重視される
要らなくなったらすぐに首を切られるし、厳しい

とにかく機能機能機能機能、個人に対して厳しい、機能性のない人はいりません
しかし、生まれ持ったroleからの自由はサポートしましょう

その意味で、移民は受け入れる、ただし機能性のある人だけ

576 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 01:19:48.20 ID:AqKMDGmp.net]
この長文君きもちわるい…

577 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 01:42:26.59 ID:3/paarxc.net]
>>554
ぼくの作ってるものは偽C言語でグローバル変数もあるから
定義的にはプロシージャが適切なんだろうな

それでロールについてはもう少し考えてみるつもりだけど、
malloc()そのものがfunctionとして、malloc()を何につかうのかがroleなのかな
けれど関数の多くはライブラリとかAPIではなく単なるサブルーチンのような気がして
サブルーチンはロールだとも思うのよね

578 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 02:12:56.28 ID:Jo4WiHb1.net]
単に役割って意味なら、変数にだってそれぞれの役割があるよね。

579 名前:デフォルトの名無しさん mailto:sage [2016/05/05(木) 05:12:54.36 ID:qzGbsflZ.net]
相手するなよ...

580 名前:デフォルトの名無しさん [2016/05/06(金) 09:34:30.45 ID:pdJO182a.net]
最適化をサポートする機能を付けるのも、面倒だよね。
昔のVC++の売り文句が、「極限までの最適化」などとうたっていたが、
ビルドの時間も長すぎ、他の作業が中断...というオチ付きだったし。



581 名前:デフォルトの名無しさん mailto:sage [2016/05/06(金) 09:52:38.91 ID:WbxBcPoP.net]
神聖なるビルド専用マシンを他の作業に使うのがおかしい

現在だって動画のレンダリングする連中はそんな感じだろう

582 名前:デフォルトの名無しさん mailto:sage [2016/05/06(金) 19:11:06.89 ID:5HLOeR1MW]
どこの解説サイト見ても構文木の枝は最大二本にしか分かれないだけど、
二本以上の枝で根や葉を管理しても問題ないよね?

こんな感じのデータ構造にしたいんだけど。
class ForStmtNode : Node { Node init, cond, inc, body; }

こうしちゃいけない理由でもあるのかな。

583 名前:デフォルトの名無しさん [2016/05/07(土) 02:02:54.76 ID:lPvt8ROe.net]
ウチの勤め先には、ビルド専用マシンはなかったな。うらやましい。

584 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 12:49:01.06 ID:TEQEM2qu.net]
GoogleにはGOMAって名前のビルド専用クラスタ(2〜300台くらい繋げた奴)があるってよ

585 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 14:21:44.92 ID:0EiVc3To.net]
そして各チームは一台でも多くのマシンリソースを確保するため
他チームの保有区域への侵略に明け暮れているという

586 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 18:52:54.52 ID:IlJOE3r59]
>>565
無いよー
でも、なんか勘違いしてる気がする

587 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 22:38:35.98 ID:hfPhBXdU5]
>>569
本当だ、これだと抽象構文木だね。

class ForStmtNode : Node { List<Node> children; }
とりあえずこれでいいってことだね。

588 名前:デフォルトの名無しさん mailto:sage [2016/05/08(日) 10:02:36.39 ID:jHRrSElx.net]
>>567
クラウドサービス提供するぐらいだからマシンあまってんだろうなぁ

589 名前:デフォルトの名無しさん [2016/05/08(日) 13:05:39.75 ID:EAH4Xwpx.net]
俺の予想では、Googleやマイクロソフトに太刀打ちできるIT企業って、
日本国内にはないような気がする。
社員か誰かが遊び半分みたいな感じで作り上げた「Googleパックマン」
には、参ってしまったからな。あれは凄かった。

590 名前:デフォルトの名無しさん mailto:sage [2016/05/08(日) 13:17:39.53 ID:EkxZMrhh.net]
>>572
日本どころか全世界でみてもAppleくらいしかいねぇよ



591 名前:デフォルトの名無しさん mailto:sage [2016/05/08(日) 13:26:01.54 ID:cY3IZjLs.net]
DeNA/GREE ほほう
dwango なかなか
CookPad おもしろそうな
DMM 話じゃないか

592 名前:デフォルトの名無しさん [2016/05/08(日) 13:27:27.42 ID:cY3IZjLs.net]
>>573
Amazon「…」

593 名前:デフォルトの名無しさん mailto:sage [2016/05/08(日) 21:29:02.01 ID:mw6lNm2M.net]
囲碁のSmart Go Formatというのをパースしたいのですが
読みやすいサンプルプログラムないですか。

594 名前:デフォルトの名無しさん mailto:sage [2016/05/08(日) 22:54:46.20 ID:EkxZMrhh.net]
senseis.xmp.net/?SGFFile

595 名前:デフォルトの名無しさん mailto:sage [2016/05/09(月) 00:01:18.08 ID:VGqIwUSF4]
字句解析→構文木→抽象構文木
の順で解析することが多いと思うんだけど

字句解析→抽象構文木
の順でLexerからトークン読みながら一気にATS作るのってどうなのかな。

処理スピードやメモリ効率はかなり良くなる気がするんだけど。

596 名前:572 mailto:sage [2016/05/09(月) 19:17:09.28 ID:QYIZFGji.net]
ありがとうございます。
読んでみます。

597 名前:572 mailto:sage [2016/05/09(月) 20:40:18.09 ID:QYIZFGji.net]
RubyGemあんのか。
うまくいけば自分で書かなくてもイケるかも。

598 名前:デフォルトの名無しさん [2016/05/10(火) 13:55:45.68 ID:aTks4HJk.net]
うちみたいに規模が小さいと、データセンターも活用するしか
手がないね。自前のデータセンターなど、夢のまた夢だ。

599 名前:デフォルトの名無しさん [2016/05/13(金) 11:38:51.94 ID:6Wa+P3Ox.net]
ビルド専用マシンがあるなら、テスト専用マシンもないとおかしいよね。
共にあるのがソフトハウスの標準なの?
うちでは、とてもそこまでの予算をつけてもらえないのだが。

600 名前:デフォルトの名無しさん mailto:sage [2016/05/14(土) 01:19:35.08 ID:spK37znF.net]
投資に見合うリターンがあれば普通は投資するだろう。



601 名前:デフォルトの名無しさん [2016/05/14(土) 02:25:57.07 ID:guvuQQ9l.net]
ビルド兼テストマシンなら普通にある

602 名前:デフォルトの名無しさん mailto:sage [2016/05/14(土) 03:51:37.38 ID:9OGuGONK.net]
>>582
できたてほやほやの会社で開発が二人しか無い我が社なんかなんもないぞw
awsをスポットで借りると割と安いビルド環境作れるからそういうの使ってるけど。

603 名前:デフォルトの名無しさん [2016/05/14(土) 10:30:08.43 ID:zu3iiide.net]
>>585
それじゃあ、資本金10万円の株式会社と、何ら変わらんだろww

604 名前:デフォルトの名無しさん mailto:sage [2016/05/14(土) 21:33:12.49 ID:GqFlaCrO.net]
客先常駐の偽装派遣か?

605 名前:デフォルトの名無しさん [2016/05/16(月) 00:37:06.74 ID:HJQsGNoE.net]
DOS全盛の時代の時は、「遊び半分で、コンパクトなコンパイラでも
作ってみようかな」
という気も起きたが、これだけ複雑怪奇なWindows全盛時代となっては、
もう手軽に手を出せるレベルじゃないよね。

606 名前:デフォルトの名無しさん mailto:sage [2016/05/16(月) 09:26:54.72 ID:HysSRgR+.net]
今ならWASMターゲットでどうよ

607 名前:デフォルトの名無しさん mailto:sage [2016/05/16(月) 20:25:52.51 ID:1m5lkdv7T]
>>578
なんかアレだが、
パーサの出力を抽象構文木にすることは大変ではない。
勿論、具象構文木で出すこともできるが
逆に手間がかかるので理由がない限りしない。

608 名前:デフォルトの名無しさん mailto:sage [2016/05/16(月) 22:26:29.32 ID:kgWFY/O22]
通常の構文木も作っておかないと、デバッカに対応する時やエラーメッセージを出す時に困るかも。

609 名前:デフォルトの名無しさん [2016/05/17(火) 02:22:11.57 ID:1Hk6wPoo.net]
遊びでコンパイラを作るなら、linux用なら、作れば誰か使って
くれるかも...。

610 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 06:47:28.73 ID:uw1YLM9D.net]
>>588
別にコンパクトなコンパイラのハードルは上がってないと思うが
無償でほぼフルセットの開発環境が入手できる今では意味が薄れた
って言うのならわかるけど



611 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 12:49:07.23 ID:PnBEFQO4.net]
CとかJavaから呼び出す組み込みスクリプトなら需要ありそう
javascriptトランスレータはHaxeがよくできてるけど作ってみたい

612 名前:デフォルトの名無しさん mailto:sage [2016/05/18(水) 21:25:50.30 ID:EzbR6hZga]
構文エラーならパースの時点で解決しないといけないし、
それ以降は、構文木の各ノードにソースコード上の位置情報をいれておけば結構ok

パーサ自体のデバッグには有用

613 名前:デフォルトの名無しさん mailto:sage [2016/05/20(金) 02:16:34.68 ID:t8k86oX2.net]
>>356
Forth, Postscript「必要です」

614 名前:デフォルトの名無しさん [2016/05/20(金) 23:34:10.65 ID:tlYSnHy5.net]
言語仕様作成と、コンパイラ本体は自分で作り、


615 名前:fバッガだけ外注して作ってもらうというズルはありえる?
高性能なツールにするには、かなり手間がかかると思うのだが。
[]
[ここ壊れてます]

616 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 00:37:18.20 ID:jbF82omc.net]
デバッガってevalさえあれば簡単なものはできそうだが
高機能てなると難しいのかな

617 名前:デフォルトの名無しさん mailto:sage [2016/05/21(土) 10:16:04.77 ID:4qmWB+Wj.net]
その「高性能な」デバッガに何を求めてるかにも依るような。

618 名前:デフォルトの名無しさん [2016/05/21(土) 18:55:29.44 ID:r6iEFhaA.net]
不具合な動作が時々あるソフトで、たまたま高性能なデバッガに
分析させたら、ソースもないのに、分析されたソフト内部のソースを
画面に表示し、
「ヌル文字列を格納するための領域に、別の文字を格納し、領域を
破壊しています」
とか何とかメッセージを出した例まであるからな。
こういうデバッガは値段が高いだろ。

619 名前:デフォルトの名無しさん mailto:sage [2016/05/23(月) 19:41:11.89 ID:h8XB4lAi.net]
頭悪そうだね

620 名前:デフォルトの名無しさん [2016/05/26(木) 00:28:35.77 ID:R75m14iA.net]
予約語テーブルに、どのくらい詰め込めば良いかが悩ましい。
あまり増やしすぎると、C++と同じ道をたどるだけだし。



621 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 00:40:19.83 ID:SiuzFNyH.net]
C++と同じ道をたどれれば最高じゃないか

622 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 07:23:51.59 ID:6iXHX0kN.net]
てか、C++ って機能のわりに予約語は少ない方じゃね?

623 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 09:28:47.76 ID:8g8oY2SCK]
最近のC++はほとんどの機能を標準ライブラリ側で提供しようとしてるから予約語自体は少ない
std::moveとかstd::initializer_listという形で予約後を回避してる
根本的な解決にはなってないんだけど。

624 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 15:25:55.45 ID:xTig+h/w.net]
アンダーバー付きの予約語は嫌だ

625 名前:デフォルトの名無しさん [2016/05/27(金) 21:42:12.01 ID:DWOzzldt.net]
俺はiostream関数も嫌だな。

626 名前:デフォルトの名無しさん mailto:sage [2016/05/27(金) 23:33:16.53 ID:64E4c/Qq.net]
抽象関数に実装なし・マーカーとか、書けばわかりやすいのに、
func(){ } = 0

とか、意味不明なことをやって、キーワードを減らしている

627 名前:デフォルトの名無しさん [2016/05/31(火) 21:45:44.53 ID:0yna7kxs.net]
#include <PANAMA_PAPERS.Lib>
main()
{
for(Datsuzei = 0; Datsuzei <= mugendai; Datsuzei++)
}

こんな予約語やライブラリがあれば、俺のお金も無限に増える
はずなのに。消費税など、上げないでもらいたいよな。

628 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 22:03:33.81 ID:TRYwrF1a.net]
お金が無限に増えたらジンバブエみたいになるぞ・・・・・・

629 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 22:10:48.45 ID:JlIYRfhe.net]
ジンバブエってdoubleが桁あふれしたんだっけw?

630 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 20:32:23.48 ID:72v9yor7.net]
COBOL使ってたから大丈夫



631 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 22:55:39.98 ID:z/VHQJBB.net]
ワロタww
せめてrubyにしてくだしあ

632 名前:デフォルトの名無しさん [2016/06/05(日) 02:48:48.10 ID:itWJAX/I.net]
フリーのコンパイラって、信用できる?
遊び程度でソフト作るなら良いけど、フリーだとサポートも
期待できないし。

633 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 03:05:17.84 ID:wHhH7979.net]
gccもclangもjavacもc#も信用ならんって分野ももしかしたらどこかにはあるのかもな

634 名前:デフォルトの名無しさん [2016/06/05(日) 03:35:16.04 ID:itWJAX/I.net]
gnuのように、ソースが公開されていてもやばい部分もあるのかな?

635 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 09:08:18.42 ID:n7k60ruZ.net]
事故った時の補償の話なら先に契約で決めておくしかない
どうしても必要なら補償付きのお高いメーカー製を使えばいい

そこまで気にしないなら適当に人気のやつを選べばいい
ただし最適化を強めにすると地雷を踏むリスクが高い

636 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 09:10:42.69 ID:n7k60ruZ.net]
ライブラリとかOSとかに比べればコンパイラ自身のバグは極めて少ない
ただし最適化を強めにすると(ry

637 名前:デフォルトの名無しさん [2016/06/05(日) 14:53:16.00 ID:D97p9ZEl.net]
最適化有効にしてバグるのも大抵そのプログラムのバグだから

638 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 01:39:10.14 ID:cDt3abig.net]
>>614
有料でもサポートしてもらえる範囲は限られてる

639 名前:デフォルトの名無しさん [2016/06/11(土) 06:06:42.00 ID:MaD03lMp.net]
今考えたら昔のN88BASICも、実は凄かったんだな。
コンパイラを作りの前の基礎教養として、価値があると思う。
知識が多いほうが有利だし。

640 名前:デフォルトの名無しさん [2016/08/06(土) 21:46:00.33 ID:pVg13zPK.net]
グラフィックライブラリは、やたら予約語の文字数が長くてウンザリ
した経験があるな。わかりやすくコンパクトな予約語で良いのに。



641 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 22:54:17.43 ID:Jz+gSdkD.net]
予約語?

642 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 17:08:41.63 ID:oW9zLe2W.net]
昔のBASICは名前空間みたいな整理はされてなくて
ライブラリに相当する部分も予約語として扱ってたんだよ

643 名前:デフォルトの名無しさん mailto:sage [2016/09/13(火) 22:37:20.41 ID:0YzbOJ/I.net]
HSPとかもそうだな

644 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 13:00:51.48 ID:Vg9Wd9rs.net]
>>622
高々COLORとかPOINTでしょ?
PHIGS辺りのサードパーティライブラリと勘違いしてないか
それともCLSに比べたら長いって話?

645 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 13:06:46.54 ID:Vg9Wd9rs.net]
パラメーターがダラダラ長いっていうのなら分かるんだけどな
タートルグラフィック以前の設計で
カレントペンオブジェクトって概念がまだないから

646 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 21:03:09.17 ID:FgPIWm6o.net]
haskellのdo構文

647 名前:デフォルトの名無しさん [2017/05/15(月) 00:51:21.49 ID:SFBD2YKR.net]
Amazon で「Flex & Bison」で検索したらこんなの出て来て驚いた。
amzn.asia/2GvBmZs

648 名前:デフォルトの名無しさん mailto:sage [2017/05/15(月) 18:24:26.90 ID:DeqHpRpX.net]
たけーなオイ

649 名前:デフォルトの名無しさん [2017/06/26(月) 19:12:09.78 ID:6CpK5SZQ.net]
>>615
実際コンパイラはソフトウェア検証の好対象
CakeMLとか

650 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 06:02:50.68 ID:W1XJdyx1.net]
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆



651 名前:片山博文MZ mailto:sage [2018/03/02(金) 16:53:16.42 ID:R33psDql.net]
www.softantenna.com/wp/review/tiny-interepter-and-compiler/

652 名前:デフォルトの名無しさん [2018/05/23(水) 22:10:50.46 ID:Au5e7VGg.net]
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

RSQUI

653 名前:デフォルトの名無しさん [2018/07/04(水) 23:52:46.72 ID:gFgZc5FG.net]
CL2

654 名前:デフォルトの名無しさん mailto:sage [2018/07/16(月) 22:53:08.29 ID:oM74pxCP.net]
テスト😊

655 名前: mailto:sage [2018/09/04(火) 14:52:35.77 ID:lJV/Mb/R.net]
形式言語の祖・生成文法のチョムスキー90歳の言葉
www.videonews.com/marugeki-talk/908/

656 名前:デフォルトの名無しさん [2019/03/21(木) 17:55:33.49 ID:YzD9JPpd.net]
esprima/escodegenなんかでJS ASTを扱ってる人に質問。
ASTを舐めて変数の型を推論したものをノードに紐付けて記録しておきたいんだけど、JS ASTの場合
ASTの中にメタデータをぶら下げるのと外で持つのとどっちが一般的なんだろう?
中に持つ場合はどこにどういうプロパティ名でぶら下げるか、外の場合はノードの位置を特定する
パスのようなものが必要になるけどそれをどうするか。

657 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 20:03:26.16 ID:1LsYaFKv.net]
test

658 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 15:18:43.13 ID:IjgT90G7.net]
お前ら元気か?
Prologおじさんが2003年頃からPrologの人気がなくなったとか言ってたんだが、2chのせいではないかと思ってきてみたぜ。
めっちゃ過疎ってるじゃないか。というか2chいつの間にか5chになってたんだな。

Prologは操作的意味論をそのまま書き下して言語作れるので良いぞw

% e.pl
e(I, I) :- integer(I).
e(E1+E2, I) :- e(E1, I1), e(E2, I2), I is I1+I2.

:- e(1+2+3+4,R),!,writeln(R).
:- halt.

というファイルを作って
$ swipl e.pl
10
だ。こんな短く言語実装できる言語は他にないぜw

659 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 15:25:20.70 ID:IjgT90G7.net]
Prologなら型システムを作るのもお手の物だ。
t(I,int):- integer(I).
t(E1+E2,int):- t(E1,int), t(E2,int).
:- t(1+2+3,T),!,writeln(T).
:- halt.
これだけ。Prologは関数というか述語のネストをできなくして
述語の引数は全てクォートとされた式のように扱われ、
変数がアンクォートな感じに書ける。
故にLispのS式より複雑な優先順位付きの演算子を使った式が扱えて便利だ。
ってことで、暇な奴がいたら使ってみて欲しいんダゼ。
じゃあなw

660 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 07:02:20.99 ID:HYjDIJ1V.net]
Prolog興味あるけどCとかJavaとかPythonとかのメジャーどころと違って教科書みたいなアカデミックな本しか見つからないから並以下グラマの俺には無理



661 名前:デフォルトの名無しさん mailto:sage [2021/10/13(水) 08:22:07.76 ID:Qk99MJFD.net]
岩波のprologのプログラミング作法読んでみたら?

第5世代が成果をオープンソースに出来ていればなあ

662 名前:デフォルトの名無しさん [2023/08/19(土) 22:45:01.53 ID:mDwI+ElXv]
海外の環境団体はあらゆる妨害活動から破壊活動.首相の自宅にまで侵入したりと人としての最低限の道徳を知ってて素晴らしいが日本には
クズしかいないのかよ.せめて広島の平和公園もとい地球破壊公園の殺人の灯て゛BBQくらいやってみせろや,何しろ肉を焼くわけでもなく
月に800立方メートルものプ囗パンカ゛スをたた゛ひたすら燃やし続けていやがるんた゛からな、せめて肉でも焼いて氣候変動に抗議する象徴的
行動をするのか゛人の道、莫大な温室効果ガスまき散らして世界一周旅行して、サミットだのと国民から強奪した莫大な税金無駄にしながら飲み
食い観光.警備だのとクソシナ顔負けの私権侵害やって世界中にバカ晒し続けてる岸田異次元増税憲法カ゛ン無視地球破壊軍国主義売国奴文雄
みたいなクス゛た゛の、持続可能な開発目標に壊滅的なダメージを及ぼすために国連本部にノコノコ出かけて莫大な温室効果カ゛スまき散らす広島
県知事湯崎英彦だのを当選させてる広島県民は恥を知れよ,広島原爆で14万人殺されたそうだが、WMOが確認しただけで1970年以降に
気候変動によって、洪水などあらゆる災害て゛殺された人数は200万人以上、経済損失は600兆圓以上という現実を理解しろや自己中県民
(羽田〕ttPs://www.call4.jp/info.php?tyPe〓items&id=I0000062 , tTps://haneda-ProjeСt.jimdofree.com/
[成田)tTρs://n-souonhigaisosуoudan.amеbaownd.com/
(テ口組織)Ttps://i.imgur.сom/hnli1ga.jpeg

663 名前:デフォルトの名無しさん mailto:sage [2023/07/05(水) 03:42:10.87 ID:e/cCV0Lv.net]
>>311
人は死後49日は漂うと云われているな

664 名前:デフォルトの名無しさん mailto:sage [2023/09/24(日) 11:28:47.13 ID:Iodo3XEj.net]
インタプリタの作り方 −言語設計/開発の基本と2つの方式による実装− - インプレスブックス
ttps://book.impress.co.jp/books/1122101087

665 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 08:06:12.42 ID:NmxdZAP9.net]
バックエンドの作り方はググれば解説が出てくるが
“実用的な”バックエンドの作り方はさっぱりわからない
RX用のバックエンドが欲しいんだがなー

666 名前:デフォルトの名無しさん [2023/11/11(土) 06:58:34.37 ID:uMtlBPBy.net]
double a = 2.71828;

というコードをコンパイルするときに、2進浮動小数点数に変換しないといけないと思います。
2進数浮動小数点数に丸めるときに、四捨五入(0捨1入)したり、一番近い2進浮動小数点数に変換したりといろいろな方法がありますが、その方式を決定するのもコンパイラの仕事ですか?

計算機イプシロンを ε_M とします。
2進浮動小数点数に丸めるときの方式として、四捨五入(0捨1入)が採用されているかどうかを確かめる方法として、

eps = 2^(-52)
1 + (1/2) * eps

を計算させて、それが 1 + eps に等しいかどうかをみるという方法が数値解析の本で紹介されています。

1 + (1/2) * eps

を計算するときに、丸めとかで変な浮動小数点数になって、この紹介されている方法が実行できないとかないですか?

667 名前:デフォルトの名無しさん [2023/11/11(土) 07:01:57.70 ID:uMtlBPBy.net]
あと、

double a = 2.71828 * 3.141592;

というコードがあったとき、

コンパイラは、 2.71828 を丸めた2進浮動小数点数と 3.141592 を丸めた2進浮動小数点数を掛けよという機械語に翻訳するんですか?
それともこんな簡単な計算はコンパイラで予め行って、その結果を a に代入するという機械語を生成するんですか?

668 名前:デフォルトの名無しさん [2023/11/11(土) 08:35:32.43 ID:fuGMacjx.net]
double a = math.E + path.PI;

669 名前:デフォルトの名無しさん [2023/11/11(土) 08:37:19.10 ID:fuGMacjx.net]
宿題は宿題スレへ

670 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 11:05:25.10 ID:5AzCeqvD.net]
はい
あります
はい
場合によります(最適化という追加処理)



671 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<172KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef