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


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

C++相談室 part131



1 名前:デフォルトの名無しさん(ワッチョイ 3b96-ov1m) mailto:sage [2017/07/29(土) 11:28:28.97 ID:o30VDF4g0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part130
mevius.2ch.net/test/read.cgi/tech/1490917669/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

111 名前:デフォルトの名無しさん [2017/08/15(火) 21:06:58.79 ID:K8T9Hr6g0.net]
>>108
単にstd::function使えって話じゃねーの?

112 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 21:16:01.46 ID:AjDM7F7/0.net]
>>111
WindowsのウィンドウをWin32APIで出すときは、Cのインターフェースに渡さないといけない。
なので、デフォルトキャプチャにthisのアドレスコピーが入ってくれないと厳しい。

113 名前:デフォルトの名無しさん [2017/08/15(火) 21:38:42.75 ID:K8T9Hr6g0.net]
>>112
typedef bool(*Fun)();
にキャプチャしたデータを置いとく場所が無いんだからいつまでまっても実現しないよ
そういうC言語のAPIにはvoid*でユーザーデータ渡せて引数で取得できるようになってるはずなんだからそれに規則性があるのなら(例えば最初の引数がユーザーデータになってるとか)テンプレートでラッパー書くの簡単でしょ

114 名前:デフォルトの名無しさん [2017/08/15(火) 21:53:17.41 ID:+1mFvI7w0.net]
>>105
できるも何も型が違うからエラーでしょ。
ラムダ型のオブジェクトはautoでしか受けられない。

115 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 23:43:23.71 ID:AjDM7F7/0.net]
>>113
クロージャって知らない?

>>114
条件を限定することで関数ポインタに束縛できるようになりました。
まぁ今回書いたのは願望ですけど。

116 名前:デフォルトの名無しさん [2017/08/15(火) 23:55:50.09 ID:K8T9Hr6g0.net]
>>115
キャプチャしないラムダ式は関数ポインタに変換出来るだけ。束縛じゃない。

117 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 23:58:52.92 ID:AjDM7F7/0.net]
あぁ、語弊があったね。ゴメン。

118 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 06:02:38.98 ID:1FqF77kw0.net]
クロージャがどのように実装されているか調べてみることを勧める。
そしてそれをC言語の関数ポインタと互換性がある形で実装可能か考えてみるといい。

119 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 06:31:25.68 ID:3XX715Yb0.net]
>>117だよ。
駄々っ子みたいになってるが、
スレッドローカルみたいな変数を持たせれば持てないことも無いと思う。
まぁ、もうできないことはわかったので抜けます。



120 名前:デフォルトの名無しさん [2017/08/16(水) 12:58:58.53 ID:+9oABFYpM.net]
もういない宣言出てるけど、スレッドローカルでやられても困るだけだと思う。

121 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 14:20:28.94 ID:5HjXxUQN0.net]
>そしてそれをC言語の関数ポインタと互換性がある形で実装可能か考えてみるといい。
もともとC言語はλ式とか、(束縛変数がクラスのこともありえるが)クラスを構文でサポートしていないのだから
「C言語の関数ポインタと互換性がある形」と逝っただけでは何を指しているのか不明確にならざるおえない
呼び出し側がいかに煩雑な記述になろうとも、動けば互換性があるという立場をとってみるテスト、

束縛変数も毎回引数渡しすればC言語の関数ポインタと互換にできるのでは…
もはやクロージャでも何でも無いが一応動く

122 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 14:36:46.12 ID:53LlWcImr.net]
>>121
>もはやクロージャでも何でも無いが一応動く
ちなみにどうでもいいことだがラムダ式から取得した関数ポインターはC++リンケージ型なのでC関数に渡してコンパイルが通る保証が無い

123 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:18:13.19 ID:5HjXxUQN0.net]
>>122
関数ポインタ経由の関数呼び出しに関数名のマングルは関係無いのでは… []
[ここ壊れてます]

125 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:34:56.89 ID:53LlWcImr.net]
>>123
関数名だけではない
extern "C" using CF = void(); と
using CPPF = void(); は似て非なる関数型
この二つはオーバーロード可能で互換性も無い
恐らくマングリのみならず関数呼び出し規約の違いを許容する思想
ただこれを正しく実装したコンパイラーを見たことは無い

