- 1 名前:デフォルトの名無しさん [2017/08/28(月) 21:53:37.12 ID:5I+bTEeA.net]
- ※前スレ
次世代言語議論スレ[Go Rust Scala Haskell]第5世代 mevius.2ch.net/test/read.cgi/tech/1497311647/
- 596 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 18:44:57.78 ID:V4ctP0WJ.net]
- 次世代言語では、データとかを引数で渡すって方法に新たな工夫が欲しいね
- 597 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 20:03:14.13 ID:1e+K8/4+.net]
- >>596
たとえば?
- 598 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 22:58:59.34 ID:2mLwGNyW.net]
- doubleとintを間違える可能性は確かにあるけど
座標とかはdoubleとdoubleだったりintとintだったりするだろ それを間違える可能性まで網羅しないと致命的じゃないか 型システムに都合の良い範囲を想定してしまったらかえって想定外の盲点が増えてしまう
- 599 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 01:01:11.41 ID:yLA4yX5X.net]
- >>598
型システムがきちんとしてる言語であなたが考えてるような設計はしない
- 600 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 01:09:22.44 ID:VcH/r1aN.net]
- intとdoubleを明確に区別するといえばOCamlだが、あれは流石にやりすぎと感じる。にわか感想だけど
- 601 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 03:19:07.10 ID:g4HdW9MF.net]
- 暗黙の型変換の邪悪さは経験積めばわかる
あとIntへの型変換はHaskellが一番ドイヒー
- 602 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 05:18:45.27 ID:A2XKXMkJ.net]
- 経験積めばわかる、ですむなら静的型いらねぇよ
- 603 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 05:39:47.03 ID:g4HdW9MF.net]
- >>602
ソースの見通しが悪くなってバグの検出が難しくなる
- 604 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 07:53:43.74 ID:eIMWXunI.net]
- IDE補完が効きまくるという点で静的型が好き。
phpStormとか使うとphpでも補完効きまくるようになるん?
- 605 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 08:34:49.37 ID:ig88NjIH.net]
- >>601
10年以上Haskellメインで使ってますが、 あなたの言うIntへの型変換の「酷さ」が分かりません。 他言語と比べて何か問題あるのでしょうか。
- 606 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:10:52.08 ID:eIMWXunI.net]
- >>605
Haskellメインの現場ってどういう環境です?研究職?
- 607 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:45:24.85 ID:eeRMTLx0.net]
- Haskellみたいなのを研究に使っていたら逆にやう゛ぁいわ
メインはホビーだろ
- 608 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 09:49:39.95 ID:Q4+Qj6om.net]
- まず初めに現場かホビーかの分岐があるのになぜ現場に限定するのか
- 609 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 11:00:09.62 ID:g4HdW9MF.net]
- >>605
え?計算毎にいちいちNum経由にするのが酷くないって? お前もしかしてHaskell使ったこと無いんじゃないの?
- 610 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 11:06:23.68 ID:g4HdW9MF.net]
- Haskellメイン(仕事とは言ってない)
コンパイラとかの文字列処理や、モデルの妥当性検証とかに使うならまだしも、 数値計算でHaskellw Repa位しか優位性ないだろ
- 611 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 11:40:01.90 ID:ig88NjIH.net]
- >>609
Numは型ではなく型クラスです。 具体的には、どの型からInt型への変換が酷いのでしょうか。 Stream Fusion は働かないのでしょうか。
- 612 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 11:45:22.74 ID:ig88NjIH.net]
- >>609
失礼、Stream Fusion と言うより、書き換え規則ですね。 書き換え規則が働けば、大抵の型変換は必要最小限のオーバーヘッドで行われる筈です。
- 613 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 11:47:26.66 ID:g4HdW9MF.net]
- >>611
Numが型だとも型クラスでないとも言ってないし、 Stream Fusionだろうと変換はいるけど? お前さっきから何知ったかぶってるの?
- 614 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 11:48:26.85 ID:g4HdW9MF.net]
- >>612
「はずです」って、それ結局自分で書くだけだろ?
- 615 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 11:49:20.78 ID:g4HdW9MF.net]
- こういう机上だけで語るクソ野郎がいるからHaskellは嫌い
- 616 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 12:01:58.15 ID:Q4+Qj6om.net]
- 例えばInt型の3って名前の関数をNumタイプクラスの3って名前の仮想関数に変換する関数で
変換してそれをDoubleを使う関数にいれるパターンだよな。
- 617 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 12:09:13.20 ID:XD+YRvZx.net]
- だから具体的なコード書けって。変な勘違いしてるかもしれないんだから
- 618 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 12:33:30.94 ID:A2XKXMkJ.net]
- 仮想関数は酷いってのは常識になりつつある
オーバーロードはいいがオーバーライドは酷い だがオーバーロードとオーバーライドを勘違いする非常識なやつもまだいっぱいいる
- 619 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 12:52:13.95 ID:7Suyvrun.net]
- オーバーロードこそゴミだろ
型が柔軟になればなるほど邪魔になる
- 620 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 13:14:10.74 ID:ig88NjIH.net]
- >>601
ある型の値をInt型の値へ変換する際にあなたにとって酷いことが起きる、 あるいはあなたにとって酷いプログラムコードになる、という話ですよね。 >>609 Int型への変換の話の中で「Numを経由する」という言い方を聞いて、 あなたが Num を型だと勘違いしていると思いました。 大変失礼しました。 ある型の値をInt型の値へ変換する際は一度Num型クラスのインスタンス型の値へ変換し、 それを改めてInt型の値へ変換しないといけない、 あるいはそういう型が多い。 あなたはそう思っているのでしょうか。 もしそのような場合でも、私書き換え規則があれば経由しないようにできると私は言いました。 標準ライブラリの中で定義されている型で、 頻繁にInt型への変換が必要と思われる型に対しては、 書き換え規則がライブラリ内に書かれています。 自分で書く場合も一度書けば済むだけみます。 これが酷いのでしょうか。 改めて聞きますが、具体的にはどの型の値をInt型の値へ変換する際に、 Num型クラスのどの型の値を経由しなければならないのでしょうか。
- 621 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 13:37:46.62 ID:g4HdW9MF.net]
- >>620
>改めて聞きますが、具体的にはどの型の値をInt型の値へ変換する際に、 >Num型クラスのどの型の値を経由しなければならないのでしょうか。 だから全部自分で書いた話だろそれ VanillaじゃIntとIntegerすら必要だろ そんな事言ったら何らかの形で暗黙の型変換許してる言語全部そうだわ お前マジで頭の病院行ったほうがいいんじゃねえの?
- 622 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 13:55:56.62 ID:Q4+Qj6om.net]
- どっちもどっちだな。
両方病院言ったほうがいいかも。
- 623 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 14:14:32.59 ID:A2XKXMkJ.net]
- 言語の問題を医学部に丸投げするなよ
今ここで必要なのは法学部か文学部のような能力だという現実を受け入れろよ
- 624 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 14:19:32.05 ID:ig88NjIH.net]
- >>621
Integer型の値をInt型へ変換する際に、 Num型クラスのどのインスタンス型にまず変換する必要があるのか、 その型を教えて頂けないでしょうか。
- 625 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 14:52:17.51 ID:XD+YRvZx.net]
- 具体的なコードを示せないのは、具体的なコードを示すとボロが出るからw
- 626 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 14:56:44.72 ID:g4HdW9MF.net]
- >>624
はあ?Int側にするならNum Integer経由だろ? お前さっきから関係ない話ばっかりじゃねーか
- 627 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:01:10.70 ID:g4HdW9MF.net]
- >>625
書くまでもない気がするが一応な https://ideone.com/MjF75Z https://ideone.com/es7fao
- 628 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:10:56.24 ID:XD+YRvZx.net]
- ほわ?そのコードの何が問題なんだ?
上も下も非常に妥当な挙動に見えるんだけど、いったいどうなって欲しいんだ?
- 629 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:11:44.73 ID:g4HdW9MF.net]
- ああ、意図がわかった
こいつIntegralをNumって言った事とっかかりに揚げ足取りしたいんだな IntegralはReal通してNumのサブクラスですよクソ野郎
- 630 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:14:53.86 ID:g4HdW9MF.net]
- >>628
このクソ冗長なコードが妥当?w これを解決するための機能まで作っておいて?w
- 631 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:28:32.33 ID:ig88NjIH.net]
- >>627
fromIntegral 関数は、Integer型の値をInt型の値へ変換する際に、 どのような他の型へも変換しません。 経由しません。 Inreger型の値をInt型の値へ変換するのにNum Integer を経由、 という言い方がおかしいと思うのですが。
- 632 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:41:26.97 ID:g4HdW9MF.net]
- >>631
言葉遊びばかりだな fromIntegralはfromIntegerを使う時点でNum経由 あといちいち俺が言っていないことさも言ったかのように決めつけて反論するの、やめてくれないかな?
- 633 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:41:29.25 ID:Q4+Qj6om.net]
- でもIntをDoubleに変換するときは2回変換するんだろ。
- 634 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:54:31.81 ID:g4HdW9MF.net]
- そもそもHaskellで数値計算なんて
チューンしたところでLL並の速度なのに何を躍起になってんだか… このクソ野郎には適材適所という言葉を送りたい
- 635 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 15:59:41.73 ID:ig88NjIH.net]
- >>632
fromIntegral = fromInteger . toInteger Integer型の値からInt型の値への変換はどこも経由しません。 例えばWord型の値からInt型の値への変換は、 書き換え規則を働かせないようにわざわざすれば、 Integer型の値へ変換されてからInt型の値へ変換されます。 ですが、このような変換の書き換え規則を働かせないようにするメリットがありません。 初めから標準ライブラリに書かれていて、 プログラマは意識する事無くそれを使っているのだから。 ちなみに、私は>>627のコードが冗長だとは特に思わないです。 文字fromIntegralが長いと感じるのであれば、 fiにでも変えればいい話ですし。
- 636 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:07:10.71 ID:Q4+Qj6om.net]
- だから冗長な文を書くんだろうな
- 637 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:16:34.49 ID:2BEAGAP4.net]
- 上のが通ったらそれ暗黙の型変換じゃね?
そのほうが怖いわ
- 638 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:20:54.19 ID:XD+YRvZx.net]
- >>630
え、何? まさかそこで暗黙の型変換して欲しいの?
- 639 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:25:12.12 ID:g4HdW9MF.net]
- >>635
だからそれfromInteger使ってんだろ そしてIntとWordが例外なのに、さも他に定義されてるように言いやがるし 詭弁が多すぎ
- 640 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:30:27.19 ID:g4HdW9MF.net]
- >>637
あらゆる型で変換が必要だからおかしいんだよ 比較的面倒くさいOCamlでさえ1キャストで済む
- 641 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:31:40.02 ID:ig88NjIH.net]
- >>639
他にも色々な型の書き換え規則が定義されています。 ここで全て挙げるのはさすがに勘弁してほしいので、 興味がおありなら標準ライブラリを調べてみてください。
- 642 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:36:07.88 ID:g4HdW9MF.net]
- >>641
いやお前が言い出したんだから、お前が挙げるんだよw よくもまあこんな適当な事をw
- 643 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:37:20.96 ID:g4HdW9MF.net]
- そしてこれが現実w
hackage.haskell.org/package/base-4.10.0.0/docs/src/GHC.Real.html#line-442
- 644 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:37:24.43 ID:XD+YRvZx.net]
- そもそもIntとIntegerを混ぜて演算する時なんてそうあるか?
浅学非才な俺には設計が悪いとしか思えないんだけど。どういう時に必要なんだ……
- 645 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 16:42:22.60 ID:g4HdW9MF.net]
- >>644
逆だぞ そんな型揃えてまで速度欲しい具体的な演算を想定したら Haskell自体を使わない
- 646 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 17:05:23.17 ID:XD+YRvZx.net]
- >>645
いや、速度関係なく、取り敢えず型は揃えとかない? 関数作る時にわざわざ一つの引数はIntegerで一つはIntとかせんだろ? 俺は大体全部Intで作ってるから、Integerは即Intにしてるわ。みたいな
- 647 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 17:09:55.82 ID:ig88NjIH.net]
- >>643
そのファイルだけではなく、他にもあります。 grepかけてみてください。
- 648 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 17:53:28.33 ID:ZDWEQPwS.net]
- >>619
おっと、型クラスへの罵倒はそこまでだ!
- 649 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:04:54.06 ID:yMB3txhD.net]
- そもそも人が
型とか、型クラスとか、 パブリック/プライベートとか ポインタだとか そういう言語側の都合を意識しちゃ 次世代言語として ダメだと思うんだけどどう?
- 650 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:08:01.73 ID:XD+YRvZx.net]
- HaskellやらOCamlやらの型は補助ツールであって言語の都合ではなかろ?
- 651 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:24:36.31 ID:yMB3txhD.net]
- え〜、でも、そういうのも
言語側が裏で判断して処理してくれればいいじゃん A.I.でもディープラーニングでもなんでも使ってさ ハスケルでもエリクサーでも 古いコンピュータ言語の慣習にとらわれてて 全然、次世代って感じしないじゃん
- 652 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:26:22.11 ID:eEMHecr4.net]
- 型がない言語にろくなものはないな…
- 653 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:33:12.38 ID:ZDWEQPwS.net]
- >>652
型がない言語って具体的に何?
- 654 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:37:05.38 ID:b6yHr9//.net]
- 車の自動ブレーキと一緒で
危険な操作をできなくする方向で言語は進化してきているから 別に古い習慣とかじゃなく、そういう方向へ進化していくものだから
- 655 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 20:40:16.61 ID:b6yHr9//.net]
- 危険な操作を禁止するといっても
やりたいことが出来なくなっては意味が無いので その辺の制約の付け方が次世代で評価されるポイント
- 656 名前:デフォルトの名無しさん mailto:sage [2017/09/22(金) 21:16:44.42 ID:A2XKXMkJ.net]
- 変な操作を禁止する方向と
変な現象を報告するだけの方向があるぞ そして両者の存在を認める方向と、相手の存在を禁止する方向がある
- 657 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 03:41:51.45 ID:qWNtk5Ea.net]
- むしろ自動ブレーキじゃなくてオートマチック車が
マニュアル車より速くなったとき次世代だと思うな。
- 658 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 10:32:28.92 ID:j6VCxv0o.net]
- 具体的には?
- 659 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 10:47:51.80 ID:qWNtk5Ea.net]
- アセンブラが人間が書くよりCの最適化のほうが速くなったときとか。
- 660 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 10:48:52.56 ID:2jyO0MAw.net]
- ほぼもうなってんじゃん
- 661 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 16:51:55.93 ID:sz6/Tcc0.net]
- 車もDCTの登場でオートマのほうが速くなったな。
- 662 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 19:13:02.33 ID:nrpIGIl5.net]
- 禁止するだけだともっと糞な方向に行くだけだろう。
規則で禁止しまくった SIer の現状を見ろ。 そうじゃなくてより安全な方向を提示するほうが正しい。
- 663 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 19:54:26.15 ID:2jyO0MAw.net]
- そりゃそうよ。次世代と言われてるやつは大抵方向まで提示してるっしょ
- 664 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 20:21:34.37 ID:3qopZopL.net]
- 米Appleが「Swift 4.0」を公開、以前のコードを修正無しに利用できる互換性モードを新たに導入
2017年9月22日17:10 末岡洋子 https://mag.osdn.jp/17/09/22/171000 Swift 5の目標が確定、新たな発展プロセスを定義 https://www.infoq.com/jp/news/2017/09/swift-5-development-plan
- 665 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 21:09:08.49 ID:3CWlI3/Q.net]
- >>653
多分PHPのことを言ってるんじゃないかな。 結局動的言語ってテンプレート文字列使ってプログラミングするのと変わんないんじゃないかと思う。
- 666 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 23:08:02.02 ID:z4fPY7jV.net]
- PHPとPerlはもはや門前払いだわ
- 667 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 23:30:11.90 ID:2jyO0MAw.net]
- パールは多重ディスパッチ搭載されてるところが割と好き。使ったことないけど
- 668 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 00:17:35.00 ID:ZBUgGWmA.net]
- >>647
まだ言ってるよw
- 669 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 00:33:10.78 ID:sQZN3/qk.net]
- やけんペェ〜ルとプェチピィ使ってる公害はさっさと処分しましょうね〜
- 670 名前:あ mailto:sage [2017/09/24(日) 01:03:00.91 ID:g+SOx1mh.net]
- まー、MT車でもニュートラルにしてブレーキペダル踏んでないとセルを回せない、なんて仕組みになったりしてるしな。
安全性としては進化しつつ、機能・機構としては複雑になったり踏切からの緊急脱出の手段を一つ捨てるといった退化してる。 結局、言語も何が正解かは使う人間と用途次第だろ。 「ポインタを捨てたりNullableとそうでない型すらもわけるのが正しい言語」「型なんて飾りです、キャストすりゃいいんです、電文?unionで解釈しましょう」みたいな言語が相容れうる訳がない。
- 671 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 09:15:54.71 ID:XPNHEl2X.net]
- 多重ディスパッチわりと好きなんだけど、搭載されてる言語少ないよなあ
- 672 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 09:18:19.02 ID:L7/sMAP/.net]
- しかし時系列でみれば新しい言語ほど何かをするための専用の構文が追加される
傾向があって、その専用の構文では「それ」しか出来ない制限があることで 危険なことが出来なくなったり、読みやすくなったりしているのだから 次世代言語とはそういうものだろう
- 673 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 11:08:39.74 ID:fyfssP0K.net]
- ちょっと議論が抽象的すぎんよぉ
具体的に行こうぜ具体的に
- 674 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 11:10:15.91 ID:sQZN3/qk.net]
- バイナリで語れよ
- 675 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 15:15:34.52 ID:FsQtGtar.net]
- >>672
それ自称シンプル言語()のGolangだろ array、slice、map,chan。全てが専用構文 次世代言語は演算子もメソッド呼び出しだったりするから専用構文は少ないよ
- 676 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 15:20:28.63 ID:0P71vbb3.net]
- 関数型言語の時代が来る事なんて一生ないよ
- 677 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 16:49:57.99 ID:tjbSkdrA.net]
- もうそこまで新しい言語上の概念もないしな。
- 678 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 18:21:51.74 ID:y8Y2Gp0g.net]
- COBOL「私を殺すと言ってた言語は、みんな死んだよ」
www.nurs.or.jp/~ogochan/essay/archives/5033
- 679 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 18:23:00.77 ID:fyfssP0K.net]
- LLVMって第一級関数ないんだよな……
HaskellとはバックエンドにLLVMあるんだけど、どうやって実装してるんだろ?
- 680 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 18:51:05.70 ID:ueXBBIg3.net]
- 新しい概念がなくても、古すぎて記憶にない概念を蒸し返すだけで十分たのしそうだな
- 681 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 18:53:11.57 ID:fU9iGs3X.net]
- >>679
インタプリタで実装できるんだから、極端な話、インタプリタをそのまま埋め込んでしまえばいい。 それをいかに効率化するかは最適化次第だけど、基本的にはエミュレーションだよ。 CPU命令セットとの親和性の高い一部の低レベルな言語を除けば、 コンパイラというのは君が想像してるより非常に複雑でソースからかけ離れたコードを生成するもんなんだよ。
- 682 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 19:10:03.30 ID:fyfssP0K.net]
- >>681
いやまあ、せやね。Haskell が吐くアセンブラ複雑すぎてビビったことあるわ しっかしやっぱりインタプリタ埋め込みかあ。Haskellもそうしてるんだろうか?
- 683 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 23:54:19.09 ID:tjbSkdrA.net]
- c/c++ のコンパイラしか知らんけどそんなに複雑なものが必要かね。
あんまりイメージできないな。
- 684 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 00:13:26.46 ID:8jaeeQ+5.net]
- C++だってラムダはそれなりに複雑と思うな〜
- 685 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 00:29:03.12 ID:10sBRTwD.net]
- ブラウザがDOM操作とかgetとかpostとかするのもインタプリタのように見える
JSをいくら最適化しても複雑なデータ構造はそのままだから
- 686 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 00:30:46.06 ID:Kozaluvh.net]
- >>664
まだ仕変とかABIとか言ってるのかよこの言語。 いい加減枯れろよ
- 687 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 01:47:53.39 ID:/lG4wgeA.net]
- ポストC++としてはD言語が最適だわ
やっぱnullは便利
- 688 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 10:51:28.03 ID:8jaeeQ+5.net]
- Dは指針に欠けていて、書けるコードの種類が多すぎる。
最近はクラスは使わないとか言われた時はビックリしたわ。割と好きだけどさ テンプレートとオーバーロードの充実っぷりはC++の比じゃないし、プロパティあるし、UFCSある所とか好きだけど、演算子の定義を構造体中に書かないといけない所だけは解せない
- 689 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 12:10:20.51 ID:Vj0qyvjj.net]
- >>679
llvmのレベルでクロージャー定義されたらつぶし効かなくなるだろ llvmにそれを期待するのが間違ってる
- 690 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 12:40:19.83 ID:8jdzqYUG.net]
- >>689
期待はしてないぞ。ヒープに関数を展開する機能がないのに、どうやってヒープに関数を展開してるんだろう?って疑問を覚えているだけだぞ
- 691 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 12:54:44.69 ID:Vj0qyvjj.net]
- >>690
llvmを持ち出す意味がわからん cで実装されてる関数型言語はどうやってクロージャー実現してんだろ?とか jitってどうやったら実現できんだろ? という疑問の持ち方ならわかる
- 692 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 13:05:30.42 ID:8jdzqYUG.net]
- >>691
「Cで実装されてる関数型言語はどうやってクロージャを実装してるんだろう」でもほとんど同じ意味だけど、別にLLVMでもいいじゃん。俺がLLVMの方を意識してるからLLVMって書いてるだけだが Jitの方はよくわからん。関数型言語一般でJit使ってるの?
- 693 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 13:25:06.64 ID:X0v0rcqt.net]
- すごい素朴には
class { unsigned int eax; ... void add(); ... } みたいなアセンブラ実行クラス作ればできんじゃないの?
- 694 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 15:00:43.13 ID:AJsPQEJa.net]
- そもそも関数を動的に生成する必要はない
クロージャは環境を引数に取る関数として実装するのが普通だ
- 695 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 15:37:00.33 ID:C5otDHV+.net]
- 動的に関数を作るのはコンビネーターで結合させるんだろ。
- 696 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 15:40:30.80 ID:AszBb3kH.net]
- その前にまず再帰関数で100の階乗を計算すればいい
関数を100個作るやり方とは違うやり方がわかる
|

|