次世代言語9[Haskell Rust Kotlin TypeScript Dart]at TECH
次世代言語9[Haskell Rust Kotlin TypeScript Dart] - 暇つぶし2ch402:デフォルトの名無しさん
18/03/17 01:00:08.76 aJVXG6RF.net
Cに代わる次世代言語はアセンブラやC、C++で書かれた
高速な実装を呼び出す1行のコードが書ければ十分ってことだろう。
そうしてそれがわからないなら死ねばいい、と。

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

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

405:デフォルトの名無しさん
18/03/17 01:53:39.29 a9tSZ89y.net
Nimは速い上にCよりずっと楽に書けるんだが

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

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

408:デフォルトの名無しさん
18/03/17 10:13:19.41 btDjh9Sw.net
Clojureの話する?

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

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

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

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

413:デフォルトの名無しさん
18/03/17 11:46:47.41 4zm/Hii4.net
強力なおまけは魅力的ね

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

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

416:デフォルトの名無しさん
18/03/17 14:48:40.03 TnL0M0fs.net
でもCより速いVM言語とかある�


417:オ。



418:デフォルトの名無しさん
2018/03/1


419:7(土) 14:57:44.26 ID:4zm/Hii4.net



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

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

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

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

424:デフォルトの名無しさん
18/03/17 16:24:52.64 QOkOyKQG.net
おるな

425:デフォルトの名無しさん
18/03/17 18:15:28.10 zOFcLIxk.net
>>403
Goは遅いぞ

426:デフォルトの名無しさん
18/03/17 18:36:45.18 /KW2HbwM.net
言うほど遅いか?

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

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

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

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

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

432:デフォルトの名無しさん
18/03/17 19:58:26.68 4zm/Hii4.net
シェルスクリプトは次世代言語だったのか……

433:デフォルトの名無しさん
18/03/17 20:03:43.73 /yJWANaR.net
#!/bin/sh
ls
もう、これだけでCで書かれた超高速なlsが実行される。

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

435:デフォルトの名無しさん
18/03/17 22:19:21.09 jxvv8BHS.net
サイコパスあるある
死傷者が出ても見て見ぬふりをする

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

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

438:デフォルトの名無しさん
18/03/18 02:55:12.96 zE4QVnSy.net
こりゃまた難しいのがきた

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

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

441:デフォルトの名無しさん
18/03/18 14:10:28.16 9iYD44BB.net
Cの良さは
変換される機械語との違いが滑らか
それでいてメモリ部分はある程度抽象化してくれている。
てなところなんでないかね。
他の言語は「変換される機械語との違いが滑らか」を無視しすぎてる。

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

443:デフォルトの名無しさん
18/03/18 14:27:58.24 JHP9/eea.net
セマンティックギャップの話かな

444:デフォルトの名無しさん
18/03/18 14:33:49.99 E4zJaTX6.net
なんやなんやGoの悪口かいな?

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

446:デフォルトの名無しさん
18/03/18 15:11:52.29 ewHMGPnU.net
説明できないのね

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


448:ハ白い



449:デフォルトの名無しさん
18/03/18 15:30:05.63 95A2sExk.net
言語を1個2個と数える
頭の中で考えていることの正しさ云々はさておき、
他人と話が通じない人は対話を試みないでくれ

450:デフォルトの名無しさん
18/03/18 15:48:06.10 jQGugCpv.net
「エレガントなコード」みたいな話?

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

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

453:デフォルトの名無しさん
18/03/18 17:11:21.46 sSGcrtJx.net
そのうちzagが出そう

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

455:デフォルトの名無しさん
18/03/18 19:21:34.04 bcfd9xTZ.net
Life Inside China's Total Surveillance State
新疆ウイグル自治区は中国国内の監視体制の巨大な実験場と化した。最先端テクノロジーで常時監視される人々の生活
URLリンク(www.youtube.com)

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

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

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

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

459:デフォルトの名無しさん
18/03/18 23:32:14.22 Eey0KM1h.net
OCamlより遅いやん?

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

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

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

463:デフォルトの名無しさん
18/03/19 00:34:26.02 lFWK67Qs.net
>>447
その内容どれが当てはまるの?アンカーつけて

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

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

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

467:デフォルトの名無しさん
18/03/19 07:09:28.84 TWWfpY71.net
OCamlはなんで演算子は多重定義できないのか結局ようわからん

468:デフォルトの名無しさん
18/03/19 07:31:36.71 uweaBiN7.net
アドホックポリモーフィズムは邪教だから。

469:デフォルトの名無しさん
18/03/19 08:19:54.52 nlNc4C3i.net
Stack Overflowが2018年の調査結果を発表。一番使われている言語はJavaScript、一番好きな言語はRustに
URLリンク(www.publickey1.jp)
今回、Stack Overflowでは「好きな言語」の調査結果も発表しています。
トップとなったのはRust。2位がKotlinで、Python、TypeScript、Goと続きます。
1位がRustとなったのはその知名度からするとやや意外な気がしますし、
2位のKotlinは昨年2017年5月のGoogle I/O 2017でAndroidの正式な開発言語となったのがきっかけで注目され始めたと言ってもいいので、急速に人気が上昇していると言えるでしょう。

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

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

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

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

474:デフォルトの名無しさん
18/03/19 13:07:46.72 pEbY2e08.net
つまり組織票が存在する。

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

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

477:デフォルトの名無しさん
18/03/19 19:35:30.36 I7PCjnkp.net
旧世代言語の話ばっかり

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

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

480:
18/03/19 21:13:56.87 lFWK67Qs.net
>>464
URLリンク(www.brl.ntt.co.jp) 404 NOT FOUND

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

482:デフォルトの名無しさん
18/03/20 01:53:46.76 /+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:デフォルトの名無しさん
18/03/20 02:53:37.44 LX463VTZ.net
次世代言語というのは時期だけで決まるものなのか?
typescriptやgoよりも、ocamlやhaskellのほうがよっぽど次世代感あるが

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


485:出来るだろ? それとGoに関しては必要最低限の機能のみを残し 他をバッサリ切り捨てたという点で次世代感があると私は考える Typescriptに関してはJSを完全に排除しようとするのではなく JSとの共存を目指したいう点が新しいと考える事も出来る 次世代の定義なんて物の見方によっていくらでも変わり得る よって、何をもって次世代と定義するかについて1つの結論に まとめることは出来ないと考えるのでその話はあまりしたくないな 話題提供を目的に書いたので批判ではなく忌憚のない意見や感想を求む



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

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

488:デフォルトの名無しさん
18/03/20 05:07:06.58 /+MVnq9/.net
>>471
何でプログラム以外のところまで抽象化したがるんだ?
初期のJavaの機能が少ないのは必要最低限の機能のみに絞りこんだのではなく
単にジェネリクスもラムダ式もアノテーションも当時はまだ技術が確立してなかったからで
Goのように技術が確立してるのにあえて必要ないと判断して削ったわけじゃない
初期のJavaとは機能が少ないという点で共通しているが機能を少なくした理由は全然違う
Typescriptに関しては共存という言葉を使ったのが誤解を招いたようで悪かったが
トランスパイルした結果のJSコードの可読性にまで気を配って作られているという点でCoffeeScriptとは違う
つまりトランスパイル後のコードの可読性にまで気を配っているという点が
今までのトランスパイル系の言語とは違う全く新しい部分だと言いたかった
行きすぎた抽象化は時に大事な情報までも削ってしまうということを頭の片隅に置いておくべきかと…

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

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

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

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

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

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

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

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

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

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

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

500:デフォルトの名無しさん
18/03/20 07:58:37.61 ZzmZL45/.net
ポインタを消したのがJava
継承を消したのがGo

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