126 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:57:26.34 ID:07vifjzr0.net]
「正しく実装」すると互換性がないってこと?

127 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:59:31.27 ID:CMzvSoma0.net]
a = 0
2.times do
b = 1
3.times do
p a, b
end
end

「Rubyのしくみ」に書いてあるけど、Rubyは、Cで作ってあり、
do 〜 end のブロックは、クロージャの実装。
ラムダ・Proc も、ほとんど同じ

子のブロック内で、変数が見つからなければ、
外のスコープ(先祖の方向)へ遡って、探しに行く

128 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:07:27.94 ID:53LlWcImr.net]
>>125
そのとおり
規格では別の型と規定されている
atexitなど関数ポインターを渡す関数ではCリンケージの関数ポインターを渡すかC++リンケージの関数ポインターを渡すかで
C版atexitとC++版atexitのオーバーロード呼び分けができることになっている

clang/G++は意図的に規格に従っていないというのが痛説
Visual C++は規格より自分が正しいという意味不明な見解

129 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:16:58.46 ID:07vifjzr0.net]
や、互換性がない→別の型 は真でも 別の型→互換性がない はそうじゃないような。



130 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:31:53.97 ID:53LlWcImr.net]
そのとおりだ
暗黙の変換は禁止されていない
ただ暗黙の変換が可能というルールも存在しないので「コンパイルが通る保証が無い」と書いた

131 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 16:48:50.64 ID:07vifjzr0.net]
なるほど。
上の方で原理的に無理みたいなことが書いてあった気がしたので念のため。

132 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 18:09:49.22 ID:VpF+jov/0.net]
マングリングっていやらしいよな

133 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 18:35:35.31 ID:lmNMFTOO0.net]
そういうCのインタフェースにはたいてい関数ポインタの他にユーザデータを指定できるようになっててそこにthisなんかを入れておくものだが、 >>105 は関数オブジェクトを関数ポインタだけに変換したいと言っているわけか……

コードを動的に生成すれば不可能ではないだろうけど、色々トレードオフがあるから言語の機能にするのはどうだろうね。
ライブラリを作っても良いんだろうけど、おとなしく定石に従っておいた方が良いよ

134 名前:デフォルトの名無しさん [2017/08/16(水) 22:53:19.96 ID:VOMe5hsv0.net]
>>132
動的にコードを生成したとしてもどこにその生成したコードを置くのか、それをどうやって解放するのかが問題になるね。だったらコード生成してもしなくても同じ事。

135 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 23:14:18.00 ID:lmNMFTOO0.net]
>>133
> 動的にコードを生成したとしてもどこにその生成したコードを置くのか、それをどうやって解放するのかが問題になるね。
そうだね。

> だったらコード生成してもしなくても同じ事。
同じではないね。

136 名前:デフォルトの名無しさん [2017/08/16(水) 23:47:46.20 ID:VOMe5hsv0.net]
>>134
言い方が悪かったかな?
「どこにその生成したコードを置くのか、それをどうやって解放するのか」が解決するのであれば、コードを動的に生成しなくてもキャプチャしたデータ自体をそこに置けばいいだけ。

137 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 02:40:17.43 ID:PxJqlDv90.net]
>>135
キャプチャしたデータ(またはそれへのポインタ)をコード以外のどこかに置くとして、それは関数ポインタ一つ(コードへのポインタをとるCのAPIにそのまま渡せる形)にはならないだろ。
何の話をしてるんだ?

138 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 05:10:47.78 ID:gXVZW44o0.net]
WTL/ATLでそれっぽいことをやってるね。
hp.vector.co.jp/authors/VA022575/c/msgmap.html

139 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 08:39:28.71 ID:rYxoi1+/d.net]
MS は mfc の頃から動的コード生成でやってだ記憶がある。

this をロードして jmp みたいな小さいコードを生成して Window Proc として使う。



140 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 09:01:01.55 ID:6E9r52D/0.net]
それ動的生成だろ。コードじゃなくてインスタンス。

