18/03/06 21:40:19.40 MoZw2NXu.net
c++ならクラスのメンバに情報持たせて、メソッド使うことでクロージャぽいものはできるけど。
13:デフォルトの名無しさん
18/03/06 21:45:38.71 DG7WbBnA.net
λ理論を念頭に置いて実装されたかどうかやぞ
14:デフォルトの名無しさん
18/03/06 22:00:19.48 qto5wiY+.net
c++なら素直にラムダ式使おうよ…
15:デフォルトの名無しさん
18/03/06 22:19:34.09 xvhpcg6j.net
C++ のラムダ式でYコンビネータを記述できるのですか?
できないのならラムダ式などと呼称していいのでしょうか?
16:デフォルトの名無しさん
18/03/06 22:36:28.04 qto5wiY+.net
>>15
2つの話題を勝手に混ぜるな
>>14 で >>12 に安価付けなかったのは俺が悪いけどさ
実行時の環境を用いた関数定義の有無についてc++ならラムダ式を使おうという話をしているだけだ
しゃーねーだろ言語機能としてラムダ式って命名されてるんだから
関数型言語とはなんぞやという話題についてc++のラムダ式を例に挙げてc++は関数型だ!なんて言うつもりは毛頭ない
Yコンビネータに関しては確かできた気がするが
17:デフォルトの名無しさん
18/03/06 22:44:51.87 DG7WbBnA.net
>>16
正論すぎて草
18:デフォルトの名無しさん
18/03/07 00:36:57.39 EDSn5kWw.net
>>4
goって保守的かな?結構攻めてる言語だと思うが。
swiftのほうが断然保守的。
19:デフォルトの名無しさん
18/03/07 00:55:59.65 487L5ZU0.net
>>18
保守的にするという意味で攻めてる言語だな
20:デフォルトの名無しさん
18/03/07 00:59:12.93 JwI5qwvI.net
諦めと開き直りを全面に押し出してくる言語だな、確かに。
21:デフォルトの名無しさん
18/03/07 01:21:30.28 EDSn5kWw.net
goの攻めてるところ。
ライブラリのimportにuriを指定してできるようにしてgithubから直接importできるようにした。
例外を辞めた。
公開、非公開をメンバ名が大文字始まりかどうかで決めるように。
クラスをやめて、構造体だけにした。
インターフェース実装は該当メソッドの有無で決定
といった具合に他の言語の当たり前の部分を壊した。全然保守的とは思えないが。
22:デフォルトの名無しさん
18/03/07 01:26:49.68 EDSn5kWw.net
後は未使用ライブラリのimportをコンパイルエラーにするというのも、他の言語であんまり見ない気がする。
これは、積み重なるとコンパイル時間に影響するから、言語設計にコンパイル時間の考慮を重きにおいている証拠の一つと言える
23:デフォルトの名無しさん
18/03/07 01:27:38.81 487L5ZU0.net
>>21
例外とか構造体はC時代に逆戻りしてるだけだし、静的ダックタイピングは他の言語にもあるし、githubのurl指定は結局色々な問題起きてるし(この間のgo-bind
24:ata騒動とか)、公開/非公開の大文字小文字も気軽に変えられなくて不便だし何のメリットがあるんだ?
25:デフォルトの名無しさん
18/03/07 01:28:30.13 487L5ZU0.net
>>22
他の言語はエラーにはしないけど警告出す
初期の開発中は未使用importエラーも邪魔なだけでしょ
26:デフォルトの名無しさん
18/03/07 01:41:57.73 EDSn5kWw.net
>>23
むしろ、今まで当たり前にあった言語仕様を振り返って本当に必要かどうかを再検討して
削りに削った仕様だと思うけどな。
c++とか触ってたとき、クラスと、構造体って、本当に両方必要か?どっちか要らないだろって思ってたりしたから、
すごくしっくりきた。
27:デフォルトの名無しさん
18/03/07 01:51:00.36 EDSn5kWw.net
>>24
IDE使ってると半自動だからあんまり面倒だと感じたことはない。警告を無視する開発者もいるから徹底したほうが良いんだろう。
linuxカーネルもコンパイルすると警告出てるし
28:デフォルトの名無しさん
18/03/07 01:54:34.87 487L5ZU0.net
>>25
構造体とクラスに関しては個人的に同意
ただ型パラメーターとか例外がないのはありえない
エラー処理は長すぎる。if分岐でチェックとかいつの時代だよ
型パラメーターないせいでDRY原則を破るか型安全を破るかしないといけない
29:デフォルトの名無しさん
18/03/07 01:56:06.25 EDSn5kWw.net
>>23
go-bindata騒動はgo固有の問題でもない。nodeだって似たようなことあっただろ。
30:デフォルトの名無しさん
18/03/07 02:03:48.32 EDSn5kWw.net
>>27
例外いるかな?
tryで包まなきゃいけないメソッドや、関数ってドキュメント読むか、実際に実行するまでわかんなくないか?
言語によっては例外が飛ぶ可能性がある関数かどうかわかるんだっけ?
jsはわかんないから不便。
31:デフォルトの名無しさん
18/03/07 02:08:04.97 EDSn5kWw.net
>>27
結局interface{}使うのかよ的なね。わかる。
俺はコード生成に可能性を見出してる。
goはコード生成フレンドリーな言語仕様だし標準ライブラリに、AST系が揃ってるから
32:デフォルトの名無しさん
18/03/07 02:19:43.98 487L5ZU0.net
>>28
nodeもあったけどnodeの場合はnpmの仕様変えれば解決出来るやん
でもGoはgithubに依存してるから解決不可能じゃん
>>29
それならEither型作ってメソッドチェーンで書けるようにして欲しい
Goのエラー処理は関数呼び出し毎にしないといけないからだるすぎ
>>30
型パラメーターが複雑だから、コンパイル速度に影響出るからって入れなかったのにコード生成しろって矛盾してない?
どっちが複雑だよ。どっちがコンパイル速度に影響出るよ?
33:デフォルトの名無しさん
18/03/07 03:07:39.19 EDSn5kWw.net
>>31
コード生成はプリプロセスとしてコンパイルの度に毎回動かすわけじゃない。stringerとか使ったことない?
inportに関しては、
nodeがnpmの仕様を変えたら解決するならgoもそうすればいいのでは?
現状でも、vendor/もコミット対象にしてしまえば、依存ライブラリを管理対象にできるから
サードパーティライブラリに頼る以上はライブラリ作者の影響をどの言語だって受ける。
34:デフォルトの名無しさん
18/03/07 03:12:09.66 rBtvNRXK.net
Yコンビネータ forall a. (a -> a) -> a のように
forallがつく関数は第一級オブジェクトにならないのが普通だ
総称型がある比較的新しい言語はもう第一級オブジェクトにこだわらない
35:デフォルトの名無しさん
18/03/07 04:31:47.78 Fw456RXb.net
maybe/eitherが無い言語はあまり触りたくないな
36:デフォルトの名無しさん
18/03/07 07:45:36.47 z
37:WLX9kTq.net
38:デフォルトの名無しさん
18/03/07 08:21:04.51 JwI5qwvI.net
Goはマイクロスレッド得意なのはありがたいな。
あとチャンネルと。
そして静的リンクがデフォ。
これだけで、Go使う価値あると思ってる。
39:デフォルトの名無しさん
18/03/07 09:16:51.01 L0uTy1l9.net
>>35
WEBサーバ: go,php,ruby,java,Elixir
IOSアプリ:swift,dart
Androidアプリ:java,kotlin,dart
WEBクライアント:JavaScript,elm,TypeScript
cliツール:go
どこにrustが入る?
40:デフォルトの名無しさん
18/03/07 09:50:59.47 vL0QsqKL.net
Rustは生ポインタが使えるし、C ffiが比較的容易に可能、そのうえwebassemblyにまで対応してる
>>37以外にも組み込み、OS、ドライバ、デスクトップアプリ等どこにでも入ろうと思えば入れる
C++の後継を目指してるだけあってかなり万能な言語ではあるんだが
問題は普及するかどうか…
41:デフォルトの名無しさん
18/03/07 10:25:38.57 487L5ZU0.net
>>32
goはgithubに依存してるからgithubの仕様変えないと駄目じゃん
具体的にはリポジトリやユーザーの削除禁止。でもそれは無理だろ?
>>32
毎回動かすわけじゃないけど、変更あったら動かすだろ?
しかもそれは他の言語でも差分コンパイルで出来る
42:デフォルトの名無しさん
18/03/07 10:51:52.29 JwI5qwvI.net
>>39
githubが便利だからgithub使ってるけど、別にgithub以外でも公開出来るし、依存してると言うより多くの人間がgithub使ってるだけでは?
43:デフォルトの名無しさん
18/03/07 13:02:44.71 s6OLNjGp.net
プログラマの労力よりコンパイル速度を優先してるのが謎
44:デフォルトの名無しさん
18/03/07 13:09:33.87 4hpZk16v.net
コンパイル速度が短いとデバッグしやすいからじゃね?
45:デフォルトの名無しさん
18/03/07 13:13:30.69 4hpZk16v.net
cliツールgoってマジ?
46:デフォルトの名無しさん
18/03/07 13:14:29.36 upKMxxIv.net
>>38
Rust嫌いじゃないけど普及しないと思う
今年のロードマップもwasmとCLIとNetwork頑張る、っておとなしすぎだろ
いろいろできるならもっとぶっ込んで来いやゴルア ってね
47:デフォルトの名無しさん
18/03/07 13:19:03.34 lIV1PIoV.net
Googleが採用しなかったDartよりはMozillaが採用したRustの方が将来性はあると思う
48:デフォルトの名無しさん
18/03/07 13:45:40.70 MMWrPDHz.net
>>37
ウエッブサーバ: rust
他のサーバ: rust
ウエッブクライアント: rust
CLI: rust
49:デフォルトの名無しさん
18/03/07 13:53:35.83 L0uTy1l9.net
>>41-42
その辺の話は
URLリンク(talks.golang.org)
に書いているけど、
Google社内の巨大なソースのコンパイル時間が45分とかかかるようになっちゃって
なんとかしないとという流れで始まったって書いてる。
つまりGoogle以外で恩恵を得る可能性は低いな。
50:デフォルトの名無しさん
18/03/07 14:07:05.01 vL0QsqKL.net
>>46
一応マジメに返しておくと現状webクライアントはrustだけじゃダメだよ
現状ではまだwebassemblyでDOM操作はできないし他にも出来ないことは沢山ある
webクライアントにはRust+JSの組み合わせが必須になる
ただし、Rustのマクロ使ってRustの中にJS書いてビルド時にwasmとJSを両方吐きだして
無理やりRust onlyを実現してるstdwebとかいう先進的?なフレームワークも存在する
あのクレー�
51:g発見したときは「こいつ天才かよ?」って思った
52:デフォルトの名無しさん
18/03/07 14:22:34.19 L0uTy1l9.net
Rustは気になるけど、さわるモチベーションとなるキッカケがないんだよな。
FirefoxベースのElectronとかでて直接レンダリング部分をrustでいじるようなライブラリがでたら考えるかな
53:デフォルトの名無しさん
18/03/07 14:54:16.32 2wkQZK0N.net
人気が下降しプログラマの求人も少ないプログラミング言語ワースト10は? 一方で仕事の多い言語は? CodementorXとCoding Dojoの調査結果
URLリンク(www.publickey1.jp)
54:デフォルトの名無しさん
18/03/07 15:25:36.37 n65ilySP.net
jsのファミコンエミュを苦労してrust(→webassembly)に書き直してもぜんぜん速くならないという悲しい現実。
ハマるユースケース少なそう。
55:デフォルトの名無しさん
18/03/07 16:03:24.12 vL0QsqKL.net
>>51
憶測でしがないが、それはRustやwasmが遅いというわけではなくて
ファミコン程度の演算ならJSだろうがwasmだろうがパフォーマンス的には大差なくて
それよりもwasmとJSでデータをやり取りする際のコピーのコストが高くついてるんじゃない?
3Dゲームの演算とかもっと重い処理じゃない限りwasmのメリットが活きてこないんじゃ…
もしくは、将来的にwasmから直接DOM操作ができるようになれば…
56:デフォルトの名無しさん
18/03/07 16:26:53.26 lIV1PIoV.net
GoとRustはバランスが悪いんだよな
ラムダ式とかジェネリクスとかGCがあればこそ手軽に使えるものなのに
GoはGC有るのにどちらも無くて
RustはどちらもあるけどGCが無いから不便
57:デフォルトの名無しさん
18/03/07 16:37:37.77 rBtvNRXK.net
RustにもARCはあるんだろ
まあでもARCはゴミのようだという意見には一理あるわな
58:デフォルトの名無しさん
18/03/07 16:48:10.62 vL0QsqKL.net
>>55
RustにARCがあるってのは誤解を招く恐れがあるので補足
RustではARCは標準ライブラリとして用意されてる
SwiftみたいにARCでメモリ管理してるわけじゃないよ
59:デフォルトの名無しさん
18/03/07 17:13:59.44 8jwTNUb7.net
Rustなんてmozillaに金掴まされた奴しか見向きもしてない何にも使えない言語が
次世代言語とか笑わせんでくれ
60:デフォルトの名無しさん
18/03/07 17:19:05.18 mYeM/2on.net
まだ言ってんのかよw
61:デフォルトの名無しさん
18/03/07 17:35:57.09 8jwTNUb7.net
実際誰がどこで使ってるのか教えてくれ
モジラの金掴まされた企業以外で
62:デフォルトの名無しさん
18/03/07 18:15:46.78 EDSn5kWw.net
googleがxi-editor作ってたり、
後railcarってdocker代替作ってたり。
どっちもあんまり魅力的じゃないないな。
ゲームエンジンがrustで書いたらどうなるか興味ある。
63:デフォルトの名無しさん
18/03/07 18:19:20.11 EDSn5kWw.net
dartを知らない人間がdartに触る例。
URLリンク(youtu.be)
エンジニアのプログラミング実況動画面白いかも。これのrust版ってある?
64:デフォルトの名無しさん
18/03/07 18:50:32.83 8jwTNUb7.net
>>59
1.0出て何年も経ってるのに
その体たらくって時点でお察し
65:デフォルトの名無しさん
18/03/07 19:11:36.71 QbuNtZtf.net
>>59
ゲーム分野もUnityやUnrealでニーズ満たしてるし、それ以外のものは今さら流行らんでしょ
66:デフォルトの名無しさん
18/03/07 19:14:43.72 AePhkh+C.net
>>41
コンパイル速度が早ければスループットが上がるんだから、労力の定義次第だろ。
67:デフォルトの名無しさん
18/03/07 19:15:35.75 487L5ZU0.net
>>59
こいつ反応楽しみたいだけの荒らしだから触れるな
68:デフォルトの名無しさん
18/03/07 19:17:10.88 487L5ZU0.net
>>53
本当これだよな
両方バランスが悪い
ネイティブでバランスの良いKotlinみたいな言語欲しい
Kotlin Nativeはどうなんだろうね
69:デフォルトの名無しさん
18/03/07 20:42:19.89 vL0QsqKL.net
>>53
ラムダ式とジェネリクスはGCとはあまり関係ない機能だと思うが…
特にジェネリクスとGCには全く何の関係も無いような…
70:デフォルトの名無しさん
18/03/07 20:57:01.38 L0uTy1l9.net
URLリンク(taiyaq.com)
Dartの言語ツアーみてるけど、結構言語仕様が辛い。
変数宣言がC由来の「型 変数名」なのがつらい。
GoとかTypeScriptみたいに変数宣言は「変数名 型」にして欲しいわ
あと内部コードがutf16というのが気になる。jsより後発なのにjsと同じ仕様って。
Flutterは良さげなのになぁ。
71:デフォルトの名無しさん
18/03/07 21:02:27.65 ZH5MFU7m.net
RustがC++の代替って枠だと先にも出てる大規模ゲームなんだが、個人やインディーズなら大手エンジンでいいし社内独自エンジンだとこれまでの資産的にツールもゲーム本体も言語変える必要なくない?みたいな所がなぁ
72:デフォルトの名無しさん
18/03/07 21:13:00.74 xaPv5Ark.net
気軽に書くならswiftを使うかな
73:デフォルトの名無しさん
18/03/07 21:18:56.44 L0uTy1l9.net
>>68
rustってc++に絶対勝てないのかね?
メモリ管理を静的に解決できるって不思議なんだけど、もしかしてメモリ節約プログラミングが得意だったらスマホとかIOTでワンチャンあるかもしれん。
74:デフォルトの名無しさん
18/03/07 21:24:30.78 Fw456RXb.net
今rustで書いてるよ、勿論mozilla全く関係無い
映像系のバックエンドでは結構使ってる情報見るけどな
75:デフォルトの名無しさん
18/03/07 21:51:29.88 hDt5Kv7q.net
rustは理論好きで実際はコードほとんど書かないような連中に人気あるだけだろ。
ゼロコスト抽象化カッケーとかそういう層。
76:デフォルトの名無しさん
18/03/07 21:58:39.87 ZH5MFU7m.net
>>70
ヒープ周りは言う程魔法みたいな事をしてる訳ではないよ
どこまでいってもコンパイル時の制限をカッツカツにして開放を保証するって話だし
iotもスマホも(もちろんゲームも)クロスプラットフォームしたくて大変なのにそれぞれc++向けに書かれてるsdkラップする?っていう
オープン規格やらそういうsdkがrust向けを公式で出すようになれば採用も出てくるとは思うけどね
77:デフォルトの名無しさん
18/03/07 22:05:41.69 hDt5Kv7q.net
メモリ解放のタイミングが分からなくなるっつーのは基本的に
インスタンスを共有してる変数がいくつもあるから
ってのがrustの主張の根幹でしょ。
78:デフォルトの名無しさん
18/03/07 22:21:07.09 zWLX9kTq.net
わたすもrustで書いてるよ
webだけど
メインブラウザがファイヤーフォックスだからモジラの手先かもしれん
79:デフォルトの名無しさん
18/03/07 22:26:35.72 4hpZk16v.net
まあrust使ってる時点でモジラの手先だしな
80:デフォルトの名無しさん
18/03/07 22:26:48.78 rBtvNRXK.net
実行時に参照カウントを増減するのは、実行しないとわからない場合だけにしろ
コンパイル時にわかることを実行時にチェックするな
これはRustだけでなく静的型がさんざん主張していたこと
81:デフォルトの名無しさん
18/03/07 23:11:58.32 LhUqstRW.net
>>1
Dartとかいう完全死産のゴミ言語をスレタイに入れるな
おまえほんっとセンスねーなバーカ
82:デフォルトの名無しさん
18/03/07 23:22:26.51 TWVUeb1Y.net
Dart2で再始動って言ってるからDart4くらいで良くなるんじゃねw
Flutterはちょっと気になってる
83:デフォルトの名無しさん
18/03/08 00:02:08.17 XFDvKJyj.net
>>47
これでコード書く時間が逆に増えたらウケるな
84:デフォルトの名無しさん
18/03/08 00:11:20.59 XFDvKJyj.net
>>79
死んでしまったAngularちゃんの悪口はやめろ
85:デフォルトの名無しさん
18/03/08 02:29:26.18 to5KOUcv.net
>>79
内部文字コードがutf16とか変数宣言がいまいちとか結構辛い。
flutterとdartを分離してTypeScriptから使えるようにしてくんないかな
86:デフォルトの名無しさん
18/03/08 12:46:52.68 XQ95i3sC.net
>>72
あーわかる超わかる
トイプログラムだけ書いて満足する奴のための言語みたいな
87:デフォルトの名無しさん
18/03/08 12:54:28.13 XQ95i3sC.net
>>71
結構使ってる情報見る(ソースなし)
88:デフォルトの名無しさん
18/03/08 13:26:45.90 f+gZIHDW.net
>>83
個人が趣味でやってるプログラムなんてどんな言語だろうが大体そういうものだろ
別にRustで書いてる奴に限った話じゃない
89:デフォルトの名無しさん
18/03/08 13:27:26.60 f+gZIHDW.net
本格的なものを作ろうとすれば企業が関わらざるを得なくて現状ではどの企業もまだ様子見状態ってだけ
むしろGoogleがRustで実験的にエディタを作ってるってことは
Googleも採用を検討するくらいには注目してる言語ということ
90:デフォルトの名無しさん
18/03/08 13:36:32.00 XQ95i3sC.net
>>86
残念ながらxi-editorは20%ルールの産物で完全に個人のトイプログラムなんですよね
そもそもGoogle社内の公認言語にRustなどという腐ったものは存在しない
91:デフォルトの名無しさん
18/03/08 13:55:25.73 sd0Mz8U9.net
Goも元々は20%ルールの産物じゃなかったっけ?
92:デフォルトの名無しさん
18/03/08 13:56:46.22 UjKWiNad.net
そだよ
てか、GoはRuby同様ガチ勢に嫌われすぎてて、なかなかカチッとしないね
93:デフォルトの名無しさん
18/03/08 14:07:05.39 XQ95i3sC.net
まじで。Go自体が20%ルールの産物なのは知らんかったわ
Goは初期のJava見てるような時代逆行感あるし、それが嫌われる原因だろうね
初期のJavaよりははるかにマシだけど
94:デフォルトの名無しさん
18/03/08 15:53:31.02 39/jgBm7.net
>>84
Rustアンチ面倒臭い
URLリンク(gihyo.jp)
URLリンク(speakerdeck.com)
95:デフォルトの名無しさん
18/03/08 16:57:24.84 XQ95i3sC.net
ドワンゴや渋みたいな画質最悪回線ptptのプラットフォームの技術()なんて参考にならん
Youtubeとか嗶哩嗶哩とかネトフリくらいのプラットフォームが全く採用してない時点でお察しだろ
96:デフォルトの名無しさん
18/03/08 17:38:09.62 3H4xAb5h.net
アンチのいない言語ってあるんかな?
それって誰が見ても引っかかることがなくて無難で分かりやすい言語ってことだよね。
、、、、C言語かな?
いやーないか。Pythonかな?
97:デフォルトの名無しさん
18/03/08 18:00:05.39 gkfiSzw4.net
>>93
C 言語は基本だよね…
98:デフォルトの名無しさん
18/03/08 18:05:00.88 cve6DJMj.net
マクロ中途半端じゃん
99:デフォルトの名無しさん
18/03/08 18:06:09.58 My+VxY9/.net
Goが嫌われるのは、意識高い系の人間が欲しがる機能をオミットしたからだろ。
欲しがるやつはバカぐらいの事言ってるし。
学者と機械屋が仲悪いのと同じようなもんで。
100:デフォルトの名無しさん
18/03/08 20:42:30.56 Qr0iRnUQ.net
機能をオミットする方向を示しただけでもgoは価値あるよ。
他の言語はバカみたいに機能を追加する方向しかみてなかったし。
101:デフォルトの名無しさん
18/03/08 20:50:41.00 OEgQLKAy.net
採用例提示しろって言われたから東証一部上場企業の採用例をいったらいったでまた難癖つけるね
グダグダ言ってないで自分が使わなきゃい�
102:「だけじゃん それでもニコニコがRustでオリジナルファイルシステムまで作ってあのクソさってのはいろいろ思うところはある よくもまあ10年近くも金をオフパコ会議に突っ込んでろくに鯖の整備もせずに来れたもんだ
103:デフォルトの名無しさん
18/03/08 20:53:13.13 39/jgBm7.net
FacebookのMononokeとかも除外なのかな
有名所が軒並み使わないと認めないんだろうな、いやそれでも否定するか
104:デフォルトの名無しさん
18/03/08 21:19:24.31 3H4xAb5h.net
>>96
オミット大事だよね。バージョンを重ねていくと機能追加しかできないから
最初の機能は絞ったほうがいい。
Goにはきっと既存にはない独自発想のジェネリクス的な物が搭載されるであろう。
賛否両論なやつが。
105:デフォルトの名無しさん
18/03/08 21:38:40.38 EsrBfKCX.net
>>100
「例外を無くした。あれは大域ジャンプだ。行き先の見えないgotoだ。
フローが無茶苦茶になる、複数の戻り値返すから各自チェックするように。
複数の戻り値返せるからマジックナンバーとか返すなよ」
なんて、割り切りというより考え抜いたであろう仕様も、結構叩く人は叩くしな。
ジェネリクス的なものはどうなるんだろう。
正直型でのswitchでだいたい事足りてるし。
106:デフォルトの名無しさん
18/03/08 21:46:19.70 to5KOUcv.net
>>101
関数の引数にinterface{}型が入るのは良くない。これだけは是非とも改善したい
107:デフォルトの名無しさん
18/03/08 21:52:55.87 EsrBfKCX.net
>>102
何で?
コンパイルする時に誤りに気づかないとかそういう話?
void*が渡せるよりも、interface{}は実際には型持ってるからよほどマシな気が。
ジェネリクスしたらすごい数の関数が作られうるし、使い方の問題な気がするけどな。
そもそも継承という概念が希薄だから、ジェネリクスにしても幸せになれないと言うか、明示的に何らかのinterfaceを渡す方がマシだと思う。
Writer受ける関数みたいに。
108:デフォルトの名無しさん
18/03/08 22:31:36.69 to5KOUcv.net
>>103
実行時に解決するのは極力避けたい。
防衛的プログラミングをしたい。
AST系ライブラリを使いこなせるようになってコード生成でもいいけど。
109:デフォルトの名無しさん
18/03/08 22:35:27.75 Qr0iRnUQ.net
テストコード書くのは嫌だってだけだろどうせ。
110:デフォルトの名無しさん
18/03/08 22:37:10.68 bpZjqWPW.net
例えば今、任意のオブジェクトを格納できるコンテナ
(二分木でもハッシュマップでもブルームフィルタでも)
のライブラリを作りたいとしよう
このライブラリに、初期化時に任意の型しか格納できないようにする
まあつまりJavaのList<T>みたいなことをしたいと考えたときに
Goでは型ごとにラッパをつくって実行時に動的にチェックする以外に実現方法がない
これをコンパイル時にチェックしたいという要望は自然と思うが?
111:デフォルトの名無しさん
18/03/08 22:46:42.29 bpZjqWPW.net
つか自分で言ってて思ったがこれinterface{}が悪いとかじゃなくて
単純に高階型が欲しいってだけの話だわ
112:デフォルトの名無しさん
18/03/08 22:51:14.55 to5KOUcv.net
>>105
それもあるけどライブラリを提供するときに引数がinterface{}だとドキュメントに説明がいるでしょ。そういうのが嫌。
113:デフォルトの名無しさん
18/03/08 23:04:06.14 y3Zn8R8X.net
コンパイルが遅くなるので人間が出来る事は人間がやってください
114:デフォルトの名無しさん
18/03/08 23:05:42.03 Qr0iRnUQ.net
>>108
どっちにしろ実行時に起こる現象は説明が必要だろ。
確かに動的だったりテンプレートみたいなもんだと読むのきついなと思うことがあるけど
型で述べられる記述力なんてコード量の割にそんなに豊かな�
115:烽ナもない。 俺は優良なドキュメトとテストコードのが上回ると思ってる。 goのinterfaceと比べて継承の方が入力の範囲を特定する能力は高まるけど、 同時に型情報をどっさりコンパイラと人間に読ませることになるわけだ。 割にあってると思わない。
116:デフォルトの名無しさん
18/03/08 23:10:55.43 yZMqeuJA.net
やっぱり型クラスって神だわ
117:デフォルトの名無しさん
18/03/08 23:12:19.99 bpZjqWPW.net
>>110
Scalaとか見てると気持ちはすごくわかる
しかしせめてコンテナ型くらいは型制約欲しいという気持ちもわかってくれ
118:デフォルトの名無しさん
18/03/08 23:39:44.92 EsrBfKCX.net
>>106
型に階層があるという事が前提になってる時点で、goに向いてないんじゃない?
119:デフォルトの名無しさん
18/03/09 00:31:33.39 IWA+PY9Z.net
"is a" の機能をomitして "has a" とかmixinとかtraitを使う方向
120:デフォルトの名無しさん
18/03/09 00:49:56.76 cqMSJuy/.net
>>110
ちょっと具体例が浮かばなくて適当な説明になるけど
ある引数に io.Reader もしくは io.Writer だけが来て欲しいって場合に
interface{}で一旦受け入れてどっちかじゃなかったらエラーって書くのがしんどいの。
引数にio.Reader | io.Writerって書けるようになれば
どっちかしか来ないことが保証されるからエラーハンドリングのコードが減る。
別に型システムがほしいとかじゃなくて
なんでも受け入れるinterface{}にしてしまう状況を避けたい。
121:デフォルトの名無しさん
18/03/09 04:10:38.55 4sIM9IpC.net
R | W より Or<R, W> が良い
記号を使うと記号アンチがうるさいし、継承と総称型を混同するやつもうるさい
122:デフォルトの名無しさん
18/03/09 07:28:22.67 zhxSKG5B.net
その場合 `Or<A, Or<B, C>>` と `Or<Or<A, B>, C>` の等価性どうする?って話しになるけどね
123:デフォルトの名無しさん
18/03/09 08:17:11.21 kL3iaTSl.net
>>115
そんな気持ち悪い関数嫌だな…。
分けられないの?
124:デフォルトの名無しさん
18/03/09 08:18:50.78 kL3iaTSl.net
>>114
それはもう、今の定義されたinterfaceで充分だとなってしまうのでは?
125:デフォルトの名無しさん
18/03/09 09:19:07.89 Nb7UaI4p.net
せめてパターンマッチくらいは入らんかなあ
型判定のためにifをダラダラ並べるようなコードなんて誰も嬉しく無いよ
:=もあるんだし構文糖衣まで全て拒否してる訳でも無いだろうに
126:デフォルトの名無しさん
18/03/09 10:34:44.49 cqMSJuy/.net
>>118
まぁ例えばだから。もっとぴったり来る例を示せればよかったんだけどね。
関数のオーバーロードも合わせて欲しいな。関数名考えるのがしんどい
127:デフォルトの名無しさん
18/03/09 10:59:00.45 kL3iaTSl.net
>>120
switchは?
128:デフォルトの名無しさん
18/03/09 10:59:28.74 FTtEfiG6.net
>>105
静的型システム全否定だなお前のレス
129:デフォルトの名無しさん
18/03/09 12:12:54.21 sqnwGWQK.net
>>110
ドキュメントが常に最新の状態であることを静的に
保証する方法がない限りは静的型付けの型情報の方が信頼できる
腐ったドキュメントほど有害なものはない
腐らせるヤツが悪いとか言われそうだが
腐らせるのは自分ではなく同じチーム内の誰かだ
他人よりコンパイラの方が信頼できる
130:デフォルトの名無しさん
18/03/09 12:43:31.33 kL3iaTSl.net
interface{}を他の言語のobjectみたいなほんとに雑な受け方と一緒にしないでくれよ…。
実際に書いたら、結構使う場面が限られて来ることもわかるだろ…。
>>121
オーバーロードの禁止ははまあ必要悪だと思う。
型同士に階層が無いので、2種類のinterfaceを受ける関数があったとき、その2つともを実装している型に対して関数が定まらんのでは?
131:デフォルトの名無しさん
18/03/09 12:56:29.64 7FF0Q/q6.net
>>125
してねえよ
コンパイル時の型制約を足したいって話で、機能的にinterface{}への switch t.(type) で十分なのは承知の上
ifが並ぶっていってる奴はたぶんswitchで型判定できるの知らない気がする
132:デフォルトの名無しさん
18/03/09 13:27:20.95 RwDfRr6t.net
仮にGoにジェネリクスを実装するとしたらどこまで必要になるんだろ
共変性と反変性は必要?
部分適用は必要?
C++のメンバ型みたいなのは必要?
133:デフォルトの名無しさん
18/03/09 13:32:11.39 FTtEfiG6.net
>>127
そんな難しいのはいらねーから宣言的に書かせろ
134:デフォルトの名無しさん
18/03/09 15:24:58.40 hv4D8Q9B.net
>>125
object型と同じだと思ってたわ。具体的な違いとメリットを頼む。_φ(・_・
135:デフォルトの名無しさん
18/03/09 16:38:15.55 kL3iaTSl.net
>>129
渡されたものをどう解釈するかの余地が他の言語と結構違う
たとえば、
type xxx struct {}
func (x xxx) foo(){}
func (x xxx) bar(){}
type Ixxx interface {
foo()
}
func (ix Ixxx) bar(){}
があったときに、interface{}で受けたものをアサーションでxxxとすると、xxxのbarが、
アサーションでIxxxとすると、Ixxxのbarが呼ばれる。
あくまで、すべての構造体はinterface{}を満たしているだけで、実際には型を持ってるし、
interface{}とIxxx{}も満たす範囲が違うだけで上位下位ではないし、構造体の型とも違うのでレシーバは別になる。
interface{}から派生したものではないって感じ。
136:デフォルトの名無しさん
18/03/09 17:07:33.29 4sIM9IpC.net
もしかしてswitchに型チェック機能追加したやつが戦犯かな
ただのVisitorパターンならジェネリクス対応は難しくなかった
137:デフォルトの名無しさん
18/03/09 18:13:47.78 kL3iaTSl.net
型チェックでswitchとジェネリクスは全く関係ない。
オーバーロードと同じく、何として処理するかと、その型が何か、に関して曖昧性を排除してるから。
暗黙のキャストも無いでしょ。
戦犯呼ばわりはどうかと思う。他の言語に毒されすぎ。
138:デフォルトの名無しさん
18/03/09 19:09:25.15 kljWqerj.net
Goにオーバーロード無いの批判される事あるけど
HaskellやRustだって型クラスやトレイトを使わないとオーバーロードできないし
TypeScriptも型が多重定義できるだけで実体は一つだし
むしろ最近の言語はC++みたいな単純なオーバーロード付けないのがトレンドな気がする
139:デフォルトの名無しさん
18/03/09 19:11:17.45 dAbxViV8.net
一方Cには_Genericがついた
140:デフォルトの名無しさん
18/03/09 20:41:59.05 lMH5BOjd.net
>>124
ドキュメントよりコンパイラのが信用できるかも知れんが
それ以上にテストコードの実際の動作のが信用できるよ。
c++まともに開発に使ってた奴ならどれほどコンパイラだよりが危ういかわかると思うけどね。
141:デフォルトの名無しさん
18/03/09 20:50:57.42 mtotlLHa.net
コンパイラが頼れないからC++から離脱したがってるわかで……
142:デフォルトの名無しさん
18/03/09 21:48:54.86 OETiniYx.net
>>133
むしろオーバーロードと型推論を共存させたいというのが型クラスの最初の動機だったのでは
143:デフォルトの名無しさん
18/03/09 21:50:23.61 sqnwGWQK.net
>>135
そりゃテストコードが全てのコードに対して書かれていたらの話で
実際にはテストカバレッジ100%なんてあまり現実的な数値じゃない
GUIの場合はテストを書くこと自体がなかなか難しいし、他にも仕様が変わりやすいような
部分は変わるたびにテストも書き直すんじゃ、コストが割に合わないこともある
それらを考慮して、あえてテストを書かないという選択をすることも充分あり得る
静的型付けならテストが書かれていない部分でも型情報からある程度ならチェックが出来る
動的型付けはテストがなければ何もチェックできない
テストを書かない奴はバカみたいな言い分はあまり好きじゃない
テストカバレッジ100%を目指す奴のほうがよっぽどバカだと思う
144:デフォルトの名無しさん
18/03/09 22:24:57.88 mOP6pgpS.net
C++の型安全とHaskellの型安全って随分違うでしょ
理論がしっかりしてて型システムが豊かな方が型安全で提供される品質は高い
Haskellは「コンパイルが通れば大体想定通りに動く」って言われる程度には型を信じれるよ
これが行き過ぎるとIdrisやCoqみたいに「実行できれば仕様を満たしている」みたいな開発もできる
ハードル高いし実用できるほど簡単じゃないからまだ何個かブレークスルーが要るがね
145:デフォルトの名無しさん
18/03/09 22:28:04.16 5gZ3T8dE.net
>>130
残念ながら他言語のobject型とinterface{}の違いがこの説明ではよくわからん。
あんさんは他の言語のobject型を雑な受け方と評したんだぜ。具体的にこの説明では、
なるほど他の言語のobject型で値を受け取るのは雑な受け方だった。って納得しない。
どのへんが雑じゃなくなってるわけ?
146:デフォルトの名無しさん
18/03/09 22:30:56.35 5gZ3T8dE.net
>>138
qiitaの記事でだいたいカバレッジが85%位が理想値でそれを超えるとしんどくなるだけで意味ないってのは見たな。
147:デフォルトの名無しさん
18/03/10 09:17:00.38 iLIqn+zB.net
>>135
C++のコンパイラに頼るのは危ないってのはテンプレートがダックタイピングだからじゃないの?
だとしたら、それは単にC++のテンプレートの仕様がクソってだけの話で
C++のコンパイラがクソって言うのは筋違いだと思うんだけど…
それとも他に理由があるの?
148:デフォルトの名無しさん
18/03/10 09:30:50.15 iLIqn+zB.net
書いた後で思ったけど、
C++のテンプレートってダックタイピングって言われてるけど
きちんとコンパイルエラーになったような…?
使ってたの3年以上前だから忘れた。どうだったっけ?
149:デフォルトの名無しさん
18/03/10 09:57:39.05 X26PuUpn.net
たぶん135は、コンパイラがバグってて出力される機械語が怪しいという話をしてる
別にC++に限った話ではないんだけど昔は結構多かった
150:デフォルトの名無しさん
18/03/10 10:03:15.55 V+AonR8i.net
>>140
うーん。なんにでもなれるスーパークラスで受けてるんじゃなくて、何もかもを満たすインターフェイスで受けてる。
クラスというか構造体同士に階層も無いし、
インターフェイス同士にも無いから。
だから、他の言語でObjectからキャストし直すときに、キャスト先の階層構造を考えなくてもいいし、
むしろどうキャストするか(何がほしいか)で、それに合わせたレシーバを呼んだりできる。
151:デフォルトの名無しさん
18/03/10 10:07:28.98 ZLY5MDI0.net
>>139
なのになぜライブラリのバグがちょいちょい発覚するの?
152:デフォルトの名無しさん
18/03/10 10:47:28.09 wavGSJ3d.net
普通は型の階層を利用したキャストの方が丁寧で
Goのような要件さえ満たせばなんでもキャストできる方が雑なんだけどな
雑なGoに丁寧なジェネリクスは似合わないって話の方がしっくりくる
153:デフォルトの名無しさん
18/03/10 11:47:59.83 BpWzRYHd.net
動的型は丁寧なコードも雑なコードも書けるよ
静的型のキャストは雑なコードだけを集めて濃縮したような存在
154:デフォルトの名無しさん
18/03/10 12:02:58.66 vrfy4Usj.net
型の階層ってのからまず脱却した方が良いところだと思うけどね。
型の階層の横紙破りとしてインターフェイスを作ってさらにインターフェイスも階層を持つとか、goやり始めてから悪手な気がしてきた。
他の言語もmixinとかtraitなんかで色々やってるけど、そういう方向で対応すべきもんなんだと思うよ。俺は。
rubyのようにobjectの親を作る羽目になったり、どのみち破綻する。
型の継承による、と言うが、型の継承に頼ったキャストとしか言いようが無いんでは?
155:デフォルトの名無しさん
18/03/10 12:03:37.10 ysTMLqRd.net
>>145
>だから、他の言語でObjectからキャストし直すときに、キャスト先の階層構造を考えなくてもいいし、
どういうこと?Object型は大抵すべてのインスタンスの親のはずでは?
一度Object型の変数に突っ込んだなら、それってもう実質、動的言語的扱いになるから人間側が元の型を意識しなきゃいけない。
これはGoでもおんなじでしょ?
あと以下は正直どうでもいい話なんだけど敢えて突っ込む。
Goのインターフェースは階層構造を持たないって言ってるけど
も結局用語の違いってだけで実質階層構造みたいなのはあるでしょ。
Io.ReadWriter は io.Writerを内包している
io.Writerはからインターフェースを内包している
Io.ReadWriter => io.Writer => interface{}
他の言語は階層構造を明示しているけどGoの場合はそれがコンパイラによって自動化されているってだけでは?
もちろん自動化されているってのはありがたいけどね。
156:デフォルトの名無しさん
18/03/10 12:07:47.02 XYrxJ2qt.net
>>143
静的ダックタイピングって言われてる
本質は変わらない
157:デフォルトの名無しさん
18/03/10 12:13:23.90 ysTMLqRd.net
>>148
動的型のキャストと静的型のキャストに違いがあるとは思えないけどなぁ。
俺の考え方はこう。
動的型: 人間側で型の追跡を頑張る
静的型: コンバイラ側に型の追跡を任せる。ただしobject型とかに渡すことで人間側で頑張ることもできる。
動的型は基本雑なコードだらけ。人間側が型を決め打ちしてメソッドを実行しないとやってられない。
だって毎回instanceof とかで型をチェックしてからメソッドの実行とかしてないでしょ?
158:デフォルトの名無しさん
18/03/10 12:16:33.64 eUrbDIYn.net
>>152
説明されてわかるような奴が>>148を書くと思うか?
159:デフォルトの名無しさん
18/03/10 12:24:33.09 bKdAMFdx.net
>>150
そんなことないよ。例えばtoStringみたいな、親から生えてるメソッドは、objectのまま呼べて、しかもインスタンスのメソッドが呼べるでしょ。
goはそうはなってないの。インターフェイスをレシーバとする関数が呼ばれる。
内包してないよ。
ReaderはReadを
WriterはWriteを
ReaderWriterはReadとWriteを実装しているインターフェイスなだけ。別のインターフェイス。そこに上位下位は無い。
階層構造が暗黙に決まってるんではなくて、そもそも階層構造を持ってない。
160:デフォルトの名無しさん
18/03/10 12:35:41.84 9xaE30s9.net
なんでもできる c++ で書くなら
なんのメンバーも持たない class interface の直接の
派生型として色んなインタフェースがあるようなもんか
COM に似てるな、というか COM のインタフェースの概念の焼き直しか。
161:デフォルトの名無しさん
18/03/10 12:36:05.42 X26PuUpn.net
ダックタイピングとnominalな階層型の違いを言葉を変えて繰り返しているだけで
問題のinterface{}がobjectより良いという説明にはなってないな
162:デフォルトの名無しさん
18/03/10 12:42:10.90 jPHJ8KIe.net
>>138
別に全部のコードにテスト書けとは思わんが
それでもそこまで引数の型がどうなのか気になるインターフェイスなら
テストコード書けよ。
てかそこまで作業が圧迫してるなら型をガッチガチにやる言語のが
調整する手間考えた場合割に合わんだろ。
163:デフォルトの名無しさん
18/03/10 13:01:42.42 iLIqn+zB.net
>>157
どの程度なら「気になる」のかってところに認識の違いがありそうだな
静的型派の人間は全てコードの型情報が気になっちゃうんじゃない?
少なくとも俺は全ての引数の型が気になってしまうタイプの人間だよ
164:デフォルトの名無しさん
18/03/10 13:02:25.28 BpWzRYHd.net
>>152
動的型のコードは二種類に分けられる
静的型で丁寧に書いてから型を省略したようなコードと
静的型で雑に書いてから型を省略したようなコードだ
165:デフォルトの名無しさん
18/03/10 13:10:46.65 wavGSJ3d.net
「階層を持つから安全にキャストできる」と「安全にキャストできるから階層を持つ」がごっちゃになってる人がいる
166:デフォルトの名無しさん
18/03/10 13:12:51.16 jPHJ8KIe.net
>>158
まあ極論すれば感覚的な話だしね。
感覚として型を気にして助かることなんて 5 % くらいじゃないかと思ってる。
対してテストがある場合は 40~50%くらい助かる。
準備するコストとして型が 10~20 としたらテストは 30~40 といった印象。
なんで個人的にはそこまで型を整備するよりかはテストに時間使った方がいいと考えてる。
まあ抽象論一発で済めば嬉しいって気持ちはわかるんだが
実際そうはならんからね。。
167:デフォルトの名無しさん
18/03/10 13:17:24.66 V+AonR8i.net
>>156
端的に言えば、スーパークラス(と言う概念もないが)にキャストしてして渡してない、as-isで渡してると言うところが違うし大きい。
良いとも言ってないぞ。
違うし混同するなと言ってる。
Objectに相当するものが無いので、良いも何も比較対象ではない。
168:デフォルトの名無しさん
18/03/10 13:21:00.62 CNpckm4H.net
スーパークラスにキャストねえ。
どの言語でもその場合は as-is で渡るだろう
169:デフォルトの名無しさん
18/03/10 13:23:17.42 V+AonR8i.net
暗黙的にでも、ね。
Objectで受ける、Ienumerableで受けるを含めて。
170:デフォルトの名無しさん
18/03/10 13:24:20.18 V+AonR8i.net
as-isで渡るは確かに語弊があったな。
別の型のオブジェクトやインターフェイスとして渡されてるんじゃなくて、って感じ。
171:デフォルトの名無しさん
18/03/10 13:27:51.68 X26PuUpn.net
>>162
>>125でobjectを雑と評したからには当然interface{}の方が良いという主張と思ってたんだが
実際の詳細は別にしてあなたの説明では聞けば聞くほど同じとしか思えない
俺じゃないが>>155なんかCOM的な構造で代替可能という理解をしてるし
172:デフォルトの名無しさん
18/03/10 13:31:43.54 CNpckm4H.net
とはいえ言いたいことはわかる
オブジェクトに似ているがオブジェクトを渡しているわけではない、
オブジェクトとそれの持つインタフェースは1対多
COM のインタフェースや多重継承を用いた場合のC++に似ている
特に前者とはほぼ完全に同じものだ
インタフェース抽象って奴だね
この場合実行モデルとしてはインタフェースに階層関係は要らなくなる
複数のインタフェースを持つことから(派生による差分宣言、差分実装ではなく)
ミックスインが基本となるから。
173:デフォルトの名無しさん
18/03/10 13:31:58.31 BpWzRYHd.net
as-is型に実装を合わせるテンプレート
as-is実装に型を合わせるキャスト
これが次世代の争い
動的型は次世代ではないから政治的中立
174:デフォルトの名無しさん
18/03/10 13:52:58.58 V+AonR8i.net
>>166
同じではないでしょ。
COM的な構造で代替可能ってのは、>>166自身は理解してるの?理解してたらそのレスにはならんと思うけど。
そもそもが思い込みで人の発言に「良い」を勝手に補完してなんでそんなにしつこく食いついてくるかわからん。
理解が足りなくて同じだとしか思えないなら開き直らないでほしいわ。
175:デフォルトの名無しさん
18/03/10 13:54:45.25 ysTMLqRd.net
>>154
だから階層構造がないのはわかってるつーの。実際的な違いがないっていってるの。
実質Object型 とinterface{} はおんなじ扱いにしかならない。
Object型にはtoStringがあるけどinterface{}にはない? 別にそんなのはどうでもいい話。
interface{} に値を突っ込むと人間側が型を意識する必要がある。
動的言語的な扱いになっちゃう。
この点においてObject側と一緒だよね。
ここが最大の肝であり、「Object型でうけるのは雑」っていってるのはこの部分に差があると期待して質問したのに、
そこに関しては違いを見出していない。
なら雑な理由って何よ。
176:デフォルトの名無しさん
18/03/10 13:55:30.73 wavGSJ3d.net
今気が付いたが>>145の言ってることは根本的に間違ってる
>>130みたいなインターフェイスのレシーバはそもそもコンパイル通らない
つまりどの型にキャストしても同じレシーバが呼ばれることが保証されてる
そこがGoの型は階層を持たないという根拠になってたはず
エアプは黙ってろ
177:デフォルトの名無しさん
18/03/10 13:57:07.23 X26PuUpn.net
>>169
IUnknownが便利に使われてるのと
QueryInterfaceの実装次第でメンバーに飛ばすこともできるのが似てるって話だろ
COMは実装側が応答する型(GUID)を決めないといけなくてダックタイピングにはならんから
俺は必ずしも似てるとは言わんけど、あなたの説明はそう思われてもしょうがないってことだ
178:デフォルトの名無しさん
18/03/10 14:21:55.45 BpWzRYHd.net
classの多重継承ができる言語ならinterfaceはclassの構文糖ということにできた
多重継承を制限したことでinterfaceとclassの互換性が非自明になった
179:デフォルトの名無しさん
18/03/10 14:23:37.99 V+AonR8i.net
>>171
これは例が悪かったか。
スマホで書いたからすまん。
ある型にアサーションした場合、アサーション先の型のレシーバが呼ばれるよ。
もとのレシーバではない。
180:デフォルトの名無しさん
18/03/10 14:26:15.83 V+AonR8i.net
>>170
おんなじ扱いをすれば同じになるだろうな。
扱い方の余地の問題なんだが。
人間側が型を意識する必要がある、この点に於いてObjectと同じと言うのは雑すぎる。
動的言語的扱い方と言うか、jsonのUnmarshalなんか見た方が多分わかりやすいと思う。俺が言ってることは。
181:デフォルトの名無しさん
18/03/10 14:26:53.39 V+AonR8i.net
>>172
説明が悪いのは申し訳ない。
182:デフォルトの名無しさん
18/03/10 14:31:49.68 V+AonR8i.net
interface{}で受ける関数を呼ぶときは、
とりあえず、スーパークラスのObjectに(暗黙的に)キャストして渡してるのではなくて、あるインターフェイスを実装している型として渡してる。
全クラスがIfooをimplementsしている状態で、Ifooを受けているだけ。
そこにキャストは発生してないし、だから、キャストではなくアサーションで型を判定するだけで(キャスト無しで)中身の型が分かる。
その時に、もとの構造体ではなく、あるインターフェイスとしてアサーションする事ももちろんできる。
そこだけでも伝わってほしい。
183:デフォルトの名無しさん
18/03/10 14:33:10.73 V+AonR8i.net
しかし、また「エアプ」かw
好きなんだな、その言葉。
184:デフォルトの名無しさん
18/03/10 14:47:03.22 BpWzRYHd.net
キャストは雑
アサーションは丁寧
という説が伝わってきた
185:デフォルトの名無しさん
18/03/10 14:56:06.20 ysTMLqRd.net
>>175
それって結局reflectバッケージを見ろってこと?
>>177
型キャストが雑ってこと?
型アサーションだと型が合わないとerrorを返すから雑じゃないってこと?
186:デフォルトの名無しさん
18/03/10 15:25:20.56 opL9wLKH.net
雑なほうがいいんだよ。that's rightって言うだろ?
187:デフォルトの名無しさん
18/03/10 15:26:15.03 Uh7G7RUR.net
>>180
アサーションが丁寧というのは語弊があるが、インターフェイスからのアサーションはそもそも本来の型自体も持ってるのでキャストしているわけではなく、assert、言明し直してるだけで、別の型として一度も扱わない。
188:デフォルトの名無しさん
18/03/10 15:28:33.49 wavGSJ3d.net
>>174
アサーションでもレシーバが変わることはない
自分で試したことないから分からないんだろ
>>177のキャスト無しで渡してるってのも間違いで実際はキャストされてる
キャスト無しで渡してたらそれはジェネリクスだ
たぶん>>177はポインタや参照を理解してなくてキャストの意味をはき違えてる
objectにキャストしたら静的オブジェクトが動的オブジェクトに変換されると思い込んでるようにしか見えない
189:デフォルトの名無しさん
18/03/10 15:39:34.50 Uh7G7RUR.net
>>183
あることあるから、レシーバが変わる事知ってるんだよ。
そうじゃない。履き違えてないよ。
ジェネリクスはもっとちがう。コンパイル時に関数自体が型ごとに分かれるのが俺が言うジェネリクスとオーバーロード。
オブジェクト指向脳でわけわからん事言わないで。
190:デフォルトの名無しさん
18/03/10 15:56:33.06 ysTMLqRd.net
>>184
が、言いたいことを整理すると
Go言語のinterface{}は他言語のObject型とは違う。
なぜならGo言語のinterface{}型は内部的には型情報を保持しており
reflectバッケージを使うことでいつでも元の型情報を取得できるから
ってことでOK?
これって逆に言うと他言語のObject型は内部的に元の型情報を保持しないの?
191:デフォルトの名無しさん
18/03/10 16:04:38.45 X26PuUpn.net
本来のデータポインタはそのままで実行時型情報をペアにしてinterface{}(fat pointer)にしているのを
キャストしているしていない言い張ってるだけかな。まあ言葉はどっちでもいいが
ちなJavaタイプのnominalなinterfaceや多重継承はデータポインタに特定のオフセットを加減算する(ポインタの値が変わる)
場合がほとんどだが、fat pointer方式の実装も無いわけではない
192:デフォルトの名無しさん
18/03/10 17:15:29.87 3swSila5.net
>>185
いや保持してるよ
RTTIってやつだね
193:デフォルトの名無しさん
18/03/10 17:37:00.44 Hgt7PccX.net
エアプ呼ばわりされて過剰反応するのが真のエアプ
エアプでないことを示すのが普通の人
194:デフォルトの名無しさん
18/03/10 17:37:33.50 Uh7G7RUR.net
>>185
内部的に持ってるが、クラス構造が階層型であるが故にObject型と�
195:「う型で扱われた上で、サブクラスにダウンキャストするじゃん?で、またアップキャストするかもしれん。 だからジェネリクスやオーバーロードだと共変なのか反変なのか、あるいは非変なのかが問題になるし、Javaなんかはジェネリクスは非変だけど、配列は共変みたいな事になってるし、c#なんかだと最近変性注釈できるようになったり、まだゴタゴタしてる。 ちなみに、interfaceへのアサーションはreflectとは違って、interface自体が型を持ってるので、reflectで型を判定したりメソッド呼ぶのとは結構な差がある。 古いけどこのへんか。 https://research.swtch.com/interfaces
196:デフォルトの名無しさん
18/03/10 17:38:52.17 Uh7G7RUR.net
>>188
エアプのプロは言うことが違うな。
197:デフォルトの名無しさん
18/03/10 17:47:29.26 NO/eROxb.net
エアプなんか使ったって、レッテル貼るだけで議論ができないようにしか見えないんだからやめときなって
198:デフォルトの名無しさん
18/03/10 17:49:06.20 ngO/N0HJ.net
それが楽しいんだろ、いつもその言葉使うところ見たら。
199:デフォルトの名無しさん
18/03/10 17:59:38.11 ysTMLqRd.net
>>189
>共変なのか反変
急に分かんない用語が出てきて混乱したが
URLリンク(www.thekingsmuseum.info)
が参考になった。非変って用語がないが不変の言い間違い?
200:デフォルトの名無しさん
18/03/10 17:59:39.44 jPHJ8KIe.net
いや全く楽しくねーわ。
201:デフォルトの名無しさん
18/03/10 18:20:49.51 ysTMLqRd.net
例えば
func ToString(any interface{}) string {
if v, ok := any.(Stringer); ok {
return v.String()
}
switch v := any.(type) {
case int:
return strconv.Itoa(v)
case float:
return strconv.Ftoa(v, 'g', -1)
}
return "???"
}
上記コードはこうできるようにして欲しい
func ToString(any (Stringer | int | float)) string {
if v, ok := any.(Stringer); ok {
return v.String()
}
switch v := any.(type) {
case int:
return strconv.Itoa(v)
case float:
return strconv.Ftoa(v, 'g', -1)
}
}
引数にinterface{} があるのはやっぱりJavaとかで引数にObject型が来るのと同義だと思うわ。
202:デフォルトの名無しさん
18/03/10 18:22:28.94 opL9wLKH.net
>>193
こっちのページの下のほうに書いてあるじゃん
URLリンク(www.thekingsmuseum.info)
203:デフォルトの名無しさん
18/03/10 19:46:35.03 YxlaXMRK.net
結局Objectの方がinterface{}より保証されてるものが多いから、雑なのはinterface{}の方じゃーん
204:デフォルトの名無しさん
18/03/10 21:09:45.80 ihrcyggr.net
>>105
これ最高に型無しクソペチパー指向的レス
205:デフォルトの名無しさん
18/03/10 22:06:56.73 V+AonR8i.net
>>197
保証されてるものが多いんじゃないよ。
保証されるべきでない関連性を持ってないものも、関連性を持っているかのごとく扱われるんだよ。
206:デフォルトの名無しさん
18/03/10 22:10:01.27 V+AonR8i.net
自分が知らないものをたったひとつソースから「言い間違えなのか?」と言うのはどうかしてると思うわ。
207:デフォルトの名無しさん
18/03/10 22:20:22.04 V+AonR8i.net
>>195
ToStringなんて関数をinterface{}で受けて中で適当に処理するってこと自体だと思う。
そんな事するぐらいなら、使いたいintとfloatを名前つけてちゃんと型定義して、Stringer実装するほうがまともでは?
ライブラリならまだわかるが、ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」であって、基本的にはなんでも受け取りたいから使うための型ではない。
普通のオブジェクト指向言語でもそうだろ。
後半のコード例に至ってはコンパイル時に検出したいだけだろ。
オーバーロードさせろってんならまだわかるが。
コンパイル後に消えるようなもの書いて喜ぶ事こそ馬鹿らしいわ。
208:デフォルトの名無しさん
18/03/10 22:32:59.68 ysTMLqRd.net
>>200
どっちかというとこれを見て思ったんだが
URLリンク(ja.wikipedia.org)(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)
209:デフォルトの名無しさん
18/03/10 22:36:50.46 ysTMLqRd.net
>>201
>
210:後半のコード例に至ってはコンパイル時に検出したいだけだろ。 それこそキモだろ。静的言語を使う理由って。 これが嫌なら動的言語使ってなよPHPとか
211:デフォルトの名無しさん
18/03/10 22:40:31.66 ysTMLqRd.net
>>201
>ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」
現状のGoでそういう理由でinterface{}を使ってる状況ってどんだけあるんだよ。
それじゃすまないからジェネリクスを欲しがってるんでしょうが。
212:デフォルトの名無しさん
18/03/10 23:44:31.64 V+AonR8i.net
>>202
ホントだな。これは俺が少数派らしい。
高飛車に言ってすまん。
213:デフォルトの名無しさん
18/03/10 23:45:51.56 O29r5RSu.net
こいつ例のヤベェ奴か
214:デフォルトの名無しさん
18/03/10 23:47:15.74 V+AonR8i.net
>>203
キモではないよね。
それは単なる横着のコンパイラへの責任転嫁であって。
void*みたいな無茶苦茶な型があるのも静的言語だが、別に型チェックしてほしくてコンパイルしてるわけじゃないぞ。
215:デフォルトの名無しさん
18/03/10 23:49:44.45 V+AonR8i.net
>>204
結構あると思うけど。
それで済むから、頑なに「未だ早い」と本家が言い続けてるんでしょ。
済まないならもっと早く導入されてるわ。
そんなに変化ねえじゃんと思いがちだが、ホントに要るなって機能はちゃんと入ってきてるよ。ライブラリの出力しかり、ベンダリングしかり、次はモジュール予定されてたり。
216:デフォルトの名無しさん
18/03/10 23:50:33.63 ihrcyggr.net
早くPHP歴4000年秘伝のソースにウンコを継ぎ足す作業に戻れよ
工数の無駄だぞ
217:デフォルトの名無しさん
18/03/10 23:53:30.10 1bOlQOUq.net
このスレ見てたら俺はC++とPythonでいいやって思えてくる
218:デフォルトの名無しさん
18/03/10 23:57:26.44 O29r5RSu.net
こんなスレに影響されんなよ……
因みに俺はCとPythonとFortranとMathematicaでいいと思う
219:デフォルトの名無しさん
18/03/11 00:04:08.68 oVmCfuF5.net
非変、はScalaあたりから来てるのかな。記憶が曖昧。
220:デフォルトの名無しさん
18/03/11 00:44:51.07 RCfxSBiR.net
CとPythonの二刀流ずるい
C++むずい
だからJavaとかGoとかの支持率は下がらない
221:デフォルトの名無しさん
18/03/11 00:52:28.92 7XeGL+nE.net
>>207
あとCみたいな旧世代な言語を静的言語代表にされても。
あと横着はプログラマの美徳だよ。
>>208
現在進行形で議論中だよ。安易に入れたくないだけで必要性は明らかだろ。
URLリンク(github.com)
というか他のジェネリクスがある言語を使ってるとわかると思うんだけどな。このイライラ感。
まぁ関数のインターフェースにinterface{}型があっても気にしない人間もいるという事実があることは勉強になったわ。
そういう人間もいるんだ。
222:デフォルトの名無しさん
18/03/11 00:57:35.32 fQarczMf.net
>>199は自爆というかむしろダックタイピングの方だよね?
223:デフォルトの名無しさん
18/03/11 01:05:04.16 7Ky5zjn9.net
反変共変とかすぐに数学用語を取り込んで違う意味にする
224:デフォルトの名無しさん
18/03/11 01:18:09.18 fQarczMf.net
>>214を斜め読みしたけど、既存のinterface{}なやつと互換を取るためJavaのgenerics同様にするか
それとは別に問題を捨て去るためD言語やMLみたいな名前空間単位のやつを入れるかで議論してるな
genericsなんて大物は後から入れてもJavaのようにしかならんとは思っていたが
(失礼ながら)goのような保守的な言語に今までのスタイルを捨てさせるような変更を入れられるのかは気になった
225:デフォルトの名無しさん
18/03/11 01:37:42.02 7XeGL+nE.net
>>217
GoBlogでGo2はGo1と下位互換性を保つと宣言してるから破壊的変更をせずに導入するだろうね。
どうやるか全く想像がつかない
226:デフォルトの名無しさん
18/03/11 01:53:41.48 vy+Y2xiY.net
>>161
やっぱり認識の違いが激しいな。これじゃ話が合わんわけだわ
おれの感覚を書くと型情報を書くことで助かることは10~20%くらい
対してテストがある場合は50~60%(約3.5倍)くらい
準備するコストとして型が10~20ならテストは60~70(約4.25倍)の印象
さらに、後からコードを読むときの理解するまでにかかる時間が
静的型が10~20なら動的型は30~40(約2.25倍)の印象。
そして、俺の場合はコードは書くことより読むことの方が多いと思っているので
読むときにかかるコストの違いに良し悪しの重点を置く傾向がある。
というわけで、俺の感覚ではもちろん静的型に軍配が上がる
227:デフォルトの名無しさん
18/03/11 01:54:27.55 vy+Y2xiY.net
これ以上は感覚のズレをお互いに調整しないと話が進まないだろうな
そして、その感覚のズレを調整をするつもりは俺にはないし
そっちも多分ないだろうからやはりこれ以上の話は無駄になるだろうな
認識の違いがこれだけもあるということが分かっただけでも良しとしておこう
228:デフォルトの名無しさん
18/03/11 06:14:26.94 9uw0Jco6.net
会社でkotlinの勢力が拡大して飲み込まれるのは目前
やだよぉやだよぉ
229:デフォルトの名無しさん
18/03/11 07:33:15.20 DgI5cE5A.net
javaが積極的に言語に手を入れるようになったから
kotlinがcoffeescriptと同じ運命を辿るんじゃ無いかと不安を感じる
androidから放り出されない限り生きていられるとは思うが……
230:デフォルトの名無しさん
18/03/11 09:19:38.49 pTD+ffED.net
型システム入門では非変と訳されてるな
231:デフォルトの名無しさん
18/03/11 09:44:46.83 IOuBwL8e.net
Goに他の言語の機能を追加したいって声はよく聞くけど
逆に他の言語にGoの機能を追加したいって声はあまり聞かないよね
232:デフォルトの名無しさん
18/03/11 10:05:15.85 VhcwD3HT.net
var導入するのにval導入しないJavaのおじいさんたちはゲェジなのかな?
233:デフォルトの名無しさん
18/03/11 10:21:31.83 9agxgqpG.net
COM「反射性、推移性、対称性」
次世代「恒等射、合成、共変、反変」
型アサーションと型変換の宗教論争の原因はこれか
234:デフォルトの名無しさん
18/03/11 10:24:53.59 VhcwD3HT.net
セイッ! ヘイッ!
235:デフォルトの名無しさん
18/03/11 10:31:59.14 zUkaU6dD.net
AppGameKit Mobile Released on Android!
URLリンク(www.thegamecreators.com)
URLリンク(play.google.com)
金曜日、2018年3月2日にTGC NewsのAppGameKit News、
今日、Androidプラットフォーム上のAppGameKit Mobileがリリースされました。
今では、AppGameKit Mobileでどこでもどこでもアプリ、デモ、ゲームを作成して、「外出先で」コーディングすることができます。
この完全に無料のAppGameKitのバージョンでは、通常のAppGameKitスクリプト言語を使用してコードを作成してから、プロ
ジェクトをコンパイルしてデバイス上で直接実行することができます。このアプリにはデモとサンプルが付属しているため、新
規ユーザーはプログラミング言語の使いやすさを知ることができます。
カットダウンしたIDE内でアプリケーションをコーディングしてから、超高速コンパイラを使用して、プロジェクトをほぼ即座に実
行することができます。クラウドを追加して保存すると、あなたのプロジェクトをTheGameCreatorsのウェブサイトにアップロー
ドして、プロジェクトを安全に保護したり、Windows、Mac、Linux版のAppGameKitでコーディングを続けることができます。
AppGameKit Mobileは、デスクトップ版の多くのコマンドへのアクセスを提供します。最も重要なのは、ゲーム作成のためのす
べての主要なコマンドです。
・3Dグラフィックスと3D物理
・2Dグラフィックスと2D物理
・レンダリングコントロール
・サウンド&ミュージック
・ユーザー入力
・ファイルI / O
・センサー
カメラと写真のアクセスでは、あなたのデバイスから画像メディアをインポートしてから、これらの画像をアプリケーションのス
プライトまたはテクスチャとして使用できます。
今すぐ無料でダウンロード!
236:デフォルトの名無しさん
18/03/11 10:36:02.25 wjY1+kiE.net
>>222
サーバーサイドだとC#/.NET Coreも浮上してきたしな
言語の筋が良かったから期待したけど、結局一過性の流行で終わりそう
237:デフォルトの名無しさん
18/03/11 10:54:05.51 VhcwD3HT.net
Kotlinは要するにBabelだろ
JavaがKotlin相当に進化する頃にはJava 1000くらいになってるだろ
それを実行できるAndroidはバージョン100000くらい
じゃあJava 6までダウンコンパイルできるKotlinだよねって話
でもReact Nativeに殺されるんだぜ、嘘みたいだろ?
238:デフォルトの名無しさん
18/03/11 10:56:21.30 VhcwD3HT.net
わかるか?バカども
239:デフォルトの名無しさん
18/03/11 12:14:58.84 SpuufNIs.net
関数型が流行るようなことにはならない
240:デフォルトの名無しさん
18/03/11 12:57:58.24 7Ky5zjn9.net
関数型言語Mathematica
241:デフォルトの名無しさん
18/03/11 13:02:55.03 I+OrX4eg.net
>>219
違いがあるのはいいが
コードの読みやすさで静的動的で比較もいいけど、
テストコードあるかないかで比較したものも載せて欲しい。
型があった方が読みやすいコードもたくさんあるのは事実だけど。
242:デフォルトの名無しさん
18/03/11 13:13:29.16 7Ky5zjn9.net
コードリーディングという意味では型情報はありがたい。でも引数に何を入れればいいかLAPACKくらいしっかり書いてあるとなお良い
しかし関数名の直後にドキュメントが長々と書いてあってどこからコードなのかよくわからん奴は嫌い
243:デフォルトの名無しさん
18/03/11 13:23:51.64 vy+Y2xiY.net
>>234
比較って言ってもこれは独断と偏見に満ちた個人的な印象値だぞ…
参考にして欲しくて書いたわけじゃなくて認識の違いを明らかにするために書いたものだし…
あと、静的動的どちらでもテストは書くんだからテストがない場合と比較することに何の意味が…?
244:デフォルトの名無しさん
18/03/11 13:36:14.47 I+OrX4eg.net
なるほど話が噛み合わないわけだ。
俺としては別に動的
本当にテスト書いてんのかなってとこのが重要だと思ってたわけだが、
動的か静的ってとこにそんなに興味があったんだね。
その部分に対してはどっちでもいいわ。
逆にテストするのしないのって話から話題をそらすための抗弁になりやすい印象が強いので
あんまり関わりたい議論ではない。
245:デフォルトの名無しさん
18/03/11 13:42:53.78 9agxgqpG.net
状況が変わったのにまだ気付いてないんだな
だれも嘘をつかない性善説を前提に読みやすいとか読みにくいとか言う時代は終わった
今は嘘を教える人間を回避することが最重要
正直でありさえすれば読みやすさは不問
246:デフォルトの名無しさん
18/03/11 13:58:30.20 7Ky5zjn9.net
最強の関数型言語Mathematica を崇めよ
247:デフォルトの名無しさん
18/03/11 14:32:32.97 VhcwD3HT.net
嘘うんぬん以前にガイジなせいでウンコードまみれなペチPoorさんはどうすればいいの?
248:デフォルトの名無しさん
18/03/11 14:43:30.00 lK6s4tSM.net
ここがphpスレですか
249:デフォルトの名無しさん
18/03/11 15:03:28.52 5lhurhYh.net
URLリンク(github.com)
Crystalが落ちてる Redおもしろそう
250:デフォルトの名無しさん
18/03/11 15:04:09.58 7Ky5zjn9.net
嘘ねえ……そういえば昔知りもしない言語の嘘八百ばらまいてた人いたなあ
251:デフォルトの名無しさん
18/03/11 15:05:01.09 7Ky5zjn9.net
Nuとか息してんの?
252:デフォルトの名無しさん
18/03/11 15:09:53.59 P2AtP6SF
253:.net
254:デフォルトの名無しさん
18/03/11 16:27:48.12 5ndBYMhR.net
今も居るんだけどなw
255:デフォルトの名無しさん
18/03/11 16:28:13.49 YmDYWSQj.net
>>240
phpディスってる人も多いけど、タイプアノテーションついてだいぶ改善されつつあるんじゃないの。結局仕事にはphpも多いからlinterとか環境整備して開発しやすい状況は作っておきたい
256:デフォルトの名無しさん
18/03/11 16:48:52.27 V9/n/ORo.net
タイプアノテーションだのlinterだの、PHPerがいらねーって騒いでたものばっかりやん
257:デフォルトの名無しさん
18/03/11 16:53:21.57 vy+Y2xiY.net
>>237
いまいち話が掴めないんだが、テストを書くのが面倒だからイヤって奴はクソって言いわけ?
俺はできればテストは書きたくないよ。面倒だし。でも書かないわけにはいかない
だったら、テストは書くがテストを書く量を減らしたい
動的型より静的型のほうがテストを書く量を減らせそう…と考えている。
実際に減らせるかどうかはデータを取ってみないと何とも言えないけど
少なくとも動的より静的のほうが減らせるという意見はあってもその逆はない
最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない
258:デフォルトの名無しさん
18/03/11 16:54:04.68 vy+Y2xiY.net
静的型派の奴はテストは書きたくないって意見は俺以外にもいると思うけど
動的型派はテスト書くのは面倒だとは思わないの?
それを言うと、静的型派の連中は型を書くのは面倒だとは思わないのか?とか言われそうだが、
静的型派の奴らは型安全は保障してほしいとは思いつつ型を書くのが面倒だとも思ってるよ
だから型推論なんかを導入して型を書かずに済む方法を模索している
259:デフォルトの名無しさん
18/03/11 16:58:13.27 ciWbW39V.net
>>250
動的型の連中の大半は現実にはテストなんか書いてないよw
常識的に考えて、たかが型書く程度のことを面倒臭がる奴がテストなんか書くと思うか?
全くもって机上の空論よ
260:デフォルトの名無しさん
18/03/11 17:03:15.44 ciWbW39V.net
フォローしとくと、そもそも動的型で書かれるシステムって簡単なCRUDだけで構成される単純なものが多いので、いちいちテスト書くのは大袈裟
一般に、静的型での開発では動的型に比べて遥かに多くの工数をテストに費やしてるよ
261:デフォルトの名無しさん
18/03/11 17:11:27.19 VhcwD3HT.net
型すら理解できないやつが、インプット・アウトプット理解してテスト書けるわけないだろ
ペチプァどもが書いたプロダクト見ろよ
262:デフォルトの名無しさん
18/03/11 17:12:19.67 vy+Y2xiY.net
>>249
誤字訂正
訂正前>テストを書くのが面倒だからイヤって奴はクソって言いわけ?
訂正後>テストを書くのが面倒だからイヤって奴はクソって言いたいわけ?
263:デフォルトの名無しさん
18/03/11 17:14:33.16 STC5o2AA.net
ペチバカの話は他でやれ
新規で採用することはまずありえないし、COBOL並の過去の遺産なんだから
次世代言語スレが穢れるわ
264:デフォルトの名無しさん
18/03/11 17:15:32.91 sEfAJdP7.net
Qt使った時、単体テストが簡単にかけたので書いてたんだけど、まあ確かにテストは良いものだよね。
俺が思うに簡単に書けるようになっていないのは、もはや欠陥製品と言っても良いのでは。
265:デフォルトの名無しさん
18/03/11 17:18:15.89 sEfAJdP7.net
Javascriptも少し勉強してみたんだけど、あれはとても難しいものだな。
頭がこんがらかる。
GCがあればメモリーリークしないみたいな考えは間違っているだろうな。
GCがあるからリークする。
そんな風に感じましたよ私は。
266:デフォルトの名無しさん
18/03/11 17:18:47.42 sEfAJdP7.net
人類にとって最良の言語はC++だと思うね。
267:デフォルトの名無しさん
18/03/11 17:19:31
268:.10 ID:ciWbW39V.net
269:デフォルトの名無しさん
18/03/11 17:19:35.71 7xoreOvU.net
PHP案件って負の遺産・ゴミ扱いで、下請けに押しつけられてるイメージしかない
なんていうか、惨め
270:デフォルトの名無しさん
18/03/11 17:21:19.94 sEfAJdP7.net
PHPがゴミだとは思いませんね。
ゴミ言語であることは確かですが、ゴミ言語なりに居場所を見つけて素晴らしい成果を挙げています。
271:デフォルトの名無しさん
18/03/11 17:22:22.45 +qOnrRd1.net
そうかもしれないけど、このスレで話すことではない
272:デフォルトの名無しさん
18/03/11 17:25:39.72 sEfAJdP7.net
次世代言語について話すのであれば、C++2aは欠かせないでしょう。
273:デフォルトの名無しさん
18/03/11 17:27:27.49 sEfAJdP7.net
Boostの逆襲もすでに始まっていると思いますね私は。
C++11以降、Boostは肩身が狭くなってる感がありました。
ところが何ということでしょう。
Boostはさらに先に行ってしまったのです
274:デフォルトの名無しさん
18/03/11 17:46:13.20 7Ky5zjn9.net
Boostのコンパイル時間マシになった?
275:デフォルトの名無しさん
18/03/11 17:46:55.45 sEfAJdP7.net
なるわけないだろw
276:デフォルトの名無しさん
18/03/11 17:51:17.69 7Ky5zjn9.net
うーんこの
277:デフォルトの名無しさん
18/03/11 17:51:45.82 sEfAJdP7.net
Networking TSがいま人類に必要なもの。
278:デフォルトの名無しさん
18/03/11 17:52:28.03 9uw0Jco6.net
phpで書かれたサーバサイト置き換えるとしたらなに使うの?
279:デフォルトの名無しさん
18/03/11 17:56:33.27 sEfAJdP7.net
いまはPHPの代わりはないだろな。
NodeはPHP以上に危険なものだし。
C++でサーバサイドを書くと異常に早くなる。
これはC++が早いからではなく、省メモリーだからじゃないだろか。
でも環境が整備されていないから使うのに苦労が多い。
280:デフォルトの名無しさん
18/03/11 17:57:01.20 sEfAJdP7.net
Javaはあらぬ方向に向かっているからいずれ消えるだろう。
281:デフォルトの名無しさん
18/03/11 18:13:18.72 P2AtP6SF.net
>>270
c++と比べてのgoの評価はどう?
282:デフォルトの名無しさん
18/03/11 18:30:44.81 sEfAJdP7.net
C++があるのにDやGoを使う意義が見いだせない。
283:デフォルトの名無しさん
18/03/11 18:32:24.63 sEfAJdP7.net
日本は国家戦略としてC++に取り組むべきではないだろうか。
284:デフォルトの名無しさん
18/03/11 18:33:24.43 sEfAJdP7.net
俺の感じでは、C++はネットでこそ強みを発揮できるのではないだろうか。
285:デフォルトの名無しさん
18/03/11 18:35:12.43 P2AtP6SF.net
しまった聞く人を間違えた
286:デフォルトの名無しさん
18/03/11 18:36:48.99 sEfAJdP7.net
俺もそれが言いたかった。
Go大好き人間に聞くべき。
287:デフォルトの名無しさん
18/03/11 18:44:43.92 I+OrX4eg.net
>>250
>最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない
まあ残念ながらこういう輩が普通に静的、動的がどうのといってるから故の
主張なんだけどね。
型について明示することに関して個人的には別に面倒ともなんとも思ってない。
コードが増えてきて型を分類、整理するのが大変なだけで。
主に c/c++ でアルゴリズムや数値計算の仕事だからかも知れんが、
際どい数値例のテストコードなんかのが百倍くらい役立つわけよ。
>テストを書くのが面倒だからイヤって奴はクソって言いわけ?
まあ端的にいうとこうなる。
プログラマは怠惰なのは悪くないとかバカみたいな格言を持ち出してでも
言い訳してしないからね。
それくらいテスト嫌いってのは根深いと思う。
288:デフォルトの名無しさん
18/03/11 18:48:25.25 sEfAJdP7.net
動的言語でテスト書いてもあまり役に立たないんじゃないか。
289:デフォルトの名無しさん
18/03/11 18:49:00.57 7Ky5zjn9.net
もうテストの話いいから
290:デフォルトの名無しさん
18/03/11 18:53:27.01 sEfAJdP7.net
次世代言語と言えばC++2aの話は欠かせないな。
291:デフォルトの名無しさん
18/03/11 18:56:19.64 7Ky5zjn9.net
C++17はもう出たんだっけ
292:デフォルトの名無しさん
18/03/11 19:01:43.57 sEfAJdP7.net
出た。
293:デフォルトの名無しさん
18/03/11 19:04:33.71 YmDYWSQj.net
c++でサーバサイドを書くのってかなり特殊例だよな。どうゆう用途で使ってんの?
294:デフォルトの名無しさん
18/03/11 19:05:26.44 sEfAJdP7.net
たまたま書いてみたら異常に早く安定してるので、これはもしかして?←イマココ。
295:デフォルトの名無しさん
18/03/11 19:07:56.00 sEfAJdP7.net
BoostにHTTPやWebSock
296:etが入ったんだよな。 これは新時代の幕開けでは。
297:デフォルトの名無しさん
18/03/11 19:09:19.32 sEfAJdP7.net
C++でサーバーサイドを書く時代がやってきたのは間違いない。
誰が先頭を走るのか。
それだけだろう。
298:デフォルトの名無しさん
18/03/11 19:11:16.04 lK6s4tSM.net
rorとかdjangoみたいなのほしい
299:デフォルトの名無しさん
18/03/11 19:12:09.94 sEfAJdP7.net
今あるものをC++に変える必要は全くないが、今から新しい世界を切り開いていくものは、C++で始めたほうが効率よいだろう。
300:デフォルトの名無しさん
18/03/11 19:20:03.44 sEfAJdP7.net
テンプレートエンジンはDOMが遅いから必要になるもので、もしもDOMが早ければ必要性は減るのかもしれない。
そういう観点から設計されたXML/HTMLライブラリがあっても良いのかもしれない。
301:デフォルトの名無しさん
18/03/11 19:48:29.23 YmDYWSQj.net
c++でのおすすめWAFってあるの?
302:デフォルトの名無しさん
18/03/11 20:29:03.59 sEfAJdP7.net
商機ととらえるかどうかだな。
303:デフォルトの名無しさん
18/03/11 20:39:34.47 sEfAJdP7.net
C++はとにかく早くて省メモリーなので、使わない手はない。
304:デフォルトの名無しさん
18/03/11 20:42:51.49 YmDYWSQj.net
今からc++使うくらいならrust使う
305:デフォルトの名無しさん
18/03/11 20:59:23.60 sEfAJdP7.net
Rustはいずれ無くなる言語の感がある。
306:デフォルトの名無しさん
18/03/11 22:00:44.14 7cxlreHu.net
conceptもimportも言い出してからずっと仕様に入らない言語が何だって?
307:デフォルトの名無しさん
18/03/11 23:01:34.83 QkfM2cXC.net
>>296
実装したことのない馬鹿が言い出したことはスルーするのが吉
308:デフォルトの名無しさん
18/03/11 23:29:35.41 sEfAJdP7.net
サーバーサイドC++を始めるなら今です!チュドーン。
309:デフォルトの名無しさん
18/03/11 23:44:01.66 +qOnrRd1.net
C++をNGした
310:デフォルトの名無しさん
18/03/11 23:51:53.27 sEfAJdP7.net
小資本が大資本と戦う武器としてC++は良い選択になりえる。
時は来た。
今は良いタイミングだ。
311:デフォルトの名無しさん
18/03/11 23:54:55.14 RDyvYZMG.net
C++が速いのではなく早いならこのスレでは時期尚早でもう話すこと無いな
312:デフォルトの名無しさん
18/03/11 23:56:42.69 P2AtP6SF.net
オレもNGするか…さようならC++、信者に恵まれなかった言語よ
313:デフォルトの名無しさん
18/03/11 23:57:17.88 7xoreOvU.net
Webサービス開発に絞った話な。
リリースの速さ必要ならRoR
堅さが必要ならJava, Scala, Go
これからはインフラ親和性も必要だから、サーバレスならGo, Python, Node
RoRの劣化コピーのオレオレFWで内ゲバやってるPHPは、もう選択肢にすらあがらんだろ
まともな審美眼と技術力を持ってればね
314:デフォルトの名無しさん
18/03/12 00:00:42.95 dVXA1iUP.net
Nodeは危険すぎると感じたな。
315:デフォルトの名無しさん
18/03/12 00:30:16.07 NCVAu2KZ.net
>>304
具体的に何が?
316:デフォルトの名無しさん
18/03/12 00:38:32.62 dVXA1iUP.net
危険性を理解したうえで使ってるのかと思ったらそうでもないんだな。
317:デフォルトの名無しさん
18/03/12 00:52:06.18 NCVAu2KZ.net
敏感ヴォーイの被害妄想かい?w
318:デフォルトの名無しさん
18/03/12 01:26:46.12 dVXA1iUP.net
私が思うに、決定性を持つアルゴリズムで解析ができないものはすべて危険であり、ネットワークでは避けたほうが良い。
ここに反論するものはいるだろうか?
319:デフォルトの名無しさん
18/03/12 01:30:16.67 dVXA1iUP.net
一方で、決定性を持つアルゴリズムは様々な理由をつけてネットワークから排除されてきた。
これはおそらく大衆の無知につけ込んだ出来事に違いない。
おそらく、決定性と言われても何のことかわからない人は、これを読む者の中にも多いだろう。
とりわけウェブエンジニアには無知が多い。
無知にも務まる時代から、無知でなければ務まらない時代へ。
そんな感じすらある。
320:デフォルトの名無しさん
18/03/12 01:39:07.46 +NwoaeJY.net
純粋関数の徒か?
321:デフォルトの名無しさん
18/03/12 01:40:40.08 dVXA1iUP.net
現状でウェブ上のすべてのものが危険であり、容易にハックされ得る。
狙われた瞬間降参するしかないのだ。
原理的に防�
322:ョ方法が無いからだ。 SUNとMSはその点を熟知しており、ルールを変えようとするここ試みがあった。 この点に気が付いたものは少ないだろう。 そして試みは打倒された。 なぜそのような事が起こるのか。 それは銃を売るものも必要、そしてほとんどのものは自分は打たれないと考えるからであろう。
323:デフォルトの名無しさん
18/03/12 01:43:53.06 dVXA1iUP.net
キミのシステムは危険だ!チュドーン。
324:デフォルトの名無しさん
18/03/12 10:40:24.64 RPfHsums.net
まぁ、nodeオンリーだと確かに辛いところは出てくるな。
JSでQRコードの画像作るロジックが言うほど重くないんだけどそれなりに時間かかる処理になってて、そのせいで全然パフォーマンス出ねえって思ったことある。
結局そこはGoで書いたQRコード作るだけのサーバにリクエストすることにした。
タイトなループが書けないは最初から考えとかないと辛い。
325:デフォルトの名無しさん
18/03/12 11:00:05.16 FLBcUOOG.net
>>313
QRコード画像を作る処理ですら重いんかnode.js。
326:デフォルトの名無しさん
18/03/12 11:05:26.37 epBgW/7w.net
まあ、技術者にありがちな典型的な「やりたかっただけ」だろうな
自分が一番よく分かってると思うが、辛いと思い込もうとしてるだけで、もっとシンプルでメンテや運用コストの低い解決方法は間違いなくあったはず
327:デフォルトの名無しさん
18/03/12 11:11:22.42 cpvGEsWE.net
そもそもqr生成なんてクライアントでやれやw
URLリンク(www.cssscript.com)
328:デフォルトの名無しさん
18/03/12 11:34:32.52 87sijYPq.net
node_modulesの中を見るとゲロを吐きたくなる
329:デフォルトの名無しさん
18/03/12 12:43:15.24 RPfHsums.net
>>314
重くはないが、シングルスレッドなので詰まる。
cluster使ったところで、ワーカー数使い切る。
npmにモジュールあったから、へぇと思いながら使ったらこうなった感じ。
やりたかったからと言うより要件だったから、かな。
>>316
クライアントは台数凄いけど基本IE8のエンタープライズモードという悲しいイントラネットなのよ。
ブラウザは無力と思わないとどうにもならん。
そいつらがリアルタイム更新したいとかで、万台のlongpollをどう捌こうと言うところで白羽の矢がたった感じ。
それ自体は良かったよ。
node_modulesはせめて圧縮できないかねえと思ってしまう。
330:デフォルトの名無しさん
18/03/12 20:08:05.60 eaoNNYZy.net
>>318
ワーカー数使い切るってどういう事?
基本cpu数で回していくもんじゃないの?
331:デフォルトの名無しさん
18/03/12 20:30:18.54 UjJufH3o.net
>>319
cpu数立てても、全部同じように同じタイトなループがあるハンドラで詰まって、結果フリーな子が居なくなるって意味のつもりだったよ。
外部へのioだったり、外部プロセスだったりと非同期で帰ってくるものを使わないと当たり前だけど意味無かった。
clusterも結局プロセス立ってるけど、そいつら自体はシングルスレッドだし。
332:デフォルトの名無しさん
18/03/12 21:58:15.37 eaoNNYZy.net
>>320
それってつまり実装の問題ってことか。
現在はasync-awaitを使えるから非同期処理もだいぶ書きやすくなったし、結果は変わってきそう。
333:デフォルトの名無しさん
18/03/12 22:03:20.44 eaoNNYZy.net
>>316
IE8でもbabelとか使えばクライアントサイドで行けたんじゃないのかな
334:デフォルトの名無しさん
18/03/12 22:18:38.74 UjJufH3o.net
babelは嫌いなのと、そもそも保証がしにくいのと、ポリフィルまみれになってパフォーマンスがゴミレベルになる。
エンタープライズモードはちょっと理解できないレベルに落とされてたりするし。
console.logが無いってどういう事?ってレベル。
335:デフォルトの名無しさん
18/03/12 22:30:10.56 hfB/eSkd.net
console.log無いとかひどいなw
336:デフォルトの名無しさん
18/03/13 01:11:16.42 tZ7kTpHY.net
しかしグーグルさんもkotrinに肩入れしたりdart2出したり、どうしたいのかね?
337:デフォルトの名無しさん
18/03/13 01:43:11.12 XIDUN/3I.net
Googleに開発環境や言語のセンスが絶望的に無くて常に迷走してるのは今に始まったことじゃないでしょ
ビジネスを理解してるMSやAmazonにはどうやっても勝てんよ
338:デフォルトの名無しさん
18/03/13 02:39:23.57 eDfC6nrV.net
PythonのライブラリはC言語とOSのセンスを踏襲することが多い
一方JavaやJavaScriptのセンスはSmalltalkの影響が微レ存
339:デフォルトの名無しさん
18/03/13 08:37:52.99 zCWNq4J5.net
googleの社員は皆思い思いに、プロジェクトを進めてる感じ。
でも結果的に技術的多様生が有効に働いてる。chromeがあるからインターネットプロトコルまで手を入れることが可能になったし。
appleはいずれ終わるけどgoogleは底が見えないよね。
340:デフォルトの名無しさん
18/03/13 09:43:42.39 21E/SGjc.net
【イーサリアム】Solidity本スレDAPPS】
スレリンク(tech板)
341:デフォルトの名無しさん
18/03/13 21:12:42.56 CUB7TEfm.net
ここで唐突に新言語が乱入だー
C言語の現代化を目指すC2
URLリンク(www.infoq.com)
342:デフォルトの名無しさん
18/03/13 23:32:12.39 Z0di2vGk.net
これか
URLリンク(c2lang.org)
Cより良さそう
343:デフォルトの名無しさん
18/03/14 00:03:14.25 fxigNd06.net
>>331
まだCより良さそうなんて判断は無理だろ。マクロ周りが全貌も見えてないし。
344:デフォルトの名無しさん
18/03/14 00:04:08.32 7QXpRona.net
配列の範囲外アクセス検知強化してたら有能
345:デフォルトの名無しさん
18/03/14 00:27:05.17 D1sQyr+F.net
C2は機能は悪くないんだがCの記法を引きずってるのが足かせになりそう
まあそこを変えたらC2なんて名乗れなくなるか
346:デフォルトの名無しさん
18/03/14 01:05:08.25 ZGpe5WQ6.net
>>328
1つの言語でいいのになんでおもいおもいに勝手に言語作るの?
347:デフォルトの名無しさん
18/03/14 01:10:36.80 7QXpRona.net
ベストな言語は未だ存在しないからだよ
348:デフォルトの名無しさん
18/03/14 01:13:29.13 +4V1rKt1.net
まあ99.9%の仕事じゃ既存の言語使った方が効率いいわな。
本当のところ、新しい言語なんてマーケティング的な意味以上のものがあると思えん。
349:デフォルトの名無しさん
18/03/14 02:02:52.14 TtlwJ4jl.net
同じものを作り続けるならそうだろうけど、普通要件に因るでしょう
350:デフォルトの名無しさん
18/03/14 02:44:51.50 VWZtH1+z.net
C2?
まーた波括弧言語か……
OCamlのシンタクスを波括弧にする改悪だけの凄まじいクソだったReasonのトラウマが……
Rust がML系シンタクスだったら良かった人生だった
351:デフォルトの名無しさん
18/03/14 02:50:33.24 gKR2N6Y9.net
えーみんなオフサイドルール好きなの?
352:デフォルトの名無しさん
18/03/14 03:09:29.30 BF4uYFfL.net
勝手にc2とか名乗って問題にならないのかな
cの規格をc99、c11みたいに表示するから言語名+数字はちょっと紛らわしいと思う
353:デフォルトの名無しさん
18/03/14 03:47:25.69 lwj22l3u.net
フォーラムちょっと読んでみたけどまだまだ全然まともなものとは思えんで
フォーカスしてる用途が不便を楽しむ遊び、ポートする楽しさ以外見えてこない
354:デフォルトの名無しさん
18/03/14 07:37:15.69 TtlwJ4jl.net
オフサイドルールなんて嫌
そもそもrustのブロックを表現できないじゃないか
355:デフォルトの名無しさん
18/03/14 07:56:53.64 0fdBf/WL.net
>>340
ML系シンタクスってオフサイドルールとは違うと思うけど?
356:デフォルトの名無しさん
18/03/14 09:59:50.84 mT31QN2T.net
細かい字面の違いなんぞどうでもいいわ
357:デフォルトの名無しさん
18/03/14 12:08:19.96 OBFQDHoW.net
見た目は波括弧だが意味は中括弧か大括弧
一行で書けない長いやつ
だがラムダがあったら小括弧の内部に大括弧を書くことがあるから意味がない
Pythonの波括弧は集合か辞書を意味する
Haskellの波括弧は囲んだ部分のオフサイドルールを無効にする機能
358:デフォルトの名無しさん
18/03/14 13:10:17.73 OcK2GZgi.net
C2を名乗るなら既存のヘッダファイルとモジュールの両立を真っ先に考えないと
現状ヘッダファイルを手動で書き直さないといけないのでは、Cと互換性のない他の新興言語と何も変わらん
本家Cに提案されているモジュールが採用されたら存在意義を失う
359:デフォルトの名無しさん
18/03/14 13:18:43.15 9411JVzT.net
緊急速報
(+)【IT】AMD製CPUに「致命的」欠陥 悪用でPC乗っ取りも
スレリンク(newsplus板)
(BIZ+)【CPU】AMD製CPUに「致命的」欠陥 悪用でPC乗っ取りも
スレリンク(bizplus板)
(ゲハ)【PS4/XONE】AMDのCPUに致命的な欠陥【Ryzen】
スレリンク(ghard板)
360:デフォルトの名無しさん
18/03/14 14:10:00.37 OBFQDHoW.net
コンパイルはできるがリンクができないのが現代
未来ならまあわかるが現代化を目指してもやっぱりリンクができない
361:デフォルトの名無しさん
18/03/14 18:19:32.06 D1sQyr+F.net
C2使ってみようと思ったらこれCのコードに変換してるだけだった
これくらいなら同じものすぐに作れる人いそう
362:デフォルトの名無しさん
18/03/14 18:36:37.90 hEhRPYgv.net
それくらいの方が見通しが良くていいかもな
363:デフォルトの名無しさん
18/03/14 18:54:14.79 fFm4rqzY.net
Cのプリプロセスのマクロとかが遅いからとか書いてなかったか?
C2をCに変換するトランスパイラじゃ意味ないじゃん
364:デフォルトの名無しさん
18/03/14 19:40:13.34 IogLKo4e.net
そんなんどこに書いてあるの?
365:デフォルトの名無しさん
18/03/14 19:59:28.97 fFm4rqzY.net
>>353
コンパイル時間を大幅に遅くするヘッダファイルの使用が問題ってそういうことじゃないの?
366:デフォルトの名無しさん
18/03/14 20:12:57.97 hEhRPYgv.net
Include先がまた別のファイルincludeする大連鎖include地獄のことを言ってるんじゃない?
367:デフォルトの名無しさん
18/03/14 20:26:52.27 +4V1rKt1.net
C with class じゃないですか。。
368:デフォルトの名無しさん
18/03/14 20:53:53.48 ocseprwf.net
ポリモーフィズムはともかく継承もインターフェイスも仮想関数も型クラス・トレイトも無いように見えるがこれをクラスと呼ぶのか……?
369:デフォルトの名無しさん
18/03/14 23:12:31.41 hxEXxDVi.net
Nim,Crystal あたりと合わせて altC って感じやな
370:デフォルトの名無しさん
18/03/14 23:35:24.83 9KFxXS/p.net
3つ眺めてみたけどnimに惹かれる。
こんな言語あったんか…なんでこんなん知ってんだお前ら
371:デフォルトの名無しさん
18/03/15 03:29:44.83 FoOjJG9w.net
nimいいじゃんこれ
372:デフォルトの名無しさん
18/03/15 05:29:41.26 q+mljZsH.net
ここのスレに顔出しててNim知らないのか…
まじで知名度ないな
373:デフォルトの名無しさん
18/03/15 07:38:27.49 wNeo1CJk.net
NimはQiitaとかでたまに話題に上がるから
次世代系の中では比較的有名なのかと思ってた
374:デフォルトの名無しさん
18/03/15 15:07:19.69 Gk47k1T6.net
変な奴に好かれて評価を落とした言語という印象が付いてしまった感がある
実際触ると構文はPython機能はDelphiプラスD言語って感じで性能も良好なんだが
モダンな感じはしないのが弱いかな
特にPascal風のバリアントレコードを引きずってるのが痛い。代数的データ型ぐらい欲しい
375:デフォルトの名無しさん
18/03/15 16:21:52.17 81MsBC+z.net
このスレ来てるのにNix言語も知らないってマジ?
376:デフォルトの名無しさん
18/03/15 17:26:52.54 OYGfq7D7.net
知らんかったから調べたけどこれはいいや…俺は惹かれなかった。しかし検索性悪いな
377:デフォルトの名無しさん
18/03/15 20:25:23.49 0iJywA+8.net
>>339
波括弧こそ至高
378:デフォルトの名無しさん
18/03/15 20:49:12.32 9ujU8BdG.net
マクロとかメタプログラミング向けの機能以外はこれといった特徴無いように見えるね。
しいて言えばgoやrustみたいにアクが強すぎないところかな?
あるいは、pythonのようなオフサイドルールでネイティブコンパイルできるってのが
一部の人の琴線に触れるような気がしないでもない。
379:デフォルトの名無しさん
18/03/15 20:52:20.23 thSPLixB.net
何よりCを凌駕するというとんでもないパフォーマンスを持つという記事の存在が大きい
380:デフォルトの名無しさん
18/03/15 21:48:11.64 jcfpYhJu.net
バリアントレコード位しか c(++) より速くなる要素無いがな…
381:デフォルトの名無しさん
18/03/15 22:05:28.04 bzT8+O3E.net
cより速いとか大抵特殊な条件下だったりの煽り記事だけどね。
382:デフォルトの名無しさん
18/03/15 22:37:00.89 gNl1NP6h.net
煽り記事に煽られて有名になった言語
実際、結構複雑なことしてもc並みに速いんかねえ……?
383:デフォルトの名無しさん
18/03/15 22:43:14.62 AY8mFBH0.net
Cへのトランスパイラ言語は何やってるか判ってれば同等になるでしょ。
まあ、"Cより早い" が意味があった試しは無い。
384:デフォルトの名無しさん
18/03/15 22:51:44.82 gNl1NP6h.net
複雑なことっていうのは、Cにどう変換されるか負えないくらい複雑なことってことだよ
385:デフォルトの名無しさん
18/03/15 23:02:50.82 jcfpYhJu.net
nim performance で検索してトップに出てくる
URLリンク(blog.johnnovak.net)
ではレイトレースというごく単純な処理で出てくるコード見ながら色々やってるな
inline 指定したり
複雑な処理は c で書いても複雑(で恐らく遅いの)だから、
簡単な処理が速く書ければいいんじゃない?
上記ページによると Java と JS が数値計算案外速くて笑う
386:デフォルトの名無しさん
18/03/15 23:19:56.51 AY8mFBH0.net
昔LuaJITはぇーって盛り上がった事あったなあ…
387:デフォルトの名無しさん
18/03/16 06:03:27.99 VHgYZCtO.net
pythonが遅いからなぁ
388:デフォルトの名無しさん
18/03/16 07:44:37.90 fr9o0CI5.net
今年もrustが愛され言語No1に輝きましたな
スタックオーバーフローにはモジラの息のかかった人しかいないのかな
389:デフォルトの名無しさん
18/03/16 09:48:10.52 ooeu0A1b.net
支持率改竄が愛され陰謀論ナンバーワン
390:デフォルトの名無しさん
18/03/16 20:00:27.38 ZX5ucnyZ.net
>>231
オマエが馬鹿だろ。死ね
391:デフォルトの名無しさん
18/03/16 20:38:34.09 4KsfexYH.net
Cより速いを名乗るには、C言語では吐けないアセンブリパターンを吐く必要があるはずだが
現実にはバックエンドが同じなんでC言語でも再現可能だからなあ
(処理系固有のattributeやpragmaを書き足す必要がある場合も多いだろうけど)
392:デフォルトの名無しさん
18/03/16 21:14:11.01 sL/r1GAp.net
そこでmasmですよ。
393:デフォルトの名無しさん
18/03/16 21:27:41.47 r/T+njCz.net
現行バージョンのメジャーなライブラリでもmalloc/free (new / delete) が結構遅いから
rpmalloc 辺りを使うコード吐くだけで「処理によっては C より速い!」が実現できる気もする
394:デフォルトの名無しさん
18/03/16 22:03:02.48 bARX2ip1.net
非標準のライブラリを使ってはいけないとかCが遅くなるルールを何�
395:ツか追加すればいい 他にも、変更されたら困るデータはコピーを取る手間がかかる immutableを保証すればその手間がないからCより速い
396:デフォルトの名無しさん
18/03/16 22:48:15.19 r/T+njCz.net
そう言われてみると他のスレッドからアクセスされないメモリ/オブジェクトは
スレッドローカルなプールからアロケートするとか
その他のロックも省略できるとか色々最適化の余地あるな
397:デフォルトの名無しさん
18/03/16 23:45:02.47 pyLfI6yU.net
*2が勝手に足し算に変わるとか、そういう最適化を勝手にやってくれてるな
あとはどうあがいてもプロが最適化したCに勝てるわけがないし、素人が適当に書いたCと素人が適当に書いたnimのどっちが速いかだな
398:デフォルトの名無しさん
18/03/17 00:00:18.49 Fbe/Dv6l.net
>>385
前時代的の異物、死ね。
速度の必要な部分だけを切り出して、それだけをアセンブリコードにすればいいだけ。
399:デフォルトの名無しさん
18/03/17 00:01:17.17 Oh0Aao6E.net
>>385
>>374のリンク先の記事はある程度参考になると思う
400:デフォルトの名無しさん
18/03/17 00:02:21.86 a9tSZ89y.net
なんで死ねって言われたのか理解できない
アセンブリコードまで自前で書くほうが前時代の遺物感強いと思うけどなあ
401:デフォルトの名無しさん
18/03/17 00:44:26.42 Fbe/Dv6l.net
>>388
理解できないなら、死ねばいいだけ。
402:デフォルトの名無しさん
18/03/17 01:00:08.76 aJVXG6RF.net
Cに代わる次世代言語はアセンブラやC、C++で書かれた
高速な実装を呼び出す1行のコードが書ければ十分ってことだろう。
そうしてそれがわからないなら死ねばいい、と。
403:デフォルトの名無しさん
18/03/17 01:12:32.40 U1WdVkRs.net
普通に考えたら高速な実装を書ける言語がアセンブラやC、C++だとすれば
Cに代わる次世代言語も同じように高速な実装を書けなきゃ代わりにならない
404:デフォルトの名無しさん
18/03/17 01:36:41.05 Z+moL2ES.net
その普通に考えるってのが前時代的だな
スピードではなくフライングで勝つサイコパスのような考えができない
405:デフォルトの名無しさん
18/03/17 01:53:39.29 a9tSZ89y.net
Nimは速い上にCよりずっと楽に書けるんだが
406:デフォルトの名無しさん
18/03/17 02:01:20.25 U1WdVkRs.net
>>392
ということは最近は「代わり」は置き換え可能な存在という意味ではなくなったんだね
それなら前時代的と言われても仕方がない
407:デフォルトの名無しさん
18/03/17 10:06:45.76 wWRkBHq+.net
まあ最近でも低レイヤーの仕事としてGPUのアセンブラチューニングって話はあるけど、
どうせユーザー側なら言語とか関係ないけどね。
結局どんな言語使ってもどうせライブラリ呼ぶだけのお仕事でしょう。
408:デフォルトの名無しさん
18/03/17 10:13:19.41 btDjh9Sw.net
Clojureの話する?
409:デフォルトの名無しさん
18/03/17 10:17:40.12 zOFcLIxk.net
プロが本気で書いたCに勝つのは無理だろ
でも最適化しやすくして読みやすく書いてもプロが本気で書いたC並の速度出る言語なら…
410:デフォルトの名無しさん
18/03/17 10:47:29.26 /AWOYA6X.net
なんで速さの勝負になるかよく分からんし
速さしか考えないならCは中途半端やろ
411:デフォルトの名無しさん
18/03/17 10:59:08.85 Z+moL2ES.net
>>394
バグを正解に置き換えるならいいが、バグではないものをその1bit棒で叩くのは危ない
412:デフォルトの名無しさん
18/03/17 11:18:24.87 Z+moL2ES.net
immutable云々はデバッグ目的で使えるからCを置き換える可能性はある
速さはおまけ
413:デフォルトの名無しさん
18/03/17 11:46:47.41 4zm/Hii4.net
強力なおまけは魅力的ね
414:デフォルトの名無しさん
18/03/17 13:48:58.28 VXA170pJ.net
これまでどれだけの言語が
「Cと同等!」、「Cを置き換える!」って言って来たことか。