502:デフォルトの名無しさん
18/03/20 09:00:55.46 xTcfPcIk.net
「Javaにはポインタがない」という言説をそろそろ撲滅したいです。
URLリンク(web.archive.org)URLリンク(java-house.jp)

503:デフォルトの名無しさん
18/03/20 11:36:56.30 J0Id73NT.net
ポインタが使えない糞言語。

504:デフォルトの名無しさん
18/03/20 11:38:39.53 J0Id73NT.net
ポインタは凄い発明だよな。

505:デフォルトの名無しさん
18/03/20 14:05:57.79 2KGHSNsy.net
matz「参照とポインタの違いは常識(キリッ」
URLリンク(kmaebashi.com)

506:
18/03/20 14:07:55.13 PD8yAuaT.net
>>486
二重ポインタはありませんので「Java にはポインタがある」とはいいきれないのではないでしょうか?
>>467
rust に決めました!

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

508:デフォルトの名無しさん
18/03/20 14:29:34.01 ZzmZL45/.net
Fortranは無理やで

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

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

511:
18/03/20 14:48:34.63 PD8yAuaT.net
>>494
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:
- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)
- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。
言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。

512:デフォルトの名無しさん
18/03/20 14:49:26.38 ZzmZL45/.net
何度見ても名文

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

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

515:デフォルトの名無しさん
18/03/20 15:01:30.33 J0Id73NT.net
つまりポインタです。

516:デフォルトの名無しさん
18/03/20 15:13:14.76 fj312v7r.net
いいえプラズマです。
URLリンク(plasmalang.org)

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

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

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

520:デフォルトの名無しさん
18/03/20 20:00:27.39 /+MVnq9/.net
>>494の「C++には夢とロマンがいっぱい詰まってる」の直後に
>>495の「C++ではゲロゲロのゴミが生産される」で草
>>490h
Rustを一週間でマスターするのはムリだと思うよ
あの言語の学習コストを他言語のそれと同じものと考えてると痛い目に合うよ

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

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

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

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

525:デフォルトの名無しさん
18/03/20 21:03:53.47 LX463VTZ.net
>>508
Linusの言だぞ

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

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

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

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

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

531:デフォルトの名無しさん
18/03/20 23:35:49.06 ck80uwiX.net
C++20でうるう年サポートだってよwww
……なんだようるう年って他にやる事あるだろ…………

532:デフォルトの名無しさん
18/03/20 23:47:09.33 J0Id73NT.net
流行ものはいずれ廃れるんですよ。

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

534:デフォルトの名無しさん
18/03/21 00:23:07.24 fTbDiwfs.net
次世代もC/C++だからですよ。

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

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

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

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

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

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

541:デフォルトの名無しさん
18/03/21 06:35:12.70 TV3lE0eZ.net
>>521
まあそうだけど C# や Java では既存の実用的なフレームワークが強い影響力を持ってるから
俺が考えた最強の~的なオブジェクト指向の設計はしないんじゃないか?
Windows アプリの場合 C++ でも mfc や wtl 使うから同様のことが言える

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

543:デフォルトの名無しさん
18/03/21 06:38:46.28 TV3lE0eZ.net
書き捨てのユーティリティとか書くときも map とか使いたいもんね

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

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

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

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

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

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

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

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

552:デフォルトの名無しさん
18/03/21 11:33:24.48 2s39Qc49.net
むしろ早すぎる具体化詳細化のほうが害悪だな。

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

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

555:デフォルトの名無しさん
18/03/21 12:17:48.32 KBtkuQdG.net
最適化は想定してコンパイルするだろ。Cなら特に。書き方にも関わるし、コンパイルオプションにもかかわるし。
予測しやすいか、しにくいかなんて問題にしてなくて、予測じゃなくて把握しろって思うんだって。
コンパイル結果みて考えても良いぐらい。
「とりあえず楽」じゃなくてさ。
そういう意味では、Goみたいに-gcflags -Sで簡単にアセンブリコード見れるのは良いと思うし、流行りの高級言語にもあって然るべきだと思うんだが。
要らない、全部コンパイラが楽させてくれる、って言うやつはRustをディスる事も、Cを称賛する事も中途半端だと思う。

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


557:フ余地が広くて有利になったりして



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

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

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

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

562:デフォルトの名無しさん
18/03/21 14:19:34.98 OmyrbXdn.net
>>500
こんなのあったんか。まだ開発序盤か

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

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

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

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

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

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

569:デフォルトの名無しさん
18/03/21 15:35:40.07 7q6KKp9o.net
boostは便利なものもあるけれどほとんどがゴミだよね

570:デフォルトの名無しさん
18/03/21 15:36:59.68 2s39Qc49.net
いつの時代のCコンパイラの話だよw

571:
18/03/21 15:39:31.62 ZGJmhAHm.net
>>549
>人知を超えたデバッグ
………

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

573:デフォルトの名無しさん
18/03/21 16:26:40.62 fTbDiwfs.net
ストリーム廃止運動が必要。

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

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

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

577:デフォルトの名無しさん
18/03/21 19:30:11.24 5MZw04v3.net
>>557
なってるんだが…

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

579:デフォルトの名無しさん
18/03/21 22:01:31.33 LNpphUL+.net
すべてプラズマで説明できそう

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

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

582:デフォルトの名無しさん
18/03/22 01:22:53.45 tiDItZ1f.net
使い方を知らんってことか。

583:デフォルトの名無しさん
18/03/23 21:30:21.55 yG5SnY


584:rv.net



585:デフォルトの名無しさん
18/03/23 21:32:50.91 J4dYcx4H.net
>>566
>c++いいんかそんなに
>>495

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

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

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

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

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

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

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

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

594:デフォルトの名無しさん
18/03/24 08:41:54.13 Z79Bg+7E.net
>>575
ハイ、ダウト。

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

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

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

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

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

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

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

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

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

604:デフォルトの名無しさん
18/03/24 20:22:26.30 eKuOy/a9.net
>>585
向かってるだろ

605:デフォルトの名無しさん
18/03/24 20:28:12.89 g25JX84P.net
reactとか?
cssが未だによくわかんねえ。あれわかる人なんなので。

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

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

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

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

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

611:デフォルトの名無しさん
18/03/24 21:42:47.26 gBcMRATK.net
PageMakerじゃないな。普通に名前間違えた。FrameMakerとか。

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

613:デフォルトの名無しさん
18/03/24 21:49:22.28 gBcMRATK.net
>>592
電池が要らない、
濡れても乾かせば大丈夫、
乱雑に投げられる、車に轢かれても壊れない、
複写を他人にページ単位で簡単に渡せる、
そのへんの筆記具で好きに書き込みが出来る、
氷点下20度でも使える、
破れてもセロテープで取り急ぎ直る、
完全に読めなくなっても比較的安価に買い直せる
このあたりが紙の冊子が電子媒体で駆逐できない所だと思うよ。
特に取説とか。

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

615:デフォルトの名無しさん
18/03/24 22:07:01.15 uNUSOufN.net
「QRコードを印刷する紙がないぞ」「あんなの飾りです」

616:デフォルトの名無しさん
18/03/24 22:36:07.63 Z79Bg+7E.net
Gumbo parserってどうなんだよ。

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

618:デフォルトの名無しさん
18/03/25 00:06:04.48 +oTPc842.net
なんの話だよ
OCamlの話いいっすか?

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

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

621:デフォルトの名無しさん
18/03/25 00:30:12.26 GhdgZmXr.net
htmlでdryを守とかそれが無理だっつーの

622:デフォルトの名無しさん
18/03/25 00:41:53.53 Wz8WBZT8.net
OCamlに話すことあるか?

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

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

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

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

627:デフォルトの名無しさん
18/03/25 14:46:57.32 2EIVAaim.net
>>601
立憲民主党と勘違いしてない?

628:デフォルトの名無しさん
18/03/25 16:11:18.40 +oTPc842.net
関数があるのにDRYに苦労する状況が分からん

629:デフォルトの名無しさん
18/03/25 19:01:20.02 NiWlHtrf.net
政治の話はNGで

630:デフォルトの名無しさん
18/03/25 21:25:39.57 WO056vpM.net
プログラム技術という観点では政治も経済も経営もNG

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

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

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

634:デフォルトの名無しさん
18/03/26 00:02:29.61 3hemhRjv.net
悩ましいぞな

635:デフォルトの名無しさん
18/03/26 00:05:05.18 mhu6xXG+.net
つまりこう
for (int indexOfItemInArrayOfProxyInformation = 0; ; ++i) {
auto proxyInformation = arrayOfProxyInformation[indexOfItemInArrayOfProxyInfomation];
...
みたいな

636:デフォルトの名無しさん
18/03/26 00:08:00.38 QH+aPMzj.net
ofを使ったら負け

637:デフォルトの名無しさん
18/03/26 00:10:58.12 mhu6xXG+.net
でもインデックス複数あったら?

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

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

640:デフォルトの名無しさん
18/03/26 00:35:46.73 mhu6xXG+.net
getInfo なんてのは Android の api でも見かけるし
information を info と略するのはありなんだろうな
普通の会話でもしばしばそう略すし
他にもなにか例外があるかとAndroid ndk api リファレンス眺めたら
名前がどれもこれも長くて驚いたわ…特にenum

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

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

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

644:デフォルトの名無しさん
18/03/26 01:59:38.91 BMtnwc7n.net
>>624
反対しろとは言ってないぞ
しかし単語の組み合わせを少し改竄するとそういう意味になる可能性はあるのか
だから短い単語を組み合わせるのをやめて長い固有名詞を一個だけ書くのか

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

646:デフォルトの名無しさん
18/03/26 02:05:44.31 mhu6xXG+.net
>>626
哲学とかも不要な誤解や意図した曲解を避けるために用語をどんどん定義していくよね
今回で言えば「合目的的」であれ、とかか。
でも非常に長い名前は必ずしも判りにくくは無いんだよねああして書いてみると。
見難いのが問題なだけであって。

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

648:デフォルトの名無しさん
18/03/26 04:27:44.25 WZ1ZCWjW.net
C++11から日本語の識別子も使えるようになったんだよな。
ということは。
#define もしも if
もしも(0 < プロキシ情報の配列におけるアイテムの索引) {
  ・・・
}

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

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

651:デフォルトの名無しさん
18/03/26 08:36:23.04 fyNor71T.net
つまり次世代言語とは日本語の事だった…!?

652:デフォルトの名無しさん
18/03/26 08:48:45.88 WZ1ZCWjW.net
いや中国語だろうけどさ。

653:デフォルトの名無しさん
18/03/26 16:34:24.37 b2RxclhK.net
ブラックジョークかな?

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

655:デフォルトの名無しさん
18/03/26 16:52:27.07 Xx23wWxJ.net
C 風の文法なら名前が空白区切り�


656:ナ並ぶ必要あまり無いし、 名前の途中に空白を含めても良いという言語があっていい気がする var indexOfProxy := 0; var index of proxy := 0; どっちが見やすいかな



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

658:デフォルトの名無しさん
18/03/26 18:56:27.15 MGgBxL58.net
謝謝茄子…

659:デフォルトの名無しさん
18/03/26 19:33:26.92 sC9O8aKE.net
>>637
勘弁して。こんな発想はエアプだけだろ。少なくともエディターとの連携がしづらいし。
そもそもどっからどこまでが予約語で変数かどうやって判断するの?
当然の帰着として変数名に予約語を含めることは絶対禁止ってことになるだろ。
想像しただけで死にたくなってきた。

660:デフォルトの名無しさん
18/03/26 19:40:27.04 jinbnpD9.net
Fortranは空白無視するがな

661:デフォルトの名無しさん
18/03/26 19:55:57.52 pOsEMXVS.net
お前ホモかよお!?

662:デフォルトの名無しさん
18/03/27 00:43:26.13 ry3uUZdU.net
予約語は大文字だけ、変数名は小文字だけで書くとか…
VAR index of proxy := 0;

663:デフォルトの名無しさん
18/03/27 00:56:02.73 Zrk+MxC2.net
そんな前時代的な……

664:デフォルトの名無しさん
18/03/27 01:05:23.75 5DREL+sj.net
クソワロタwww

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

666:デフォルトの名無しさん
18/03/27 02:14:32.56 xOo+kmL4.net
どんどんバカになっていってる。

667:デフォルトの名無しさん
18/03/27 02:49:05.89 nthqohzW.net
>>646
読みにくいしこうしたらどうだろう?(名案)
var index_of_proxy := 0;

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

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

670:デフォルトの名無しさん
18/03/27 22:59:22.15 xOo+kmL4.net
職場で本気でそんなことしだしたら俺は怒るよ。

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

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

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

674:デフォルトの名無しさん
18/03/28 07:22:48.81 lXnJ1NTY.net
ようやく時代がSmalltalk-72に追いついたかw
URLリンク(pbs.twimg.com)

675:デフォルトの名無しさん
18/03/28 10:43:26.92 Pilbwiej.net
時代を先取りしすぎるのも考え物

676:デフォルトの名無しさん
18/03/28 10:45:01.89 qnpV2Jxp.net
APL…

677:デフォルトの名無しさん
18/03/28 10:53:19.54 yjlej8xR.net
正直APLは今なら流行ると思う

678:デフォルトの名無しさん
18/03/28 10:55:53.02 qnpV2Jxp.net
統計とか各種データの集計に良さそうだもんな

679:655
18/03/28 11:29:22.55 ng8CxZVM.net
>>657
たしかにそうなんですが…APLの方は記号を読みやすくするために用いているように思えなかったので…
ピタッとはまれば驚愕の短さで書けますけどね
例: Conway's Game Of Life in APL


680: https://www.youtube.com/watch?v=a9xAKttWgP4



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

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

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

684:デフォルトの名無しさん
18/03/28 23:09:42.27 yjlej8xR.net
C++とHaskell の親戚ってなんだ

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

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

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

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

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

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

691:デフォルトの名無しさん
18/03/29 08:28:00.50 Hc4kPWXM.net
Linux でも良くやってるぞ

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

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

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

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

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

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

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

699:デフォルトの名無しさん
18/03/29 11:26:16.78 r+OSvbaK.net
てか>>674も書いてるけど、バッチ処理なんて前提条件厳しすぎるし、障害対応もめちゃくちゃ大変だろ
今どき、そんなシステムどんな業種で開発するんだ

700:デフォルトの名無しさん
18/03/29 16:52:27.07 wUGa4G8N.net
>>666
純粋手続きってのがわからん。
引数にin outだったらadaも付けれるぞ。

701:デフォルトの名無しさん
18/03/29 17:13:18.86 mREgEFij.net
>>680
Fortranのpure subroutineのことや。まんま訳して純粋手続きって書いたけど、分かりにくいなら以後pure subroutineって書くわ

702:デフォルトの名無しさん
18/03/29 17:55:25.23 d3FuArtt.net
>>680
Fortran等の昔の言語には、サブルーチンと関数の区別があって
サブルーチンは副作用あり、関数は副作用なしって使い分けがあったんだよ
(その区別はAdaにもあったんだが、2012年の改定で関数もoutパラメータを持てるようになってしまった)

703:デフォルトの名無しさん
18/03/29 17:57:17.44 mREgEFij.net
>>682
intent(out)さえつけといたらsubroutineにもpure修飾子をつけれることを俺は>>666で言ったの

704:デフォルトの名無しさん
18/03/29 18:04:24.92 d3FuArtt.net
>>683
あーすまん、話の流れを追いきれてなかった

705:デフォルトの名無しさん
18/03/29 18:42:15.80 mREgEFij.net
言ったのと言いつつ言ったつもりになってただけだわ。謝られるとこっちが申し訳ない

706:680
18/03/29 22:25:28.48 wUGa4G8N.net
>>682
なるほどわかりやすい説明サンクス。

707:デフォルトの名無しさん
18/03/29 23:19:00.18 fG+oYH1y.net
元々の問いに対する答えは持ってないけど、そもそも
引数に明示するのは返却値の代入と同じで副作用でも何でも無いような。

708:デフォルトの名無しさん
18/03/30 00:38:00.59 Cv8Wlmrv.net
そういう、単に複数の値を返したい(outパラメータを使いたい)からというだけで
関数ではなくてサブルーチンになっている物に対して、副作用がないことを明示できるのが
Fortranのpure、という話だろう
今時なら普通にタプル返すだけだけど

709:デフォルトの名無しさん
18/03/30 01:00:29.06 Z4F/kC6f.net
>>688
そうそうそれそれ。汲み取ってくれてありがとう
タプルで返すのもいいんだけど、大きなベクトルとか行列とかは返り値として返そうとすると確保やらコピーやらのコストがかかっちゃうから、サブルーチンって結構いいと思うんだよね

710:デフォルトの名無しさん
18/03/30 03:17:21.13 Wx9gH+Ym.net
でかい配列を返すとして、オブジェクトを複製せずポインター返しておしまいという言語も多いし

711:デフォルトの名無しさん
18/03/30 12:08:24.66 27QTfa4q.net
それのオーバーヘッドがどの程度のものなのかよく分からんで不気味に感じるんだよな。俺が勉強不足なだけかな

712:デフォルトの名無しさん
18/03/30 21:17:44.20 S5bBhBUr.net
ベンチマーク取ればいいだけじゃん

713:デフォルトの名無しさん
18/03/30 21:25:37.94 gL2Crqwy.net
まあ実際そこそこオーバーヘッドあるんだけどね

714:デフォルトの名無しさん
18/03/30 21:34:29.21 35t2qqJ0.net
ベンチマークとれ
テストコードかけ
は若手にいうと凄まじく煙たがれるなw

715:デフォルトの名無しさん
18/03/30 21:37:02.92 lbiuvb17.net
毎回毎回 (N)RVO が効くかなと頭使ったりプロファイル計測したりするより



716:能なら out パラメータにしたくなるよな string だけは何故か気軽に戻り値にしてしまうが



717:デフォルトの名無しさん
18/03/30 21:53:34.74 Lu4RhpIc.net
なるほど。
値型ローカル変数でスタックを確保する事が意味論的に決まってると、
返却値でコピー回避は難しいですね。
Nimでresultが予約変数になってるのも不思議だったけど、外部で確保した
領域を直接割り当てられる、みたいな理由だったりするのかな。

718:デフォルトの名無しさん
18/03/30 22:05:59.64 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:デフォルトの名無しさん
18/03/30 22:50:08.41 MliDoeQ0.net
C++ならplacement newを使う手もありそうだが実際に使いこなせる気がしない

720:デフォルトの名無しさん
18/03/30 22:51:45.23 35t2qqJ0.net
どうでもいいな。
そこまで速度欲しいなら他にもっと直接的なやり方がいくらでもあるだろうに。

721:デフォルトの名無しさん
18/03/30 22:53:37.54 s5wfWcqZ.net
そんな細かいことで速くなるような状況ならインライン展開されるだろ

722:デフォルトの名無しさん
18/03/30 23:09:07.15 MliDoeQ0.net
マルチスレッドを考えるとスタックはスレッドローカルなので速度だけの問題ではない
速度だけ考えると確かにどうでもいいからマルチスレッドを考えるといい

723:デフォルトの名無しさん
18/03/30 23:32:59.08 vpP76l93.net
>>699
>>直接的なやり方
それがintent(out)なわけだが

724:デフォルトの名無しさん
18/03/30 23:36:16.61 vpP76l93.net
あすまん>>699>>697へのレスか。それ分からずに変なこと書いた
>>697
その「可能性がある」ってのやっかいだわ

725:デフォルトの名無しさん
18/03/31 00:27:11.90 Pb+ZodvD.net
そもそも返り値使いすぎなんだよな
返り値なんてエラー管理かスカラー関数くらいにしとくものなのかも

726:デフォルトの名無しさん
18/03/31 01:41:58.87 uN2ioEKO.net
その言語の推奨されるスタイルに合わせるべきじゃね?
C++ならちょっとしたことで>>697のどっちがいいか変わるとかには目をつぶって
返り値使うべき
Fortranならoutパラメータを活用すればいいだろ(タプル無いし)
そこから外れるのは実際に速度が必要になってからでいい

727:デフォルトの名無しさん
18/03/31 02:05:24.43 Pb+ZodvD.net
そう。その推奨されるスタイルとしてintent(out)を採用している言語って少ないよなあーと思うんよ

728:デフォルトの名無しさん
18/03/31 02:15:44.60 t0EWsjNV.net
このスレ的にあれどけどc言語がそうだ
戻り値はスカラーかポインタ
それ以外の返り値が必要なら非constポインタを渡す

729:デフォルトの名無しさん
18/03/31 03:00:03.91 uN2ioEKO.net
C言語はスタイルとしてはそうだけど、言語機能としてポインタ渡しとoutは区別されてないな
逆にD言語やC#はoutをinout/refと区別してるけど、推奨はされてない感が強い

730:デフォルトの名無しさん
18/03/31 08:00:23.62 9+5jHACw.net
まあ直感的には引数はインプットで返り値がアウトプットってのは自然だとは思う。
そうならんのはcの場合は返り値をレジスタ、もしくはスタックにどう置くかを意識してるからでしょ。
良くも悪くも低レイヤーに合わせているわけだ。

731:デフォルトの名無しさん
18/03/31 11:14:49.43 Pb+ZodvD.net
Cはintent指定出来ないことに目を瞑ればかなり良いんだけど、配列の範囲外アクセスチェック周りとかが原始的すぎてデバッグしんどいなあ

732:デフォルトの名無しさん
18/03/31 13:27:31.25 pVxcphgn.net
そもそもpure宣言相当が無い、つまりどんな関数も副作用が有りうると想定する
必要のあるCはお題から外れるので


733:は。



734:デフォルトの名無しさん
18/03/31 14:04:14.80 Pb+ZodvD.net
せやな

735:デフォルトの名無しさん
18/03/31 14:18:10.92 38KyKd1m.net
「副作用が無いDSL」のインタプリタをCで作るか
インタプリタではない何かをDDDで作れ

736:デフォルトの名無しさん
18/03/31 14:45:53.72 uN2ioEKO.net
つ__attribute__((pure))

737:デフォルトの名無しさん
18/03/31 19:03:39.12 pVxcphgn.net
libC関数もヘッダに情報が入って、pure から pure じゃない関数を呼んだらコンパイルエラーになるくらいになったら意味があると思うけど。

738:デフォルトの名無しさん
18/03/31 20:16:30.87 dM6Zlct0.net
画面に出力するのは副作用?Thunderbolt3で接続したGPUボックスをGPGPUとして使った計算は?
ヒープ領域を変更するのは?
と、考えるとpureなものって何でしょうね、ってならないかね

739:デフォルトの名無しさん
18/03/31 20:30:38.28 Pb+ZodvD.net
その辺はHaskell的なアプローチでいいんじゃない?

740:デフォルトの名無しさん
18/03/31 20:31:03.58 Pb+ZodvD.net
Haskell のは並列か

741:デフォルトの名無しさん
18/04/02 19:29:25.78 o7/+6TQd.net
Cって
「本当は疎結合にしたいけど性能優先でしかたなく密結合にするよ」
を理解できるレベルを暗黙の前提にしてない?
なんであんなに流行したんだろ??

742:デフォルトの名無しさん
18/04/02 19:41:43.42 jOZ58Btw.net
Nimって疎結合にしても密結合なCくらいのパフォーマンス出るんだろうか?

743:デフォルトの名無しさん
18/04/02 19:51:29.66 7E1ezZvV.net
ライバルたり得たPascalが
文字列は255文字まで
可変長引数使えない
ポインター扱いにくい
int と char の区別が面倒、など
なんとも無意味な不便さを抱えていたからだと思う
32ビットまでの Windows は API の呼び出し規約が Pasal 流なのに文字列はC式、
初期の Macinrosh は API の文字列も公式の解説書の記述も Pascal だったりしたなあ

744:デフォルトの名無しさん
18/04/02 20:02:30.49 jOZ58Btw.net
ごめんなんでもない

745:デフォルトの名無しさん
18/04/02 22:21:14.63 EN/8rlvw.net
疎結合の意味はよくわからんがdllやsoの中身はほぼ全部Cの関数だろ

746:デフォルトの名無しさん
18/04/02 22:23:36.55 QQz+Sj8+.net
高級言語からCの方向で見てるからの感想だろ。
アセンブラからCの方向だったらまた違った感想になるんじゃないかね。

747:デフォルトの名無しさん
18/04/03 00:10:13.25 RwyGVa1s.net
ドライバのようにインタフェースを関数ポインタで定義して実装を分離するみたいなのが疎結合のC?

748:デフォルトの名無しさん
18/04/03 00:12:50.53 kpq2obaf.net
素直に別の実行ファイルにするのが疎結合のC

749:デフォルトの名無しさん
18/04/03 01:42:26.51 +aZgql8Q.net
>>726
それはコロンブスの卵だから無意識に選択肢から外してしまうんだよな
任意の言語でできることをやっても特定の言語の手柄にならないから

750:デフォルトの名無しさん
18/04/03 03:18:38.36 uqya3zvR.net
作者のwirth先生はPascalを教育用、ModulaをOSも書けるように作ったのに
Pascalの方がそれなりに広まってModulaがさっぱりだったのは不幸だよな
まあModulaはModulaで面倒くさいとこあるんだけど

751:デフォルトの名無しさん
18/04/03 12:54:09.54 GZlQK3q7.net
いい加減スレタイからRustはずそうぜ

752:デフォルトの名無しさん
18/04/03 14:02:58.92 bDjjKsy9.net
つか、スレタイから次世代言語をはずした方がいいんじゃね。
旧世代の言語の話しか出てこないし。

753:デフォルトの名無しさん
18/04/03 14:19:06.58 01qL0AuM.net
>>730
次世代を語るためには旧世代を知っておかねばならんのだ(キリッ

754:デフォルトの名無しさん
18/04/03 14:58:56.73 nX+Jhx5Q.net
おんこちしんと
うんこちんちん
似てる

755:デフォルトの名無しさん
18/04/03 16:29:09.56 lykT2DjF.net
>>729
C++のポジションを狙う言語には「なんなんだよこの仕�


756:l=うっとうしい」もついてくるからw



757:デフォルトの名無しさん
18/04/03 17:41:10.26 01qL0AuM.net
>>733
C++のポジションを狙うRustには「なんなんだよこのアンチ=うっとうしい」もついてくるからw

758:デフォルトの名無しさん
18/04/03 18:01:19.06 teyqxCn/.net
ネタにしてるが、マジで旧世代言語知らずに次世代なんて語れんだろう。

759:デフォルトの名無しさん
18/04/03 19:42:11.24 wFxxlJZP.net
そもそも次世代言語ってまだない言語を夢想して話せってこと?無茶いうな

760:デフォルトの名無しさん
18/04/03 19:48:53.79 AUs9WXEq.net
あのアンチはRustに職を奪われたからね、しょうがないね
Rustスレで気持ちよく大暴れしてるときに自分で漏らしてたよ

761:デフォルトの名無しさん
18/04/03 20:16:15.66 BzNmSsTz.net
なんでこんなrust普及の妨げにしかならんこと言いだすんだろう。

762:デフォルトの名無しさん
18/04/03 20:27:21.10 X7iioW9i.net
UE4やHoudini使ってると次世代言語はビジュアルプログラミングでいい気がしてきた

763:デフォルトの名無しさん
18/04/03 20:33:03.03 s7jZ67re.net
Rustは次世代言語だがC++知ってた人と今から勉強始める人の格差はリセットされないな
世代交代とは寿命が尽きることであって格差がなくなることではない

764:デフォルトの名無しさん
18/04/03 20:44:15.49 uqya3zvR.net
>>739
MSは何故GUIエディタを放棄してXAMLなんぞ作ったんだろうか……

765:デフォルトの名無しさん
18/04/03 21:06:26.14 teyqxCn/.net
XAMLはまだBlendで書けるだろ。

766:デフォルトの名無しさん
18/04/03 21:10:07.12 f/nGrkvY.net
XAMLを手書きしてる人なんているか?

767:デフォルトの名無しさん
18/04/03 21:27:57.24 teyqxCn/.net
Xamarinの人たちかな。

768:デフォルトの名無しさん
18/04/03 22:59:23.72 oucbN3qp.net
補完ありのテキストエディタならいくらでもいそうな気がするが。

769:デフォルトの名無しさん
18/04/03 23:12:30.59 gOYTrQOB.net
Delphi「やっと時代が追い付いたか」

770:デフォルトの名無しさん
18/04/04 00:44:22.36 fh2IMjqM.net
>>739
じゃあdiff取ってみろ。
テキストを超える記述方法は無いよね。

771:デフォルトの名無しさん
18/04/04 16:47:20.75 VNuZKpdj.net
Kylix「誰も知らない 知られちゃいけない」

772:デフォルトの名無しさん
18/04/04 17:04:36.07 Pmay6Vdj.net
deっvi---l

773:デフォルトの名無しさん
18/04/04 17:31:20.15 wRFLDXS3.net
まあVBの方が古いんだけどな

774:デフォルトの名無しさん
18/04/07 09:53:55.09 e89pcJBq.net
>>739
同意
テキストよりビジュアルの方が人間の頭脳に優しい

775:デフォルトの名無しさん
18/04/07 12:37:16.42 JZPNgytE.net
Goの案件って結構あるのね

776:デフォルトの名無しさん
18/04/07 12:55:34.16 y0NHVjlZ.net
Goみたいな不安定なものよく使うな

777:デフォルトの名無しさん
18/04/07 13:26:35.73 LOY6Fa8O.net
Cはグローバル変数の使い方やOOPのやり方みたいなローカルルールないと無理っぽい
Cがいくら安定してもローカルルールは安定しない

778:デフォルトの名無しさん
18/04/07 13:43:27.23 iO/NW/s5.net
流石にひどいw

779:デフォルトの名無しさん
18/04/07 16:18:41.57 dIEw27mY.net
>>752
まじでー。普通のcrudなweb案件とかもあるならやってみたい

780:デフォルトの名無しさん
18/04/07 17:28:50.26 1M9Ik5ns.net
どこが不安定なんだろ?

781:デフォルトの名無しさん
18/04/07 18:15:56.12 LOY6Fa8O.net
小学校でプログラミングを教えろ、ただし中学レベルの数学を教えるな
Goがやりたいことは大体これと同じだろ

782:デフォルトの名無しさん
18/04/07 18:27:40.19 2Xz4c+5M.net
何か問題でも?

783:デフォルトの名無しさん
18/04/07 19:04:22.55 LOY6Fa8O.net
どこかの評論家に否定される前に、自分で考えて肯定すればいいのに
自分で考えるのをやめたら、否定してくださいと言ってるようなものじゃないか

784:デフォルトの名無しさん
18/04/07 19:20:07.17 y0NHVjlZ.net
>>759は自分で考えてなんの問題もないと肯定したレスだろう

785:デフォルトの名無しさん
18/04/07 19:59:52.92 65xgSjRP.net
>>758
まあGoogleの中の人は例外すら理解できなくてGoに盛り込まなかったくらいだからな
Googleのプログラマは小学生レベル


786:



787:デフォルトの名無しさん
18/04/07 20:02:15.13 y0NHVjlZ.net
いやいやいや

788:デフォルトの名無しさん
18/04/07 20:42:13.27 n5lWGq5m.net
>>762
例外なんて機能を欲しがるとか正気か?
タプルかタグ付きユニオンのある言語には例外なんて必要ない
むしろ、無いほうがよほど筋が良い。よりによって例外かよ…
Go言語の問題はもっと他にあるよね
ジェネリクスとかNil安全とかラムダ式とかイミュータビリティとか

789:デフォルトの名無しさん
18/04/07 20:45:00.99 y0NHVjlZ.net
AirPlayさんなんだろ

790:デフォルトの名無しさん
18/04/08 00:14:21.96 Dxb/j7Bg.net
>>764
100得ナイフを欲しがっても無理だぜ。
お前さんは、刺身包丁では肉を斬りにくいと文句いう人なの?

791:デフォルトの名無しさん
18/04/08 00:16:58.41 kOs0IpX+.net
ガイガイ

792:デフォルトの名無しさん
18/04/08 00:44:53.47 V9VuwMAu.net
ここでのクソみたいな議論に時間を使うことが一番コスト高ってことを
goを使ってる人はわかってる。

793:デフォルトの名無しさん
18/04/08 00:59:11.92 yrhx1H5B.net
>>764
例外ってか戻値無視してたらコンパイルエラーにする構文がほしい。(すでにgoにあったらスマヌ)
ライブラリやミドルウェア作るとき、ここでエラーならそれ以上処理進めんなってことあるので、アプリ側のエラーハンドリングを強制させたい。
それができないからやむを得ず例外で終了させてる。

794:デフォルトの名無しさん
18/04/08 01:06:05.49 +FJwvftX.net
>>769
例外とコンパイルエラーを同じものと考える神経がわからん。
実行時にまずい処理が来たらgoのプログラムを強制終了させたいならpanicがあるが。

795:デフォルトの名無しさん
18/04/08 01:11:44.09 +FJwvftX.net
つーかgoが気に入らない理由に例外を上げるけど、例外ってそんなに良いもんかね?
例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある?
それくらいやってくんないと例外を使う意味って、エラーハンドリング問題の先送りでしかないから。

796:デフォルトの名無しさん
18/04/08 01:12:25.64 DdcJdhQn.net
>>766
問題って書いたのが誤解を招いてしまったかな…
別に上記の全てが無いとダメって言ってるわけじゃないよ。あったら嬉しいなくらいにしか思ってない
けど、例外なんて邪魔にしかならん機能を欲しがるくらいなら他に欲しいものがいくらでもあるだろと思って…
あと、揚げ足取って悪いけど、100徳ナイフを欲しがってるなら例外も欲しがってるはずだろ…
例外と継承を捨てたのはGoの英断

797:デフォルトの名無しさん
18/04/08 01:16:07.05 kOs0IpX+.net
>>772
いやお前は悪くない。相手が意味ワカラン奴なだけだ

798:デフォルトの名無しさん
18/04/08 01:46:25.89 21utqBEE.net
java
但しランタイム例外は除く

799:デフォルトの名無しさん
18/04/08 02:00:48.53 DdcJdhQn.net
>>771
>例えばこの関数は例外を上げる可能性があるからtryブロック内に書かないとコンパイルエラーになる言語ってある?
Javaの検査例外とSwiftの例外はtry必須だよ。
けど、try必須だと書くのが面倒なんだよね。実際、Javaでは非検査例外のほうが主に使われてるし…
検査例外と非検査例外を場合によって書き分けるのがJavaの理想なんだろうけど、現実はそうじゃない…
Swiftの例外はtryの書き方が何種類かあるからJavaより使い易くはなってるんだけど
Rustと同じでタグ付きユニオン(enum型)あるから別に必要なくない?ってなる
Rustはエラー処理にenumのResult型を使うけど、Swiftでは例外を使うのがマナーなのかな?

800:デフォルトの名無しさん
18/04/08 02:16:09.65 +FJwvftX.net
>>775
swiftはそうだったな。
たしか例外周りはswift2で追加実装されてウゲーってなった覚えがあるような。
swiftの言語仕様の変更は凄まじいものがあるよな。もうswift4だっけか?
正直swift信奉者≒apple信者じゃないと説明がつかない。
言語仕様をミニマムに抑えて


801:熟考するgoを見習ってほしいわ。



802:デフォルトの名無しさん
18/04/08 02:26:12.80 +FJwvftX.net
>>775
つまり結局goのエラーハンドリングの面倒くささと一緒になるってことだよな?
goのエラーはただの値だから
構造体のメンバ変数に格納先を用意してやれば、
後で纏めてチェックしたり、
一回でもエラーが発生したら処理を中断する
みたいな書き方は全然できる。
そのへんはgo blogに記事があった。

803:デフォルトの名無しさん
18/04/08 03:04:32.63 N7to3hps.net
>>771
goの例外不在についてはerrorの握りつぶしが書きやすい上に気づきにくいのが不満
握りつぶしに比べたら先送りのほうがまだ良い
>>769が戻値無視してたらコンパイルエラーって言ってるのはそこが理由でしょ

804:デフォルトの名無しさん
18/04/08 03:14:34.94 +FJwvftX.net
>>778
あー。なるほどと思ったけど例外処理は先送りしたあげく、結局とこでも処理せず終わるパターンあるよね。
握りつぶしが簡単にできるのはどっちも一緒では?

805:デフォルトの名無しさん
18/04/08 03:17:34.48 N7to3hps.net
>>779
ハンドルされない例外は処理の中断になるけど、
握りつぶしは処理の続行になる
中断のほうが良い、と思う

806:デフォルトの名無しさん
18/04/08 03:49:10.38 DdcJdhQn.net
>>780
例外の一番の問題は予想外の場所で例外が不必要にキャッチされて、その上で
握りつぶされてしまった場合、握りつぶされた場所を特定するのがかなり面倒臭いこと。
そんなコード書くヤツが悪いと言いたいが実際にいるんだからしょうがない…
どこで握りつぶされるか分からんリスクを背負うくらいならその場で握りつぶされた方がまだいい
因みに、エラーハンドリングに関してはRustのResult型が最も筋が良いと思ってる
Result型なら故意に握りつぶそうとでもしない限りは簡単には握りつぶせない

807:デフォルトの名無しさん
18/04/08 04:07:01.05 N7to3hps.net
>>781
goのほうが握りつぶしが書きやすいからこそ、どこで握りつぶされるか分からんリスクはgoのほうが大きい、と思うんだよなあ

808:デフォルトの名無しさん
18/04/08 08:46:33.77 Dxb/j7Bg.net
>>781
トラブルシューティングの為に、キャッチした時点でロギングしないの?

809:デフォルトの名無しさん
18/04/08 09:00:51.10 RUgiqDA/.net
Cのprintfの戻り値を毎回欠かさずチェックしてる人だけが例外に石を投げなさい

810:デフォルトの名無しさん
18/04/08 10:19:07.88 xmyFoIZI.net
戻り値の握り潰しは局所的・静的に判断できるけど例外はそうじゃないからなぁ。
それこそ例外を起こしてみないと見つけるのが困難だったりして。

811:デフォルトの名無しさん
18/04/08 10:23:53.74 +rfxRhvD.net
例外は継続的な改良に対応しやすいのがメリットなんだよな
取りあえず最初は例外安全だけ意識して例外は上の方でまとめて処理しておいて、
あとでより丁寧な取扱いが必要になったときは問題なく対応できる
もちろん、検査例外とかいうビチグソは無い前提だが

812:デフォルトの名無しさん
18/04/08 11:36:37.63 Bf+GYw8s.net
最初はexit
exitの握り潰しが必要になったら例外で

813:デフォルトの名無しさん
18/04/08 11:42:04.86 YK+KPtHu.net
>>758
1から10までの整数を足すのに
ループで順番に足す方法を教える様なのが
今の日本のプログラミング学習(教育)だからな
そんなんじゃだめ

814:デフォルトの名無しさん
18/04/08 13:08:16.40 mQRLIlYG.net
このスレも例外が理解できない幼稚園児ばっかかよ
Goみたいな言語が流行るわけだ

815:デフォルトの名無しさん
18/04/08 13:22:55.27 Bf+GYw8s.net
自分で選んだ言語がそれだったらそれでもいいよ
より良い言語を後で見つけたら自分が馬鹿だっただけで済む
しかしそれを選んだのが会社や国家だったら馬鹿にしても炎上するし擁護しても炎上する

816:デフォルトの名無しさん
18/04/08 13:39:52.93 T4sPcvM1.net
このスレの議論はほんとレベルが低いな
間違った使い方をしたときどちらがマシかでしか優劣をつけられないのか

817:デフォルトの名無しさん
18/04/08 13:50:33.26 DdcJdhQn.net
>>782 なんか会話が噛み合わないなと思ってたがやっと理由が分かった気がする。 >>782の言う"どこ"はGoのエラー(戻り値)は握りつぶしがしやすいから 誰が"どこ"でエラーを握りつぶすコードを書くか分からないって意味の"どこ"だよね。 俺の言う"どこ"は例外がスローされた場所に対して キャッチされる場所が"どこ"か分からないって意味の"どこ"なんだよ。 キャッチされる場所が分からないとデバッグ時に探すのが面倒なんだよ。 Goみたいに戻り値としてエラーが返されるとエラーの発生場所と 握り潰した場所は必ず一致するからデバッグしやすい。 結局、従来の例外はgoto文と同じでフローが飛ぶから気持ち悪いってのが俺の意見。



819:デフォルトの名無しさん
18/04/08 14:09:14.32 Bf+GYw8s.net
従来の言語にはexitがあるから例外がない
SmalltalkやJavaScriptにはexitがないから例外があるんだろう

820:デフォルトの名無しさん
18/04/08 14:12:58.97 DdcJdhQn.net
>>791
でも、次世代言語って間違った使い方(プログラマによるミス)をさせないように
制限をかける意味合いが強くない?Null安全とかその典型だと思うんだけど。
オレは絶対に使い方を間違えないって言うんならC++, C#とかを使ってろよってなるし…

821:デフォルトの名無しさん
18/04/08 14:13:54.54 aL28Ce5R.net
>>792
戻り値のエラーを握りつぶされると、不適切な状態で動き続けるから、デバッグが困難になると思うんだが。
例外の握りつぶしでも同じ事だけど、構文としては、例外の握りつぶしの方が見つけやすいと思うけどね。catchブロックでしか細工できないから。
goだと正常な返り値の隣に,_つけるだけで握りつぶせちゃうから、見つけづらいんじゃないかな。

822:デフォルトの名無しさん
18/04/08 14:15:23.81 V9VuwMAu.net
間違えを考慮しないシステムの恐ろしさを全くわかってない奴はそもそも話にならん。
プログラミングを語る資格がない。

823:デフォルトの名無しさん
18/04/08 14:23:41.21 DdcJdhQn.net
>>795
すまん。よく考えると確かにデバッグはどっちも面倒なことに変わりないわ。
ただ、個人的にはtry-catchも,_もどっちも見つけづらさは大して変わらないと思ってる。
デバッグ時じゃなくて、普通にコードを読むときに戻り値でやったほうがフローを把握しやすいってことが言いたかった。

824:デフォルトの名無しさん
18/04/08 14:26:14.02 aL28Ce5R.net
返り値でエラーを判別するコードだと、本来やりたいことの次にほぼ必ず、エラー判定処理が入るから、可読性が低いんだよね。
昔、C使ってた頃は、そういうところが嫌でたまんなかったし、ひどいのになると主要な処理が全部、条件部分で行われてて、if文の連なりしかないコードとかみたし。
正常系をリーダブルに書くには、例外の方が気持ちいいなと思うよ。

825:デフォルトの名無しさん
18/04/08 14:32:30.43 kugCg6kv.net
そのあたりはEitherが良いと思うんだな

826:デフォルトの名無しさん
18/04/08 14:35:54.54 aL28Ce5R.net
後、最近のIDE使ってると、todoをコメントに入れとけば、あとでそれを、まとめて見直せるから、取り敢えず、try-catchして、catchのところはtodoにしといて、まず正常系を一通り買いてから、あとで異常系に対処するっていうワークフローにできるのが、例外の利点かなと思う。

827:デフォルトの名無しさん
18/04/08 14:37:10.66 N7to3hps.net
>>792
デバッグ時に、どこかでエラーが握りつぶされてるかもしれない、というパターンを考えないといけない、という意味で「どこ」
しかもそういう状況は>>795の言うように不適切な状況で動き続けるから
握りつぶした箇所と不具合の発生箇所がかけ離れることも多い
だから、goに限ったことではないが、エラーや例外の握りつぶしはデバッグしづらい
例外がどこでcatchされてるか探すのは、握りつぶし探しに比べたらまだ簡単

828:デフォルトの名無しさん
18/04/08 14:37:23.36 DdcJdhQn.net
>>799
タグ付きユニオンがある言語ならそれが一番だと思う。
前にも言ったけど、エラーハンドリングに関してはRustのResult型が一番筋がいいと思ってる
でも、Goにはタグ付きユニオンがないからなあ…

829:デフォルトの名無しさん
18/04/08 14:51:49.81 aL28Ce5R.net
goは本格的には使ったことないけど、無視はできないんで、いろんなコードを見てるんだけど、今のところの感想としては、goって、書き手の思考を遮らないというところに重きを置いてる印象。
deferなんか、なんか開いたらあとで閉めるけど、忘れない内にその処理を予約しとこうみたいな発想かな。
自分は書くことより読むことを重視するタイプなんで、あまりgoには向いてないなあと思ってる。

830:デフォルトの名無しさん
18/04/08 14:51:50.04 Bf+GYw8s.net
副作用禁止ならexitも例外も禁止だからEitherがある

831:デフォルトの名無しさん
18/04/08 15:22:23.64 gQU7xBEC.net
stack traceもしらんのか

832:デフォルトの名無しさん
18/04/08 15:29:06.45 drN9+cfC.net
握りつぶしてるところでスタックトレース出力するんだよ!
('、3_ヽ)_??

833:デフォルトの名無しさん
18/04/08 15:51:49.24 4BboKQKO.net
maybe, eitherがある言語やった後に無い言語はしんどい

834:デフォルトの名無しさん
18/04/08 17:20:17.22 kOs0IpX+.net
Maybe, Eitherは強い。ほぼ必須な体になってしまった

835:デフォルトの名無しさん
18/04/08 17:47:41.66 iGi236dt.net
Eitherは初見だとそれがエラー処理用によく使うっていうことが
名前から全然伝わってこないところだけが嫌い

836:デフォルトの名無しさん
18/04/08 17:58:42.79 +FJwvftX.net
>>803
書きやすさと読みやすさは同一だと思ったが。特にdeferとか大体close処理では?
open直後はdeferにclose処理書いてあったほうが読みやすくないかな?

837:デフォルトの名無しさん
18/04/08 17:58:46.39 AFrzJyvZ.net
たし蟹

838:デフォルトの名無しさん
18/04/08 18:04:30.90 ikNNlzZg.net
リューナイト

839:デフォルトの名無しさん
18/04/08 18:14:07.95 V9VuwMAu.net
defer はスコープの終わりで暗黙的に動くクラスのデストラクタより
コード部分で明示した方がわかりやすくね?って発想じゃないかね。
こういうのは好みだったり書いてるアプリの種類で分かれそうな気はする。

840:デフォルトの名無しさん
18/04/08 18:50:09.38 BxgydgxS.net
c++17の [discard]はどうかね?

841:デフォルトの名無しさん
18/04/08 18:52:29.42 BxgydgxS.net
間違えた nodiscard

842:769,815
18/04/08 23:39:43.80 yrhx1H5B.net
>>792
> Goみたいに戻り値としてエラーが返されるとエラーの発生場所と
> 握り潰した場所は必ず一致するからデバッグしやすい。
俺もそれには同意で、更に一歩すすんでc++17の nodiscard属性みたいな指定ができるてほしいんだよ。デフォルトはコンパイルエラーで。

843:デフォルトの名無しさん
18/04/09 00:41:14.72 R+tVusAV.net
Fortran のIO関係のエラー処理は優れてると思うわ。
Open文にoptionalのerr引数を渡して置けば、エラーが出てもerrに値を入れて続行。err引数を渡してなかったらエラーが出たら異常終了

844:デフォルトの名無しさん
18/04/09 00:59:36.33 1PTa96/6.net
goのdeferは、その中で起こったエラーを外に通知する(簡単な)方法がないってんで
槍玉に上げられてなかったっけ?うろ覚えだけど

845:デフォルトの名無しさん
18/04/09 01:32:15.01 l0nazyXh.net
>>818
一番簡単な方法は名前つきreturn変数を使うことだから簡単ちゃ簡単
だが正直名前つきreturn変数がそもそもクソ構文

846:デフォルトの名無しさん
18/04/09 06:40:40.00 ON56dtQ5.net
>>817
異常終了してはならないUIもある
UIが言語に影響を与える

847:デフォルトの名無しさん
18/04/09 07:57:09.29 1PTa96/6.net
>>819
はー、名前付きreturn変数なんてあったんだ
しかし本来の流れによるerrがある場合は握りつぶさないようにしないといけないし、真面目にやると分岐が入り組みそうだな

848:デフォルトの名無しさん
18/04/09 07:59:50.20 R+tVusAV.net
>>820
いやそのためにerr引数があるのよ……

849:デフォルトの名無しさん
18/04/09 08:27:01.39 D454qjGx.net
>>816
MSはかなり昔からそういうの力を入れていて独自仕様で実現してるな。(SAL注釈)
SDKのヘッダなんかで見かける _Check_return_ とかとかいうやつ。VSの「コード分析」でチェックしてくれる。

850:デフォルトの名無しさん
18/04/09 08:42:34.03 mPPENYW6.net
理想はエラーハンドリングを書いてなかったら�


851:Rンパイルエラー。 (エラーハンドリングでエラー握り潰すやつは流石にそこまで面倒見きれない) 次点は強制終了。その際にエラーがどこで何故起きたのかって情報を出せること。 一番悪いのはそのまま処理進んでサイレントクラッシュ。 こんな感じ。



852:デフォルトの名無しさん
18/04/09 08:51:45.67 2cUxs1pv.net
コンパイルエラーは、そこまで強烈にエラー対応必須にしたらスクリプトみたいな「まずはとりあえず動くコードを書いて様子を見る」っていう使い方は出来なくなるな

853:デフォルトの名無しさん
18/04/09 09:45:04.94 9pBeshvD.net
となるとrustやな

854:デフォルトの名無しさん
18/04/09 09:59:14.65 RBhArkXv.net
そういやClojureってどうなったん?

855:デフォルトの名無しさん
18/04/09 10:18:17.46 aahOEQux.net
Goの名前付きreturn使うとアセンブリまで落としたとき、コードが少しきれいになるぞ。
俺は好き。

856:デフォルトの名無しさん
18/04/09 10:48:34.89 1PTa96/6.net
>>828
返値の最適化だけが目的なら初めからresult変数方式のやつ使えば
Pascal、Eiffel、あとFortranもそうだぞ

857:デフォルトの名無しさん
18/04/09 11:33:31.90 ON56dtQ5.net
デバッグは自分との戦い
だが最適化は自分が速くならなくても相手が遅くなれば勝てる
他人の足を引っ張る要素があるからカオスになる

858:デフォルトの名無しさん
18/04/09 12:00:22.27 aahOEQux.net
>>829
だけが目的と言うか、優劣をつけたりGoを使う理由にはあんまりしてないが。
例外は俺も好きじゃないな。
ただのちょっと見た目のきれいなgotoであって、フローとしては全然きれいじゃないし、
finallyで複数のリソースの開放しようとしたらどこまで進んだか管理するしかなくなるし、
各エラーで細かい処理が必要だったら結局スコープの狭いtry-catch書くことになるし、
毎行errチェックしたり、いっそ無視したりするのとレベルが変わらん。
deferは、実際に使えた直後に開放を予約できるから価値がある。
良くできてると思うけどな。

859:デフォルトの名無しさん
18/04/09 12:16:00.98 Wtc2x12J.net
>>825
そこは、エラー戻値無視するな構文を用意してれば良い

860:デフォルトの名無しさん
18/04/09 12:16:21.64 ebJj02XJ.net
>>829
え、すまん。よく知らないんだけど、Fortran って関数で配列を返してもサブルーチン的ないい感じに最適化してくれるの?

861:デフォルトの名無しさん
18/04/09 13:04:43.93 1PTa96/6.net
>>833
されるよ。全部の実装でそうとは断言できないけど
要するに>>697のretvalが直接返り値用の変数として見えるってだけ

862:デフォルトの名無しさん
18/04/09 14:38:02.08 50KKUeFL.net
何でここの人たちエラーをその場で処理するのが当然だと思ってるの?
普通は上に投げるよね?

863:デフォルトの名無しさん
18/04/09 14:47:49.87 iBEYls0Z.net
>>835
その「上」の関数ではどうすんの?また上に投げるの?

864:デフォルトの名無しさん
18/04/09 15:03:10.07 FuUgA4s9.net
一番上のハンドラでまとめて受け取る

865:デフォルトの名無しさん
18/04/09 15:18:43.79 ml5ntbUH.net
結局人類にgotoは必要だったんだ!

866:デフォルトの名無しさん
18/04/09 16:05:31.09 O1tgNFRh.net
なんで2ちゃんでこういう議論をすると最期は必ずアホアホ展開になるの?

867:デフォルトの名無しさん
18/04/09 16:19:21.64 mPPENYW6.net
>>835
俺は、その上側でのエラーハンドリングを必須にすることができて欲しいという意見。c++17の nodiscardみたいなの。
rustのResult型や他言語のEither勉強不足でわからない。スマヌ

868:デフォルトの名無しさん
18/04/09 16:26:17.23 ON56dtQ5.net
>>835
マルチスレッドが普通になったから
上に投げるよりスレッドの外に投げる


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch