次世代言語議論スレ[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/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とか言ってるのかよこの言語。
いい加減枯れろよ
2017/09/25(月) 01:47:53.39ID:/lG4wgeA
ポストC++としてはD言語が最適だわ
やっぱnullは便利
2017/09/25(月) 10:51:28.03ID:8jaeeQ+5
Dは指針に欠けていて、書けるコードの種類が多すぎる。
最近はクラスは使わないとか言われた時はビックリしたわ。割と好きだけどさ

テンプレートとオーバーロードの充実っぷりはC++の比じゃないし、プロパティあるし、UFCSある所とか好きだけど、演算子の定義を構造体中に書かないといけない所だけは解せない
2017/09/25(月) 12:10:20.51ID:Vj0qyvjj
>>679
llvmのレベルでクロージャー定義されたらつぶし効かなくなるだろ
llvmにそれを期待するのが間違ってる
2017/09/25(月) 12:40:19.83ID:8jdzqYUG
>>689
期待はしてないぞ。ヒープに関数を展開する機能がないのに、どうやってヒープに関数を展開してるんだろう?って疑問を覚えているだけだぞ
2017/09/25(月) 12:54:44.69ID:Vj0qyvjj
>>690
llvmを持ち出す意味がわからん
cで実装されてる関数型言語はどうやってクロージャー実現してんだろ?とか
jitってどうやったら実現できんだろ?
という疑問の持ち方ならわかる
2017/09/25(月) 13:05:30.42ID:8jdzqYUG
>>691
「Cで実装されてる関数型言語はどうやってクロージャを実装してるんだろう」でもほとんど同じ意味だけど、別にLLVMでもいいじゃん。俺がLLVMの方を意識してるからLLVMって書いてるだけだが

Jitの方はよくわからん。関数型言語一般でJit使ってるの?
2017/09/25(月) 13:25:06.64ID:X0v0rcqt
すごい素朴には
class {
unsigned int eax;
...
void add();
...
}
みたいなアセンブラ実行クラス作ればできんじゃないの?
2017/09/25(月) 15:00:43.13ID:AJsPQEJa
そもそも関数を動的に生成する必要はない
クロージャは環境を引数に取る関数として実装するのが普通だ
2017/09/25(月) 15:37:00.33ID:C5otDHV+
動的に関数を作るのはコンビネーターで結合させるんだろ。
2017/09/25(月) 15:40:30.80ID:AszBb3kH
その前にまず再帰関数で100の階乗を計算すればいい
関数を100個作るやり方とは違うやり方がわかる
2017/09/25(月) 20:30:11.80ID:Vj0qyvjj
>>692
単なる疑問ということはわかった
物理cpuとそのabiを扱うことを前提にしてるllvmと
λ計算を理論的基礎にしてる関数型言語とでは
メモリモデルが全く違うんだからいきなりマッピングを考えるのは
無理があるとだけ
2017/09/26(火) 00:58:41.50ID:PCoWV6xx
ハスカルデスクトップソフト作れるようになった?
2017/09/26(火) 13:49:21.20ID:3DlL6rrx
だからそれは
データは制御フローに影響を与えるし
制御フローはデータに影響を与える
このように双方が影響しあってプログラムが展開していく
(まるで電磁波のようだ)
この複雑性はソフトウェアが有用であり続けるためには仕方が無い

なので
・制御フローがデータに何か書き込むタイミング
・制御フローがデータを読み取って分岐するタイミング
の二つをトラップして言語やシステムで何かサポートしてやろう
というのが基本的な考え方なんだよ
2017/09/26(火) 14:35:36.67ID:dFfa0kvi
制御フロー?は座標系や文字のエンコーディングに影響を与えるやつですか?
エンコーディングに依存しないデータが欲しいです
2017/09/26(火) 16:08:19.45ID:hWBvxAV0
つまり、いつ実行するか?今でしょ。
ということだな。
2017/09/26(火) 21:28:19.34ID:ghZl2iPU
マイクロソフト、量子コンピュータ向けプログラミング言語を発表 https://ndjust.in/t7GAzsXB

俺の予測したとおり次世代言語は機械学習に最適化された言語ってことだな
703デフォルトの名無しさん
垢版 |
2017/09/27(水) 05:16:13.47ID:phMqkxHz
どうせ博士クラスの研究者しか扱えない代物なんでしょ?
2017/09/27(水) 08:06:15.29ID:RgM5LnyS
この中に1人だけ、量子コンピューティングと機械学習を混同してドヤってるバカがいます。
2017/09/27(水) 08:58:09.74ID:iTQClNYA
>>704
相手にしてるお前なんなん?
恥ずかしいからやめて。

量子コンピュータの用途が何%機械学習を経由するであろうか、お前は全て見通しているとでもいうのか?
お前のその自己矛盾に気づかない頭の悪さよりよっぽどマシな発言だと思うが。
2017/09/27(水) 09:00:05.94ID:iTQClNYA
そして俺はそんなアホを相手にするアホ以上の何者でもないことは断っておこう。
2017/09/27(水) 09:43:14.65ID:VJzN3SRS
少なくとも今現役の量子コンピュータは機械学習専用ってくらい
それくらいしか使いみちがないと思うんだが。
他の用途で使えるの?
2017/09/27(水) 09:48:07.08ID:iTQClNYA
>>707
単独の最適化問題って機械学習関係あるの?
2017/09/27(水) 09:49:46.52ID:S3cenggq
別に今使ってるパソコンが量子コンピューターに置き代わっても
処理速度が向上してうれしいだろ。
2017/09/27(水) 10:00:45.88ID:ihq9cuYE
バイナリ変数の二次多項式の最小化しか解けないのだが。
2017/09/27(水) 10:36:08.63ID:S3cenggq
日本人は量子コンピューターのなかで機械学習をやってるように物事をみるが
西洋人は機械学習を量子コンピューターでやっているようにしか見えないらしい
2017/09/27(水) 13:42:52.32ID:t1YPNFYO
機械学習やりたいからやってるだけの人の気持ちがわからない
わからないなら真似しなければいいのに
量子力学上の理由で機械学習をやってるという設定で人の真似をするモンスターがいる
2017/09/27(水) 17:06:07.52ID:BP44oxnY
結局は大きい部屋を占領する量子コンピューター(冷却の都合で小型化困難)で
端末から2進数コンピューターのエミュレーションさせてそうw
2017/09/27(水) 18:07:06.65ID:7dA/9JOQ
これだけ過去の資産であふれかえってたら
そう簡単に移行できないね
2017/09/27(水) 21:35:28.14ID:Z//p6YWO
お前らずっと型型うるさいな。だまってSmalltalkかjsかRuby使ってろよ。
そんなんじゃrustで発狂するぞ。

>>649
>パブリック/プライベートとか
カプセル化が幻想だっていい加減気付いてほしい。
有用なのも抽象データ型だけだし。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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