141 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 10:51:29.58 ID:rYxoi1+/d.net]
>>139
コードだっつーの
関数ポインタ一つしか渡せないwindowprocにthisを渡すためにそうやってるんだよ。
なんで知らんのに反論するかなー

142 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 11:04:19.66 ID:OslnP8rdM.net]
>>140
ひょっとして各インスタンスにコードが含まれてるとか思ってる? w

143 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 14:38:16.10 ID:B8c7/K0xr.net]
>>138
そのサンクらしきものはどこのセグメントに置くの?

144 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 15:30:51.11 ID:PxJqlDv90.net]
自分でソース読めば良いのに。
最近はDEPとかあるから工夫が必要そうだよね、と検索したらこんなのが出てきた。
https://support.microsoft.com/ja-jp/help/948468/applications-using-older-atl-components-may-experience-conflicts-with

145 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 16:53:07.66 ID:6E9r52D/0.net]
>>143
MFCのどのクラスに動的コード生成の実装が書いてんの?

146 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 17:43:39.99 ID:PxJqlDv90.net]
なんか頭悪そうなのがつっかかってきた

147 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 17:47:21.07 ID:fzzVUP+8d.net]
DOS時代は動的コード生成とか良く使ったな

148 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 18:37:40.30 ID:6E9r52D/0.net]
>>145
なんで急にキレるんですか?
あなたがソース読めとアドバイスしたからMFCのどのソースか聞いただけなのに。

149 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 18:53:03.48 ID:p6ewHhXhd.net]
理解しようという気持ちも理解する力もないのに質問すんなよ…
mfc ではやってたっけ?やってないんじゃないの?
というツッコミならともかく、
>>141>>142なんて思考力が虫以下だろ…どこのセグメントとかアホか
Win32 は古来よりフラットなリニアアドレスモデルだろ。
VirtualAlloc も知らなそうだし。



150 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 18:56:13.88 ID:wL10pSGX0.net]
質問だと思ってる時点で低能確定やん w
まあセグメントと聞いてセグメントレジスタしか頭に思い浮かばない

151 名前:低能はROMってろ []
[ここ壊れてます]

152 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 19:26:52.61 ID:KC+pdSEir.net]
>古来よりフラットなリニアアドレスモデル
まさかそっちのセグメントに反応するとは予想外だった

153 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 19:47:30.76 ID:6E9r52D/0.net]
>>148
だいたいあなたがMFCの頃から動的コード生成でやってたって言い出したんですよ。
だから私はMFCにあるのはインスタンスの動的生成だという指摘をしたんですよ。
そしたら、再度あなたがATLのような実装があるんだと言ったんですよ。
ソース見ろとか言う人までいるから、どのソースか聞いたらキレて、なんで言い出したおまえまでキレんだよ。アル中か?
ここは相談室だぞ。

154 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 07:51:05.48 ID:mSCO2cNh0.net]
C++を身に着けたいと思いつつも、自分でC++で何かを作るモチベーションが湧かなくって、数千行程度のC++プログラムの写経でもしようかと思ってるのですがおすすめありませんか?

SDLを使ったゲームとか興味を持ちやすくて写経しやすいかと思ってgithubとか漁ってるのですがなかなかいいのが見つからなくて悩み中です
QtみたいなC++を拡張してるのは勘弁です

155 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 08:26:03.23 ID:cQGhZEXD0.net]
あなたが何に興味を持つかなんてわかりません
C++以外の技能は?

156 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 09:19:25.85 ID:q7vLALqK0.net]
てんそるふろーでも読んでみるとか。
今を時めくフレームワークだよ。

157 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 12:28:43.04 ID:vqpgoPDk0.net]
クソだと思うやつを俺が叩き直してやるってやっていればそのうち上達してる

158 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 00:15:55.63 ID:LWJoSxYpr.net]
ぜひ叩き直してください!

159 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 10:13:11.47 ID:2Vqw9aXW0.net]
>>156
思いっきり叩いてやるからまず自分が書いたソースをどこかにアップしろ



160 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 11:23:26.49 ID:w9JmRxmV0.net]
>>157
mevius.2ch.net/test/read.cgi/tech/1434079972/20

161 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 12:05:03.25 ID:uvlmBKsV0.net]
他人に使わせる気のないコードなんていくら書いても意味ない
ソフトウェアとして公開して叩かれろ

