次世代言語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/
2018/05/16(水) 21:50:17.17ID:ub+CyxOt
1/6公式使うまで最適化してくれるようなコンパイラあんの? あったら見て見たいんだけど
2018/05/16(水) 22:22:29.79ID:/X1sH6Jm
visualc の出したコードではループ回数が10の倍数だということを織り込んで
10回分ずつ loop unrolling して端数回を処理するコードは略されてた。

そこまでわかってるならもう全部計算しといて略せよという気がした。
2018/05/16(水) 22:57:07.69ID:/X1sH6Jm
1/6公式使うのは違う計算をして微妙に違う値になるから最適化というより簡略化だな
2018/05/16(水) 23:22:07.02ID:kpFCptG2
先に除算を分岐処理しないとオーバーフロー条件変わっちゃうからなぁ
2018/05/16(水) 23:44:41.84ID:mOBIQo/B
まあ最適化してるってことでコンパイル時に全て計算してしまえば
ランタイム速度はいつだってO(1)だよ。
2018/05/17(木) 00:08:51.80ID:44AbGMy1
悪質な反則と正しいハックの違いを
理系の学問では説明できない
2018/05/17(木) 01:23:03.74ID:GvGg8gY/
コンパイル時に計算可能なのは>>457
>>584は実行時の引数使ってるから計算しとくのは無理だな
いつだってO(1)に最適化できる、未来を予測する神のコンパイラがあれば別だけど。

積和しないで公式使うのがよろしくないってのは、
数学や算数の計算と違って丸め誤差のあるコンピュータ言語での
浮動小数点数演算は誤差に関する統一的な挙動、
通常 IEEE 754 に準拠した挙動が期待されるわけで、
式を変形したり変えたりすると丸め誤差の出方が違って結果の値が変わっちゃうから。

もちろん規格を守らなくて良いというオプションはあっても良いわけどけど。

…誰か何か他の話題を
2018/05/17(木) 17:09:11.06ID:UKx8yrTb
自分で考えろカス
2018/05/22(火) 10:01:58.35ID:C41sjEPZ
お前が考えろゴミ
2018/05/22(火) 17:54:26.91ID:IYYsp57a
ほなワイが集めたるで〜
2018/05/22(火) 21:27:22.64ID:XSJVgfVv
つまりRust最強
2018/05/22(火) 21:57:35.93ID:eYNszKh+
何がどういう理屈で「つまり」なんだってばよ(; ̄Д ̄)?
2018/05/22(火) 22:03:03.16ID:+QrWxPmY
Rustは最近impl traitが実装されて使いやすくなった
2018/05/22(火) 22:41:37.50ID:eYNszKh+
impl trait は確かに嬉しかった
これでやっとトレイトオブジェクト使わずにイテレータが返せるようになった
2018/05/22(火) 22:50:22.39ID:BI9R8Qza
rust わかりやすいくらいダメな方向に行ってるな。。
2018/05/22(火) 23:12:28.14ID:auQt52bO
Juliaは?
けっこう化けそうな希ガス
607デフォルトの名無しさん
垢版 |
2018/05/22(火) 23:20:40.27ID:eYNszKh+
何が理由で「ダメの方向」って言ってるのか分からない
C++の後継としてはRustは限りなく理想に近い言語だと思うが…
2018/05/22(火) 23:23:35.78ID:eL1QxRDx
>>606
去年も全く同じこと言ってたよなお前
2018/05/22(火) 23:28:27.19ID:m7LLEOxE
JuliaはPythonを殺せない気がする。ボトルネック以外速くてもあんまり意味ないし
2018/05/22(火) 23:38:51.33ID:rpUF29sL
py 3.6で標準で型付けできるようになったし
av女優の名前借りたゲス言語なんてオワコンでしょ
2018/05/22(火) 23:41:37.77ID:CTd7FMth
型システムだけはJuliaの方が好き。っていうかクラス嫌い
612デフォルトの名無しさん
垢版 |
2018/05/23(水) 00:06:43.07ID:QWeWgJFJ
結局Dartなんだよなあ
2018/05/23(水) 00:10:03.78ID:NeMRQIGN
数値計算の話をwebで流すのやめろ!
2018/05/23(水) 00:24:34.00ID:lm4BwuCE
Juliaいらね
数値計算に使う分には記述性はFortranと大差ない
2018/05/23(水) 00:30:13.83ID:8U/w+cdS
Julia使ってるとコンパイル不要のスクリプト系の強みをjitのプリコンパイルの時間で失ってる気がするんだけど分かる人いない?
2018/05/23(水) 00:30:32.27ID:NeMRQIGN
>>614
パ……パイプとより柔軟な内包表記があるから……
グラフも出せるし……
2018/05/23(水) 00:32:43.88ID:xLXjXRd/
>>614
第一級関数がFortranにはないじゃん?
2018/05/23(水) 01:02:46.26ID:mwVk/jhM
Rustはクラス嫌いなだけでなく第一級関数も嫌う方向に行った
2018/05/23(水) 01:25:54.25ID:LjfntoLm
内包表記とかいうそびえ立つ糞
あのガイジ文法が読みやすいってpython作った低学歴はメクラのガイジなのか?
2018/05/23(水) 01:28:00.60ID:01TEDvfp
使わなきゃいい
621デフォルトの名無しさん
垢版 |
2018/05/23(水) 01:48:18.92ID:NeMRQIGN
内包表記読みにくいって方が理解できん
2018/05/23(水) 01:52:39.56ID:prSTZoE+
包皮
放屁

やっぱ読みにくいわ
2018/05/23(水) 01:55:25.46ID:prSTZoE+
ピリオド.でpropertyをつないでいく何たら記法ってやつ
Rubyのゴルフ好きがよく使うが
あれこそ読みにくい
2018/05/23(水) 01:55:41.96ID:lm4BwuCE
>>615
Juliaは数時間〜数日単位の時間のかかる処理に使うもの
全く問題にならないオーバーヘッド
2018/05/23(水) 02:34:11.07ID:V0Z2NuNB
>>618
なに言ってるんだ?
Rustは普通に第一級関数使えるんだが…
いろんなクレートがクロージャ使いまくってるんだが…
あとクラスを嫌ったのはむしろ正解だろ?
データと操作を一緒にするのは失敗で関連付けるのが正解
つまり、クラスは失敗でRustのimplかGoのレシーバが正解
2018/05/23(水) 04:36:59.97ID:L+y822nJ
Haskellの移植だっけか?あっちは分かりやすい。
2018/05/23(水) 04:38:52.45ID:L+y822nJ
Pythonic wwなリスト内包表記
もう少しうまくパクればいいのに。
2018/05/23(水) 06:54:23.85ID:eQfPSYhe
確かに for がネストしてたり if else がネストしてんのに内包表記するのは馬鹿だなと思うわ。
素直に for 文書いて append しろやと。
2018/05/23(水) 07:02:28.47ID:eQfPSYhe
>>607
後継っつーか、ほぼc++と同じ方向に行ってるだけになってるだろ。
それに意味があるか?
2018/05/23(水) 09:26:47.69ID:McbJvmIi
Python の内包表記はややこしいって、Guido 自身が言ってるw

たぶん、a.b.c.d など、Ruby, jQuery みたいに、
Python では、関数型のメソッドチェーンができないからだろ
2018/05/23(水) 09:50:48.87ID:V0Z2NuNB
>>629
GCがないこと以外はほぼ全て真逆の方向に進んでると思うんだが…
Rustほど信頼性に極振りしてる言語なかなかないぞ
アレのどこが同じ方向なんだってばよ?
2018/05/23(水) 09:59:13.80ID:1qopdzmM
メソッドチェーン推しのくせにオプショナルチェーンに考えが至らず、多言語の後追いでパクリ導入したが?を識別子にできることとクソ命名習慣が相まり?.が使えず&.となった、もはやまともにパクることすら出来なくなってきた糞ジャップ言語があるらしい。
2018/05/23(水) 14:15:18.86ID:zwnct6X1
pythonはもう機械学習の覇権言語として確固たる地位を確立してしまったので、
ITドカタどもが書きやすいと感じるかなんて、最早どうでも良い領域に到達してしまった
2018/05/23(水) 14:49:50.61ID:xLXjXRd/
機械学習を自分で書ける腕があるなら、既に人が作ってくれたものを捨ててわざわざ一からやるなら別にPython使わなくても良いのよ?
2018/05/23(水) 17:28:38.80ID:mefsnanK
自分のオリジナルのモデルを実装したら、比較検証用に他のモデルも動かす必要あるわけじゃん?
既存のモデルまで全部自前で実装するのはダルいんだわ。
で、既存のモデルはPythonで動かすってなったら、そのまま自分のモデルもPythonで動かせた方がデータの加工やグラフ化なんかを使い回せて便利ってなっちゃう。
2018/05/23(水) 17:34:28.36ID:xLXjXRd/
わかりみが深い
2018/05/23(水) 19:47:24.32ID:1qopdzmM
でも例えばtensorflow.jsはpythonのtensorflowやkerasのモデルインポート出来るぞ。
こんな風に移行手段提供されるんだったら言語は何でもいいんじゃない?
2018/05/23(水) 19:57:50.83ID:eQfPSYhe
rustに信頼性?
あの言語で信頼できる書き方できるならc++でもできるほどのプログラマだわ。
機能追加しまくって聳え立つクソになりつつあるって意味で全く同一方向だと思うがね。
2018/05/23(水) 20:04:05.38ID:0agB57Q/
>>631
お前がそう思うならそうなんだろう
お前ん中ではな
2018/05/23(水) 20:08:16.04ID:Vc3iwML4
>>637
まあライブラリ提供側の気分次第やね
提供してくれたら喜んで移行できる
2018/05/23(水) 20:08:23.39ID:0agB57Q/
Rustでまともなプログラム書けるならC++でまともにプログラミングできるって点が一番のRustの致命的にゴミな部分な
Rustを使う意味はただのひとつもない
2018/05/23(水) 20:42:05.12ID:Vc3iwML4
Juliaはendがなあ……
643デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:14:13.23ID:Ex+BBdgR
>>641
大きな違いがあるぞ。
C++はまともでないプログラムでもエラーや警告を吐かずにコンパイルできてしまうが、Rustは、少なくともメモリ周りがまともでないかどうかはチェックしてくれる。デバッグや保守を考えたらRustの方がありがたい。
644デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:30:42.02ID:V0Z2NuNB
>>643
Sync, Sendのマーカートレイトのおかげでマルチスレッド下のデータ競合もチェックしてくれるぞ
もちろんNull安全も保証してくれる
むしろRustを使わずC++を使う理由の方が「既存資産」以外にはひとつもない
2018/05/23(水) 21:53:37.23ID:cEWT5Ura
前から気になってたんだけどWindowsのDLLみたいな動的リンク方式のライブラリを作ったり使ったりするのに適した言語って最近のである?
言い方を変えるとバイナリ形式のプラグインやアドオンを作ったり使ったりする言語を探してるんだけど
最近のプラグインやアドオンってスクリプトが主流なんだよね
2018/05/23(水) 21:57:13.88ID:H7n6Wk6+
>>637
それ、Pythonで書いておけば何処でも動くから
Pythonで書こうってのが加速するだけじゃん
js では学習済みのモデルが動くだけなんだから
2018/05/23(水) 22:05:53.52ID:1qopdzmM
>>646
ちがうよ。学習も出来るフルセットだよtensorflow.jsは。
たしかに学習済みモデルを動かすだけのライブラリもあったけどね。
そうではないから盛り上がってるんじゃん。
2018/05/23(水) 22:10:00.62ID:H7n6Wk6+
あ、ホントだ。教えてくれてありがとう。
2018/05/23(水) 22:14:28.24ID:NeMRQIGN
数値計算の次世代言語雑魚すぎィ!
Fortress 復活させろよぉ!
2018/05/23(水) 22:32:26.36ID:X0L2uE50
>>645
ネイティブならC++
ネイティブでなくてよければC#がベスト
2018/05/23(水) 23:52:54.57ID:cEWT5Ura
>>650
やっぱそうなるか
次世代言語への移行はまだまだ先になりそうだ
ありがとう
2018/05/24(木) 00:56:23.12ID:OfFTJh37
>>643
そもそもRustでコンパイル通せるならC++で十分ってことへの答えになってないな

