[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/24 12:50 / Filesize : 249 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 10:09:15.60 ID:x/Au45rc.net]
スレタイ以外の言語もok

前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
mevius.5ch.net/test/read.cgi/tech/1512137301/

2 名前:デフォルトの名無しさん [2018/03/06(火) 10:30:06.56 ID:nMdAiw1E.net]
Dartきてんね

3 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 11:03:49.49 ID:05hne0v2.net]
DartとDlangの違いを教えてください

4 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 11:43:03.15 ID:DTiE8Uxw.net]
Googleは言語選択保守的すぎるだろ
関数型言語採用しないどころかGolang作っちゃう時点で

5 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 12:27:31.20 ID:KV/wZ8PJ.net]
Goと関数型は土俵が違わん?

6 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 14:53:26.90 ID:+D30KD0L.net]
関数型とは具体的に何のことやら
Rustが採用したenumとtraitは関数型か?

7 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 20:42:26.57 ID:MoZw2NXu.net]
>>4
別にそんなとこで冒険しても生産性上がらんよねって感覚なんだろ。

8 名前:デフォルトの名無しさん [2018/03/06(火) 20:42:29.39 ID:cU7JZ0/j.net]
>>6
enum・traitと関数型は関係ないだろ?どちらもHaskellの型システムをパクって来たってだけ
関数型言語の特徴として真っ先に思いつくのは関数を第一級オブジェクトとして扱えるか否かというところだろうな
ただその考え方だけだとC言語でさえ関数ポインタがあるから関数型言語に含まれてしまうことになる
そこからさらに副作用を出来る限り避ける文化があるか否かとかも判断基準になるのかな?
言語の文化とかふんわりした表現は具体性を伴わないから説得力に欠けるんだよな
改めて関数型を具体的に説明しろと言われると難しいな…

9 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 20:57:45.92 ID:xvhpcg6j.net]
>>8
関数ポインタは確かにC/C++系独自だけれども(Javaにはなかった)第一級オブジェクトではない、とおもうよ

10 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 21:32:52.86 ID:MoZw2NXu.net]
もう少しだけ動的に関数定義を変えて返したりできるのが関数型ぽい。



11 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 21:34:37.20 ID:qto5wiY+.net]
Cの関数は実行時に生成挟めないから第一級オブジェクトではないよ

12 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 21:40:19.40 ID:MoZw2NXu.net]
c++ならクラスのメンバに情報持たせて、メソッド使うことでクロージャぽいものはできるけど。

13 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 21:45:38.71 ID:DG7WbBnA.net]
λ理論を念頭に置いて実装されたかどうかやぞ

14 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 22:00:19.48 ID:qto5wiY+.net]
c++なら素直にラムダ式使おうよ…

15 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 22:19:34.09 ID:xvhpcg6j.net]
C++ のラムダ式でYコンビネータを記述できるのですか?
できないのならラムダ式などと呼称していいのでしょうか?

16 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 22:36:28.04 ID:qto5wiY+.net]
>>15
2つの話題を勝手に混ぜるな
>>14>>12 に安価付けなかったのは俺が悪いけどさ

実行時の環境を用いた関数定義の有無についてc++ならラムダ式を使おうという話をしているだけだ
しゃーねーだろ言語機能としてラムダ式って命名されてるんだから

関数型言語とはなんぞやという話題についてc++のラムダ式を例に挙げてc++は関数型だ!なんて言うつもりは毛頭ない
Yコンビネータに関しては確かできた気がするが

17 名前:デフォルトの名無しさん mailto:sage [2018/03/06(火) 22:44:51.87 ID:DG7WbBnA.net]
>>16
正論すぎて草

18 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 00:36:57.39 ID:EDSn5kWw.net]
>>4
goって保守的かな?結構攻めてる言語だと思うが。
swiftのほうが断然保守的。

19 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 00:55:59.65 ID:487L5ZU0.net]
>>18
保守的にするという意味で攻めてる言語だな

20 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 00:59:12.93 ID:JwI5qwvI.net]
諦めと開き直りを全面に押し出してくる言語だな、確かに。



21 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:21:30.28 ID:EDSn5kWw.net]
goの攻めてるところ。
ライブラリのimportにuriを指定してできるようにしてgithubから直接importできるようにした。
例外を辞めた。
公開、非公開をメンバ名が大文字始まりかどうかで決めるように。
クラスをやめて、構造体だけにした。
インターフェース実装は該当メソッドの有無で決定


といった具合に他の言語の当たり前の部分を壊した。全然保守的とは思えないが。

22 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:26:49.68 ID:EDSn5kWw.net]
後は未使用ライブラリのimportをコンパイルエラーにするというのも、他の言語であんまり見ない気がする。 

これは、積み重なるとコンパイル時間に影響するから、言語設計にコンパイル時間の考慮を重きにおいている証拠の一つと言える

23 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:27:38.81 ID:487L5ZU0.net]
>>21
例外とか構造体はC時代に逆戻りしてるだけだし、静的ダックタイピングは他の言語にもあるし、githubのurl指定は結局色々な問題起きてるし(この間のgo-bind

24 名前:ata騒動とか)、公開/非公開の大文字小文字も気軽に変えられなくて不便だし何のメリットがあるんだ? []
[ここ壊れてます]

25 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:28:30.13 ID:487L5ZU0.net]
>>22
他の言語はエラーにはしないけど警告出す
初期の開発中は未使用importエラーも邪魔なだけでしょ

26 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:41:57.73 ID:EDSn5kWw.net]
>>23
むしろ、今まで当たり前にあった言語仕様を振り返って本当に必要かどうかを再検討して
削りに削った仕様だと思うけどな。

c++とか触ってたとき、クラスと、構造体って、本当に両方必要か?どっちか要らないだろって思ってたりしたから、
すごくしっくりきた。

27 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:51:00.36 ID:EDSn5kWw.net]
>>24
IDE使ってると半自動だからあんまり面倒だと感じたことはない。警告を無視する開発者もいるから徹底したほうが良いんだろう。
linuxカーネルもコンパイルすると警告出てるし

28 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:54:34.87 ID:487L5ZU0.net]
>>25
構造体とクラスに関しては個人的に同意
ただ型パラメーターとか例外がないのはありえない
エラー処理は長すぎる。if分岐でチェックとかいつの時代だよ
型パラメーターないせいでDRY原則を破るか型安全を破るかしないといけない

29 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 01:56:06.25 ID:EDSn5kWw.net]
>>23
go-bindata騒動はgo固有の問題でもない。nodeだって似たようなことあっただろ。

30 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 02:03:48.32 ID:EDSn5kWw.net]
>>27
例外いるかな?
tryで包まなきゃいけないメソッドや、関数ってドキュメント読むか、実際に実行するまでわかんなくないか?
言語によっては例外が飛ぶ可能性がある関数かどうかわかるんだっけ?
jsはわかんないから不便。



31 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 02:08:04.97 ID:EDSn5kWw.net]
>>27
結局interface{}使うのかよ的なね。わかる。
俺はコード生成に可能性を見出してる。
goはコード生成フレンドリーな言語仕様だし標準ライブラリに、AST系が揃ってるから

32 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 02:19:43.98 ID:487L5ZU0.net]
>>28
nodeもあったけどnodeの場合はnpmの仕様変えれば解決出来るやん
でもGoはgithubに依存してるから解決不可能じゃん

>>29
それならEither型作ってメソッドチェーンで書けるようにして欲しい
Goのエラー処理は関数呼び出し毎にしないといけないからだるすぎ

>>30
型パラメーターが複雑だから、コンパイル速度に影響出るからって入れなかったのにコード生成しろって矛盾してない?
どっちが複雑だよ。どっちがコンパイル速度に影響出るよ?

33 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 03:07:39.19 ID:EDSn5kWw.net]
>>31
コード生成はプリプロセスとしてコンパイルの度に毎回動かすわけじゃない。stringerとか使ったことない?

inportに関しては、
nodeがnpmの仕様を変えたら解決するならgoもそうすればいいのでは?

現状でも、vendor/もコミット対象にしてしまえば、依存ライブラリを管理対象にできるから

サードパーティライブラリに頼る以上はライブラリ作者の影響をどの言語だって受ける。

34 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 03:12:09.66 ID:rBtvNRXK.net]
Yコンビネータ forall a. (a -> a) -> a のように
forallがつく関数は第一級オブジェクトにならないのが普通だ
総称型がある比較的新しい言語はもう第一級オブジェクトにこだわらない

35 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 04:31:47.78 ID:Fw456RXb.net]
maybe/eitherが無い言語はあまり触りたくないな

36 名前:デフォルトの名無しさん [2018/03/07(水) 07:45:36.47 ID:z ]
[ここ壊れてます]

37 名前:WLX9kTq.net mailto: goってなんだかよく使われてる以外の理由で使う理由がないよ
同じことするならrustのがいいわ
[]
[ここ壊れてます]

38 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 08:21:04.51 ID:JwI5qwvI.net]
Goはマイクロスレッド得意なのはありがたいな。
あとチャンネルと。
そして静的リンクがデフォ。
これだけで、Go使う価値あると思ってる。

39 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 09:16:51.01 ID:L0uTy1l9.net]
>>35
WEBサーバ: go,php,ruby,java,Elixir
IOSアプリ:swift,dart
Androidアプリ:java,kotlin,dart
WEBクライアント:JavaScript,elm,TypeScript
cliツール:go

どこにrustが入る?

40 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 09:50:59.47 ID:vL0QsqKL.net]
Rustは生ポインタが使えるし、C ffiが比較的容易に可能、そのうえwebassemblyにまで対応してる
>>37以外にも組み込み、OS、ドライバ、デスクトップアプリ等どこにでも入ろうと思えば入れる
C++の後継を目指してるだけあってかなり万能な言語ではあるんだが
問題は普及するかどうか…



41 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 10:25:38.57 ID:487L5ZU0.net]
>>32
goはgithubに依存してるからgithubの仕様変えないと駄目じゃん
具体的にはリポジトリやユーザーの削除禁止。でもそれは無理だろ?

>>32
毎回動かすわけじゃないけど、変更あったら動かすだろ?
しかもそれは他の言語でも差分コンパイルで出来る

42 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 10:51:52.29 ID:JwI5qwvI.net]
>>39
githubが便利だからgithub使ってるけど、別にgithub以外でも公開出来るし、依存してると言うより多くの人間がgithub使ってるだけでは?

43 名前:デフォルトの名無しさん [2018/03/07(水) 13:02:44.71 ID:s6OLNjGp.net]
プログラマの労力よりコンパイル速度を優先してるのが謎

44 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 13:09:33.87 ID:4hpZk16v.net]
コンパイル速度が短いとデバッグしやすいからじゃね?

45 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 13:13:30.69 ID:4hpZk16v.net]
cliツールgoってマジ?

46 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 13:14:29.36 ID:upKMxxIv.net]
>>38
Rust嫌いじゃないけど普及しないと思う
今年のロードマップもwasmとCLIとNetwork頑張る、っておとなしすぎだろ
いろいろできるならもっとぶっ込んで来いやゴルア ってね

47 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 13:19:03.34 ID:lIV1PIoV.net]
Googleが採用しなかったDartよりはMozillaが採用したRustの方が将来性はあると思う

48 名前:デフォルトの名無しさん [2018/03/07(水) 13:45:40.70 ID:MMWrPDHz.net]
>>37
ウエッブサーバ: rust
他のサーバ: rust
ウエッブクライアント: rust
CLI: rust

49 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 13:53:35.83 ID:L0uTy1l9.net]
>>41-42
その辺の話は
https://talks.golang.org/2012/splash.article
に書いているけど、
Google社内の巨大なソースのコンパイル時間が45分とかかかるようになっちゃって
なんとかしないとという流れで始まったって書いてる。
つまりGoogle以外で恩恵を得る可能性は低いな。

50 名前:デフォルトの名無しさん [2018/03/07(水) 14:07:05.01 ID:vL0QsqKL.net]
>>46
一応マジメに返しておくと現状webクライアントはrustだけじゃダメだよ
現状ではまだwebassemblyでDOM操作はできないし他にも出来ないことは沢山ある
webクライアントにはRust+JSの組み合わせが必須になる

ただし、Rustのマクロ使ってRustの中にJS書いてビルド時にwasmとJSを両方吐きだして
無理やりRust onlyを実現してるstdwebとかいう先進的?なフレームワークも存在する
あのクレー



51 名前:g発見したときは「こいつ天才かよ?」って思った []
[ここ壊れてます]

52 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 14:22:34.19 ID:L0uTy1l9.net]
Rustは気になるけど、さわるモチベーションとなるキッカケがないんだよな。
FirefoxベースのElectronとかでて直接レンダリング部分をrustでいじるようなライブラリがでたら考えるかな

53 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 14:54:16.32 ID:2wkQZK0N.net]
人気が下降しプログラマの求人も少ないプログラミング言語ワースト10は? 一方で仕事の多い言語は? CodementorXとCoding Dojoの調査結果
www.publickey1.jp/blog/18/5_codementorxcoding_dojo.html

54 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 15:25:36.37 ID:n65ilySP.net]
jsのファミコンエミュを苦労してrust(→webassembly)に書き直してもぜんぜん速くならないという悲しい現実。
ハマるユースケース少なそう。

55 名前:デフォルトの名無しさん [2018/03/07(水) 16:03:24.12 ID:vL0QsqKL.net]
>>51
憶測でしがないが、それはRustやwasmが遅いというわけではなくて
ファミコン程度の演算ならJSだろうがwasmだろうがパフォーマンス的には大差なくて
それよりもwasmとJSでデータをやり取りする際のコピーのコストが高くついてるんじゃない?
3Dゲームの演算とかもっと重い処理じゃない限りwasmのメリットが活きてこないんじゃ…
もしくは、将来的にwasmから直接DOM操作ができるようになれば…

56 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 16:26:53.26 ID:lIV1PIoV.net]
GoとRustはバランスが悪いんだよな
ラムダ式とかジェネリクスとかGCがあればこそ手軽に使えるものなのに
GoはGC有るのにどちらも無くて
RustはどちらもあるけどGCが無いから不便

57 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 16:37:37.77 ID:rBtvNRXK.net]
RustにもARCはあるんだろ
まあでもARCはゴミのようだという意見には一理あるわな

58 名前:デフォルトの名無しさん [2018/03/07(水) 16:48:10.62 ID:vL0QsqKL.net]
>>55
RustにARCがあるってのは誤解を招く恐れがあるので補足
RustではARCは標準ライブラリとして用意されてる
SwiftみたいにARCでメモリ管理してるわけじゃないよ

59 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 17:13:59.44 ID:8jwTNUb7.net]
Rustなんてmozillaに金掴まされた奴しか見向きもしてない何にも使えない言語が
次世代言語とか笑わせんでくれ

60 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 17:19:05.18 ID:mYeM/2on.net]
まだ言ってんのかよw



61 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 17:35:57.09 ID:8jwTNUb7.net]
実際誰がどこで使ってるのか教えてくれ
モジラの金掴まされた企業以外で

62 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 18:15:46.78 ID:EDSn5kWw.net]
googleがxi-editor作ってたり、
後railcarってdocker代替作ってたり。
どっちもあんまり魅力的じゃないないな。
ゲームエンジンがrustで書いたらどうなるか興味ある。

63 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 18:19:20.11 ID:EDSn5kWw.net]
dartを知らない人間がdartに触る例。

https://youtu.be/uDKCK8BBPJU

エンジニアのプログラミング実況動画面白いかも。これのrust版ってある?

64 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 18:50:32.83 ID:8jwTNUb7.net]
>>59
1.0出て何年も経ってるのに
その体たらくって時点でお察し

65 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 19:11:36.71 ID:QbuNtZtf.net]
>>59
ゲーム分野もUnityやUnrealでニーズ満たしてるし、それ以外のものは今さら流行らんでしょ

66 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 19:14:43.72 ID:AePhkh+C.net]
>>41
コンパイル速度が早ければスループットが上がるんだから、労力の定義次第だろ。

67 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 19:15:35.75 ID:487L5ZU0.net]
>>59
こいつ反応楽しみたいだけの荒らしだから触れるな

68 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 19:17:10.88 ID:487L5ZU0.net]
>>53
本当これだよな
両方バランスが悪い
ネイティブでバランスの良いKotlinみたいな言語欲しい
Kotlin Nativeはどうなんだろうね

69 名前:デフォルトの名無しさん [2018/03/07(水) 20:42:19.89 ID:vL0QsqKL.net]
>>53
ラムダ式とジェネリクスはGCとはあまり関係ない機能だと思うが…
特にジェネリクスとGCには全く何の関係も無いような…

70 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 20:57:01.38 ID:L0uTy1l9.net]
https://taiyaq.com/contents/VXd2aV04Gr1mLC8e3AbEg4XKly
Dartの言語ツアーみてるけど、結構言語仕様が辛い。

変数宣言がC由来の「型 変数名」なのがつらい。
GoとかTypeScriptみたいに変数宣言は「変数名 型」にして欲しいわ
あと内部コードがutf16というのが気になる。jsより後発なのにjsと同じ仕様って。

Flutterは良さげなのになぁ。



71 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 21:02:27.65 ID:ZH5MFU7m.net]
RustがC++の代替って枠だと先にも出てる大規模ゲームなんだが、個人やインディーズなら大手エンジンでいいし社内独自エンジンだとこれまでの資産的にツールもゲーム本体も言語変える必要なくない?みたいな所がなぁ

72 名前:デフォルトの名無しさん [2018/03/07(水) 21:13:00.74 ID:xaPv5Ark.net]
気軽に書くならswiftを使うかな

73 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 21:18:56.44 ID:L0uTy1l9.net]
>>68
rustってc++に絶対勝てないのかね?
メモリ管理を静的に解決できるって不思議なんだけど、もしかしてメモリ節約プログラミングが得意だったらスマホとかIOTでワンチャンあるかもしれん。

74 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 21:24:30.78 ID:Fw456RXb.net]
今rustで書いてるよ、勿論mozilla全く関係無い
映像系のバックエンドでは結構使ってる情報見るけどな

75 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 21:51:29.88 ID:hDt5Kv7q.net]
rustは理論好きで実際はコードほとんど書かないような連中に人気あるだけだろ。
ゼロコスト抽象化カッケーとかそういう層。

76 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 21:58:39.87 ID:ZH5MFU7m.net]
>>70
ヒープ周りは言う程魔法みたいな事をしてる訳ではないよ
どこまでいってもコンパイル時の制限をカッツカツにして開放を保証するって話だし

iotもスマホも(もちろんゲームも)クロスプラットフォームしたくて大変なのにそれぞれc++向けに書かれてるsdkラップする?っていう
オープン規格やらそういうsdkがrust向けを公式で出すようになれば採用も出てくるとは思うけどね

77 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 22:05:41.69 ID:hDt5Kv7q.net]
メモリ解放のタイミングが分からなくなるっつーのは基本的に
インスタンスを共有してる変数がいくつもあるから
ってのがrustの主張の根幹でしょ。

78 名前:デフォルトの名無しさん [2018/03/07(水) 22:21:07.09 ID:zWLX9kTq.net]
わたすもrustで書いてるよ
webだけど
メインブラウザがファイヤーフォックスだからモジラの手先かもしれん

79 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 22:26:35.72 ID:4hpZk16v.net]
まあrust使ってる時点でモジラの手先だしな

80 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 22:26:48.78 ID:rBtvNRXK.net]
実行時に参照カウントを増減するのは、実行しないとわからない場合だけにしろ
コンパイル時にわかることを実行時にチェックするな
これはRustだけでなく静的型がさんざん主張していたこと



81 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 23:11:58.32 ID:LhUqstRW.net]
>>1
Dartとかいう完全死産のゴミ言語をスレタイに入れるな
おまえほんっとセンスねーなバーカ

82 名前:デフォルトの名無しさん mailto:sage [2018/03/07(水) 23:22:26.51 ID:TWVUeb1Y.net]
Dart2で再始動って言ってるからDart4くらいで良くなるんじゃねw
Flutterはちょっと気になってる

83 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 00:02:08.17 ID:XFDvKJyj.net]
>>47
これでコード書く時間が逆に増えたらウケるな

84 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 00:11:20.59 ID:XFDvKJyj.net]
>>79
死んでしまったAngularちゃんの悪口はやめろ

85 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 02:29:26.18 ID:to5KOUcv.net]
>>79
内部文字コードがutf16とか変数宣言がいまいちとか結構辛い。
flutterとdartを分離してTypeScriptから使えるようにしてくんないかな

86 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 12:46:52.68 ID:XQ95i3sC.net]
>>72
あーわかる超わかる
トイプログラムだけ書いて満足する奴のための言語みたいな

87 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 12:54:28.13 ID:XQ95i3sC.net]
>>71
結構使ってる情報見る(ソースなし)

88 名前:デフォルトの名無しさん [2018/03/08(木) 13:26:45.90 ID:f+gZIHDW.net]
>>83
個人が趣味でやってるプログラムなんてどんな言語だろうが大体そういうものだろ
別にRustで書いてる奴に限った話じゃない

89 名前:デフォルトの名無しさん [2018/03/08(木) 13:27:26.60 ID:f+gZIHDW.net]
本格的なものを作ろうとすれば企業が関わらざるを得なくて現状ではどの企業もまだ様子見状態ってだけ
むしろGoogleがRustで実験的にエディタを作ってるってことは
Googleも採用を検討するくらいには注目してる言語ということ

90 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 13:36:32.00 ID:XQ95i3sC.net]
>>86
残念ながらxi-editorは20%ルールの産物で完全に個人のトイプログラムなんですよね

そもそもGoogle社内の公認言語にRustなどという腐ったものは存在しない



91 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 13:55:25.73 ID:sd0Mz8U9.net]
Goも元々は20%ルールの産物じゃなかったっけ?

92 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 13:56:46.22 ID:UjKWiNad.net]
そだよ
てか、GoはRuby同様ガチ勢に嫌われすぎてて、なかなかカチッとしないね

93 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 14:07:05.39 ID:XQ95i3sC.net]
まじで。Go自体が20%ルールの産物なのは知らんかったわ

Goは初期のJava見てるような時代逆行感あるし、それが嫌われる原因だろうね
初期のJavaよりははるかにマシだけど

94 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 15:53:31.02 ID:39/jgBm7.net]
>>84
Rustアンチ面倒臭い

gihyo.jp/dev/serial/01/dwango-engineersoul/0002?page=2
https://speakerdeck.com/yaminoma/bitutoretogai-shan-dezhuan-song-liang-wojian-rasitaohanasi

95 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 16:57:24.84 ID:XQ95i3sC.net]
ドワンゴや渋みたいな画質最悪回線ptptのプラットフォームの技術()なんて参考にならん

Youtubeとか嗶哩嗶哩とかネトフリくらいのプラットフォームが全く採用してない時点でお察しだろ

96 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 17:38:09.62 ID:3H4xAb5h.net]
アンチのいない言語ってあるんかな?
それって誰が見ても引っかかることがなくて無難で分かりやすい言語ってことだよね。
、、、、C言語かな?
いやーないか。Pythonかな?

97 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 18:00:05.39 ID:gkfiSzw4.net]
>>93
C 言語は基本だよね…

98 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 18:05:00.88 ID:cve6DJMj.net]
マクロ中途半端じゃん

99 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 18:06:09.58 ID:My+VxY9/.net]
Goが嫌われるのは、意識高い系の人間が欲しがる機能をオミットしたからだろ。
欲しがるやつはバカぐらいの事言ってるし。
学者と機械屋が仲悪いのと同じようなもんで。

100 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 20:42:30.56 ID:Qr0iRnUQ.net]
機能をオミットする方向を示しただけでもgoは価値あるよ。
他の言語はバカみたいに機能を追加する方向しかみてなかったし。



101 名前:デフォルトの名無しさん [2018/03/08(木) 20:50:41.00 ID:OEgQLKAy.net]
採用例提示しろって言われたから東証一部上場企業の採用例をいったらいったでまた難癖つけるね
グダグダ言ってないで自分が使わなきゃい

102 名前:「だけじゃん



それでもニコニコがRustでオリジナルファイルシステムまで作ってあのクソさってのはいろいろ思うところはある
よくもまあ10年近くも金をオフパコ会議に突っ込んでろくに鯖の整備もせずに来れたもんだ
[]
[ここ壊れてます]

103 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 20:53:13.13 ID:39/jgBm7.net]
FacebookのMononokeとかも除外なのかな
有名所が軒並み使わないと認めないんだろうな、いやそれでも否定するか

104 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 21:19:24.31 ID:3H4xAb5h.net]
>>96
オミット大事だよね。バージョンを重ねていくと機能追加しかできないから
最初の機能は絞ったほうがいい。
Goにはきっと既存にはない独自発想のジェネリクス的な物が搭載されるであろう。
賛否両論なやつが。

105 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 21:38:40.38 ID:EsrBfKCX.net]
>>100
「例外を無くした。あれは大域ジャンプだ。行き先の見えないgotoだ。
 フローが無茶苦茶になる、複数の戻り値返すから各自チェックするように。
 複数の戻り値返せるからマジックナンバーとか返すなよ」
なんて、割り切りというより考え抜いたであろう仕様も、結構叩く人は叩くしな。

ジェネリクス的なものはどうなるんだろう。
正直型でのswitchでだいたい事足りてるし。

106 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 21:46:19.70 ID:to5KOUcv.net]
>>101
関数の引数にinterface{}型が入るのは良くない。これだけは是非とも改善したい

107 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 21:52:55.87 ID:EsrBfKCX.net]
>>102
何で?
コンパイルする時に誤りに気づかないとかそういう話?
void*が渡せるよりも、interface{}は実際には型持ってるからよほどマシな気が。
ジェネリクスしたらすごい数の関数が作られうるし、使い方の問題な気がするけどな。
そもそも継承という概念が希薄だから、ジェネリクスにしても幸せになれないと言うか、明示的に何らかのinterfaceを渡す方がマシだと思う。
Writer受ける関数みたいに。

108 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 22:31:36.69 ID:to5KOUcv.net]
>>103
実行時に解決するのは極力避けたい。
防衛的プログラミングをしたい。
AST系ライブラリを使いこなせるようになってコード生成でもいいけど。

109 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 22:35:27.75 ID:Qr0iRnUQ.net]
テストコード書くのは嫌だってだけだろどうせ。

110 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 22:37:10.68 ID:bpZjqWPW.net]
例えば今、任意のオブジェクトを格納できるコンテナ
(二分木でもハッシュマップでもブルームフィルタでも)
のライブラリを作りたいとしよう

このライブラリに、初期化時に任意の型しか格納できないようにする
まあつまりJavaのList<T>みたいなことをしたいと考えたときに
Goでは型ごとにラッパをつくって実行時に動的にチェックする以外に実現方法がない

これをコンパイル時にチェックしたいという要望は自然と思うが?



111 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 22:46:42.29 ID:bpZjqWPW.net]
つか自分で言ってて思ったがこれinterface{}が悪いとかじゃなくて
単純に高階型が欲しいってだけの話だわ

112 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 22:51:14.55 ID:to5KOUcv.net]
>>105
それもあるけどライブラリを提供するときに引数がinterface{}だとドキュメントに説明がいるでしょ。そういうのが嫌。

113 名前:デフォルトの名無しさん [2018/03/08(木) 23:04:06.14 ID:y3Zn8R8X.net]
コンパイルが遅くなるので人間が出来る事は人間がやってください

114 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 23:05:42.03 ID:Qr0iRnUQ.net]
>>108
どっちにしろ実行時に起こる現象は説明が必要だろ。
確かに動的だったりテンプレートみたいなもんだと読むのきついなと思うことがあるけど
型で述べられる記述力なんてコード量の割にそんなに豊かな

115 名前:烽でもない。
俺は優良なドキュメトとテストコードのが上回ると思ってる。
goのinterfaceと比べて継承の方が入力の範囲を特定する能力は高まるけど、
同時に型情報をどっさりコンパイラと人間に読ませることになるわけだ。
割にあってると思わない。
[]
[ここ壊れてます]

116 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 23:10:55.43 ID:yZMqeuJA.net]
やっぱり型クラスって神だわ

117 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 23:12:19.99 ID:bpZjqWPW.net]
>>110
Scalaとか見てると気持ちはすごくわかる
しかしせめてコンテナ型くらいは型制約欲しいという気持ちもわかってくれ

118 名前:デフォルトの名無しさん mailto:sage [2018/03/08(木) 23:39:44.92 ID:EsrBfKCX.net]
>>106
型に階層があるという事が前提になってる時点で、goに向いてないんじゃない?

119 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 00:31:33.39 ID:IWA+PY9Z.net]
"is a" の機能をomitして "has a" とかmixinとかtraitを使う方向

120 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 00:49:56.76 ID:cqMSJuy/.net]
>>110
ちょっと具体例が浮かばなくて適当な説明になるけど
ある引数に io.Reader もしくは io.Writer だけが来て欲しいって場合に
interface{}で一旦受け入れてどっちかじゃなかったらエラーって書くのがしんどいの。
引数にio.Reader | io.Writerって書けるようになれば
どっちかしか来ないことが保証されるからエラーハンドリングのコードが減る。

別に型システムがほしいとかじゃなくて
なんでも受け入れるinterface{}にしてしまう状況を避けたい。



121 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 04:10:38.55 ID:4sIM9IpC.net]
R | W より Or<R, W> が良い
記号を使うと記号アンチがうるさいし、継承と総称型を混同するやつもうるさい

122 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 07:28:22.67 ID:zhxSKG5B.net]
その場合 `Or<A, Or<B, C>>` と `Or<Or<A, B>, C>` の等価性どうする?って話しになるけどね

123 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 08:17:11.21 ID:kL3iaTSl.net]
>>115
そんな気持ち悪い関数嫌だな…。
分けられないの?

124 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 08:18:50.78 ID:kL3iaTSl.net]
>>114
それはもう、今の定義されたinterfaceで充分だとなってしまうのでは?

125 名前:デフォルトの名無しさん [2018/03/09(金) 09:19:07.89 ID:Nb7UaI4p.net]
せめてパターンマッチくらいは入らんかなあ
型判定のためにifをダラダラ並べるようなコードなんて誰も嬉しく無いよ
:=もあるんだし構文糖衣まで全て拒否してる訳でも無いだろうに

126 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 10:34:44.49 ID:cqMSJuy/.net]
>>118
まぁ例えばだから。もっとぴったり来る例を示せればよかったんだけどね。
関数のオーバーロードも合わせて欲しいな。関数名考えるのがしんどい

127 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 10:59:00.45 ID:kL3iaTSl.net]
>>120
switchは?

128 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 10:59:28.74 ID:FTtEfiG6.net]
>>105
静的型システム全否定だなお前のレス

129 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 12:12:54.21 ID:sqnwGWQK.net]
>>110
ドキュメントが常に最新の状態であることを静的に
保証する方法がない限りは静的型付けの型情報の方が信頼できる
腐ったドキュメントほど有害なものはない

腐らせるヤツが悪いとか言われそうだが
腐らせるのは自分ではなく同じチーム内の誰かだ
他人よりコンパイラの方が信頼できる

130 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 12:43:31.33 ID:kL3iaTSl.net]
interface{}を他の言語のobjectみたいなほんとに雑な受け方と一緒にしないでくれよ…。
実際に書いたら、結構使う場面が限られて来ることもわかるだろ…。

>>121
オーバーロードの禁止ははまあ必要悪だと思う。
型同士に階層が無いので、2種類のinterfaceを受ける関数があったとき、その2つともを実装している型に対して関数が定まらんのでは?



131 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 12:56:29.64 ID:7FF0Q/q6.net]
>>125
してねえよ
コンパイル時の型制約を足したいって話で、機能的にinterface{}への switch t.(type) で十分なのは承知の上

ifが並ぶっていってる奴はたぶんswitchで型判定できるの知らない気がする

132 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 13:27:20.95 ID:RwDfRr6t.net]
仮にGoにジェネリクスを実装するとしたらどこまで必要になるんだろ
共変性と反変性は必要?
部分適用は必要?
C++のメンバ型みたいなのは必要?

133 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 13:32:11.39 ID:FTtEfiG6.net]
>>127
そんな難しいのはいらねーから宣言的に書かせろ

134 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 15:24:58.40 ID:hv4D8Q9B.net]
>>125
object型と同じだと思ってたわ。具体的な違いとメリットを頼む。_φ(・_・

135 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 16:38:15.55 ID: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 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 17:07:33.29 ID:4sIM9IpC.net]
もしかしてswitchに型チェック機能追加したやつが戦犯かな
ただのVisitorパターンならジェネリクス対応は難しくなかった

137 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 18:13:47.78 ID:kL3iaTSl.net]
型チェックでswitchとジェネリクスは全く関係ない。
オーバーロードと同じく、何として処理するかと、その型が何か、に関して曖昧性を排除してるから。
暗黙のキャストも無いでしょ。
戦犯呼ばわりはどうかと思う。他の言語に毒されすぎ。

138 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 19:09:25.15 ID:kljWqerj.net]
Goにオーバーロード無いの批判される事あるけど
HaskellやRustだって型クラスやトレイトを使わないとオーバーロードできないし
TypeScriptも型が多重定義できるだけで実体は一つだし
むしろ最近の言語はC++みたいな単純なオーバーロード付けないのがトレンドな気がする

139 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 19:11:17.45 ID:dAbxViV8.net]
一方Cには_Genericがついた

140 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 20:41:59.05 ID:lMH5BOjd.net]
>>124
ドキュメントよりコンパイラのが信用できるかも知れんが
それ以上にテストコードの実際の動作のが信用できるよ。
c++まともに開発に使ってた奴ならどれほどコンパイラだよりが危ういかわかると思うけどね。



141 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 20:50:57.42 ID:mtotlLHa.net]
コンパイラが頼れないからC++から離脱したがってるわかで……

142 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 21:48:54.86 ID:OETiniYx.net]
>>133
むしろオーバーロードと型推論を共存させたいというのが型クラスの最初の動機だったのでは

143 名前:デフォルトの名無しさん [2018/03/09(金) 21:50:23.61 ID:sqnwGWQK.net]
>>135
そりゃテストコードが全てのコードに対して書かれていたらの話で
実際にはテストカバレッジ100%なんてあまり現実的な数値じゃない
GUIの場合はテストを書くこと自体がなかなか難しいし、他にも仕様が変わりやすいような
部分は変わるたびにテストも書き直すんじゃ、コストが割に合わないこともある
それらを考慮して、あえてテストを書かないという選択をすることも充分あり得る
静的型付けならテストが書かれていない部分でも型情報からある程度ならチェックが出来る
動的型付けはテストがなければ何もチェックできない

テストを書かない奴はバカみたいな言い分はあまり好きじゃない
テストカバレッジ100%を目指す奴のほうがよっぽどバカだと思う

144 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 22:24:57.88 ID:mOP6pgpS.net]
C++の型安全とHaskellの型安全って随分違うでしょ
理論がしっかりしてて型システムが豊かな方が型安全で提供される品質は高い
Haskellは「コンパイルが通れば大体想定通りに動く」って言われる程度には型を信じれるよ

これが行き過ぎるとIdrisやCoqみたいに「実行できれば仕様を満たしている」みたいな開発もできる
ハードル高いし実用できるほど簡単じゃないからまだ何個かブレークスルーが要るがね

145 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 22:28:04.16 ID:5gZ3T8dE.net]
>>130
残念ながら他言語のobject型とinterface{}の違いがこの説明ではよくわからん。

あんさんは他の言語のobject型を雑な受け方と評したんだぜ。具体的にこの説明では、
なるほど他の言語のobject型で値を受け取るのは雑な受け方だった。って納得しない。
どのへんが雑じゃなくなってるわけ?

146 名前:デフォルトの名無しさん mailto:sage [2018/03/09(金) 22:30:56.35 ID:5gZ3T8dE.net]
>>138
qiitaの記事でだいたいカバレッジが85%位が理想値でそれを超えるとしんどくなるだけで意味ないってのは見たな。

147 名前:デフォルトの名無しさん [2018/03/10(土) 09:17:00.38 ID:iLIqn+zB.net]
>>135
C++のコンパイラに頼るのは危ないってのはテンプレートがダックタイピングだからじゃないの?
だとしたら、それは単にC++のテンプレートの仕様がクソってだけの話で
C++のコンパイラがクソって言うのは筋違いだと思うんだけど…
それとも他に理由があるの?

148 名前:デフォルトの名無しさん [2018/03/10(土) 09:30:50.15 ID:iLIqn+zB.net]
書いた後で思ったけど、
C++のテンプレートってダックタイピングって言われてるけど
きちんとコンパイルエラーになったような…?
使ってたの3年以上前だから忘れた。どうだったっけ?

149 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 09:57:39.05 ID:X26PuUpn.net]
たぶん135は、コンパイラがバグってて出力される機械語が怪しいという話をしてる
別にC++に限った話ではないんだけど昔は結構多かった

150 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 10:03:15.55 ID:V+AonR8i.net]
>>140
うーん。なんにでもなれるスーパークラスで受けてるんじゃなくて、何もかもを満たすインターフェイスで受けてる。
クラスというか構造体同士に階層も無いし、
インターフェイス同士にも無いから。
だから、他の言語でObjectからキャストし直すときに、キャスト先の階層構造を考えなくてもいいし、
むしろどうキャストするか(何がほしいか)で、それに合わせたレシーバを呼んだりできる。



151 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 10:07:28.98 ID:ZLY5MDI0.net]
>>139
なのになぜライブラリのバグがちょいちょい発覚するの?

152 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 10:47:28.09 ID:wavGSJ3d.net]
普通は型の階層を利用したキャストの方が丁寧で
Goのような要件さえ満たせばなんでもキャストできる方が雑なんだけどな
雑なGoに丁寧なジェネリクスは似合わないって話の方がしっくりくる

153 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 11:47:59.83 ID:BpWzRYHd.net]
動的型は丁寧なコードも雑なコードも書けるよ
静的型のキャストは雑なコードだけを集めて濃縮したような存在

154 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:02:58.66 ID:vrfy4Usj.net]
型の階層ってのからまず脱却した方が良いところだと思うけどね。
型の階層の横紙破りとしてインターフェイスを作ってさらにインターフェイスも階層を持つとか、goやり始めてから悪手な気がしてきた。
他の言語もmixinとかtraitなんかで色々やってるけど、そういう方向で対応すべきもんなんだと思うよ。俺は。

rubyのようにobjectの親を作る羽目になったり、どのみち破綻する。
型の継承による、と言うが、型の継承に頼ったキャストとしか言いようが無いんでは?

155 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:03:37.10 ID:ysTMLqRd.net]
>>145
>だから、他の言語でObjectからキャストし直すときに、キャスト先の階層構造を考えなくてもいいし、

どういうこと?Object型は大抵すべてのインスタンスの親のはずでは?
一度Object型の変数に突っ込んだなら、それってもう実質、動的言語的扱いになるから人間側が元の型を意識しなきゃいけない。
これはGoでもおんなじでしょ?

あと以下は正直どうでもいい話なんだけど敢えて突っ込む。

Goのインターフェースは階層構造を持たないって言ってるけど
も結局用語の違いってだけで実質階層構造みたいなのはあるでしょ。
Io.ReadWriter は io.Writerを内包している
io.Writerはからインターフェースを内包している

Io.ReadWriter => io.Writer => interface{}

他の言語は階層構造を明示しているけどGoの場合はそれがコンパイラによって自動化されているってだけでは?
もちろん自動化されているってのはありがたいけどね。

156 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:07:47.02 ID:XYrxJ2qt.net]
>>143
静的ダックタイピングって言われてる
本質は変わらない

157 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:13:23.90 ID:ysTMLqRd.net]
>>148
動的型のキャストと静的型のキャストに違いがあるとは思えないけどなぁ。
俺の考え方はこう。
動的型: 人間側で型の追跡を頑張る
静的型: コンバイラ側に型の追跡を任せる。ただしobject型とかに渡すことで人間側で頑張ることもできる。

動的型は基本雑なコードだらけ。人間側が型を決め打ちしてメソッドを実行しないとやってられない。
だって毎回instanceof とかで型をチェックしてからメソッドの実行とかしてないでしょ?

158 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:16:33.64 ID:eUrbDIYn.net]
>>152
説明されてわかるような奴が>>148を書くと思うか?

159 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:24:33.09 ID:bKdAMFdx.net]
>>150
そんなことないよ。例えばtoStringみたいな、親から生えてるメソッドは、objectのまま呼べて、しかもインスタンスのメソッドが呼べるでしょ。
goはそうはなってないの。インターフェイスをレシーバとする関数が呼ばれる。

内包してないよ。
ReaderはReadを
WriterはWriteを
ReaderWriterはReadとWriteを実装しているインターフェイスなだけ。別のインターフェイス。そこに上位下位は無い。

階層構造が暗黙に決まってるんではなくて、そもそも階層構造を持ってない。

160 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:35:41.84 ID:9xaE30s9.net]
なんでもできる c++ で書くなら
なんのメンバーも持たない class interface の直接の
派生型として色んなインタフェースがあるようなもんか

COM に似てるな、というか COM のインタフェースの概念の焼き直しか。



161 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:36:05.42 ID:X26PuUpn.net]
ダックタイピングとnominalな階層型の違いを言葉を変えて繰り返しているだけで
問題のinterface{}がobjectより良いという説明にはなってないな

162 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 12:42:10.90 ID:jPHJ8KIe.net]
>>138
別に全部のコードにテスト書けとは思わんが
それでもそこまで引数の型がどうなのか気になるインターフェイスなら
テストコード書けよ。

てかそこまで作業が圧迫してるなら型をガッチガチにやる言語のが
調整する手間考えた場合割に合わんだろ。

163 名前:デフォルトの名無しさん [2018/03/10(土) 13:01:42.42 ID:iLIqn+zB.net]
>>157
どの程度なら「気になる」のかってところに認識の違いがありそうだな
静的型派の人間は全てコードの型情報が気になっちゃうんじゃない?
少なくとも俺は全ての引数の型が気になってしまうタイプの人間だよ

164 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:02:25.28 ID:BpWzRYHd.net]
>>152
動的型のコードは二種類に分けられる
静的型で丁寧に書いてから型を省略したようなコードと
静的型で雑に書いてから型を省略したようなコードだ

165 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:10:46.65 ID:wavGSJ3d.net]
「階層を持つから安全にキャストできる」と「安全にキャストできるから階層を持つ」がごっちゃになってる人がいる

166 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:12:51.16 ID:jPHJ8KIe.net]
>>158
まあ極論すれば感覚的な話だしね。
感覚として型を気にして助かることなんて 5 % くらいじゃないかと思ってる。
対してテストがある場合は 40~50%くらい助かる。
準備するコストとして型が 10~20 としたらテストは 30~40 といった印象。

なんで個人的にはそこまで型を整備するよりかはテストに時間使った方がいいと考えてる。
まあ抽象論一発で済めば嬉しいって気持ちはわかるんだが
実際そうはならんからね。。

167 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:17:24.66 ID:V+AonR8i.net]
>>156
端的に言えば、スーパークラス(と言う概念もないが)にキャストしてして渡してない、as-isで渡してると言うところが違うし大きい。
良いとも言ってないぞ。
違うし混同するなと言ってる。
Objectに相当するものが無いので、良いも何も比較対象ではない。

168 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:21:00.62 ID:CNpckm4H.net]
スーパークラスにキャストねえ。
どの言語でもその場合は as-is で渡るだろう

169 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:23:17.42 ID:V+AonR8i.net]
暗黙的にでも、ね。
Objectで受ける、Ienumerableで受けるを含めて。

170 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:24:20.18 ID:V+AonR8i.net]
as-isで渡るは確かに語弊があったな。
別の型のオブジェクトやインターフェイスとして渡されてるんじゃなくて、って感じ。



171 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:27:51.68 ID:X26PuUpn.net]
>>162
>>125でobjectを雑と評したからには当然interface{}の方が良いという主張と思ってたんだが
実際の詳細は別にしてあなたの説明では聞けば聞くほど同じとしか思えない
俺じゃないが>>155なんかCOM的な構造で代替可能という理解をしてるし

172 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:31:43.54 ID:CNpckm4H.net]
とはいえ言いたいことはわかる
オブジェクトに似ているがオブジェクトを渡しているわけではない、
オブジェクトとそれの持つインタフェースは1対多

COM のインタフェースや多重継承を用いた場合のC++に似ている
特に前者とはほぼ完全に同じものだ
インタフェース抽象って奴だね

この場合実行モデルとしてはインタフェースに階層関係は要らなくなる
複数のインタフェースを持つことから(派生による差分宣言、差分実装ではなく)
ミックスインが基本となるから。

173 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:31:58.31 ID:BpWzRYHd.net]
as-is型に実装を合わせるテンプレート
as-is実装に型を合わせるキャスト
これが次世代の争い
動的型は次世代ではないから政治的中立

174 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:52:58.58 ID:V+AonR8i.net]
>>166
同じではないでしょ。
COM的な構造で代替可能ってのは、>>166自身は理解してるの?理解してたらそのレスにはならんと思うけど。
そもそもが思い込みで人の発言に「良い」を勝手に補完してなんでそんなにしつこく食いついてくるかわからん。
理解が足りなくて同じだとしか思えないなら開き直らないでほしいわ。

175 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:54:45.25 ID:ysTMLqRd.net]
>>154
だから階層構造がないのはわかってるつーの。実際的な違いがないっていってるの。
実質Object型 とinterface{} はおんなじ扱いにしかならない。
Object型にはtoStringがあるけどinterface{}にはない? 別にそんなのはどうでもいい話。

interface{} に値を突っ込むと人間側が型を意識する必要がある。
動的言語的な扱いになっちゃう。

この点においてObject側と一緒だよね。

ここが最大の肝であり、「Object型でうけるのは雑」っていってるのはこの部分に差があると期待して質問したのに、
そこに関しては違いを見出していない。
なら雑な理由って何よ。

176 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:55:30.73 ID:wavGSJ3d.net]
今気が付いたが>>145の言ってることは根本的に間違ってる
>>130みたいなインターフェイスのレシーバはそもそもコンパイル通らない
つまりどの型にキャストしても同じレシーバが呼ばれることが保証されてる
そこがGoの型は階層を持たないという根拠になってたはず
エアプは黙ってろ

177 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 13:57:07.23 ID:X26PuUpn.net]
>>169
IUnknownが便利に使われてるのと
QueryInterfaceの実装次第でメンバーに飛ばすこともできるのが似てるって話だろ
COMは実装側が応答する型(GUID)を決めないといけなくてダックタイピングにはならんから
俺は必ずしも似てるとは言わんけど、あなたの説明はそう思われてもしょうがないってことだ

178 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:21:55.45 ID:BpWzRYHd.net]
classの多重継承ができる言語ならinterfaceはclassの構文糖ということにできた
多重継承を制限したことでinterfaceとclassの互換性が非自明になった

179 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:23:37.99 ID:V+AonR8i.net]
>>171
これは例が悪かったか。
スマホで書いたからすまん。

ある型にアサーションした場合、アサーション先の型のレシーバが呼ばれるよ。
もとのレシーバではない。

180 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:26:15.83 ID:V+AonR8i.net]
>>170
おんなじ扱いをすれば同じになるだろうな。
扱い方の余地の問題なんだが。

人間側が型を意識する必要がある、この点に於いてObjectと同じと言うのは雑すぎる。
動的言語的扱い方と言うか、jsonのUnmarshalなんか見た方が多分わかりやすいと思う。俺が言ってることは。



181 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:26:53.39 ID:V+AonR8i.net]
>>172
説明が悪いのは申し訳ない。

182 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:31:49.68 ID:V+AonR8i.net]
interface{}で受ける関数を呼ぶときは、
とりあえず、スーパークラスのObjectに(暗黙的に)キャストして渡してるのではなくて、あるインターフェイスを実装している型として渡してる。
全クラスがIfooをimplementsしている状態で、Ifooを受けているだけ。
そこにキャストは発生してないし、だから、キャストではなくアサーションで型を判定するだけで(キャスト無しで)中身の型が分かる。
その時に、もとの構造体ではなく、あるインターフェイスとしてアサーションする事ももちろんできる。

そこだけでも伝わってほしい。

183 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:33:10.73 ID:V+AonR8i.net]
しかし、また「エアプ」かw
好きなんだな、その言葉。

184 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:47:03.22 ID:BpWzRYHd.net]
キャストは雑
アサーションは丁寧
という説が伝わってきた

185 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 14:56:06.20 ID:ysTMLqRd.net]
>>175
それって結局reflectバッケージを見ろってこと?
>>177
型キャストが雑ってこと?
型アサーションだと型が合わないとerrorを返すから雑じゃないってこと?

186 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 15:25:20.56 ID:opL9wLKH.net]
雑なほうがいいんだよ。that's rightって言うだろ?

187 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 15:26:15.03 ID:Uh7G7RUR.net]
>>180
アサーションが丁寧というのは語弊があるが、インターフェイスからのアサーションはそもそも本来の型自体も持ってるのでキャストしているわけではなく、assert、言明し直してるだけで、別の型として一度も扱わない。

188 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 15:28:33.49 ID:wavGSJ3d.net]
>>174
アサーションでもレシーバが変わることはない
自分で試したことないから分からないんだろ
>>177のキャスト無しで渡してるってのも間違いで実際はキャストされてる
キャスト無しで渡してたらそれはジェネリクスだ
たぶん>>177はポインタや参照を理解してなくてキャストの意味をはき違えてる
objectにキャストしたら静的オブジェクトが動的オブジェクトに変換されると思い込んでるようにしか見えない

189 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 15:39:34.50 ID:Uh7G7RUR.net]
>>183
あることあるから、レシーバが変わる事知ってるんだよ。
そうじゃない。履き違えてないよ。
ジェネリクスはもっとちがう。コンパイル時に関数自体が型ごとに分かれるのが俺が言うジェネリクスとオーバーロード。
オブジェクト指向脳でわけわからん事言わないで。

190 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 15:56:33.06 ID:ysTMLqRd.net]
>>184
が、言いたいことを整理すると
Go言語のinterface{}は他言語のObject型とは違う。
なぜならGo言語のinterface{}型は内部的には型情報を保持しており
reflectバッケージを使うことでいつでも元の型情報を取得できるから
ってことでOK?

これって逆に言うと他言語のObject型は内部的に元の型情報を保持しないの?



191 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 16:04:38.45 ID:X26PuUpn.net]
本来のデータポインタはそのままで実行時型情報をペアにしてinterface{}(fat pointer)にしているのを
キャストしているしていない言い張ってるだけかな。まあ言葉はどっちでもいいが

ちなJavaタイプのnominalなinterfaceや多重継承はデータポインタに特定のオフセットを加減算する(ポインタの値が変わる)
場合がほとんどだが、fat pointer方式の実装も無いわけではない

192 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:15:29.87 ID:3swSila5.net]
>>185
いや保持してるよ
RTTIってやつだね

193 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:37:00.44 ID:Hgt7PccX.net]
エアプ呼ばわりされて過剰反応するのが真のエアプ
エアプでないことを示すのが普通の人

194 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:37:33.50 ID:Uh7G7RUR.net]
>>185
内部的に持ってるが、クラス構造が階層型であるが故にObject型と

195 名前:「う型で扱われた上で、サブクラスにダウンキャストするじゃん?で、またアップキャストするかもしれん。
だからジェネリクスやオーバーロードだと共変なのか反変なのか、あるいは非変なのかが問題になるし、Javaなんかはジェネリクスは非変だけど、配列は共変みたいな事になってるし、c#なんかだと最近変性注釈できるようになったり、まだゴタゴタしてる。

ちなみに、interfaceへのアサーションはreflectとは違って、interface自体が型を持ってるので、reflectで型を判定したりメソッド呼ぶのとは結構な差がある。
古いけどこのへんか。
https://research.swtch.com/interfaces
[]
[ここ壊れてます]

196 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:38:52.17 ID:Uh7G7RUR.net]
>>188
エアプのプロは言うことが違うな。

197 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:47:29.26 ID:NO/eROxb.net]
エアプなんか使ったって、レッテル貼るだけで議論ができないようにしか見えないんだからやめときなって

198 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:49:06.20 ID:ngO/N0HJ.net]
それが楽しいんだろ、いつもその言葉使うところ見たら。

199 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:59:38.11 ID:ysTMLqRd.net]
>>189
>共変なのか反変
急に分かんない用語が出てきて混乱したが
www.thekingsmuseum.info/entry/2016/02/07/235454
が参考になった。非変って用語がないが不変の言い間違い?

200 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 17:59:39.44 ID:jPHJ8KIe.net]
いや全く楽しくねーわ。



201 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 18:20:49.51 ID: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 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 18:22:28.94 ID:opL9wLKH.net]
>>193
こっちのページの下のほうに書いてあるじゃん
www.thekingsmuseum.info/entry/2016/02/11/111718

203 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 19:46:35.03 ID:YxlaXMRK.net]
結局Objectの方がinterface{}より保証されてるものが多いから、雑なのはinterface{}の方じゃーん

204 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 21:09:45.80 ID:ihrcyggr.net]
>>105
これ最高に型無しクソペチパー指向的レス

205 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 22:06:56.73 ID:V+AonR8i.net]
>>197
保証されてるものが多いんじゃないよ。
保証されるべきでない関連性を持ってないものも、関連性を持っているかのごとく扱われるんだよ。

206 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 22:10:01.27 ID:V+AonR8i.net]
自分が知らないものをたったひとつソースから「言い間違えなのか?」と言うのはどうかしてると思うわ。

207 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 22:20:22.04 ID:V+AonR8i.net]
>>195
ToStringなんて関数をinterface{}で受けて中で適当に処理するってこと自体だと思う。
そんな事するぐらいなら、使いたいintとfloatを名前つけてちゃんと型定義して、Stringer実装するほうがまともでは?
ライブラリならまだわかるが、ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」であって、基本的にはなんでも受け取りたいから使うための型ではない。
普通のオブジェクト指向言語でもそうだろ。

後半のコード例に至ってはコンパイル時に検出したいだけだろ。
オーバーロードさせろってんならまだわかるが。
コンパイル後に消えるようなもの書いて喜ぶ事こそ馬鹿らしいわ。

208 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 22:32:59.68 ID:ysTMLqRd.net]
>>200
どっちかというとこれを見て思ったんだが
https://ja.wikipedia.org/wiki/%E5%85%B1%E5%A4%89%E6%80%A7%E3%81%A8%E5%8F%8D%E5%A4%89%E6%80%A7_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6)

209 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 22:36:50.46 ID:ysTMLqRd.net]
>>201
>

210 名前:後半のコード例に至ってはコンパイル時に検出したいだけだろ。
それこそキモだろ。静的言語を使う理由って。
これが嫌なら動的言語使ってなよPHPとか
[]
[ここ壊れてます]



211 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 22:40:31.66 ID:ysTMLqRd.net]
>>201
>ユーザコードでinterface{}を使うのはもっと「interface{}でなければいけない時」
現状のGoでそういう理由でinterface{}を使ってる状況ってどんだけあるんだよ。
それじゃすまないからジェネリクスを欲しがってるんでしょうが。

212 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 23:44:31.64 ID:V+AonR8i.net]
>>202
ホントだな。これは俺が少数派らしい。
高飛車に言ってすまん。

213 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 23:45:51.56 ID:O29r5RSu.net]
こいつ例のヤベェ奴か

214 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 23:47:15.74 ID:V+AonR8i.net]
>>203
キモではないよね。
それは単なる横着のコンパイラへの責任転嫁であって。
void*みたいな無茶苦茶な型があるのも静的言語だが、別に型チェックしてほしくてコンパイルしてるわけじゃないぞ。

215 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 23:49:44.45 ID:V+AonR8i.net]
>>204
結構あると思うけど。
それで済むから、頑なに「未だ早い」と本家が言い続けてるんでしょ。
済まないならもっと早く導入されてるわ。
そんなに変化ねえじゃんと思いがちだが、ホントに要るなって機能はちゃんと入ってきてるよ。ライブラリの出力しかり、ベンダリングしかり、次はモジュール予定されてたり。

216 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 23:50:33.63 ID:ihrcyggr.net]
早くPHP歴4000年秘伝のソースにウンコを継ぎ足す作業に戻れよ
工数の無駄だぞ

217 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 23:53:30.10 ID:1bOlQOUq.net]
このスレ見てたら俺はC++とPythonでいいやって思えてくる

218 名前:デフォルトの名無しさん mailto:sage [2018/03/10(土) 23:57:26.44 ID:O29r5RSu.net]
こんなスレに影響されんなよ……
因みに俺はCとPythonとFortranとMathematicaでいいと思う

219 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 00:04:08.68 ID:oVmCfuF5.net]
非変、はScalaあたりから来てるのかな。記憶が曖昧。

220 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 00:44:51.07 ID:RCfxSBiR.net]
CとPythonの二刀流ずるい
C++むずい
だからJavaとかGoとかの支持率は下がらない



221 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 00:52:28.92 ID:7XeGL+nE.net]
>>207
あとCみたいな旧世代な言語を静的言語代表にされても。
あと横着はプログラマの美徳だよ。

>>208
現在進行形で議論中だよ。安易に入れたくないだけで必要性は明らかだろ。
https://github.com/golang/go/issues/15292
というか他のジェネリクスがある言語を使ってるとわかると思うんだけどな。このイライラ感。
まぁ関数のインターフェースにinterface{}型があっても気にしない人間もいるという事実があることは勉強になったわ。
そういう人間もいるんだ。

222 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 00:57:35.32 ID:fQarczMf.net]
>>199は自爆というかむしろダックタイピングの方だよね?

223 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 01:05:04.16 ID:7Ky5zjn9.net]
反変共変とかすぐに数学用語を取り込んで違う意味にする

224 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 01:18:09.18 ID:fQarczMf.net]
>>214を斜め読みしたけど、既存のinterface{}なやつと互換を取るためJavaのgenerics同様にするか
それとは別に問題を捨て去るためD言語やMLみたいな名前空間単位のやつを入れるかで議論してるな
genericsなんて大物は後から入れてもJavaのようにしかならんとは思っていたが
(失礼ながら)goのような保守的な言語に今までのスタイルを捨てさせるような変更を入れられるのかは気になった

225 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 01:37:42.02 ID:7XeGL+nE.net]
>>217
GoBlogでGo2はGo1と下位互換性を保つと宣言してるから破壊的変更をせずに導入するだろうね。
どうやるか全く想像がつかない

226 名前:デフォルトの名無しさん [2018/03/11(日) 01:53:41.48 ID:vy+Y2xiY.net]
>>161
やっぱり認識の違いが激しいな。これじゃ話が合わんわけだわ
おれの感覚を書くと型情報を書くことで助かることは10~20%くらい
対してテストがある場合は50~60%(約3.5倍)くらい
準備するコストとして型が10~20ならテストは60~70(約4.25倍)の印象
さらに、後からコードを読むときの理解するまでにかかる時間が
静的型が10~20なら動的型は30~40(約2.25倍)の印象。

そして、俺の場合はコードは書くことより読むことの方が多いと思っているので
読むときにかかるコストの違いに良し悪しの重点を置く傾向がある。
というわけで、俺の感覚ではもちろん静的型に軍配が上がる

227 名前:デフォルトの名無しさん [2018/03/11(日) 01:54:27.55 ID:vy+Y2xiY.net]
これ以上は感覚のズレをお互いに調整しないと話が進まないだろうな
そして、その感覚のズレを調整をするつもりは俺にはないし
そっちも多分ないだろうからやはりこれ以上の話は無駄になるだろうな
認識の違いがこれだけもあるということが分かっただけでも良しとしておこう

228 名前:デフォルトの名無しさん [2018/03/11(日) 06:14:26.94 ID:9uw0Jco6.net]
会社でkotlinの勢力が拡大して飲み込まれるのは目前
やだよぉやだよぉ

229 名前:デフォルトの名無しさん [2018/03/11(日) 07:33:15.20 ID:DgI5cE5A.net]
javaが積極的に言語に手を入れるようになったから
kotlinがcoffeescriptと同じ運命を辿るんじゃ無いかと不安を感じる
androidから放り出されない限り生きていられるとは思うが……

230 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 09:19:38.49 ID:pTD+ffED.net]
型システム入門では非変と訳されてるな



231 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 09:44:46.83 ID:IOuBwL8e.net]
Goに他の言語の機能を追加したいって声はよく聞くけど
逆に他の言語にGoの機能を追加したいって声はあまり聞かないよね

232 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:05:15.85 ID:VhcwD3HT.net]
var導入するのにval導入しないJavaのおじいさんたちはゲェジなのかな?

233 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:21:31.83 ID:9agxgqpG.net]
COM「反射性、推移性、対称性」
次世代「恒等射、合成、共変、反変」

型アサーションと型変換の宗教論争の原因はこれか

234 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:24:53.59 ID:VhcwD3HT.net]
セイッ! ヘイッ!

235 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:31:59.14 ID:zUkaU6dD.net]
AppGameKit Mobile Released on Android!
https://www.thegamecreators.com/post/appgamekit-mobile-released
https://play.google.com/store/apps/details?id=com.tgc.agk.mobile

金曜日、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 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:36:02.25 ID:wjY1+kiE.net]
>>222
サーバーサイドだとC#/.NET Coreも浮上してきたしな
言語の筋が良かったから期待したけど、結局一過性の流行で終わりそう

237 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:54:05.51 ID:VhcwD3HT.net]
Kotlinは要するにBabelだろ
JavaがKotlin相当に進化する頃にはJava 1000くらいになってるだろ
それを実行できるAndroidはバージョン100000くらい
じゃあJava 6までダウンコンパイルできるKotlinだよねって話
でもReact Nativeに殺されるんだぜ、嘘みたいだろ?

238 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 10:56:21.30 ID:VhcwD3HT.net]
わかるか?バカども

239 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 12:14:58.84 ID:SpuufNIs.net]
関数型が流行るようなことにはならない

240 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 12:57:58.24 ID:7Ky5zjn9.net]
関数型言語Mathematica



241 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 13:02:55.03 ID:I+OrX4eg.net]
>>219
違いがあるのはいいが
コードの読みやすさで静的動的で比較もいいけど、
テストコードあるかないかで比較したものも載せて欲しい。
型があった方が読みやすいコードもたくさんあるのは事実だけど。

242 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 13:13:29.16 ID:7Ky5zjn9.net]
コードリーディングという意味では型情報はありがたい。でも引数に何を入れればいいかLAPACKくらいしっかり書いてあるとなお良い
しかし関数名の直後にドキュメントが長々と書いてあってどこからコードなのかよくわからん奴は嫌い

243 名前:デフォルトの名無しさん [2018/03/11(日) 13:23:51.64 ID:vy+Y2xiY.net]
>>234
比較って言ってもこれは独断と偏見に満ちた個人的な印象値だぞ…
参考にして欲しくて書いたわけじゃなくて認識の違いを明らかにするために書いたものだし…
あと、静的動的どちらでもテストは書くんだからテストがない場合と比較することに何の意味が…?

244 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 13:36:14.47 ID:I+OrX4eg.net]
なるほど話が噛み合わないわけだ。
俺としては別に動的
本当にテスト書いてんのかなってとこのが重要だと思ってたわけだが、
動的か静的ってとこにそんなに興味があったんだね。

その部分に対してはどっちでもいいわ。
逆にテストするのしないのって話から話題をそらすための抗弁になりやすい印象が強いので
あんまり関わりたい議論ではない。

245 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 13:42:53.78 ID:9agxgqpG.net]
状況が変わったのにまだ気付いてないんだな
だれも嘘をつかない性善説を前提に読みやすいとか読みにくいとか言う時代は終わった
今は嘘を教える人間を回避することが最重要
正直でありさえすれば読みやすさは不問

246 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 13:58:30.20 ID:7Ky5zjn9.net]
最強の関数型言語Mathematica を崇めよ

247 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 14:32:32.97 ID:VhcwD3HT.net]
嘘うんぬん以前にガイジなせいでウンコードまみれなペチPoorさんはどうすればいいの?

248 名前:デフォルトの名無しさん [2018/03/11(日) 14:43:30.00 ID:lK6s4tSM.net]
ここがphpスレですか

249 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 15:03:28.52 ID:5lhurhYh.net]
https://github.com/collections/programming-languages

Crystalが落ちてる Redおもしろそう

250 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 15:04:09.58 ID:7Ky5zjn9.net]
嘘ねえ……そういえば昔知りもしない言語の嘘八百ばらまいてた人いたなあ



251 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 15:05:01.09 ID:7Ky5zjn9.net]
Nuとか息してんの?

252 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 15:09:53.59 ID:P2AtP6SF ]
[ここ壊れてます]

253 名前:.net mailto: >>242
クロスコンパイル楽すぎワロタwwww
[]
[ここ壊れてます]

254 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:27:48.12 ID:5ndBYMhR.net]
今も居るんだけどなw

255 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:28:13.49 ID:YmDYWSQj.net]
>>240
phpディスってる人も多いけど、タイプアノテーションついてだいぶ改善されつつあるんじゃないの。結局仕事にはphpも多いからlinterとか環境整備して開発しやすい状況は作っておきたい

256 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:48:52.27 ID:V9/n/ORo.net]
タイプアノテーションだのlinterだの、PHPerがいらねーって騒いでたものばっかりやん

257 名前:デフォルトの名無しさん [2018/03/11(日) 16:53:21.57 ID:vy+Y2xiY.net]
>>237
いまいち話が掴めないんだが、テストを書くのが面倒だからイヤって奴はクソって言いわけ?
俺はできればテストは書きたくないよ。面倒だし。でも書かないわけにはいかない
だったら、テストは書くがテストを書く量を減らしたい
動的型より静的型のほうがテストを書く量を減らせそう…と考えている。
実際に減らせるかどうかはデータを取ってみないと何とも言えないけど
少なくとも動的より静的のほうが減らせるという意見はあってもその逆はない
最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない

258 名前:デフォルトの名無しさん [2018/03/11(日) 16:54:04.68 ID:vy+Y2xiY.net]
静的型派の奴はテストは書きたくないって意見は俺以外にもいると思うけど
動的型派はテスト書くのは面倒だとは思わないの?
それを言うと、静的型派の連中は型を書くのは面倒だとは思わないのか?とか言われそうだが、
静的型派の奴らは型安全は保障してほしいとは思いつつ型を書くのが面倒だとも思ってるよ
だから型推論なんかを導入して型を書かずに済む方法を模索している

259 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 16:58:13.27 ID:ciWbW39V.net]
>>250
動的型の連中の大半は現実にはテストなんか書いてないよw
常識的に考えて、たかが型書く程度のことを面倒臭がる奴がテストなんか書くと思うか?
全くもって机上の空論よ

260 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:03:15.44 ID:ciWbW39V.net]
フォローしとくと、そもそも動的型で書かれるシステムって簡単なCRUDだけで構成される単純なものが多いので、いちいちテスト書くのは大袈裟
一般に、静的型での開発では動的型に比べて遥かに多くの工数をテストに費やしてるよ



261 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:11:27.19 ID:VhcwD3HT.net]
型すら理解できないやつが、インプット・アウトプット理解してテスト書けるわけないだろ
ペチプァどもが書いたプロダクト見ろよ

262 名前:デフォルトの名無しさん [2018/03/11(日) 17:12:19.67 ID:vy+Y2xiY.net]
>>249
誤字訂正
訂正前>テストを書くのが面倒だからイヤって奴はクソって言いわけ?
訂正後>テストを書くのが面倒だからイヤって奴はクソって言いたいわけ?

263 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:14:33.16 ID:STC5o2AA.net]
ペチバカの話は他でやれ
新規で採用することはまずありえないし、COBOL並の過去の遺産なんだから
次世代言語スレが穢れるわ

264 名前:デフォルトの名無しさん [2018/03/11(日) 17:15:32.91 ID:sEfAJdP7.net]
Qt使った時、単体テストが簡単にかけたので書いてたんだけど、まあ確かにテストは良いものだよね。
俺が思うに簡単に書けるようになっていないのは、もはや欠陥製品と言っても良いのでは。

265 名前:デフォルトの名無しさん [2018/03/11(日) 17:18:15.89 ID:sEfAJdP7.net]
Javascriptも少し勉強してみたんだけど、あれはとても難しいものだな。
頭がこんがらかる。
GCがあればメモリーリークしないみたいな考えは間違っているだろうな。
GCがあるからリークする。
そんな風に感じましたよ私は。

266 名前:デフォルトの名無しさん [2018/03/11(日) 17:18:47.42 ID:sEfAJdP7.net]
人類にとって最良の言語はC++だと思うね。

267 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:19:31 ]
[ここ壊れてます]

268 名前:.10 ID:ciWbW39V.net mailto: >>255
COBOLの開発ってかなり厳密にテストするぞ
PGの頭の品質はともかく、開発プロセスまで含めた品質はPHPと比較するようなものではない
[]
[ここ壊れてます]

269 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:19:35.71 ID:7xoreOvU.net]
PHP案件って負の遺産・ゴミ扱いで、下請けに押しつけられてるイメージしかない
なんていうか、惨め

270 名前:デフォルトの名無しさん [2018/03/11(日) 17:21:19.94 ID:sEfAJdP7.net]
PHPがゴミだとは思いませんね。
ゴミ言語であることは確かですが、ゴミ言語なりに居場所を見つけて素晴らしい成果を挙げています。



271 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:22:22.45 ID:+qOnrRd1.net]
そうかもしれないけど、このスレで話すことではない

272 名前:デフォルトの名無しさん [2018/03/11(日) 17:25:39.72 ID:sEfAJdP7.net]
次世代言語について話すのであれば、C++2aは欠かせないでしょう。

273 名前:デフォルトの名無しさん [2018/03/11(日) 17:27:27.49 ID:sEfAJdP7.net]
Boostの逆襲もすでに始まっていると思いますね私は。
C++11以降、Boostは肩身が狭くなってる感がありました。
ところが何ということでしょう。
Boostはさらに先に行ってしまったのです

274 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:46:13.20 ID:7Ky5zjn9.net]
Boostのコンパイル時間マシになった?

275 名前:デフォルトの名無しさん [2018/03/11(日) 17:46:55.45 ID:sEfAJdP7.net]
なるわけないだろw

276 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 17:51:17.69 ID:7Ky5zjn9.net]
うーんこの

277 名前:デフォルトの名無しさん [2018/03/11(日) 17:51:45.82 ID:sEfAJdP7.net]
Networking TSがいま人類に必要なもの。

278 名前:デフォルトの名無しさん [2018/03/11(日) 17:52:28.03 ID:9uw0Jco6.net]
phpで書かれたサーバサイト置き換えるとしたらなに使うの?

279 名前:デフォルトの名無しさん [2018/03/11(日) 17:56:33.27 ID:sEfAJdP7.net]
いまはPHPの代わりはないだろな。
NodeはPHP以上に危険なものだし。
C++でサーバサイドを書くと異常に早くなる。
これはC++が早いからではなく、省メモリーだからじゃないだろか。
でも環境が整備されていないから使うのに苦労が多い。

280 名前:デフォルトの名無しさん [2018/03/11(日) 17:57:01.20 ID:sEfAJdP7.net]
Javaはあらぬ方向に向かっているからいずれ消えるだろう。



281 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 18:13:18.72 ID:P2AtP6SF.net]
>>270
c++と比べてのgoの評価はどう?

282 名前:デフォルトの名無しさん [2018/03/11(日) 18:30:44.81 ID:sEfAJdP7.net]
C++があるのにDやGoを使う意義が見いだせない。

283 名前:デフォルトの名無しさん [2018/03/11(日) 18:32:24.63 ID:sEfAJdP7.net]
日本は国家戦略としてC++に取り組むべきではないだろうか。

284 名前:デフォルトの名無しさん [2018/03/11(日) 18:33:24.43 ID:sEfAJdP7.net]
俺の感じでは、C++はネットでこそ強みを発揮できるのではないだろうか。

285 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 18:35:12.43 ID:P2AtP6SF.net]
しまった聞く人を間違えた

286 名前:デフォルトの名無しさん [2018/03/11(日) 18:36:48.99 ID:sEfAJdP7.net]
俺もそれが言いたかった。
Go大好き人間に聞くべき。

287 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 18:44:43.92 ID:I+OrX4eg.net]
>>250
>最低限のテストさえも書こうとしない奴は論外なのでそっちの話はしたくない
まあ残念ながらこういう輩が普通に静的、動的がどうのといってるから故の
主張なんだけどね。
型について明示することに関して個人的には別に面倒ともなんとも思ってない。
コードが増えてきて型を分類、整理するのが大変なだけで。
主に c/c++ でアルゴリズムや数値計算の仕事だからかも知れんが、
際どい数値例のテストコードなんかのが百倍くらい役立つわけよ。

>テストを書くのが面倒だからイヤって奴はクソって言いわけ?
まあ端的にいうとこうなる。
プログラマは怠惰なのは悪くないとかバカみたいな格言を持ち出してでも
言い訳してしないからね。
それくらいテスト嫌いってのは根深いと思う。

288 名前:デフォルトの名無しさん [2018/03/11(日) 18:48:25.25 ID:sEfAJdP7.net]
動的言語でテスト書いてもあまり役に立たないんじゃないか。

289 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 18:49:00.57 ID:7Ky5zjn9.net]
もうテストの話いいから

290 名前:デフォルトの名無しさん [2018/03/11(日) 18:53:27.01 ID:sEfAJdP7.net]
次世代言語と言えばC++2aの話は欠かせないな。



291 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 18:56:19.64 ID:7Ky5zjn9.net]
C++17はもう出たんだっけ

292 名前:デフォルトの名無しさん [2018/03/11(日) 19:01:43.57 ID:sEfAJdP7.net]
出た。

293 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 19:04:33.71 ID:YmDYWSQj.net]
c++でサーバサイドを書くのってかなり特殊例だよな。どうゆう用途で使ってんの?

294 名前:デフォルトの名無しさん [2018/03/11(日) 19:05:26.44 ID:sEfAJdP7.net]
たまたま書いてみたら異常に早く安定してるので、これはもしかして?←イマココ。

295 名前:デフォルトの名無しさん [2018/03/11(日) 19:07:56.00 ID:sEfAJdP7.net]
BoostにHTTPやWebSock

296 名前:etが入ったんだよな。
これは新時代の幕開けでは。
[]
[ここ壊れてます]

297 名前:デフォルトの名無しさん [2018/03/11(日) 19:09:19.32 ID:sEfAJdP7.net]
C++でサーバーサイドを書く時代がやってきたのは間違いない。
誰が先頭を走るのか。
それだけだろう。

298 名前:デフォルトの名無しさん [2018/03/11(日) 19:11:16.04 ID:lK6s4tSM.net]
rorとかdjangoみたいなのほしい

299 名前:デフォルトの名無しさん [2018/03/11(日) 19:12:09.94 ID:sEfAJdP7.net]
今あるものをC++に変える必要は全くないが、今から新しい世界を切り開いていくものは、C++で始めたほうが効率よいだろう。

300 名前:デフォルトの名無しさん [2018/03/11(日) 19:20:03.44 ID:sEfAJdP7.net]
テンプレートエンジンはDOMが遅いから必要になるもので、もしもDOMが早ければ必要性は減るのかもしれない。
そういう観点から設計されたXML/HTMLライブラリがあっても良いのかもしれない。



301 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 19:48:29.23 ID:YmDYWSQj.net]
c++でのおすすめWAFってあるの?

302 名前:デフォルトの名無しさん [2018/03/11(日) 20:29:03.59 ID:sEfAJdP7.net]
商機ととらえるかどうかだな。

303 名前:デフォルトの名無しさん [2018/03/11(日) 20:39:34.47 ID:sEfAJdP7.net]
C++はとにかく早くて省メモリーなので、使わない手はない。

304 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 20:42:51.49 ID:YmDYWSQj.net]
今からc++使うくらいならrust使う

305 名前:デフォルトの名無しさん [2018/03/11(日) 20:59:23.60 ID:sEfAJdP7.net]
Rustはいずれ無くなる言語の感がある。

306 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 22:00:44.14 ID:7cxlreHu.net]
conceptもimportも言い出してからずっと仕様に入らない言語が何だって?

307 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 23:01:34.83 ID:QkfM2cXC.net]
>>296
実装したことのない馬鹿が言い出したことはスルーするのが吉

308 名前:デフォルトの名無しさん [2018/03/11(日) 23:29:35.41 ID:sEfAJdP7.net]
サーバーサイドC++を始めるなら今です!チュドーン。

309 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 23:44:01.66 ID:+qOnrRd1.net]
C++をNGした

310 名前:デフォルトの名無しさん [2018/03/11(日) 23:51:53.27 ID:sEfAJdP7.net]
小資本が大資本と戦う武器としてC++は良い選択になりえる。
時は来た。
今は良いタイミングだ。



311 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 23:54:55.14 ID:RDyvYZMG.net]
C++が速いのではなく早いならこのスレでは時期尚早でもう話すこと無いな

312 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 23:56:42.69 ID:P2AtP6SF.net]
オレもNGするか…さようならC++、信者に恵まれなかった言語よ

313 名前:デフォルトの名無しさん mailto:sage [2018/03/11(日) 23:57:17.88 ID:7xoreOvU.net]
Webサービス開発に絞った話な。
リリースの速さ必要ならRoR
堅さが必要ならJava, Scala, Go
これからはインフラ親和性も必要だから、サーバレスならGo, Python, Node

RoRの劣化コピーのオレオレFWで内ゲバやってるPHPは、もう選択肢にすらあがらんだろ
まともな審美眼と技術力を持ってればね

314 名前:デフォルトの名無しさん [2018/03/12(月) 00:00:42.95 ID:dVXA1iUP.net]
Nodeは危険すぎると感じたな。

315 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 00:30:16.07 ID:NCVAu2KZ.net]
>>304
具体的に何が?

316 名前:デフォルトの名無しさん [2018/03/12(月) 00:38:32.62 ID:dVXA1iUP.net]
危険性を理解したうえで使ってるのかと思ったらそうでもないんだな。

317 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 00:52:06.18 ID:NCVAu2KZ.net]
敏感ヴォーイの被害妄想かい?w

318 名前:デフォルトの名無しさん [2018/03/12(月) 01:26:46.12 ID:dVXA1iUP.net]
私が思うに、決定性を持つアルゴリズムで解析ができないものはすべて危険であり、ネットワークでは避けたほうが良い。
ここに反論するものはいるだろうか?

319 名前:デフォルトの名無しさん [2018/03/12(月) 01:30:16.67 ID:dVXA1iUP.net]
一方で、決定性を持つアルゴリズムは様々な理由をつけてネットワークから排除されてきた。
これはおそらく大衆の無知につけ込んだ出来事に違いない。
おそらく、決定性と言われても何のことかわからない人は、これを読む者の中にも多いだろう。
とりわけウェブエンジニアには無知が多い。
無知にも務まる時代から、無知でなければ務まらない時代へ。
そんな感じすらある。

320 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 01:39:07.46 ID:+NwoaeJY.net]
純粋関数の徒か?



321 名前:デフォルトの名無しさん [2018/03/12(月) 01:40:40.08 ID:dVXA1iUP.net]
現状でウェブ上のすべてのものが危険であり、容易にハックされ得る。
狙われた瞬間降参するしかないのだ。
原理的に防

322 名前:ョ方法が無いからだ。
SUNとMSはその点を熟知しており、ルールを変えようとするここ試みがあった。
この点に気が付いたものは少ないだろう。
そして試みは打倒された。
なぜそのような事が起こるのか。
それは銃を売るものも必要、そしてほとんどのものは自分は打たれないと考えるからであろう。
[]
[ここ壊れてます]

323 名前:デフォルトの名無しさん [2018/03/12(月) 01:43:53.06 ID:dVXA1iUP.net]
キミのシステムは危険だ!チュドーン。

324 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 10:40:24.64 ID:RPfHsums.net]
まぁ、nodeオンリーだと確かに辛いところは出てくるな。
JSでQRコードの画像作るロジックが言うほど重くないんだけどそれなりに時間かかる処理になってて、そのせいで全然パフォーマンス出ねえって思ったことある。
結局そこはGoで書いたQRコード作るだけのサーバにリクエストすることにした。
タイトなループが書けないは最初から考えとかないと辛い。

325 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 11:00:05.16 ID:FLBcUOOG.net]
>>313
QRコード画像を作る処理ですら重いんかnode.js。

326 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 11:05:26.37 ID:epBgW/7w.net]
まあ、技術者にありがちな典型的な「やりたかっただけ」だろうな
自分が一番よく分かってると思うが、辛いと思い込もうとしてるだけで、もっとシンプルでメンテや運用コストの低い解決方法は間違いなくあったはず

327 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 11:11:22.42 ID:cpvGEsWE.net]
そもそもqr生成なんてクライアントでやれやw
https://www.cssscript.com/flexible-client-side-qr-code-generator/

328 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 11:34:32.52 ID:87sijYPq.net]
node_modulesの中を見るとゲロを吐きたくなる

329 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 12:43:15.24 ID:RPfHsums.net]
>>314
重くはないが、シングルスレッドなので詰まる。
cluster使ったところで、ワーカー数使い切る。
npmにモジュールあったから、へぇと思いながら使ったらこうなった感じ。
やりたかったからと言うより要件だったから、かな。

>>316
クライアントは台数凄いけど基本IE8のエンタープライズモードという悲しいイントラネットなのよ。
ブラウザは無力と思わないとどうにもならん。
そいつらがリアルタイム更新したいとかで、万台のlongpollをどう捌こうと言うところで白羽の矢がたった感じ。
それ自体は良かったよ。

node_modulesはせめて圧縮できないかねえと思ってしまう。

330 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 20:08:05.60 ID:eaoNNYZy.net]
>>318
ワーカー数使い切るってどういう事?
基本cpu数で回していくもんじゃないの?



331 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 20:30:18.54 ID:UjJufH3o.net]
>>319
cpu数立てても、全部同じように同じタイトなループがあるハンドラで詰まって、結果フリーな子が居なくなるって意味のつもりだったよ。
外部へのioだったり、外部プロセスだったりと非同期で帰ってくるものを使わないと当たり前だけど意味無かった。
clusterも結局プロセス立ってるけど、そいつら自体はシングルスレッドだし。

332 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 21:58:15.37 ID:eaoNNYZy.net]
>>320
それってつまり実装の問題ってことか。
現在はasync-awaitを使えるから非同期処理もだいぶ書きやすくなったし、結果は変わってきそう。

333 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 22:03:20.44 ID:eaoNNYZy.net]
>>316
IE8でもbabelとか使えばクライアントサイドで行けたんじゃないのかな

334 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 22:18:38.74 ID:UjJufH3o.net]
babelは嫌いなのと、そもそも保証がしにくいのと、ポリフィルまみれになってパフォーマンスがゴミレベルになる。
エンタープライズモードはちょっと理解できないレベルに落とされてたりするし。
console.logが無いってどういう事?ってレベル。

335 名前:デフォルトの名無しさん mailto:sage [2018/03/12(月) 22:30:10.56 ID:hfB/eSkd.net]
console.log無いとかひどいなw

336 名前:デフォルトの名無しさん [2018/03/13(火) 01:11:16.42 ID:tZ7kTpHY.net]
しかしグーグルさんもkotrinに肩入れしたりdart2出したり、どうしたいのかね?

337 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 01:43:11.12 ID:XIDUN/3I.net]
Googleに開発環境や言語のセンスが絶望的に無くて常に迷走してるのは今に始まったことじゃないでしょ
ビジネスを理解してるMSやAmazonにはどうやっても勝てんよ

338 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 02:39:23.57 ID:eDfC6nrV.net]
PythonのライブラリはC言語とOSのセンスを踏襲することが多い
一方JavaやJavaScriptのセンスはSmalltalkの影響が微レ存

339 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 08:37:52.99 ID:zCWNq4J5.net]
googleの社員は皆思い思いに、プロジェクトを進めてる感じ。
でも結果的に技術的多様生が有効に働いてる。chromeがあるからインターネットプロトコルまで手を入れることが可能になったし。
appleはいずれ終わるけどgoogleは底が見えないよね。

340 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 09:43:42.39 ID:21E/SGjc.net]
【イーサリアム】Solidity本スレDAPPS】
https://mevius.5ch.net/test/read.cgi/tech/1520901794/



341 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 21:12:42.56 ID:CUB7TEfm.net]
ここで唐突に新言語が乱入だー

C言語の現代化を目指すC2
https://www.infoq.com/jp/news/2018/03/c2lang-modern-c

342 名前:デフォルトの名無しさん mailto:sage [2018/03/13(火) 23:32:12.39 ID:Z0di2vGk.net]
これか
c2lang.org/
Cより良さそう

343 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 00:03:14.25 ID:fxigNd06.net]
>>331
まだCより良さそうなんて判断は無理だろ。マクロ周りが全貌も見えてないし。

344 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 00:04:08.32 ID:7QXpRona.net]
配列の範囲外アクセス検知強化してたら有能

345 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 00:27:05.17 ID:D1sQyr+F.net]
C2は機能は悪くないんだがCの記法を引きずってるのが足かせになりそう
まあそこを変えたらC2なんて名乗れなくなるか

346 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 01:05:08.25 ID:ZGpe5WQ6.net]
>>328
1つの言語でいいのになんでおもいおもいに勝手に言語作るの?

347 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 01:10:36.80 ID:7QXpRona.net]
ベストな言語は未だ存在しないからだよ

348 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 01:13:29.13 ID:+4V1rKt1.net]
まあ99.9%の仕事じゃ既存の言語使った方が効率いいわな。
本当のところ、新しい言語なんてマーケティング的な意味以上のものがあると思えん。

349 名前:デフォルトの名無しさん [2018/03/14(水) 02:02:52.14 ID:TtlwJ4jl.net]
同じものを作り続けるならそうだろうけど、普通要件に因るでしょう

350 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 02:44:51.50 ID:VWZtH1+z.net]
C2?
まーた波括弧言語か……

OCamlのシンタクスを波括弧にする改悪だけの凄まじいクソだったReasonのトラウマが……
Rust がML系シンタクスだったら良かった人生だった



351 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 02:50:33.24 ID:gKR2N6Y9.net]
えーみんなオフサイドルール好きなの?

352 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 03:09:29.30 ID:BF4uYFfL.net]
勝手にc2とか名乗って問題にならないのかな
cの規格をc99、c11みたいに表示するから言語名+数字はちょっと紛らわしいと思う

353 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 03:47:25.69 ID:lwj22l3u.net]
フォーラムちょっと読んでみたけどまだまだ全然まともなものとは思えんで
フォーカスしてる用途が不便を楽しむ遊び、ポートする楽しさ以外見えてこない

354 名前:デフォルトの名無しさん [2018/03/14(水) 07:37:15.69 ID:TtlwJ4jl.net]
オフサイドルールなんて嫌
そもそもrustのブロックを表現できないじゃないか

355 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 07:56:53.64 ID:0fdBf/WL.net]
>>340
ML系シンタクスってオフサイドルールとは違うと思うけど?

356 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 09:59:50.84 ID:mT31QN2T.net]
細かい字面の違いなんぞどうでもいいわ

357 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 12:08:19.96 ID:OBFQDHoW.net]
見た目は波括弧だが意味は中括弧か大括弧
一行で書けない長いやつ
だがラムダがあったら小括弧の内部に大括弧を書くことがあるから意味がない
Pythonの波括弧は集合か辞書を意味する
Haskellの波括弧は囲んだ部分のオフサイドルールを無効にする機能

358 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 13:10:17.73 ID:OcK2GZgi.net]
C2を名乗るなら既存のヘッダファイルとモジュールの両立を真っ先に考えないと
現状ヘッダファイルを手動で書き直さないといけないのでは、Cと互換性のない他の新興言語と何も変わらん
本家Cに提案されているモジュールが採用されたら存在意義を失う

359 名前:デフォルトの名無しさん [2018/03/14(水) 13:18:43.15 ID:9411JVzT.net]
緊急速報

(+)【IT】AMD製CPUに「致命的」欠陥 悪用でPC乗っ取りも
https://asahi.5ch.net/test/read.cgi/newsplus/1520989318/

(BIZ+)【CPU】AMD製CPUに「致命的」欠陥 悪用でPC乗っ取りも
https://egg.5ch.net/test/read.cgi/bizplus/1520995986/

(ゲハ)【PS4/XONE】AMDのCPUに致命的な欠陥【Ryzen】
https://krsw.5ch.net/test/read.cgi/ghard/1520998474/

360 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 14:10:00.37 ID:OBFQDHoW.net]
コンパイルはできるがリンクができないのが現代
未来ならまあわかるが現代化を目指してもやっぱりリンクができない



361 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:19:32.06 ID:D1sQyr+F.net]
C2使ってみようと思ったらこれCのコードに変換してるだけだった
これくらいなら同じものすぐに作れる人いそう

362 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:36:37.90 ID:hEhRPYgv.net]
それくらいの方が見通しが良くていいかもな

363 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:54:14.79 ID:fFm4rqzY.net]
Cのプリプロセスのマクロとかが遅いからとか書いてなかったか?
C2をCに変換するトランスパイラじゃ意味ないじゃん

364 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 19:40:13.34 ID:IogLKo4e.net]
そんなんどこに書いてあるの?

365 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 19:59:28.97 ID:fFm4rqzY.net]
>>353
コンパイル時間を大幅に遅くするヘッダファイルの使用が問題ってそういうことじゃないの?

366 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 20:12:57.97 ID:hEhRPYgv.net]
Include先がまた別のファイルincludeする大連鎖include地獄のことを言ってるんじゃない?

367 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 20:26:52.27 ID:+4V1rKt1.net]
C with class じゃないですか。。

368 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 20:53:53.48 ID:ocseprwf.net]
ポリモーフィズムはともかく継承もインターフェイスも仮想関数も型クラス・トレイトも無いように見えるがこれをクラスと呼ぶのか……?

369 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 23:12:31.41 ID:hxEXxDVi.net]
Nim,Crystal あたりと合わせて altC って感じやな

370 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 23:35:24.83 ID:9KFxXS/p.net]
3つ眺めてみたけどnimに惹かれる。
こんな言語あったんか…なんでこんなん知ってんだお前ら



371 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 03:29:44.83 ID:FoOjJG9w.net]
nimいいじゃんこれ

372 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 05:29:41.26 ID:q+mljZsH.net]
ここのスレに顔出しててNim知らないのか…
まじで知名度ないな

373 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 07:38:27.49 ID:wNeo1CJk.net]
NimはQiitaとかでたまに話題に上がるから
次世代系の中では比較的有名なのかと思ってた

374 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 15:07:19.69 ID:Gk47k1T6.net]
変な奴に好かれて評価を落とした言語という印象が付いてしまった感がある
実際触ると構文はPython機能はDelphiプラスD言語って感じで性能も良好なんだが
モダンな感じはしないのが弱いかな
特にPascal風のバリアントレコードを引きずってるのが痛い。代数的データ型ぐらい欲しい

375 名前:デフォルトの名無しさん [2018/03/15(木) 16:21:52.17 ID:81MsBC+z.net]
このスレ来てるのにNix言語も知らないってマジ?

376 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:26:52.54 ID:OYGfq7D7.net]
知らんかったから調べたけどこれはいいや…俺は惹かれなかった。しかし検索性悪いな

377 名前:デフォルトの名無しさん [2018/03/15(木) 20:25:23.49 ID:0iJywA+8.net]
>>339
波括弧こそ至高

378 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 20:49:12.32 ID:9ujU8BdG.net]
マクロとかメタプログラミング向けの機能以外はこれといった特徴無いように見えるね。
しいて言えばgoやrustみたいにアクが強すぎないところかな?
あるいは、pythonのようなオフサイドルールでネイティブコンパイルできるってのが
一部の人の琴線に触れるような気がしないでもない。

379 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 20:52:20.23 ID:thSPLixB.net]
何よりCを凌駕するというとんでもないパフォーマンスを持つという記事の存在が大きい

380 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 21:48:11.64 ID:jcfpYhJu.net]
バリアントレコード位しか c(++) より速くなる要素無いがな…



381 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:05:28.04 ID:bzT8+O3E.net]
cより速いとか大抵特殊な条件下だったりの煽り記事だけどね。

382 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:37:00.89 ID:gNl1NP6h.net]
煽り記事に煽られて有名になった言語

実際、結構複雑なことしてもc並みに速いんかねえ……?

383 名前:デフォルトの名無しさん [2018/03/15(木) 22:43:14.62 ID:AY8mFBH0.net]
Cへのトランスパイラ言語は何やってるか判ってれば同等になるでしょ。
まあ、"Cより早い" が意味があった試しは無い。

384 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:51:44.82 ID:gNl1NP6h.net]
複雑なことっていうのは、Cにどう変換されるか負えないくらい複雑なことってことだよ

385 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 23:02:50.82 ID:jcfpYhJu.net]
nim performance で検索してトップに出てくる
blog.johnnovak.net/2017/04/22/nim-performance-tuning-for-the-uninitiated/

ではレイトレースというごく単純な処理で出てくるコード見ながら色々やってるな
inline 指定したり

複雑な処理は c で書いても複雑(で恐らく遅いの)だから、
簡単な処理が速く書ければいいんじゃない?

上記ページによると Java と JS が数値計算案外速くて笑う

386 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 23:19:56.51 ID:AY8mFBH0.net]
昔LuaJITはぇーって盛り上がった事あったなあ…

387 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 06:03:27.99 ID:VHgYZCtO.net]
pythonが遅いからなぁ

388 名前:デフォルトの名無しさん [2018/03/16(金) 07:44:37.90 ID:fr9o0CI5.net]
今年もrustが愛され言語No1に輝きましたな
スタックオーバーフローにはモジラの息のかかった人しかいないのかな

389 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 09:48:10.52 ID:ooeu0A1b.net]
支持率改竄が愛され陰謀論ナンバーワン

390 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 20:00:27.38 ID:ZX5ucnyZ.net]
>>231
オマエが馬鹿だろ。死ね



391 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 20:38:34.09 ID:4KsfexYH.net]
Cより速いを名乗るには、C言語では吐けないアセンブリパターンを吐く必要があるはずだが
現実にはバックエンドが同じなんでC言語でも再現可能だからなあ
(処理系固有のattributeやpragmaを書き足す必要がある場合も多いだろうけど)

392 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 21:14:11.01 ID:sL/r1GAp.net]
そこでmasmですよ。

393 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 21:27:41.47 ID:r/T+njCz.net]
現行バージョンのメジャーなライブラリでもmalloc/free (new / delete) が結構遅いから
rpmalloc 辺りを使うコード吐くだけで「処理によっては C より速い!」が実現できる気もする

394 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 22:03:02.48 ID:bARX2ip1.net]
非標準のライブラリを使ってはいけないとかCが遅くなるルールを何

395 名前:ツか追加すればいい
他にも、変更されたら困るデータはコピーを取る手間がかかる
immutableを保証すればその手間がないからCより速い
[]
[ここ壊れてます]

396 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 22:48:15.19 ID:r/T+njCz.net]
そう言われてみると他のスレッドからアクセスされないメモリ/オブジェクトは
スレッドローカルなプールからアロケートするとか
その他のロックも省略できるとか色々最適化の余地あるな

397 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 23:45:02.47 ID:pyLfI6yU.net]
*2が勝手に足し算に変わるとか、そういう最適化を勝手にやってくれてるな
あとはどうあがいてもプロが最適化したCに勝てるわけがないし、素人が適当に書いたCと素人が適当に書いたnimのどっちが速いかだな

398 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 00:00:18.49 ID:Fbe/Dv6l.net]
>>385
前時代的の異物、死ね。
速度の必要な部分だけを切り出して、それだけをアセンブリコードにすればいいだけ。

399 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 00:01:17.17 ID:Oh0Aao6E.net]
>>385
>>374のリンク先の記事はある程度参考になると思う

400 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 00:02:21.86 ID:a9tSZ89y.net]
なんで死ねって言われたのか理解できない
アセンブリコードまで自前で書くほうが前時代の遺物感強いと思うけどなあ



401 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 00:44:26.42 ID:Fbe/Dv6l.net]
>>388
理解できないなら、死ねばいいだけ。

402 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 01:00:08.76 ID:aJVXG6RF.net]
Cに代わる次世代言語はアセンブラやC、C++で書かれた
高速な実装を呼び出す1行のコードが書ければ十分ってことだろう。
そうしてそれがわからないなら死ねばいい、と。

403 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 01:12:32.40 ID:U1WdVkRs.net]
普通に考えたら高速な実装を書ける言語がアセンブラやC、C++だとすれば
Cに代わる次世代言語も同じように高速な実装を書けなきゃ代わりにならない

404 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 01:36:41.05 ID:Z+moL2ES.net]
その普通に考えるってのが前時代的だな
スピードではなくフライングで勝つサイコパスのような考えができない

405 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 01:53:39.29 ID:a9tSZ89y.net]
Nimは速い上にCよりずっと楽に書けるんだが

406 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 02:01:20.25 ID:U1WdVkRs.net]
>>392
ということは最近は「代わり」は置き換え可能な存在という意味ではなくなったんだね
それなら前時代的と言われても仕方がない

407 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 10:06:45.76 ID:wWRkBHq+.net]
まあ最近でも低レイヤーの仕事としてGPUのアセンブラチューニングって話はあるけど、
どうせユーザー側なら言語とか関係ないけどね。
結局どんな言語使ってもどうせライブラリ呼ぶだけのお仕事でしょう。

408 名前:デフォルトの名無しさん [2018/03/17(土) 10:13:19.41 ID:btDjh9Sw.net]
Clojureの話する?

409 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 10:17:40.12 ID:zOFcLIxk.net]
プロが本気で書いたCに勝つのは無理だろ
でも最適化しやすくして読みやすく書いてもプロが本気で書いたC並の速度出る言語なら…

410 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 10:47:29.26 ID:/AWOYA6X.net]
なんで速さの勝負になるかよく分からんし
速さしか考えないならCは中途半端やろ



411 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 10:59:08.85 ID:Z+moL2ES.net]
>>394
バグを正解に置き換えるならいいが、バグではないものをその1bit棒で叩くのは危ない

412 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 11:18:24.87 ID:Z+moL2ES.net]
immutable云々はデバッグ目的で使えるからCを置き換える可能性はある
速さはおまけ

413 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 11:46:47.41 ID:4zm/Hii4.net]
強力なおまけは魅力的ね

414 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 13:48:58.28 ID:VXA170pJ.net]
これまでどれだけの言語が
「Cと同等!」、「Cを置き換える!」って言って来たことか。

415 名前:デフォルトの名無しさん [2018/03/17(土) 14:38:29.12 ID:6EPcIvNf.net]
Nimの特徴はC並みの実行速度でCより手軽に書けることですか…
なんだかGoとキャラが被ってる気が…
Nimって生ポインタ扱えるの?

416 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 14:48:40.03 ID:TnL0M0fs.net]
でもCより速いVM言語とかある

417 名前:オ。 []
[ここ壊れてます]

418 名前:デフォルトの名無しさん mailto:sage [2018/03/1 ]
[ここ壊れてます]

419 名前:7(土) 14:57:44.26 ID:4zm/Hii4.net mailto: NimはどっちかというとOCamlに近い存在だろ
Cの置き換えは狙ってねえよ
[]
[ここ壊れてます]

420 名前:デフォルトの名無しさん [2018/03/17(土) 15:27:21.87 ID:6EPcIvNf.net]
OCamlか…そういえばそんな言語あったなぁ
あれもモダンなコードが書けるうえにC並みに速いって話を聞く
Rustのコンパイラは初めOCamlで書かれていたということは知ってる
聞く限りにはかなり良さそうなのに全く普及する気配がないのは何故?



421 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 15:27:38.42 ID:Nmk4+afD.net]
実行状況に応じて実行しながら最適化ができるから原理的にはVM言語のほうが速くなる
まあその理屈だとインタプリタが最強なわけだが

422 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 15:49:23.67 ID:4zm/Hii4.net]
なんか知らんけどこのスレには熱心なOCamlアンチがいるよな

423 名前:デフォルトの名無しさん [2018/03/17(土) 15:57:42.27 ID:6EPcIvNf.net]
なんか知らんけどこのスレには熱心なRustアンチもいるよな

424 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 16:24:52.64 ID:QOkOyKQG.net]
おるな

425 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 18:15:28.10 ID:zOFcLIxk.net]
>>403
Goは遅いぞ

426 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 18:36:45.18 ID:/KW2HbwM.net]
言うほど遅いか?

427 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 18:40:43.08 ID:zOFcLIxk.net]
>>412
Cとかと比べたらね
「速い」ってほど速くはない

428 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 18:44:17.42 ID:zOFcLIxk.net]
JVMよりちょっと速いレベルでしょ
一般的な用途では十分だけど

429 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 18:59:01.64 ID:4zm/Hii4.net]
そんな十分とか言い出すなら俺なんかPythonの速さでも十分だわw

430 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 19:14:57.81 ID:EY8EOa8A.net]
>>407
「実行状態を調べて最適化」なる余分な仕事の分だけ遅くなる
最適化でそのオーバーヘッドを取り戻せるかどうかは自明ではない



431 名前:デフォルトの名無しさん [2018/03/17(土) 19:40:49.75 ID:/yJWANaR.net]
>>390
あー。つまり、シェルスクリプト。

432 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 19:58:26.68 ID:4zm/Hii4.net]
シェルスクリプトは次世代言語だったのか……

433 名前:デフォルトの名無しさん [2018/03/17(土) 20:03:43.73 ID:/yJWANaR.net]
#!/bin/sh

ls

もう、これだけでCで書かれた超高速なlsが実行される。

434 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 20:12:06.50 ID:4zm/Hii4.net]
シェルスクリプトが次世代言語とは流石に分からんかったわ
死ななきゃならんのか……

435 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 22:19:21.09 ID:jxvv8BHS.net]
サイコパスあるある
死傷者が出ても見て見ぬふりをする

436 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 01:12:13.80 ID:b+jeKp+S.net]
Cに変わる言語は遅い部分をCで書いて"代替"するのか…

437 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 02:11:42.71 ID:cPcsfedK.net]
速い遅いよりも矛盾をなんとかする方が重要だ
もし速さを優先して矛盾を野放しにしたらどうなるか全く予測できない

438 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 02:55:12.96 ID:zE4QVnSy.net]
こりゃまた難しいのがきた

439 名前:デフォルトの名無しさん [2018/03/18(日) 03:18:03.86 ID:GxVko3yL.net]
同じC言語でも速さに違いが出るのに

440 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 11:11:10.49 ID:cPcsfedK.net]
ソフトだからね
なんで同じソフトが違うハードで動くのかという説明から始めないといけないかも



441 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 14:10:28.16 ID:9iYD44BB.net]
Cの良さは
変換される機械語との違いが滑らか
それでいてメモリ部分はある程度抽象化してくれている。
てなところなんでないかね。

他の言語は「変換される機械語との違いが滑らか」を無視しすぎてる。

442 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 14:13:46.06 ID:fKWd4mcG.net]
先ずはそのよく分からん「変換される機械語との違いが滑らか」を定義するところからガンバレ

443 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 14:27:58.24 ID:JHP9/eea.net]
セマンティックギャップの話かな

444 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 14:33:49.99 ID:E4zJaTX6.net]
なんやなんやGoの悪口かいな?

445 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 14:36:05.49 ID:9iYD44BB.net]
わからんのなら絡んでくんなよ。
自分でコード書いて gcc -S でコンパイルしてみろ。

446 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 15:11:52.29 ID:ewHMGPnU.net]
説明できないのね

447 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 15:20:21.22 ID:RiuyGRlC.net]
言語を1個2個と数える時点で滑らかさが足りない
C/C++は1個なのか2個なのか定義できないところが

448 名前:ハ白い []
[ここ壊れてます]

449 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 15:30:05.63 ID:95A2sExk.net]
言語を1個2個と数える

頭の中で考えていることの正しさ云々はさておき、
他人と話が通じない人は対話を試みないでくれ

450 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 15:48:06.10 ID:jQGugCpv.net]
「エレガントなコード」みたいな話?



451 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 15:50:34.37 ID:RiuyGRlC.net]
>>434
サイコパスじみてきたな
お前みたいなのが次世代だよ

452 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 17:00:52.16 ID:2o82+Dxy.net]
https://ziglang.org/
Dスレにあったzig
こっちのほうがCのヘッダーを直接使える分c2の名前にふさわしい

453 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 17:11:21.46 ID:sSGcrtJx.net]
そのうちzagが出そう

454 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 17:22:37.12 ID:2o82+Dxy.net]
まあ、ドキュメントを読む限り未完成っぽいんだよなあ
c2もそうだけど

455 名前:デフォルトの名無しさん [2018/03/18(日) 19:21:34.04 ID:bcfd9xTZ.net]
Life Inside China's Total Surveillance State

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


中国企業の端末やアプリを使っていると日本人も中共に監視されているのと同じ

456 名前:デフォルトの名無しさん [2018/03/18(日) 20:43:37.23 ID:enUduEc8.net]
Haskellブームは終わったのだろうか。

457 名前: mailto:sage [2018/03/18(日) 20:55:54.48 ID:ojW1vPJY.net]
>>441
C++ の江添氏が新たに始めた、というくらいだから、水面下で脈々と支持層を広げていっているに違いない

458 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 22:16:49.47 ID:vUL4g3CK.net]
水面から出たら起こしてくれ(スヤァ…

459 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 23:32:14.22 ID:Eey0KM1h.net]
OCamlより遅いやん?

460 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 23:59:48.70 ID:ksiDZyZW.net]
>>444
絶望的に頭悪いな。
IT系の仕事は辞めた方がいい



461 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 00:13:58.89 ID:QoeeCiYG.net]
>>444
遅くて不便な言語が流行る
→ C++で書き直す需要が生じて業界が繁栄
この流れ大切

462 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 00:24:03.98 ID:P7gHkF5x.net]
頭良い人間の気持ちや陰謀を勝手に忖度して勝手に言語化してるように見える
自分の言葉ではないし自分の頭で考えてないだろ

463 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 00:34:26.02 ID:lFWK67Qs.net]
>>447
その内容どれが当てはまるの?アンカーつけて

464 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 00:47:57.84 ID:P7gHkF5x.net]
架空の頭良い人間の気持ち (>>445) や陰謀 (>>446)

465 名前:デフォルトの名無しさん [2018/03/19(月) 00:55:58.20 ID:pEbY2e08.net]
Haskellの誇大広告のおかげで関数型全般が胡散臭くなった。

466 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 06:34:05.14 ID:3pEfrTg9.net]
ずっと前はてなブログやQiitaでHaskellを崇めてた人全員Haskellで特に何か作ることもなく他の言語に移って行った説

467 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 07:09:28.84 ID:TWWfpY71.net]
OCamlはなんで演算子は多重定義できないのか結局ようわからん

468 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 07:31:36.71 ID:uweaBiN7.net]
アドホックポリモーフィズムは邪教だから。

469 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 08:19:54.52 ID:nlNc4C3i.net]
Stack Overflowが2018年の調査結果を発表。一番使われている言語はJavaScript、一番好きな言語はRustに
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の正式な開発言語となったのがきっかけで注目され始めたと言ってもいいので、急速に人気が上昇していると言えるでしょう。

470 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 08:27:35.84 ID:TWWfpY71.net]
>>453
(+)は ’a -> ‘a -> ‘aじゃない
割に(=)は’a -> ‘a-> boolなんだよな
便利だからいいけど



471 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 09:44:30.00 ID:P7gHkF5x.net]
演算子だけでなく定数にもアドホック多相がある
例えばπがfloatにもdoubleにもなるとか

472 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 12:21:13.21 ID:dH7nnHk9.net]
>>454
Rustの一位が意外って…
これ書いたヤツ去年と一昨年のランキング見てないのかな?

473 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 12:40:57.38 ID:P7gHkF5x.net]
mozillaやgoogleを学閥か何かのように考えているのかね
おまえどこ中だよって

474 名前:デフォルトの名無しさん [2018/03/19(月) 13:07:46.72 ID:pEbY2e08.net]
つまり組織票が存在する。

475 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 13:21:48.40 ID:P7gHkF5x.net]
じゃあPython Go Kotlinの3つが1つにまとまったら組織票?が約3倍になるのか
そうだとしても、たかが統計のために言語仕様を犠牲にするなんてバカバカしい

476 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 19:12:02.46 ID:fFp4LVyf.net]
Swiftは死にそう?trySwiftとかは話題になってるけど
マルチプラットフォームなフレームワークが続々登場してるからイマイチかもなー。
正直obj-cのほうが好きかもしれない。違和感なくc++のライブラリが使えるし

477 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 19:35:30.36 ID:I7PCjnkp.net]
旧世代言語の話ばっかり

478 名前: mailto:sage [2018/03/19(月) 20:16:40.93 ID:lFWK67Qs.net]
>>462
とびっきり最新世代の言語を一つお勧めいただけますか?
回答いただいてから一週間でマスターしてみせます

479 名前:デフォルトの名無しさん [2018/03/19(月) 21:07:56.60 ID:pEbY2e08.net]
次世代言語織田信長というのがあったはず。

480 名前: mailto:sage [2018/03/19(月) 21:13:56.87 ID:lFWK67Qs.net]
>>464
www.brl.ntt.co.jp/people/hirata/Papers/on-2000j.pdf 404 NOT FOUND



481 名前:デフォルトの名無しさん [2018/03/19(月) 21:18:47.38 ID:pEbY2e08.net]
このスレに出てきた各種言語もいずれ404になるんだろうなあ。

482 名前:デフォルトの名無しさん [2018/03/20(火) 01:53:46.76 ID:/+MVnq9/.net]
>>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辺りは次世代言語と呼ぶにはちと古いかも?

483 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 02:53:37.44 ID:LX463VTZ.net]
次世代言語というのは時期だけで決まるものなのか?
typescriptやgoよりも、ocamlやhaskellのほうがよっぽど次世代感あるが

484 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 03:35:46.01 ID:/+MVnq9/.net]
>>468
次世代言語をどう捉えるかによるが少なくとも時期を1つの目安にすることは

485 名前:出来るだろ?

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

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

話題提供を目的に書いたので批判ではなく忌憚のない意見や感想を求む
[]
[ここ壊れてます]

486 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 04:12:48.94 ID:geezFnQ4.net]
個人的には広く利用されていないものは次世代とも前世代とも呼びたくない
今であれば C / C++、Java、C#、JavaScript が担っているような用途で
この先使われるような言語を次世代言語と呼びたい

487 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 04:18:48.83 ID:LX463VTZ.net]
バッサリ切り捨てた仕様というなら初期のJavaだってそうだし
親言語との共存を目指す派生言語というならObjective-Cだってそうだろ
全然新しくない

488 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 05:07:06.58 ID:/+MVnq9/.net]
>>471
何でプログラム以外のところまで抽象化したがるんだ?

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

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

行きすぎた抽象化は時に大事な情報までも削ってしまうということを頭の片隅に置いておくべきかと…

489 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 05:46:21.35 ID:LX463VTZ.net]
何言ってんだ。Javaの登場した1995年には貴方の表でも既にHaskellがあって
C++でももう<algorithm>があってbind1stとかやりまくってたぞ
トランスパイル後の可読性なんてそれこそ無数のプリプロセッサが気を遣ってきただろ
CoffeeScriptのことは知らんが、遠い過去にあった素晴らしい処理系のことは忘れて
近い過去にあった特定のゴミを超えていればいいという話なのか?違うでしょ

490 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:15:12.86 ID:/+MVnq9/.net]
>>473
1995年に既にHaskellは存在していたが1995年当時のHaskellに今ほどの知名度はないよね
知名度のない言語の技術はまだ確立していない技術と同義だ
あと今さらだけど初期のJavaとGoって言うほど同じじゃないよね
Goは例外も継承も削ってるし、interfaceだってGoとJavaでは名前が同じだけで別物だし
あとC++のテンプレートとJavaのジェネリクスは似て非なるものだ
同じものとして扱われても困る
プリプロセッサーとトランスパイラーも別物だよね…
最後の一文だけは同意するが…その他はこちらとしても「なに言ってんだ?」状態なんですが…



491 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:25:50.52 ID:/+MVnq9/.net]
追記
プリプロセッサーって可読性に気を使ってたの?それは知らなかった
あんな読みにくくてプリプロセッサー通した後のコードが想像できないもの
可読性なんか一切考慮してないものだと思ってたわ

492 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:30:44.46 ID:LX463VTZ.net]
あ−、1995年だとC++は標準化前だからちょっと言い過ぎた
当時は独自のテンプレートライブラリも林立してた

493 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:34:07.57 ID:eQ1biRix.net]
技術が実在したのは客観的事実だからなあ
ユーザーに情報が伝わらなければ実在しないのと同じという理屈を受け入れてしまったら
情報を操作すれば客観的事実をいくらでも改竄できることになってしまう

494 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:36:41.10 ID:LX463VTZ.net]
>>474
個々の機能のことを言ってるんじゃなくて、当時の目新しいあれやこれをさっくりと無視して
絞り込んできたのが登場時点のJavaの立ち位置だったということ
時代が違うから絞りこまれた結果も違うが、コンセプトとしては似たようなもんだ

495 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:51:48.33 ID:jSYCaWsz.net]
関数型ゴリゴリて感じのAlgebra of Programmingも1996年て見てビックリしたわ。
当時からやってる人からすると、今更感があるのかもね。

496 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:54:01.38 ID:/+MVnq9/.net]
>>477, >>478
技術が実在していたのと確立していたのは別物と考えている
ここから先は個人的な憶測も入るので賛否両論あるだろうということを前置きしておく
Javaはバージョンアップしても後方互換性を保つタイプの言語なので
C++のひし形継承問題みたいな仕様バグは絶対に避けたかっただろうと思われる
そうすると色々な言語で既に使われている枯れた技術じゃないと安心して採用できないだろう
JavaはGoのようにあえて採用しなかったのではなく、採用したくてもできなかったんだろうと考えている
実際のところどういう方針だったのかはJava言語の開発者に聞いてみるほかないが…

497 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 07:09:14.80 ID:/+MVnq9/.net]
もしくはC#のように取り敢えずリリースして
後からどんどん足していこうという考えだった線もあり得る
いずれにせよ、Goのように技術的にも開発期間的にも採用できるものを
シンプルに保ちたいというだけの理由であえて採用しなかったという線は薄い

498 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 07:13:20.18 ID:eQ1biRix.net]
Pythonなら一切型を書かない意図は明確だがGoは微妙
意図を伝えるという点では穏健派より過激派の方が有利だ

499 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 07:20:10.14 ID:/+MVnq9/.net]
>>478
Javaは当時の目新しいあれやこれをさっくりと無視したのかもしれないけど
Goは継承や例外やジェネリクスなど現在当たり前なあれやこれやもさっくり無視してる
もっと言うとwhileやdo-whileまで無視している
クドイようだがやはり初期のJavaとGoはコンセプトから全然違うものと私は思う

500 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 07:58:37.61 ID:ZzmZL45/.net]
ポインタを消したのがJava
継承を消したのがGo



501 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 08:40:55.19 ID:eQ1biRix.net]
ポインタは消えてない
値型かポインタ型のいずれかを選べる型システムをやめただけ
ジェネリクスも型
継承も型
全ての原因は型だった

502 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 09:00:55.46 ID:xTcfPcIk.net]
「Javaにはポインタがない」という言説をそろそろ撲滅したいです。
https://web.archive.org/web/20071111061957/java-house.jp/ml/archive/j-h-b/028505.html

503 名前:デフォルトの名無しさん [2018/03/20(火) 11:36:56.30 ID:J0Id73NT.net]
ポインタが使えない糞言語。

504 名前:デフォルトの名無しさん [2018/03/20(火) 11:38:39.53 ID:J0Id73NT.net]
ポインタは凄い発明だよな。

505 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 14:05:57.79 ID:2KGHSNsy.net]
matz「参照とポインタの違いは常識(キリッ」
ttp://kmaebashi.com/seiha/hosoku001.html

506 名前: mailto:sage [2018/03/20(火) 14:07:55.13 ID:PD8yAuaT.net]
>>486
二重ポインタはありませんので「Java にはポインタがある」とはいいきれないのではないでしょうか?

>>467
rust に決めました!

507 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 14:19:51.44 ID:eQ1biRix.net]
ジェネリクスの記法で考えると
二重 Pointer< Pointer<T> > ができない言語を作る方が逆に難しい

508 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 14:29:34.01 ID:ZzmZL45/.net]
Fortranは無理やで

509 名前:デフォルトの名無しさん [2018/03/20(火) 14:39:50.65 ID:J0Id73NT.net]
プロセッサのインストラクションって暗黙に型を要求するよね。
一方で変数、アドレスに型はない。
そこでポインタなんですよ。
これは大発明だと思いますね。

510 名前:デフォルトの名無しさん [2018/03/20(火) 14:41:16.73 ID:J0Id73NT.net]
C++には夢とロマンがいっぱい詰まってるような気がする。
頭の良い若者にはぜひC++をやっていただきたい。



511 名前: mailto:sage [2018/03/20(火) 14:48:34.63 ID:PD8yAuaT.net]
>>494
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。

C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:

- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)

- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。

言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。

512 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 14:49:26.38 ID:ZzmZL45/.net]
何度見ても名文

513 名前:デフォルトの名無しさん [2018/03/20(火) 14:50:16.56 ID:J0Id73NT.net]
>>495
まあ正論だね。
夢も希望もない正論だけど。

514 名前:デフォルトの名無しさん [2018/03/20(火) 14:57:07.27 ID:J0Id73NT.net]
Cは40年以上、C++は30年以上、一線で活躍する言語であり、これらの言語が無くならなかったのにはそれなりの理由があるはず。

515 名前:デフォルトの名無しさん [2018/03/20(火) 15:01:30.33 ID:J0Id73NT.net]
つまりポインタです。

516 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 15:13:14.76 ID:fj312v7r.net]
いいえプラズマです。
plasmalang.org

517 名前:デフォルトの名無しさん [2018/03/20(火) 15:24:04.02 ID:J0Id73NT.net]
GCはおそらくリークを増やすのではないか。
Node使ってみてそんな感想を持った。
長時間稼働時代のいま、RAIIこそが本命だと感じました。
※C++でサービス書いてみた結果の感想です。

518 名前:デフォルトの名無しさん [2018/03/20(火) 15:25:51.52 ID:J0Id73NT.net]
RAIIを徹底することによってリークを無くすことができる。
これは発見が容易になるからでもあります。

519 名前:デフォルトの名無しさん [2018/03/20(火) 16:49:42.05 ID:J0Id73NT.net]
私はポインタを軽視する風潮に警鐘を鳴らそうと思います。

520 名前:デフォルトの名無しさん [2018/03/20(火) 20:00:27.39 ID:/+MVnq9/.net]
>>494の「C++には夢とロマンがいっぱい詰まってる」の直後に
>>495の「C++ではゲロゲロのゴミが生産される」で草

>>490h
Rustを一週間でマスターするのはムリだと思うよ
あの言語の学習コストを他言語のそれと同じものと考えてると痛い目に合うよ



521 名前: mailto:sage [2018/03/20(火) 20:38:30.06 ID:PD8yAuaT.net]
>>504
アドバイスありがとうございます、チュートリアル最初の数当てゲームが終わったところです

522 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 20:39:04.23 ID:tLYOcIpU.net]
テストを用意すると自動的にコード生成するのが次世代言語じゃないかな?

523 名前:デフォルトの名無しさん [2018/03/20(火) 20:41:08.57 ID:J0Id73NT.net]
>>504
WindowsのアプリケーションはほとんどがC++で書かれており、ゲロゲロのごみとはそういったもののことを言うんですよ。
例えばChromeとかね。

524 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 21:01:58.36 ID:eQ1biRix.net]
>>495が偉いのはC++の代わりにJavaではなくCを選ぶところ
C++を使いたくなったらすぐ掌を返せる絶妙な位置

525 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 21:03:53.47 ID:LX463VTZ.net]
>>508
Linusの言だぞ

526 名前:デフォルトの名無しさん [2018/03/20(火) 21:07:40.66 ID:J0Id73NT.net]
とはいえ、C++にはプログラミングの面白さ全てが詰まっている。

527 名前:デフォルトの名無しさん [2018/03/20(火) 21:08:30.04 ID:J0Id73NT.net]
頭の良い若者にはぜひC++にチャレンジしていただきたいですね。
※馬鹿にはお勧めしません。

528 名前:デフォルトの名無しさん [2018/03/20(火) 22:15:07.02 ID:/+MVnq9/.net]
くっ…こいつ(ID:J0Id73NT)全然引かねぇなww
>>501の「RAIIこそが本命だと感じました」に関してはある程度同意するが
RAIIならC++よりRustのほうが優れてると思うけどね。Dropトレイト便利だよ
次世代言語スレで次世代のRustではなく頑なにC++を推す理由は?

529 名前:デフォルトの名無しさん [2018/03/20(火) 22:22:14.78 ID:/+MVnq9/.net]
>>505
RustはHaskellと同じで実践で役に立つかはともかく学習しといて損はない言語だと思うので頑張って
言ってる自分もいまだに結構な頻度でコンパイラと格闘してるのだが…
とりあえず所有権・借用・ライフタイムの概念まで終わったら感想を聞かせてほしいかな…

530 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 23:32:04.40 ID:ojRlp1ye.net]
c++ で所有権意識して書く方が、rustでunsafe周りを使うより楽で安全だから。



531 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 23:35:49.06 ID:ck80uwiX.net]
C++20でうるう年サポートだってよwww

……なんだようるう年って他にやる事あるだろ…………

532 名前:デフォルトの名無しさん [2018/03/20(火) 23:47:09.33 ID:J0Id73NT.net]
流行ものはいずれ廃れるんですよ。

533 名前:デフォルトの名無しさん [2018/03/20(火) 23:59:40.98 ID:/+MVnq9/.net]
>>516
じゃあなんで次世代言語スレに居るんだ…( ゚д゚)?

534 名前:デフォルトの名無しさん [2018/03/21(水) 00:23:07.24 ID:fTbDiwfs.net]
次世代もC/C++だからですよ。

535 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:34:20.76 ID:6aYzYwF2.net]
C++は置いといて、ライフタイムについては何年かしたら画期的な解決方法が開発されて
あのrustに費やした努力はなんだったんだ……って事になったらいいなあみたいな期待はないでもない

536 名前:デフォルトの名無しさん [2018/03/21(水) 01:27:25.51 ID:O5cKQJeM.net]
>>495
でもgccも今ではc++で開発されてるじゃん

537 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 01:39:07.97 ID:pF+TNkB8.net]
>>495
これ、C++に限らず色々なクラスベースオブジェクト指向言語と信奉者に
多かれ少なれ、言えることじゃね?

538 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 02:43:19.10 ID:+8mievnH.net]
>>519
コピーと参照のトレードオフは本質だよ。
どんな言語作ろうとそれは変わらん。
超える可能性があるとすれば量子効果のあるコンピュータとその言語か。

539 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 02:47:53.30 ID:pF+TNkB8.net]
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄

540 名前:デフォルトの名無しさん [2018/03/21(水) 03:17:32.00 ID:fTbDiwfs.net]
注ぎ込めるリソースが少ない場合、C++を選択してください。
あなたの要求は完ぺきにかなえられるでしょう。



541 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 06:35:12.70 ID:TV3lE0eZ.net]
>>521
まあそうだけど C# や Java では既存の実用的なフレームワークが強い影響力を持ってるから
俺が考えた最強の〜的なオブジェクト指向の設計はしないんじゃないか?

Windows アプリの場合 C++ でも mfc や wtl 使うから同様のことが言える

542 名前:デフォルトの名無しさん [2018/03/21(水) 06:37:39.43 ID:fTbDiwfs.net]
Linusは無料で奴隷をこき使える才能がある。
だからこそC。
我々は工数考えないといけないからC++。

543 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 06:38:46.28 ID:TV3lE0eZ.net]
書き捨てのユーティリティとか書くときも map とか使いたいもんね

544 名前:デフォルトの名無しさん [2018/03/21(水) 06:43:22.74 ID:fTbDiwfs.net]
Linusは生粋の5ちゃねらだし、あいつのあおりを真に受けちゃいかんよ。

545 名前:デフォルトの名無しさん [2018/03/21(水) 06:48:17.40 ID:fTbDiwfs.net]
OOはウィンドウシステムと非常に相性が良いんだ。
CでもOO出来るって?
ああそうだな、Xのソースは1980年代末期に研究したよ俺も。
流行ってたんだ。
歩いてだってアメリカには行けるさ、お前ならな。
だが俺は飛行機で行く。
それだけのことだ。

546 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 07:05:06.97 ID:LE/KJcVc.net]
Linusがカーネル周りの人間って事を忘れてはいけない
その前提とシステムプログラムの観点からCが選択されたのであるし、更にその発言が結構前であることも意識しなきゃ

547 名前:デフォルトの名無しさん [2018/03/21(水) 07:14:44.19 ID:fTbDiwfs.net]
KHTMLはIEと同じ表示ができたので気に入っていた。
それが今やEdgeがWebkit互換表示だもんな。

548 名前:デフォルトの名無しさん [2018/03/21(水) 07:16:02.63 ID:fTbDiwfs.net]
ただなあ、Javascriptの邪悪さには誰も勝てないと思う。

549 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 08:26:35.73 ID:6aYzYwF2.net]
>>522もムーブセマンティクスが流行った時は飛びついたくせにー
古くはPascalのconst引数、新しくはswiftのinoutみたいにコピーと参照が曖昧なのもあるし
明確に区別したままでももっといい推論方法だってできるかもしれない

550 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 09:47:49.88 ID:7q6KKp9o.net]
早すぎる一般化は諸悪の根源なんやで
まずCで書き、そのあと他の言語に移植しなさい



551 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 11:03:36.91 ID:6+RFoA8s.net]
早すぎる最適化や過剰な一般化ならともかく、一般化が早すぎて困ることなんてそうあるかねぇ?

552 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 11:33:24.48 ID:2s39Qc49.net]
むしろ早すぎる具体化詳細化のほうが害悪だな。

553 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 11:52:04.49 ID:KBtkuQdG.net]
Linusは何も間違ってないし、むしろ高級言語使う側が「楽だから」と目を閉じてるのが問題だと思うけど。
ちゃんとどんな機械語になるか把握して、どれぐらいのオーバーヘッドがあって、それはこういう基準やメリットで許容してるから、俺はxxx言語を使う、って言い切れないのが問題じゃない?

554 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 12:06:23.78 ID:2s39Qc49.net]
90年代まではそれで正解だったけど、今の時点で「コンパイラが吐く機械語が予測しやすい」のは欠点でしかないし、実際Cコンパイラもかなりの最適化をするわな。

555 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 12:17:48.32 ID:KBtkuQdG.net]
最適化は想定してコンパイルするだろ。Cなら特に。書き方にも関わるし、コンパイルオプションにもかかわるし。

予測しやすいか、しにくいかなんて問題にしてなくて、予測じゃなくて把握しろって思うんだって。
コンパイル結果みて考えても良いぐらい。

「とりあえず楽」じゃなくてさ。
そういう意味では、Goみたいに-gcflags -Sで簡単にアセンブリコード見れるのは良いと思うし、流行りの高級言語にもあって然るべきだと思うんだが。
要らない、全部コンパイラが楽させてくれる、って言うやつはRustをディスる事も、Cを称賛する事も中途半端だと思う。

556 名前:デフォルトの名無しさん [2018/03/21(水) 12:19:27.12 ID:rpkcQ7dD.net]
そろそろ人知を超えた最適化を行うAIコンパイラとか出てきても良さそうだけどね
抽象度の高い言語の方が最適化

557 名前:フ余地が広くて有利になったりして []
[ここ壊れてます]

558 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 13:16:11.38 ID:WIlWrPur.net]
別の方に着目したいから楽ちん高級言語を使っているのに
それを目を閉じると表現するのはいかがなものか

559 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 13:25:57.59 ID:+8mievnH.net]
>>535
いくらでもあるだろ。
めちゃくちゃデラックスなプリント文とかな。

560 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 14:07:57.78 ID:366TuTPF.net]
実はお前らが内心で求めてるのは次世代言語じゃなくて前世代言語じゃね?



561 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 14:13:44.60 ID:zc8zGgCT.net]
コピーと参照の違いは代入すればわかる
だから代入を禁止すればコピーと参照の違いを捨象できる
抽象化とはつまり具体的な何かを禁止することだ
禁止されている自覚がないなら、目を閉じていると批判されても仕方ない

562 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 14:19:34.98 ID:OmyrbXdn.net]
>>500
こんなのあったんか。まだ開発序盤か

563 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 14:53:44.91 ID:KBtkuQdG.net]
別の方を着目したからと言って「見ないことにしている」を「見なくていいから楽」と取るのは間違ってるだろ。

564 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:05:39.36 ID:zc8zGgCT.net]
ケースバイケースだろ
・全てのケースで間違ってる
・全てのケースで正しい
これ以外の選択肢が見えなくなるのがおかしい

565 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:08:02.21 ID:7q6KKp9o.net]
Cはどのように最適化されるかわかるからそれを想像しながら書くことで
美しいコードがかけるんだよな。

566 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:15:52.41 ID:zc8zGgCT.net]
最適化は別にどうでもいい
人知を超えた最適化してもいいぞ
ただし人知を超えた仕様変更とか人知を超えたデバッグは困る

567 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:19:26.15 ID:7q6KKp9o.net]
ネットサーフィンでホームページみると汚い糞みたいなコードしかないからな。
俺くらいのプロになると美しいコードを書くだけで勝手に正解になっている。
コツは対称性を意識すること。対称性を持った完全な美に矛盾は存在する訳ないからな。

568 名前:デフォルトの名無しさん [2018/03/21(水) 15:28:41.94 ID:fTbDiwfs.net]
boostは新言語と言って良いのではないか。

569 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:35:40.07 ID:7q6KKp9o.net]
boostは便利なものもあるけれどほとんどがゴミだよね

570 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:36:59.68 ID:2s39Qc49.net]
いつの時代のCコンパイラの話だよw



571 名前: mailto:sage [2018/03/21(水) 15:39:31.62 ID:ZGJmhAHm.net]
>>549
>人知を超えたデバッグ
………

572 名前:デフォルトの名無しさん [2018/03/21(水) 15:52:31.99 ID:fTbDiwfs.net]
>>552
テンプレート大好きな感じを何とかしてもらいたいよな。

573 名前:デフォルトの名無しさん [2018/03/21(水) 16:26:40.62 ID:fTbDiwfs.net]
ストリーム廃止運動が必要。

574 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 18:32:27.05 ID:KwzRI0fp.net]
boost もjavascriptのBrowserifyみたいなツールで必要なモジュール部分だけ取り出して
コンパイルを速くできる機能ってないのかね?
それとも依存が激しくて結局全部マルごとになっちまうってことなんかな。

575 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 18:33:29.63 ID:MnBjTwAx.net]
boostがC++標準委員会のケツ蹴飛ばしたおかげでだいぶ今のC++良くなったじゃん

576 名前:デフォルトの名無しさん [2018/03/21(水) 18:37:44.59 ID:fTbDiwfs.net]
>>557
boostを・・・というより使う側で配慮すれば分割コンパイルの恩恵にあずかれる。

577 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:30:11.24 ID:5MZw04v3.net]
>>557
なってるんだが…

578 名前:デフォルトの名無しさん [2018/03/21(水) 21:34:18.38 ID:UH8S3msx.net]
>>500
PLASMA言語っすか…これは初めて知ったわ
今パッと見ただけだけど、なんとなくHaskellに近い雰囲気を感じた
どこら辺が違うのが詳しく説明してくれない?

579 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:01:31.33 ID:LNpphUL+.net]
すべてプラズマで説明できそう

580 名前:デフォルトの名無しさん [2018/03/21(水) 22:52:30.65 ID:fTbDiwfs.net]
ではboostをプラズマで説明してもらおうか。



581 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 00:28:48.05 ID:NqS/W9is.net]
>>560
いや、二、三個の関数使うだけであのビルド時間はおかしいぞ。

582 名前:デフォルトの名無しさん [2018/03/22(木) 01:22:53.45 ID:tiDItZ1f.net]
使い方を知らんってことか。

583 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 21:30:21.55 ID:yG5SnY ]
[ここ壊れてます]

584 名前:rv.net mailto: atCoder今日から始めてみたんだけどc++が圧倒的に多い。
GoとかRustは少数派みたい。c++いいんかそんなに。
[]
[ここ壊れてます]

585 名前:デフォルトの名無しさん mailto:sage [2018/03/23(金) 21:32:50.91 ID:J4dYcx4H.net]
>>566
>c++いいんかそんなに
>>495

586 名前:デフォルトの名無しさん [2018/03/23(金) 23:22:27.41 ID:IQgPE3+N.net]
混とんとしたウェブの状況を見ればウェブ屋さんが薦める言語なんて使えない。
ウェブ屋さんは昔から頭がおかしい。
落ちまくるネットスケープを推奨してたような人たちだぞ。
IEと互換性があるからKHTMLはダメだとも言っていた。
ウェブ屋さんが一番ネットスケープに苦しめられていたというのに。
つまり彼らはマゾなのだ。

587 名前:デフォルトの名無しさん [2018/03/23(金) 23:30:09.64 ID:IQgPE3+N.net]
本来ネットワーク上で流通するものはすべて決定性を持つアルゴリズムで解析できなければならないだろう。
言語でいえばJava、データ形式でいえばXMLがそういったものだ。
実はW3Cはそういった方向にウェブを進めようとしていた。
これに反対したのがグーグルやアップルだ。
この反対する姿勢は純粋に政治的なもので技術の上に成り立つものではない。
もしもム板で議論されたなら技術が勝利したであろう。
しかし議論の場はム板ではなかった。
世界中の優秀なウェブ屋さんが集まったとはいえウェブ屋さんはしょせんウェブ屋さんなのである。

588 名前:デフォルトの名無しさん [2018/03/23(金) 23:36:00.72 ID:IQgPE3+N.net]
OWASPの資料を見てほしい。
なぜウェブが危険なのかわかるだろう。
つまりほとんどすべてウェブ屋さん自身が持ち込んだ危険である。

589 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:31:03.15 ID:iue9vSP8.net]
混とんとしたカーネルの状況を見ればOS屋さんが薦める言語なんて使えない。
OS屋さんは昔から頭がおかしい。
落ちまくるBSDを推奨してたような人たちだぞ。
DOSと互換性があるからWindowsはダメだとも言っていた。
OS屋さんが一番MS系に苦しめられていたというのに。
つまり彼らはマゾなのだ。

590 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 06:34:45.58 ID:iue9vSP8.net]
本来OS上で機能するものはすべてPOSIXに準拠しなければならないだろう。
言語でいえばC、データ転送でいえばファイルがそういったものだ。
実はPOSIXはそういった方向にOSを進めようとしていた。
これに反対したのがMSやアップルだ。
この反対する姿勢は純粋に政治的なもので技術の上に成り立つものではない。
もしもム板で議論されたなら技術が勝利したであろう。
しかし議論の場はム板ではなかった。
世界中の優秀なOS屋さんが集まったとはいえOS屋さんはしょせんOS屋さんなのである。



591 名前:デフォルトの名無しさん [2018/03/24(土) 07:42:28.38 ID:Z79Bg+7E.net]
>>572
決定性を持たなければならないのはsecurity reasonであって標準とは無関係だぞ。
ウェブ屋さんは昔の論文を読み漁るべきだろうな。
セキュリティに最も関心を持つべき職業なんだから。

592 名前:デフォルトの名無しさん [2018/03/24(土) 07:46:59.67 ID:Z79Bg+7E.net]
世界を再構成する、Re Designを提唱する。

593 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 07:48:27.16 ID:76HSbC/B.net]
すべて文脈自由文法でなければならない
これに反対したのがPerl正規表現やCプリプロセッサだ
この反対する姿勢は純粋にGNU/Linux的なものでグーグル/アップルではない

594 名前:デフォルトの名無しさん [2018/03/24(土) 08:41:54.13 ID:Z79Bg+7E.net]
>>575
ハイ、ダウト。

595 名前:デフォルトの名無しさん [2018/03/24(土) 11:43:16.47 ID:1vPeJim6.net]
インターネットはウェブ屋さんだけのもんじゃないからね
素人が適当に作れるのは大事なんだよ
確かに苦労は絶えないけど

596 名前:デフォルトの名無しさん [2018/03/24(土) 11:45:42.94 ID:Z79Bg+7E.net]
>>577
HTML一つとっても素人が気軽に書ける時代じゃないだろう。
なぜそうなったかわかるかい?
本来別のレイヤーにあるべきものをHTMLは一つ人類みな友達とかわけわからないこと言って一緒くたにしたからだよ。

597 名前:デフォルトの名無しさん [2018/03/24(土) 11:54:04.10 ID:Z79Bg+7E.net]
html5-tidyでCustom elementのサポートについて議論があって、いろいろ考えさせられる。

598 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 11:57:19.01 ID:76HSbC/B.net]
政治的というのは「人類みな友達」のことじゃないだろう
平気で嘘をついたり、間違いを絶対認めないことを政治的というんだ

599 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 12:23:11.92 ID:iue9vSP8.net]
OS/2 WARPの資料を見てほしい。
なぜpreemptive context switchingが危険なのかわかるだろう。
つまりほとんどすべてOS屋さん自身が持ち込んだ危険である。

600 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 13:05:00.91 ID:Q4O/QWqD.net]
まあセキュリティー商売なんてのは危険を煽らないと成り立たないからな。



601 名前:デフォルトの名無しさん [2018/03/24(土) 18:52:42.30 ID:bGodUaM+.net]
>>578
いやあ未だに適当に書いてるよ
プロだってほとんど適当だよ

602 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:47:17.53 ID:pV2WFofj.net]
HTMLは俺もクソ適当に書いてるわ
あんなもん書捨てで動きゃいい
divじゃなくてarticleタグ使えだのcssのセレクタにdata属性使うのはやめろだのと
くだらない拘りでコードレビュー通さない意識高い系フロントエンダーはマジで害悪だわ
HTML/CSSにおけるデザインと論理構造の分離なるものが現実に何かの役に立ったのなんて見たことない

603 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:58:25.59 ID:DVXvRdXT.net]
HTMLはタグの数を極力減らして
XSLT使って独自タグを定義する方向に向かえば良かったと思う

604 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 20:22:26.30 ID:eKuOy/a9.net]
>>585
向かってるだろ

605 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 20:28:12.89 ID:g25JX84P.net]
reactとか?
cssが未だによくわかんねえ。あれわかる人なんなので。

606 名前:デフォルトの名無しさん [2018/03/24(土) 20:58:55.04 ID:Z79Bg+7E.net]
ReactでSSR、サーバーサイドでレンダリングした結果をクライアントで引き継げて凄すぎ!
みたいなのは、努力の方向性が間違っているような気がする。
SSRの必要があるってことは、結局SPAである必要が無いような。

607 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 21:12:09.71 ID:uNUSOufN.net]
画面の大きさがPCとスマホで全然違うからデザインが違う
せめて論理構造だけは同じにするべきだが
まさかPCと同じ情報を見ることができない実質ガラケーのようなスマホはないよな

608 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 21:34:42.30 ID:OxsUYtrP.net]
>>584
HTMLとして見ればその通りなんだろうけど、XMLで作ったデータフォーマットからウェブも含めた何かを作ってるような人たちには許容できない部分なのかもしれん。
PageMakerで組版してる人たちとか。
同じブロック要素でも、naviとarticleは文字詰めの方法が違うとか、そういう部分で、何でもdiv+classにすんなと言うのは充分わかる。

609 名前:デフォルトの名無しさん [2018/03/24(土) 21:37:02.47 ID:LUxFSHaJ.net]
>>584
書き捨てで誰もメンテしないならそれでいいだろうな
そんなのレビューしなくていいと思うけど

610 名前:デフォルトの名無しさん [2018/03/24(土) 21:42:42.38 ID:Z79Bg+7E.net]
考えるのに紙は依然として役に立つけど、読むのには紙である必要がなくなってきたな。
高性能なタブレットが重すぎるのを何とか出来れば完全に紙を駆逐できるんじゃないか。



611 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 21:42:47.26 ID:gBcMRATK.net]
PageMakerじゃないな。普通に名前間違えた。FrameMakerとか。

612 名前:デフォルトの名無しさん [2018/03/24(土) 21:45:34.89 ID:Z79Bg+7E.net]
Googleが出すOSSは尻切れトンボが多いな。

613 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 21:49:22.28 ID:gBcMRATK.net]
>>592
電池が要らない、
濡れても乾かせば大丈夫、
乱雑に投げられる、車に轢かれても壊れない、
複写を他人にページ単位で簡単に渡せる、
そのへんの筆記具で好きに書き込みが出来る、
氷点下20度でも使える、
破れてもセロテープで取り急ぎ直る、
完全に読めなくなっても比較的安価に買い直せる

このあたりが紙の冊子が電子媒体で駆逐できない所だと思うよ。
特に取説とか。

614 名前:デフォルトの名無しさん [2018/03/24(土) 22:03:59.29 ID:Z79Bg+7E.net]
太陽光発電でもつけておけ。

615 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 22:07:01.15 ID:uNUSOufN.net]
「QRコードを印刷する紙がないぞ」「あんなの飾りです」

616 名前:デフォルトの名無しさん [2018/03/24(土) 22:36:07.63 ID:Z79Bg+7E.net]
Gumbo parserってどうなんだよ。

617 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:58:13.59 ID:Q4O/QWqD.net]
手触りで大体のページを把握するってインターフェイスに慣れ過ぎてるから
それを超えるまではまだまだ電子ペーパーは人類には早い

618 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 00:06:04.48 ID:+oTPc842.net]
なんの話だよ
OCamlの話いいっすか?

619 名前:デフォルトの名無しさん [2018/03/25(日) 00:16:01.86 ID:U5SlEUJl.net]
民主党→民進党のように名前をちょっと変えると爆発的に売れる場合もあるからな。

620 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 00:18:17.39 ID:JVNvN7ma.net]
>>591
保守性という観点で言えば、DRYさえ死守してれば後は些細な問題だと思うよ
HTMLに限った話じゃないけど



621 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 00:30:12.26 ID:GhdgZmXr.net]
htmlでdryを守とかそれが無理だっつーの

622 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 00:41:53.53 ID:Wz8WBZT8.net]
OCamlに話すことあるか?

623 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 00:55:24.67 ID:Qy9e8iWO.net]
>>594
収益に直結してないものはやりたい人がいなくなったらそれまでだからな

624 名前:デフォルトの名無しさん [2018/03/25(日) 01:20:58.23 ID:4Rittzre.net]
>>602
全部グローバル変数で名前規則さえ死守してればいいとでも言うのか?

625 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 07:18:41.27 ID:WO056vpM.net]
>>604
Haskellと重複する部分についてDRYを死守する方法を話して

626 名前:デフォルトの名無しさん [2018/03/25(日) 08:01:39.02 ID:U5SlEUJl.net]
www.stroustrup.com/JSF-AV-rules.pdf
ロッキード・マーティン F-35 Strike Fighter Air Vehicle 開発のためのC++コーディング・ガイドライン。
※URLでお分かりの通り禿が関わっています。

627 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 14:46:57.32 ID:2EIVAaim.net]
>>601
立憲民主党と勘違いしてない?

628 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:11:18.40 ID:+oTPc842.net]
関数があるのにDRYに苦労する状況が分からん

629 名前:デフォルトの名無しさん [2018/03/25(日) 19:01:20.02 ID:NiWlHtrf.net]
政治の話はNGで

630 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 21:25:39.57 ID:WO056vpM.net]
プログラム技術という観点では政治も経済も経営もNG



631 名前:デフォルトの名無しさん [2018/03/25(日) 22:55:03.56 ID:U5SlEUJl.net]
政治では名前が長くなり始めると危険領域だよな。
○○民主主義自由独立解放戦線的な。
朝鮮民主主義人民共和国とか欲張りすぎな国もあるし。
予言しておくけど立憲民主党は時代とともに名前が長くなるぞ。

632 名前:デフォルトの名無しさん [2018/03/25(日) 22:56:11.12 ID:U5SlEUJl.net]
日本も大日本帝国時代は危険領域だったんだろな。

633 名前:デフォルトの名無しさん [2018/03/25(日) 22:57:49.97 ID:U5SlEUJl.net]
Googleのコーディングガイドラインは名前はいくら長くなっても良い、省略された名前はダメと述べているからな。
罠かもしれんな。

634 名前:デフォルトの名無しさん [2018/03/26(月) 00:02:29.61 ID:3hemhRjv.net]
悩ましいぞな

635 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:05:05.18 ID:mhu6xXG+.net]
つまりこう

for (int indexOfItemInArrayOfProxyInformation = 0; ; ++i) {
auto proxyInformation = arrayOfProxyInformation[indexOfItemInArrayOfProxyInfomation];
...

みたいな

636 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:08:00.38 ID:QH+aPMzj.net]
ofを使ったら負け

637 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:10:58.12 ID:mhu6xXG+.net]
でもインデックス複数あったら?

638 名前:デフォルトの名無しさん [2018/03/26(月) 00:23:51.81 ID:WZ1ZCWjW.net]
ストアドよりインデックスのほうが早いよ。

639 名前:デフォルトの名無しさん [2018/03/26(月) 00:32:41.52 ID:ceAN67+T.net]
何でも極端に走っちゃいかん。
バランスは大事よ。

640 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:35:46.73 ID:mhu6xXG+.net]
getInfo なんてのは Android の api でも見かけるし
information を info と略するのはありなんだろうな
普通の会話でもしばしばそう略すし

他にもなにか例外があるかとAndroid ndk api リファレンス眺めたら
名前がどれもこれも長くて驚いたわ…特にenum



641 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 01:21:09.02 ID:BMtnwc7n.net]
理由がわからない命令に従うから暴走するんだな
長くする理由を知ってたら必要な長さ以上にはならないし
理解できないものは反対したり批判したりする習慣があれば暴走しない

642 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 01:28:05.88 ID:mhu6xXG+.net]
例えを出しただけなのに「理由がわからないなら反対しろ!」と言われましても…

643 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 01:45:15.94 ID:h+3ybIF8.net]
馬鹿らし過ぎる。。
関数切り出してスコープ切ればいいだけの話だろうに。
今時の言語ならネームスペースだって使えるだろうし、エイリアシングみたいなものも
ある。
てかそれもなければなんの略かのコメントでも付けてろよ。

644 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 01:59:38.91 ID:BMtnwc7n.net]
>>624
反対しろとは言ってないぞ
しかし単語の組み合わせを少し改竄するとそういう意味になる可能性はあるのか

だから短い単語を組み合わせるのをやめて長い固有名詞を一個だけ書くのか

645 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 02:02:12.66 ID:hwIkGQhx.net]
goだとどいつもこいつもクッソ短いんだけどな
google内でも派閥があると見える

646 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 02:05:44.31 ID:mhu6xXG+.net]
>>626
哲学とかも不要な誤解や意図した曲解を避けるために用語をどんどん定義していくよね

今回で言えば「合目的的」であれ、とかか。
でも非常に長い名前は必ずしも判りにくくは無いんだよねああして書いてみると。
見難いのが問題なだけであって。

647 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 03:07:46.44 ID:qQm2MzQc.net]
名前が無いものに分かりやすい名前を付けようとするとどうしてもそのまんまの名前になっちゃうんだよな
aにbを足してcをかけた数に「aにbを足してcをかけた数」という名前を付けたり

648 名前:デフォルトの名無しさん [2018/03/26(月) 04:27:44.25 ID:WZ1ZCWjW.net]
C++11から日本語の識別子も使えるようになったんだよな。
ということは。

#define もしも if

もしも(0 < プロキシ情報の配列におけるアイテムの索引) {
  ・・・
}

649 名前:デフォルトの名無しさん [2018/03/26(月) 07:19:11.84 ID:WZ1ZCWjW.net]
最近気が付いたのは、MSは情報を収集するためにちょっと踏み込んだことをしてるな。
Google的になったというか。
例えばMSが提供する一部のアプリケーションでは変換中の文字列について対象文節をわかりにくくするようになった。
これはつまり、単漢字変換のようなことをせず、一括変換してから間違えた部分を修正してほしいということだろう。
なぜそのようなことをするのか?
誤変換に関する統計情報が欲しいのだろう。

650 名前:デフォルトの名無しさん [2018/03/26(月) 07:21:37.08 ID:WZ1ZCWjW.net]
もちろん、一括変換がうまく機能しないからこそユーザーは変換範囲を狭めて変換するのだし、誤変換情報が欲しいのは、変換が上手くいかないことがわかっているからだろう。
つまり、一部のソフトウェアは意図的にとても使いづらくなっている。



651 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 08:36:23.04 ID:fyNor71T.net]
つまり次世代言語とは日本語の事だった…!?

652 名前:デフォルトの名無しさん [2018/03/26(月) 08:48:45.88 ID:WZ1ZCWjW.net]
いや中国語だろうけどさ。

653 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 16:34:24.37 ID:b2RxclhK.net]
ブラックジョークかな?

654 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 16:41:17.53 ID:jinbnpD9.net]
でもたしかにコードが中国語なら、短い変数名で意味が通るからコードはすっきりしそう

655 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 16:52:27.07 ID:Xx23wWxJ.net]
C 風の文法なら名前が空白区切り

656 名前:ナ並ぶ必要あまり無いし、
名前の途中に空白を含めても良いという言語があっていい気がする

var indexOfProxy := 0;
var index of proxy := 0;

どっちが見やすいかな
[]
[ここ壊れてます]

657 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 17:37:31.08 ID:dvRuSlEv.net]
>>636
今の中国の字(簡体字)はよくわかりません

658 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 18:56:27.15 ID:MGgBxL58.net]
謝謝茄子…

659 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 19:33:26.92 ID:sC9O8aKE.net]
>>637
勘弁して。こんな発想はエアプだけだろ。少なくともエディターとの連携がしづらいし。
そもそもどっからどこまでが予約語で変数かどうやって判断するの?

当然の帰着として変数名に予約語を含めることは絶対禁止ってことになるだろ。
想像しただけで死にたくなってきた。

660 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 19:40:27.04 ID:jinbnpD9.net]
Fortranは空白無視するがな



661 名前:デフォルトの名無しさん [2018/03/26(月) 19:55:57.52 ID:pOsEMXVS.net]
お前ホモかよお!?

662 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:43:26.13 ID:ry3uUZdU.net]
予約語は大文字だけ、変数名は小文字だけで書くとか…

VAR index of proxy := 0;

663 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:56:02.73 ID:Zrk+MxC2.net]
そんな前時代的な……

664 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:05:23.75 ID:5DREL+sj.net]
クソワロタwww

665 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:14:44.93 ID:1nOfLeWK.net]
お前ら頭悪いなwww
俺様が華麗に解決してやろう
ほらよ
var index%20of%20proxy := 0;

666 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 02:14:32.56 ID:xOo+kmL4.net]
どんどんバカになっていってる。

667 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 02:49:05.89 ID:nthqohzW.net]
>>646
読みにくいしこうしたらどうだろう?(名案)

var index_of_proxy := 0;

668 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 11:11:55.54 ID:4hOyl1p5.net]
バカなことを思いつくことは誰にでもあるが
それを宣伝して押し売りするか黙って廃棄するかの判断がおかしくなってるんだろう

669 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 22:54:29.91 ID:D/rPklFE.net]
いわゆる全角スペース使うとか、とにかくコンパイラにスペースと思われない文字だが見た目がスペースのやつを使えばいいのでは?
Java なんかはそれでなんとかなっちゃうよな。

670 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 22:59:22.15 ID:xOo+kmL4.net]
職場で本気でそんなことしだしたら俺は怒るよ。



671 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:16:27.79 ID:iLpxT8od.net]
DDDとかだとDSLを作るって言うけど
それって変数名とかメソッド名に日本語を許容するってこともありえんのかな?

672 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:35:51.57 ID:O0jMKDc6.net]
最近の言語って識別子に日本語使えるの増えたよな。まあ日本語っていうかUnicodeなんだけど。

673 名前:デフォルトの名無しさん [2018/03/28(水) 05:56:44.07 ID:LrPDAu7h.net]
絵文字を駆使したハンガリアン記法時代の幕開けだ

674 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 07:22:48.81 ID:lXnJ1NTY.net]
ようやく時代がSmalltalk-72に追いついたかw
https://pbs.twimg.com/media/DDhrUoSXkAAtvJO?format=jpg

675 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 10:43:26.92 ID:Pilbwiej.net]
時代を先取りしすぎるのも考え物

676 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 10:45:01.89 ID:qnpV2Jxp.net]
APL…

677 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 10:53:19.54 ID:yjlej8xR.net]
正直APLは今なら流行ると思う

678 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 10:55:53.02 ID:qnpV2Jxp.net]
統計とか各種データの集計に良さそうだもんな

679 名前:655 mailto:sage [2018/03/28(水) 11:29:22.55 ID:ng8CxZVM.net]
>>657
たしかにそうなんですが…APLの方は記号を読みやすくするために用いているように思えなかったので…

ピタッとはまれば驚愕の短さで書けますけどね

例: Conway's Game Of Life in APL

680 名前:
https://www.youtube.com/watch?v=a9xAKttWgP4
[]
[ここ壊れてます]



681 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 16:41:04.69 ID:Lb32PKeB.net]
>>654
むしろ文字使用禁止な言語
(コーディングルールじゃなく言語仕様でemojiと記号を強制)
次世代言語感がいっぱいw

682 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 17:21:22.86 ID:4ymmJVEB.net]
そういう次世代感か…
文法エラーにも優しくどう書いても何らかの動作をすることが望ましいな。
「プログラマになろう」というサイトを開いてみるか

683 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:26:11.70 ID:CTFOdrqh.net]
チューリング完全になろう系じゃないか
C++とHaskellの親戚みたいな言語がいっぱいだぞ

684 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 23:09:42.27 ID:yjlej8xR.net]
C++とHaskell の親戚ってなんだ

685 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 02:16:30.07 ID:Hc4kPWXM.net]
テンプレ(異世界転生or転移、チート、ハーレムあり)小説が量産されるみたいなノリで
テンプレ(手続き型or関数型、型推論あり)言語が量産されるわけか

その傾向はあるよね

686 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 02:37:14.12 ID:tc7M6rRR.net]
Fortranのサブルーチンみたいな感じで副作用は全部intent(out)の引数にのみ許すことで実質純粋手続きみたいな言語って他にある?

687 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 07:56:15.41 ID:plQi1Ped.net]
COBOLとかPLIとか汎用機時代の主役はだいたいそうでしょ
まさかCOBOLプログラミングは全部グローバル変数でデータのやり取りをするみたいな話を真に受けてる?
そんなの汎用機全盛時代の超規模開発において一山いくらのPG達に管理しきれるわけないだろ
コンパイル単位を分割して、サブプログラムに明示的に構造体の参照を渡す形でリンクするか、別の実行ファイルにして間に一時ファイルを挟むんだよ
Cがヘッダのincludeを覚えてしまったことで業界がダークサイドに堕ちたけど、昔のプログラムは今よりずっと疎結合で単体テストしやすかったんだよ

688 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 08:11:58.91 ID:xXxQyZNu.net]
グローバル変数を使うのはパソコンのbasicの時代ではないか
プロがどんな美しいコードを書こうが
ネットで検索できるオープンソース以外は知ったことではない

689 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 08:13:12.45 ID:9BLtoEOh.net]
以前の俺含め今時は一時ファイルなんかダサいAPIやメッセージキューにしろなどと抜かす人が多いけど、汎用機を経験するとみんなバッチ信者になるよ
単体テストしやすく、開発規模面でもパフォーマンスス面でもスケーラブルで、運用も容易
汎用機のバッチ処理の設計は現代のプログラマ全員が学ぶべき素晴らしい技術

690 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 08:25:29.74 ID:xXxQyZNu.net]
ダサいというのは建前で、JITコンパイラ言語でそれをやりたくないのが本音ではないか



691 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 08:28:00.50 ID:Hc4kPWXM.net]
Linux でも良くやってるぞ

692 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 09:11:24.31 ID:r+OSvbaK.net]
>>669
モックライブラリがこんなに発達してるのに何言ってんだ

693 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 09:27:39.99 ID:pztT5rJU.net]
>>672
バッチならファイル作って放り込むだけやぞ
結合状態でのリグレッションテストとかもdiff取るだけだし

694 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 10:09:08.49 ID:CZF8yyoA.net]
バッチ処理で何してんの?
システム運用中に流せるもの?
停止してから流すとしたら、想定時間内に終わらないように作んないといけなかったりするんじゃないの?

695 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 10:18:06.32 ID:r+OSvbaK.net]
>>673
モックならインスタンス作って放り込むだけやぞ
結合状態でのリグレッションテストとかも状態比較するだけだし

696 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 10:48:51.83 ID:pztT5rJU.net]
>>675
結果が意図しないものになってるときにどうやって途中経過を調べるの?
バッチならファイル見れば一発だけど、全サービスクラスにログ出力入れるの?

697 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:16:09.01 ID:r+OSvbaK.net]
>>676
ログ出力も何もオブジェクトのスナップショットとって状態比較するだけ
てか、結合テストで途中結果見てる時点で、それモジュールテストだろっていう

698 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:18:13.25 ID:r+OSvbaK.net]
結合テストでは通常おのおののモジュールが期待した結果を出力することを前提に振る舞いテストのみを行うだろ?
結果の比較なんかしてる時点で、考え方がズレてる

699 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 11:26:16.78 ID:r+OSvbaK.net]
てか>>674も書いてるけど、バッチ処理なんて前提条件厳しすぎるし、障害対応もめちゃくちゃ大変だろ
今どき、そんなシステムどんな業種で開発するんだ

700 名前:デフォルトの名無しさん [2018/03/29(木) 16:52:27.07 ID:wUGa4G8N.net]
>>666
純粋手続きってのがわからん。
引数にin outだったらadaも付けれるぞ。



701 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 17:13:18.86 ID:mREgEFij.net]
>>680
Fortranのpure subroutineのことや。まんま訳して純粋手続きって書いたけど、分かりにくいなら以後pure subroutineって書くわ

702 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 17:55:25.23 ID:d3FuArtt.net]
>>680
Fortran等の昔の言語には、サブルーチンと関数の区別があって
サブルーチンは副作用あり、関数は副作用なしって使い分けがあったんだよ
(その区別はAdaにもあったんだが、2012年の改定で関数もoutパラメータを持てるようになってしまった)

703 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 17:57:17.44 ID:mREgEFij.net]
>>682
intent(out)さえつけといたらsubroutineにもpure修飾子をつけれることを俺は>>666で言ったの

704 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 18:04:24.92 ID:d3FuArtt.net]
>>683
あーすまん、話の流れを追いきれてなかった

705 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 18:42:15.80 ID:mREgEFij.net]
言ったのと言いつつ言ったつもりになってただけだわ。謝られるとこっちが申し訳ない

706 名前:680 [2018/03/29(木) 22:25:28.48 ID:wUGa4G8N.net]
>>682
なるほどわかりやすい説明サンクス。

707 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 23:19:00.18 ID:fG+oYH1y.net]
元々の問いに対する答えは持ってないけど、そもそも
引数に明示するのは返却値の代入と同じで副作用でも何でも無いような。

708 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 00:38:00.59 ID:Cv8Wlmrv.net]
そういう、単に複数の値を返したい(outパラメータを使いたい)からというだけで
関数ではなくてサブルーチンになっている物に対して、副作用がないことを明示できるのが
Fortranのpure、という話だろう
今時なら普通にタプル返すだけだけど

709 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 01:00:29.06 ID:Z4F/kC6f.net]
>>688
そうそうそれそれ。汲み取ってくれてありがとう
タプルで返すのもいいんだけど、大きなベクトルとか行列とかは返り値として返そうとすると確保やらコピーやらのコストがかかっちゃうから、サブルーチンって結構いいと思うんだよね

710 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 03:17:21.13 ID:Wx9gH+Ym.net]
でかい配列を返すとして、オブジェクトを複製せずポインター返しておしまいという言語も多いし



711 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 12:08:24.66 ID:27QTfa4q.net]
それのオーバーヘッドがどの程度のものなのかよく分からんで不気味に感じるんだよな。俺が勉強不足なだけかな

712 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:17:44.20 ID:S5bBhBUr.net]
ベンチマーク取ればいいだけじゃん

713 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:25:37.94 ID:gL2Crqwy.net]
まあ実際そこそこオーバーヘッドあるんだけどね

714 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:34:29.21 ID:35t2qqJ0.net]
ベンチマークとれ
テストコードかけ
は若手にいうと凄まじく煙たがれるなw

715 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:37:02.92 ID:lbiuvb17.net]
毎回毎回 (N)RVO が効くかなと頭使ったりプロファイル計測したりするより


716 名前:能なら out パラメータにしたくなるよな

string だけは何故か気軽に戻り値にしてしまうが
[]
[ここ壊れてます]

717 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:53:34.74 ID:Lu4RhpIc.net]
なるほど。
値型ローカル変数でスタックを確保する事が意味論的に決まってると、
返却値でコピー回避は難しいですね。
Nimでresultが予約変数になってるのも不思議だったけど、外部で確保した
領域を直接割り当てられる、みたいな理由だったりするのかな。

718 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:05:59.64 ID:lbiuvb17.net]
c++ の場合 RVO (return value optimization) が最高に効けば

string f() { return string(“123”); }

void f(void * retval) { new (retval) (“123);}
のように戻り値を呼び出し側が渡した領域に直接コンストラクトするから、

void f(string &s) { s = “123”; }
よりも高速になる可能性がかなりあるんだよね
vectorでもなんでも同じだけど

どうでもいいか

719 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:50:08.41 ID:MliDoeQ0.net]
C++ならplacement newを使う手もありそうだが実際に使いこなせる気がしない

720 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:51:45.23 ID:35t2qqJ0.net]
どうでもいいな。
そこまで速度欲しいなら他にもっと直接的なやり方がいくらでもあるだろうに。



721 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:53:37.54 ID:s5wfWcqZ.net]
そんな細かいことで速くなるような状況ならインライン展開されるだろ

722 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:09:07.15 ID:MliDoeQ0.net]
マルチスレッドを考えるとスタックはスレッドローカルなので速度だけの問題ではない
速度だけ考えると確かにどうでもいいからマルチスレッドを考えるといい

723 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:32:59.08 ID:vpP76l93.net]
>>699
>>直接的なやり方
それがintent(out)なわけだが

724 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:36:16.61 ID:vpP76l93.net]
あすまん>>699>>697へのレスか。それ分からずに変なこと書いた

>>697
その「可能性がある」ってのやっかいだわ

725 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:27:11.90 ID:Pb+ZodvD.net]
そもそも返り値使いすぎなんだよな
返り値なんてエラー管理かスカラー関数くらいにしとくものなのかも

726 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 01:41:58.87 ID:uN2ioEKO.net]
その言語の推奨されるスタイルに合わせるべきじゃね?
C++ならちょっとしたことで>>697のどっちがいいか変わるとかには目をつぶって
返り値使うべき
Fortranならoutパラメータを活用すればいいだろ(タプル無いし)
そこから外れるのは実際に速度が必要になってからでいい

727 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 02:05:24.43 ID:Pb+ZodvD.net]
そう。その推奨されるスタイルとしてintent(out)を採用している言語って少ないよなあーと思うんよ

728 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 02:15:44.60 ID:t0EWsjNV.net]
このスレ的にあれどけどc言語がそうだ
戻り値はスカラーかポインタ
それ以外の返り値が必要なら非constポインタを渡す

729 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 03:00:03.91 ID:uN2ioEKO.net]
C言語はスタイルとしてはそうだけど、言語機能としてポインタ渡しとoutは区別されてないな
逆にD言語やC#はoutをinout/refと区別してるけど、推奨はされてない感が強い

730 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:00:23.62 ID:9+5jHACw.net]
まあ直感的には引数はインプットで返り値がアウトプットってのは自然だとは思う。
そうならんのはcの場合は返り値をレジスタ、もしくはスタックにどう置くかを意識してるからでしょ。
良くも悪くも低レイヤーに合わせているわけだ。



731 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 11:14:49.43 ID:Pb+ZodvD.net]
Cはintent指定出来ないことに目を瞑ればかなり良いんだけど、配列の範囲外アクセスチェック周りとかが原始的すぎてデバッグしんどいなあ

732 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:27:31.25 ID:pVxcphgn.net]
そもそもpure宣言相当が無い、つまりどんな関数も副作用が有りうると想定する
必要のあるCはお題から外れるので

733 名前:は。 []
[ここ壊れてます]

734 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 14:04:14.80 ID:Pb+ZodvD.net]
せやな

735 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 14:18:10.92 ID:38KyKd1m.net]
「副作用が無いDSL」のインタプリタをCで作るか
インタプリタではない何かをDDDで作れ

736 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 14:45:53.72 ID:uN2ioEKO.net]
つ__attribute__((pure))

737 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 19:03:39.12 ID:pVxcphgn.net]
libC関数もヘッダに情報が入って、pure から pure じゃない関数を呼んだらコンパイルエラーになるくらいになったら意味があると思うけど。

738 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:16:30.87 ID:dM6Zlct0.net]
画面に出力するのは副作用?Thunderbolt3で接続したGPUボックスをGPGPUとして使った計算は?
ヒープ領域を変更するのは?
と、考えるとpureなものって何でしょうね、ってならないかね

739 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:30:38.28 ID:Pb+ZodvD.net]
その辺はHaskell的なアプローチでいいんじゃない?

740 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:31:03.58 ID:Pb+ZodvD.net]
Haskell のは並列か



741 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 19:29:25.78 ID:o7/+6TQd.net]
Cって
「本当は疎結合にしたいけど性能優先でしかたなく密結合にするよ」
を理解できるレベルを暗黙の前提にしてない?
なんであんなに流行したんだろ??

742 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 19:41:43.42 ID:jOZ58Btw.net]
Nimって疎結合にしても密結合なCくらいのパフォーマンス出るんだろうか?

743 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 19:51:29.66 ID:7E1ezZvV.net]
ライバルたり得たPascalが
文字列は255文字まで
可変長引数使えない
ポインター扱いにくい
int と char の区別が面倒、など
なんとも無意味な不便さを抱えていたからだと思う

32ビットまでの Windows は API の呼び出し規約が Pasal 流なのに文字列はC式、
初期の Macinrosh は API の文字列も公式の解説書の記述も Pascal だったりしたなあ

744 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 20:02:30.49 ID:jOZ58Btw.net]
ごめんなんでもない

745 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 22:21:14.63 ID:EN/8rlvw.net]
疎結合の意味はよくわからんがdllやsoの中身はほぼ全部Cの関数だろ

746 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 22:23:36.55 ID:QQz+Sj8+.net]
高級言語からCの方向で見てるからの感想だろ。
アセンブラからCの方向だったらまた違った感想になるんじゃないかね。

747 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:10:13.25 ID:RwyGVa1s.net]
ドライバのようにインタフェースを関数ポインタで定義して実装を分離するみたいなのが疎結合のC?

748 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:12:50.53 ID:kpq2obaf.net]
素直に別の実行ファイルにするのが疎結合のC

749 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 01:42:26.51 ID:+aZgql8Q.net]
>>726
それはコロンブスの卵だから無意識に選択肢から外してしまうんだよな
任意の言語でできることをやっても特定の言語の手柄にならないから

750 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 03:18:38.36 ID:uqya3zvR.net]
作者のwirth先生はPascalを教育用、ModulaをOSも書けるように作ったのに
Pascalの方がそれなりに広まってModulaがさっぱりだったのは不幸だよな
まあModulaはModulaで面倒くさいとこあるんだけど



751 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 12:54:09.54 ID:GZlQK3q7.net]
いい加減スレタイからRustはずそうぜ

752 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 14:02:58.92 ID:bDjjKsy9.net]
つか、スレタイから次世代言語をはずした方がいいんじゃね。
旧世代の言語の話しか出てこないし。

753 名前:デフォルトの名無しさん [2018/04/03(火) 14:19:06.58 ID:01qL0AuM.net]
>>730
次世代を語るためには旧世代を知っておかねばならんのだ(キリッ

754 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 14:58:56.73 ID:nX+Jhx5Q.net]
おんこちしんと
うんこちんちん
似てる

755 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 16:29:09.56 ID:lykT2DjF.net]
>>729
C++のポジションを狙う言語には「なんなんだよこの仕

756 名前:l=うっとうしい」もついてくるからw []
[ここ壊れてます]

757 名前:デフォルトの名無しさん [2018/04/03(火) 17:41:10.26 ID:01qL0AuM.net]
>>733
C++のポジションを狙うRustには「なんなんだよこのアンチ=うっとうしい」もついてくるからw

758 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 18:01:19.06 ID:teyqxCn/.net]
ネタにしてるが、マジで旧世代言語知らずに次世代なんて語れんだろう。

759 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 19:42:11.24 ID:wFxxlJZP.net]
そもそも次世代言語ってまだない言語を夢想して話せってこと?無茶いうな

760 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 19:48:53.79 ID:AUs9WXEq.net]
あのアンチはRustに職を奪われたからね、しょうがないね
Rustスレで気持ちよく大暴れしてるときに自分で漏らしてたよ



761 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 20:16:15.66 ID:BzNmSsTz.net]
なんでこんなrust普及の妨げにしかならんこと言いだすんだろう。

762 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 20:27:21.10 ID:X7iioW9i.net]
UE4やHoudini使ってると次世代言語はビジュアルプログラミングでいい気がしてきた

763 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 20:33:03.03 ID:s7jZ67re.net]
Rustは次世代言語だがC++知ってた人と今から勉強始める人の格差はリセットされないな
世代交代とは寿命が尽きることであって格差がなくなることではない

764 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 20:44:15.49 ID:uqya3zvR.net]
>>739
MSは何故GUIエディタを放棄してXAMLなんぞ作ったんだろうか……

765 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 21:06:26.14 ID:teyqxCn/.net]
XAMLはまだBlendで書けるだろ。

766 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 21:10:07.12 ID:f/nGrkvY.net]
XAMLを手書きしてる人なんているか?

767 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 21:27:57.24 ID:teyqxCn/.net]
Xamarinの人たちかな。

768 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 22:59:23.72 ID:oucbN3qp.net]
補完ありのテキストエディタならいくらでもいそうな気がするが。

769 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 23:12:30.59 ID:gOYTrQOB.net]
Delphi「やっと時代が追い付いたか」

770 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 00:44:22.36 ID:fh2IMjqM.net]
>>739
じゃあdiff取ってみろ。
テキストを超える記述方法は無いよね。



771 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 16:47:20.75 ID:VNuZKpdj.net]
Kylix「誰も知らない 知られちゃいけない」

772 名前:デフォルトの名無しさん [2018/04/04(水) 17:04:36.07 ID:Pmay6Vdj.net]
deっvi---l

773 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 17:31:20.15 ID:wRFLDXS3.net]
まあVBの方が古いんだけどな

774 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 09:53:55.09 ID:e89pcJBq.net]
>>739
同意
テキストよりビジュアルの方が人間の頭脳に優しい

775 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 12:37:16.42 ID:JZPNgytE.net]
Goの案件って結構あるのね

776 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 12:55:34.16 ID:y0NHVjlZ.net]
Goみたいな不安定なものよく使うな

777 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 13:26:35.73 ID:LOY6Fa8O.net]
Cはグローバル変数の使い方やOOPのやり方みたいなローカルルールないと無理っぽい
Cがいくら安定してもローカルルールは安定しない

778 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 13:43:27.23 ID:iO/NW/s5.net]
流石にひどいw

779 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 16:18:41.57 ID:dIEw27mY.net]
>>752
まじでー。普通のcrudなweb案件とかもあるならやってみたい

780 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 17:28:50.26 ID:1M9Ik5ns.net]
どこが不安定なんだろ?



781 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 18:15:56.12 ID:LOY6Fa8O.net]
小学校でプログラミングを教えろ、ただし中学レベルの数学を教えるな
Goがやりたいことは大体これと同じだろ

782 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 18:27:40.19 ID:2Xz4c+5M.net]
何か問題でも?

783 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 19:04:22.55 ID:LOY6Fa8O.net]
どこかの評論家に否定される前に、自分で考えて肯定すればいいのに
自分で考えるのをやめたら、否定してくださいと言ってるようなものじゃないか

784 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 19:20:07.17 ID:y0NHVjlZ.net]
>>759は自分で考えてなんの問題もないと肯定したレスだろう

785 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 19:59:52.92 ID:65xgSjRP.net]
>>758
まあGoogleの中の人は例外すら理解できなくてGoに盛り込まなかったくらいだからな
Googleのプログラマは小学生レベル

786 名前: []
[ここ壊れてます]

787 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 20:02:15.13 ID:y0NHVjlZ.net]
いやいやいや

788 名前:デフォルトの名無しさん [2018/04/07(土) 20:42:13.27 ID:n5lWGq5m.net]
>>762
例外なんて機能を欲しがるとか正気か?
タプルかタグ付きユニオンのある言語には例外なんて必要ない
むしろ、無いほうがよほど筋が良い。よりによって例外かよ…

Go言語の問題はもっと他にあるよね
ジェネリクスとかNil安全とかラムダ式とかイミュータビリティとか

789 名前:デフォルトの名無しさん mailto:sage [2018/04/07(土) 20:45:00.99 ID:y0NHVjlZ.net]
AirPlayさんなんだろ

790 名前:デフォルトの名無しさん [2018/04/08(日) 00:14:21.96 ID:Dxb/j7Bg.net]
>>764
100得ナイフを欲しがっても無理だぜ。
お前さんは、刺身包丁では肉を斬りにくいと文句いう人なの?



791 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 00:16:58.41 ID:kOs0IpX+.net]
ガイガイ

792 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 00:44:53.47 ID:V9VuwMAu.net]
ここでのクソみたいな議論に時間を使うことが一番コスト高ってことを
goを使ってる人はわかってる。

793 名前:デフォルトの名無しさん [2018/04/08(日) 00:59:11.92 ID:yrhx1H5B.net]
>>764
例外ってか戻値無視してたらコンパイルエラーにする構文がほしい。(すでにgoにあったらスマヌ)
ライブラリやミドルウェア作るとき、ここでエラーならそれ以上処理進めんなってことあるので、アプリ側のエラーハンドリングを強制させたい。
それができないからやむを得ず例外で終了させてる。

794 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:06:05.49 ID:+FJwvftX.net]
>>769
例外とコンパイルエラーを同じものと考える神経がわからん。
実行時にまずい処理が来たらgoのプログラムを強制終了させたいならpanicがあるが。

795 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:11:44.09 ID:+FJwvftX.net]
つーかgoが気に入らない理由に例外を上げるけど、例外ってそんなに良いもんかね?

例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある?
それくらいやってくんないと例外を使う意味って、エラーハンドリング問題の先送りでしかないから。

796 名前:デフォルトの名無しさん [2018/04/08(日) 01:12:25.64 ID:DdcJdhQn.net]
>>766
問題って書いたのが誤解を招いてしまったかな…
別に上記の全てが無いとダメって言ってるわけじゃないよ。あったら嬉しいなくらいにしか思ってない
けど、例外なんて邪魔にしかならん機能を欲しがるくらいなら他に欲しいものがいくらでもあるだろと思って…

あと、揚げ足取って悪いけど、100徳ナイフを欲しがってるなら例外も欲しがってるはずだろ…
例外と継承を捨てたのはGoの英断

797 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:16:07.05 ID:kOs0IpX+.net]
>>772
いやお前は悪くない。相手が意味ワカラン奴なだけだ

798 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 01:46:25.89 ID:21utqBEE.net]
java
但しランタイム例外は除く

799 名前:デフォルトの名無しさん [2018/04/08(日) 02:00:48.53 ID:DdcJdhQn.net]
>>771
>例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある?
Javaの検査例外とSwiftの例外はtry必須だよ。
けど、try必須だと書くのが面倒なんだよね。実際、Javaでは非検査例外のほうが主に使われてるし…
検査例外と非検査例外を場合によって書き分けるのがJavaの理想なんだろうけど、現実はそうじゃない…
Swiftの例外はtryの書き方が何種類かあるからJavaより使い易くはなってるんだけど
Rustと同じでタグ付きユニオン(enum型)あるから別に必要なくない?ってなる
Rustはエラー処理にenumのResult型を使うけど、Swiftでは例外を使うのがマナーなのかな?

800 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 02:16:09.65 ID:+FJwvftX.net]
>>775
swiftはそうだったな。
たしか例外周りはswift2で追加実装されてウゲーってなった覚えがあるような。
swiftの言語仕様の変更は凄まじいものがあるよな。もうswift4だっけか?
正直swift信奉者≒apple信者じゃないと説明がつかない。
言語仕様をミニマムに抑えて



801 名前:熟考するgoを見習ってほしいわ。 []
[ここ壊れてます]

802 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 02:26:12.80 ID:+FJwvftX.net]
>>775
つまり結局goのエラーハンドリングの面倒くささと一緒になるってことだよな?

goのエラーはただの値だから
構造体のメンバ変数に格納先を用意してやれば、
後で纏めてチェックしたり、
一回でもエラーが発生したら処理を中断する
みたいな書き方は全然できる。

そのへんはgo blogに記事があった。

803 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:04:32.63 ID:N7to3hps.net]
>>771
goの例外不在についてはerrorの握りつぶしが書きやすい上に気づきにくいのが不満
握りつぶしに比べたら先送りのほうがまだ良い
>>769が戻値無視してたらコンパイルエラーって言ってるのはそこが理由でしょ

804 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:14:34.94 ID:+FJwvftX.net]
>>778
あー。なるほどと思ったけど例外処理は先送りしたあげく、結局とこでも処理せず終わるパターンあるよね。
握りつぶしが簡単にできるのはどっちも一緒では?

805 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:17:34.48 ID:N7to3hps.net]
>>779
ハンドルされない例外は処理の中断になるけど、
握りつぶしは処理の続行になる
中断のほうが良い、と思う

806 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 03:49:10.38 ID:DdcJdhQn.net]
>>780
例外の一番の問題は予想外の場所で例外が不必要にキャッチされて、その上で
握りつぶされてしまった場合、握りつぶされた場所を特定するのがかなり面倒臭いこと。
そんなコード書くヤツが悪いと言いたいが実際にいるんだからしょうがない…
どこで握りつぶされるか分からんリスクを背負うくらいならその場で握りつぶされた方がまだいい

因みに、エラーハンドリングに関してはRustのResult型が最も筋が良いと思ってる
Result型なら故意に握りつぶそうとでもしない限りは簡単には握りつぶせない

807 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 04:07:01.05 ID:N7to3hps.net]
>>781
goのほうが握りつぶしが書きやすいからこそ、どこで握りつぶされるか分からんリスクはgoのほうが大きい、と思うんだよなあ

808 名前:デフォルトの名無しさん [2018/04/08(日) 08:46:33.77 ID:Dxb/j7Bg.net]
>>781
トラブルシューティングの為に、キャッチした時点でロギングしないの?

809 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 09:00:51.10 ID:RUgiqDA/.net]
Cのprintfの戻り値を毎回欠かさずチェックしてる人だけが例外に石を投げなさい

810 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 10:19:07.88 ID:xmyFoIZI.net]
戻り値の握り潰しは局所的・静的に判断できるけど例外はそうじゃないからなぁ。
それこそ例外を起こしてみないと見つけるのが困難だったりして。



811 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 10:23:53.74 ID:+rfxRhvD.net]
例外は継続的な改良に対応しやすいのがメリットなんだよな
取りあえず最初は例外安全だけ意識して例外は上の方でまとめて処理しておいて、
あとでより丁寧な取扱いが必要になったときは問題なく対応できる
もちろん、検査例外とかいうビチグソは無い前提だが

812 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 11:36:37.63 ID:Bf+GYw8s.net]
最初はexit
exitの握り潰しが必要になったら例外で

813 名前:デフォルトの名無しさん [2018/04/08(日) 11:42:04.86 ID:YK+KPtHu.net]
>>758
1から10までの整数を足すのに
ループで順番に足す方法を教える様なのが
今の日本のプログラミング学習(教育)だからな
そんなんじゃだめ

814 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:08:16.40 ID:mQRLIlYG.net]
このスレも例外が理解できない幼稚園児ばっかかよ
Goみたいな言語が流行るわけだ

815 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:22:55.27 ID:Bf+GYw8s.net]
自分で選んだ言語がそれだったらそれでもいいよ
より良い言語を後で見つけたら自分が馬鹿だっただけで済む
しかしそれを選んだのが会社や国家だったら馬鹿にしても炎上するし擁護しても炎上する

816 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 13:39:52.93 ID:T4sPcvM1.net]
このスレの議論はほんとレベルが低いな
間違った使い方をしたときどちらがマシかでしか優劣をつけられないのか

817 名前:デフォルトの名無しさん [2018/04/08(日) 13:50:33.26 ID:DdcJdhQn.net]
>>782
なんか会話が噛み合わないなと思ってたがやっと理由が分かった気がする。
>>782の言う"どこ"はGoのエラー(戻り値)は握りつぶしがしやすいから
誰が"どこ"でエラーを握りつぶすコードを書くか分からないって意味の"どこ"だよね。
俺の言う"どこ"は例外がスローされた場所に対して
キャッチされる場所が"どこ"か分からないって意味の"どこ"なんだよ。
キャッチされる場所が分からないとデバッグ時に探すのが面倒なんだよ。
Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
握り潰した場所は必ず一致するからデバッグしやすい。
結局、従来の例外はgoto文と同じでフローが飛ぶから気持ち悪いってのが俺の意見。 []
[ここ壊れてます]

819 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:09:14.32 ID:Bf+GYw8s.net]
従来の言語にはexitがあるから例外がない
SmalltalkやJavaScriptにはexitがないから例外があるんだろう

820 名前:デフォルトの名無しさん [2018/04/08(日) 14:12:58.97 ID:DdcJdhQn.net]
>>791
でも、次世代言語って間違った使い方(プログラマによるミス)をさせないように
制限をかける意味合いが強くない?Null安全とかその典型だと思うんだけど。
オレは絶対に使い方を間違えないって言うんならC++, C#とかを使ってろよってなるし…



821 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:13:54.54 ID:aL28Ce5R.net]
>>792
戻り値のエラーを握りつぶされると、不適切な状態で動き続けるから、デバッグが困難になると思うんだが。
例外の握りつぶしでも同じ事だけど、構文としては、例外の握りつぶしの方が見つけやすいと思うけどね。catchブロックでしか細工できないから。
goだと正常な返り値の隣に,_つけるだけで握りつぶせちゃうから、見つけづらいんじゃないかな。

822 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:15:23.81 ID:V9VuwMAu.net]
間違えを考慮しないシステムの恐ろしさを全くわかってない奴はそもそも話にならん。
プログラミングを語る資格がない。

823 名前:デフォルトの名無しさん [2018/04/08(日) 14:23:41.21 ID:DdcJdhQn.net]
>>795
すまん。よく考えると確かにデバッグはどっちも面倒なことに変わりないわ。
ただ、個人的にはtry-catchも,_もどっちも見つけづらさは大して変わらないと思ってる。
デバッグ時じゃなくて、普通にコードを読むときに戻り値でやったほうがフローを把握しやすいってことが言いたかった。

824 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:26:14.02 ID:aL28Ce5R.net]
返り値でエラーを判別するコードだと、本来やりたいことの次にほぼ必ず、エラー判定処理が入るから、可読性が低いんだよね。
昔、C使ってた頃は、そういうところが嫌でたまんなかったし、ひどいのになると主要な処理が全部、条件部分で行われてて、if文の連なりしかないコードとかみたし。
正常系をリーダブルに書くには、例外の方が気持ちいいなと思うよ。

825 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:32:30.43 ID:kugCg6kv.net]
そのあたりはEitherが良いと思うんだな

826 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:35:54.54 ID:aL28Ce5R.net]
後、最近のIDE使ってると、todoをコメントに入れとけば、あとでそれを、まとめて見直せるから、取り敢えず、try-catchして、catchのところはtodoにしといて、まず正常系を一通り買いてから、あとで異常系に対処するっていうワークフローにできるのが、例外の利点かなと思う。

827 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:37:10.66 ID:N7to3hps.net]
>>792
デバッグ時に、どこかでエラーが握りつぶされてるかもしれない、というパターンを考えないといけない、という意味で「どこ」
しかもそういう状況は>>795の言うように不適切な状況で動き続けるから
握りつぶした箇所と不具合の発生箇所がかけ離れることも多い
だから、goに限ったことではないが、エラーや例外の握りつぶしはデバッグしづらい
例外がどこでcatchされてるか探すのは、握りつぶし探しに比べたらまだ簡単

828 名前:デフォルトの名無しさん [2018/04/08(日) 14:37:23.36 ID:DdcJdhQn.net]
>>799
タグ付きユニオンがある言語ならそれが一番だと思う。
前にも言ったけど、エラーハンドリングに関してはRustのResult型が一番筋がいいと思ってる
でも、Goにはタグ付きユニオンがないからなあ…

829 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:51:49.81 ID:aL28Ce5R.net]
goは本格的には使ったことないけど、無視はできないんで、いろんなコードを見てるんだけど、今のところの感想としては、goって、書き手の思考を遮らないというところに重きを置いてる印象。
deferなんか、なんか開いたらあとで閉めるけど、忘れない内にその処理を予約しとこうみたいな発想かな。
自分は書くことより読むことを重視するタイプなんで、あまりgoには向いてないなあと思ってる。

830 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 14:51:50.04 ID:Bf+GYw8s.net]
副作用禁止ならexitも例外も禁止だからEitherがある



831 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 15:22:23.64 ID:gQU7xBEC.net]
stack traceもしらんのか

832 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 15:29:06.45 ID:drN9+cfC.net]
握りつぶしてるところでスタックトレース出力するんだよ!

('、3_ヽ)_??

833 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 15:51:49.24 ID:4BboKQKO.net]
maybe, eitherがある言語やった後に無い言語はしんどい

834 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:20:17.22 ID:kOs0IpX+.net]
Maybe, Eitherは強い。ほぼ必須な体になってしまった

835 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:47:41.66 ID:iGi236dt.net]
Eitherは初見だとそれがエラー処理用によく使うっていうことが
名前から全然伝わってこないところだけが嫌い

836 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:58:42.79 ID:+FJwvftX.net]
>>803
書きやすさと読みやすさは同一だと思ったが。特にdeferとか大体close処理では?
open直後はdeferにclose処理書いてあったほうが読みやすくないかな?

837 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 17:58:46.39 ID:AFrzJyvZ.net]
たし蟹

838 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 18:04:30.90 ID:ikNNlzZg.net]
リューナイト

839 名前:デフォルトの名無しさん mailto:sage [2018/04/08(日) 18:14:07.95 ID:V9VuwMAu.net]
defer はスコープの終わりで暗黙的に動くクラスのデストラクタより
コード部分で明示した方がわかりやすくね?って発想じゃないかね。
こういうのは好みだったり書いてるアプリの種類で分かれそうな気はする。

840 名前:デフォルトの名無しさん [2018/04/08(日) 18:50:09.38 ID:BxgydgxS.net]
c++17の [discard]はどうかね?



841 名前:デフォルトの名無しさん [2018/04/08(日) 18:52:29.42 ID:BxgydgxS.net]
間違えた nodiscard

842 名前:769,815 [2018/04/08(日) 23:39:43.80 ID:yrhx1H5B.net]
>>792
> Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
> 握り潰した場所は必ず一致するからデバッグしやすい。

俺もそれには同意で、更に一歩すすんでc++17の nodiscard属性みたいな指定ができるてほしいんだよ。デフォルトはコンパイルエラーで。

843 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 00:41:14.72 ID:R+tVusAV.net]
Fortran のIO関係のエラー処理は優れてると思うわ。
Open文にoptionalのerr引数を渡して置けば、エラーが出てもerrに値を入れて続行。err引数を渡してなかったらエラーが出たら異常終了

844 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 00:59:36.33 ID:1PTa96/6.net]
goのdeferは、その中で起こったエラーを外に通知する(簡単な)方法がないってんで
槍玉に上げられてなかったっけ?うろ覚えだけど

845 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 01:32:15.01 ID:l0nazyXh.net]
>>818
一番簡単な方法は名前つきreturn変数を使うことだから簡単ちゃ簡単
だが正直名前つきreturn変数がそもそもクソ構文

846 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 06:40:40.00 ID:ON56dtQ5.net]
>>817
異常終了してはならないUIもある
UIが言語に影響を与える

847 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 07:57:09.29 ID:1PTa96/6.net]
>>819
はー、名前付きreturn変数なんてあったんだ
しかし本来の流れによるerrがある場合は握りつぶさないようにしないといけないし、真面目にやると分岐が入り組みそうだな

848 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 07:59:50.20 ID:R+tVusAV.net]
>>820
いやそのためにerr引数があるのよ……

849 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 08:27:01.39 ID:D454qjGx.net]
>>816
MSはかなり昔からそういうの力を入れていて独自仕様で実現してるな。(SAL注釈)
SDKのヘッダなんかで見かける _Check_return_ とかとかいうやつ。VSの「コード分析」でチェックしてくれる。

850 名前:デフォルトの名無しさん [2018/04/09(月) 08:42:34.03 ID:mPPENYW6.net]
理想はエラーハンドリングを書いてなかったら



851 名前:Rンパイルエラー。
(エラーハンドリングでエラー握り潰すやつは流石にそこまで面倒見きれない)
次点は強制終了。その際にエラーがどこで何故起きたのかって情報を出せること。
一番悪いのはそのまま処理進んでサイレントクラッシュ。

こんな感じ。
[]
[ここ壊れてます]

852 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 08:51:45.67 ID:2cUxs1pv.net]
コンパイルエラーは、そこまで強烈にエラー対応必須にしたらスクリプトみたいな「まずはとりあえず動くコードを書いて様子を見る」っていう使い方は出来なくなるな

853 名前:デフォルトの名無しさん [2018/04/09(月) 09:45:04.94 ID:9pBeshvD.net]
となるとrustやな

854 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 09:59:14.65 ID:RBhArkXv.net]
そういやClojureってどうなったん?

855 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 10:18:17.46 ID:aahOEQux.net]
Goの名前付きreturn使うとアセンブリまで落としたとき、コードが少しきれいになるぞ。
俺は好き。

856 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 10:48:34.89 ID:1PTa96/6.net]
>>828
返値の最適化だけが目的なら初めからresult変数方式のやつ使えば
Pascal、Eiffel、あとFortranもそうだぞ

857 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 11:33:31.90 ID:ON56dtQ5.net]
デバッグは自分との戦い
だが最適化は自分が速くならなくても相手が遅くなれば勝てる
他人の足を引っ張る要素があるからカオスになる

858 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 12:00:22.27 ID:aahOEQux.net]
>>829
だけが目的と言うか、優劣をつけたりGoを使う理由にはあんまりしてないが。

例外は俺も好きじゃないな。
ただのちょっと見た目のきれいなgotoであって、フローとしては全然きれいじゃないし、
finallyで複数のリソースの開放しようとしたらどこまで進んだか管理するしかなくなるし、
各エラーで細かい処理が必要だったら結局スコープの狭いtry-catch書くことになるし、
毎行errチェックしたり、いっそ無視したりするのとレベルが変わらん。

deferは、実際に使えた直後に開放を予約できるから価値がある。

良くできてると思うけどな。

859 名前:デフォルトの名無しさん [2018/04/09(月) 12:16:00.98 ID:Wtc2x12J.net]
>>825
そこは、エラー戻値無視するな構文を用意してれば良い

860 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 12:16:21.64 ID:ebJj02XJ.net]
>>829
え、すまん。よく知らないんだけど、Fortran って関数で配列を返してもサブルーチン的ないい感じに最適化してくれるの?



861 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 13:04:43.93 ID:1PTa96/6.net]
>>833
されるよ。全部の実装でそうとは断言できないけど
要するに>>697のretvalが直接返り値用の変数として見えるってだけ

862 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 14:38:02.08 ID:50KKUeFL.net]
何でここの人たちエラーをその場で処理するのが当然だと思ってるの?
普通は上に投げるよね?

863 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 14:47:49.87 ID:iBEYls0Z.net]
>>835
その「上」の関数ではどうすんの?また上に投げるの?

864 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 15:03:10.07 ID:FuUgA4s9.net]
一番上のハンドラでまとめて受け取る

865 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 15:18:43.79 ID:ml5ntbUH.net]
結局人類にgotoは必要だったんだ!

866 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 16:05:31.09 ID:O1tgNFRh.net]
なんで2ちゃんでこういう議論をすると最期は必ずアホアホ展開になるの?

867 名前:デフォルトの名無しさん [2018/04/09(月) 16:19:21.64 ID:mPPENYW6.net]
>>835
俺は、その上側でのエラーハンドリングを必須にすることができて欲しいという意見。c++17の nodiscardみたいなの。
rustのResult型や他言語のEither勉強不足でわからない。スマヌ

868 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 16:26:17.23 ID:ON56dtQ5.net]
>>835
マルチスレッドが普通になったから
上に投げるよりスレッドの外に投げる

869 名前:デフォルトの名無しさん [2018/04/09(月) 16:39:51.89 ID:wyYx8QLn.net]
rustのResultは検査しないとコンパイラにワーンされるよ

870 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:13:02.99 ID:aahOEQux.net]
>>835
上に投げるとしても、戻り値で明示的に戻せば良いだろう。
とりあえず手に負えないからだれか呼んだ人処理して、って言って、だれの手にも負えない可能性がある、ってのは良くないと思うよ。
普通とか言い始めると誰の普通かはっきりしないから、それはおいといて。

goでも、ホントに戻り値なしで呼ぶとき以外(何かしらの値とともにエラーが帰ってくる時)は、_で明示的に握りつぶさない限り受けた変数に触らないとコンパイル通らないし。
何一つ受けずに呼び出したり、触った結果握りつぶしたらコンパイルは通っちゃうけど。



871 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:20:13.54 ID:2gnvm26g.net]
例外安全を徹底してればどこでキャッチしようが手に負えない例外なんか無いだろ
それを不安に感じるのは、個別の事情にばかり気を取られて全体の一貫性を疎かにする典型的な日本人の思考パターンだ
(メモリ不足など、どこでキャッチしても対処のしようがないものは除く)

872 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:26:58.77 ID:aahOEQux.net]
>>844
徹底する、というルールベースな時点で「手に負えない例外は存在しない」という事を言い切るのは不可能でしょ。
メインロジックではアプリケーションの総合ハンドラでメッセージ出してリトライさせれば手に負えるはずの例外だったが、
なんの因果かそいつがバッチプログラムに使われる事になった時とかなんて、前提条件や処理フロー自体が変わる典型だと思うが。

最初からエラーとして返しとけば、なんの問題もなく流用できるでしょ。
常に呼び出す親が(さらに親へ丸投げするかの選択も含め)処理することが義務付けられてるほうが明示的だよねって言ってるんだが。

873 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:38:57.68 ID:2gnvm26g.net]
>>845
戻り値なら流用しやすいという根拠は?
なんとなく手抜きっぽい、で批判する典型的な日本人的思考だね

874 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:44:44.78 ID:ml5ntbUH.net]
チョンが何か言ってらぁww

875 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:45:14.09 ID:2gnvm26g.net]
あと、例外機構を持つ言語には例外安全を維持するための仕組みが組み込まれているのが普通だから、
それを「運用ルールに頼っている」と切り捨てておきながら戻り値は言語の補助があるから安全だと主張するのはダブスタの詭弁だ

876 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:45:52.21 ID:w9Q1JF4q.net]
>>846
書いてるだろ。
明示的に処理するからだよ。
すっぽぬけて何処か別の定義されている「はず」のハンドラに任せない所。

全関数にtry-catchを書いてて、親にもtry-catchが漏れなくあって、明示的に再throwしてたり、異常な場合はちゃんと死ぬ事が保証できてるなら、それでもいいけど。
この関数では呼び出し先がthrowすることもあるけど、親にハンドラがあるから大丈夫、が一箇所でもあったら認めないが。

何か、戻り値でエラーを返せる言語使ったことある?
パターンマッチングでエラーか結果か判定できたり、複数結果を返せたり、引数でエラーをどう処理するから指定できる言語。
使ったらわかると思うけど。

877 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:50:39.85 ID:w9Q1JF4q.net]
>>848
ダブルスタンダードでもないよ。

維持するための仕組みがあったって、維持していると保証がない限り維持は出来てないのと同じでしょ。

recoverがあるから、catchできるのと同じだからエラーハンドラここに書くって言う奴と同類に見える。

878 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:53:07.60 ID:w9Q1JF4q.net]
暗黙的に握りつぶす/無視する、か、明示的に握りつぶす/無視する、だけの違いなんだが。
なんでわかんないんだろう。

879 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:53:14.64 ID:2gnvm26g.net]
>>849
そんなことはプログラミングのメインストリームがとっくの昔に通った道なんだよ
Javaの失敗をトレースしてるようにしか見えない
Javaの検査例外がなぜ失敗したかを調べてみたら?

880 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:55:18.76 ID:w9Q1JF4q.net]
>>852
「そもそも例外があるから、こういう失敗するんだ」を「例外無くして明示的にやろう」
と言語仕様で厳しくやってるだけで、
トレースしているどころか、トレースしないように別ルート取ってるだろ。
どこがトレースしてるの?



881 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:58:04.38 ID:mElBwjLW.net]
>>853
まさか検査例外を知らないのか?
あれは戻り値によるエラー処理を強制してるのと等価だよ
まずは勉強しよう

882 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 18:58:52.48 ID:w9Q1JF4q.net]
日本人的だとか、ロジカルでない事をグダグダ言う前に、いろんな言語の言語仕様みてくりゃいいのに。
Fortranが話題に出てるけど、知ってんのかって疑問。

883 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 19:03:27.06 ID:w9Q1JF4q.net]
>>854
知ってるよ。
非検査例外と検査例外のどちらも発生させうるメソッドはどうハンドリングするの?運用のルール?
結局全部検査例外なら良いって話になっちゃうし、throws書いたらガバガバになるだけじゃん。

884 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 19:58:52.42 ID:rsHYF1DS.net]
jsでasync await使おうとするとエラー系は例外扱いになるから辛い。

885 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:15:00.84 ID:ebJj02XJ.net]
>>855
Fortranを話題に出してるのは俺で、俺はFortranユーザーだ。なんか用か?

886 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:15:41.91 ID:ebJj02XJ.net]
まあ返り値の最適化はわかってなかったけどなw

887 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:24:45.38 ID:25u/0YJa.net]
次世代語る前に現世代を勉強した方が良いねこれは。

888 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:25:58.04 ID:w9Q1JF4q.net]
>>858
いやいや、そういう意味じゃない、誤解させてすまん。
引数でerrの取り扱いしたり、名前付き引数があったり、そういう言語を触ったことがあるのか?
皆はそれぞれ使ってて、メリットを分かって話してるが、自分(ID:2gnvm26g)は戻り値でそういう処理をする言語は触った事があるのか?
話題についてこれてるか?Javaかなんかの狭い世界の話ししてるんじゃないのか?
って事を言いたかったんよ。

889 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:31:26.77 ID:ebJj02XJ.net]
>>861
ああそういうことか。誤解してたわすまん

890 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:39:58.68 ID:2gnvm26g.net]
>>861
俺は普通に使ったことあるし、戻り値をエラーに使うことを否定したつもりはないぞ?
ただ、あんたの主張はJavaの検査例外が失敗した理由を解決していない、と言ってるんだよ



891 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:40:46.31 ID:w9Q1JF4q.net]
>>862
いやいや、俺の方こそすまん。
慌てて説明したから名前付き戻り値を名前付き引数とか言ってるし。
重ね重ね面目ない。

892 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:40:53.09 ID:FJyngZbb.net]
例外設計に関してはrustが現状ベストだと思うけどな

>>857
unhandled promiss rejection出た時の絶望感半端ない

893 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:45:47.57 ID:w9Q1JF4q.net]
>>863
解決していないんじゃなくて、結果として検査例外の書き方がまずかった、検査例外以外の存在も実は「これ検査例外にすべきじゃないの?」とか色々物言いもつく、
そもそも論として全部明示的にハンドリングする事をデフォルトにして、検査例外どころか例外を無くそう、って話なんだが。
失敗したも何も、クソめんどくさかったりして、throwsを全部につければ問題無いとか変なルールで回避するからややこしくなるだけなって、収拾がつかなくなったんでしょ。
ジェネリクスがない頃からJavaは触ってるし、歴史を知らんわけでもない。

問題を整理し直して解決したんじゃなくて、捨てたんだよ。柔軟さを。

894 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:56:14.35 ID:ebJj02XJ.net]
ID:2gnvm26gの主張って、エラー関係に文句言ってる奴に「別にthrow-catchでもそんなに困らなくね?」って言ってるの?

