次世代言語10[Rust Swift TypeScript Dart]

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/04/25(水) 07:02:27.60ID:OmWDt0SE
スレタイ以外の言語もok

前スレ
次世代言語9[Haskell Rust Kotlin TypeScript Dart]
http://mevius.5ch.net/test/read.cgi/tech/1520298555/
313デフォルトの名無しさん
垢版 |
2018/05/01(火) 15:26:12.15ID:DdhcnubW
つまり、書かないとボローチェッカを満たせないというのももちろん理由の一つだけど
実行時のコストを可視化するという意味でも書いておいたほうがいいというわけ
Rustは実行速度が速くないといけない言語なんでね
2018/05/01(火) 15:53:34.08ID:jugg/3+t
2種類のコストの概念を学習するのが面倒臭い
だから色々なコストを無視して作ったフリーソフトが無双してるんだと思う
2018/05/01(火) 19:39:03.13ID:vzW3/HLG
リスト内包表記が読みにくいって人たまに見かけるけど、このスレにもおる?
2018/05/01(火) 19:42:50.63ID:xd1ck8hZ
Haskellのリスト内包表記がモナドと知った時の衝撃
まあ3項演算子と同じで慣れよね
2018/05/01(火) 19:49:54.02ID:KdOUAylP
doといい、内包表記といい、全部ちゃんと何かのシンタックスシュガーになっているのには恐れ入るわ
ユーザーからしてみればそこまでしてもらわなくてもいいっちゃいいもん。
開発側の強い拘りを感じて好きだわ
2018/05/01(火) 19:52:14.09ID:vzW3/HLG
Fortranのあれは内包表記と扱って良いものか悩む
2018/05/01(火) 20:23:57.89ID:KdOUAylP
RustはDみたいに.mapとか.filterとか繋げるのが主流かいな?
2018/05/01(火) 20:31:00.33ID:pBAnst7/
拘りっつーか関数型言語なんでそりゃそう作るでしょうよ
適当に文法導入してそれが関数に還元できないものだったら理論破綻するじゃん
2018/05/01(火) 20:37:38.61ID:KdOUAylP
そういえば純粋関数型だったな。Haskellは
純粋の意味を忘れておった
322デフォルトの名無しさん
垢版 |
2018/05/01(火) 20:45:19.66ID:DdhcnubW
>>319
Dはやったことないから知らんけど多分同じ
C#のLINQみたいな感じでメソッドチェーンする
2018/05/01(火) 21:21:46.75ID:KdOUAylP
>>322
Rustは速くなくっちゃいけないとの事だけど、それって速いの?
324デフォルトの名無しさん
垢版 |
2018/05/01(火) 21:29:57.85ID:btT/kXg5
早いの?ってなにに対して?
2018/05/01(火) 21:35:11.22ID:KdOUAylP
>>324
ループで書いた場合
326デフォルトの名無しさん
垢版 |
2018/05/01(火) 21:42:41.95ID:btT/kXg5
ループってCのループ?
2018/05/01(火) 21:55:33.38ID:KdOUAylP
>>326
え、rustのループとCのループって速度違うの!?
じ、じゃあCのループで
328デフォルトの名無しさん
垢版 |
2018/05/01(火) 22:04:27.49ID:btT/kXg5
rustのmap,filterとcで同等のことをするのは、真ん中とって同じくらい速いと考えてよろしいですよ
2018/05/01(火) 22:07:47.19ID:KdOUAylP
おお、マジかすげー!!
330デフォルトの名無しさん
垢版 |
2018/05/01(火) 22:22:36.78ID:btT/kXg5
でしょ、rustおススメさ
2018/05/02(水) 00:38:20.18ID:dFHCtPB7
rustは速さとモダンな記述のバランスが良い
2018/05/02(水) 00:58:58.35ID:+3mXDJV1
大変非本質的なことを書いて申し訳ないんだが、<>と::に拒否反応が出る。俺だけかな
2018/05/02(水) 01:41:11.00ID:7KDFadEV
無茶苦茶な事敢えて言うがやっぱプログラミングするに至って世界に記号が足りない。だから2個記号を並べるというダメな記法になる
ついでにアルファベットも50個くらいにしてくれ
334デフォルトの名無しさん
垢版 |
2018/05/02(水) 01:45:52.01ID:vteIglDu
やっぱりAPLって神だわ
335デフォルトの名無しさん
垢版 |
2018/05/02(水) 01:47:50.27ID:vteIglDu
Vimでなんかのプラグイン入れてhaskell書いてたらラムダ式のバックスラッシュをλに変えられて草生えた
2018/05/02(水) 10:07:19.34ID:mp5av7vO
>>333
Juliaみたいにユニコード完全対応するとギリシャ文字を変数に使えたりするが
いまいち流行りそうな感じがしない
2018/05/02(水) 10:25:48.10ID:RzHnyLgy
変数とかじゃなくて記号としてだろ

λとか { (x,y) | x ∈ R, y ∈ R } とかアリではあるのだろうけど入力面倒そうでもある。
Int や Real を意味する派手な(縦線が二本線)大文字の I や R も欲しい
2018/05/02(水) 10:53:03.53ID:oEkIWn2X
Agdaとかその辺徹底してる。

作者自身が教えてる動画で、その記号どうやって打つのて何度も聞かれてて、
最後は何でユニコードにするの?て聞かれて、だってそっちの方が美しいじゃん?て答えて失笑されてた。
めんどくせ、こりゃ流行らんわと思ったけど、慣れると\より\lambdaて打ちたくなる不思議。
2018/05/02(水) 11:41:13.27ID:NVRwXhE8
中置の二項演算ができたら記号は何でもいい
他には分数のように縦に並べたい
340デフォルトの名無しさん
垢版 |
2018/05/02(水) 17:37:54.83ID:Sw4XeVpF
欧米の人たちは∈∧∋とかどうやって入力してるんだろう?
2018/05/02(水) 17:37:57.52ID:+3mXDJV1
>>337
わかる
2018/05/02(水) 18:15:31.48ID:vteIglDu
Unicode打ち込むエディタとして、Junoは良く出来てる
2018/05/02(水) 18:41:04.95ID:1b+D0yU2
そんなクソ機能、バグを生み出す元でしかないわ。
2018/05/02(水) 20:25:38.31ID:HO4ioabV
>>339
Vimで表現出来なそうでつらみ
2018/05/03(木) 01:00:22.05ID:VEudjtBb
RAIIとGCってどっちがパフォーマンス優れているの?直感としてはGCの方が効率良さそうに感じるんだけど
2018/05/03(木) 01:08:46.71ID:bKSKRSB9
感じるならしょうがないけど
GCは解放していいオブジェクトがどうか判定しなきゃいけないけど
RAIIだと不要だよね
2018/05/03(木) 01:08:55.36ID:gY2lED9C
究極的には圧倒的にGC
GCはメモリの再配置が可能という極めて大きな最適化の自由度があるからね
2018/05/03(木) 01:10:48.34ID:1+qiVSYV
>>346
RAIIで面倒見きれるような単寿命のオブジェクトはほとんどGCのコスト無いんだぜ
2018/05/03(木) 01:11:29.45ID:bKSKRSB9
再配置できるのはメモリアドレスを抽象化してる場合でしょ
GCとは直接関係ない
2018/05/03(木) 01:14:39.15ID:hvfEvXXP
>>347
メモリの再配置なんて、C++ に慣れた身からみると、いかにもにコストが高そうだが…

>>349
その「メモリアドレス抽象化」はアプリケーションに益をもたらす性質があるのでしょうか?
2018/05/03(木) 01:16:22.58ID:bKSKRSB9
>>348
RAIIが短寿命?
関数スコープのスタックにオブジェクトを置くだけがRAIIじゃないよ
どっちにせよ同じ条件でRAIIより速くはならんでしょ
2018/05/03(木) 01:29:46.74ID:VEudjtBb
解放のコストもさることながら、確保のコストが気になります
2018/05/03(木) 01:31:56.63ID:bKSKRSB9
>>350
やっぱり第一にメモリコンパクションじゃない?
アクセス透過性みたいなのも原理的にはできるだろうけどプログラミング言語レベルで
そういうの実現してるのはなさそう
2018/05/03(木) 01:34:20.53ID:bKSKRSB9
>>352
気になるんならしかたないけど
確保はほぼ違いがないよね
2018/05/03(木) 01:35:38.85ID:bKSKRSB9
補足すると
GC言語はヒープを多用する傾向はあるけど
そういう場合スレッドローカルなヒープだったりするからね
2018/05/03(木) 01:40:50.12ID:yApXR4/8
>>355
スレッドローカルなヒープってどういうこと?
普通のヒープ(Cのmallocとか)とどう違うん?
2018/05/03(木) 01:46:54.01ID:bKSKRSB9
>>356
あるスレッド専用のヒープってこと
そのスレッドしか使わないから排他処理がいらないので速い
スタック確保とそれほど差がつかない
cでもglibcとかだとスレッドローカルをミックスして使ってたと思う確か
2018/05/03(木) 02:03:01.65ID:SiwDQ+i8
RAIIを徹底したらスタックでメモリ管理出来るようになったりするんだろうか?
2018/05/03(木) 02:04:19.79ID:yApXR4/8
>>357
すまん。また質問なんだが、
ミックスして使ってるってどう言うこと?
それとRustのjemallocとかだとまたglibcと違う動きをするの?
取り敢えずjemallocの方が速いらしいぐらいしか知らないんだけど…
2018/05/03(木) 02:08:20.55ID:yApXR4/8
ごめん。意味が伝わりにくい書き方をした。
ミックスして使ってるって言ってもglibcは一体どうやって
スレッドローカルなヒープとそうでないヒープの区別をしてるの?
2018/05/03(木) 02:12:08.90ID:bKSKRSB9
>>359
うろ覚えなんで間違えてたらすまんだけど、
最初は普通にグローバルヒープひとつではじまる
普通に各スレッドがロックをとってメモリをとってくるんだけど
もしロックがとれない状況になるとスレッドローカルなヒープを
作成するとかだったと思う
どっかに詳しく説明してるスライドショーがあるはず
2018/05/03(木) 02:21:14.79ID:yApXR4/8
>>361
ありがとう。
出来ればそのスライドとやらのリンクを貼ってくると助かる。
もう覚えてないってんならしょうがないけど…
2018/05/03(木) 02:34:51.07ID:bKSKRSB9
あった
mallocの旅(glibc編)
2018/05/03(木) 02:49:34.78ID:yApXR4/8
>>363
ありがとう
2018/05/03(木) 09:06:54.27ID:wZdPkGUF
dockerがgoで実装して十分パフォーマンス発揮してる時点で
組み込みレベルでないならそこまでGCいらんことは示されただろう。
2018/05/03(木) 09:30:32.45ID:b8/6BKg1
GCはあっても無くてもいいけど
スタックかヒープかくらいは選ばせて欲しい
2018/05/03(木) 09:51:10.41ID:wZdPkGUF
正直なところ、カスがGCなし言語で書いたものより、適当にGCあり言語で書いたもののが
ランタイム速度も速いでしょ。
バカがクソみたいな議論してる間にgoのGCの性能上げてたgoogleは正解だよ。
2018/05/03(木) 10:09:21.98ID:SiwDQ+i8
仮にDockerがPythonで実装されていたらやはりパフォーマンス足りなかったんだろうか?
2018/05/03(木) 10:41:20.52ID:u+2rTbGR
>>351
スタックベースじゃないRAIIはメモリの断片化の原因になるぞ
2018/05/03(木) 11:00:48.14ID:AfyjFEfn
1. 性能が足りないとクレーム
2. 厳しいノルマ
3. データ改竄
4. 1のクレームがぴたりと止む

こういう事案なら1から4まで全員怪しいよね
2018/05/03(木) 12:02:05.92ID:y3R7schb
https://www.google.co.jp/amp/ascii.jp/elem/000/001/496/1496211/amp/
2018/05/03(木) 13:26:06.53ID:Zu+ttBo3
firacodeにカスタマイズ機能つければいいのか
373デフォルトの名無しさん
垢版 |
2018/05/03(木) 13:46:19.78ID:FgFo6AR2
dockerで示されるパフォーマンスなんかないだろ
2018/05/03(木) 14:20:45.28ID:AfyjFEfn
パフォーマンスにちょっと興味を持つだけで怪しい奴らが集まってくる
Pythonのようにパフォーマンスに完璧に無関心にならないとすぐ腐敗する
2018/05/03(木) 14:35:25.51ID:/IyBD/e7
ボトルネックだけCythonとかでなんとかするスタイルはやはり正しかったということか
376デフォルトの名無しさん
垢版 |
2018/05/03(木) 14:43:47.18ID:nk+G1gQG
そもそもRAIIはパフォーマンスのためのものじゃないだろ
2018/05/03(木) 20:03:59.10ID:StPlxOeO
dockerって正気か?動作中は何もしてないぞ?
# go のGCが優秀になったのは認める
2018/05/03(木) 21:48:30.21ID:AfyjFEfn
なぜgoのGCだけを改善するの?
全てのGCを平等に改善しないとダブスタだと叩かれるかもしれないよ
2018/05/03(木) 22:37:19.33ID:KC4pupk8
どういう意味だ?
2018/05/03(木) 22:42:00.84ID:oP7lbF46
>>378の他のレスも含めて何言ってるのか分からないものばかりだから、考えても無駄かと思うよ
2018/05/03(木) 22:52:09.58ID:2wLGMMyE
解説は詩を殺す
2018/05/03(木) 23:03:41.88ID:AfyjFEfn
goのGCと同じものをC++で実装できないのかな
C++のGCが優秀にならないかな
そういう意味
383デフォルトの名無しさん
垢版 |
2018/05/03(木) 23:19:27.01ID:nk+G1gQG
やっぱり意味わからん。
その場合の主語は誰よ?
2018/05/03(木) 23:47:35.35ID:oP7lbF46
>>382
C++のGCって一体なにを指しているのだろう。
2018/05/04(金) 00:00:41.82ID:LrVtGqlb
やっぱここにいる奴は馬鹿ばっかりなんだな。
2018/05/04(金) 00:17:24.19ID:/D8HsFql
C++のGC……?
2018/05/04(金) 00:21:24.66ID:CL+nFZXX
>>383
次世代の誰かだろ
正確な予知はできない
2018/05/04(金) 00:51:59.59ID:/D8HsFql
あーもうめちゃくちゃだよ
2018/05/04(金) 01:35:42.99ID:63fCyROx
一方賢い俺はだいぶ前にNGした
2018/05/04(金) 05:56:35.74ID:zosHXKIm
C++でGCとか言うとバットマンのコスプレしたハーブ・サッターにビンタされるらしいぞ
2018/05/04(金) 06:17:07.59ID:E+YYG/ag
きっとスマートポインタなんかじゃやだもんって意味かと思いました。
2018/05/04(金) 10:09:56.44ID:VQ//CMaE
極めて大きな最適化の自由度とはなんだったのか
2018/05/04(金) 10:34:38.24ID:+ni+4ZPZ
>>392
メモリアドレスが抽象化されてれば、実行時の状況や統計情報に基づいたメモリレイアウトの最適化ができるね
理論的には、一緒に使われるものをメモリ上で近くに置いたりしてキャッシュヒット率を上げたりできる
2018/05/04(金) 11:25:26.68ID:VQ//CMaE
>>393
それは抽象データ型を定義できる言語ならどれでも可能か
それともC++やRustでは不可能か
これが問題だ
2018/05/04(金) 14:10:07.69ID:51fiRXRv
この知ったかぶり
抽象データ型なんか関係ないだろ
2018/05/04(金) 15:02:25.96ID:ZqOHI6SP
>>393
ってもそれ空理空論であって、
x[i,j,k] みたいな配列のメモリレイアウトをアクセスパターンから
決めるという単純な処理ですらどの処理系にも実装の予定すらないだろう

