次世代言語9[Haskell Rust Kotlin TypeScript Dart]

■ このスレッドは過去ログ倉庫に格納されています
2018/03/06(火) 10:09:15.60ID:x/Au45rc
スレタイ以外の言語もok

前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1512137301/
2018/03/16(金) 09:48:10.52ID:ooeu0A1b
支持率改竄が愛され陰謀論ナンバーワン
2018/03/16(金) 20:00:27.38ID:ZX5ucnyZ
>>231
オマエが馬鹿だろ。死ね
2018/03/16(金) 20:38:34.09ID:4KsfexYH
Cより速いを名乗るには、C言語では吐けないアセンブリパターンを吐く必要があるはずだが
現実にはバックエンドが同じなんでC言語でも再現可能だからなあ
(処理系固有のattributeやpragmaを書き足す必要がある場合も多いだろうけど)
2018/03/16(金) 21:14:11.01ID:sL/r1GAp
そこでmasmですよ。
2018/03/16(金) 21:27:41.47ID:r/T+njCz
現行バージョンのメジャーなライブラリでもmalloc/free (new / delete) が結構遅いから
rpmalloc 辺りを使うコード吐くだけで「処理によっては C より速い!」が実現できる気もする
2018/03/16(金) 22:03:02.48ID:bARX2ip1
非標準のライブラリを使ってはいけないとかCが遅くなるルールを何個か追加すればいい
他にも、変更されたら困るデータはコピーを取る手間がかかる
immutableを保証すればその手間がないからCより速い
2018/03/16(金) 22:48:15.19ID:r/T+njCz
そう言われてみると他のスレッドからアクセスされないメモリ/オブジェクトは
スレッドローカルなプールからアロケートするとか
その他のロックも省略できるとか色々最適化の余地あるな
2018/03/16(金) 23:45:02.47ID:pyLfI6yU
*2が勝手に足し算に変わるとか、そういう最適化を勝手にやってくれてるな
あとはどうあがいてもプロが最適化したCに勝てるわけがないし、素人が適当に書いたCと素人が適当に書いたnimのどっちが速いかだな
2018/03/17(土) 00:00:18.49ID:Fbe/Dv6l
>>385
前時代的の異物、死ね。
速度の必要な部分だけを切り出して、それだけをアセンブリコードにすればいいだけ。
2018/03/17(土) 00:01:17.17ID:Oh0Aao6E
>>385
>>374のリンク先の記事はある程度参考になると思う
2018/03/17(土) 00:02:21.86ID:a9tSZ89y
なんで死ねって言われたのか理解できない
アセンブリコードまで自前で書くほうが前時代の遺物感強いと思うけどなあ
2018/03/17(土) 00:44:26.42ID:Fbe/Dv6l
>>388
理解できないなら、死ねばいいだけ。
2018/03/17(土) 01:00:08.76ID:aJVXG6RF
Cに代わる次世代言語はアセンブラやC、C++で書かれた
高速な実装を呼び出す1行のコードが書ければ十分ってことだろう。
そうしてそれがわからないなら死ねばいい、と。
2018/03/17(土) 01:12:32.40ID:U1WdVkRs
普通に考えたら高速な実装を書ける言語がアセンブラやC、C++だとすれば
Cに代わる次世代言語も同じように高速な実装を書けなきゃ代わりにならない
2018/03/17(土) 01:36:41.05ID:Z+moL2ES
その普通に考えるってのが前時代的だな
スピードではなくフライングで勝つサイコパスのような考えができない
2018/03/17(土) 01:53:39.29ID:a9tSZ89y
Nimは速い上にCよりずっと楽に書けるんだが
2018/03/17(土) 02:01:20.25ID:U1WdVkRs
>>392
ということは最近は「代わり」は置き換え可能な存在という意味ではなくなったんだね
それなら前時代的と言われても仕方がない
2018/03/17(土) 10:06:45.76ID:wWRkBHq+
まあ最近でも低レイヤーの仕事としてGPUのアセンブラチューニングって話はあるけど、
どうせユーザー側なら言語とか関係ないけどね。
結局どんな言語使ってもどうせライブラリ呼ぶだけのお仕事でしょう。
396デフォルトの名無しさん
垢版 |
2018/03/17(土) 10:13:19.41ID:btDjh9Sw
Clojureの話する?
2018/03/17(土) 10:17:40.12ID:zOFcLIxk
プロが本気で書いたCに勝つのは無理だろ
でも最適化しやすくして読みやすく書いてもプロが本気で書いたC並の速度出る言語なら…
2018/03/17(土) 10:47:29.26ID:/AWOYA6X
なんで速さの勝負になるかよく分からんし
速さしか考えないならCは中途半端やろ
2018/03/17(土) 10:59:08.85ID:Z+moL2ES
>>394
バグを正解に置き換えるならいいが、バグではないものをその1bit棒で叩くのは危ない
2018/03/17(土) 11:18:24.87ID:Z+moL2ES
immutable云々はデバッグ目的で使えるからCを置き換える可能性はある
速さはおまけ
2018/03/17(土) 11:46:47.41ID:4zm/Hii4
強力なおまけは魅力的ね
2018/03/17(土) 13:48:58.28ID:VXA170pJ
これまでどれだけの言語が
「Cと同等!」、「Cを置き換える!」って言って来たことか。
403デフォルトの名無しさん
垢版 |
2018/03/17(土) 14:38:29.12ID:6EPcIvNf
Nimの特徴はC並みの実行速度でCより手軽に書けることですか…
なんだかGoとキャラが被ってる気が…
Nimって生ポインタ扱えるの?
2018/03/17(土) 14:48:40.03ID:TnL0M0fs
でもCより速いVM言語とかあるし。
2018/03/17(土) 14:57:44.26ID:4zm/Hii4
NimはどっちかというとOCamlに近い存在だろ
Cの置き換えは狙ってねえよ
406デフォルトの名無しさん
垢版 |
2018/03/17(土) 15:27:21.87ID:6EPcIvNf
OCamlか…そういえばそんな言語あったなぁ
あれもモダンなコードが書けるうえにC並みに速いって話を聞く
Rustのコンパイラは初めOCamlで書かれていたということは知ってる
聞く限りにはかなり良さそうなのに全く普及する気配がないのは何故?
2018/03/17(土) 15:27:38.42ID:Nmk4+afD
実行状況に応じて実行しながら最適化ができるから原理的にはVM言語のほうが速くなる
まあその理屈だとインタプリタが最強なわけだが
2018/03/17(土) 15:49:23.67ID:4zm/Hii4
なんか知らんけどこのスレには熱心なOCamlアンチがいるよな
409デフォルトの名無しさん
垢版 |
2018/03/17(土) 15:57:42.27ID:6EPcIvNf
なんか知らんけどこのスレには熱心なRustアンチもいるよな
2018/03/17(土) 16:24:52.64ID:QOkOyKQG
おるな
2018/03/17(土) 18:15:28.10ID:zOFcLIxk
>>403
Goは遅いぞ
2018/03/17(土) 18:36:45.18ID:/KW2HbwM
言うほど遅いか?
2018/03/17(土) 18:40:43.08ID:zOFcLIxk
>>412
Cとかと比べたらね
「速い」ってほど速くはない
2018/03/17(土) 18:44:17.42ID:zOFcLIxk
JVMよりちょっと速いレベルでしょ
一般的な用途では十分だけど
2018/03/17(土) 18:59:01.64ID:4zm/Hii4
そんな十分とか言い出すなら俺なんかPythonの速さでも十分だわw
2018/03/17(土) 19:14:57.81ID:EY8EOa8A
>>407
「実行状態を調べて最適化」なる余分な仕事の分だけ遅くなる
最適化でそのオーバーヘッドを取り戻せるかどうかは自明ではない
417デフォルトの名無しさん
垢版 |
2018/03/17(土) 19:40:49.75ID:/yJWANaR
>>390
あー。つまり、シェルスクリプト。
2018/03/17(土) 19:58:26.68ID:4zm/Hii4
シェルスクリプトは次世代言語だったのか……
419デフォルトの名無しさん
垢版 |
2018/03/17(土) 20:03:43.73ID:/yJWANaR
#!/bin/sh

ls

もう、これだけでCで書かれた超高速なlsが実行される。
2018/03/17(土) 20:12:06.50ID:4zm/Hii4
シェルスクリプトが次世代言語とは流石に分からんかったわ
死ななきゃならんのか……
2018/03/17(土) 22:19:21.09ID:jxvv8BHS
サイコパスあるある
死傷者が出ても見て見ぬふりをする
2018/03/18(日) 01:12:13.80ID:b+jeKp+S
Cに変わる言語は遅い部分をCで書いて"代替"するのか…
2018/03/18(日) 02:11:42.71ID:cPcsfedK
速い遅いよりも矛盾をなんとかする方が重要だ
もし速さを優先して矛盾を野放しにしたらどうなるか全く予測できない
2018/03/18(日) 02:55:12.96ID:zE4QVnSy
こりゃまた難しいのがきた
425デフォルトの名無しさん
垢版 |
2018/03/18(日) 03:18:03.86ID:GxVko3yL
同じC言語でも速さに違いが出るのに
2018/03/18(日) 11:11:10.49ID:cPcsfedK
ソフトだからね
なんで同じソフトが違うハードで動くのかという説明から始めないといけないかも
2018/03/18(日) 14:10:28.16ID:9iYD44BB
Cの良さは
変換される機械語との違いが滑らか
それでいてメモリ部分はある程度抽象化してくれている。
てなところなんでないかね。

他の言語は「変換される機械語との違いが滑らか」を無視しすぎてる。
2018/03/18(日) 14:13:46.06ID:fKWd4mcG
先ずはそのよく分からん「変換される機械語との違いが滑らか」を定義するところからガンバレ
2018/03/18(日) 14:27:58.24ID:JHP9/eea
セマンティックギャップの話かな
2018/03/18(日) 14:33:49.99ID:E4zJaTX6
なんやなんやGoの悪口かいな?
2018/03/18(日) 14:36:05.49ID:9iYD44BB
わからんのなら絡んでくんなよ。
自分でコード書いて gcc -S でコンパイルしてみろ。
2018/03/18(日) 15:11:52.29ID:ewHMGPnU
説明できないのね
2018/03/18(日) 15:20:21.22ID:RiuyGRlC
言語を1個2個と数える時点で滑らかさが足りない
C/C++は1個なのか2個なのか定義できないところが面白い
2018/03/18(日) 15:30:05.63ID:95A2sExk
言語を1個2個と数える

頭の中で考えていることの正しさ云々はさておき、
他人と話が通じない人は対話を試みないでくれ
2018/03/18(日) 15:48:06.10ID:jQGugCpv
「エレガントなコード」みたいな話?
2018/03/18(日) 15:50:34.37ID:RiuyGRlC
>>434
サイコパスじみてきたな
お前みたいなのが次世代だよ
2018/03/18(日) 17:00:52.16ID:2o82+Dxy
https://ziglang.org/
Dスレにあったzig
こっちのほうがCのヘッダーを直接使える分c2の名前にふさわしい
2018/03/18(日) 17:11:21.46ID:sSGcrtJx
そのうちzagが出そう
2018/03/18(日) 17:22:37.12ID:2o82+Dxy
まあ、ドキュメントを読む限り未完成っぽいんだよなあ
c2もそうだけど
440デフォルトの名無しさん
垢版 |
2018/03/18(日) 19:21:34.04ID:bcfd9xTZ
Life Inside China's Total Surveillance State

新疆ウイグル自治区は中国国内の監視体制の巨大な実験場と化した。最先端テクノロジーで常時監視される人々の生活
https://www.youtube.com/watch?v=OQ5LnY21Hgc


中国企業の端末やアプリを使っていると日本人も中共に監視されているのと同じ
441デフォルトの名無しさん
垢版 |
2018/03/18(日) 20:43:37.23ID:enUduEc8
Haskellブームは終わったのだろうか。
2018/03/18(日) 20:55:54.48ID:ojW1vPJY
>>441
C++ の江添氏が新たに始めた、というくらいだから、水面下で脈々と支持層を広げていっているに違いない
2018/03/18(日) 22:16:49.47ID:vUL4g3CK
水面から出たら起こしてくれ(スヤァ…
2018/03/18(日) 23:32:14.22ID:Eey0KM1h
OCamlより遅いやん?
2018/03/18(日) 23:59:48.70ID:ksiDZyZW
>>444
絶望的に頭悪いな。
IT系の仕事は辞めた方がいい
2018/03/19(月) 00:13:58.89ID:QoeeCiYG
>>444
遅くて不便な言語が流行る
→ C++で書き直す需要が生じて業界が繁栄
この流れ大切
2018/03/19(月) 00:24:03.98ID:P7gHkF5x
頭良い人間の気持ちや陰謀を勝手に忖度して勝手に言語化してるように見える
自分の言葉ではないし自分の頭で考えてないだろ
2018/03/19(月) 00:34:26.02ID:lFWK67Qs
>>447
その内容どれが当てはまるの?アンカーつけて
2018/03/19(月) 00:47:57.84ID:P7gHkF5x
架空の頭良い人間の気持ち (>>445) や陰謀 (>>446)
450デフォルトの名無しさん
垢版 |
2018/03/19(月) 00:55:58.20ID:pEbY2e08
Haskellの誇大広告のおかげで関数型全般が胡散臭くなった。
2018/03/19(月) 06:34:05.14ID:3pEfrTg9
ずっと前はてなブログやQiitaでHaskellを崇めてた人全員Haskellで特に何か作ることもなく他の言語に移って行った説
2018/03/19(月) 07:09:28.84ID:TWWfpY71
OCamlはなんで演算子は多重定義できないのか結局ようわからん
2018/03/19(月) 07:31:36.71ID:uweaBiN7
アドホックポリモーフィズムは邪教だから。
2018/03/19(月) 08:19:54.52ID:nlNc4C3i
Stack Overflowが2018年の調査結果を発表。一番使われている言語はJavaScript、一番好きな言語はRustに
http://www.publickey1.jp/blog/18/stack_overflow2018javascriptrust.html

今回、Stack Overflowでは「好きな言語」の調査結果も発表しています。

トップとなったのはRust。2位がKotlinで、Python、TypeScript、Goと続きます。

1位がRustとなったのはその知名度からするとやや意外な気がしますし、
2位のKotlinは昨年2017年5月のGoogle I/O 2017でAndroidの正式な開発言語となったのがきっかけで注目され始めたと言ってもいいので、急速に人気が上昇していると言えるでしょう。
2018/03/19(月) 08:27:35.84ID:TWWfpY71
>>453
(+)は ’a -> ‘a -> ‘aじゃない
割に(=)は’a -> ‘a-> boolなんだよな
便利だからいいけど
2018/03/19(月) 09:44:30.00ID:P7gHkF5x
演算子だけでなく定数にもアドホック多相がある
例えばπがfloatにもdoubleにもなるとか
2018/03/19(月) 12:21:13.21ID:dH7nnHk9
>>454
Rustの一位が意外って…
これ書いたヤツ去年と一昨年のランキング見てないのかな?
2018/03/19(月) 12:40:57.38ID:P7gHkF5x
mozillaやgoogleを学閥か何かのように考えているのかね
おまえどこ中だよって
459デフォルトの名無しさん
垢版 |
2018/03/19(月) 13:07:46.72ID:pEbY2e08
つまり組織票が存在する。
2018/03/19(月) 13:21:48.40ID:P7gHkF5x
じゃあPython Go Kotlinの3つが1つにまとまったら組織票?が約3倍になるのか
そうだとしても、たかが統計のために言語仕様を犠牲にするなんてバカバカしい
2018/03/19(月) 19:12:02.46ID:fFp4LVyf
Swiftは死にそう?trySwiftとかは話題になってるけど
マルチプラットフォームなフレームワークが続々登場してるからイマイチかもなー。
正直obj-cのほうが好きかもしれない。違和感なくc++のライブラリが使えるし
2018/03/19(月) 19:35:30.36ID:I7PCjnkp
旧世代言語の話ばっかり
2018/03/19(月) 20:16:40.93ID:lFWK67Qs
>>462
とびっきり最新世代の言語を一つお勧めいただけますか?
回答いただいてから一週間でマスターしてみせます
464デフォルトの名無しさん
垢版 |
2018/03/19(月) 21:07:56.60ID:pEbY2e08
次世代言語織田信長というのがあったはず。
2018/03/19(月) 21:13:56.87ID:lFWK67Qs
>>464
http://www.brl.ntt.co.jp/people/hirata/Papers/on-2000j.pdf 404 NOT FOUND
466デフォルトの名無しさん
垢版 |
2018/03/19(月) 21:18:47.38ID:pEbY2e08
このスレに出てきた各種言語もいずれ404になるんだろうなあ。
467デフォルトの名無しさん
垢版 |
2018/03/20(火) 01:53:46.76ID:/+MVnq9/
>>463
このスレにある程度の頻度で登場した次世代?言語を新しい順で並べるとこうなる

Rust(2015.5)
Swift(2014.9)
TypeScript(2014.4)
Hack(2014.3)
Go(2012.3)
Kotlin(2012.2)
Dart(2011.10) -> Dart2(2018?)
D(2007)
Scala(2003?)
OCaml(1996?)
Haskell(1990)

ちなみに言語自体が発表された時期ではなくVer.1.0がリリースされた時期ね
?がついてるのはWikipediaには1.0リリース時期が明記されてなかった…
変なところがあれば訂正・追記してくれ

Nim, Elm, Juliaに関しては最新がVer.0.~でまだ1.0すらリリースされていない
とびきり最新が良いのならこの3つからお好きなのをどうぞって感じかな?

1.0リリース時期で見るとSwiftよりRustの方が新しいんだな…
D, Scala, OCaml, Haskell辺りは次世代言語と呼ぶにはちと古いかも?
2018/03/20(火) 02:53:37.44ID:LX463VTZ
次世代言語というのは時期だけで決まるものなのか?
typescriptやgoよりも、ocamlやhaskellのほうがよっぽど次世代感あるが
2018/03/20(火) 03:35:46.01ID:/+MVnq9/
>>468
次世代言語をどう捉えるかによるが少なくとも時期を1つの目安にすることは出来るだろ?

それとGoに関しては必要最低限の機能のみを残し
他をバッサリ切り捨てたという点で次世代感があると私は考える
Typescriptに関してはJSを完全に排除しようとするのではなく
JSとの共存を目指したいう点が新しいと考える事も出来る

次世代の定義なんて物の見方によっていくらでも変わり得る
よって、何をもって次世代と定義するかについて1つの結論に
まとめることは出来ないと考えるのでその話はあまりしたくないな

話題提供を目的に書いたので批判ではなく忌憚のない意見や感想を求む
2018/03/20(火) 04:12:48.94ID:geezFnQ4
個人的には広く利用されていないものは次世代とも前世代とも呼びたくない
今であれば C / C++、Java、C#、JavaScript が担っているような用途で
この先使われるような言語を次世代言語と呼びたい
2018/03/20(火) 04:18:48.83ID:LX463VTZ
バッサリ切り捨てた仕様というなら初期のJavaだってそうだし
親言語との共存を目指す派生言語というならObjective-Cだってそうだろ
全然新しくない
2018/03/20(火) 05:07:06.58ID:/+MVnq9/
>>471
何でプログラム以外のところまで抽象化したがるんだ?

初期のJavaの機能が少ないのは必要最低限の機能のみに絞りこんだのではなく
単にジェネリクスもラムダ式もアノテーションも当時はまだ技術が確立してなかったからで
Goのように技術が確立してるのにあえて必要ないと判断して削ったわけじゃない
初期のJavaとは機能が少ないという点で共通しているが機能を少なくした理由は全然違う

Typescriptに関しては共存という言葉を使ったのが誤解を招いたようで悪かったが
トランスパイルした結果のJSコードの可読性にまで気を配って作られているという点でCoffeeScriptとは違う
つまりトランスパイル後のコードの可読性にまで気を配っているという点が
今までのトランスパイル系の言語とは違う全く新しい部分だと言いたかった

行きすぎた抽象化は時に大事な情報までも削ってしまうということを頭の片隅に置いておくべきかと…
2018/03/20(火) 05:46:21.35ID:LX463VTZ
何言ってんだ。Javaの登場した1995年には貴方の表でも既にHaskellがあって
C++でももう<algorithm>があってbind1stとかやりまくってたぞ
トランスパイル後の可読性なんてそれこそ無数のプリプロセッサが気を遣ってきただろ
CoffeeScriptのことは知らんが、遠い過去にあった素晴らしい処理系のことは忘れて
近い過去にあった特定のゴミを超えていればいいという話なのか?違うでしょ
2018/03/20(火) 06:15:12.86ID:/+MVnq9/
>>473
1995年に既にHaskellは存在していたが1995年当時のHaskellに今ほどの知名度はないよね
知名度のない言語の技術はまだ確立していない技術と同義だ
あと今さらだけど初期のJavaとGoって言うほど同じじゃないよね
Goは例外も継承も削ってるし、interfaceだってGoとJavaでは名前が同じだけで別物だし
あとC++のテンプレートとJavaのジェネリクスは似て非なるものだ
同じものとして扱われても困る
プリプロセッサーとトランスパイラーも別物だよね…
最後の一文だけは同意するが…その他はこちらとしても「なに言ってんだ?」状態なんですが…
2018/03/20(火) 06:25:50.52ID:/+MVnq9/
追記
プリプロセッサーって可読性に気を使ってたの?それは知らなかった
あんな読みにくくてプリプロセッサー通した後のコードが想像できないもの
可読性なんか一切考慮してないものだと思ってたわ
2018/03/20(火) 06:30:44.46ID:LX463VTZ
あ−、1995年だとC++は標準化前だからちょっと言い過ぎた
当時は独自のテンプレートライブラリも林立してた
2018/03/20(火) 06:34:07.57ID:eQ1biRix
技術が実在したのは客観的事実だからなあ
ユーザーに情報が伝わらなければ実在しないのと同じという理屈を受け入れてしまったら
情報を操作すれば客観的事実をいくらでも改竄できることになってしまう
2018/03/20(火) 06:36:41.10ID:LX463VTZ
>>474
個々の機能のことを言ってるんじゃなくて、当時の目新しいあれやこれをさっくりと無視して
絞り込んできたのが登場時点のJavaの立ち位置だったということ
時代が違うから絞りこまれた結果も違うが、コンセプトとしては似たようなもんだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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