>>4
オブジェクト指向の何たるかをきちんと理解していれば、概念として使えなくはない。
もっとも、C 言語に限った話ではないけど。 >>4
原則、C言語ではclassは使えない。
そもそも、CをOOPの概念に対応させようとして、
classの概念(classというキーワードも)を追加したところから
始まったのがC++。 >>4
Win32API?
C++以前から(純粋OOPLな)smalltalk的な価値観をC言語に押し付けた結果。 テンプレートをテンプレートクラスで特殊化したい場合ってどうするの?
次スレから>>2に登場人物を列挙してはどうでしょうか? VS2019来てるじゃん
まともなメモリ使用量になってる奇跡だ
C++erはVS毛嫌いする人も多いけどVS2017あたりからC++対応もマジでかなり良くなってる
一番使えるIDEなのに毛嫌いする人はいないと思います。
4/2を選んだのはエイプリルフールを避けたからかな。
>>16
そう言う輩はプログラマーではなく言語オタか、最新規格対応の入門書売って糧を得てる様な奴だけ。 最近はCMakeに優しいけど標準的なビルドシステムに優しくない
clのオプションが独特すぎる
Linuxで動かない
Windows上でのライブラリの取り回しが悪すぎる
wslやらvcpkgでだいぶましになったとはいえまだ若干抵抗がある
VS2017以前よりもコンパイルが速くなっている気がする。
色々細かい不満は出てくるかもしれないが、完全に乗り換える価値は十分ある。
私はVS2017をアンインストールして退路を断った。
わかりにくかったので訂正。
VS2019はVS2017よりもコンパイルが速くなっている気がする。
デフォルトでスタックメモリ消費の静的解析をしてくれるので、
10KB以上のバッファをスタックからとるクセのある人は、
C++のstd::vectorなどへの置き換えを考える良い手助けになるなのでは。
つか、プラットホームに依存しないような
プログラミングをかける奴なんてほとんどいないだろ
素人が書いたようなおもちゃをなんで他に移植しなきゃいけないんだよ
hppファイルに実装を書いてることがたまにあって、すごく違和感があるんですけどどういうメリットがあるんですかね?
配布が容易
宣言と定義が分かれないから読みやすい(人による
宣言と定義が分かれないからリンケージとかの罠にはまりづらい(場合によってはむしろODRの罠にはまる
翻訳単位が大量にある状況ではヘッダに実装したうえで少数のcppからインクルードした方がコンパイル速い
テンプレートの場合はほぼそうせざるを得ない
などなど・・・
そもそもhppファイルは実装書くためのファイルじゃないの?
templateとかで、分割コンパイルできない場合の
もしかしてhppをhとcppの間の子みたいに思ってる?
Cのヘッダと区別するためにhppにしてる人がいるだけでただのヘッダ拡張子だぞ
VCだとヘッダはhになるけど
流儀なんか10年もしたらガラっとかわるから拡張子なんか好きにやれ
c++ではじめの頃の昔はたまにソースを .c++ で書いてるやつもいた
ファイルパスにプラス記号使うのは、文字コード自動判定でUTF-7と誤認されやすくなるからさけたほうがいいね。
>>28
無理やりテンプレート使ってビルドを腐らせる典型的アンチパターンじゃねーか。 >>28
配布出来るようなコードかけるの?
誰もお前さんのなんて欲しがらないだろ >>34
ほう、すごいね、そんな方法があったんだ。
これなら、enumの定義から自動的にunorderd_mapに登録して逆変換テーブルを作るとかもできるかもね。 .hは宣言だけ、.hppは実装ありって使い分けてたこともあったけどやめた
includeする方はそんなの知ったこっちゃないし、いちいちhかhppか判断させられるのが無駄だとわかった
>>40
>hppは実装あり
それは悪手なのでは? 別に全部入りって意味じゃないよ
テンプレートとかinlineとか、処理の実装も書いてますよーっていうこと
暗黙の了解でもそんなのないだろ
hppなら少なくともC言語ではないというくらいしかない
そもそもユーザーがincludeする部分は拡張子書いてないライブラリもある
だから意味ないからやめたって言ってるじゃん
意味ないし有害だよやめた方がいいよ
そもそも素人が書いたテンプレートを用いたものなんて使い物にならん
むしろプロの方がゴミみたいなコード書いてる人多いよね
boostで開発効率上がるとか信じてるバカが世の中にはまだいるのな。
実際上がるだろ
ライブラリ使えばコーディング量減るのは当然
コーディング量を減らしたいならC++使うのやめるべき
速くてコンパクトなソフト作るのに最適だろ。
慣れてりゃ開発速度も同じようなのLLで作るのと大差ないし
言語によって作業量が増えるとか無いから
目的に合ったフレームワークがあるかどうかが重要
どうせお前らなんて、数十行程度の小さなもばっか書いて、あーでもないこーでもない言ってるだけだろ
会社にもいるわ、細かいことばっか、正論言って
実際の仕事では何にもできない、言語規格ヲタ
仕事してるより細かいとこ突き詰めてる方が楽しいんだ、ごめんね
ドワンゴでコード書いてて江添みたいなバカに
しょうもないアドバイスされたらそらキレるだろうな。
あの手の連中って小さなサンプルしか書いたことないんだろ
実際の数百万行あるようなプロジェクトなんかには
参加したことないんだろうな
弁理士みたいなもんだろ。
自分じゃモノ作らないけど複雑なルールに精通してて「それじゃ通らないよ」とアドバイスする。
>>68
c++なんかでosなんか作れるかよ
遅すぎる >>67
作らないじゃなくて、作れないんだろ
標準ライブラリの使い方を示す小さなものは作れるけど、現実的に使用するアプリケーションはかけないんだろう >>72
で数百万行で何を参加して、そのうち何行書いたの? >>74
自動機が約1000台あるCAMで40%は書いてるよ >>75
じゃあこのスレで一番C++に詳しい人は君ね どうせその数百万行のコードで意味があるのは数万行から十数万行とかだろ
後は無駄なコピペやら、標準ライブラリにある機能を知らずに毎度一から書いて水増しされた無意味どころか保守考えたら害悪にしかならんくその塊
>>72
弁理士の喩えで言えば、弁理士自身が発明できなくても別によくね?って話なんだが。 どうせ納期に追われて妥協に妥協を加えたやっつけのコードを○行書きましたwとか言われても自慢にもならん
>>78
ダメだぞ
弁護士は立法の経験が無いとダメだしスポーツの評論家は一流アスリートじゃないとダメだし調理器具を作る人は繁盛してるレストランで勤務したことがないとダメw
ライブラリ開発や教材の執筆には数百万行のシステム開発と組み込みの経験が無いとダメw
ちなみに数百万行のシステム開発や組み込みの経験があると自動的にライブラリ開発者や教材の執筆者より現実を知ってる格上()だし現場のニーズを満たした理想のライブラリを作れるようになるぞ ビャーネなんて、ロクなの作ってないよなw
数十行程度のものをあーでもないこーでもない言ってるだけだろ
せやなw
建築物の工法の研究者なんかろくに家も建てたこともない雑魚w
ネイルガンの一つも使えないくせに机上でああでもないこうでもないって言ってるだけw
>>80
>立法の経験が無いとダメ
つまり議員の経験が無いとだめってことか STLの美しさは時代を超越してるし、オーパーツに認定してもいいのではないか。
ラムダ式使えない馬鹿「今まで書いたソースの行数は?」
そんなの気にしねえwwws
なるほどラムダ式が嫌いな奴は書く行数が減ってコードの生産量()が減るのが嫌なんだな
ボイラープレートコードを書き殴ってれば仕事したフリができる人たちは気楽っすなあ
まあ実際クヌースなんかもtexプログラム作ってプログラムの大変さに気づいた
的なことは言っているしな。
偉い人でもその辺実際に作ってみると感覚が違うってのはあるんだろう
>>68, >>77
こいつらみたいな世間知らずの根拠のない自信はどっから来てるんだろう >>90
そもそも世間知らずほど自信にあふれがちではある
初心者ほど偉そうだったりもする クソライブラリやクソ開発メソッドを持ち込む怪しいコンサルと一緒なんだよな。
それが押し通ることが結構あるから怖い世の中なんだが。
>>90
元号もろくに変えられない癖に何が自信だあほ 自分より劣る存在を想定してホルホルしててもお前の実力は上がらんよ
コードを書くしか能が無いというのでは
業界に名が通った有名人クラスにならない限り
コンサルに勝つのは難しい
>>88
それソースある?
TeXの前にも色々プログラム書いてるみたいだし、そもそも大学で俺ならもぅとうまくやれるとアセンブラとコンパイラを書き換える決心したらしいからTeXでどうのこうの言うのはちょっと考えづらい
あとTeX自体は今の基準だとそんなにでかく無い
ソースは24ks程度で半分以上はweave出処理される解説だし そんなインタビュー集までチェックするのか普通とか言われてもなぁ
>>98
自分は知らないからソースくれとだけ言えばいいところを、想像で要らんことをいうから反論されるのでは? >>99
根拠書いてあるんだから反論したいなら根拠に反論したら? なるべく高級な言語でちっさいOS作ろうと思うんだがよい言語ないかな?
armかrisc vの64bit
32bitでもいいです
比較対象のためにc/c++でも作る予定
そもそも高級言語で小さいOS作れる言語ってC言語一択じゃね?
rustでqemuでhelloworldして満足した(´・ω・`)
>>105
rustぐらいですかね?
全然違うパラダイムの言語で作れないもんかと
アセンブラとの相性考えたら結局cっぽい言語しか選択肢ないのかな OSつったって、どのレベルのこと言ってるかによってかわるしな
電源ONから自分でブートして起動できるレベルのものいってるならC+アセンブラ一択だし
ブラウザで仮想環境動けばいいぐらいなら、まあいろいろ変な言語系の実験できるけど
それ実際的な意味あるの?っていう話になってくるし・・
というわけでブラウザで C++ の実行環境を動かしてみるっていうのはどうだろう?
emscripten のオルタネートみたいな・・
>>100
事実でもなんでもない勝手な想像を根拠とか言われても反論できんわ。 >>110
> TeXの前にも色々プログラム書いてる
> 大学で俺ならもぅとうまくやれるとアセンブラとコンパイラを書き換える決心した
> あとTeX自体は今の基準だとそんなにでかく無い
> ソースは24ks程度で半分以上はweave出処理される解説だし
の中に事実でない箇所あるの? ソース出せと言った人が、ソースが出てきたら、ソース出すのは反則と言い出したって流れかな。
引っ込みつかなくなってるんだろww
話の内容変わってるし
>>109
ブラウザの仮想環境とは何?
osなのでcpuが見えてて欲しいのだけど
ひとまずqemuで始めるつもりです ビャーネストロヴストルップ先生のプログラミング入門買ったんだけど、読破した人っている?
いないんじゃあないの
本当に読破したと言える人間は日本人で20人しかいないと聞いた
>>120
毎日30分読むことにした
C++は仕事で使ったことない >>108
まずベアメタルに対応してる必要があることを考えると、選択肢はそうないのでは? >>119
もはやそれは「国語辞典」読破した奴おる?ってのに近い。 ストラウストラップの『プログラミング入門』って
日本語版で1100ページもあるんか。
このとっつぁん、厚い本を書きまくっとるなぁ。
そもそもプログラミング入門のお題でそんなに語るネタあるんか。
>>119
なんか『C++によるプログラミングの原則と実践』て本が
同じ原書の新版の和訳みたいだけど。
おまけに『ストラウストラップのプログラミング入門』よりお安い。 この界隈では「入門」といいながらどうみてもマニア向けの本が多いよね
上級者の評価が高い入門書ってのは本質や精神を理解し免許皆伝まで至るような道の第一歩であるものだもの
素人が何も理解しないままこうすればこうなるでおいしいとこだけいきなり得ようとするようなハウツー本とは違う
同価格帯のXeonとThreadripperではどっちの方がコンパイル速いか知ってる人いますか?
C++はF35にも使われている戦争の兵器
C++erを見たら悪魔の手先と思え!
それかCかC++のソースコードのコンパイルのベンチマークをCPU別で取っているサイトがあれば教えてほしいです
effective c++読めるくらいになればまあその先に薦める本や文献なんかは結構あるが、
そこまでにどういう本勧めればいいかは相当難しい。
とりあえずcからとか言いたいとこだがそれからeffective c++までの間に読む本としては何が良いのだろうか。
タイムマシンって何言語で、書かれてるの?
やっぱりc++
>>135
独習→acceleratedとプレC++11STL(ハーバードシルト)→テンプレート本、くらいを私は歩いてきました… >>135
どの言語でも、言語を学ぶ順番は、
1. 入門書
2. Effective 何々
3. 逆引き・レシピ本
4. (必要なら) メタプログラミング
Ruby なら、
1. たのしいRuby 第6版
2. Effective Ruby
3. 改訂2版 Ruby逆引きハンドブック
4. メタプログラミング Ruby 第2版
先にRuby で、1〜3 を読んだ方が早いかも
もちろん他の言語でも良いけど、
プログラミング全般は、Rubyで学ぶのが、正確で紛れがないし、詳しい本が揃っている このご時世に本読んでプログラミング勉強するってあほだろ
少なくともeffective系統読んでもわけわからんレベルの人はまずはしっかりした本を読むべきと思う。
しかしc++は勧めたい本がない。。「独習c++」かな。。いいとは言いずらいがしかしほかに勧めたい本もない。
ネットさえありゃ本なんかいらんだろアホ、と思っていた時期が俺にもありました
実際ちょっと前まではそんな感じだったんだけど、最近は Google のアルゴリズムがポンコツなのか
それの裏をかく技がものすごく洗練されたからなのかしらんが、とにかく検索上位にアホみたいな
ページがひっかかる事が多い上に、ほんとうに必要な情報が見つからないことが多い
特に最近では Python 関係のネット情報はほんとどうしょうもなくぐらい腐ってるな
C++ 関係はまだかなりましな感じだが
外人が書いた「Effective 何々」には、良い本が多い
「Rubyのしくみ」も良い。
RubyVM(仮想マシン)の内部の仕組みがどうなっているのか、など
コンパイラ・インタープリタを作る人は、読んでおいた方がよい
C++ の場合「1. 入門書、2. Effective 何々」の間隔が大きい
つまり、仕様が複雑すぎるから、入門書の範囲が大きすぎる!
独習1冊で、Rubyの1〜3 まで軽く読める
常識的には、C++ の本を読めるレベルは、Rubyなど数言語をやった後の話。
とてもじゃないが、素人がやるような言語じゃない!
素人は、細かい仕様の話よりも、
まず、Ruby on Rails などのフレームワークなどで、アプリが動くまでの全体の構造・工程を学ぶのが先
各部分の細かい仕様・バグは、後でよい。
そうしないと、バグってばかりで何も作れない
ネットで学ぶのがアホってドワンゴ社員のあいつの主張繰り返すのかよ
誰が仕様書読むんだあほ
>>146
例の医療関係のページビュー稼ぎ対策の影響で個人が細々とやってる良質なサイトが引っ掛かりにくくなってる
って新聞に書いてあったな >>146
お前のいうネットってqiitaとかだろ?
だからダメなんだよお前はw cpprefjpは仕様の成り立ちから使用例まで載ってる
cpprefjpは左の文字が小さすぎるのをなんとかしてほしい
>>145
独習の後は同じくハーバートシルトの stl 本(ただしC++11じゃない) でしょうけれども… C++の人気はだいたいWindowsと同期してて、XPで盛り上がり、その後下降して、Windows10発売後ちょっと盛り上がり、その後下降し始め、WSLでまたちょっと盛り上がり、みたいな感じで上下する。
>>165
ビャーネストロヴストルップのプログラミング入門はどうですか? >>165
◆QZaw55cn4c さんはプログラマーですか? cpprefjpかcppreference.com眺めるのが一番いいのでは
>>171
C++標準テンプレートライブラリがおすすめ C++ coding standards が、入門書と effective C++の間という感じで良かったのですが、今新品で買いやすい和書の中で同じくらい良い本ありますか
>>173
それでコードを書けるようになるとは全く思わん。 コード書くために勉強したことが無い人間とコード書くために勉強した人間に分かれるな
RPGのバトルシステムがいつまでたっても出来ない
どうなってんだコレ
そこでレポート プログラム ジェネレータを思い出さないと
文句はユニシスに言っとくれ
RPGなつかしいなw
知人でそれの専門で仕事やってるやついたが
今ごろどうしているだろうか・・
>>180
自分が具体的に何を作るのか見えていないとか、自分が何が分からないかがわかっていないとか。 これもSFINAE???
int plus(int a,int b){return a + b;}
double plus(double a,double b){return a + b;}
int main( int argc, char *argv[] )
{
double c = plus(1.0,2.0);
return 0;
}
SFINAEを理解してないな?
templateでわざと失敗させるんだぞ
それは関数のオーバーロード(オーバーロード関数)
SFINAEはテンプレートに関わる話
SFINAE ていう単語みるたびになぜか
ソフバンの白犬が低い声で「スフィ姉ーーー」て言ってる映像が頭にうかぶ
>>188
最初のplusで失敗して、次のオーバーロードを探しに行ってんじゃん。
もし最初でコンパイルエラーなら、このプログラムはコンパイルされないが、SFINAEのおかげでコンパイルエラーが出ない >>186
自分の興味のあることをやっていたら気づいたらコードが書けるようになっていた人と
コードを書けるようになることを目標に勉強をした人
前者は入門の仕方を聞かれると上手く答えられない傾向にある
とりあえず好きなもの作ってみて困ったらリファレンスとかみれば良いんじゃないの?とかは割とガチで言ってる せやな
なぜそこでロベール!?とか思ったけど、なんか納得した
rvalue・lvalueの見分け方について、=の左に書けないならrvalueって考えで良いですかね?
>>194 確かダメじゃないかな。
C の例でアレだけど、配列名 int a[5]; の a は
左辺値だけど代入の左辺に置けない、
「代入不可能な左辺値」というカテゴリになる。
『プログラミング言語C++』第4版 §6.4.1 (p. 175)の図によると
左辺値 lvalue は「アイデンティティを持ち、ムーブ不可能」
右辺値 rvalue は「(アイデンティティの有無によらず)ムーブ可能」
…ムーブできるか出来ないかの判断を、左辺値か右辺値か見分けることで
やろうとしてるなら、この説明は循環論法でしかないけどね。 その場で(1つの文の中で)ムーブされ得るやつが右辺値、ぐらいで良いのでは、
と言いたいところだが
SomeType a = b = 1;
でbあ右辺値なのかと言われるとうーん…
実際bがその場で所有権を失うこともできる(SomeTypeにムーブコンストラが定義されていた場合
のだから当たらずしも遠からずだとは思うが知らん
てかリファレンスだけ必要な奴はここにそういうことを聞きには来ないだろ。
なんかその辺の感覚がすでにずれてるように思うが。
>>195
「代入できない」って視点で言えば194で合ってるんでは?
確かに a[0] =5 なんかはできるけど、 a = b みたいにポインタそのものは代入できないわけだし。 >>196
右結合なんだから b は左辺値、 b = 1 が右辺値でいいんでは? 全く関係ない話になるけど、JNI = Java Native Interface(?) なるものを使えば、
C++で OS 非依存のアプリが作れるんだね。多分。
C++からJavaの任意のメソッドを呼び出せるし、逆も可能なので、
グラフィックをJavaに描かせて、キーやマウスのイベントをJavaからC++に
伝達すればよさそう。すると、LinuxやAndroidで共通に動くC++アプリ(?)
が出来てしまう。wasmも必要ない。