そもそもチェック自体も胡散臭い。当てにならん
https://github.com/rust-lang/rust/pull/50966
2018/05/24(木) 01:01:49.92ID:OfFTJh37
>>644
Rustみたいな鬼のように複雑な言語使ってコンパイル通せるなら、
C++でバグ出さずに書けるっつってんだろ
コンパイル通せる前提で話すんなや

あんな数年の歴史しかないのにC++に匹敵する
サクラダファミリアに成長できた複雑怪奇な言語コンパイル通すのと
C++でバグなくプログラミングする難易度ほぼ同じなんだから
既存資産の分でC++に軍配あがるだろって単純な話よ
2018/05/24(木) 01:06:34.50ID:/hP4MdXz
>>653
桜田じゃない。サ「グ」ラダだ、タコ助。
2018/05/24(木) 01:48:40.06ID:wnD2d+8L
>>653
ああもう煩いな
おれの経験にのみ基づく話なので「それはおまえだけだろ?」
と言われた場合はぐうの音も出ないのであまり書きたくなかったが…

俺はRustを趣味で使い始めて1年半くらいで自分でもRust使いだと名乗れる
くらいには詳しくなったが、それでも未だにコンパイラには時々怒られてる
ただし、コンパイラのエラー情報を見れば何がダメなのか
すぐ理解できるようになったので少し考えれば修正できるようにもなったし
未だに怒られること自体はさほど大きな問題にはなっていない
ただ、始めた頃と比べれば、だいぶ怒られる回数は減ったが完全に無くなりはしなかったし、
今後もずっと俺はRustのコンパイラには時々怒られるような状態のままだと思う
そしてその状態の俺がC++で同じようにコードを書いた場合、
Rustだと時々コンパイラが怒ってくれてた部分をC++は全て無視してバグになってしまう
俺にはRustのコンパイルを(時々怒られつつ)通すことは出来るが
C++でバグを出さないことはできない。だから俺はRustを使う

他のRust使いはどうなんなんだろうな?俺と同じヤツはいないのか?
2018/05/24(木) 08:03:37.58ID:haXyd0aV
サクラダファミリアwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
チェリーブロッサムボーイかよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
2018/05/24(木) 08:09:10.38ID:fO25J7ke
だいたいそんなもんじゃない?
今まで静的解析かけてたようなものが、コンパイラに標準実装されたようなもんかと。
無自覚にガバガバのCpp書くよりはよっぽど良いかと。
658デフォルトの名無しさん
垢版 |
2018/05/24(木) 08:14:37.42ID:hcSrmWsG
どっちに対しても言えるけど
そいつ本人の説得力ってのは
そいつのコードを見るまでわかんねえ

口では色々言ってるやつのコードが結局「えw」みたいなこともあるし
「えw」みたいなコード書いてるやつがそれを恥じて黙るどころか
むしろ誇ってるみたいな態度でどんどん発言をさらにするケースまであり

>>655
どっちかってーとコンパイラやボローチェッカが怒ってくれることは重視してない
言語の仕様とか、クロージャがすっきりかけたりするとことかすこ
C++のクロージャとか哀れで涙出てくるわ
2018/05/24(木) 08:15:09.80ID:hcSrmWsG
ageちゃったぃ
すんまそ
2018/05/24(木) 08:35:15.47ID:ythCS9Ag
自分のコードを見せなければ正体がバレないというのは楽観的すぎる
他人が書いたものをを正しく読めなかったらすぐバレる
2018/05/24(木) 08:39:58.30ID:Ikv8gz3W
誰がそんなこと言ったんですかね……
2018/05/24(木) 09:12:00.44ID:YtgWYLdm
やっぱりお題必要だな
2018/05/24(木) 09:22:43.01ID:ythCS9Ag
お題ならPythonで十分
Pythonのコードを見せても、型がないとかなんとかケチつけられた場合の保険がRustだろ
2018/05/24(木) 10:16:37.36ID:uCHPd8NS
お題なしで雑談というか口(くち)プロレスでいいよ
で実際速いの?どんなコード出てるの?とか実践始めるとみんな黙りこんじゃうからw
授業中先生に当てられたくない子供みたいに
2018/05/24(木) 10:38:36.76ID:wnD2d+8L
>>655
結局、「Rust書けるんならC++も書けるだろ?」って言い分は
俺には全く適用されてないってことが言いたかったんだ

>>658
確かにC++のクロージャは酷いな
そこら辺もRustだと比較的すっきり書けて良いよね
2018/05/24(木) 10:46:26.14ID:Ikv8gz3W
>>664
みんな黙り込むのは質問が意味不明だったり、場にそぐわない質問だったり、質問者に触れたくないというパターンもあるのでそのパターンだけではない
2018/05/24(木) 11:36:01.54ID:ythCS9Ag
無料で教えてもいいと思える範囲でみんなやってるだろ
課金しないともったいないレベルになったら大抵は黙り込む
2018/05/24(木) 19:30:37.89ID:vRvusgVp
ネイティブDLLでプラグインっつったら旧BorlandのBPLはすごく便利だったんだが
DelphiとC++Builderでしか作れないし、今となってはとてもおすすめできない
2018/05/24(木) 20:11:25.74ID:8MplY56S
>>667
それな。少しばかりの優越感に浸るためにノウハウの公開はしないわな。
2018/05/24(木) 21:04:40.93ID:DVWxp3L/
>>665
Rustのクロージャもどっこいレベルでひどいだろ

FnOnceとFnMutとFnの区別つかねえし、、moveのつくつかないで挙動まったく変わるし
Rustの代表的クソ仕様じゃねえか

少なくとも「C++のクロージャより出来が良い」なんて言えない
2018/05/24(木) 21:14:58.76ID:/hP4MdXz
少なくとも「C++のクロージャの出来よりはマシ」
2018/05/24(木) 21:30:50.88ID:VphYtM0Y
そのクソ仕様の後追いみたいなことばっかやってる印象なんだよ。
2018/05/24(木) 21:49:45.67ID:xIKDzvCc
後追いなのに「マシ」でしかないなら良くないな
2018/05/24(木) 21:55:08.28ID:VphYtM0Y
だいたい静的言語が無理やりクロージャーなんて入れる必要ないのに、
「俺もそれくらいできるから!」みたいなノリで無理くり入れるのが間違ってんだよ。
大人しく継承でオーバーライドしときゃいいんだよ。
カスのワガママに従うからクソが聳え立つ。
2018/05/24(木) 21:55:59.77ID:hcSrmWsG
>>670
そーなん?
偉そうなこと言っといて実は俺C++あんま知らんのよごめんね
FnOnceとFnMutとFnの使い分けはまぁ毎回俺もぐぐってる
fn main() {
let seq = |mut a| {move || {a += 1; a}};
let mut f = seq(0);
let mut g = seq(100);
println!("{} {} {} {}", f(), f(), g(), g());
}
↑スッキリじゃん?
|| {a += 1; a}
↑この部分は↓こう書けたらなぁと思ったりするけど
|| ++a
2018/05/24(木) 21:56:31.96ID:/hP4MdXz
一般にAがBよりマシとは、AがBより僅かなりとも優良であることを意味する。
後か先かは関係ない。
2018/05/24(木) 21:59:14.23ID:xIKDzvCc
先であること自体に莫大なメリットがあることを考慮に入れた上でのなおかつ「マシ」ならその通りだがな
2018/05/24(木) 22:03:14.32ID:CdSxt682
Rustは第二のC++でも作ろうとしてるのか?
679675
垢版 |
2018/05/24(木) 22:07:12.31ID:hcSrmWsG
おっとID変わってるけど俺>>658
2018/05/24(木) 22:48:36.88ID:A2obqUPd
>>674
Goもだけど「継承自体がクソだからやめようぜ」って流れなんだよな
無理矢理クロージャ入れる必要がないには同意
無名関数が使えりゃ足りる
2018/05/25(金) 01:34:45.66ID:PKA0x+Yj
>>670
自分でC++の重大な欠点を言ってる気がするんですが…
自ら「区別がつかない」って言っちゃってるじゃん…
Rustならその3つをコンパイラがきちんと区別を付けて
間違ってたらコンパイルエラーとして教えてくれる
C++だと自分の脳内で区別しないとバグになる

他にもC++はキャプチャリストは自由度が高い分書くのがめんどくさいし
キャプチャしない場合でも[]は省略できない
戻り値の型は推論するくせに引数の型は推論してくれない
一行だろうと{}必須。よって戻り値ある場合はreturnも必須
mutableキーワードも必要に応じて推論してくれない
C++だとあまり使うことはないかもしれないが
例外がスローされる場合はそれも書かないといけない

RustならFnOnceとFnMutとFnの違いは推論されるから書き分ける必要はない
キャプチャする環境の所有権を移動したい場合にのみmoveをつけるだけ
move以外は他言語のクロージャと書き方は全く変わらない
確かに他言語のクロージャより仕様は複雑だが
推論がしっかりと効くから書く側はすっきりと書ける

まあクロージャを書く側ではなくて受けとる側(定義側)は
上記の3つをしっかり区別する必要があるので難しいのは認める
これはGCがない言語である限りは仕方のないこと…
とはいえ、ライブラリ作ろうとしない限りは定義側を書くことはないでしょ
2018/05/25(金) 01:49:54.39ID:HnuamdJg
敬称が糞って
ヒューマンクラスを継承したちんさんクラスとまんさんクラスは糞なのか?
2018/05/25(金) 02:31:46.48ID:hLxVSrBi
>>682
その例えを借りるなら
ちんさんクラスとまんさんクラスを両方継承したふたなりさんクラスを作るときに
戦争が起こる
2018/05/25(金) 03:03:41.33ID:xEzst0Sw
そこはis-a関係でなくhas-a関係を使うべき
2018/05/25(金) 06:59:36.86ID:N3c6aWbU
ちんもまんもクラス外に公開しなければならないインターフェイスだからhas-aだと実装を晒しすぎる
2018/05/25(金) 07:53:32.29ID:HnuamdJg
インポリメンツちんぽか
687デフォルトの名無しさん
垢版 |
2018/05/25(金) 13:18:54.68ID:hlSUANfD
rustがいかに注目されているかよく分かるやりとりだな
2018/05/25(金) 14:15:14.14ID:4TBK/UtB
is-aは寿命が同じ
has-aは寿命とメモリが断片化する
でもこれは全ての実装において正しいとは言えない
実装非依存のおまじないの方が正しいからis-aとかhas-aとかいうおまじないを使う
689デフォルトの名無しさん
垢版 |
2018/05/25(金) 14:50:00.53ID:B3ITbo/r
はああん?C++が一番有能に決まってるだろが。
2018/05/25(金) 14:58:09.55ID:AvKDu7Ii
C++が一番有能なら何を求めてこのスレに来たんだ
691デフォルトの名無しさん
垢版 |
2018/05/25(金) 15:08:44.57ID:1dRV9c5u
なにこれHaskellってコンパイラを入れるためのツール必要なのか
開発環境を管理するツールってことでええんか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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