162 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 12:07:34.16 ID:w9JmRxmV0.net]
>>159
>他人に使わせる気のないコード
どうすれば他人に使わせる気満々のコードになるのでしょうか?
ソースを公開する以外に何かしないといけないのでしょうか?

163 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 12:13:16.84 ID:YuM2o2hA0.net]
3行以内で書く、とか?

164 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 12:46:02.69 ID:dHC0uy3l0.net]
使いたくなるか否か、それを判定するソースコードを見せてくれれば一番早い
そしてそのソフトウェア自体をその判定にかけると得点はMAXになるのは当然

165 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 15:54:33.73 ID:/pRbJcl80.net]
>>160
・OSSライセンスを適用する
・有名処のOSSホスティングサービスで公開する
・ソフトウェアの目的と利用方法を理解しやすいようにドキュメント化する
・CPUやメモリなどのリソースを効率よく使用する
・汎用性が考慮された作りにする
・特殊化も考慮された作りにする
・バクが無いようにする
・こまめに更新し継続して改善されている事をアピールする

このくらいやれば他人に使わせる気満々のコードに見える

166 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 16:03:12.53 ID:w9JmRxmV0.net]
>>163
なるほど

でも >>158 をやる気満々で公開しようと思ってもアピール点が見つからないんです
「C++ だけで簡潔する多桁演算」というのは訴求ポイントとしてはどうなんでしょうか
誰かやってるかどうかはさておき、魅力的がどうかは気になります

167 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 16:04:19.60 ID:w9JmRxmV0.net]
×簡潔○完結

168 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 18:29:45.94 ID:xqVOePdU0.net]
右辺値参照がやっぱりわからん
template<class T>
void test(T&& t) {
f(std::forward<T>(t))
}
このstd::forward<T>(t)は左辺値なの?
名前持つt(左辺値)を転送してるから左辺値でいい?
f()はf(T&)を呼ぶであってる?

169 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 18:30:36.24 ID:eKyb4lix0.net]
C++11,14を勉強するのにいい本おしぇーてください。



170 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 19:12:00.26 ID:o+HPRhwX0.net]
effectiveなんちゃらフォイ

171 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 19:19:27.18 ID:eKyb4lix0.net]
もだーん?

172 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 19:52:37.70 ID:g5B0Pqab0.net]
>>166
forward<T>(t)はtをTの右辺値参照にキャストして返すんだから
f()はT&& tを受け取る(f(T&&)が呼ばれる)んじゃね?

173 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 20:21:54.83 ID:3jYO+FxO0.net]
>>166
それはforwarding referenceという機能を使ったperfect forwardingというテクニックで
右辺値参照を理解した先にあるものだ
右辺値参照の勉強中なら今は気にせず忘れておくもので
右辺値参照を理解してるなら右辺値参照とは別物として新たに勉強しなくてはならないものだ

174 名前:166 mailto:sage [2017/08/19(土) 20:37:29.73 ID:xqVOePdU0.net]
>>170
やっぱり右辺値参照へのキャストか
左辺値参照ぽい動きなんで質問してみた。ありがと
>>171
俺にはforwardはまだ早いってことスね
まずforwardなしでもう少し考えてみるわ

175 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 22:34:08.72 ID:s/7RraD70.net]
>>166
もとの test という関数が右辺値、左辺値どっちでも引数に取れる、そして std::forward でそのまま転送している
f がとる引数の型は test がとった引数と同じ。
つまり答えは実引数次第だ。

176 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 08:37:02.88 ID:5zFtpOhv0.net]
うにふぁいどこーるしんたっくすはしんだなぜだ!

177 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 08:45:14.41 ID:0H5//osor.net]
死んだ?
むしろ他の提案が出ておちつきそうだったのに
自尊心を傷つけられたと感じたハゲがゴネだして蒸し返えされたような

178 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 08:47:52.43 ID:5zFtpOhv0.net]
>>175
あんた詳しそうだな。今どうなってるの??
猛烈にほしいんだけど、サクッと入らんかな?
詳しいリンクとかあったらいただけないでしょうか。

179 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 12:02:18.26 ID:0H5//osor.net]
>>176
すまんが別の提案と間違えた。忘れて
open-std.orgのWG21のpapersの2016のP0251R0が最新ではないだろうか
何の動きもなくC++20ドラフトN4687にも入っていない



180 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 13:06:57.93 ID:FiktH31Q0.net]
3年毎に膨らんでいく仕様とか嫌だな
そらリナスさんもブチキレますわw

181 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 14:55:44.31 ID:5zFtpOhv0.net]
>>177
あぁ、情報ありがとう。やっぱ死んだままか。
手間かけさせてゴメンね。

やっぱコンセプト無いとコードサジェスト爆発するから気に入らないんだろうなぁ。。。

182 名前:デフォルトの名無しさん [2017/08/20(日) 14:59:30.48 ID:sGdhnhOm0.net]
トーバル君は単に自分のニーズに最適な言語はCと言っているだけで
他の言語がどうなろうと知ったこっちゃないでしょ
それを周りのアフォどもが色々押しつけに来ることに時折ブチキレるだけで

183 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 15:24:25.28 ID:4v9fraNU0.net]
スキルの差によって読める、読めないの差がありすぎてもはや言語としての体をなしていない。
コンパイラによってもコンパイルできる、できないの差も激しい。大きなプロジェクトを管理する側はキレて当然。
癌のように誰も望んでない仕様拡張が続けられている。

184 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 15:43:51.01 ID:Np+yxjmfM.net]
メイヤーズがこっそりc++とバイナリ互換の新言語を開発している…と信じたい

185 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 15:57:28.37 ID:uPeoc0+j0.net]
そのバイナリ互換ってなに?

C++11 以降で、役に立つ仕様とどーでもいい仕様とをわけるとすれば、何?

186 名前:デフォルトの名無しさん [2017/08/20(日) 16:05:02.55 ID:sGdhnhOm0.net]
>>181
誰も望んでいない仕様拡張?
autoは? range-based-forは? R"リテラルは?
initializer_listは? ラムダ式は? template parameter packは?
<random>は? shared_ptrは? <regex>は? <system_error>は?

187 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 16:10:46.08 ID:H9uxxda60.net]
>>181
ふつう、どの規格を使うかとか、場合によってはどの開発環境のどのバージョンを使うかまで
プロジェクトで規定するものだろう。
決めたことと違うコードを混ぜようとするメンバーがいたりしたらキレてもいいが。

188 名前:はちみつ餃子 mailto:sage [2017/08/20(日) 16:14:30.65 ID:ikEvsZIR0.net]
少なくとも個別の提案はプログラムが読みやすくなるし楽になる方向なんよね。
だからまぁ、 >>181 の言い分にある「誰も望んでない」という言説には違和感があるな。
嫌だという人がいるのはわからんでもないが、
勝手にユーザ全体の意見を代表してしまうやつは単にクズなので、
誰も耳をかさないよ。

189 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 16:17:20.06 ID:uPeoc0+j0.net]
>>154
TFか‥ソニーからも何か出たようだね



190 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 16:41:18.86 ID:gPEOCHBy0.net]
>>181
> スキルの差によって読める、読めないの差がありすぎてもはや言語としての体をなしていない。
日本語(自然言語)でも同じだろ。
馬鹿と天才でおなじ結果(コード)にしかならない、という方が問題だ。
それが天才側に揃っていれば理想的だが、実際は馬鹿側に揃うわけだし。

>>186
> 少なくとも個別の提案はプログラムが読みやすくなるし楽になる方向なんよね。
これは同意だが、問題は一部が本質的なところ(骨組み)まで変えられる程な点だろ。
現実的には>>185のようにプロジェクトリーダーが何を使うか厳密に決めればいい話で、
Linuxの場合はCだ、って言うんだから他の奴が布教しなければ丸く収まる話だ。

とはいえ通常製品の場合は「何でも出来る=何にも使えない」ではあるのだが、
C++の場合は半製品(製品を作る道具)ではあるし、
実際、機能はあった方が便利だったりするので、(使う側がどこまで使うか決めればいいだけ)
プロジェクトリーダーがしっかりしていれば、現在の貪欲な拡張方向も悪くない。
「全部の機能を使わないといけない」と信じている馬鹿と初心者は混乱するだろうけどね。

191 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 16:58:27.04 ID:zvlsjK6m0.net]
>>188
>「全部の機能を使わないといけない」と信じている馬鹿と初心者は混乱するだろうけどね。
残念ながらこういう人たちは少数派ではないのだよ。。

192 名前:デフォルトの名無しさん [2017/08/20(日) 18:05:26.65 ID:sGdhnhOm0.net]
>>188
馬鹿側に揃えるポリシーを見事なまでにやってのけた言語と言えば。。。
IDENTIFICATION DIVISION.
再帰できない、ダミーセクションできない、動的記憶ない、オラこんな村いやだ♪

で、その結果なにが起きたか。。。
エロパブの嬢がどこかで見覚えのある顔だと思ったら、うわあ(kwskはガン無視します)

193 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 18:47:40.43 ID:gPEOCHBy0.net]
>>190
COBOLの事か?だとするとあれは試行錯誤の結果だ。非難されるべき物でもない。
そもそもあの時代の言語は再帰出来ないのも多かった。Fortran77もBASICもそうだろ。

俺が思うに、第

194 名前:一世代言語(C以前)は「プログラミングとはこうあるべき」、
つまり、プログラミング自体を規定しようとしている。

COBOL:自然言語の仕様書がそのままソースになるべき
C:所詮アセンブラ
smalltalk:オブジェクト間のメッセージングこそが真の未来
Lisp:ラムダこそ真理
BASIC:馬鹿でも使えることが重要
Fortran:所詮計算機だろ

で、C以外が全部糞だったのでCで統一された。
当然第二世代言語はCの後継で、C++/Java/C#のような面子になる。
とはいえ、COBOLの方向性は間違いでもないよ。
ソース自体が可読性のあるドキュメントであるべき、ってのは今でも理想だろ。
[]
[ここ壊れてます]

195 名前:デフォルトの名無しさん [2017/08/20(日) 19:00:58.06 ID:sGdhnhOm0.net]
>>191
BASICは再帰できたぞ
FORTRANを実装できないマシン用に作られた縮小版で、
でもFORTRANより新しく作られた分、改良が図られていた
そのうちの、すべての行に行番号というのが賛否両論だった
当時初心者だった俺にとってはあれがラベルの概念の入り口になってくれたが
1桁KBのパーコンで構造化などという寝ぼけた老害たちがGOTOがどうたら言ってた
あ、嫁が呼んでるw じゃあな

196 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 19:05:55.32 ID:QoZjiUMw0.net]
>>192
BASIC で再帰ができるのは,ハドソン系ベーシック等,マイクロソフト以外の BASIC ではないか?

197 名前:デフォルトの名無しさん [2017/08/20(日) 19:39:46.63 ID:sGdhnhOm0.net]
メインフレーム用の一部の言語が再帰できないのは
当時のS/370がスタックのないアーキテクチャだったからだ
逆にBASICが実装された多くのPCではCPがにスタックを持っていた
なので全変数がグローバルなのでやりにくいができるにはできた
俺もBASICでの再帰は大道芸の域を出ることがなく
実用上の手の内に入ったのはCからだった

198 名前:デフォルトの名無しさん [2017/08/20(日) 19:45:06.60 ID:sGdhnhOm0.net]
s/CP/CPU/

CPじゃ制御プログラムだねw

199 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 21:07:10.22 ID:gPEOCHBy0.net]
>>194
> 全変数がグローバルなのでやりにくいができるにはできた
これは一般的には出来るとは言わない。
再帰が出来る=関数ローカルの変数が定義出来る、だよ。
変数共通で突っ込むのは今なら「再入」と呼ばれる物に近く、
これは言語として云々ではなく、対応する構造にするかどうかだけ。

また、CPUのスタック操作命令は高速化に寄与するだけであって、
無ければエミュレートすればいいだけだろ。
その論法だとスタック操作命令がないCPUではC言語を実装出来ないことになるが、
これはないだろ。
(S/370上のC言語実装も無いとは思えないし)



200 名前:デフォルトの名無しさん [2017/08/20(日) 21:48:19.43 ID:sGdhnhOm0.net]
>>196
そこは俺とは見解が違うね
再帰の定義はサブルーチンの中からそのサブルーチンを呼び出すことで、
それをやりやすく補助する存在は本質じゃない
なのでスタックですら再帰の本質ではない
マシンによってはサブルーチンのネストが6層までとか限定されていて
それは何かというとリンクレジスタの個数でありスタックじゃない
再入は共通変数なんか使わないし、使ったらRENTじゃなくなる
メインフレームの流儀ではいちいちGETMAINとかね
メインフレーム上のCの実装は、俺が目撃したのはS/370じゃなく
ESA/370だったけどいちいちGETMAINはしてなかった

201 名前:デフォルトの名無しさん [2017/08/20(日) 22:03:55.37 ID:sGdhnhOm0.net]
秀和の解析本にはBASICのくせにunwindがあるぞってなのが載ってたね

202 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 22:43:04.76 ID:gPEOCHBy0.net]
>>197
> 再帰の定義はサブルーチンの中からそのサブルーチンを呼び出すことで、
> それをやりやすく補助する存在は本質じゃない
これは屁理屈だ。
なぜならこの定義では、「再帰出来ない」言語なんて無いから。
再帰出来る/出来ない『言語』を議論している時点で、この定義は無意味で、
「普通に再帰を記述した時に問題なく動くか」が議論用の定義になる。
これは当然であり、自明だ。

つか、君は何が言いたかったんだ?
君の定義ならCOBOLだって再帰出来るだろ?

203 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 04:24:06.96 ID:LgR8oR3f0.net]
再帰アルゴリズムを繰り返し(ループ)アルゴリズムに変換することは普通のアーキテクチャー上では常に可能、
再帰回数に応じて新規のメモ化用領域を本質的に必要とするという重症なケースでも、最悪配列が使えればどうとでもなる、

>>197
メインフレームってグローバル変数として配列とか確保できなくて
いちいちGETMAINするしかないのスゲー

>>199
System/370で動くGCCの実装があったと聞いたわ(ただし今はSystem/390が動作下限とのこと)
再帰ができるかどうかはしらんwwwwwww

204 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 06:45:36.67 ID:OHbYaZtv0.net]
>>199
> 君の定義ならCOBOLだって再帰出来るだろ?
(当然だが当時のCOBOLは)できないよ
戻り番地を1つしか覚えてないのでネストしたら戻れなくなる

205 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 07:37:14.11 ID:7Rgof7Fhr.net]
そろそろよそでやれ

206 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 08:01:15.80 ID:7Rgof7Fhr.net]
C++17ドラフトのguaranteed copy-elisionが難しい
しかも規格が約50カ所修正されている
A a = A{}; と A a = f(); のムーブ無くすだけでどんだけ根本概念に手を入れてんだ

207 名前:デフォルトの名無しさん [2017/08/21(月) 08:10:41.60 ID:M1FJxIMj0.net]
>>199
だから見解が違っているねと言ったろ
アセンブラは再帰できるのか、できないのかという問いと、
COBOLは再帰できるのか、できないのかという問いに、
同じバックボーンで答えることが俺には出来ないが
おまえさんには出来るということだろ?

>>200
bfdではi370だね

208 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 22:52:00.36 ID:Ec7rLiDE0.net]
ついに裁判か…
https://www.bengo4.com/gyosei/n_6539/

209 名前:デフォルトの名無しさん [2017/08/21(月) 23:00:08.39 ID:M1FJxIMj0.net]
犯人扱いしておいて違ったら知らん顔という制度そのものが間違ってる
捜査協力した人には謝礼だろうが
にせ伝票で架空の謝礼費を着服なんかしてないで
やるべきことをやれっての!



210 名前:デフォルトの名無しさん [2017/08/21(月) 23:01:02.71 ID:M1FJxIMj0.net]
架空の謝礼費を内部告発した仙波さん、えらい扱い受けたよね

211 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 23:09:51.41 ID:BkgqT9qm0.net]
C++の最新仕様を追い続けられる人ってのはやっぱどこかちょっと変わり者というか
ふわふわしたものが許せないというか、なんとなく動いてるからいいや的な緩さが
許せないというか、白黒はっきりつけようぜ的な性格なのかな?って思ったw






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef