次世代言語18 V Julia 他

■ このスレッドは過去ログ倉庫に格納されています
2019/09/30(月) 23:11:51.54ID:gS2Jpksn
スレタイ以外の言語もok

前スレ
次世代言語17 Go Rust Kotlin TypeScript Julia
https://mevius.5ch.net/test/read.cgi/tech/1567602619/
2019/10/17(木) 08:15:17.19ID:1mHvnb1C
上司「いつも見ているぞ」
2019/10/17(木) 11:01:43.99ID:8K7F5Z6G
自社開発ってどうせ具にもつかんホームページ作ってるか
半年そこらで畳むゲームつくってるかのどっちかだろ

そんなおもちゃじゃない、社会で役立つソフトをつくってるのはいつだって
お前らがバカにしてるSIerだ
そして社会で役立つものをつくる現場にRustやScalaなんてものは使われていない
2019/10/17(木) 11:02:51.33ID:CgHIbj6d
ぼく自主開発ってWindowsみたいなの想像してた
2019/10/17(木) 11:27:28.21ID:gkC5kwXM
ScalaとかHaskellあたりとRustを並べる時点でセンスがないからな

ScalaとJavaだったらJavaの方が楽に覚えられるが
屋上屋で誰も全貌を把握できない混沌と化してる上にコンパイラのサポートが弱いC++よりはRustの方が習熟は速い
2019/10/17(木) 11:57:19.91ID:eKaVzozI
机上の空論だけは達者な遊び人が持て囃してるが
実際のものづくりに役に立ってないって点で同じなんだよなあそれらの言語
そこで同じな以上、細かく見て違いがどうこういう必要もない
だから違いがあるとか言ってる時点でお前は遊び人だってことがバレてるのよ
2019/10/17(木) 11:59:19.89ID:eKaVzozI
そういう意味でGoとかKotlinはセンスがいい
遊び人が遊びたくなる要素は徹底的に排除したうえで
生産性向上に全ツッパしてるんだから
2019/10/17(木) 12:23:59.93ID:68ixsJzy
>>677
社会で役に立つシステム()って誰にでも作れる簡単なCRUDのことか?w

このスレはそんな低レベルなものから卒業した人が集まる場所なんだが?
2019/10/17(木) 12:36:12.89ID:1mHvnb1C
自分も土方のくせに俺はお前らとは違うと思い込んでいる痛い土方のスレだろ
2019/10/17(木) 12:38:30.95ID:gkC5kwXM
>>680
尼がRust使ってるからもうRustの世話になってない人間なんかほとんどいない

きわめて狭い領域、少数の人間しか使わないコピペ駆動開発のCRUDアプリよりよほどものづくりに役に立ってるゾ
2019/10/17(木) 12:39:16.04ID:Jfpt/owr
崇高な意識の持ち主なんだろな
2019/10/17(木) 12:43:29.69ID:gkC5kwXM
RustはC++から「遊び人が遊びたくなる要素」を排除して作られた言語だし、
マジでC++もRustも1ミリも知らないでもの話してそうだなコイツ
2019/10/17(木) 12:46:04.07ID:tq7j3RVK
「SIerの現場で使われてないから実際のものづくりに役に立ってない」という主張の非論理性
2019/10/17(木) 13:05:26.93ID:gr44XWYW
>>681
Kotlinはそうでもないだろ
C#系を真似し終えてからは思いつきで機能追加しまくってて評判も悪くて完全にScalaコースだよ
2019/10/17(木) 13:15:39.16ID:/ob/p1R9
SIerはAWSより役に立ってるから……(震え声)
2019/10/17(木) 14:19:06.42ID:Ys76mmeP
次世代言語スレなのだから、いま流行ってるかとか役に立ってるかとかではなく、今後そうなるか(なれるか)を話した方が建設的でないか?
2019/10/17(木) 14:34:17.46ID:sVtFG3vf
知見のある奴はこんな掃き溜めに来ないから無理だよ
建設的な事よりマウント取ることに全力を尽くしたい
2019/10/17(木) 14:43:02.48ID:1mHvnb1C
そもそもここ次世代言語アンチスレだから
2019/10/17(木) 14:55:51.58ID:cOv47nM3
Kotlinそんなに評判悪いん?
2019/10/17(木) 15:20:37.28ID:NR0+h1BR
Kotlin は Coroutine 以外は地味で渋めな機能拡張しかしてなくね?
C#系を真似したというのも意味がよくわからんが
2019/10/17(木) 15:52:25.80ID:+k9ttGJ/
遊び人のから排除したプログラミング言語ってビャーネストロヴストルップの功績馬鹿にしてるだろ
2019/10/17(木) 16:07:38.90ID:By3PPjzz
ここは言語スレだけど、Kotlinは標準のクラスライブラリをもっとリッチにしてくれないと。マルチプラットホーム目指すなら特に。

俺のなかじゃ評価するとき、言語+標準のクラスライブラリのセットで考える
2019/10/17(木) 16:11:39.54ID:By3PPjzz
null safetyだって、kotlinでjava apiとか呼ぶ機会多すぎてせっかくのnull safetyが...
kotlin nativeとかあるがクラスライブリが貧弱なのは寄生言語の限界か?
2019/10/17(木) 17:05:52.83ID:NZF3csTv
初期KotlinがJava標準ライブラリの存在を前提に作られていて
マルチプラットフォーム仕様が後付けなのでライブラリが貧弱
2019/10/17(木) 17:17:41.34ID:NR0+h1BR
Java 側にアノテーションついていれば、Kotlin の null safety に反映される
Android SDK はアノテーションつきまくりだから、役に立ってる
2019/10/17(木) 18:07:16.91ID:LBezDrpM
>>686
遊びたくなる要素満載だろ。てかドヤりたくなる要素満載。
ただそれだけ。
2019/10/17(木) 18:11:11.03ID:1mHvnb1C
従来からのセオリーに反して新しい言語に手を出す時点で遊びでありドヤである
2019/10/17(木) 18:16:27.34ID:gkC5kwXM
>>700
おま中
2019/10/17(木) 18:36:29.14ID:NZF3csTv
言語設計者本人の著書とか読むと意図や道理が分かるけど
やる奴はそういうの関係無しに何でも遊び道具にする
704デフォルトの名無しさん
垢版 |
2019/10/17(木) 19:03:11.49ID:yPX5iNuE
KotlinさえできればJavaなんか覚えなくてもいい


Java覚えないとKotlinできることにならない
2019/10/17(木) 19:24:50.33ID:/CJVMYnO
Rustに遊ぶ余地がないとは言わんが、C++の遊ぶ余地と比べたら屁でもないよ
2019/10/17(木) 19:25:38.94ID:RH5BHlmk
>>700
満載とまで言うのなら教えて欲しい
Rustでドヤれる要素なんてあるかなぁ?
質素で面白みのない言語だと思うけど
パターンマッチも貧相だしねえ
2019/10/17(木) 19:43:37.53ID:/CJVMYnO
>>706
「トーシロにはコンパイル通せないだろうなあ、俺には通せるけどね(どや顔 )」な奴は見たことある
普通に無能だったが
708デフォルトの名無しさん
垢版 |
2019/10/17(木) 19:47:25.67ID:UjGHV1nI
と無能。
2019/10/17(木) 19:47:37.90ID:1HaWomNm
AWSでRustサポート開始
https://news.mynavi.jp/article/20191016-910489/
2019/10/17(木) 19:50:07.02ID:Lb/VWL6h
>>709
違う
ソース読めばわかるが、「AWSでRustがサポートされる」のではなく、「AWSがRustを支援することにした」だ
711デフォルトの名無しさん
垢版 |
2019/10/17(木) 19:54:13.82ID:taho93zc
この世のC言語/C++のライブラリが全てRustで書き直されてLinuxもRustで書き直されたら天下取れるのになあ
夢物語だけど
2019/10/17(木) 20:05:14.96ID:mB2FKAkA
さすがに本気出したC++には速度で負ける模様
713デフォルトの名無しさん
垢版 |
2019/10/17(木) 20:11:27.12ID:UjGHV1nI
LinuxはCだが?C++の本気とかちゃんちゃらおかしい。
2019/10/17(木) 20:36:42.15ID:1mHvnb1C
ほんとお前らみたいな馬鹿ってC++が嫌いだよなw
2019/10/17(木) 20:39:51.36ID:+k9ttGJ/
今更、Rustに書き直すとか馬鹿だろ
2019/10/17(木) 22:34:30.43ID:LVoG2HXB
こないだ出たsudoのしょーもないバグも「整数値-1を無効値として扱う」みたいなんじゃなくちゃんと「無効を表す値」が存在する最近の言語ならそもそも回避できたのにな
今普通に動いてる既存の物ってのはそれだけで強いよなぁ
2019/10/17(木) 23:40:54.35ID:LBezDrpM
>>716
バカはおまえだ。
内部的には何らかのビット列をわりあてることになるんだよ。
その選び方は性能にはっきり影響する。
2019/10/17(木) 23:52:32.65ID:JsyCjuj5
型さえあれば救われたのに
2019/10/18(金) 00:01:46.17ID:jb1wNmPP
老害イラッイラで草
2019/10/18(金) 00:15:16.52ID:YKg3bugE
型ゆえに人は苦しまねばならぬ
型ゆえに人は悲しまねばならぬ

こんなに苦しいのなら
こんなに悲しいのなら
型などいらぬ!!!
2019/10/18(金) 00:24:55.92ID:vLu077dK
>>720
はいランタイムエラー
2019/10/18(金) 00:47:51.11ID:B/ouUg1P
人はそれを脆弱性と呼ぶ
2019/10/18(金) 00:56:05.28ID:4X7KT/ZF
やはりRustの時代か
2019/10/18(金) 04:11:17.15ID:hSszLl+1
>>711
全て書き換えるのは夢物語だが、
Linuxを書き換えるくらいならおまい個人でもできるだろ
頑張れ!
2019/10/18(金) 04:18:44.11ID:zx2NxSRO
大学か大学院に入り直したい
同じことの繰り返しに飽きた
2019/10/18(金) 04:38:32.95ID:5559SrY6
起業すれば
2019/10/18(金) 10:25:44.63ID:nBQ7bEKe
>>710
なるほど
チャイナマネーぶちこんで、Rustでビルドしたプログラムには
自動的にバックドアが仕込まれるか
勝手に情報を中国政府所有のサーバに送りつけるかするってことか
2019/10/18(金) 11:06:47.57ID:8rWpCRm0
糖質も見てます
2019/10/18(金) 15:36:43.09ID:qpQdHQHW
モナドの使い方がお前らには見えていないのを見たぞ
これ半分アルミホイルだろ
2019/10/18(金) 20:30:58.03ID:LI8e8Xij
雑なの承知で書くけど
null safeやリストへのmap/flatMapの便利さが何となく分かったなら
モナド大体分かったということでOK
2019/10/18(金) 21:16:13.30ID:V/rb7rbM
IOモナドはどう理解すればいいの?
2019/10/18(金) 21:55:39.27ID:1uLeEMt/
>>73
mapはわかるがflatmapはわからんな
733デフォルトの名無しさん
垢版 |
2019/10/18(金) 21:58:53.77ID:Jaff414t
mapの良さは分かるけどモナドが理解できた勢に加わりたくない
2019/10/18(金) 22:06:39.93ID:4X7KT/ZF
あれLispのとどうちがうんだ
2019/10/18(金) 23:00:00.81ID:uhy/qlU/
JSのflatMapはmapと違って配列自身を返せるから
次のメソッドチェーンの処理をより柔軟にできるぐらいしか使い所がない気がする
2019/10/18(金) 23:00:56.75ID:liCy40EB
バカはどんな言語実装になろうと決して他人のコード読まんのだよ。
だから言語を変えれば解決するとか馬鹿の妄想なのだ。
2019/10/18(金) 23:04:17.96ID:liCy40EB
>>731,732
どっちも型合わせ以上の意味はない。
2019/10/18(金) 23:45:28.18ID:lmpJOwiE
関数のcomposability(合成可能性)を高めるために
モノイド、ファンクタ、モナドなんかの型クラスがある

モノイド = appendable
ファンクタ = mappable
モナド = flatmappable

↓この説明が過去見た中では一番わかりやすい
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
2019/10/18(金) 23:47:21.40ID:LI8e8Xij
>>731
理解しなくてOK
純粋関数型を好きになる日がもし来たらそのとき大体の先を考えよう
2019/10/18(金) 23:56:52.67ID:LI8e8Xij
物事には順序があって、順序の基には段階や必要性があるわけで
つまり初手ラスボス配置はよくない
2019/10/19(土) 00:23:04.53ID:nhl9y3vZ
>>738
そういう説明はだいたい理解した最後に頭の整理するために読むものなんだよ
わかってない人に無意味
2019/10/19(土) 00:30:41.62ID:nhl9y3vZ
>>731
worldを隠したいという動機があってそれをうまく実現する体系がモナド
こういうふうに問題解決のストーリーで理解していくとわかる
合成可能性とかはその結果なので最初は忘れていい
2019/10/19(土) 01:08:13.73ID:VwkXsBh7
>>651
Android開発というキラーアプリがあるし
InteliJのインテリセンスがマジ優秀やし
2019/10/19(土) 01:34:27.34ID:IO8pKqwE
>>738
サンキュー
Haskell には Maybe というものがあるぐらいしか知らんので、
もやもやーってしか理解してなかったけど大体分かった
(使ってみろと言われてもすぐにはできないだろうけど)

苦労してゆっくり英語とコード読んだ後、最後尾に日本語訳へのリンクあって草
2019/10/19(土) 02:02:29.47ID:nZE9Kj9C
>>743
Java は Android なんか無い頃から SIer 御用達だったんや
開発環境はだいたい Eclips
2019/10/19(土) 02:03:53.22ID:nZE9Kj9C
flatMap の初歩的な使い方といえばこれ
map が返すのは適用する関数が成功したも結果もエラーの結果も全部入った配列になるけど、flatMap なら適用する関数が成功した結果だけが入った配列を返すようにできる
その場合の flatMap で適用する関数は、成功時には結果が一個入った配列を、エラー時には要素0個の配列を返すようにする
747デフォルトの名無しさん
垢版 |
2019/10/19(土) 07:27:33.50ID:seQh7iKV
それってfilterでやればよくね?
つーかモナドモンスターは成仏してくれ
2019/10/19(土) 07:39:01.77ID:UzQZhlPI
他の方法挙げたら切りが無いと思うけど
for文で駄目なわけじゃないし

少し読みやすい(慣れによる)、少し短い、少し速い とか
道具の使い分けなんてそんなもん
749デフォルトの名無しさん
垢版 |
2019/10/19(土) 07:47:59.52ID:seQh7iKV
そんなもんて言うけどその少しが大事だろ
750デフォルトの名無しさん
垢版 |
2019/10/19(土) 08:01:53.19ID:zsc0MtR6
いくつかの言語が備えている例外機構の真逆の仕組みがモナドよな
2019/10/19(土) 08:34:08.79ID:UzQZhlPI
>>749
「〜でよくね」はその少しを気しない(使い分けない)方の表現では?
2019/10/19(土) 08:58:11.03ID:7c9LDTMs
flatmapがモナドとか言ってる奴何一つ型を分かってない
flatmapはモナドのbindを拡張した概念であって、bindそのものじゃない
要するにflatmapが使える時点でモナドじゃない、モナドのような何かだ
それをモナドと混同してる時点で論外
そいつの話を聞く必要はない
2019/10/19(土) 09:36:17.45ID:g/FUkYaY
>要するにflatmapが使える時点でモナドじゃない、モナドのような何かだ
自分がなにもわかってないっていう自己紹介かな

「モナドとして振る舞える」ものはモナドだよ
モナドよりできることが多かったとしても
2019/10/19(土) 10:16:08.33ID:QmPBAH4r
モナド警察現るw
モナド = bindableでもいいけどbindって何?ってなるだろ
flatmapはmapの続きで理解できるからbindって言葉よりも理解しやすい

Optional<T>を例にすると
mapはOptional<T> -> ( T -> U ) -> Optional<U>
Optional<T>とTをUに変換する関数を受け取ってOptional<U>を返す

flatmapはOptional<T> -> ( T -> Optional<U> ) -> Optional<U>
Optional<T>とTをOptional<U>に変換する関数を受け取ってOptional<U>を返す

mapの場合、受け取る関数が( T -> Optional<U> )だと結果がOptional<Optional<U>>になって二重に包まれる
flatmapはこういう二重に包まれた結果にならないようmapする機能とネストした型をflattenする機能が合体したもの

IOやStateには当てはまらないとかいう奴も居るけど
mapだとIO<IO<T>>になるところをflattenしてIO<T>にするのは同じ
flattenするルールが包みの種類によって違うだけ
2019/10/19(土) 10:28:11.66ID:qf1Nei7K
まあこうなるからモナドを再利用するより再発明した方が話が早い
過去の発明と「混同」すべきでないと警察に指摘されても何も問題ない
また俺なんか新発明しちゃいましたか?
それだけの話
2019/10/19(土) 10:33:43.56ID:UzQZhlPI
序盤中盤 >>730
ラストダンジョン >>752-754
2019/10/19(土) 10:46:34.37ID:QmPBAH4r
flatmapは何がうれしいのかというと

例えば
1. ファイルを開いて
2. 内容をテキストとして読んで
3. パースしてJSONに変換する
とした場合、

3つとも何らかの要因でエラーが発生しうるから
それぞれ結果がエラーが発生するかもしれないというコンテキスト(EitherとかResultと呼ばれるもの)で包まれる
open: FilePath -> Result<File, Error>
read: File -> Result<Text, Error>
parse: Text -> Result<Json, Error>

でそれらの処理をつなげた場合に3重に包まれた結果じゃなく
最終的なflattenされたResult<Json, Error>を返すようにするために使うのがflatmap

mapはコンテキストを引き継ぎながら中身に関数を適用する
flatmapはそれに加えてコンテキストがネストしないようflattenしてくれる
それによって合成できる関数のパターンが増えてシンプルに処理を書けるようになる

というのが俺の理解
2019/10/19(土) 10:55:13.52ID:JHoWAbaJ
結局わからん
オプショナルと任意の関数と関数適用する方法とマップ関数があって
どれがどこまでモナドなん?
2019/10/19(土) 11:31:51.65ID:Vj3c/7EH
モナドは、いつもお前達の心の中に
760デフォルトの名無しさん
垢版 |
2019/10/19(土) 11:51:16.95ID:UGu3ZZer
キミはキミ自身のモナドを見つけなければならない
761デフォルトの名無しさん
垢版 |
2019/10/19(土) 11:53:37.69ID:g7gJ/kc1
C++嫌いな人はRustなんかよりGoへ逝けば良いのに
2019/10/19(土) 12:20:09.69ID:Xn59Im0u
goは言語マニアのプライドを満たさないので嫌なんだとさ。
2019/10/19(土) 13:07:15.02ID:p0j/nLAi
GCの存在が前提のGoはC++の代替にはならない
2019/10/19(土) 13:07:39.41ID:qf1Nei7K
マニアの心をすべて読むことはできない
できると思ってる奴はモンスターだし
できない要素を排除すれば消去法でできると思ってる奴もモンスターだ
2019/10/19(土) 13:14:05.47ID:vl9XIooB
C++の代替ならDもありますよ
2019/10/19(土) 13:26:35.49ID:YPBtRkHI
スレタイのVはどうした
2019/10/19(土) 13:30:03.22ID:QmPBAH4r
>>758
OptionalやResultがモナド
768デフォルトの名無しさん
垢版 |
2019/10/19(土) 13:47:36.04ID:UGu3ZZer
Vは詐欺だから。
2019/10/19(土) 14:21:06.55ID:qf1Nei7K
もし被害者がいたらね
いなかったらトロッコ問題をもっと簡単にしたような問題
2019/10/19(土) 16:56:06.90ID:g/FUkYaY
>>761
そもそもC/C++自体がすでに第一選択の言語じゃなくて、応答性やパフォーマンスの問題で消去法で選ばれる言語だし、
Goはそれで弾かれる側の言語なんで無理無理

Goが選択肢に入るような要件ならC++は選択肢に入らないし、逆もまた然り
771デフォルトの名無しさん
垢版 |
2019/10/19(土) 17:20:33.83ID:seQh7iKV
>>751
たしかに
filterがよくね?が正しかったわ
そもそもエラー無視すんなよと思うけど
2019/10/19(土) 17:48:35.99ID:Xn59Im0u
で、応答性やパフォーマンスの問題になるようなコードを書いてない輩が
ドヤるために馬鹿言いだしてるという現状。
2019/10/19(土) 17:53:30.96ID:g/FUkYaY
こいつにとっての世界は5chだけなんだろうな……
2019/10/19(土) 18:21:42.30ID:nfcTVmiP
>>772
Goなんて寝言言ってないで、実用性マックス型無し糞言語汚物PHPを保守する作業に戻るんだ
2019/10/19(土) 18:28:50.17ID:4NOLt1ht
ネイティブアプリなら今でもC++が第一の選択肢なんだよなあ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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