次世代言語12 Go Rust Swift Kotlin TypeScript

■ このスレッドは過去ログ倉庫に格納されています
2018/07/04(水) 09:38:15.76ID:qg2ggPtj
スレタイ以外の言語もok

前スレ
次世代言語11[Rust Swift TypeScript Dart]
https://mevius.5ch.net/test/read.cgi/tech/1528037607/
2018/08/04(土) 18:12:45.89ID:2981o0py
ナウいハスルカー来たな
2018/08/06(月) 14:41:08.25ID:mInzEOma
>>598
だからなんでリスト内包vsメソッドチェーンの対立になってんだよ
2018/08/06(月) 16:48:04.88ID:F/jngZf9
ハスケルはエコシステムが腐ってるという話を聞いたけど本当?
言語がいくらすごくても環境構築で、しんどい思いするなら用無しなんですが
2018/08/06(月) 16:59:19.53ID:N1MnEH4U
改善されたことになっているが正直クソ
2018/08/06(月) 17:02:40.30ID:bv191ZQE
理論ばかりの頭でっかちの奴等ばっかりだからな。
実用性なんかどうでもいいんだろ。
だから実用されないんだよw
2018/08/06(月) 19:32:00.71ID:ykSda89u
>>607
パッケージ管理ツールのcabalもstackも依存把握がすぐぶっ壊れる。
あれは何が副作用がないからバグが少ないだって気分になるわ。
2018/08/06(月) 21:10:23.18ID:6BhDg/Vc
1. 関数プログラミング自体が実は大したことない
2. 副作用禁止の強制が邪魔
3. 使ってるプログラマーのレベルが低い(偏屈しか使わない・ユーザー層が薄い)
4. まだ成熟していないだけ

どうだろう。4だと思いたいが…
2018/08/06(月) 21:20:23.85ID:2AWODdBK
・Web系→モデルやロジックが単純なので関数型のメリットなし
・ゲーム系→常に時間変化を扱うので関数型のメリットなし
・業務系→PGの単価が上がって割に合わないので関数型のメリットなし
613デフォルトの名無しさん
垢版 |
2018/08/06(月) 21:28:53.61ID:13KQrLiC
関数型の定義が未だに分からない
2だけならどの言語でも原則として受け入れられているんじゃないの
2018/08/06(月) 21:45:44.03ID:2AWODdBK
関数型はテストするまでもなく結果の明らかな極めて宣言性の高いコーディングができるというのが実用上最大の強みなわけだけど、
関数型マニアの関心は主に無限リストやら再帰やらモナドやら、自らその宣言性を捨てるテクニックにばかり向いていて、
結局関数型の何が嬉しいのかよくわからん状態になってしまってるのが現状
615デフォルトの名無しさん
垢版 |
2018/08/06(月) 21:58:21.43ID:13KQrLiC
具体的にはどんなコードになるの?
そんな単純なコードの断片だけを組み合わせるだけで実用に耐えうる可読性や性能を発揮できるもんなの?
2018/08/06(月) 21:59:00.02ID:iAZi0X5l
関数単位、メソッド単位でなるべく純粋にしておくのは重要
短い関数内部の実装まで純粋にしようとするのは宗教
2018/08/06(月) 22:15:10.24ID:GZIQzwJh
平気で数百メガあるようなデータに対して副作用のないメソッドチェーンで加工するのって普通にやることなの?
2018/08/06(月) 22:27:24.52ID:YK5LkNr+
>>617
そういうのはステップ毎に一時ファイルに書き出すのが普通でしょ
COBOL時代からの伝統的なスタイルであり、今でもHadoopなどに受け継がれている
副作用がなくむしろ関数型的だ
2018/08/06(月) 23:04:02.54ID:GZIQzwJh
じゃあ数メガぐらいのデータなら?
2018/08/06(月) 23:11:20.61ID:4RMVWTln
遅延評価だったりストリーム使えるんなら大体気にしなくていいんじゃないかね
2018/08/06(月) 23:47:33.03ID:+WS/BAR+
関数型言語の本質は関数そのものを柔軟に扱うことだと思うんだけどな
例えばジェネリック関数のある言語ではジェネリック関数をジェネリックなまま引数や戻り値として扱えないと関数型言語っぽくない気がする
2018/08/06(月) 23:57:07.45ID:6BhDg/Vc
>>613
副作用はよろしくない、というのは確かに広く受け入れられている。
でもHaskellなどが要求する基準は、もっとずっと高い。
ちょっと前にstackツールのコードを見たことがある。今どうなってるかは知らんが当時は、
ある純粋な関数の中でデバッグ用ログをより詳細に出力するってフラグを、ソースコードに即値でベタ書きしていた。
これは他の言語では例えば環境変数を読み込む関数をその場で実行すれば良いだけなのだが、
Haskellでそれをやろうとすると、関数のシグニチャを非純粋なものに置き換えて、使用する全箇所も合わせて換えるか、
あるいはフラグを引き渡す配管を新設するか、などの工事が必要になる。
2018/08/07(火) 00:00:17.86ID:Cr+icss0
>>620
それは勘違い
遅延ストリームでステップ毎にコピーしてるんなら、コピーするオブジェクト数はバッチでステップ毎に全件コピーするのと変わらん
というかメモリアクセスが細切れになる分だけ遅くなる
遅延ストリームはレイテンシの低減には有効だけどスループットも下がるよ
624622
垢版 |
2018/08/07(火) 00:12:00.15ID:iXXZIPQ5
...という工事が必要になる。だから仕方ないと言えなくもない。

このような事態は純粋な言語では良くあるのだが、このことだけで、すわHaskellあかんやん、は早計だと思う。
Implicit ParametersやGivenのようなアイデアも出てきてるし、これは解決する余地のある課題なのかもしれない。
あるいはこのような事態を引き起こす設計に問題があるのかも。
2018/08/07(火) 00:18:57.06ID:UMEYDAwp
次世代言語たって、シングルスレッドのJSをこねくり回してドヤってる人と
Native言語でハードウェアの性能を最大限引きだそうとしてる人とで
必要とするもの違うからいっしょに議論してもかみ合わない
2018/08/07(火) 00:20:39.37ID:wPKvZYDw
そもそもハスケルの仕様通りの評価順序で実装してたらまともな実行速度でないっしょ。
そういうごまかしを含んでる時点でしょーもねーわ。
2018/08/07(火) 00:30:11.90ID:Cr+icss0
副作用はよろしくない、といってるくせに再帰やら遅延ストリームやらモナドやら状態依存のコードを好んで書きたがるのが関数型マニア
そもそも状態に依存するコードなんか極力書くな、避けられるならモナドなんか使うな、という正論を言えない空気があり、
競って予測困難で難解なコードを書いて「俺すげえ」のマウント合戦を繰り広げている
こんな状態で流行るわけがない
2018/08/07(火) 01:14:56.51ID:rAZv+q4y
状態依存は避けられないのに状態を禁止してしまったからやたらと状態関連が発達してしまっているけど、状態なしで書ける部分と状態が必要な部分を分けて書くという理念は守られているはず……
2018/08/07(火) 01:27:00.12ID:lcDZ2HG8
Haskellの定義を知ってる人ならいるけど関数型の定義は誰も知らないんだよ
だから「Haskellは関数型である」とか
「Haskellマニアと関数型マニアは同一人物である」とかいう根拠がそもそも存在しない
2018/08/07(火) 01:37:43.21ID:wdyVMIbP
つまりおまいらはまたオブジェクティバラブルなコード時代に戻るというの?
2018/08/07(火) 01:38:48.13ID:kyOAfGFT
日本語でおk
2018/08/07(火) 01:39:33.68ID:UMEYDAwp
関数型言語の定義ってラムダ計算を計算モデルにしてる言語でいいだろ
2018/08/07(火) 02:09:48.40ID:lcDZ2HG8
そのラムダ計算には型があるのかないのか
副作用があるのかないのか
なにも定義されていない
2018/08/07(火) 03:28:30.29ID:hhcOlifT
型なしラムダ計算だったとしてもlispだし型付ラムダ計算だったとしてもML/Haskell/etc…だし広義には問題なくない?
副作用の有無=純粋性は程度で片付けなきゃやってられない(どの汎用言語にもプログラムならどこかしら副作用が存在する)し

定期的に定義に固執しすぎなレス見掛けるけど自分でその問い掛けを考えたか?って感じなのが多い
2018/08/07(火) 03:47:47.09ID:1Z28ZkuF
計算機科学の研究課題としては興味深いが
プロダクション用途ではないだろう
だから何が悪いというわけではないが
2018/08/07(火) 06:13:33.64ID:o88xwRN/
>>614 がいいこと言った。
見通しが良いコードにするための宣言型言語のはずが
むしろ見通しを悪くしている。
2018/08/07(火) 07:56:24.18ID:c0zbvnlv
Scalaという見通しの悪い言語が関数型として世に知られてしまったのも不幸だったよね
意識高い系のオモチャに選ばれたのがScalaではなくF#だったら状況はだいぶ違っていたのではないか
2018/08/07(火) 07:59:10.87ID:6yZcjsMn
状態に依存する部分と純粋な部分を切り分けること自体は純粋関数型言語じゃなくてもできること

そもそもHaskell使える開発者が集まってるならHaskellじゃなくてもみんな極力そのように書くし、
強制されないと副作用ごちゃまぜコードを書くような土方はHaskellは使えない

純粋性を強制するメリットが禁止して柔軟性を失うデメリットに釣り合ってない
2018/08/07(火) 08:35:30.11ID:iXXZIPQ5
純粋性を強制するメリット、を考えてみた。
例えばエディタの設定ファイルをHaskell自身で書くことができる。
設定ファイルがSafeHaskellであることを要請して、かつ設定操作に限定された型のみを許すようにする。

これで設定ファイルに、勝手にビットコインを採掘するスクリプトを忍ばせるような悪さができなくなるし、
Haskellそのものの柔軟性を活かして好きなだけ設定を短く表現できる。
安全さと強力さが両立された。
2018/08/07(火) 08:38:42.25ID:FVK8LmPZ
Haskellは状態に依存するコードを書こうとすると途端に
可読性の低い冗長なコードになるのがダメなところだと思う
純粋な部分の構文に比べて手抜きすぎなんだよ
2018/08/07(火) 08:54:53.62ID:UMEYDAwp
手抜きではないだろ、むしろ逆
worldを隠しつつ宣言的に書くという変態技のために
モナド用の構文糖衣が多数あるせいで関数型の簡潔さが失われている
2018/08/07(火) 09:11:21.06ID:FVK8LmPZ
シンタックスシュガーを幾ら用意しても簡潔に書けるようにする工夫がないから
どう書いても冗長って話なんだけど?分かってないなぁ
2018/08/07(火) 10:46:00.40ID:rAZv+q4y
それは手抜きと表現すべきではない。わかってないなあ
2018/08/07(火) 10:58:16.01ID:hbLPpe/0
>>642
じゃあ例えばどういう工夫なの?
お前のHaskellの理解力が試されてるから慎重に答えてね
無理なら別に逃げてもいいよ
2018/08/07(火) 11:45:14.63ID:7ewfkb5/
工夫するたびに言語の差は大きくなって言葉が通じなくなる
逆に言語を一つにしたければチューリングマシンだとかラムダ計算だとか
人が手を加えないまるで手抜きのような方向に行けばいい
2018/08/07(火) 11:56:41.38ID:MwJ3Tuus
>>644
そうだなぁ。何でもいいんだけど、たとえば in-place quicksort をHaskellで可読性高く書けるかって話ですよ
いままでCにも劣る可読性のコードしか見たことないわ
だから、お前が可読性高い in-place quicksort を書いて見せたらこっちの意見は取り下げてもいいけどね

無理なら別に逃げてもいいよw
2018/08/07(火) 11:56:53.80ID:UdLWsfQc
関数型は実行モデルに由来する制約が少なくて言語設計の自由度が高い分、アイランドモンキー族にとって馴染みにくいものになってると思うんだよな
「結論から言え」なカルチャーが色濃く出すぎてる
2018/08/07(火) 12:42:49.18ID:hbLPpe/0
>>646
お前の可読性の基準なんかこっちはしらんがな
お前が言う工夫が例えば何かって聞いてんだよ
まさかノーアイデアで批判だけしてんの?
2018/08/07(火) 13:44:16.06ID:iXXZIPQ5
可読性が低く冗長なのが問題だ。簡潔に書ける工夫があればよい。
例えばどういう工夫が?
例えば in-place quicksort が問題だ。簡潔に書ける工夫はないだろ?

----
まあ問題意識は判った。確かに可読性と速度の両立は課題だと思う。
2018/08/07(火) 13:56:33.53ID:7ewfkb5/
CとHaskellの両立ができないやつは二刀流を自粛している
これは自粛であって禁止ではない
2018/08/07(火) 14:11:05.26ID:iXXZIPQ5
あれっひょっとして >>642
「もっと状態方面を簡潔に書けるよう工夫しろよ」って非難してるのか。
だとしたら誤読だったすまん。
2018/08/07(火) 14:14:10.11ID:87aOzLJL
インプレースに書かなくてもインプレースにしてくれるのが stream fusion
2018/08/07(火) 14:20:07.94ID:7ewfkb5/
副作用を書かなくても書ける(副作用禁止とは言っていない)
2018/08/07(火) 16:25:52.99ID:1g1T9ybM
>>633
> そのラムダ計算には型があるのかないのか
> 副作用があるのかないのか

副作用を入れたものは本来はλ計算ではないよ
そういう変てこなバリエーションをデッチ上げて「何ちゃらλ-calculus」とか呼んで発表してるのは幾らでもあるがゴミばかり
状態などというものを考えず単純に構文的な置き換えだけで扱えるλ計算の長所を破壊し放棄する拡張をしても何もメリットはない
単にほとんど誰にも論文のカウント数を1増やすだけ
まあ御当人の学位取得や助教職のアプリケーションには有効なのかも知れないが
2018/08/07(火) 16:27:13.31ID:1g1T9ybM
>>654訂正
誤> 単にほとんど誰にも論文のカウント数を1増やすだけ
正> 単にほとんど誰にも読まれない論文のカウント数を1増やすだけ
2018/08/07(火) 16:59:37.73ID:7ewfkb5/
モナドクラスは副作用を入れたinstanceと入れないinstanceの見た目を同じにする
副作用を禁止しても見た目が美しくなったりしない
Haskellには副作用を禁止するモチベーションがない
2018/08/07(火) 17:10:14.56ID:ghIQqx1y
副作用あったら遅延評価できないじゃんwwwww
2018/08/07(火) 17:44:51.87ID:STmUhm8q
>>648
ここはHaskellスレじゃないんですよ?
ゴミ言語にはゴミである理由さえ説明すれば十分ですよ
2018/08/07(火) 21:56:56.28ID:rAZv+q4y
Inplaceが必要な時はHaskellを使うべきではない
Inplaceが不要な時に力を発揮する言語だし、Inplaceなんて避けておけというメッセージのこもった言語だ
2018/08/07(火) 22:38:15.68ID:ThdtCxHP
>>659
それって言い方を変えると
HaskellもPythonみたいにクリティカルな部分はCで書いてそれ呼び出せ
って解釈できる気がするんだが、そう解釈しておk?飛躍しすぎ?
2018/08/07(火) 23:17:08.03ID:rAZv+q4y
>>660
個人的には正直そうした方が良いと思う
2018/08/07(火) 23:57:01.73ID:z8E9h/cA
たかがin-placeが必要なだけでCの助けが必要って?
そんなウンコは次世代言語に相応しくないな
663デフォルトの名無しさん
垢版 |
2018/08/08(水) 00:39:35.00ID:MPyzl9Mf
結局C++で全部書けばいいじゃんってなる
2018/08/08(水) 00:41:13.08ID:wOobAAAA
>>662
なるべくin-placeは避けろという言語に対してin-placeがかけないなら云々とかもう思想が合ってないとしか言いようがないな
2018/08/08(水) 00:46:04.90ID:LvbSOyDD
Haskellは富豪プログラム専用。in-placeがどうしても必要になるような貧乏人の道具ではない
2018/08/08(水) 01:04:09.78ID:vRZZuWNv
副作とノー副作を合一合体して書けるScalaサイキョってことか?
2018/08/08(水) 01:05:18.29ID:vRZZuWNv
ちなInplaceって何ンゴ?
2018/08/08(水) 01:17:44.98ID:XKTLbEez
関数型言語に学ぶ価値はあるけど使う価値はないっ昔から言われてるじゃん
Monad勉強してへーうまくできてんなー(実行効率悪そうだけど)
って思っときゃいいの
そして最近の言語はOptionalとかいいとこだけうまく取り込んでるわけだ
2018/08/08(水) 01:33:19.58ID:x4iNladl
シンプルさと実用性を兼ね備えたF#が最強でいいよ
2018/08/08(水) 06:39:46.68ID:qzF7QRmg
>>669
F#って、何処で使われてるの?
2018/08/08(水) 07:11:01.72ID:NcOXcLna
既存の手続き型言語で培われてきたアルゴリズムは
ミュータブルなデータ構造に対して最大限の効果を発揮するものなんだから
イミュータブルなデータ構造が基本の言語で同じことをやろうとするのが誤り
2018/08/08(水) 07:27:54.72ID:wNvOXIQi
イミュータブルなデータ構造の方が速い、ってケースはあり得るのかしらん
2018/08/08(水) 08:23:57.11ID:IxvHxUWv
ミュータブルがイミュータブルを包含するなら無い。
2018/08/08(水) 08:26:42.80ID:XKTLbEez
速いってケースは思いつかないけど(ヒープを遠慮なく使う時点でたぶんアウト)
SSAとかは興味深い
2018/08/08(水) 08:42:20.41ID:Lg30iyda
なんか俺がいなくても結局誰かをガイジ呼ばわりして叩くスタンスには変わりないんだな
676デフォルトの名無しさん
垢版 |
2018/08/08(水) 09:16:15.89ID:HB5JDXH/
誰だよ
2018/08/08(水) 09:16:44.00ID:2sUSQVhy
いや?引き続きお前がガイジだけど?
2018/08/08(水) 09:24:26.65ID:vRZZuWNv
ビットコドンドコで大負けくらってる僕よりガイジーヌなやちゅなんておらんJARO草ァwwww
んでさでさ、Inplaceて何ンゴンゴ?_?
2018/08/08(水) 09:48:10.71ID:x4iNladl
宣言的に書くならC#のLinqよりF#で書いた方が速いね
もちろん速くするだけならC#の方が速いけど

>>670
金融、財務とかかね
stackoverflowのアンケでは給料の高い人が使ってる言語の1位になってるし
日本じゃほぼ使われてないのかもしれんけど
2018/08/08(水) 11:11:01.92ID:Lg30iyda
>>677
それが変わったとは言ってなかろうw
2018/08/08(水) 11:33:37.96ID:cLlG8mO/
https://prtimes.jp/main/html/rd/p/000000004.000034075.html
日本だとgoやな
2018/08/08(水) 11:39:50.23ID:cLlG8mO/
https://insights.stackoverflow.com/survey/2018/#top-paying-technologies
stackoverflowはこれやな
トップ3は関数型やのう
2018/08/08(水) 12:50:00.95ID:LvbSOyDD
Clojureたっかw
2018/08/08(水) 12:50:15.63ID:5wsfu3zt
GoもKotlinもTSももう次世代じゃなくて現世代だな
2018/08/08(水) 15:37:13.59ID:PIe5jilU
関数型言語が高いんじゃなくて関数型言語使えるような人は土方と違って生産性も収入も高い人が多いってだけなんだよな。
2018/08/08(水) 15:50:13.09ID:9m2ggoUL
なんでもそうだけど、役に立たない仕事ほど年収が高いんだよね。
2018/08/08(水) 16:11:31.17ID:Gn4Y43YU
役に立たない仕事で収入を得るのは特別な能力が必要だから当然
688デフォルトの名無しさん
垢版 |
2018/08/08(水) 18:42:53.59ID:MPyzl9Mf
Google社内では本当にDart使用していると言い張っているようだな
2018/08/08(水) 20:02:34.86ID:vRZZuWNv
俺を無視するな無能ども
2018/08/08(水) 20:32:13.33ID:R97WVBzv
多数派ほど年収コストカットの標的になる
2018/08/08(水) 20:48:54.98ID:8/KZCZf7
>>684
それな
ここは次世代スレだからそろそろ退場して欲しい
2018/08/09(木) 07:19:31.82ID:a08mMW70
最近の言語ってなんで文末のセミコロンを無くしたがるのかはホント理解できんね
2018/08/09(木) 07:35:24.04ID:RpjTpAg/
文末に。を付けないやつが言うな。
2018/08/09(木) 10:42:24.61ID:9RYWVA0H
うまいツッコミww
2018/08/09(木) 11:20:46.07ID:SPEbgWbN
文末は「w」を付けようw
2018/08/09(木) 11:32:06.24ID:nOv6o4Tk
正解が二個以上あっても正気を保てるのは言語オタクだけだ
だから改行を唯一の正解とする
改行の強制はインデントの強制でもある
697デフォルトの名無しさん
垢版 |
2018/08/09(木) 11:45:07.69ID:jYulBjzP
。文頭に。
2018/08/09(木) 11:48:54.95ID:tiCgQYzA
>>691
じゃあ次世代言語上げてくださいますか?
2018/08/09(木) 12:14:58.58ID:oYkmjdVE
次世代言語って、現世代では全く使われていない言語を指すの?
そうなると、ここでは書いたことの無い言語の話しか出来ないんじゃないかな。

もう少し冷静に、新しいか、成長の余地がある言語にすりゃ良いかと思うよ。

新しくもないし凝り固まってるしパラダイムも充分に理解されてるがメジャーではない言語、を入れるかに悩むならわかるけど。
2018/08/09(木) 12:30:39.38ID:bosClgwQ
Javaみたいなゲージ御用達スーパーゲージ変換じゃなけりゃなんでも良いだろ
2018/08/09(木) 12:41:46.37ID:3KvQpafX
みんなスルースキル高くて草
2018/08/09(木) 12:49:51.63ID:f0O6DFnI
>>699
業務でってのが一つの基準な気がするけど
2018/08/09(木) 13:56:19.73ID:SPEbgWbN
つまりw改行しなければwいいんだなwwww
704デフォルトの名無しさん
垢版 |
2018/08/09(木) 20:59:51.98ID:e5qVRRjG
スレタイの中だとrustかswiftくらいしか成長の余地なくない?
705デフォルトの名無しさん
垢版 |
2018/08/09(木) 21:20:23.73ID:VJPaXfwo
Kotlin もよろしく
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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