C++相談室 part131 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん(ワッチョイ 3b96-ov1m)
17/07/29 11:28:28.97 o30VDF4g0.net
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part130
スレリンク(tech板)
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
スレリンク(tech板)
■長いソースを貼るときはここへ。■
 URLリンク(codepad.org)
 URLリンク(ideone.com)
[C++ FAQ]
URLリンク(isocpp.org)
URLリンク(www.bohyoh.com) (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

2:デフォルトの名無しさん (ワッチョイ 3796-ov1m)
17/07/29 11:31:44.83 o30VDF4g0.net
C/C++室のURLはこちらが正しいです。ごめんなさい。
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net
スレリンク(tech板)

3:デフォルトの名無しさん (ワッチョイ 6a90-qWRz)
17/07/29 12:46:26.94 Gw88XuqA0.net
2 名前:デフォルトの名無しさん (ワッチョイ bf54-lR6P)[sage] 投稿日:2017/03/31(金) 16:52:18.52 ID:CoeIAoH10
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----

4:デフォルトの名無しさん (ワッチョイ f396-ZO1u)
17/07/29 17:38:08.78 O6R2q/bm0.net
うむごくろう

5:デフォルトの名無しさん (ワッチョイ 738e-PRKf)
17/07/29 17:57:29.77 mj0H/MXI0.net
>>1
乙TL

6:デフォルトの名無しさん (オッペケ Srb3-Ibwl)
17/07/29 22:23:56.70 E0esoNX5r.net
日付がミスリーディングなクソレスを貼る>>3は無能

7:デフォルトの名無しさん (スップ Sd2a-pcXC)
17/07/30 02:31:41.53 xlcIQQjmd.net
>>1
CからC++の学習に進もうと思ってるんだけど、皆さんオススメの書籍とかWebとか有ったら教えてちょ

8:デフォルトの名無しさん (ワッチョイ 3bb4-749T)
17/07/30 06:50:23.38 qWNYkf/a0.net
やめとけやめとけ
Cでリスト構造あたりがすらすら書けるようになったならC#にしとけ。
生産性あがらずそっぽ向かれてるのに、
ムーブコンストラクタとか、コード増えて、さらに生産性低下。
完全にオナニー規格で、自分でとどめ刺した。
まるで民進党の蓮ポ

9:デフォルトの名無しさん (ワッチョイ 3bb4-749T)
17/07/30 07:41:41.24 qWNYkf/a0.net
>>7
URLリンク(is.muni.cz)
URLリンク(freepdf-books.com)
URLリンク(www.open-std.org)
URLリンク(www.open-std.org)
URLリンク(msdn.microsoft.com)

10:デフォルトの名無しさん (ワッチョイ 3bb4-749T)
17/07/30 07:46:18.32 qWNYkf/a0.net
11と14のドラフトあげてしもた
Straustrap 4thと14でいいと思う
URLリンク(www.open-std.org)

11:デフォルトの名無しさん (スップ Sd8a-pcXC)
17/07/30 10:19:14.54 tzTloLFVd.net
ツンデレID:qWNYkf/a0さんありがとw
だがしかし、原文のまま進めるには10倍くらい労力使いそうなんで、出来たら日本語でお願いします!

12:デフォルトの名無しさん (ワッチョイ 6a9f-ns/O)
17/07/30 10:30:55.09 HMlHttTQ0.net
CプログラマのためのC++入門って本が解りやすかった

13:デフォルトの名無しさん (ワッチョイ 3bb4-749T)
17/07/30 10:57:13.10 qWNYkf/a0.net
プログラミング言語C++と言いたいところだが、C++11で止まってるとこらがもうね。
vol3まで原書と邦訳つきあってきたけど、もう気力も失せたわ。
可能性を期待してたの90年代前半 ANSI時代までだな。
電話帳より分厚い言語解説本て。多分完全理解した頃エンジニア生命終わってるわ

14:デフォルトの名無しさん (ワッチョイ 6a9f-ns/O)
17/07/30 11:11:05.70 HMlHttTQ0.net
最新の情報はテメェで調べりゃいいんでねぇの?
まず基本という基礎固めが重要だろ
Cプログラマでやってきた奴に総てを全うさせるのは荷がおもすぎるだろ

15:デフォルトの名無しさん (ワッチョイ 3b11-Ibwl)
17/07/30 12:15:54.41 Csv1BA330.net
今から学ぼうとする人に規格のドラフトとかどんな苦行だよ
やっぱりロベールしかないな

16:デフォルトの名無しさん (スップ Sd8a-pcXC)
17/07/30 12:20:04.23 tzTloLFVd.net
( ̄▽ ̄;)

17:デフォルトの名無しさん (ワッチョイ 6a9f-ns/O)
17/07/30 12:26:14.76 HMlHttTQ0.net
URLリンク(www.saiensu.co.jp)
みっけた。コレだわ。
コレ読んだあとにSTLの分厚いの読むと解りやすかった。

18:デフォルトの名無しさん (ワッチョイ 7b7f-V1Wy)
17/07/30 12:30:36.64 IhAKIxVt0.net
サイエンス社ってそんなドメインだったんだw

19:デフォルトの名無しさん (ドコグロ MM22-gqKx)
17/07/30 12:59:03.24 Y5XJTDyYM.net
コピーライト表記が SAIENSU-SHA Co., Ltd. だからね

20:デフォルトの名無しさん (ワッチョイ 97e3-ZO1u)
17/07/30 13:30:09.73 QmN4gyGx0.net
正しい綴りにすると、別の企業サイトに行ってしまった

21:デフォルトの名無しさん (ワッチョイ 2a15-ZO1u)
17/07/30 13:33:44.51 NhWYDB7J0.net
>>7
「詳説C++ 第2版」がオススメ
URLリンク(amzn.asia)
ただ、 C++03 を前提にした範囲のことしか書いてない (出版年が 2005 年だから仕方がないけど) ので、
差分はウェブ上のリファレンスで補うと良し。
URLリンク(cpprefjp.github.io)

22:デフォルトの名無しさん (スップ Sd8a-pcXC)
17/07/30 14:30:07.95 tzTloLFVd.net
>>17
>>21
なるほど。
どちらも古そうな本ですが、参考にさせていただきます。有難う御座いました。

23:デフォルトの名無しさん
17/08/02 05:09:58.76 QkMqJWKd0.net
>>17
一から勉強する初心者に、
使いにくいだけの過去規格の遺物勧めて何したいんだ。
C++1xとANSI時代のC++は別物だ

24:デフォルトの名無しさん
17/08/02 08:31:16.93 j5kUV6O90.net
でもC/C++は互換性をかなり重視してくれているから、時系列に沿って勉強しても無駄ではない気がする。
っていうか、いきなりC++14勉強するのは辛いんじゃねって気がする。

25:デフォルトの名無しさん
17/08/02 09:22:34.98 dMb9Yx4tM.net
便利機能無しで学習するのはストレス溜まる。
わざわざそんな縛りプレーすることないわ。

26:デフォルトの名無しさん
17/08/02 09:30:57.66 TRQYVkPNd.net
常識とされていたことも変化しているからね

27:デフォルトの名無しさん
17/08/02 10:47:19.91 5aiRdv7G0.net
便利過ぎても自活力落ちるけどな

28:デフォルトの名無しさん
17/08/02 11:37:56.91 Mxrfj49o0.net
Effective C++ 第3版持っている人に質問
33項に書いてある「仕事を送る関数」なんだが
private継承しているのに、なんで派生クラスで基底クラスの関数を呼び出せるの?
inline関数ってところが関係しているのだろうか

29:デフォルトの名無しさん
17/08/02 11:39:16.93 Mxrfj49o0.net
ごめん補足
質問の箇所は33項 p.169ね
よろしくお願いします

30:デフォルトの名無しさん
17/08/02 12:22:32.52 SX9kgwib0.net
なんでもなにもprivate継承した基底クラスのpublicメンバは
派生クラスのprivateメンバ的扱いになるので
派生クラスの中では自由にアクセスできる

31:デフォルトの名無しさん
17/08/02 15:29:32.86 Mxrfj49o0.net
>>30
マジか……恥ずかしながらそんな基本的なこともわかってなかった
ありがとうございます

32:デフォルトの名無しさん
17/08/02 19:58:27.29 uVXFZ8FT0.net
穴を掘って入ろう

33:デフォルトの名無しさん
17/08/02 23:27:31.39 mLUoAaJZM.net
private基底とメンバ変数、機能的な違いはあるのかしらん?

34:デフォルトの名無しさん
17/08/02 23:30:18.47 wZt34zOG0.net
俺もprivateとpublicって積的関係かと思ってた
private継承とか使わんからな

35:はちみつ餃子
17/08/02 23:30:19.78 84D7BovY0.net
基底クラスへは問答無用でキャストできる。

36:はちみつ餃子
17/08/02 23:32:57.07 84D7BovY0.net
>>34
private 継承している場合は基底にキャストできない。
スライシングを起こしたくない場合には private 継承した上で
一部のメンバを using で公開するというようなテクニックもある。

37:デフォルトの名無しさん
17/08/02 23:34:00.01 mLUoAaJZM.net
おお、スライシング問題抱える訳ですな。使わないのが無難か……

38:デフォルトの名無しさん
17/08/02 23:40:10.88 mLUoAaJZM.net
あ、キャストできないが正解か。
private基底は実装を楽する手段かね。

39:デフォルトの名無しさん
17/08/02 23:42:51.57 wZt34zOG0.net
つまり例えばstd::vectorクラスを継承したクラスを作って
間違ってアップキャスト扠せたくない場合なんかに使うイメージか

40:デフォルトの名無しさん
17/08/03 01:39:28.66 3NxHKcnN0.net
vector自身をprivateにしたい場合はprivate継承
vectorのメンバを露出させたい場合はprotected継承

41:デフォルトの名無しさん
17/08/03 12:34:54.88 NztkOdZ3M.net
セマンティクス的には、
public継承はis-a関係
private継承はhas-a関係

42:デフォルトの名無しさん
17/08/03 12:53:23.95 tXFHDIDud.net
外から見たら、ね

43:デフォルトの名無しさん
17/08/03 22:13:12.27 YAnw1OKB0.net
リンゴとパイナップルとペンが入ったフルーツバスケットは
リンゴクラスとパイナップルクラスとペンクラスの多重private継承なんや

44:デフォルトの名無しさん
17/08/04 23:30:18.50 W4109686r.net
「private継承」とい言葉を見るとC++17ドラフトのUNKOなライブラリ設計しか思い浮かばない

45:デフォルトの名無しさん
17/08/05 06:26:48.70 IjGvtKjI0.net
メンバも含めてprivateなものの用途を詮索してもしょうがない

46:デフォルトの名無しさん
17/08/05 08:18:04.82 Oj6J0tUu0.net
誰か個人資産をpublicで公開してくれないかなぁ

47:デフォルトの名無しさん
17/08/05 10:59:21.66 q0G0ffZoM.net
2000年頃貯めた資産なので引き出せる紙幣はコピーだがよいか?

48:デフォルトの名無しさん
17/08/06 11:38:12.92 57DyNeACa.net
>>46
あなたのその文字も立派な個人資産。
ここに書いた瞬間2chに帰属するが。

49:デフォルトの名無しさん
17/08/06 19:15:12.69 /2i5R4CKr.net
このスレのレスで資産と呼べるのは
PostMessageでメモリ不足を検知するノウハウと
プライベートメンバーをアクセスする技くらいのものだ

50:デフォルトの名無しさん
17/08/06 19:28:38.68 OFkcQ32C0.net
>>49
>プライベートメンバーをアクセスする技くらいのものだ
え,それって private メンバのアドレスを返して外からアクセスするってやつ?

51:デフォルトの名無しさん
17/08/06 19:31:25.78 7dbJmn2Z0.net
違うだろ
それにネタ元はここじゃないし

52:デフォルトの名無しさん
17/08/06 20:55:29.92 BHhmDaJC0.net
>>50
privateをpublicでdefineするやつじゃ?

53:デフォルトの名無しさん
17/08/06 21:20:19.11 /2i5R4CKr.net
>>50
微妙に違うような
アクセス制御が適用されない文脈でメンバーへのポインターやstatic変数のポインターを取得してアクセスする手法

54:デフォルトの名無しさん
17/08/07 16:40:58.08 Y4YBisBB0.net
>>50 >>53
スレリンク(tech板:22番)

55:デフォルトの名無しさん
17/08/07 22:34:19.58 MakITfYKr.net
privateをpublicでdefineするのは潔くてカッコいいが
>>54は全てが糞すぎる

56:デフォルトの名無しさん
17/08/07 22:43:25.92 qpBf+1aM0.net
しかも既存のクラスに普通に手入れてるしね

57:デフォルトの名無しさん
17/08/08 07:52:39.36 CWtfXRt70.net
>>55
具体的に

58:デフォルトの名無しさん
17/08/08 08:21:06.59 RV4q7wpsr.net
>>57
うむ、こんなところだろう
1.既存のクラスに普通に手入れている
2.それは違うと>>53で言っているのに投下されるアスペなレス
3.privateな変数にアクセスするかと思いきや、privateな変数を出力するprivateな関数を呼び出すという意味の無い構成
4.deleteを使用するUNKOなコード
5.newを使用する残念なコード
6.コードへのリンクを投下するのでなくクソスレを経由するクソレス
7.例外安全でない
8.非staticにする必要性が感じられない
9.「(hoge->*(hoge->g()))();」というブザマな呼び出し方

59:デフォルトの名無しさん
17/08/09 18:36:43.63 UcwPIhci0.net
>>58
URLリンク(ideone.com)
改善:3, 4, 5, 6, 7
保留:1, 2, 8, 9

60:デフォルトの名無しさん
17/08/09 18:40:37.13 hewgQardr.net
いやそこは無視するだろ普通
>hoge.get()->*(hoge->g2()) = 54321;
もう何が何だか…

61:C言語ますたー《ますたー軍団(常時募集)の長》
17/08/09 18:43:38.11 s1XZJ5NhM.net
読んでないけどg()は関数ポインタを返す関数?
設計からしてダメだろ

62:デフォルトの名無しさん
17/08/09 18:53:35.78 VsUePcYe0.net
既存のクラスに手を入れてる時点でキモイ。
それならもっとやりようあるでしょ。

63:デフォルトの名無しさん
17/08/09 19:13:08.58 UcwPIhci0.net
>>61
メンバのオフセット(たぶん) ->* ::* 使用前提のやつ
>>59 は一箇所どうにもこうにもならないので放置している部分がある
ともかく笑いのネタというより他にない

64:デフォルトの名無しさん
17/08/10 10:59:10.70 vqPWBCRZr.net
>>63
遠慮せずともじゃんじゃんプライベートにアクセスしてよいぞ
URLリンク(ideone.com)

65:はちみつ餃子
17/08/10 11:21:25.23 eseR3mB40.net
>>63
オフセットして実装するのが普通だと思うけど、メンバ変数へのポインタがオフセットで実装されるとは決まってないんじゃないの?

66:デフォルトの名無しさん
17/08/11 13:08:18.43 rA3728Ge0.net
C++の場合クラス(およびその基底クラス)内のメンバは全部ヘッダファイルを辿っていけばワカルのだから
まず全く同じ内容のヘッダファイルのコピーを作り、
ファイル名を適当に変えて、多重インクルード箇所もコピーしたもので閉じるように変更して、
privateやprotectedを全部publicにして、
クラスの名前をFoo→Foo2とか改変して、
仮想関数は適当に空の定義でもつけて、
 ((Foo2*)p)->(Fooのデータメンバ)
式にキャストしてアクセスすればデータメンバと仮想関数については問題なくアクセスできる
(ODR違反は都市伝説なので事実上これで動く
 だいたいprivate破りを意図している時点で実コードレベルで影響しない規約とか気にしても仕方が無い

67:デフォルトの名無しさん
17/08/11 13:10:51.21 rA3728Ge0.net
Foo2の仮想関数が空ではないか、というのは動作上問題にならない
vtableのしくみがわかっているならワカル以下略
一方非仮想関数の方はちょっとうまい方法が思いつかない…
private属性のメンバ関数のアドレスがとれれば勝つるのだが

68:デフォルトの名無しさん
17/08/11 15:28:00.96 CTzRRQx/0.net
class Base {
public:
Base() {};
virtual void func() {};
};
class Sub: public Base {
public:
Sub() {};
virtual void func() {};
};
Sub a();
std::vector<Base> b;
b.push_back(a);
b[0].func();
これだと継承前のBaseのfuncが実行されてSubのfuncが実行されないんですが
Subのfuncを実行するにはどうしたらいいですか

69:デフォルトの名無しさん
17/08/11 15:45:01.75 GPxw37uF0.net
そりゃpushするときにBaseへの暗黙の型変換かかるからダメっしょ
ポインタつかえよBaseの

70:デフォルトの名無しさん
17/08/11 15:47:46.79 L0uHlCp20.net
>>68
そのコード本当に動く?
本質じゃなくて申し訳ないが、そのまま追試出来るコードじゃないと…
ちなみに質問の回答はスライスな。

71:デフォルトの名無しさん
17/08/11 15:57:28.65 GPxw37uF0.net
おかしいな、確かに
コピーコンストラクタもないのにコンパイラ通るのかコレ

72:デフォルトの名無しさん
17/08/11 16:00:31.30 L0uHlCp20.net
コピコンは省略可能だよー。

73:デフォルトの名無しさん
17/08/11 16:11:31.54 CTzRRQx/0.net
>>69
ありがとうございます
ポインタにすることで解決しました
>>70-71
動かしてるコードを簡略化したのでもしかしたら動かないかもしれないです

74:デフォルトの名無しさん
17/08/11 16:51:11.96 +GdUPlS/r.net
「本当に動く? (中略) そのまま追試出来るコードじゃないと…」
 ↓
「もしかしたら動かないかもしれない」
これがアスペというやつだな

75:デフォルトの名無しさん
17/08/11 16:54:58.31 mfxycmdp0.net
会話としては成り立ってる

76:デフォルトの名無しさん
17/08/11 17:09:12.83 MFH9oRFs0.net
この言語はどこの業務で使われてるの?
組み込み・制御はC++使ってますとか言いながら大体これCじゃん!だから論外として

77:デフォルトの名無しさん
17/08/11 17:11:30.49 Ca8C76qb0.net
gcc が c++ で書き直された、という話はあったな

78:デフォルトの名無しさん
17/08/11 17:29:47.32 fw1fdXf30.net
>>76
URLリンク(github.com)

79:デフォルトの名無しさん
17/08/11 18:02:24.77 bpB/tg4h0.net
Webブラウザとかゲームとか

80:はちみつ餃子
17/08/11 18:34:36.55 eZ0/1svY0.net
>>76
Better C として使ってもええんやで

81:デフォルトの名無しさん
17/08/11 19:29:34.92 rA3728Ge0.net
>>76
Simulaの置き換え

82:デフォルトの名無しさん
17/08/11 20:50:37.74 W25jNYVm0.net
C言語としてg++使ってる

83:デフォルトの名無しさん
17/08/11 21:45:37.12 U5fbDsCj0.net
ウチじゃモータ制御に使ってるな

84:デフォルトの名無しさん
17/08/12 16:56:14.99 srjAo6Ap0.net
質問です。
宣言は、全ての要素に対して必要なのですか?
n = a+b:
という行があるとすると、
#include <n>
#include <a>
#include <b>
が必要なのですか?
とても初心者なので、なにとぞ教えてください。
お願いします。

85:デフォルトの名無しさん
17/08/12 17:13:58.34 AoA5DjYT0.net
意図がわかりにくいがその場合だったら#include <n> だけあればいいんじゃないの?
そうでないとしたらinclude順は#include <a>と#include <b>を先に書くべき。

86:
17/08/12 17:17:09.90 lBXwiOpA0.net
>>84
#include は宣言じゃない
多分
int n;
int a:;
int b;
のことじゃないかな?

87:デフォルトの名無しさん
17/08/12 17:21:05.88 Yn7dYYpz0.net
>84
#include
というのは、外部にあるファイルを読み込め
という命令なので、変数の宣言ではありません。
#include <a>
というのは、aというファイルを読み込めという
命令です。
n=a+b
という場合には、この式の前に、n, a, bという
変数の型を宣言する必要があります。
全てが整数ならば、
int a, b, n;
単精度実数ならば
float a, b, n;
と、倍精度実数ならば、
double a, b, n;
と書きます。
と変数の型を宣言します。
このことは、基本の基本なので、解説書の最初に書いてあるはずです。
解説書をよく読んで、その上で分からないことを
質問しましょう

88:84
17/08/12 17:27:53.44 srjAo6Ap0.net
>>85-87様
googleだけの独学なので、とても勉強になりました。
とても、ありがとうございました。

89:デフォルトの名無しさん
17/08/12 17:28:31.16 AoA5DjYT0.net
文字通りの意味だったのかよ

90:デフォルトの名無しさん
17/08/12 18:07:41.60 B05a5g6/r.net
>#include <a>
>というのは、aというファイルを読み込めという命令です。
んなこたーない

91:デフォルトの名無しさん
17/08/12 18:16:01.28 B05a5g6/r.net
>>87
>この式の前に、n, a, bという変数の型を宣言する必要があります
それは規格のどこに書いてあるのですか?

92:デフォルトの名無しさん
17/08/12 19:18:12.75 qkSSCQjy0.net
DEFINEもincludeも本質的にやってることは同じだしファイルを読み込めは間違ってるな

93:デフォルトの名無しさん
17/08/12 19:23:05.89 6XNTCj+p0.net
includeがファイルをその位置に展開しろっていうのはあってると思うけど、何が不満なんだ?
defineはただの文字列置換。

94:デフォルトの名無しさん
17/08/12 21:29:22.94 B05a5g6/r.net
× #include <a>というのは、aというファイルを読み込めという命令
○ #include <a>というのは、aというヘッダーを読み込めという命令
○ #include <a>というのは、#include <a>をaというヘッダーの内容で置き換えろという命令

95:デフォルトの名無しさん
17/08/12 22:23:06.24 AoA5DjYT0.net
またヘッダー警察が来るぞ

96:デフォルトの名無しさん
17/08/12 23:15:33.63 wV3c1N0ta.net
>>84のレベルの人に説明するのに、厳密な用語をどうこういうより、>>87レベルの説明の方が適切だろう

97:デフォルトの名無しさん
17/08/12 23:26:56.30 IKUtZym10.net
仕様だとヘッダーとソースファイルは区別されてるみたいだけど
#includeはヘッダーとソースファイルのどちらも扱うから
二つを纏めてファイルと呼称しているとしたら>>94は間違いじゃないの?

98:デフォルトの名無しさん
17/08/13 06:37:43.35 /9jKf3580.net
「C++の#includeがファイルを読み込むとは限らない」
という説明を何かで読んだ記憶がある。
例えばソースに #include <hoge.h> と書いてあっても
hoge.h というファイルの実体は存在しなくて、
コンパイラが内部的なスイッチとして使っても構わない、みたいな話。
実際にそういう動作をするコンパイラは知らんけど。

99:デフォルトの名無しさん
17/08/13 07:15:34.96 CgemGkhrr.net
>>97
もとの>>87は#includeでなく#include <>なのだが
>二つを纏めてファイルと呼称しているとしたら
いきなり自分の結論を大前提に置かれても
まあこのへんはC++17で少し変わるだろう

100:デフォルトの名無しさん
17/08/13 11:33:24.03 P6N6OiXF0.net
CSVファイルを読み込むときに#include使うことある

101:デフォルトの名無しさん
17/08/13 20:57:49.74 R0DVX6mKM.net
てか、学ぶなら1冊くらい本買えよ
Googleで独学とか効率悪すぎる

102:はちみつ餃子
17/08/14 00:14:24.38 N3oVMbyu0.net
軸がわからないと自分が何をわかってないかすらわからないからクソみてぇな思い込みで検索して見当違いの方向に突っ込んでしまうから、
そうなってから質問しても質問が見当違いすぎて回答しようがないことはよくある。

103:デフォルトの名無しさん
17/08/15 18:55:44.72 Q70B1fQS0.net
>>102
いっちょコンパイラを書いてやろうと思っているんだが何をやっていいかわからない…
手元の教科書は必死に正規表現やらチューリングマシンやらを追求している…
これってコンパイラ本だと思って買ったのだが、どうも本を間違えてしまったらしい
軸がわからないと悲惨ですね

104:デフォルトの名無しさん
17/08/15 19:28:20.65 GzAS59pw0.net
>>103
スゲー古い本だけどこの辺りを参考にするとか
URLリンク(www.amazon.co.jp)

105:デフォルトの名無しさん
17/08/15 19:38:22.48 AjDM7F7/0.net
URLリンク(ideone.com)
これ、C++17でできるようになるんだっけ?どうだっけ?

106:デフォルトの名無しさん
17/08/15 19:51:33.69 nijih07Br.net
少なくとも似たケースを支援する機能は追加されるがそのままでは通らない
[*this]

107:デフォルトの名無しさん
17/08/15 19:53:35.30 nijih07Br.net
と思ってよく読んだら関係無かったしTは生存期間内だった
つまりC++17では無理

108:デフォルトの名無しさん
17/08/15 19:56:48.90 AjDM7F7/0.net
そうなんだ。ありがとう。
またウインドウを出せないのか。
綺麗なウインドウクラスを書く日は遠い・・・。

109:デフォルトの名無しさん
17/08/15 19:59:11.57 vSz72Ekj0.net
>>103
LLVMのtutorialでもやってみたら? (↓の一番上)
URLリンク(llvm.org)
たしか日本語訳もあったと思うけど、内容が古いので注意。

110:デフォルトの名無しさん
17/08/15 20:03:18.47 BftRsONU0.net
>>103
yacc, lex (または bison, flex) とかは知ってる?
使うと構文解析が楽になるよ。

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

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

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

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

115:デフォルトの名無しさん
17/08/15 23:43:23.71 AjDM7F7/0.net
>>113
クロージャって知らない?
>>114
条件を限定することで関数ポインタに束縛できるようになりました。
まぁ今回書いたのは願望ですけど。

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

117:デフォルトの名無しさん
17/08/15 23:58:52.92 AjDM7F7/0.net
あぁ、語弊があったね。ゴメン。

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

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

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

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

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

123:デフォルトの名無しさん
17/08/16 15:18:13.19 5HjXxUQN0.net
>>122 関数ポインタ経由の関数呼び出しに関数名のマングルは関係無いのでは…



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

126:デフォルトの名無しさん
17/08/16 15:57:26.34 07vifjzr0.net
「正しく実装」すると互換性がないってこと?

127:デフォルトの名無しさん
17/08/16 15:59:31.27 CMzvSoma0.net
a = 0
2.times do
b = 1
3.times do
p a, b
end
end
「Rubyのしくみ」に書いてあるけど、Rubyは、Cで作ってあり、
do 〜 end のブロックは、クロージャの実装。
ラムダ・Proc も、ほとんど同じ
子のブロック内で、変数が見つからなければ、
外のスコープ(先祖の方向)へ遡って、探しに行く

128:デフォルトの名無しさん
17/08/16 16:07:27.94 53LlWcImr.net
>>125
そのとおり
規格では別の型と規定されている
atexitなど関数ポインターを渡す関数ではCリンケージの関数ポインターを渡すかC++リンケージの関数ポインターを渡すかで
C版atexitとC++版atexitのオーバーロード呼び分けができることになっている
clang/G++は意図的に規格に従っていないというのが痛説
Visual C++は規格より自分が正しいという意味不明な見解

129:デフォルトの名無しさん
17/08/16 16:16:58.46 07vifjzr0.net
や、互換性がない→別の型 は真でも 別の型→互換性がない はそうじゃないような。

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

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

132:デフォルトの名無しさん
17/08/16 18:09:49.22 VpF+jov/0.net
マングリングっていやらしいよな

133:デフォルトの名無しさん
17/08/16 18:35:35.31 lmNMFTOO0.net
そういうCのインタフェースにはたいてい関数ポインタの他にユーザデータを指定できるようになっててそこにthisなんかを入れておくものだが、 >>105 は関数オブジェクトを関数ポインタだけに変換したいと言っているわけか……
コードを動的に生成すれば不可能ではないだろうけど、色々トレードオフがあるから言語の機能にするのはどうだろうね。
ライブラリを作っても良いんだろうけど、おとなしく定石に従っておいた方が良いよ

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

135:デフォルトの名無しさん
17/08/16 23:14:18.00 lmNMFTOO0.net
>>133
> 動的にコードを生成したとしてもどこにその生成したコードを置くのか、それをどうやって解放するのかが問題になるね。
そうだね。
> だったらコード生成してもしなくても同じ事。
同じではないね。

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

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

138:デフォルトの名無しさん
17/08/17 05:10:47.78 gXVZW44o0.net
WTL/ATLでそれっぽいことをやってるね。
URLリンク(hp.vector.co.jp)

139:デフォルトの名無しさん
17/08/17 08:39:28.71 rYxoi1+/d.net
MS は mfc の頃から動的コード生成でやってだ記憶がある。
this をロードして jmp みたいな小さいコードを生成して Window Proc として使う。

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

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

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

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

144:デフォルトの名無しさん
17/08/17 15:30:51.11 PxJqlDv90.net
自分でソース読めば良いのに。
最近はDEPとかあるから工夫が必要そうだよね、と検索したらこんなのが出てきた。
URLリンク(support.microsoft.com)

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

146:デフォルトの名無しさん
17/08/17 17:43:39.99 PxJqlDv90.net
なんか頭悪そうなのがつっかかってきた

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

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

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

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


151:低能はROMってろ



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

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

154:デフォルトの名無しさん
17/08/18 07:51:05.48 mSCO2cNh0.net
C++を身に着けたいと思いつつも、自分でC++で何かを作るモチベーションが湧かなくって、数千行程度のC++プログラムの写経でもしようかと思ってるのですがおすすめありませんか?
SDLを使ったゲームとか興味を持ちやすくて写経しやすいかと思ってgithubとか漁ってるのですがなかなかいいのが見つからなくて悩み中です
QtみたいなC++を拡張してるのは勘弁です

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

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

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

158:デフォルトの名無しさん
17/08/19 00:15:55.63 LWJoSxYpr.net
ぜひ叩き直してください!

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

160:デフォルトの名無しさん
17/08/19 11:23:26.49 w9JmRxmV0.net
>>157
スレリンク(tech板:20番)

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

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

163:デフォルトの名無しさん
17/08/19 12:13:16.84 YuM2o2hA0.net
3行以内で書く、とか?

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

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

166:デフォルトの名無しさん
17/08/19 16:03:12.53 w9JmRxmV0.net
>>163
なるほど
でも >>158 をやる気満々で公開しようと思ってもアピール点が見つからないんです
「C++ だけで簡潔する多桁演算」というのは訴求ポイントとしてはどうなんでしょうか
誰かやってるかどうかはさておき、魅力的がどうかは気になります

167:デフォルトの名無しさん
17/08/19 16:04:19.60 w9JmRxmV0.net
×簡潔○完結

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

169:デフォルトの名無しさん
17/08/19 18:30:36.24 eKyb4lix0.net
C++11,14を勉強するのにいい本おしぇーてください。

170:デフォルトの名無しさん
17/08/19 19:12:00.26 o+HPRhwX0.net
effectiveなんちゃらフォイ

171:デフォルトの名無しさん
17/08/19 19:19:27.18 eKyb4lix0.net
もだーん?

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

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

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

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

176:デフォルトの名無しさん
17/08/20 08:37:02.88 5zFtpOhv0.net
うにふぁいどこーるしんたっくすはしんだなぜだ!

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

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

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

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

181:デフォルトの名無しさん
17/08/20 14:55:44.31 5zFtpOhv0.net
>>177
あぁ、情報ありがとう。やっぱ死んだままか。
手間かけさせてゴメンね。
やっぱコンセプト無いとコードサジェスト爆発するから気に入らないんだろうなぁ。。。

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

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

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

185:デフォルトの名無しさん
17/08/20 15:57:28.37 uPeoc0+j0.net
そのバイナリ互換ってなに?
C++11 以降で、役に立つ仕様とどーでもいい仕様とをわけるとすれば、何?

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

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

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

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

190:デフォルトの名無しさん
17/08/20 16:41:18.86 gPEOCHBy0.net
>>181
> スキルの差によって読める、読めないの差がありすぎてもはや言語としての体をなしていない。
日本語(自然言語)でも同じだろ。
馬鹿と天才でおなじ結果(コード)にしかならない、という方が問題だ。
それが天才側に揃っていれば理想的だが、実際は馬鹿側に揃うわけだし。
>>186
> 少なくとも個別の提案はプログラムが読みやすくなるし楽になる方向なんよね。
これは同意だが、問題は一部が本質的なところ(骨組み)まで変えられる程な点だろ。
現実的には>>185のようにプロジェクトリーダーが何を使うか厳密に決めればいい話で、
Linuxの場合はCだ、って言うんだから他の奴が布教しなければ丸く収まる話だ。
とはいえ通常製品の場合は「何でも出来る=何にも使えない」ではあるのだが、
C++の場合は半製品(製品を作る道具)ではあるし、
実際、機能はあった方が便利だったりするので、(使う側がどこまで使うか決めればいいだけ)
プロジェクトリーダーがしっかりしていれば、現在の貪欲な拡張方向も悪くない。
「全部の機能を使わないといけない」と信じている馬鹿と初心者は混乱するだろうけどね。

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

192:デフォルトの名無しさん
17/08/20 18:05:26.65 sGdhnhOm0.net
>>188
馬鹿側に揃えるポリシーを見事なまでにやってのけた言語と言えば。。。
IDENTIFICATION DIVISION.
再帰できない、ダミーセクションできない、動的記憶ない、オラこんな村いやだ♪
で、その結果なにが起きたか。。。
エロパブの嬢がどこかで見覚えのある顔だと思ったら、うわあ(kwskはガン無視します)

193:デフォルトの名無しさん
17/08/20 18:47:40.43 gPEOCHBy0.net
>>190
COBOLの事か?だとするとあれは試行錯誤の結果だ。非難されるべき物でもない。
そもそもあの時代の言語は再帰出来ないのも多かった。Fortran77もBASICもそうだろ。
俺が思うに、第


194:一世代言語(C以前)は「プログラミングとはこうあるべき」、 つまり、プログラミング自体を規定しようとしている。 COBOL:自然言語の仕様書がそのままソースになるべき C:所詮アセンブラ smalltalk:オブジェクト間のメッセージングこそが真の未来 Lisp:ラムダこそ真理 BASIC:馬鹿でも使えることが重要 Fortran:所詮計算機だろ で、C以外が全部糞だったのでCで統一された。 当然第二世代言語はCの後継で、C++/Java/C#のような面子になる。 とはいえ、COBOLの方向性は間違いでもないよ。 ソース自体が可読性のあるドキュメントであるべき、ってのは今でも理想だろ。



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


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

462日前に更新/267 KB
担当:undef