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

■ このスレッドは過去ログ倉庫に格納されています
2017/06/13(火) 08:54:07.99ID:O1HnBMDk
いざ、語ろうぞ。

スレタイ超過のため、一部省略。
その他もウェルカム。

前スレ
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代
http://mevius.2ch.net/test/read.cgi/tech/1492631007/
2017/08/05(土) 15:37:15.82ID:wQFjSmwa
>>592
フルスタックな人ならクライアントに置くコードは最小限にするはずだから、
Androidアプリを何で書くかなんて深く議論するに値しない些細な問題だよ
2017/08/05(土) 15:51:07.66ID:5/nXCXeI
>>593
>関数型言語だと「型注釈は(コンパイラが失敗するまで)書くな」だけど
誰がそんなデマを言いふらしてるんだ?
2017/08/05(土) 16:12:29.25ID:uXlFBIBD
フルスタックって、FORTH かよっ!
2017/08/05(土) 17:12:21.73ID:n8pq6YqV
天才プログラマが一人で全部作りましたって時代ではないからな。。
2017/08/05(土) 18:16:19.01ID:RDrQu3eT
>>595
逆に積極的に書くのがベストプラクティスなんてのがどこにあるんだよ?
2017/08/05(土) 19:21:58.27ID:j/cNGuAY
まぁ書かないのが良いとはされてるが、プロダクションコードはコード規約とかで、全てに型注釈入れろとしてるとこが多いね
2017/08/05(土) 21:37:34.82ID:boLwVObe
>>598
>>599
意味不明すぎ
型注釈は入れるのが当たり前だろ
単なるジェネリックプログラミングと勘違いしてない?
2017/08/05(土) 22:33:18.79ID:r+UIi6ic
Javaかよ(笑)
2017/08/06(日) 01:46:33.87ID:X6yw5Nga
ScalaでもHaakellでも書くのが当たり前だぞ
2017/08/06(日) 02:30:30.64ID:0wpHTVIH
えっ それはどこの当たり前??
2017/08/06(日) 03:09:28.92ID:OwbCgw8i
OCamlでも普通は型を書くぞ。
2017/08/06(日) 03:13:20.32ID:JQasL6d0
2017/08/06(日) 03:34:23.31ID:0wpHTVIH
OCamlとか死んだ老害言語の話はしてないから
耄碌お爺ちゃんはあっち行ってて
2017/08/06(日) 04:44:58.60ID:X6yw5Nga
>>603
2017/08/06(日) 04:45:24.92ID:X6yw5Nga
なんだエアプが湧いてんのか
2017/08/06(日) 04:54:54.04ID:X6yw5Nga
もしかして式一つずつに型注釈入れるとでも思ってるのかね
そんなのJavaですらやらんよ?

HaskellやScalaは少なくとも各モジュールのトップレベルの関数には型注釈つけるし、つけないと効率悪くなる
コンパイル遅くなりやすいし、推論に頼りすぎるとエラー時に問題箇所が曖昧になるから
2017/08/06(日) 07:49:45.80ID:K4D4wFtM
書いても書かなくてもよいというのが客観的事実だから
理系なら話はそれで終わり
それ以上踏み込むのは文系の仕事
2017/08/06(日) 10:18:56.55ID:fAxfwMN0
OCamlアンチおるな
2017/08/06(日) 10:46:44.29ID:0wpHTVIH
>>609
なら最初からそう書けよ

> ScalaでもHaakellでも書くのが当たり前だぞ
エアプガイジ
2017/08/06(日) 11:37:53.63ID:exhLY8Mw
Ocaml自体は良い言語なの?
あんまり使ってるって人は聞かないけど
2017/08/06(日) 11:40:40.31ID:+mclrVGG
>>613
よく知らないけど金融で使ってる人がいるらしいのと、最近機械学習で使ってる輩がいるらしい
2017/08/06(日) 12:03:55.69ID:K4D4wFtM
>>613
型ありライブラリなし特技なし
2017/08/06(日) 12:23:21.27ID:+mclrVGG
あとHLVMはOCamlじゃなかったっけ?
2017/08/06(日) 14:51:30.93ID:X6yw5Nga
>>612
またお前か
ガイジガイジうるさいだけでなくただの知ったかぶりか
2017/08/06(日) 14:51:53.14ID:9I48IW8u
ocaml, haskell の比較

ttp://d.hatena.ne.jp/camlspotter/20101212/1292165692

まあ極論抜きにして普通に考えればこういうことだろうなという印象。
2017/08/06(日) 15:00:38.52ID:X6yw5Nga
>>618
この人は良く分かってるなあ
純粋言いながらunsafePerformIO使うって件はまさにその通り
結局このIO書くときの面倒さがあるから、ScalaやOCamlのが使いやすい印象になってしまう
2017/08/06(日) 16:21:58.97ID:HqZ4NE4V
割り切れば楽なのにと思ったりもするw

純粋とは副作用有りと無しを分けて書くことで
try-catchで正常処理とエラー処理を分けて書くようなものだ
2017/08/07(月) 11:39:10.26ID:tDzZ+7xU
>>620
ちょっと脇道にそれるけど
try-catchって言うほど正常処理とエラー処理をきれいに分けられる?
goのようにその構文を捨ててる言語があるとこも考えると
いうほど価値あるのかなって思う。

あと関数型だとEither型とかもあるよね。
2017/08/07(月) 12:10:20.41ID:r7C/NYo5
>>621
返り値が一つしかない言語では有能機能だった。多値返却が当たり前になりつつある今はもう……
2017/08/07(月) 12:28:03.34ID:tDzZ+7xU
>>622
まぁ。それでもリストなりタプルで返せば一緒だけどね。
前の会社の上司がphpの関数の返却値を必ず配列で返してたの思い出した。
言語としての基本方針がそうなっているかどうかだよなー。
結局誰かがそういう実装にしてもメンテする過程で混在しちゃったら地獄と化す
2017/08/07(月) 12:37:33.59ID:tDzZ+7xU
elixirの言語仕様の中に、結構何これかっこいいって仕様がたくさんあった気がする。

例えばパイプ演算子とか、
バイト配列に対するパターンマッチとか。
2017/08/07(月) 14:18:21.77ID:JP8gCgB5
OCamlでは常備薬だったよ>パイプ演算子
haskellの$や.より読みやすくて好きなんだけど、関数型も取り入れててオブジェクト指向もサポートしている言語だと、
メソッドチェーンでええやん勢がいるのが難点
自由度はパイプの方が高い気がするんだがな
2017/08/07(月) 19:08:07.52ID:dQGQ218P
お前らだれもF#話題にしないからマイクロソフトP#作っちゃったじゃん
2017/08/07(月) 19:57:22.72ID:y+tGiyqS
へー、FORTRANの次はPascalの.NET版か。
2017/08/07(月) 20:38:25.36ID:E9IdpB60
MSっていったいいくつ言語作ったんだ
そしてパクリでない言語はあるのか
2017/08/07(月) 20:45:36.62ID:n9zFQLuH
>>628
すべての言語はすべからくパクりパクられの関係であるといえる。
一番言語を上手く作れている会社だと思うけど >MS
と言うか開発環境セットでいい感じ。
vscodeの完成度は高い。TypeScript大好き。
ただTypeScriptはあくまでESの型拡張に限定してるからES側に機能追加がないと
言語として成長できないという問題はある。

ドッチかというとFacebookが言語開発イマイチ感
Hackとかflowとか
2017/08/07(月) 20:52:47.52ID:E9IdpB60
>>629
BASICっぽくないのにVisualBASICとか名前をパクってるってこと
他の言語は移行者を配慮してだが、MSは騙す努力ばかりに見える
開発環境とセットというのがまたダメだ
プログラマによる変革が生まれにくい
単なる作業者ならいいが
2017/08/07(月) 21:02:50.52ID:n9zFQLuH
>>630
俺もちょい前まではMS気に食わなかったし
vscodeが最初登場したときは、なにこれatomパクって車輪の再発明?
みたいな感じだったが使ってみてハマった。
別に開発環境で囲い込もうってわけでもないと思う。

一緒にlangage server protoolというのも定義して公開した。
IDEと言語サーバ間のプロトコルを共通化し対応するEditorならなんでも使えるようにする。

gccがサポートしてるってニュース見たよこないだ。
ということで最近のMSはオープンソースとの関係がよい。気がする。
632デフォルトの名無しさん
垢版 |
2017/08/07(月) 21:36:59.12ID:NP3377Zu
>>629
FBだけじゃなくてGoogleもイマイチ
DartやGo
2017/08/07(月) 21:48:18.67ID:Ii/d6u5R
>>632
Googleも結局VSCodeメインで使ってるしな
2017/08/07(月) 22:01:33.03ID:E9IdpB60
>>631
その先に3E戦略が見えるから乗っかれない
2017/08/07(月) 22:03:25.57ID:JP8gCgB5
Electronベースのエディタとしては後発なのに他を追い抜いたのが凄いわ>vscode
vscodeはatomやbracketと同じElectronベースなのにどうしてあんなに軽いのかね
636デフォルトの名無しさん
垢版 |
2017/08/07(月) 22:19:19.22ID:NP3377Zu
>>635
MSは長い間VS作ってるしエディタとかIDEのノウハウが凄いのでは
2017/08/07(月) 22:34:23.14ID:60+6AuiC
構造化BASICの正統進化なんだけど
ついでに8bit機にのってたようなのは当時既にストリートBASICって言われてた
(漏れもwikipediaで知ったんだけどさw)
2017/08/07(月) 22:52:43.28ID:Bulya1kQ
>>629
すべからくの使い方を間違えてる日本語が気持ち悪い
2017/08/07(月) 22:56:12.10ID:PU2i/+ft
最大級の戦犯はペチプ〜やペェ〜ルとかいう真性糞ゴミを作った屑
2017/08/07(月) 22:56:31.90ID:BjLAzK5L
一歩の作者が悪いんや…
すべからく…べし、の形すら守ってないと俺はそれ以降の文章はスキップする
読む価値がない
2017/08/07(月) 23:11:59.24ID:nZ0RU5t+
>>637
MSのQuickBASIC好きだったなぁ
2017/08/07(月) 23:20:02.38ID:PU2i/+ft
屁臭いペチプァゴミはすべからく死すべし
2017/08/08(火) 01:38:13.00ID:Apkyawzp
>>636
内部的にtypescript使ってるのは関係ないかな?
2017/08/08(火) 01:43:32.85ID:lBJjevEI
vscode はむしろマイクロソフト内の若手が爺どもにぶちぎれて
まったく別路線のものをつくったという印象
645
垢版 |
2017/08/08(火) 08:04:36.27ID:y4ztJzgK
>>630
いわゆるMS BASICからQUICKBASIC→Visual Basic→VB.netと辿っていけばわかるけど、普通にMicrosoft系のBASICだと思うけど。
どの辺がBASICっぽくない?
646デフォルトの名無しさん
垢版 |
2017/08/08(火) 11:58:13.44ID:1MHxdJ+Z
>>643
typescriptもjsに変換されるから無関係
V8エンジンが速いという条件ならatomも同じだぢ
647デフォルトの名無しさん
垢版 |
2017/08/08(火) 11:58:30.92ID:1MHxdJ+Z
x だぢ
o だし
2017/08/08(火) 14:24:25.13ID:Apkyawzp
>>646
それは言われなくても分かる。
素のES2015よりメンテナンス性や安定性が向上しないかな。
例えばnull安全なコードがかけるからnilチェック漏れとかを潰せるし。
プラグインもtypescriptでかくから少しましになる?
649デフォルトの名無しさん
垢版 |
2017/08/08(火) 16:22:17.89ID:1MHxdJ+Z
>>648
それはそうだけど、>>635から始まったvscodeのパフォーマンスの話してるからtypescriptであるかは関係ない
2017/08/08(火) 22:23:27.85ID:tSx5MElw
>>622
勘違いしてるぞ
EitherはMaybeの上位互換だ
2017/08/08(火) 23:05:33.35ID:uStlgM0t
>>650
多値返却に関してはgoのことやね
Eitherに関しては取り敢えず無視してたわ
2017/08/09(水) 00:30:01.84ID:89KnBaBf
エラーをバケツリレーするより
エクセションで飛ばした方が簡単でしょ
2017/08/09(水) 08:59:18.22ID:FPEvL6ue
簡単そうに見えても結局それぞれの場所でオブジェクト開放を
うまくやらなきゃならんことを考えれば大して楽になるわけでもない。
2017/08/09(水) 12:40:14.22ID:aEwDYdDe
VSCodeでインテリセンス技術をオープンソースにしたのは地味に画期的なことだと思う
IDE分野でのMSの強さを支えるコア技術だよね
655デフォルトの名無しさん
垢版 |
2017/08/09(水) 13:12:03.09ID:ZSp2lruc
Goはパターンマッチないのに例外を戻り値で返すからあんな面倒な事になってるんだろ
2017/08/09(水) 19:01:09.05ID:FPEvL6ue
その言い方だと例外投げられればいいのかパターンマッチが導入すればいいのか
わからんが。
どっちかもしくは両方あれば楽になったとでも?

プログラム書く上でまったく本質的な制約だと思わんな。
2017/08/09(水) 19:08:28.68ID:h3UNfnj7
本質的な制約って何だよ?
658デフォルトの名無しさん
垢版 |
2017/08/09(水) 19:25:58.05ID:ZSp2lruc
>>656
どちらか欲しい
両方ないのはキツイ
659デフォルトの名無しさん
垢版 |
2017/08/09(水) 19:26:26.92ID:ZSp2lruc
あと複数の戻り値じゃなくてタプル+単一戻り値の方が扱いやすい
2017/08/09(水) 19:49:05.94ID:gdB1BRW9
よくわからんが、タプル+単一は複数とは違うのか?
2017/08/09(水) 19:53:53.66ID:h3UNfnj7
Pythonとかあれタプル+単一じゃね?
2017/08/09(水) 20:19:16.67ID:jK6ObLbS
+演算子をorの意味で使ってるのか?
それだとタプルを返した時は単一ということになるか
単一の意味も違うのかもしれない
2017/08/09(水) 20:44:15.24ID:h3UNfnj7
形式的にだけど、返り値はタプル一つになっていて、それを分配束縛してることになってなかったっけ?
違ったかも
2017/08/09(水) 21:03:21.63ID:gdB1BRW9
んで結局、>>659はどういうのが扱いやすいと言っていたわけなの
2017/08/09(水) 21:22:14.98ID:SHgM+TeI
タプルとEitherはC言語のstructとunionに戻るようなものだからな
次世代の面子が潰れる
2017/08/09(水) 21:38:43.55ID:cB8pPRbn
goの戻り値がタプルのほうが嬉しいという気持ちはわかる。
自作の型に自由にメソッド生やせるのに、メソッドチェーンしようとした場合に、多値を返されると無理。
667デフォルトの名無しさん
垢版 |
2017/08/09(水) 22:04:04.13ID:ZSp2lruc
>>666
golangは本当メソッドチェーンが出来ないよな
2017/08/09(水) 22:51:13.67ID:cB8pPRbn
まぁそういう弱点ありつつもgoは嫌いじゃないんだけどね。
エコシステムの部分とか。

import文にgithubのurl?を書けたり。

標準ライブラリのコードが自然に見にいけるから書いている最中も勉強になるし、標準ライブラリが教科書的な役割をはたしてくれたり。

コードフォーマットが標準装備で言語仕様的に制約が強いから構文規約は一つしかないところとか。

と言いつつも他の言語を見て羨ましくもあり。もっと関数型チックになってほしいけど無理かな。
2017/08/09(水) 23:57:18.80ID:ECmmt/Ev
メソッドチェーンが遺物だと気づけw
Goは意図的にメソッドチェーン出来ないようにしてるんだ
2017/08/10(木) 00:20:35.92ID:eLvHxdUn
パイプライン演算子の便利さを考えるとメソッドチェーンもそこまで悪くない気もするが、使い方次第かねえ
2017/08/10(木) 01:03:52.42ID:BXUbqcL4
パイプカットでGo
2017/08/10(木) 01:40:12.18ID:+tFBM5sG
パイプラインの方が柔軟性高くていいよね
do_something foo |> lambda x => x + other_fun bar |> ...
みたいな前の戻り値のメソッドに限定しない書き方ができる

これをもっと楽にするような記法、例えばパイプラインの式中のアンダースコアは前の値とする、みたいなのがあると嬉しい
上のやつと等価だったらdo_something foo |> _ + other_fun bar |> ... みたいな
2017/08/10(木) 01:51:16.15ID:eLvHxdUn
Juliaでそのアンダースコア議論されてて、結局実装されなかったんだよなたしか
2017/08/10(木) 01:52:27.10ID:E9UII0hi
それはおかしいでしょ
カリー化した方が自然
2017/08/10(木) 01:55:26.39ID:eLvHxdUn
2番目の引数を先に埋めてアンダースコアは一番目にしたいパターンがあるので、どちらかと言うとカリー化は好きじゃないなあ。設計が悪いと言われたらそれまでだけど

Juliaの場合は多重ディスパッチを採用している関係でカリー化は諦めたっていうのもあったな
2017/08/10(木) 03:00:14.84ID:J41+5nHx
>>665
いやだからEitherモナドはMaybeみたいに正常系だけ書いていけるし単値だしで全然違うって
なんで皆使ったことも無いのにそんな事言うの…
2017/08/10(木) 07:31:11.02ID:EsQl4Iyt
単純にノイズが増えるだろう
現実にはほとんどの関数がエラーを返す可能性を持ってるんだから、言語に織り込んでデフォルトを Error | Result とするのは悪いアイデアではない
2017/08/10(木) 08:32:51.57ID:eLvHxdUn
>>676
これ実際Haskell書いてないと分からない感覚かもな
679デフォルトの名無しさん
垢版 |
2017/08/10(木) 23:01:38.31ID:g9gtECZC
(Elixirは?動的型付け言語に人権はありますか)
2017/08/11(金) 07:15:28.72ID:VinUUXdS
ほとんどの動的型言語ってそれが動的型であるメリットは特に無くて
単なる処理系実装者の怠慢でしかない
動的型言語を推すならまずはそれが動的型でなければならない理由を示すこと
2017/08/11(金) 08:32:31.97ID:wS48fUKa
lisp とか仕様をシンプルにできることかな。
あほみたいに仕様が膨らんで意味の分からんキャストをがばがばおこなわなきゃならん
みたいな不自然なことで生じるバグは減る。
2017/08/11(金) 08:51:11.85ID:Pc9UeBFi
>>680
怠慢に寛容になると嘘をつく人間が減るから
自分はなにもしないくせに他人の嘘をデバッグするのだけはうまい奴がいる
そういう奴がいても許されるから嘘が減る

怠慢を許さない環境では忙しくて嘘を見抜く暇もないから嘘が蔓延する
2017/08/11(金) 08:56:57.66ID:wWK8j68x
そもそも型が必要な理由が分からん。
数学なら「整数型のxが・・・」なんて言わないしな。
「ここでxは整数とする」はあるけど、条件に過ぎないし。
リストやタプルも分ける必要ある?
2017/08/11(金) 10:46:48.12ID:4bbWTV9L
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているサイトだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子が求人をだしてる。名刺も渡せる。ユー子に名刺を渡せるんだぞ。夢のようだ

それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
685デフォルトの名無しさん
垢版 |
2017/08/11(金) 11:00:48.00ID:HT0ZPb79
>>683
型はその条件をいろいろ細かく定義したものだろ。
値域や定義域だって型。
2017/08/11(金) 11:17:57.35ID:Dik+7mIk
動的型の問題って関数のインターフェースがガバガバなところでしょ?
elixirはパターンマッチで結構制約できるから動的だからって卑下する必要ないのよ
2017/08/11(金) 11:44:41.66ID:23hvE/8L
>>680
動的型でなければならない理由?
それは、おまえがバカだからだろう。
2017/08/11(金) 11:59:08.49ID:wWK8j68x
>>685
少なくともunsigned は要らなくない?
1bit ケチれるだけだし。
中途半端な単精度浮動小数点とかも。
2017/08/11(金) 12:01:25.46ID:u64fZ1yg
申し訳ないが未だに使っているGPUの多い単精度小数点DisはNG
2017/08/11(金) 15:03:12.85ID:Pc9UeBFi
>>686
まだコードを書いてないのに問題でしょとか言われても
言う時期が早すぎるし言う内容に具体性がないよ
まるで数学も英語もまだ知らない小学生にプログラミングを教えているようだ
2017/08/11(金) 15:39:55.52ID:Dik+7mIk
TypeScript触ってるとjsに型がある方が幸せだってわかる。
jsonにスキーマ設定無しで
reduxでstate管理するのとか絶望する。
あと、学習面でも明らかに型があったほうが幸せ。書いてる端から指摘してくれるからすごく幸せ。
TypeScriptはvscodeとセットで幸せー
2017/08/11(金) 15:58:37.67ID:uuzmQ1J4
>>688
今言ってる片野必要性は容量のためじゃないだろ
全ての引数をテストするとすると1bit減ることでテストの数が半数になる実装もその1bitに対して考える必要がなくなる
例えばルートを計算する関数を実装するのに引数が正の整数と限定されてれば簡単だが、負だったり小数した場合は複雑になる。文字列や画像だった場合は例外が発生したりアボートしたり誤作動するかも知れない。
型はビジネスロジックに集中するためのルール、制約だ
静的は言語レベルで強制、チェックしてて、動的ではユーザ、実行時に任せてる
2017/08/11(金) 18:06:45.60ID:wS48fUKa
関数の引数なんかはやっぱ型があった方が読みやすいなと思う。
でも内部のテンポラリ変数なんかは別にいらんかもね。
というかテンポラリ変数の型情報がないと読めないようなコードは
そもそもコードが長すぎるとか、他の根本的な部分に問題がある気がする。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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