895 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:56:27.27 ID:1PTa96/6.net]
俺には二人ともが「Javaの検査例外は失敗だった」と主張しているように読める……
なんで喧嘩してるんだろうこの人たち

896 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 20:58:19.15 ID:w9Q1JF4q.net]
>>868
その上で例外廃止を是とするか、「ちゃんとしてれば「手に負えない例外」なんてない」って夢物語を語ってるかが違うと思う。

897 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:00:24.61 ID:w9Q1JF4q.net]
なんとなく手抜きっぽいからじゃなくて、本気で手抜きだと思ってんだよなぁ。

898 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:00:41.98 ID:25u/0YJa.net]
なんかどっちでも大して変わらんというか、
結局実装者がどれだけ丁寧に作るかどうか以上の話にならん気がする。

899 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:04:04.26 ID:mElBwjLW.net]
まあthrows Exceptionやるような奴なら、戻り値によるエラー処理を強制したとしても
全メソッド呼び出しでErrorを盲目的に再returnするか全部握り潰してOptionalだらけにするだけだろうな

900 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:06:17.30 ID:w9Q1JF4q.net]
丁寧に作ると、大域ジャンプなんかそうそう使わん。
>>872
それでも、どこか遙か上でcatchしてることを期待してthrowされるより、直上がエラーを見てる事が保証できてるほうがマシかと。
握りつぶすのは論外として。



901 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:09:28.00 ID:ON56dtQ5.net]
Javaは継承はあるがジェネリクスがない時代の遺物
タプルやEitherを使わないのもジェネリクスがなかったことが影響している

902 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:11:10.68 ID:O1tgNFRh.net]
Javaの検査例外が失敗したのは
パッと見で非検査例外と区別がつかなかったことと
try-catch文を毎回書くもがあまりにも冗長で面倒臭かったから

だからSwiftでは非検査例外の方をなくして
更にtry-catch文の改良することで検査例外を復活させてる

ID:2gnvm26gは検査例外という考え方そのものが失敗作だと思ってない?
そうじゃないよ。

903 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:16:16.06 ID:D454qjGx.net]
ところで検査例外って「失敗」したの?たしかにJava以降採用する言語はないけどさ。

904 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:19:48.19 ID:mElBwjLW.net]
検査例外は多態との相性が最悪なんだよ
Java自身ですら、Lambdaで詰んでとうとう検査例外やめちゃった

905 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:36:54.73 ID:1PTa96/6.net]
>>877
この関数は引数として渡されたクロージャと同じ種類の例外を投げますよ記法があれば良さそうに思うけどな
やることは多相型の推論と同じだろう

906 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:48:04.19 ID:1PTa96/6.net]
あー、Javaの場合はクロージャを独立したinterfaceとして型を付けないといけないんで無理だな
すまん忘れてくれ

907 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 21:49:57.80 ID:8jS3HAgs.net]
例外をGenericsパラメータにして大体同じような事は出来る。
単に標準ライブラリが採用しなかっただけでは。

908 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 22:01:05.72 ID:ON56dtQ5.net]
動的型は平和でいいよな
検査例外やジェネリクスの無理難題を
追っぱらうため *だけ* だったとしても、それ自体、動的型を使う強力な理由になりうる

909 名前:デフォルトの名無しさん [2018/04/09(月) 22:29:22.04 ID:mPPENYW6.net]
>>872
明示的に無視するように書いてる場合は議論から除いたほうがよくない?

910 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 23:37:00.39 ID:zonfm2OA.net]
Goはマスコットがきもい!!



911 名前:デフォルトの名無しさん [2018/04/09(月) 23:41:10.06 ID:O1tgNFRh.net]
>>883
世間一般ではあれをキモカワイイと呼ぶ……はずだ…

912 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 23:55:03.87 ID:zonfm2OA.net]
まぁ一番キモいのはTomcatの猫だが

913 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 23:56:56.11 ID:GkNeq2uk.net]
Kotlinは、名前だけなら一番かわいい。

914 名前:デフォルトの名無しさん mailto:sage [2018/04/09(月) 23:59:55.69 ID:GkNeq2uk.net]
>>882
複数で開発してる時とか、誰かがやっちまってて、頭抱えることになったりするから、無視しやすいのはギルティだと思うけどね。

915 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 00:06:23.32 ID:G1U7ZKfA.net]
一番キモいのはGitlabの昔のアイコン。

916 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 00:06:43.88 ID:qmeNshHp.net]
>>886
Roslyn「あたしより?(ノД`)」

917 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 00:15:20.65 ID:RkM59NlG.net]
>>887
言語が用意した安全機構を無理矢理回避して握りつぶすことまでは言語側の責任ではないだろうとは思う
とはいえ、安全機構が不十分であるのならそれは言語側の責任だろうと思う
そしてgoの安全機構は不十分だと思う

918 名前:デフォルトの名無しさん [2018/04/10(火) 00:21:44.16 ID:EmC/WCPP.net]
ねぇ、まだ例外の話するの?そろそろ飽きたんですけど…
最近の言語のエラーハンドリング(Goのタプル, RustのResult, Swiftの例外)が
従来の例外(非検査例外)を使っていないという事実が全てを物語ってるでしょ?



919 名前:Kotlin, TypeScriptは互換性の問題で非検査例外を外すわけにはいかないが…

あとは、握り潰しの対処に関しては議論する価値はあるかもしれないけど…
結局「握りつぶすバカが悪い」って結論になりそうな希ガス
[]
[ここ壊れてます]

920 名前:デフォルトの名無しさん [2018/04/10(火) 00:59:26.74 ID:EEQPQ2Uz.net]
>>887
無視しやすいとは書いてねーだろ。
無視しずらくしてるのを明示的に無視するコード書くケースは議論から外すべきといってるだけ。
盲目的にエラーを無視するコード書く人間のことまで議論に含めたらきりないじゃん。



921 名前:デフォルトの名無しさん mailto:sage [2018/04/10(火) 07:44:44.88 ID:qJmqAz8N.net]
結局Lispエイリアンが最高にカワイイんだよな

922 名前:デフォルトの名無しさん [2018/04/10(火) 07:54:07.90 ID:Hi+EisyU.net]
コトリンなんか使ってる間抜けはandroid屋さんくらいかね

923 名前:デフォルトの名無しさん mailto:sage [2018/04/11(水) 20:59:15.55 ID:APP8E9xr.net]
いや、俺使ってるよ。趣味でだけど。

924 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 12:38:55.29 ID:LFIiHGEx.net]
>>893
いやキモいだろ

925 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 12:41:23.74 ID:rk2ZBYTo.net]
>>896
どういう感性してんだおめえクロマニョン人か?

926 名前:デフォルトの名無しさん [2018/04/14(土) 12:49:22.86 ID:eqcluMRm.net]
何で揉めてんだよ

927 名前:デフォルトの名無しさん [2018/04/14(土) 18:24:20.33 ID:s0fojNED.net]
コトリンなんか使ってる間抜けはandroid屋さんと君くらいかね

928 名前:デフォルトの名無しさん [2018/04/14(土) 18:57:30.54 ID:vgY4uhqI.net]
googleもなんでkotlinとdartってかぶってることやってるの?

929 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 21:52:46.32 ID:7M7GkfUj.net]
googleは別にことりんは作っておらんで。
dartは作ってるけど。

930 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 21:57:34.62 ID:xCvUgQvH.net]
こういうスレで、特定の言語をディスるやつは、その言語を使えない(理解できないとか、組織の都合とかいろいろあるだろうけど)やつの呪詛だと思うことにしている。



931 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 22:57:19.09 ID:LHyM2rc9.net]
呪詛に反対するならポリコレを推進すればいい
逆にポリコレに反対なら呪詛は許容範囲内だろう

932 名前:デフォルトの名無しさん mailto:sage [2018/04/14(土) 23:11:05.96 ID:xdB8fLqn.net]
こういうスレで、特定の言語をマンセーやつは、その他の言語を使えない(理解できないとか、組織の都合とかいろいろあるだろうけど)やつの呪詛だと思うことにしている。

933 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 10:50:29.03 ID:MI4LTSUC.net]
俺自身はgoがなんで好きか説明できないけど好き♡

934 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 11:02:47.68 ID:X/anazzZ.net]
一つの言語しか使えないやつは、こんなスレにこないと思うけどな。
>>904
取り敢えず、お前が悔しいと感じていることは理解した。

935 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 11:45:40.73 ID:ldkcKhuZ.net]
ある程度の文法が分かる言語はいくつもあるがエコシステムを十分に使いこなせる言語は少ない

936 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 12:19:01.56 ID:eLmDxHX7.net]
>>906
そいつはただの煽りだろw

937 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 12:10:26.37 ID:w/mvzKg0.net]
例えばMalbolgeは言語として破綻してるけど、これをdisったら「使えない奴の妬み」になるのか?違うだろ?

そのレベルで使い物にならない言語が世の中にはあるってことだ

938 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 12:58:58.10 ID:QJ3ecdT3.net]
ポリコレの人なら差別感情が原因だというし
ニーチェならルサンチマンが原因だという
何を言ったかではなく何が原因かを重視する人が世の中にはいる

939 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 12:59:55.25 ID:rNTM/JTl.net]
Brainf*ck使えない奴の妬みが心地いいなw

940 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 13:04:24.51 ID:g5yHmTYu.net]
ユングならチンコが原因だというだろう



941 名前:デフォルトの名無しさん [2018/04/17(火) 13:16:14.75 ID:QO/6Yzum.net]
池沼コンプ

942 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 16:33:29.42 ID:m5s6Mf1F.net]
なんでも性欲に還元しちゃうのはフロイト先生じゃなかったっけ

943 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 16:45:43.91 ID:g5yHmTYu.net]
そっかごめん間違えたわ

944 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 17:04:22.19 ID:gWiyCqxa.net]
>>912
どちらかというとフロイト

945 名前:デフォルトの名無しさん mailto:sage [2018/04/17(火) 17:19:32 ]
[ここ壊れてます]

946 名前:.35 ID:cVYjBdTw.net mailto: 元型論とか実用主義とか構造主義とかはプログラミング言語の批評や比較にも丸っと適用できるな… []
[ここ壊れてます]

947 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 00:07:08.14 ID:gZh+2AXP.net]
>>910
普通にレスに参加してると味方も現れたり、割と建設的な会話になるんだが、
名前欄に「あ」と入れるだけで俺が悪くなる不思議な現象もあるんだし、
誰が言ったかもかなり大事だろうね。いろんな意味で。

948 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 00:33:14.99 ID:IXg32T3d.net]
いま適当に調べたらニーチェとフロイトは大陸哲学の先駆者とされる
プログラミングはどう見ても分析哲学です

949 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 10:22:11.56 ID:E1UyW8OG.net]
プラグマティズムでしょ

950 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 10:43:31.39 ID:ITlW1RMQ.net]
【悲報】自己顕示欲の塊「あ」さん、こんな会話でも自分の話に持ち込んでしまう



951 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 12:13:25.41 ID:gZh+2AXP.net]
だいぶ長いこと普通に会話してたからな。
持ち込むも何も、嫌味なんだけどなぁ。
そういう反応含め。

952 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 12:43:59.64 ID:IrI4bqKj.net]
大陸哲学もプログラミングに関係あると思うけどなあ

そういや『記号と再帰』というパースとソシュールの記号論でプログラミング言語を記号論的に語る本があったな

953 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 12:58:33.98 ID:2VrfViNp.net]
おまえら哲学とラムダ計算どっちのほうが詳しい?

954 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 13:36:02.31 ID:+aOsPa5t.net]
クイックソートの各言語での実装はクイックソートのイデアの写像なのだ (プラトン主義)
野の諸言語でのクイックソートの実装のどれ一つとってもその中にクイックソートは内在する (グノーシス主義)

955 名前:デフォルトの名無しさん mailto:sage [2018/04/18(水) 17:12:11.36 ID:lZdMxdpS.net]
プログラム言語での英米系と大陸系
言語仕様が多少一貫してなかろうが便利ならいいんだよ
vs
そんなんだからごちゃごちゃな仕様になるんだよ

結局「メシマズ野郎」「カエル食い」のいつもの展開になりそうな気もするw

956 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 17:03:40.67 ID:9euJrxqo.net]
哲学史と同じだなw

957 名前:デフォルトの名無しさん mailto:sage [2018/04/19(木) 17:42:11.31 ID:Ugd67CCb.net]
繰り返している記憶を思い出せないゆえに歴史は繰り返す

958 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 17:07:59.52 ID:rfyQpLQN.net]
>>926
まあ結局なんでこんなにたくさんの言語があるのかってのが答えだと思うな
で、どっちが優れてるかってのはどちらがより後世まで生き残るかで決めるしかないんじゃないかな
まあ時代、時代で必要な技術ってのは変わるからそれで一応の結論が出せるって話でしかないけど

959 名前:デフォルトの名無しさん mailto:sage [2018/04/20(金) 17:18:58.21 ID:sbzNwV19.net]
未だに決着がついてないところまで似てるw

960 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 02:20:33.50 ID:h2C47Kaa.net]
隙あらばあ語り



961 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 07:58:45.75 ID:Tcatlxxe.net]
いまどき「語り」に罪悪感を覚える人間がどこにいるんだよ
次世代に備えろ
人を見たらサイコパスと思え

962 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 19:40:57.77 ID:W/q1DIXv.net]
隙あらば次世代言語語り

963 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 20:16:20.43 ID:Z4H7O2O2.net]
>>931
俺じゃねえぞ

964 名前:デフォルトの名無しさん mailto:sage [2018/04/21(土) 20:45:55.94 ID:dcjYnmEM.net]
>>934
誰だよおめー

965 名前:デフォルトの名無しさん [2018/04/21(土) 22:42:40.15 ID:zqkaZSIG.net]
次世代言語にDartは入りますか?

966 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 08:48:01.83 ID:jd9SLSuF.net]
いいえ、残念ですが死産です

967 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 09:54:09.54 ID:c2tTlBO1.net]
先月Dart2が出たと思ったらもう死んだのか・・・

968 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:12:12.91 ID:TtvJ1g+m.net]
Laravelの伸び方がやばい件
これPHP復権するんじゃね?

https://trends.google.co.jp/trends/explore?date=all&q=Ruby%20on%20Rails,Laravel,Rails

969 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:18:33.01 ID:nugsKp1K.net]
Dartほど誰にも望まれてない不憫な子も珍しい
望まれてない技術をゴリ押しするなんて、Google自身が非難していた過去のMSとやってることは変わらないって気付いてないんだろうか

970 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 14:27:32.48 ID:AAVHB68B.net]
ゴリ押すどころかGoogleが真っ先に見捨ててるだろ



971 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 16:44:50.97 ID:WERdgzar.net]
>>939
こっちでどうぞ
【PHP】Laravel【フレームワーク】 [無断転載禁止]
medaka.5ch.net/test/read.cgi/php/1503683914/

972 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 18:30:51.10 ID:jd9SLSuF.net]
今さらゲリクソプェチピィでフルスタックとかガイジにもほどが

973 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 19:35:14.33 ID:bBR6Oib8.net]
>>939
laravelってそんなに良いかな?
丁度railsのチュートリアルと合わせてlaravelも触ってるけど
railsの劣化コピー感があるんだけど。

この辺の感覚はここに書くには長すぎるからqiitaにでも書くけどさ

974 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 20:55:44.29 ID:o9swHd+I.net]
どの辺がどう良いか言えない時点で頭お察しのペチパーだろ

せめてRailsと比べての明確な利点を理論的に話してもらわんと。ペチパーには無理だろうけど

975 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 21:02:46.32 ID:fdCmw2ub.net]
Railsと比較したらどんなものでもマシだろう。

976 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 22:34:33.87 ID:eKADyGOj.net]
Rails自体を手放しで賞賛する訳じゃないが、
PHP製のRails劣化コピーフレームワークどもがRailsよりマシってさすがに頭ペチパーでは

SymfonyがRailsより良いのか?
Laravelが?
FuelPHPが?
CakePHPが?

977 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:01:59.83 ID:IlGrff4D.net]
JavaScriptはブラウザを変えても動く
それに比べて、PHPとRubyはサーバーを変えたらどうなるの

978 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:20:29.43 ID:9Np5N8Zp.net]
phpは知らん。rubyは発狂しそうになった。pythonやjavaもトラブったことある。
goのシングルバイナリとか憧れるわ。青い芝生なのかもしれんけど。

979 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:45:16.35 ID:eKADyGOj.net]
jsもサーバで動かそうとするとRubyやPythonの比じゃないくらい頭おかしくなるけどな

Goのシングルバイナリは悪くはないんだが妙にデカいのとコンパイルパスがバイナリから消せないのがクソ

980 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 00:42:42.58 ID:Qj7zyv05.net]
型無し糞言語なんて全部糞だからセーフ



981 名前:デフォルトの名無しさん [2018/04/23(月) 02:01:40.00 ID:sTSAMHq0.net]
>>950
でかいと言ってもrubyなんかのライブラリ含んだ環境と比べてもでかいもんなのかなぁ?よくわからんけど。

982 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 03:25:35.65 ID:6kB1GY2J.net]
nodeのほうがRubyやPythonよりまだマシだったぜ。こいつらの場合システムプリインストール版と戦わなくちゃならんもん。

983 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 05:55:51.63 ID:klhfnu8X.net]
nodeだってそのうちきっとsystemdあたりが使い出して
プリインストールされて衝突するようになるよ

984 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 06:26:29.65 ID:u+QX9S93.net]
railsが最強なのはrailsチュートリアルという無料コンテンツが存在する点。
これ一本で何も知らない素人をwebエンジニアにしあげてしまう力がある。

しかも常にメンテナンスされてて一部古くて使えない。みたいなことも無さそう。

phpもフレームワークを真似るんだったら、こういうエコシステム面もぱくらんとな。

特にphpは推奨すべきphp.ini構成とかあるんでしょ?

985 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 07:57:49.59 ID:Lxhtz3Yj.net]
>>954
node は素人が普通に使っても衝突しにくいと思う

986 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:36:31.93 ID:SVjZZRS4.net]
>>950
デカイのはstaticリンクされてるから。
びっくりするような「ただOSとしてlinuxが起動してるだけ、なんのライブラリも入れてない、コマンドもない、むしろシェルすらない」みたいな環境でも起動するんだから必要悪だと思うわ。

987 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:39:44.34 ID:SVjZZRS4.net]
>>955
何も知らない素人を、なんとなく組めるけど考え方の骨子も知らずパフォーマンスなんか気にしない「Rails書き」に仕上げる、の間違いだろ。
Railsからruby始めたやつで、唸るようなコード見たこと無いぞ。
ruby大好きな人が書くコードは好きじゃないけど唸ることはある。

988 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:43:37.79 ID:p6JtziKv.net]
>>951
そんなこと言ってたら極論シェルすら使えなくなるだろ

989 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:49:26.77 ID:gcQjvBIZ.net]
GoのシングルバイナリのメリットはDockerがいらないという点だろ
まあGo使うような意識高い系のインフラはそもそもDockerデプロイ前提だったりするからあまり意味ないけど

990 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 08:57:04.74 ID:8zXr1SIe.net]
唸るようなコードなんて見たくない。
唸りたくない。
驚き最小の法則。



991 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 09:02:31.54 ID:SVjZZRS4.net]
唸るってのは難しくて唸るんじゃねえよ。
美しすぎて唸ったり、ぐうの音もでないときの唸りだよ。
驚き最小限と言うが、そんな事言ってたらバカがバカのままじゃん。

992 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 09:11:34.54 ID:8zXr1SIe.net]
何でバカのお勉強に付き合わなきゃならんのだ。成りすましruby厨は巣に帰れ。美しいコードとやらでシコシコやってろ。

993 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 10:28:24.82 ID:u+QX9S93.net]
>>958
数週間前までプログラムを書いたことのない人のコードだぞ。許してやれよ。

スタートアップのコードは大体クソだと聞く。金を生むようになってからリファクタリングするためにあんたを雇ってくれるんだから雇い主になるんだぞ。もっと敬えw

994 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 10:39:44.78 ID:KRfN1kM2.net]
>>958
つーかパフォーマンスが必要ならそもそもrailsつかうなや。
elixir使え

995 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 11:40:35.21 ID:lvgkpyUP.net]
最強の無料コンテンツがあるのにどうやって金を生むのか不思議
有料って驚き最大じゃん

996 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 11:56:46.40 ID:SVjZZRS4.net]
>>963
rubyがそーいう書き方を是とするのが好かん。
なにがなりすましなんだよw

>>964
プログラマ気分で口開かなければ無視するよ。
往々にして、プログラマ気分で口開くようになるけど。

>>965
ところがrailsしかできない奴は無理矢理rails使うんだよなぁ。
PHPerよりもレベルが低いのに、マシだと思い込んでるバカばっかり。

997 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:09:11.14 ID:aoPGecCM.net]
スレタイ読めますか?

998 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 12:55:04.45 ID:jMm7sVs3.net]
Rails が基本になる理由は、
無料で翻訳された、Rails チュートリアルという教科書があって、
数十の技術が、山陰地方のRails合宿などで、学べるから

Git, Bitbucket, Heroku,
Ruby, ERB, HTML, CSS・SASS, JavaScript・jQuery,
DB, SQL, MVC,

Linuxコマンド・シェルスクリプト
環境構築・仮想環境
パッケージマネージャー
テストのやり方

普通、これらは1冊ずつの本になっている。
別個に勉強して、資格を取ると、軽く10年は掛かる

Web アプリには、ものすごい総合力が問われるから、
開発していくと、どこかで出来なくなる

それを、Rails チュートリアルでは、必要な部分を超特急で教える。
だから、Node.js + Express の前に、やっておくべき

ここで苦しむと、他言語で楽になる

999 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 13:02:03.72 ID:8zXr1SIe.net]
10年とか無能すぎワロタwww

1000 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 13:28:10.73 ID:u+QX9S93.net]
>>969
多分俺が10年で学んだこと。って言いたいことじゃないか?
大体紆余曲折を経て正解にたどり着く。
それぞれの年代によって開発トレンドも変わっていきその都度ふりまわされることもあり。
そうしてたどり着いた正解を
一冊のチュートリアルにまとめました。



1001 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 13:32:39.38 ID:u+QX9S93.net]
>>969
俺もこれに感動した。他のフレームワークでwebアプリ書いてるやつもrailsチュートリアルを読んでほしい。
というか、railsチュートリアルパクって作れ。

1002 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 13:33:05.10 ID:Lxhtz3Yj.net]
言いたいことは色々あると思うがNGして我慢しましょう

1003 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 13:34:48.24 ID:u+QX9S93.net]
>>972
他のフレームワークもrailsチュートリアルをベースにチュートリアルを作るべき。と言いたかった

1004 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 14:11:35.74 ID:SVjZZRS4.net]
総合力とやらしか無い開発者ってのは居て、そして、それで良いと思ってる。ここまでは許そう。
ただ、他人にその低レベルが当たり前だと触れ回るのは如何なもんか。

もうちょっと真面目にやれよ。
過去の言語を知らねば次世代言語の話は出来まいとは言ったが、過去の言語で満足してるなら大人しく寝てろ。

1005 名前:969 mailto:sage [2018/04/23(月) 14:48:01.73 ID:jMm7sVs3.net]
Linux 資格のLPIC とか、環境構築・シェルスクリプトとか、
漏れは、個別に勉強しているから、
それぞれの内容は濃いけど、時間が掛かる

ただ、この勉強はしょーもないから、ほとんどの人が続かない。
勉強だから

その点、Railsチュートリアルは面白い。
実際に動くものだから

Ruby の女神・女優の池澤あやかも、そう言ってる。
楽しくないと続かないって

1006 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:28:45.42 ID:u+QX9S93.net]
>>975

過去の言語って何?
そもそも次世代言語の指すものも明確になってないんだから、ぶっちゃけただの井戸端会議でしかない。したがって資格の有無もない。

1007 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:31:29.85 ID:u+QX9S93.net]
仮に次世代言語があるとするならそれは初期状態からLSPを揃えた言語であるべきだろうな。最初からIDE連携がしっかり取れてリファクタリングも容易。これは必須事項だろう。

1008 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:42:41.08 ID:kKKCDRJg.net]
>>978
LSPって何?
「リスコフの置換原則」のこと?

1009 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:56:21.02 ID:KRfN1kM2.net]
>>979
language server protocol

1010 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 16:26:20.82 ID:kKKCDRJg.net]
>>980
ああ、MSのアレね。どうも
>>978
そういう機能も重要だとは思うけど、もちろん一番重要なのは言語設計でしょ?
IDEの機能がいくら優秀だったとしても言語設計がクソなら意味はない。
逆に言語設計さえ良ければそういう機能は自然と後からついてくるのでは?



1011 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:02:12.83 ID:aOH2hrcK.net]
>>976
情報系の大学に行けば在学中の4年で全て出来る
俺は卒業前にはLPICレベル2も応用情報も持っていたし、Webならインフラから開発まで全て出来た

1012 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:11:20.46 ID:8zXr1SIe.net]
→「インフラから開発まで」←

1013 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:12:48.65 ID:SVjZZRS4.net]
>>977
過去の言語って何?ってのは、適宜引用するときにその特徴含め、何と何を比較してるかを述べれば充分でしょ。

井戸端会議する為のベースラインが無いなら、井戸端のおかーさんにひっついてきてる子供みたいなもんだ。
資格の有無は言ってない。意味が無いと言ってる。

「○○」は素晴らしかった、だから「○○」を「□□」で焼き直せ、って論調に
「ならやっとけ。と言うよりそれしか理解できねえから○○がベストだと思ってて、
 何でも○○で解決しようとして、新しいパラダイムなんか理解する気ねえだろ」
って言ってるだけ。

1014 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 18:18:36.33 ID:SVjZZRS4.net]
>>976
濃いし、人によっては時間がかかるのも事実かもしれんが、
しょーもない、と言い切るのもおかしいし、ただの勉強でもない。

Railsしか知らないから、Railsは実際に動かせるから楽しいとかぬかすんだろ。
ほとんどRails弁みたいなruby使ってタノシーって覚えて、Rails訛りのrubyしか使えない奴になるのが関の山。

よほど変なハードを要求するものでもなけりゃ、何でも実際に動かせるわw
何もCで書けとまで言ってる訳でなく、perlで生socket使ってhttpサーバ書いた方がよほど応用が効く知識つくんじゃねえの?って話。
今時perlは極端だけどな。

1015 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 19:32:32.81 ID:JgfH4MZr.net]
唸るコードは草

1016 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 20:33:33.00 ID:AzyZGKdE.net]
唸る僕のコード(ザ・ルビイスト)

1017 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 20:44:54.50 ID:iikzPCLQ.net]
は?おまえのかいたコード唸らねえの?
俺のはPCが唸るぜ

1018 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:20:18.83 ID:SVjZZRS4.net]
俺ruby嫌いだぞ。

1019 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:24:14.13 ID:p/p8P93w.net]
デバッグは自分との戦い
小並感書き殴るだけで後は誰かが採点してくれるお受験とは違う

1020 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:31:57.26 ID:SVjZZRS4.net]
しかし、ホントにたとえ自分の嫌いな言語でも関わらないと仕方ない事とか、
その中で「へー、この言語だとこう書けて、確かにシンプルでわかりやすいな」とか感心する事無いの?
言い回しがダサかったのは認めるけど。



1021 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:47:58.89 ID:p/p8P93w.net]
ソースコードの読み方にはコツがある
読まなくてもわかる情報を全部理解するまで読まないこと

1022 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 00:11:46.25 ID:ZNYEqjZq.net]
読まなくてもわかる情報をわざわざ読む理由は?

1023 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 00:40:43.83 ID:pcJzry5C.net]
インストールできないとか実行したくないとか
読む以外のやり方がたくさんあるのが嫌いとか

1024 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 07:42:24.61 ID:TUZ43qB9.net]
>>985
後半の話はperlよりもgoがおすすめ。

1025 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 09:02:55.18 ID:KZ0RDZHW.net]
>>995
俺がGo推しだから、あまりに恣意的過ぎると思って。
俺もそう思う。

1026 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 09:32:39.81 ID:oBpm702g.net]
タノシーって覚えることのなにがいけないのかわからん
入門の形態とその後の成長に関係はないだろう

1027 名前:デフォルトの名無しさん [2018/04/24(火) 10:26:37.84 ID:sL4t+Nc4.net]
>>982
わろた

1028 名前:デフォルトの名無しさん [2018/04/24(火) 10:27:37.29 ID:sL4t+Nc4.net]
>>992
データ構造を把握するのが第一だな
その次に大まかな流れを観る
詳細は最後

1029 名前:デフォルトの名無しさん [2018/04/24(火) 10:28:01.74 ID:sL4t+Nc4.net]
>>993
アスペか

1030 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 49日 0時間 18分 46秒



1031 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef