次世代言語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/07/31(火) 22:24:35.12ID:omk/SwPI
>>540
途中でクラスが変わるようなメソッド呼び出しを10個も20個もチェインするヤツは知らんが
コレクションに対する操作を数個チェインするぐらいは別に普通じゃね
2018/07/31(火) 22:27:24.42ID:10MH4XIN
>>539
ちゃうやろおっさん
型理論的にはn>=2に拡張するために持ち出すのがpair
なのでn=0,1にpairを持ち出す必要がない
別の言い方をすると型理論的にはAと<A>は同じ
そこを区別するのがアドホックにpairを導入した言語ということ
組み込みの土方より
2018/07/31(火) 22:35:12.06ID:omk/SwPI
>>541
たとえばコレクションのフィルター関数を実装するようなときに
一時的にミュータブルなコレクション作ってループ回して最後にイミュータブルにして返せばいいようなものを
最初の要素が条件満たさなかったらそれを落とした新しい不変コレクション作って返す関数の再帰で書くようなゴミが純粋病
2018/07/31(火) 22:37:48.27ID:vpErkqT1
>>541
バグの元の一番大きなものは可読性のなさだぞ。
測りにくいものを一切無視するのがこの手の輩のダメなとこだな。
546デフォルトの名無しさん
垢版 |
2018/07/31(火) 22:39:01.83ID:CfkG900T
>>544
なにそれこわい
それってなんというテクニックなの?
547デフォルトの名無しさん
垢版 |
2018/07/31(火) 22:39:55.17ID:CfkG900T
>>545
だから可読性を損ねてはならないって書いてるじゃん
俺のレスは可読性低かったか?
2018/07/31(火) 22:43:24.72ID:10MH4XIN
>>542
コレクションの操作ってのが具体的にどういうのかしらんけど
(おもちゃのような例は勘弁)
初見のコードだと返り値が何なのか副作用のありなしもよくわかんないのが嫌い
組み込み屋なんでそういうのに神経質なんですわ
2018/07/31(火) 22:46:40.79ID:hpcufxDD
>>543
お前みたいなドカタには同じに見えるんだろうけど
違うものだよ
2018/07/31(火) 22:58:39.97ID:omk/SwPI
>>548
おもちゃのような例とやらがなんだか知らんが
「配列にフィルタかけてマップしてソート」みたいなのはメソッドチェインで書くのが普通だし
プロダクトコードで頻出するし
言語組み込みとか標準ライブラリの範囲なので仕様知らないのは知らないほうが悪いで終了
551デフォルトの名無しさん
垢版 |
2018/07/31(火) 23:33:40.73ID:CfkG900T
組み込み屋だからコードが読めないって言い分が通用するのか
2018/08/01(水) 03:26:51.13ID:KaW6n03Q
b=a.filter(hoge).sort(piyo)はaが変化しないけど
b=a.sort(piyo).filter(hoge)はaが変化するJavaScriptとかもあるし
気持ちがわからんでもない
2018/08/01(水) 04:53:24.11ID:52qTUS9q
メソチェ嫌い
2018/08/01(水) 05:46:47.82ID:Lge0gQj8
c=a
b=a.sort(piyo).filter(hoge)
a=c
555デフォルトの名無しさん
垢版 |
2018/08/01(水) 06:24:23.31ID:KofKD7jP
jsのsortはソート結果を戻り値でも返すからよくないんだよね
rustは関数が破壊的な操作をするか一目で分かってよいんだよね
2018/08/01(水) 07:33:14.80ID:4GZUmxRn
関数の副作用や純粋性が気になるなら
関数型の言語さわるのも良いぞ

F#は宗教論争に発展せず
現場でも実用十分的
2018/08/01(水) 08:04:53.43ID:mJtUlzgh
>>552
マジかー。副作用あるかないかわかるようにしてほしいわ
2018/08/01(水) 08:39:51.67ID:hzuJqRKu
JavaScriptはうんこだから仕方ない
2018/08/01(水) 08:54:45.09ID:/d6Lb+hA
>>550
> 言語組み込みとか標準ライブラリの範囲なので仕様知らないのは知らないほうが悪いで終了

なんでそこで特定の言語前提になってんの?w
標準の範囲なら百歩譲ってありだけど標準だけのデザインという保証はないやろ普通
あといちいちAPIリファレンスで確認しないと使えないってのは言語の可読性低いとも言えるわ
560デフォルトの名無しさん
垢版 |
2018/08/01(水) 09:19:02.07ID:Lq6vBG3T
ドキュメント読まずにコード書くプログラマー降誕
2018/08/01(水) 09:29:11.08ID:IFtOcB8Z
批評家が口だけで問題解決することを理想としているように
可読性は目だけで解決するのが理想的である
562デフォルトの名無しさん
垢版 |
2018/08/01(水) 10:27:41.74ID:Lq6vBG3T
そしてハンガリアン記法が産まれた
2018/08/01(水) 10:54:20.08ID:hzuJqRKu
>>559
土方は古代言語をメモ帳で書いてるのか……

写像や部分集合、ソートなんぞはほとんどの言語で標準で用意されてるし
IDEなりプラグイン入れたエディタならリファレンスはマウスオーバーするかショートカット叩くだけだよ
2018/08/01(水) 11:14:28.61ID:+WQ1j7Jt
やっぱりCOBOLなんだよなあ
2018/08/01(水) 22:15:44.23ID:zZ0QT3av
>>523
> そもそも = が代入って時点で数学と違うんだから

それは単なる記法上の問題であって本質じゃない

C一族みたいないい加減な言語でなくAlgolやPascalのなどの正統派Algol系言語のように代入を表す記号を “:=” で書く言語であっても変数の概念が数学のそれと全く違うという問題はCなどでの変数と同じ
見掛け上の記号の使い方がいい加減という問題と、ある用語で表される概念がいい加減(間違っている)という問題とはレベルが全く違う
566デフォルトの名無しさん
垢版 |
2018/08/01(水) 22:27:10.95ID:KofKD7jP
それが何レベルなのか知らんけどどうでもいいじゃん
数学とプログラミングは別物なんだし
2018/08/01(水) 22:44:31.92ID:vVTk17fP
>>565
タプルがどうとかも十分同じレベルだろ。
そんなところで誤解して問題起こす奴なんて代入以上にいねーわ。
自分の理解の都合でイチャモンつけてるだけってことにそろそろ気づけや。
2018/08/01(水) 23:08:34.73ID:KaW6n03Q
>>554
c=aではオブジェクトは作られないので、そうやってもaは変化する

更に言うと
c=a
b=c.sort(piyo).filter(hoge)
でaが変化する
2018/08/02(木) 00:36:50.69ID:RmPassIF
こういう話を見ると言語としてイミュータブルな変数しかない言語が良い気がしてくる。
2018/08/02(木) 03:06:06.93ID:68/YZkTI
「いふ」とか言っちゃうイタイ奴にろくなのはいないな
2018/08/02(木) 03:23:08.65ID:7JMdFE06
>>518
いつ誰が「メソッドチェーン vs 内包表記」なんて下らん比較したんだよ

内包表記は内包表記で便利だっつっただけで、
メソッドチェーンつーかポイントフリースタイルが内包表記があれば不要なんて言った記憶は少なくとも俺にはないな

つーか>>478下段、まさにPythonにはポイントフリースタイル実現する記法が足りねえっつってんのが読み取れねえのか?

今時エセ歴史的仮名遣いで書き込むクルクルパーは国語の勉強しなおした方がいいぞ
2018/08/02(木) 03:24:30.81ID:uTIVZVJH
ずっと数学言ってるやついい加減うぜえわ
別スレ立ててそっちでやれやボケが
2018/08/02(木) 06:18:26.62ID:iydYt4gP
JavaScriptのsortとreverseが破壊的なのがぱっと見わからないのも、
JavaScriptの命名規則がうんこなだけでメソッドチェーン自体の良し悪しとは関係ない
2018/08/02(木) 06:58:50.64ID:NbZtWKau
関数合成大好きな関数型バカがメソッドチェーン腐すの、マジ笑えるww
2018/08/02(木) 08:25:49.67ID:j9EqWGQJ
>>573
こればっかりはなぁ。後発の言語は、副作用有無が明示されるようになってほしい。命名規則とか人間が頑張るタイプはやめて
2018/08/02(木) 09:00:45.23ID:St12vf3Y
やはりRustだな
2018/08/02(木) 09:09:27.15ID:eWP0KV4o
webサービス作るとき。というかrdbとの連携って静的言語より動的言語のほうが向いてる気がするんだけど、そんなことはない?
578デフォルトの名無しさん
垢版 |
2018/08/02(木) 13:33:10.21ID:2LzP698W
そんなことなかっぺ
2018/08/02(木) 21:52:10.29ID:yHWyeNWP
TypeScriptは事実上死んだだろ
2018/08/02(木) 21:54:23.55ID:RP1FF5pC
>>579
>>513
2018/08/02(木) 21:55:36.74ID:0KRWeg2T
>>579
新しいのが出たんだが
2018/08/02(木) 22:57:15.05ID:U+SwOe4H
typescriptなしにjavascriptを書こうとは思わないからな
2018/08/02(木) 23:26:38.99ID:xmgsCqay
頑なに副作用嫌ってる人意味分からん
java.awt.Graphics2Dとかにあるような
コンテクストオブジェクトをイジイジするのってめちゃ便利やんけ
2018/08/02(木) 23:45:39.47ID:Ihv2w8Qg
>>575
バカは引数のconst外してでも副作用入れてくるから言語で規制するって発想自体が無駄。
2018/08/02(木) 23:58:42.08ID:2ToUeHg/
1行に書かなきゃどんどん一時変数を増やさなきゃならない関数パイプラインはそれなりに意義が
あると思うけど、そうじゃないメソッドチェインはわざわざ見にくい1行の式にしなくても、と思う。
2018/08/03(金) 01:33:05.65ID:xgfpZ/vV
とはいえtypescriptは型情報が嘘つくことあるのがしんどい。ないよりはマシなんだけど。
いまいち信用できない。
jsに、標準で型情報ついてくれないかなー。
2018/08/03(金) 04:43:38.64ID:K19AvQuK
ESの付け焼き刃的実装に限界があるでしょ
2018/08/03(金) 06:06:54.20ID:2wLWPbYE
嘘つき「何も宣言しないよりはマシ」
付け焼刃「何もしないよりはマシ」
ギャンブル依存症「何も賭けないよりはマシ」
2018/08/03(金) 10:32:16.64ID:bzinJLAw
所詮MSの作った詐欺言語だわな
2018/08/03(金) 10:34:43.31ID:bzinJLAw
>>390
の徹底を求めます
2018/08/03(金) 10:46:59.25ID:Nsq6cZsy
TypeScriptはもうデファクトスタンダードなのよね
2018/08/03(金) 11:49:14.47ID:5Gvag+uQ
>>590
病的になんだか拗らせてるのかな
2018/08/03(金) 14:13:45.54ID:2wLWPbYE
なぜ病気とか健康とかなんですか
悪とか正義とかではだめなんですか
2018/08/03(金) 14:37:25.10ID:284JcKyJ
Linus氏曰く「マイクロソフト嫌悪は『病気』」
https://srad.jp/story/09/07/28/0326208/
2018/08/03(金) 15:01:39.29ID:2wLWPbYE
病人は生産性がないなんて言ったらたぶん炎上するし
悪人は生産性がないと言う方が無難だと思うけどなあ
2018/08/03(金) 21:26:18.77ID:2vUMzRdm
生産性がないならまだいいが生産性がマイナスな輩というのがいる。
こういう輩を見るとベイシックインカムはいいんじゃないかと本気で思うよ。
2018/08/03(金) 22:58:37.04ID:iVE9Y99e
>>586
嘘って?
2018/08/04(土) 10:28:43.19ID:uVhwgvNs
やっぱ副作のないメソチェが最高やろ
リス内記は読つら
2018/08/04(土) 10:30:16.07ID:uVhwgvNs
>>597
それは愛だよ
2018/08/04(土) 10:58:41.10ID:RjyiLlMo
初心者用の言語は上級者の要求を満たすことが出来ないということだな。
上級者が初心者用の言語使うのが間違ってるな。
haskellを使えば副作用を分離出来るし、メソッドチェーンも出来るし、
直積のタプルも0次元からN次元まで使えるし(1次元は普通の集合)
解決だな。
2018/08/04(土) 11:18:31.48ID:uVhwgvNs
ハスルケはセパレイタとしての記号が少ないからリイダビリティが悪い
そして誰もいなくなっただろう
2018/08/04(土) 12:29:28.79ID:uqPZ4G5F
Haskellはタプルを使わなくてもコンストラクタのアリティを2以上にできる
多変数コンストラクタの具体例のひとつにすぎないのがHaskellのタプル
1変数コンストラクタも無数にある
だから a と (a,) が同じ型にならないPythonを見ても違和感はない
2018/08/04(土) 14:55:00.60ID:PeeX9dIT
>>601
オレオレ略語とか変なカタカナ表記とか、お前さんのレスもreadability低いぞ
2018/08/04(土) 16:06:26.17ID:uVhwgvNs
>>603
これが通なんだよなあ
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を隠しつつ宣言的に書くという変態技のために
モナド用の構文糖衣が多数あるせいで関数型の簡潔さが失われている
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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