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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/08/28(月) 21:53:37.12ID:5I+bTEeA
※前スレ
次世代言語議論スレ[Go Rust Scala Haskell]第5世代
http://mevius.2ch.net/test/read.cgi/tech/1497311647/
2017/09/21(木) 09:32:12.51ID:5FG4CErg
>>586
c#のパターンマッチはまだ中途半端なのに、それに抜かれたとはヤバイな
588デフォルトの名無しさん
垢版 |
2017/09/21(木) 12:19:06.27ID:xGEE8GqX
>>555
inlineの方がいいのは型チェックあるからだろ
2017/09/21(木) 12:30:12.98ID:r0JkAuLO
俺の場合引数が殆どdoubleかintだから型チェックは意味ないんだよな。
2017/09/21(木) 14:07:02.73ID:+Jhp3IyY
doubleかintしか使わないなら意味あるが、2つ使うなら意味あるだろ。
しかも、完全にじゃなくて殆どならなおさら。
型の意味わかってないだろ。
2017/09/21(木) 14:11:01.15ID:iqJkS7HX
JavaScript「型なんて飾りです」
2017/09/21(木) 15:01:32.35ID:gDFFhm4z
>>590
間違いやすくてかつ間違うと致命的なバグを生むからな
2017/09/21(木) 15:22:16.77ID:r0JkAuLO
一番間違えるのは引数の順番と数
2017/09/21(木) 15:43:39.40ID:SPES50ix
>>593
doubleとintの順番ミスったら大変だもんな
2017/09/21(木) 16:29:56.24ID:rIFSqMAF
C のデバッグしてると int -> double も明示的に変換するように設計されてりゃよかったのにと思うことが多い。
python3 の int と float をごっちゃにあえてしたのなんてありゃ失敗だろ。型を弱くしてどうすんだっていう。
2017/09/21(木) 18:44:57.78ID:V4ctP0WJ
次世代言語では、データとかを引数で渡すって方法に新たな工夫が欲しいね
2017/09/21(木) 20:03:14.13ID:1e+K8/4+
>>596
たとえば?
2017/09/21(木) 22:58:59.34ID:2mLwGNyW
doubleとintを間違える可能性は確かにあるけど
座標とかはdoubleとdoubleだったりintとintだったりするだろ
それを間違える可能性まで網羅しないと致命的じゃないか

型システムに都合の良い範囲を想定してしまったらかえって想定外の盲点が増えてしまう
2017/09/22(金) 01:01:11.41ID:yLA4yX5X
>>598
型システムがきちんとしてる言語であなたが考えてるような設計はしない
2017/09/22(金) 01:09:22.44ID:VcH/r1aN
intとdoubleを明確に区別するといえばOCamlだが、あれは流石にやりすぎと感じる。にわか感想だけど
2017/09/22(金) 03:19:07.10ID:g4HdW9MF
暗黙の型変換の邪悪さは経験積めばわかる
あとIntへの型変換はHaskellが一番ドイヒー
2017/09/22(金) 05:18:45.27ID:A2XKXMkJ
経験積めばわかる、ですむなら静的型いらねぇよ
2017/09/22(金) 05:39:47.03ID:g4HdW9MF
>>602
ソースの見通しが悪くなってバグの検出が難しくなる
2017/09/22(金) 07:53:43.74ID:eIMWXunI
IDE補完が効きまくるという点で静的型が好き。
phpStormとか使うとphpでも補完効きまくるようになるん?
2017/09/22(金) 08:34:49.37ID:ig88NjIH
>>601
10年以上Haskellメインで使ってますが、
あなたの言うIntへの型変換の「酷さ」が分かりません。

他言語と比べて何か問題あるのでしょうか。
2017/09/22(金) 09:10:52.08ID:eIMWXunI
>>605
Haskellメインの現場ってどういう環境です?研究職?
2017/09/22(金) 09:45:24.85ID:eeRMTLx0
Haskellみたいなのを研究に使っていたら逆にやう゛ぁいわ
メインはホビーだろ
2017/09/22(金) 09:49:39.95ID:Q4+Qj6om
まず初めに現場かホビーかの分岐があるのになぜ現場に限定するのか
2017/09/22(金) 11:00:09.62ID:g4HdW9MF
>>605
え?計算毎にいちいちNum経由にするのが酷くないって?
お前もしかしてHaskell使ったこと無いんじゃないの?
2017/09/22(金) 11:06:23.68ID:g4HdW9MF
Haskellメイン(仕事とは言ってない)

コンパイラとかの文字列処理や、モデルの妥当性検証とかに使うならまだしも、
数値計算でHaskellw
Repa位しか優位性ないだろ
2017/09/22(金) 11:40:01.90ID:ig88NjIH
>>609
Numは型ではなく型クラスです。

具体的には、どの型からInt型への変換が酷いのでしょうか。
Stream Fusion は働かないのでしょうか。
2017/09/22(金) 11:45:22.74ID:ig88NjIH
>>609
失礼、Stream Fusion と言うより、書き換え規則ですね。

書き換え規則が働けば、大抵の型変換は必要最小限のオーバーヘッドで行われる筈です。
2017/09/22(金) 11:47:26.66ID:g4HdW9MF
>>611
Numが型だとも型クラスでないとも言ってないし、
Stream Fusionだろうと変換はいるけど?
お前さっきから何知ったかぶってるの?
2017/09/22(金) 11:48:26.85ID:g4HdW9MF
>>612
「はずです」って、それ結局自分で書くだけだろ?
2017/09/22(金) 11:49:20.78ID:g4HdW9MF
こういう机上だけで語るクソ野郎がいるからHaskellは嫌い
2017/09/22(金) 12:01:58.15ID:Q4+Qj6om
例えばInt型の3って名前の関数をNumタイプクラスの3って名前の仮想関数に変換する関数で
変換してそれをDoubleを使う関数にいれるパターンだよな。
2017/09/22(金) 12:09:13.20ID:XD+YRvZx
だから具体的なコード書けって。変な勘違いしてるかもしれないんだから
2017/09/22(金) 12:33:30.94ID:A2XKXMkJ
仮想関数は酷いってのは常識になりつつある
オーバーロードはいいがオーバーライドは酷い
だがオーバーロードとオーバーライドを勘違いする非常識なやつもまだいっぱいいる
2017/09/22(金) 12:52:13.95ID:7Suyvrun
オーバーロードこそゴミだろ
型が柔軟になればなるほど邪魔になる
2017/09/22(金) 13:14:10.74ID:ig88NjIH
>>601
ある型の値をInt型の値へ変換する際にあなたにとって酷いことが起きる、
あるいはあなたにとって酷いプログラムコードになる、という話ですよね。

>>609
Int型への変換の話の中で「Numを経由する」という言い方を聞いて、
あなたが Num を型だと勘違いしていると思いました。
大変失礼しました。

ある型の値をInt型の値へ変換する際は一度Num型クラスのインスタンス型の値へ変換し、
それを改めてInt型の値へ変換しないといけない、
あるいはそういう型が多い。
あなたはそう思っているのでしょうか。

もしそのような場合でも、私書き換え規則があれば経由しないようにできると私は言いました。
標準ライブラリの中で定義されている型で、
頻繁にInt型への変換が必要と思われる型に対しては、
書き換え規則がライブラリ内に書かれています。
自分で書く場合も一度書けば済むだけみます。
これが酷いのでしょうか。

改めて聞きますが、具体的にはどの型の値をInt型の値へ変換する際に、
Num型クラスのどの型の値を経由しなければならないのでしょうか。
2017/09/22(金) 13:37:46.62ID:g4HdW9MF
>>620
>改めて聞きますが、具体的にはどの型の値をInt型の値へ変換する際に、
>Num型クラスのどの型の値を経由しなければならないのでしょうか。
だから全部自分で書いた話だろそれ
VanillaじゃIntとIntegerすら必要だろ

そんな事言ったら何らかの形で暗黙の型変換許してる言語全部そうだわ
お前マジで頭の病院行ったほうがいいんじゃねえの?
2017/09/22(金) 13:55:56.62ID:Q4+Qj6om
どっちもどっちだな。
両方病院言ったほうがいいかも。
2017/09/22(金) 14:14:32.59ID:A2XKXMkJ
言語の問題を医学部に丸投げするなよ
今ここで必要なのは法学部か文学部のような能力だという現実を受け入れろよ
2017/09/22(金) 14:19:32.05ID:ig88NjIH
>>621
Integer型の値をInt型へ変換する際に、
Num型クラスのどのインスタンス型にまず変換する必要があるのか、
その型を教えて頂けないでしょうか。
2017/09/22(金) 14:52:17.51ID:XD+YRvZx
具体的なコードを示せないのは、具体的なコードを示すとボロが出るからw
2017/09/22(金) 14:56:44.72ID:g4HdW9MF
>>624
はあ?Int側にするならNum Integer経由だろ?
お前さっきから関係ない話ばっかりじゃねーか
2017/09/22(金) 15:01:10.70ID:g4HdW9MF
>>625
書くまでもない気がするが一応な
https://ideone.com/MjF75Z
https://ideone.com/es7fao
2017/09/22(金) 15:10:56.24ID:XD+YRvZx
ほわ?そのコードの何が問題なんだ?
上も下も非常に妥当な挙動に見えるんだけど、いったいどうなって欲しいんだ?
2017/09/22(金) 15:11:44.73ID:g4HdW9MF
ああ、意図がわかった
こいつIntegralをNumって言った事とっかかりに揚げ足取りしたいんだな
IntegralはReal通してNumのサブクラスですよクソ野郎
2017/09/22(金) 15:14:53.86ID:g4HdW9MF
>>628
このクソ冗長なコードが妥当?w
これを解決するための機能まで作っておいて?w
2017/09/22(金) 15:28:32.33ID:ig88NjIH
>>627
fromIntegral 関数は、Integer型の値をInt型の値へ変換する際に、
どのような他の型へも変換しません。
経由しません。

Inreger型の値をInt型の値へ変換するのにNum Integer を経由、
という言い方がおかしいと思うのですが。
2017/09/22(金) 15:41:26.97ID:g4HdW9MF
>>631
言葉遊びばかりだな
fromIntegralはfromIntegerを使う時点でNum経由
あといちいち俺が言っていないことさも言ったかのように決めつけて反論するの、やめてくれないかな?
2017/09/22(金) 15:41:29.25ID:Q4+Qj6om
でもIntをDoubleに変換するときは2回変換するんだろ。
2017/09/22(金) 15:54:31.81ID:g4HdW9MF
そもそもHaskellで数値計算なんて
チューンしたところでLL並の速度なのに何を躍起になってんだか…
このクソ野郎には適材適所という言葉を送りたい
2017/09/22(金) 15:59:41.73ID:ig88NjIH
>>632
fromIntegral = fromInteger . toInteger

Integer型の値からInt型の値への変換はどこも経由しません。

例えばWord型の値からInt型の値への変換は、
書き換え規則を働かせないようにわざわざすれば、
Integer型の値へ変換されてからInt型の値へ変換されます。

ですが、このような変換の書き換え規則を働かせないようにするメリットがありません。
初めから標準ライブラリに書かれていて、
プログラマは意識する事無くそれを使っているのだから。

ちなみに、私は>>627のコードが冗長だとは特に思わないです。
文字fromIntegralが長いと感じるのであれば、
fiにでも変えればいい話ですし。
2017/09/22(金) 16:07:10.71ID:Q4+Qj6om
だから冗長な文を書くんだろうな
2017/09/22(金) 16:16:34.49ID:2BEAGAP4
上のが通ったらそれ暗黙の型変換じゃね?
そのほうが怖いわ
2017/09/22(金) 16:20:54.19ID:XD+YRvZx
>>630
え、何? まさかそこで暗黙の型変換して欲しいの?
2017/09/22(金) 16:25:12.12ID:g4HdW9MF
>>635
だからそれfromInteger使ってんだろ
そしてIntとWordが例外なのに、さも他に定義されてるように言いやがるし
詭弁が多すぎ
2017/09/22(金) 16:30:27.19ID:g4HdW9MF
>>637
あらゆる型で変換が必要だからおかしいんだよ
比較的面倒くさいOCamlでさえ1キャストで済む
2017/09/22(金) 16:31:40.02ID:ig88NjIH
>>639
他にも色々な型の書き換え規則が定義されています。

ここで全て挙げるのはさすがに勘弁してほしいので、
興味がおありなら標準ライブラリを調べてみてください。
2017/09/22(金) 16:36:07.88ID:g4HdW9MF
>>641
いやお前が言い出したんだから、お前が挙げるんだよw
よくもまあこんな適当な事をw
2017/09/22(金) 16:37:20.96ID:g4HdW9MF
そしてこれが現実w
http://hackage.haskell.org/package/base-4.10.0.0/docs/src/GHC.Real.html#line-442
2017/09/22(金) 16:37:24.43ID:XD+YRvZx
そもそもIntとIntegerを混ぜて演算する時なんてそうあるか?
浅学非才な俺には設計が悪いとしか思えないんだけど。どういう時に必要なんだ……
2017/09/22(金) 16:42:22.60ID:g4HdW9MF
>>644
逆だぞ
そんな型揃えてまで速度欲しい具体的な演算を想定したら
Haskell自体を使わない
2017/09/22(金) 17:05:23.17ID:XD+YRvZx
>>645
いや、速度関係なく、取り敢えず型は揃えとかない?
関数作る時にわざわざ一つの引数はIntegerで一つはIntとかせんだろ?
俺は大体全部Intで作ってるから、Integerは即Intにしてるわ。みたいな
2017/09/22(金) 17:09:55.82ID:ig88NjIH
>>643
そのファイルだけではなく、他にもあります。
grepかけてみてください。
2017/09/22(金) 17:53:28.33ID:ZDWEQPwS
>>619
おっと、型クラスへの罵倒はそこまでだ!
2017/09/22(金) 20:04:54.06ID:yMB3txhD
そもそも人が
型とか、型クラスとか、
パブリック/プライベートとか
ポインタだとか
そういう言語側の都合を意識しちゃ
次世代言語として
ダメだと思うんだけどどう?
2017/09/22(金) 20:08:01.73ID:XD+YRvZx
HaskellやらOCamlやらの型は補助ツールであって言語の都合ではなかろ?
2017/09/22(金) 20:24:36.31ID:yMB3txhD
え〜、でも、そういうのも
言語側が裏で判断して処理してくれればいいじゃん
A.I.でもディープラーニングでもなんでも使ってさ
ハスケルでもエリクサーでも
古いコンピュータ言語の慣習にとらわれてて
全然、次世代って感じしないじゃん
2017/09/22(金) 20:26:22.11ID:eEMHecr4
型がない言語にろくなものはないな…
2017/09/22(金) 20:33:12.38ID:ZDWEQPwS
>>652
型がない言語って具体的に何?
2017/09/22(金) 20:37:05.38ID:b6yHr9//
車の自動ブレーキと一緒で
危険な操作をできなくする方向で言語は進化してきているから
別に古い習慣とかじゃなく、そういう方向へ進化していくものだから
2017/09/22(金) 20:40:16.61ID:b6yHr9//
危険な操作を禁止するといっても
やりたいことが出来なくなっては意味が無いので
その辺の制約の付け方が次世代で評価されるポイント
2017/09/22(金) 21:16:44.42ID:A2XKXMkJ
変な操作を禁止する方向と
変な現象を報告するだけの方向があるぞ

そして両者の存在を認める方向と、相手の存在を禁止する方向がある
2017/09/23(土) 03:41:51.45ID:qWNtk5Ea
むしろ自動ブレーキじゃなくてオートマチック車が
マニュアル車より速くなったとき次世代だと思うな。
2017/09/23(土) 10:32:28.92ID:j6VCxv0o
具体的には?
2017/09/23(土) 10:47:51.80ID:qWNtk5Ea
アセンブラが人間が書くよりCの最適化のほうが速くなったときとか。
2017/09/23(土) 10:48:52.56ID:2jyO0MAw
ほぼもうなってんじゃん
2017/09/23(土) 16:51:55.93ID:sz6/Tcc0
車もDCTの登場でオートマのほうが速くなったな。
2017/09/23(土) 19:13:02.33ID:nrpIGIl5
禁止するだけだともっと糞な方向に行くだけだろう。
規則で禁止しまくった SIer の現状を見ろ。
そうじゃなくてより安全な方向を提示するほうが正しい。
2017/09/23(土) 19:54:26.15ID:2jyO0MAw
そりゃそうよ。次世代と言われてるやつは大抵方向まで提示してるっしょ
2017/09/23(土) 20:21:34.37ID:3qopZopL
米Appleが「Swift 4.0」を公開、以前のコードを修正無しに利用できる互換性モードを新たに導入
2017年9月22日17:10 末岡洋子
https://mag.osdn.jp/17/09/22/171000

Swift 5の目標が確定、新たな発展プロセスを定義
https://www.infoq.com/jp/news/2017/09/swift-5-development-plan
2017/09/23(土) 21:09:08.49ID:3CWlI3/Q
>>653
多分PHPのことを言ってるんじゃないかな。
結局動的言語ってテンプレート文字列使ってプログラミングするのと変わんないんじゃないかと思う。
2017/09/23(土) 23:08:02.02ID:z4fPY7jV
PHPとPerlはもはや門前払いだわ
2017/09/23(土) 23:30:11.90ID:2jyO0MAw
パールは多重ディスパッチ搭載されてるところが割と好き。使ったことないけど
2017/09/24(日) 00:17:35.00ID:ZBUgGWmA
>>647
まだ言ってるよw
2017/09/24(日) 00:33:10.78ID:sQZN3/qk
やけんペェ〜ルとプェチピィ使ってる公害はさっさと処分しましょうね〜
670
垢版 |
2017/09/24(日) 01:03:00.91ID:g+SOx1mh
まー、MT車でもニュートラルにしてブレーキペダル踏んでないとセルを回せない、なんて仕組みになったりしてるしな。
安全性としては進化しつつ、機能・機構としては複雑になったり踏切からの緊急脱出の手段を一つ捨てるといった退化してる。

結局、言語も何が正解かは使う人間と用途次第だろ。

「ポインタを捨てたりNullableとそうでない型すらもわけるのが正しい言語」「型なんて飾りです、キャストすりゃいいんです、電文?unionで解釈しましょう」みたいな言語が相容れうる訳がない。
2017/09/24(日) 09:15:54.71ID:XPNHEl2X
多重ディスパッチわりと好きなんだけど、搭載されてる言語少ないよなあ
2017/09/24(日) 09:18:19.02ID:L7/sMAP/
しかし時系列でみれば新しい言語ほど何かをするための専用の構文が追加される
傾向があって、その専用の構文では「それ」しか出来ない制限があることで
危険なことが出来なくなったり、読みやすくなったりしているのだから
次世代言語とはそういうものだろう
2017/09/24(日) 11:08:39.74ID:fyfssP0K
ちょっと議論が抽象的すぎんよぉ
具体的に行こうぜ具体的に
2017/09/24(日) 11:10:15.91ID:sQZN3/qk
バイナリで語れよ
2017/09/24(日) 15:15:34.52ID:FsQtGtar
>>672
それ自称シンプル言語()のGolangだろ
array、slice、map,chan。全てが専用構文
次世代言語は演算子もメソッド呼び出しだったりするから専用構文は少ないよ
2017/09/24(日) 15:20:28.63ID:0P71vbb3
関数型言語の時代が来る事なんて一生ないよ
2017/09/24(日) 16:49:57.99ID:tjbSkdrA
もうそこまで新しい言語上の概念もないしな。
2017/09/24(日) 18:21:51.74ID:y8Y2Gp0g
COBOL「私を殺すと言ってた言語は、みんな死んだよ」
http://www.nurs.or.jp/~ogochan/essay/archives/5033
2017/09/24(日) 18:23:00.77ID:fyfssP0K
LLVMって第一級関数ないんだよな……
HaskellとはバックエンドにLLVMあるんだけど、どうやって実装してるんだろ?
2017/09/24(日) 18:51:05.70ID:ueXBBIg3
新しい概念がなくても、古すぎて記憶にない概念を蒸し返すだけで十分たのしそうだな
2017/09/24(日) 18:53:11.57ID:fU9iGs3X
>>679
インタプリタで実装できるんだから、極端な話、インタプリタをそのまま埋め込んでしまえばいい。
それをいかに効率化するかは最適化次第だけど、基本的にはエミュレーションだよ。
CPU命令セットとの親和性の高い一部の低レベルな言語を除けば、
コンパイラというのは君が想像してるより非常に複雑でソースからかけ離れたコードを生成するもんなんだよ。
2017/09/24(日) 19:10:03.30ID:fyfssP0K
>>681
いやまあ、せやね。Haskell が吐くアセンブラ複雑すぎてビビったことあるわ
しっかしやっぱりインタプリタ埋め込みかあ。Haskellもそうしてるんだろうか?
2017/09/24(日) 23:54:19.09ID:tjbSkdrA
c/c++ のコンパイラしか知らんけどそんなに複雑なものが必要かね。
あんまりイメージできないな。
2017/09/25(月) 00:13:26.46ID:8jaeeQ+5
C++だってラムダはそれなりに複雑と思うな〜
2017/09/25(月) 00:29:03.12ID:10sBRTwD
ブラウザがDOM操作とかgetとかpostとかするのもインタプリタのように見える
JSをいくら最適化しても複雑なデータ構造はそのままだから
2017/09/25(月) 00:30:46.06ID:Kozaluvh
>>664
まだ仕変とかABIとか言ってるのかよこの言語。
いい加減枯れろよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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