次世代言語議論スレ[Rust Kotlin Haskell]第6世代 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/08/28(月) 21:53:37.12ID:5I+bTEeA
※前スレ
次世代言語議論スレ[Go Rust Scala Haskell]第5世代
http://mevius.2ch.net/test/read.cgi/tech/1497311647/
2017/09/16(土) 16:33:37.37ID:aqKyvOS6
oO(アセンブラでアプリケーション全部書くのからはC++2011でも100倍は確実だと思うけど)
2017/09/16(土) 18:14:46.05ID:kjHVa57h
お前らは気持ちよくかけるオナニー言語が欲しいんだろ
普及するのは入りやすくて変化の少ない言語だろ

なのでどっちみち生産性とか実用性は無視していいんじゃないか
2017/09/16(土) 19:05:55.59ID:j0p/1V2e
>>479
これなー
別にC/C++で実行速度も解決できるしほぼなんでもできるからな

言語で何をするかが重要なのであって案の定スレ開いてみたら言語の欠点じゃなくわけのわからんこと抜かしてるし

多分こいつら下の階層のプログラマーじゃないだろ
2017/09/16(土) 19:11:14.44ID:j0p/1V2e
というか下の階層にいたらこんなスレ開かないか
めんごめんご
2017/09/16(土) 20:48:37.37ID:AcW1bn43
>>477
>>478
100倍は大げさ
機械語と高級言語だったら100倍ありそうだけど

アセンブリとCで10倍くらいかな
アセンブリとC++で20倍くらい?
2017/09/16(土) 21:13:49.72ID:CDKitgfC
まあ確かに普段何のプログラム書いてんだよってのはかなり重要かな。
2017/09/16(土) 21:56:40.44ID:e/AIeMoG
アセンブリとRubyなら15倍くらいかな
2017/09/16(土) 22:16:18.09ID:j0p/1V2e
そもそも次世代ってどれも対して変わらんだろ。GUIでプログラミングとか今までにない要素ぶち込むならまだしもどれも劣化python/C++じゃん

java/kotlinなんか仮想化すんなら別に言語javaである必要はないしな
次世代取りたきゃandroidみたいにほぼ強制的にやらせればいい
2017/09/16(土) 22:21:07.30ID:j0p/1V2e
よってkotlinだろう

このスレは終わりである
2017/09/16(土) 22:23:39.18ID:G0kiNrp9
うぉおおおおおおお
議論スレの終わりを初めてみた!!!!
2017/09/16(土) 22:24:51.68ID:qNpzB8Gl
今北産業
2017/09/16(土) 22:26:15.80ID:oDIa36LP
>>488
次世代は
javaの進化系
スレ完
2017/09/16(土) 22:27:09.86ID:VQ/VXHVC
記念パピコ
2017/09/16(土) 22:27:31.65ID:j0p/1V2e
俺が自演してるみたいに思われるだろ
やめろ
2017/09/16(土) 22:48:18.22ID:luYdXLIJ
自演パピコ
2017/09/17(日) 00:49:41.17ID:WzljKSlU
>>485
>今までにない要素ぶち込む
じゃVR/AR/MR or(amazon Echoみたいな)スピーカーデバイスだけで
プログラミングできる言語作れと?
確かに次世代っぽくはあるかもねw
2017/09/17(日) 02:58:00.79ID:A1VU6Oqu
どう考えても次世代はルーストだろう
2017/09/17(日) 08:32:15.30ID:msCJo3bN
他言語もそろそろRustのぱくりを考えているだろう
例えば参照カウントが2以上なら例外を投げるだけの機能
2017/09/17(日) 14:20:07.64ID:AD9s+d5U
Rustが色んな意味で新しい事は確かだ
497
垢版 |
2017/09/17(日) 15:03:42.87ID:4luHVr+4
VRで作業は少しアリかもしれんけどな。単純に視野的に。
Oculus買ったけど、Unityでアプリのウィンドウをキャプチャしたものを浮かべてたくさんの仮想ディスプレイのようにして遊んだけど楽しかった。NASA感ある。
でもキーボードとトラックボール以上の入力装置は無いな。空間をつかむって思ってるより難しかったわ。

でも何より熱いのと、その仮想ディスプレイを浮かべる部分作る作業は酔う。
2017/09/17(日) 17:49:11.61ID:iL83YJ5L
キーを押した感覚とかフィードバックがないとな
タッチパネルの課題としても研究してる人いるけど
2017/09/17(日) 17:56:51.20ID:T71SjEGu
良く知らないんだけど、関数型の言語って関数を動的生成してるんだろうか?
C++のラムダはしてないけど
2017/09/17(日) 22:55:01.08ID:3VVJG3KB
そんなことしなくても推論したシグネチャ通りの関数をコンパイル時に生成すれば十分。
2017/09/17(日) 23:44:37.23ID:T71SjEGu
クロージャとか関数オブジェクトはそう簡単にはいかんくね?
C++だと結構ダイナミックに引数変更してくるし
502デフォルトの名無しさん
垢版 |
2017/09/18(月) 01:25:42.89ID:+b1AQYPX
>>499
関数型言語の計算モデルであるラムダ計算モデルを単純に実装すると、
常に(「関数」ではなく)クロージャがヒープ上へ動的に生成され、
最終的にガーベジコレクションによって回収される
これはSICP本にあるような初歩的な関数型言語インタプリタ実装や
初期のLISP処理系実装で見ることができる

で、現在の最適化技術が反映された関数型言語処理系では
「クロージャ変換」と呼ばれる技術が使われていて、
単に束縛変数(いわゆる関数の仮引数)だけを参照する関数は
手続き型言語と同様にスタック上へ引数が割り当てられ、
本当に必要な時しかヒープを消費しないよう設計されている
その概略はTiger本に解説がある

なお、Haskellのような純粋関数型言語では「ラムダリフティング」と
呼ばれる技術によってクロージャ変換と同様な最適化が実現されているらしいけど、
自分は知らない
2017/09/18(月) 11:44:41.42ID:iZW012ea
>>502
知りたいことを過不足なく書いてくれた有能。感謝感激雨霰
2017/09/18(月) 12:25:46.18ID:/x8A7ZAN
それ最適化と呼ぶようなことなのか?
ラムダを普通の関数として実装するくらいのこと、静的言語だったら必ずやってるよね
静的言語の場合は単にそう実装するのが自然だからそうしてるだけで、最適化でも何でもないな
その程度のことにわざわざかっこいい名前をつけなきゃいけないほど動的な関数型言語の最適化技術は貧弱なのかなと思ってしまった
505504
垢版 |
2017/09/18(月) 12:53:56.59ID:/x8A7ZAN
全ての名前をコンパイル時に解決する言語ではラムダは自由変数を参照してないのがデフォで、
静的解析時に自由変数の参照を発見したら例外として変数をヒープへリフティングする
名前を動的に解決する言語では、あえて静的解析を入れない限り基本的には常に自由変数の参照があると仮定する
という意識の違いがあるってことかな
2017/09/18(月) 13:07:29.67ID:DpRq8b6A
なーにいってだこいつ
動的型付けの言語は全部ゴミってもう証明済みだろ
2017/09/18(月) 13:22:40.50ID:aKawbEQ/
ID:/x8A7ZANが何言ってるのか良くわからんのだが、まず「動的な関数型言語」って何を指してんだ?

俺の認識では動的な関数型言語って言ったらErlang,Lisp,Schemeを指すんだがそれのことを言ってんのか?

俺は話を動的型付け言語に限定してないぞ
2017/09/18(月) 14:14:51.60ID:8XcvDR/h
c++ だと単純に実行コードのメモリ内容をヒープに置いてるだけかと思ってたよ。
2017/09/18(月) 14:46:46.94ID:/x8A7ZAN
>>507
名前解決を評価時に行う言語と考えてくれ
2017/09/18(月) 14:47:16.89ID:aKawbEQ/
C++はautoで持ってるかstd::functionで持ってるかでもう最適化の内容が変わるし、ラムダは普通の関数ポインタでは持てなかったりするし、autoで最適化したら環境の変数も引数として渡すことになってたりすることもあるし良くわからん
苦手や
511
垢版 |
2017/09/18(月) 15:32:23.61ID:HvWrF9I2
なんか変な話だな。
ラムダをどう使いたいかの方が最適化では問題になるのでは?
インライン展開してしまうか、関数にするか、関数内関数にするかってことになるなら、関数ポインタとして呼びたいか条件分岐の方が良いのかとかそっちの観点が問題になるような。
それは石にもよって、armなんかだと再帰しないならインライン展開と条件実行の方が具合が良かったりすると思う。
2017/09/18(月) 15:47:47.30ID:vOYXlSBd
>>511
レイヤの違う問題。誰もそんな話はしていない。
インライン展開するにしても、前のプロセスで自由変数に依存しないラムダについては独立した関数への変換を予め済ませておけば、
インライン展開は容易になるだろう。
2017/09/18(月) 17:44:30.57ID:aKawbEQ/
>>509
ちょっと抽象的すぎんよぉ。Pythonとかか?それ
2017/09/18(月) 19:19:25.45ID:urldNTTh
型概念はリソース制限がきつかったころのレガシーなところはあるかもね
今わざわざunsignedにして1bit節約したい人はまずいない
20年後はchar?そんなのint(64bitだけど意識してない)でいいだろ?になるんじゃない?
2017/09/18(月) 19:57:06.67ID:7osjOZ8K
なんならdoubleで整数の計算してもいいですよ
516
垢版 |
2017/09/18(月) 20:01:58.72ID:HvWrF9I2
>>512
「自由変数に依存していない」から、ラムダが変換出来る訳じゃないよ、って言ってんの。
レイヤの違う話ではなくて、地続きの話では?
その上、最適化と言う言葉は危険すぎると思うが。
2017/09/18(月) 21:37:53.46ID:Rs/BRyvp
突っかかり始めた
2017/09/18(月) 21:41:40.52ID:dU2P6lSN
なんか突っかかってることはわかるけど、読み辛すぎて読む気がしない。二行目でギブ(笑)
2017/09/18(月) 23:48:00.28ID:Wz+o0dZv
>>513
jsもそうだな。関数型じゃないけど。

大雑把に書くと

所謂var bindingされる宣言を評価->所謂let bindingされる宣言を評価->実行

だからvar bindingされた名前は一番最初に見えてる。
やろうと思えばIRの変換で出来ることは実行前に(JIT使わずに)できる。
型情報がないから役に立つのか分からんが。
2017/09/19(火) 02:02:55.32ID:jzE0vKua
わけのわからん理屈話されるよりこういう内容のほうがまだましだろ
521デフォルトの名無しさん
垢版 |
2017/09/19(火) 03:04:41.27ID:NsD/KMp/
>>514
レイヤー次第だろうけどそれは無いと思う。
ネットワーク関連のバイナリプロトコルは思いっきりビット・バイト意識しまくりだし。
522
垢版 |
2017/09/19(火) 06:53:09.32ID:GMytP/5k
なんで疑問に思えないんだろう。
2017/09/19(火) 07:36:33.77ID:L/k3HGkW
下手に最適化するとデバッグが困難なイメージを払拭できないどころか助長している
最適化しない動的言語のデバッグは容易な気がする
2017/09/19(火) 07:53:57.35ID:Rp+gHpgj
動的言語ってなんだよ
コンパイルしない言語のこと?
2017/09/19(火) 08:03:33.07ID:t8DbjZup
>>522
じゃあラムダが自由変数に依存してないのに独立した関数へ変換できないケース、
または、その変換を行うことにより最適化が適用しづらくなるケースの例を挙げてくれ
あDHDの主張はこのどちらかを反例として挙げることで裏付けられるというのが俺の理解だが、合ってるかな?
あと、自然言語で回答されても誰も理解できないと思うから必ず具体的なコードで頼む
2017/09/19(火) 09:30:28.30ID:B9qsqzra
>>525
こいつが言ってるのって、たぶん他の最適化如何でラムダ部分のコードそのものが変わるとか、そういう話じゃねえかな…
変換が何を指してるかは分からないから、完全否定はしないけど、反例の種類は対偶もあるだろよ
2017/09/19(火) 09:36:28.47ID:sbIiLP4m
あDHD(いいネーミングセンス)の言うことを真面目に読むのは疲れるし、読み人によって解釈が異なる上に詠み人は違う解釈でいる
おまえら良くやるわ
でもたしかに自然言語で描かれるよりコードか数学記号で主張してるほうが読みやすそうww
528
垢版 |
2017/09/19(火) 18:24:32.47ID:ORpK0dfd
>>525
例えば、ARMだとインライン展開してしまえばADDEQとかADDNEみたいな条件付き命令でループ中でもストールさせずに飛ばしたり出来ちゃう時とか。
関数にしてjmpすると効率悪いコードになる時。
最適化では。
>>526
コードは変わらんよ。
2017/09/19(火) 18:52:46.88ID:PJTSF08k
>>528
だからインライン展開は変換後でもできると何回言われたら理解するのか
2017/09/19(火) 20:25:33.85ID:BJkNW1hw
コードで言われているのに自然言語で返すガイジ
Haskellの時に具体的に書いた結果無知を晒して大恥をかいたことがよほどトラウマになっているものと見える
2017/09/19(火) 21:17:03.18ID:OwH7JHtJ
前原も就任した後のTV出演で
モリカケ問題ばかりをやるきはないっていったそばから
モリカケ問題トーク始まったからなw
2017/09/19(火) 21:20:11.16ID:OwH7JHtJ
>>531
誤爆シマスタw
533
垢版 |
2017/09/19(火) 22:09:51.81ID:ORpK0dfd
>>529
それは独立した関数が最適ではない、と言う話ではないか。
何が最適化なんだよ。

>>530
別に恥とは思っとらんよ。勉強にはなった。
しかし余程、自分は恥だと思うんだろうなぁ、他人に対してそういう風に「恥ずかしいに違いない」と断定的に言うところ見ると。
余程恥ずかしいな、その思考回路が。
2017/09/19(火) 22:37:12.49ID:iY7FO3NM
>>533
ウダウダ言い訳してないで言われた通りコードで書けよ
2017/09/19(火) 22:39:47.10ID:zY0OeQa1
>>533
いやあれは流石に恥ずかしすぎ。あれを恥ずかしいと思わない思考回路がまず恥ずかしい。

勉強になったとかじゃなくて、最低限の勉強すらせずしったかしてたのがバレただけだろ美化すんな
2017/09/19(火) 22:40:22.21ID:6tkowvmv
なんで最適化の話になってんだか。
javaのGraal使って人間がハンドアセンブルしたマシン語をJITに使える新時代くるで。
いちいちjava bytecode生成しなくて済むよ。TruffleRubyが速い。
2017/09/19(火) 23:17:20.17ID:y3g67zRP
あの人にボロクソに論破されて発狂して何とか揚げ足取りたいガイジがおるようやね
2017/09/19(火) 23:20:27.89ID:0Xd47I4v
具体的にコード書くとやっぱりいろいろ明確になる。
2017/09/19(火) 23:27:50.73ID:4ouvyY05
>>533
直行する問題だと言ってるんだよ
等価なものは同じものとして扱ったほうが最適化の実装は容易になるだろ
540
垢版 |
2017/09/20(水) 07:03:02.13ID:0AKG+c7B
>>535
そーかー。
そら楽しかっただろうな、嗤うだけのお前はw

最適化の話は、話の発端>>502で、最初から言うとるぞ。
2017/09/20(水) 08:20:53.05ID:32CWNlSU
>>537
Haskellの件は擁護不可能だろ
こいつScalaとかOCamlとか関数型全般で知ったかしてたわけだし
2017/09/20(水) 08:21:44.46ID:32CWNlSU
ちな上で叩いてるやつとは別人だぞ
543
垢版 |
2017/09/20(水) 08:32:31.84ID:0AKG+c7B
最適化を知ったかしてる人にヤイヤイ言われる程度の事っしょ。
間違ってたら正せば良いし、積極的に正されてるつもりだぞ。
「間違ってるウゥ!」って指差して笑い転げるのは中学生くらいで終わらせとけよ。。
544
垢版 |
2017/09/20(水) 08:33:34.51ID:0AKG+c7B
>>530
ADDEQがどんな命令か知ってれば必要最低限のコードでは?
2017/09/20(水) 08:42:59.18ID:32CWNlSU
その文章のどこがコードなのか
自分が何言ってるか考えてからレスしろ
2017/09/20(水) 08:44:43.32ID:32CWNlSU
そして抽象度の異なる最適化という事さえ理解してない
547
垢版 |
2017/09/20(水) 08:54:13.08ID:0AKG+c7B
>>545
オペコードはコードでない、と。
面白いな。

>>546
理解してないんじゃない。
着地点が定義されてない最適化なんぞ、どのレイヤであっても無意味。
末尾再帰を解釈できるコンパイラと関数呼び出しとしてしか解釈できないコンパイラの話をしないうちに、
ループの最適化の話しても無駄でしょ。
2017/09/20(水) 09:02:56.02ID:lnxmN51d
誰もループの最適化の話なんかしてないでしょ
今の論点は、
・クロージャ変換によりガベージの増加を低減できる
・インライン展開により関数呼び出しのコスト低減を図ることも実行速度の向上には効果的である
・クロージャ変換を行うことによりインライン展開などのより低レベルな最適化が行えなくなることはない
・したがって、両者は直行する問題であり、それらを相反するものとするあDHDの懸念は誤りである
これでいいだろ?
2017/09/20(水) 09:12:41.36ID:meNSbSun
>>540
嗤うだけっていうのはただのディスやね。決めつけはニート認定みたいで、頭悪そうなのでやめといたほうがいいと思うよ

少なくとも、めっちゃ読みづらい知ったかぶり長々書かれて全然楽しくなかったぞ
あの時からずっとおまえのレスは普通に邪魔
550548
垢版 |
2017/09/20(水) 09:14:30.17ID:lnxmN51d
いやインライン展開を先にやっちゃったらクロージャ変換はできなくなるから正確には直行する問題ではないか
何事も負荷逆な操作をできるだけ後回しにするのは基本だよね
2017/09/20(水) 09:24:37.99ID:NK01lAwy
>>543
最適化知ったかぶりしてる奴って誰だよ

間違い自体は全然問題にされてなくて、Haskellの実装を知ってるとまで言っておきながら、その基本文法すらわかってなかった酷い知ったかぶりを責められてるのわかってる?
2017/09/20(水) 09:40:23.50ID:meNSbSun
あと全く知らないものを、まるで知ってるかのように振舞ってディスってたっていうのも問題だな
あんだけ散々ディスってたくせに知らんのんか〜いって思った

あれ以来、こいつは知ったかぶりする傾向があるから動くコード書くまで信頼出来んと思ってる
2017/09/20(水) 09:43:04.73ID:yYGRyM8i
そいつは極度の知ったか自己弁護野郎だから、みんなよく観察するように。
2017/09/20(水) 09:53:58.35ID:qH6V6v7k
どっちもどっちだな
2017/09/20(水) 10:04:00.22ID:OlAvSaNc
Cのマクロは人でも読めるコードを生成してくれるから良かった
だがマクロよりインライン関数の方がすごいんだという謎のマウンティングが始まった
人にコードを見せる習慣がなくなったのはそういう歴史の影響があるんだろう
2017/09/20(水) 11:12:40.40ID:qH6V6v7k
インライン関数は展開されないときもあるからマクロの方つかっちゃうな
2017/09/20(水) 11:30:55.10ID:meNSbSun
展開されない時って、コンパイラ判断として展開しないほうが良い時なのでは……?
いやコンパイラに任せるより手動で最適化したほうが良いような実力者なら知らんけど
2017/09/20(水) 11:36:58.65ID:qH6V6v7k
コンパイラーの判断は機械的に判断するから間違ってることも多いからな。
2017/09/20(水) 11:47:06.69ID:OlAvSaNc
実力者になった後で手動にするか、手動にした後で実力者になるか
現金で買うのとカードで買うのはどちらが賢いかというのに似ている
2017/09/20(水) 11:49:12.59ID:meNSbSun
はえー。俺はコンパイラより正しい判断が出来る自信はないから全部コンパイラに任せてるわ
いやすごいな。-O0でコンパイルして-O3並みの速度出せたりすんの?
2017/09/20(水) 12:03:51.93ID:qH6V6v7k
コンパイラの最適化は速度を優先するかメモリを優先するかバランスとってるからね。
俺みたいな速度最優先の少数派のことなんか考えてくれてないから自分でやるだけ。
2017/09/20(水) 13:32:21.76ID:CdIs01F3
-Ofast は速度最優先だと思ってたけどそうでもないのか
2017/09/20(水) 14:02:50.79ID:32CWNlSU
>>547
詭弁もいいとこだな
どこがコードなんだよ

オペランドすら記述していない上に、
結局大部分を文章で説明している
それでも、すべて支離滅裂な文よりはいくらかマシだが
2017/09/20(水) 14:07:16.46ID:32CWNlSU
そしてオペコードをコードと言いながら>>528で、最適化でコードが変わる事ではないという言い草
恣意的にレスしてるのがまるわかり
565デフォルトの名無しさん
垢版 |
2017/09/20(水) 14:50:54.31ID:rh0oGGav
あのー結局のところHaskellが良さそうだけどモナドっていうのが分からないとつかえないの?
それともモナドとか分からなくてもそこそこ普通に使えて、しばらく使ってたらモナドとかも雰囲気でなんとなく分かってくるものなの?

YouTuberで圏論の勉強会ビデオ四回目まで見たけどなんとなく理解はできたの
結局のところ集合と関数をより抽象化して記号化していろいろやってるんだよね?
2017/09/20(水) 15:00:39.54ID:f95dJFKd
モナドはまあ満たすべき性質ではあるけれど、別に理解してなくても問題ない。
コンパイラもモナド則をチェックするわけでもないし。
2017/09/20(水) 15:30:18.35ID:qH6V6v7k
俺はネットに無料で上がってる凄いH本よんだけど圏論何て一つもでてこなかったけど
モナドはわかったぞ。
568
垢版 |
2017/09/20(水) 15:44:48.04ID:0AKG+c7B
テンションすげえな。水曜なのに。
569デフォルトの名無しさん
垢版 |
2017/09/20(水) 17:03:51.19ID:66cdr9VM
モナドとか分からなくてもなんとかいけるんやー
ちょっとがんばっておぼえてみよーっと
ありがとー
570デフォルトの名無しさん
垢版 |
2017/09/20(水) 18:09:54.14ID:66cdr9VM
Ryzenとか出てきてこれからは6コア、8コアあたりまえになったらマルチスレッドとか大切になるんだとおもうの
それでちょびっとぐぐったらどうも関数型プログラミング言語はどれもマルチスレッドが得意らしいの
だからやっぱり関数型プログラミング言語が流行よね
そんな気がするの
2017/09/20(水) 18:21:45.19ID:8NhAmDw4
もうみんなコテハンつけたら?
ここにいるのって、どうせいつも同じ人間じゃね?
2017/09/20(水) 18:29:38.52ID:eqHukz4h
Haskellの並列ってあんまりマルチスレッドって認識してなかったけど、たしかにマルチスレッドあるな
2017/09/20(水) 18:35:57.38ID:OlAvSaNc
関数型の入門書はパターンマッチができるデータ構造ばっかり教える
クロージャやモナドはパターンマッチができない構造なのに
2017/09/20(水) 19:12:54.78ID:meNSbSun
そういや、なんでこのスレOCamlいないんだっけ?
2017/09/20(水) 21:15:05.03ID:+ftcwVio
関数型全般はさておきHaskell自体は並列処理書きづらいイメージがあるんだけど気のせいか
2017/09/20(水) 21:36:57.21ID:meNSbSun
あんまり詳しくないんだけど、Haskellの並列だと、いくつかの関数をそれぞれ1スレッド(プロセスだったかも?)に割り当てて並列で計算するのが印象に残ってる。
えらい簡単に並列化出来るんだなって思った記憶ある
なんだっけなあのライブラリ
577デフォルトの名無しさん
垢版 |
2017/09/20(水) 21:42:45.54ID:ej6oPx0l
純粋な関数は並列化簡単だからね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況