次世代言語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/01(火) 08:13:28.92ID:4+zKgECd
なんだかんだでgoは学習コストとできるコードのバランスは良いと思うよ。
あんまり無作法なことするとコンパイラがコンパイルしてくれないくらいか。
gofmtあるし、vscodeでもプラグイン入れたらわかりやすいし。
2018/05/01(火) 08:33:48.84ID:BQXmdu4P
後、結構組み込みに向いてないかなgoは?
例えばラズパイでsdに録画したデータを外部サーバにpostしようとしたときに、
一度メモリ上に、全部配置してからじゃないと動かない挙動だったんだけど、
検証したらpost処理時にsdからreadしながら転送できるように修正できた。
2018/05/01(火) 08:33:49.85ID:4kJCxQxL
純粋オブジェクト指向言語が定着しなかったのと同じで
純粋関数型言語もメインストリームにはなれないと思う
2018/05/01(火) 08:35:30.68ID:BQXmdu4P
goの良さって標準ライブラリが全部goで書き直されていて、それを読めば解決策が思いつくことがあるってことだな
2018/05/01(火) 08:38:56.70ID:4+zKgECd
>>275
リッチな組み込みには向いてると思ってる。
linuxのarm用にコンパイルしたら、androidでも動くし(普通のSDKアプリからプロセス起こして遊んでみた)
GCの動作と、そもそもリアルタイムが出せないを許容できるなら便利かと。
たしかqiitaでも、組み込みに押してる人居たよ。
2018/05/01(火) 08:50:20.21ID:BQXmdu4P
goって組み込みでも使えるしwebでも行けるしスマホアプリも作れなくもないし
wasmにも対応間近だからwebクライアントにも進出しそうだし、いい感じ。
280デフォルトの名無しさん
垢版 |
2018/05/01(火) 09:14:08.18ID:jT7wV8oq
rustでいいやん
2018/05/01(火) 09:21:25.08ID:DdhcnubW
>>280
Rustはどうしても手軽じゃないんだよね
とはいえ、Rustも慣れると案外サクサク書けるから悪くはないと思う
慣れるまでメチャクチャ時間がかかることがそもそも問題なんだけどね…
282デフォルトの名無しさん
垢版 |
2018/05/01(火) 10:05:10.06ID:jT7wV8oq
メチャクチャっていうけど一週間もあればそれなりに書けるようになるでしょ
2018/05/01(火) 10:22:04.99ID:jugg/3+t
慌てるなよ
自分が数学を何年勉強したか思い出せ
1週間で何ができる?何もできないでしょ
2018/05/01(火) 10:22:33.15ID:DdhcnubW
>>282
Rustが一週間とか羨ましい頭してるな
毎日まじめにやってたわけじゃないのもあるけど、半年かかったわ
一週間とかおれには無理
285デフォルトの名無しさん
垢版 |
2018/05/01(火) 10:27:41.79ID:btT/kXg5
>>283
一つのプログラミング言語を現場に持ち込むのに数年かけているのか?

>>284
phpで書いたバッチの移植くらいならできるでしょ
2018/05/01(火) 10:32:48.52ID:DdhcnubW
>>285
それくらいならまあギリギリ
でもちょっとでも複雑になっただけですぐアウト
2018/05/01(火) 10:42:57.85ID:KdOUAylP
とっつきやすさとかいうほど重要か?Javaとかそんなにとっつきやすかったイメージないけど
2018/05/01(火) 10:54:12.75ID:jugg/3+t
金のことばっかり考えると勉強ができなくなるようだな
子供は金持ってないのが当たり前だから何年も勉強できる
2018/05/01(火) 11:12:05.04ID:mR7q/yna
>>273
> 関数プログラミング実践入門
それは関数型言語の入門書だからHaskellのHello, Worldがなかなか出てこないのは当然
Haskellが「ヘビィな言語」なんじゃなくてあなたが「関数型言語」に馴染みが無いだけだと思うよ
2018/05/01(火) 11:34:41.33ID:KdOUAylP
まあたしかにHaskellのHello worldなんて大した長さじゃないし、本の最初のほうに配置するべきよな
そして最初に配置している本は見たことがない。あるのか?
2018/05/01(火) 11:42:18.17ID:BQXmdu4P
>>289
馴染みのある人間が 入門 を果たして読むのか。
2018/05/01(火) 11:49:01.59ID:jugg/3+t
Haskellの難易度はC++とほぼ同じと気付くまでにあと何年かかるかな
2018/05/01(火) 11:50:27.39ID:BQXmdu4P
phpで並列処理が書きづらくて、goに触り始めて感動して。
ちょっと触ってみて使えるのを確認して、
goを本格的に触るようになった。
ちょっとしたモチベーションで気軽に始められる。
ローリスクハイリターンな感じ?

haskellとかrustに触るモチベーションって言語マニア以外は何があるかな?
2018/05/01(火) 11:50:49.86ID:mR7q/yna
>>290
関数型とはなんぞやをすっとばしても入出力を扱うには副作用・モナドあたりを先に
やる必要があるから仕方ないね

>>291
つまり馴染みのないあなたにはHaskellが「ヘビィ」かどうかなんて判断できないってことだよ
2018/05/01(火) 11:53:26.62ID:KdOUAylP
>>294
そんなんHello wordするためにはincludeを理解する必要があるって言ってるようなもんじゃん
IOアクションなんて最初は「おまじない」で良くね?
2018/05/01(火) 11:59:45.69ID:DdhcnubW
>>293
Haskellの方は知らん
RustはC++の代替え
C++はもう嫌だ
2018/05/01(火) 12:01:56.82ID:KdOUAylP
D……
2018/05/01(火) 12:05:51.63ID:BQXmdu4P
>>294
そうかな。elixirも関数型言語だけど、だいぶ遊びやすかったけど。
俺みたいなショボいプログラマーはhaskellに近づかないほうが良いのかな。
素直にelm辺りを触ってみますわ。
2018/05/01(火) 12:09:09.54ID:jugg/3+t
C++にはbetter Cとかいうチート技があるから1秒で即戦力
1時間で自慢してるやつは恥を知れ
2018/05/01(火) 12:23:26.29ID:KdOUAylP
>>293
Haskell 勉強中なんだけど、ちょっとパーサーをいっぱい書く必要があって、パーサーを量産することがモチベーションになってる。Real world Haskell でチュートリアル的にJsonパーサー作れるくらいにはパーサー書きやすいんだと思う
でも環境周りとか正直鬱陶しいから、もしもっと書きやすい言語があったらそっちにしたい
301デフォルトの名無しさん
垢版 |
2018/05/01(火) 12:32:50.54ID:4yrhftk/
>>272
ありがとう
それは書籍?
302デフォルトの名無しさん
垢版 |
2018/05/01(火) 13:22:56.98ID:btT/kXg5
>>293
rustやhaskellを選択しない自分に劣等感を抱いてるのかね
他の言語をオタク専用であるかのように揶揄して自尊心を満たそうとするのはやめんしゃい

わしはGCとおさらばしたいしresult/optionの扱いが気に入ってrustを使ってる
2018/05/01(火) 13:42:38.59ID:BQXmdu4P
>>301
特定の書籍ではないね。本屋に山ほどあるどの本でも良いのでわ?
もしくは最近だとmixiとかが社内研修用のコンテンツを無料で公開してるからそれを利用しても良いと思う。
2018/05/01(火) 14:17:29.04ID:4+zKgECd
GCフリーは確かに魅力だけど、充分に賢ければGC言語でもそこまで問題になる事は無いと思うが。
2018/05/01(火) 14:18:21.90ID:KdOUAylP
そこは状況によるし一概に否定出来ることではない
2018/05/01(火) 14:25:43.54ID:4+zKgECd
そういや、rustだと、自身も誰かから特定のイベントを受け取るか、誰もイベントを送り得なくなったら死ぬような感じの、
タイマーみたいな自発的にイベントを起こすイベントソースは誰か所有すべきなのかな。
タイマー起こしたやつってのも変だし。
2018/05/01(火) 14:43:22.00ID:jugg/3+t
Rustの Rc<T> 型の問題
Haskellの IO a 型の問題
難易度下げたいなら型を書くのをやめればいいんだよ
2018/05/01(火) 14:45:09.99ID:KdOUAylP
書きたくないなら省略すれば良い
309デフォルトの名無しさん
垢版 |
2018/05/01(火) 14:52:11.01ID:DdhcnubW
>>307
とりあえずRustの話だが、Box<T>にせよRc<T>にせよ書かねえと
ボローチェッカを満足させられない or コストを可視化できねえんだよ
2018/05/01(火) 15:07:40.80ID:jugg/3+t
>>309
そうだね
チェックしたいなら学習コストを犠牲にすればいい
コスト下げたいならチェック機能を犠牲にすればいい
311デフォルトの名無しさん
垢版 |
2018/05/01(火) 15:20:54.24ID:DdhcnubW
>>310
なんか勘違いされた気がするから補足
コストってのは学習コストのことじゃなくて実行時のコストのことね
Boxを明示することでヒープであるコストを可視化する
Rcを明示することで参照カウンタであるコストを可視化する
2018/05/01(火) 15:24:30.26ID:vzW3/HLG
コードの短さこそ正義。ただし、可読性を損なわない範囲で
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で示されるパフォーマンスなんかないだろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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