「c/c++では有能なプログラマがちゃんと判断して書くから最適な結果が得られる可能性が高い」
という言説の方がまだ現実的
2018/05/04(金) 15:04:28.49ID:ngnuzOEt
>>396
単純に隙間を詰めるだけなら普通にやってるし、それだけでもメモリのアクセス効率や利用効率は改善するよ
2018/05/04(金) 15:05:37.17ID:ZqOHI6SP
>>397
それアクセスパターンと関係ないでしょ
話通じてないな
2018/05/04(金) 15:09:57.46ID:ZqOHI6SP
アクセスパターンからの最適化というのは、

巨大な配列だけどアクセスされるのはごく一部
→スパース配列を用いる

2次元で同じyについて近しいxで連続してアクセスされることが多い
→ cでいう v[y][x] というように同じy座標のものを連続して並べる

こういうこと
2018/05/04(金) 15:12:34.97ID:ZqOHI6SP
実装が隠蔽されていればそういう最適化の自動化が可能だという>>393に対して、
それはそうだが絵に描いた餅過ぎると否定的なことを言ったのが>>396
以上
2018/05/04(金) 15:24:22.35ID:51fiRXRv
ヒープの話から来てるからあくまでメモリアロケートした単位での最適化と考えるべきでしょ
話を拡大解釈して通じてないのはお前だと思う
2018/05/04(金) 15:40:45.66ID:8dzo215M
>>401
393をそう読むのなら話通じないな
別にお前が無違ってると主張する気は無いよ
思想と言論の自由は認めるから黙れとも言わないし
2018/05/04(金) 15:45:30.86ID:8dzo215M
あ、いや俺が間違ってる気がしてきた
コンパクションで並べるとかいう話か

それでもやっぱり
>>396
>「c/c++では有能なプログラマがちゃんと判断して書くから最適な結果が得られる可能性が高い」
>という言説の方がまだ現実的

だと思う
2018/05/04(金) 17:35:05.26ID:ngnuzOEt
で、有能なC++プログラマはヒープの断片化をどうやって回避するの?
一般的な回避策としてはまとめて静的に確保するわけだけど、それだとRAII的な方法論を否定してることになるよね
2018/05/04(金) 17:41:04.90ID:VQ//CMaE
生ポインタをprivateメンバーにすれば再配置できるんだろ
2018/05/04(金) 18:45:44.08ID:VQ//CMaE
そもそもRAIIを肯定するのも否定するのもC++プログラマの自由だ
この自由を尊重すれば、極めて大きな最適化の自由度はC++にもあるんじゃないか
自由を奪ったら最適化の自由度もなくなるのは当たり前だ
2018/05/04(金) 18:55:41.39ID:/D8HsFql
C++は何も縛らないからなんでも出来る理論本当に嫌い
2018/05/04(金) 19:00:50.09ID:ngnuzOEt
縛ったほうが最適化の自由度は上がる
C/C++はポインタのせいで配列アクセスの並列化がやりづらいのは有名な話だ
2018/05/04(金) 19:11:43.01ID:VQ//CMaE
>>407
じゃあ逆の理論はなんなの
一長一短理論
どっちもどっち理論かね
2018/05/04(金) 19:12:50.22ID:/D8HsFql
>>409
>>408
411デフォルトの名無しさん
垢版 |
2018/05/04(金) 19:24:33.12ID:HyF2shia
GCは、あるプログラマにとっては仕事を単純にしてくれるが、別のプログラマにとっては仕事を複雑にする要因になるという特性があるんだよね
2018/05/04(金) 20:34:01.38ID:+h39vGOl
>>411
プログラマに、というよりは作ろうとする対象によってではないかな。
2018/05/04(金) 22:10:23.06ID:VQ//CMaE
「設定より規約」で複雑な設定を不要にするために規約で縛って単純にすることはある
最適化とは関係ない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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