スレタイ以外の言語もok
前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1512137301/
次世代言語9[Haskell Rust Kotlin TypeScript Dart]
■ このスレッドは過去ログ倉庫に格納されています
2018/03/06(火) 10:09:15.60ID:x/Au45rc
601デフォルトの名無しさん
2018/03/25(日) 00:16:01.86ID:U5SlEUJl 民主党→民進党のように名前をちょっと変えると爆発的に売れる場合もあるからな。
602デフォルトの名無しさん
2018/03/25(日) 00:18:17.39ID:JVNvN7ma603デフォルトの名無しさん
2018/03/25(日) 00:30:12.26ID:GhdgZmXr htmlでdryを守とかそれが無理だっつーの
604デフォルトの名無しさん
2018/03/25(日) 00:41:53.53ID:Wz8WBZT8 OCamlに話すことあるか?
605デフォルトの名無しさん
2018/03/25(日) 00:55:24.67ID:Qy9e8iWO >>594
収益に直結してないものはやりたい人がいなくなったらそれまでだからな
収益に直結してないものはやりたい人がいなくなったらそれまでだからな
606デフォルトの名無しさん
2018/03/25(日) 01:20:58.23ID:4Rittzre >>602
全部グローバル変数で名前規則さえ死守してればいいとでも言うのか?
全部グローバル変数で名前規則さえ死守してればいいとでも言うのか?
607デフォルトの名無しさん
2018/03/25(日) 07:18:41.27ID:WO056vpM >>604
Haskellと重複する部分についてDRYを死守する方法を話して
Haskellと重複する部分についてDRYを死守する方法を話して
608デフォルトの名無しさん
2018/03/25(日) 08:01:39.02ID:U5SlEUJl http://www.stroustrup.com/JSF-AV-rules.pdf
ロッキード・マーティン F-35 Strike Fighter Air Vehicle 開発のためのC++コーディング・ガイドライン。
※URLでお分かりの通り禿が関わっています。
ロッキード・マーティン F-35 Strike Fighter Air Vehicle 開発のためのC++コーディング・ガイドライン。
※URLでお分かりの通り禿が関わっています。
609デフォルトの名無しさん
2018/03/25(日) 14:46:57.32ID:2EIVAaim >>601
立憲民主党と勘違いしてない?
立憲民主党と勘違いしてない?
610デフォルトの名無しさん
2018/03/25(日) 16:11:18.40ID:+oTPc842 関数があるのにDRYに苦労する状況が分からん
611デフォルトの名無しさん
2018/03/25(日) 19:01:20.02ID:NiWlHtrf 政治の話はNGで
612デフォルトの名無しさん
2018/03/25(日) 21:25:39.57ID:WO056vpM プログラム技術という観点では政治も経済も経営もNG
613デフォルトの名無しさん
2018/03/25(日) 22:55:03.56ID:U5SlEUJl 政治では名前が長くなり始めると危険領域だよな。
○○民主主義自由独立解放戦線的な。
朝鮮民主主義人民共和国とか欲張りすぎな国もあるし。
予言しておくけど立憲民主党は時代とともに名前が長くなるぞ。
○○民主主義自由独立解放戦線的な。
朝鮮民主主義人民共和国とか欲張りすぎな国もあるし。
予言しておくけど立憲民主党は時代とともに名前が長くなるぞ。
614デフォルトの名無しさん
2018/03/25(日) 22:56:11.12ID:U5SlEUJl 日本も大日本帝国時代は危険領域だったんだろな。
615デフォルトの名無しさん
2018/03/25(日) 22:57:49.97ID:U5SlEUJl Googleのコーディングガイドラインは名前はいくら長くなっても良い、省略された名前はダメと述べているからな。
罠かもしれんな。
罠かもしれんな。
616デフォルトの名無しさん
2018/03/26(月) 00:02:29.61ID:3hemhRjv 悩ましいぞな
617デフォルトの名無しさん
2018/03/26(月) 00:05:05.18ID:mhu6xXG+ つまりこう
for (int indexOfItemInArrayOfProxyInformation = 0; ; ++i) {
auto proxyInformation = arrayOfProxyInformation[indexOfItemInArrayOfProxyInfomation];
...
みたいな
for (int indexOfItemInArrayOfProxyInformation = 0; ; ++i) {
auto proxyInformation = arrayOfProxyInformation[indexOfItemInArrayOfProxyInfomation];
...
みたいな
618デフォルトの名無しさん
2018/03/26(月) 00:08:00.38ID:QH+aPMzj ofを使ったら負け
619デフォルトの名無しさん
2018/03/26(月) 00:10:58.12ID:mhu6xXG+ でもインデックス複数あったら?
620デフォルトの名無しさん
2018/03/26(月) 00:23:51.81ID:WZ1ZCWjW ストアドよりインデックスのほうが早いよ。
621デフォルトの名無しさん
2018/03/26(月) 00:32:41.52ID:ceAN67+T 何でも極端に走っちゃいかん。
バランスは大事よ。
バランスは大事よ。
622デフォルトの名無しさん
2018/03/26(月) 00:35:46.73ID:mhu6xXG+ getInfo なんてのは Android の api でも見かけるし
information を info と略するのはありなんだろうな
普通の会話でもしばしばそう略すし
他にもなにか例外があるかとAndroid ndk api リファレンス眺めたら
名前がどれもこれも長くて驚いたわ…特にenum
information を info と略するのはありなんだろうな
普通の会話でもしばしばそう略すし
他にもなにか例外があるかとAndroid ndk api リファレンス眺めたら
名前がどれもこれも長くて驚いたわ…特にenum
623デフォルトの名無しさん
2018/03/26(月) 01:21:09.02ID:BMtnwc7n 理由がわからない命令に従うから暴走するんだな
長くする理由を知ってたら必要な長さ以上にはならないし
理解できないものは反対したり批判したりする習慣があれば暴走しない
長くする理由を知ってたら必要な長さ以上にはならないし
理解できないものは反対したり批判したりする習慣があれば暴走しない
624デフォルトの名無しさん
2018/03/26(月) 01:28:05.88ID:mhu6xXG+ 例えを出しただけなのに「理由がわからないなら反対しろ!」と言われましても…
625デフォルトの名無しさん
2018/03/26(月) 01:45:15.94ID:h+3ybIF8 馬鹿らし過ぎる。。
関数切り出してスコープ切ればいいだけの話だろうに。
今時の言語ならネームスペースだって使えるだろうし、エイリアシングみたいなものも
ある。
てかそれもなければなんの略かのコメントでも付けてろよ。
関数切り出してスコープ切ればいいだけの話だろうに。
今時の言語ならネームスペースだって使えるだろうし、エイリアシングみたいなものも
ある。
てかそれもなければなんの略かのコメントでも付けてろよ。
626デフォルトの名無しさん
2018/03/26(月) 01:59:38.91ID:BMtnwc7n627デフォルトの名無しさん
2018/03/26(月) 02:02:12.66ID:hwIkGQhx goだとどいつもこいつもクッソ短いんだけどな
google内でも派閥があると見える
google内でも派閥があると見える
628デフォルトの名無しさん
2018/03/26(月) 02:05:44.31ID:mhu6xXG+ >>626
哲学とかも不要な誤解や意図した曲解を避けるために用語をどんどん定義していくよね
今回で言えば「合目的的」であれ、とかか。
でも非常に長い名前は必ずしも判りにくくは無いんだよねああして書いてみると。
見難いのが問題なだけであって。
哲学とかも不要な誤解や意図した曲解を避けるために用語をどんどん定義していくよね
今回で言えば「合目的的」であれ、とかか。
でも非常に長い名前は必ずしも判りにくくは無いんだよねああして書いてみると。
見難いのが問題なだけであって。
629デフォルトの名無しさん
2018/03/26(月) 03:07:46.44ID:qQm2MzQc 名前が無いものに分かりやすい名前を付けようとするとどうしてもそのまんまの名前になっちゃうんだよな
aにbを足してcをかけた数に「aにbを足してcをかけた数」という名前を付けたり
aにbを足してcをかけた数に「aにbを足してcをかけた数」という名前を付けたり
630デフォルトの名無しさん
2018/03/26(月) 04:27:44.25ID:WZ1ZCWjW C++11から日本語の識別子も使えるようになったんだよな。
ということは。
#define もしも if
もしも(0 < プロキシ情報の配列におけるアイテムの索引) {
・・・
}
ということは。
#define もしも if
もしも(0 < プロキシ情報の配列におけるアイテムの索引) {
・・・
}
631デフォルトの名無しさん
2018/03/26(月) 07:19:11.84ID:WZ1ZCWjW 最近気が付いたのは、MSは情報を収集するためにちょっと踏み込んだことをしてるな。
Google的になったというか。
例えばMSが提供する一部のアプリケーションでは変換中の文字列について対象文節をわかりにくくするようになった。
これはつまり、単漢字変換のようなことをせず、一括変換してから間違えた部分を修正してほしいということだろう。
なぜそのようなことをするのか?
誤変換に関する統計情報が欲しいのだろう。
Google的になったというか。
例えばMSが提供する一部のアプリケーションでは変換中の文字列について対象文節をわかりにくくするようになった。
これはつまり、単漢字変換のようなことをせず、一括変換してから間違えた部分を修正してほしいということだろう。
なぜそのようなことをするのか?
誤変換に関する統計情報が欲しいのだろう。
632デフォルトの名無しさん
2018/03/26(月) 07:21:37.08ID:WZ1ZCWjW もちろん、一括変換がうまく機能しないからこそユーザーは変換範囲を狭めて変換するのだし、誤変換情報が欲しいのは、変換が上手くいかないことがわかっているからだろう。
つまり、一部のソフトウェアは意図的にとても使いづらくなっている。
つまり、一部のソフトウェアは意図的にとても使いづらくなっている。
633デフォルトの名無しさん
2018/03/26(月) 08:36:23.04ID:fyNor71T つまり次世代言語とは日本語の事だった…!?
634デフォルトの名無しさん
2018/03/26(月) 08:48:45.88ID:WZ1ZCWjW いや中国語だろうけどさ。
635デフォルトの名無しさん
2018/03/26(月) 16:34:24.37ID:b2RxclhK ブラックジョークかな?
636デフォルトの名無しさん
2018/03/26(月) 16:41:17.53ID:jinbnpD9 でもたしかにコードが中国語なら、短い変数名で意味が通るからコードはすっきりしそう
637デフォルトの名無しさん
2018/03/26(月) 16:52:27.07ID:Xx23wWxJ C 風の文法なら名前が空白区切りで並ぶ必要あまり無いし、
名前の途中に空白を含めても良いという言語があっていい気がする
var indexOfProxy := 0;
var index of proxy := 0;
どっちが見やすいかな
名前の途中に空白を含めても良いという言語があっていい気がする
var indexOfProxy := 0;
var index of proxy := 0;
どっちが見やすいかな
638デフォルトの名無しさん
2018/03/26(月) 17:37:31.08ID:dvRuSlEv >>636
今の中国の字(簡体字)はよくわかりません
今の中国の字(簡体字)はよくわかりません
639デフォルトの名無しさん
2018/03/26(月) 18:56:27.15ID:MGgBxL58 謝謝茄子…
640デフォルトの名無しさん
2018/03/26(月) 19:33:26.92ID:sC9O8aKE >>637
勘弁して。こんな発想はエアプだけだろ。少なくともエディターとの連携がしづらいし。
そもそもどっからどこまでが予約語で変数かどうやって判断するの?
当然の帰着として変数名に予約語を含めることは絶対禁止ってことになるだろ。
想像しただけで死にたくなってきた。
勘弁して。こんな発想はエアプだけだろ。少なくともエディターとの連携がしづらいし。
そもそもどっからどこまでが予約語で変数かどうやって判断するの?
当然の帰着として変数名に予約語を含めることは絶対禁止ってことになるだろ。
想像しただけで死にたくなってきた。
641デフォルトの名無しさん
2018/03/26(月) 19:40:27.04ID:jinbnpD9 Fortranは空白無視するがな
642デフォルトの名無しさん
2018/03/26(月) 19:55:57.52ID:pOsEMXVS お前ホモかよお!?
643デフォルトの名無しさん
2018/03/27(火) 00:43:26.13ID:ry3uUZdU 予約語は大文字だけ、変数名は小文字だけで書くとか…
VAR index of proxy := 0;
VAR index of proxy := 0;
644デフォルトの名無しさん
2018/03/27(火) 00:56:02.73ID:Zrk+MxC2 そんな前時代的な……
645デフォルトの名無しさん
2018/03/27(火) 01:05:23.75ID:5DREL+sj クソワロタwww
646デフォルトの名無しさん
2018/03/27(火) 01:14:44.93ID:1nOfLeWK お前ら頭悪いなwww
俺様が華麗に解決してやろう
ほらよ
var index%20of%20proxy := 0;
俺様が華麗に解決してやろう
ほらよ
var index%20of%20proxy := 0;
647デフォルトの名無しさん
2018/03/27(火) 02:14:32.56ID:xOo+kmL4 どんどんバカになっていってる。
648デフォルトの名無しさん
2018/03/27(火) 02:49:05.89ID:nthqohzW649デフォルトの名無しさん
2018/03/27(火) 11:11:55.54ID:4hOyl1p5 バカなことを思いつくことは誰にでもあるが
それを宣伝して押し売りするか黙って廃棄するかの判断がおかしくなってるんだろう
それを宣伝して押し売りするか黙って廃棄するかの判断がおかしくなってるんだろう
650デフォルトの名無しさん
2018/03/27(火) 22:54:29.91ID:D/rPklFE いわゆる全角スペース使うとか、とにかくコンパイラにスペースと思われない文字だが見た目がスペースのやつを使えばいいのでは?
Java なんかはそれでなんとかなっちゃうよな。
Java なんかはそれでなんとかなっちゃうよな。
651デフォルトの名無しさん
2018/03/27(火) 22:59:22.15ID:xOo+kmL4 職場で本気でそんなことしだしたら俺は怒るよ。
652デフォルトの名無しさん
2018/03/27(火) 23:16:27.79ID:iLpxT8od DDDとかだとDSLを作るって言うけど
それって変数名とかメソッド名に日本語を許容するってこともありえんのかな?
それって変数名とかメソッド名に日本語を許容するってこともありえんのかな?
653デフォルトの名無しさん
2018/03/27(火) 23:35:51.57ID:O0jMKDc6 最近の言語って識別子に日本語使えるの増えたよな。まあ日本語っていうかUnicodeなんだけど。
654デフォルトの名無しさん
2018/03/28(水) 05:56:44.07ID:LrPDAu7h 絵文字を駆使したハンガリアン記法時代の幕開けだ
655デフォルトの名無しさん
2018/03/28(水) 07:22:48.81ID:lXnJ1NTY ようやく時代がSmalltalk-72に追いついたかw
https://pbs.twimg.com/media/DDhrUoSXkAAtvJO?format=jpg
https://pbs.twimg.com/media/DDhrUoSXkAAtvJO?format=jpg
656デフォルトの名無しさん
2018/03/28(水) 10:43:26.92ID:Pilbwiej 時代を先取りしすぎるのも考え物
657デフォルトの名無しさん
2018/03/28(水) 10:45:01.89ID:qnpV2Jxp APL…
658デフォルトの名無しさん
2018/03/28(水) 10:53:19.54ID:yjlej8xR 正直APLは今なら流行ると思う
659デフォルトの名無しさん
2018/03/28(水) 10:55:53.02ID:qnpV2Jxp 統計とか各種データの集計に良さそうだもんな
660655
2018/03/28(水) 11:29:22.55ID:ng8CxZVM >>657
たしかにそうなんですが…APLの方は記号を読みやすくするために用いているように思えなかったので…
ピタッとはまれば驚愕の短さで書けますけどね
例: Conway's Game Of Life in APL
https://www.youtube.com/watch?v=a9xAKttWgP4
たしかにそうなんですが…APLの方は記号を読みやすくするために用いているように思えなかったので…
ピタッとはまれば驚愕の短さで書けますけどね
例: Conway's Game Of Life in APL
https://www.youtube.com/watch?v=a9xAKttWgP4
661デフォルトの名無しさん
2018/03/28(水) 16:41:04.69ID:Lb32PKeB662デフォルトの名無しさん
2018/03/28(水) 17:21:22.86ID:4ymmJVEB そういう次世代感か…
文法エラーにも優しくどう書いても何らかの動作をすることが望ましいな。
「プログラマになろう」というサイトを開いてみるか
文法エラーにも優しくどう書いても何らかの動作をすることが望ましいな。
「プログラマになろう」というサイトを開いてみるか
663デフォルトの名無しさん
2018/03/28(水) 22:26:11.70ID:CTFOdrqh チューリング完全になろう系じゃないか
C++とHaskellの親戚みたいな言語がいっぱいだぞ
C++とHaskellの親戚みたいな言語がいっぱいだぞ
664デフォルトの名無しさん
2018/03/28(水) 23:09:42.27ID:yjlej8xR C++とHaskell の親戚ってなんだ
665デフォルトの名無しさん
2018/03/29(木) 02:16:30.07ID:Hc4kPWXM テンプレ(異世界転生or転移、チート、ハーレムあり)小説が量産されるみたいなノリで
テンプレ(手続き型or関数型、型推論あり)言語が量産されるわけか
その傾向はあるよね
テンプレ(手続き型or関数型、型推論あり)言語が量産されるわけか
その傾向はあるよね
666デフォルトの名無しさん
2018/03/29(木) 02:37:14.12ID:tc7M6rRR Fortranのサブルーチンみたいな感じで副作用は全部intent(out)の引数にのみ許すことで実質純粋手続きみたいな言語って他にある?
667デフォルトの名無しさん
2018/03/29(木) 07:56:15.41ID:plQi1Ped COBOLとかPLIとか汎用機時代の主役はだいたいそうでしょ
まさかCOBOLプログラミングは全部グローバル変数でデータのやり取りをするみたいな話を真に受けてる?
そんなの汎用機全盛時代の超規模開発において一山いくらのPG達に管理しきれるわけないだろ
コンパイル単位を分割して、サブプログラムに明示的に構造体の参照を渡す形でリンクするか、別の実行ファイルにして間に一時ファイルを挟むんだよ
Cがヘッダのincludeを覚えてしまったことで業界がダークサイドに堕ちたけど、昔のプログラムは今よりずっと疎結合で単体テストしやすかったんだよ
まさかCOBOLプログラミングは全部グローバル変数でデータのやり取りをするみたいな話を真に受けてる?
そんなの汎用機全盛時代の超規模開発において一山いくらのPG達に管理しきれるわけないだろ
コンパイル単位を分割して、サブプログラムに明示的に構造体の参照を渡す形でリンクするか、別の実行ファイルにして間に一時ファイルを挟むんだよ
Cがヘッダのincludeを覚えてしまったことで業界がダークサイドに堕ちたけど、昔のプログラムは今よりずっと疎結合で単体テストしやすかったんだよ
668デフォルトの名無しさん
2018/03/29(木) 08:11:58.91ID:xXxQyZNu グローバル変数を使うのはパソコンのbasicの時代ではないか
プロがどんな美しいコードを書こうが
ネットで検索できるオープンソース以外は知ったことではない
プロがどんな美しいコードを書こうが
ネットで検索できるオープンソース以外は知ったことではない
669デフォルトの名無しさん
2018/03/29(木) 08:13:12.45ID:9BLtoEOh 以前の俺含め今時は一時ファイルなんかダサいAPIやメッセージキューにしろなどと抜かす人が多いけど、汎用機を経験するとみんなバッチ信者になるよ
単体テストしやすく、開発規模面でもパフォーマンスス面でもスケーラブルで、運用も容易
汎用機のバッチ処理の設計は現代のプログラマ全員が学ぶべき素晴らしい技術
単体テストしやすく、開発規模面でもパフォーマンスス面でもスケーラブルで、運用も容易
汎用機のバッチ処理の設計は現代のプログラマ全員が学ぶべき素晴らしい技術
670デフォルトの名無しさん
2018/03/29(木) 08:25:29.74ID:xXxQyZNu ダサいというのは建前で、JITコンパイラ言語でそれをやりたくないのが本音ではないか
671デフォルトの名無しさん
2018/03/29(木) 08:28:00.50ID:Hc4kPWXM Linux でも良くやってるぞ
672デフォルトの名無しさん
2018/03/29(木) 09:11:24.31ID:r+OSvbaK >>669
モックライブラリがこんなに発達してるのに何言ってんだ
モックライブラリがこんなに発達してるのに何言ってんだ
673デフォルトの名無しさん
2018/03/29(木) 09:27:39.99ID:pztT5rJU674デフォルトの名無しさん
2018/03/29(木) 10:09:08.49ID:CZF8yyoA バッチ処理で何してんの?
システム運用中に流せるもの?
停止してから流すとしたら、想定時間内に終わらないように作んないといけなかったりするんじゃないの?
システム運用中に流せるもの?
停止してから流すとしたら、想定時間内に終わらないように作んないといけなかったりするんじゃないの?
675デフォルトの名無しさん
2018/03/29(木) 10:18:06.32ID:r+OSvbaK676デフォルトの名無しさん
2018/03/29(木) 10:48:51.83ID:pztT5rJU677デフォルトの名無しさん
2018/03/29(木) 11:16:09.01ID:r+OSvbaK678デフォルトの名無しさん
2018/03/29(木) 11:18:13.25ID:r+OSvbaK 結合テストでは通常おのおののモジュールが期待した結果を出力することを前提に振る舞いテストのみを行うだろ?
結果の比較なんかしてる時点で、考え方がズレてる
結果の比較なんかしてる時点で、考え方がズレてる
679デフォルトの名無しさん
2018/03/29(木) 11:26:16.78ID:r+OSvbaK てか>>674も書いてるけど、バッチ処理なんて前提条件厳しすぎるし、障害対応もめちゃくちゃ大変だろ
今どき、そんなシステムどんな業種で開発するんだ
今どき、そんなシステムどんな業種で開発するんだ
680デフォルトの名無しさん
2018/03/29(木) 16:52:27.07ID:wUGa4G8N681デフォルトの名無しさん
2018/03/29(木) 17:13:18.86ID:mREgEFij >>680
Fortranのpure subroutineのことや。まんま訳して純粋手続きって書いたけど、分かりにくいなら以後pure subroutineって書くわ
Fortranのpure subroutineのことや。まんま訳して純粋手続きって書いたけど、分かりにくいなら以後pure subroutineって書くわ
682デフォルトの名無しさん
2018/03/29(木) 17:55:25.23ID:d3FuArtt >>680
Fortran等の昔の言語には、サブルーチンと関数の区別があって
サブルーチンは副作用あり、関数は副作用なしって使い分けがあったんだよ
(その区別はAdaにもあったんだが、2012年の改定で関数もoutパラメータを持てるようになってしまった)
Fortran等の昔の言語には、サブルーチンと関数の区別があって
サブルーチンは副作用あり、関数は副作用なしって使い分けがあったんだよ
(その区別はAdaにもあったんだが、2012年の改定で関数もoutパラメータを持てるようになってしまった)
683デフォルトの名無しさん
2018/03/29(木) 17:57:17.44ID:mREgEFij684デフォルトの名無しさん
2018/03/29(木) 18:04:24.92ID:d3FuArtt >>683
あーすまん、話の流れを追いきれてなかった
あーすまん、話の流れを追いきれてなかった
685デフォルトの名無しさん
2018/03/29(木) 18:42:15.80ID:mREgEFij 言ったのと言いつつ言ったつもりになってただけだわ。謝られるとこっちが申し訳ない
686680
2018/03/29(木) 22:25:28.48ID:wUGa4G8N >>682
なるほどわかりやすい説明サンクス。
なるほどわかりやすい説明サンクス。
687デフォルトの名無しさん
2018/03/29(木) 23:19:00.18ID:fG+oYH1y 元々の問いに対する答えは持ってないけど、そもそも
引数に明示するのは返却値の代入と同じで副作用でも何でも無いような。
引数に明示するのは返却値の代入と同じで副作用でも何でも無いような。
688デフォルトの名無しさん
2018/03/30(金) 00:38:00.59ID:Cv8Wlmrv そういう、単に複数の値を返したい(outパラメータを使いたい)からというだけで
関数ではなくてサブルーチンになっている物に対して、副作用がないことを明示できるのが
Fortranのpure、という話だろう
今時なら普通にタプル返すだけだけど
関数ではなくてサブルーチンになっている物に対して、副作用がないことを明示できるのが
Fortranのpure、という話だろう
今時なら普通にタプル返すだけだけど
689デフォルトの名無しさん
2018/03/30(金) 01:00:29.06ID:Z4F/kC6f >>688
そうそうそれそれ。汲み取ってくれてありがとう
タプルで返すのもいいんだけど、大きなベクトルとか行列とかは返り値として返そうとすると確保やらコピーやらのコストがかかっちゃうから、サブルーチンって結構いいと思うんだよね
そうそうそれそれ。汲み取ってくれてありがとう
タプルで返すのもいいんだけど、大きなベクトルとか行列とかは返り値として返そうとすると確保やらコピーやらのコストがかかっちゃうから、サブルーチンって結構いいと思うんだよね
690デフォルトの名無しさん
2018/03/30(金) 03:17:21.13ID:Wx9gH+Ym でかい配列を返すとして、オブジェクトを複製せずポインター返しておしまいという言語も多いし
691デフォルトの名無しさん
2018/03/30(金) 12:08:24.66ID:27QTfa4q それのオーバーヘッドがどの程度のものなのかよく分からんで不気味に感じるんだよな。俺が勉強不足なだけかな
692デフォルトの名無しさん
2018/03/30(金) 21:17:44.20ID:S5bBhBUr ベンチマーク取ればいいだけじゃん
693デフォルトの名無しさん
2018/03/30(金) 21:25:37.94ID:gL2Crqwy まあ実際そこそこオーバーヘッドあるんだけどね
694デフォルトの名無しさん
2018/03/30(金) 21:34:29.21ID:35t2qqJ0 ベンチマークとれ
テストコードかけ
は若手にいうと凄まじく煙たがれるなw
テストコードかけ
は若手にいうと凄まじく煙たがれるなw
695デフォルトの名無しさん
2018/03/30(金) 21:37:02.92ID:lbiuvb17 毎回毎回 (N)RVO が効くかなと頭使ったりプロファイル計測したりするより
可能なら out パラメータにしたくなるよな
string だけは何故か気軽に戻り値にしてしまうが
可能なら out パラメータにしたくなるよな
string だけは何故か気軽に戻り値にしてしまうが
696デフォルトの名無しさん
2018/03/30(金) 21:53:34.74ID:Lu4RhpIc なるほど。
値型ローカル変数でスタックを確保する事が意味論的に決まってると、
返却値でコピー回避は難しいですね。
Nimでresultが予約変数になってるのも不思議だったけど、外部で確保した
領域を直接割り当てられる、みたいな理由だったりするのかな。
値型ローカル変数でスタックを確保する事が意味論的に決まってると、
返却値でコピー回避は難しいですね。
Nimでresultが予約変数になってるのも不思議だったけど、外部で確保した
領域を直接割り当てられる、みたいな理由だったりするのかな。
697デフォルトの名無しさん
2018/03/30(金) 22:05:59.64ID:lbiuvb17 c++ の場合 RVO (return value optimization) が最高に効けば
string f() { return string(“123”); }
は
void f(void * retval) { new (retval) (“123);}
のように戻り値を呼び出し側が渡した領域に直接コンストラクトするから、
void f(string &s) { s = “123”; }
よりも高速になる可能性がかなりあるんだよね
vectorでもなんでも同じだけど
どうでもいいか
string f() { return string(“123”); }
は
void f(void * retval) { new (retval) (“123);}
のように戻り値を呼び出し側が渡した領域に直接コンストラクトするから、
void f(string &s) { s = “123”; }
よりも高速になる可能性がかなりあるんだよね
vectorでもなんでも同じだけど
どうでもいいか
698デフォルトの名無しさん
2018/03/30(金) 22:50:08.41ID:MliDoeQ0 C++ならplacement newを使う手もありそうだが実際に使いこなせる気がしない
699デフォルトの名無しさん
2018/03/30(金) 22:51:45.23ID:35t2qqJ0 どうでもいいな。
そこまで速度欲しいなら他にもっと直接的なやり方がいくらでもあるだろうに。
そこまで速度欲しいなら他にもっと直接的なやり方がいくらでもあるだろうに。
700デフォルトの名無しさん
2018/03/30(金) 22:53:37.54ID:s5wfWcqZ そんな細かいことで速くなるような状況ならインライン展開されるだろ
■ このスレッドは過去ログ倉庫に格納されています
