1 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:54:06.26 ID:Nt0XFA2s.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part147 https://mevius.5ch.net/test/read.cgi/tech/1576659413/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語)
722 名前:ゥな? [] [ここ壊れてます]
723 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:33:34.58 ID:PZnoEIEf.net] −1というか全ビットonは何かで見た
724 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 22:50:32.94 ID:Qny4UpdU.net] windef.hのFALSEが-1とかに変更されたら、既存のソースは崩壊だろうな
725 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 23:14:46.53 ID:zaYnGTVS.net] !FALSE
726 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 23:38:01.28 ID:yW0oU9fF.net] typedef unsigned BOOL:1; ならまだ救いがあった なんでint型にしてんだろうな
727 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 00:40:44 ID:wwgXq7Q5.net] >>705 それは BitField みたいだけど、構造体メンバ以外で使えるようになったんだっけ?
728 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 01:18:20 ID:wwgXq7Q5.net] >>703 FALSEは絶対的に0のまま。
729 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 01:20:55 ID:wwgXq7Q5.net] もしかしたら、Rubyが、0をtrueと解釈してしまうことから変なことを思ってる 人がいるのかもしれないが、C/C++においては、言語仕様的に条件式で偽と 解釈されるのは、古くから、唯一、整数の 0 しかないなかったので、言語仕様が 修正されない限り TRUE が 0 以外の値にマクロ定義されることは絶対に無い。
730 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:07:59 ID:iFdutQCH.net] あれ? もしかして私・・また同じ日を繰り返してる・・??
731 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:12:10 ID:lTJc7ZeR.net] まだやってんのかお前ら ゲハ厨みたいなスレだな
732 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:43:47.12 ID:wwgXq7Q5.net] >>708 スマン: 誤:修正されない限り TRUE が 0 以外の値にマクロ定義されることは絶対に無い。 正:修正されない限り FALSE が 0 以外の値にマクロ定義されることは絶対に無い。
733 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 02:58:41.73 ID:f/mZFEPY.net] >>681 if(b)で十分なのにif(b==true)と書くのはif((a==b)==true)と書くのと同じで冗長なんだよ これがすぐに理解できないなら論理を簡潔にする能力が欠如してるのでプログラミングの才能はないね
734 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 03:04:36.42 ID:wwgXq7Q5.net] >>712 しかも、b は、少なくとも見かけ上は int 型ではなく、BOOL 型だし。 それに他の言語の場合、if の条件式に入れられるのは唯一 bool 型の 場合があり、一番 if の条件式に入れ易い型。
735 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 03:08:16.20 ID:wwgXq7Q5.net] >>713 他の言語の場合、例えば x, y が整数型の場合、 x == y とした結果の型が bool 型。 そして、if の条件式に入れられるのは bool 型のみだったりする。 だから、もともと b が bool 型なのに、敢えて b == true と判定して また bool 型に「直して」しまうのはとても奇妙な感じになる。 その文化との兼ね合いから、C/C++ でも、b が BOOL 型の場合は、 if (b) とするのが美しく見える。
736 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 03:33:01.69 ID:AiNLffgv.net] MISRA-C でも、if( 変数 )で、変数が実質的にブール型の場合は、これでOK int a = ( 5 < 10 ); printf( "%d", a ); /* 1 */ if( 5 < 10 ) と、if( a ) は同じ意味。 a は、実質的にブール型
737 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 06:36:51 ID:DrkniQZr.net] bool型が存在しない時代に何故bool型になるのか
738 名前: mailto:sage [2020/02/11(火) 08:01:59.71 ID:Sh/x76Zj.net] >>695 異常を「コンパイラがコンパイルできない」と定義していますから
739 名前: mailto:sage [2020/02/11(火) 08:02:50.77 ID:Sh/x76Zj.net] >>712 コンパイルが通るんだったら異常ではないのでは?
740 名前: mailto:sage [2020/02/11(火) 08:03:52.59 ID:Sh/x76Zj.net] >>712 >論理を簡潔にする能力が欠如してる 簡潔すぎてわかりにくいのも困りますね、プログラミングはまず他人への分かりやすさを優先するべきでは?
741 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:29:09.76 ID:lXsf9fbV.net] 簡潔過ぎて分かりにくいって何? if (b) で分かりにくいなら 変数名が適切でないとかそもそも分かりにくい作りとか 他に問題があるんじゃないの?
742 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:33:12.52 ID:lXsf9fbV.net] もしかして if (a ==b) よりも if ( (a == b) == true ) の方が見やすいとかいっちゃう?
743 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:56:04 ID:tUwi24Vl.net] そりゃ if (a == 42) よりも if (a == 42 == true)
744 名前:フほうが見やすいし if (a == 42 == true != false) のほうがさらに見やすいのが異常者 [] [ここ壊れてます]
745 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 08:58:48 ID:lXsf9fbV.net] カッコも付けないと見にくいよな if (((a == 42) == true) != false)
746 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:09:46 ID:Kcy+Q8b9.net] どれだけ冗長に書けるか選手権?
747 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:15:23 ID:oAfdlMqH.net] QZは変なこだわりに固執するやつだから、一般的な感覚とか常識とかについて議論しようとしてもそもそも議論が噛み合わないし、スレを無駄に汚すだけ
748 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:21:24 ID:tUwi24Vl.net] if (true == true == true == b == true) if (true == b == true == b == true) int *p = &*&*(int *)&*&*&*&*&*(int *)&a;
749 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 09:34:27 ID:Gt4Evnq6.net] ようちえんじがかんじをつかわないでってぐずってるのとおなじだね
750 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:19:17.04 ID:G5APdl5q.net] 異常とは、普通じゃないことだよ 少数派のこと if (b == true == true) は明らかに異常 if (b == true) はたまに見るけど、まぁ異常かな
751 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:34:12.60 ID:lXsf9fbV.net] つまりQZは異常
752 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:35:43.55 ID:Kcy+Q8b9.net] boolやBOOLでない変数abcをif(a==b==c)と書きたい事はある。
753 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:56:56.94 ID:0rT9FQIK.net] QZってコイツ片山だっけ?
754 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:01:53.65 ID:u3DUqgh+.net] if(b==true) はifのなかには比較入れないとダメだと思っているんじゃね そう言う言語もあるし
755 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:09:22.66 ID:IotAbjtu.net] 「rust が c++ を超えた!! 神!!」みたいな記事をよく見ますけど、今後c++がrustから学んでもっと良くなることって期待して良いですよね? rustに勉強のコストを割くか迷っています
756 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:12:06.04 ID:HeZx7HUk.net] >>731 片山はQZほど馬鹿ではない まず国籍が違う
757 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:29:50.94 ID:Ci+AyeA2.net] なぜ if (a == true) と書くやつがでてくるのか それは条件式に食わせるためには比較演算子で値から「真偽値」に変える必要があると 思っていてそれがboolと同値と理解していないからだろ だからそういうやつは if (a == 42 == true) とは書かない この例はむしろboolを理解してるやつからしか出てこない発想 やつらはいったん「真偽値」になればあとは論理演算子でつなげると理解している ある意味、条件式を作るときのイディオムに馬鹿正直に従っているわけで別に 異常だと騒ぐほどひどくはない 別の見方をすればboolを特別視しないで書いてるわけで、 冗長にはなるが共通のフォーマットで書ききるってことはほかでもあることだ そう思えばやっぱりひどくはない 実際おれは特別読みにくいとは感じないし、この無駄は最適化で消える 何かの機会にこれ冗長だよねと教えてやるぐらいで十分
758 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:37:00.49 ID:kh2SGwFh.net] ほんといつまでやってんの
759 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 11:38:29.11 ID:KQZ3+5BK.net] 冗長な書き方をする人の真意なんて測りようもないし理由が一つに決められるわけもないだろう。 想像するだけ無駄。
760 名前:はちみつ餃子 mailto:sage [2020/02/11(火) 12:17:11.73 ID:GpQNLMm4.net] >>715 そう書くべきだしそれが普通ってことはわかってんだって。 自分で書く分にはそう書くよ。 でも、他者が書いたコードを読むときや利用するときは > 変数が実質的にブール型の場合は っていう前提を確信できない場合がある。 整数型で真偽値の代用にすることがある C/C++ では 型で判断できないことがあるから罠だよねって話をしてるんだよ。 真っ当なデザインではない場合があるから思い込まずにちゃんと確認しようねってこと。
761 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:09:17.27 ID:lXsf9fbV.net] >>735 同値 意味
762 名前:オらないのね [] [ここ壊れてます]
763 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:15:33.26 ID:Gt4Evnq6.net] > この例はむしろboolを理解してるやつからしか出てこない発想 そりゃそうだ ifの制御式は比較でなければならないと言い張るやつへの皮肉なわけで
764 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:19:47.85 ID:QCVkc9h/.net] operator =(BOOL value){ if(value==0){ return FALSE; else if(value==1||value==2||...){ }
765 名前:デフォルトの名無しさん [2020/02/11(火) 15:21:35.11 ID:IKSpGnXe.net] >>596 あったあった 今はわざわざそれ使う理由忘れた
766 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:25:53 ID:Uk2CrnAG.net] Cだとそれで必ず0か1になるからTRUEと比較しても大丈夫!っていうクソみたいなバッドノウハウ
767 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:28:40 ID:QCVkc9h/.net] operator ==(BOOL value){ if(this->value == 0){ if(this->value == value){ return TRUE; } } else{ if(value==1||value==2||...){ return TRUE; } } }
768 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:38:44 ID:KQZ3+5BK.net] >>743 そもそもTRUEと比較する必要はないしWindowsから出てきたイディオムでもないと思うが。 どちらかというとtruthyな値からtrueを得るイディオムとして使われているような。 よく見かけるのはJavaScriptとか。
769 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 15:45:19.74 ID:Gt4Evnq6.net] リターン式から返却値の型を推定させる場合にはautoが必要だ
770 名前:◆QZaw55cn4c mailto:sage [2020/02/11(火) 17:36:36 ID:Sh/x76Zj.net] >>725 あなたのいう「一般的」というものが、実はそれほど一般的ではなかった、という可能性はありませんかね? というか、まずあなたのいう「一般的」をあなたの言葉で定義するべきでしょう あなたに定義できますか?
771 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 18:04:17 ID:G5APdl5q.net] 単語の意味は辞書引けよ APIの仕様はヘルプ読め、と同様だな なんで個人が定義するんだよ
772 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/11(火) 18:24:26 ID:GpQNLMm4.net] get.secret.jp/pt/file/1581413018.png
773 名前:はちみつ餃子 mailto:sage [2020/02/11(火) 18:40:23.65 ID:GpQNLMm4.net] true と比較したけりゃすればいいじゃないの。 そのプロジェクト内で一貫したポリシーがあるのならそれでいいよ。
774 名前:デフォルトの名無しさん [2020/02/11(火) 18:49:13.60 ID:TuMeiRsT.net] ちゃうねん。
775 名前:デフォルトの名無しさん [2020/02/11(火) 18:52:49 ID:TuMeiRsT.net] ストリーム遅いな。
776 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 20:44:57.22 ID:f/mZFEPY.net] コード規約「if(bool)はif(bool==true)と書かなければならない」 やだよ、そんな規約ww 規約決めるまでに紛糾してプロジェクト始められねぇよw
777 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 20:57:43.57 ID:Z6POtQL5.net] どっちでもええやん
778 名前:デフォルトの名無しさん [2020/02/11(火) 22:08:40 ID:Pk2ehCPz.net] explicit operator boolだとラムダとかの戻り値強制したいときそうなっちゃわない? value() && true か value() || false static_cast<bool>(value())は好きじゃない
779 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:19:09 ID:Uk2CrnAG.net] 素直に戻り値boolに指定しろよ
780 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:21:59 ID:ggTX+OPA.net] 意味的にboolの型であればboolにキャスト そうじゃないなら意味通りにboolに変換
781 名前:◆QZaw55cn4c mailto:sage [2020/02/11(火) 22:23:23 ID:Sh/x76Zj.net] >>258 mmap を確かめています、なんだかすごく時間がかかってしまいました… ideone はファイルを作らせてくれないみたいですね… https://ideone.com/zXFtEY fd と fd に紐付いた mmap をつくっておいて、 ?fd 側にデータを追加すれば mmap でも見えるのですが、 ?mmap 側からデータを追加しても fd は増量しないようですね 今は cygwin で見てますが、ちゃんと linux をいれて確かめるつもりです…
782 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 22:24:35 ID:ggTX+OPA.net] オンメモリで出来ることは素直にオンメモリでやれば
783 名前:デフォルトの名無しさん [2020/02/11(火) 23:36:09 ID:TuMeiRsT.net] くじで決めてはどうか。
784 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 23:39:16 ID:RnNFx+rl.net] モンテカルロ法やな
785 名前:デフォルトの名無しさん [2020/02/11(火) 23:56:08 ID:TuMeiRsT.net] I/Oの遅さの陰に隠れてたけど。 ストリームよりSSDのほうが速いよって時代になって困る。
786 名前:デフォルトの名無しさん [2020/02/12(水) 01:53:51 ID:CB9IiDBv.net] YouTuberは「最強の職業」である理由。 https://www.youtube.com/watch?v=XjV3Nb0-hgA 【事例付き】YouTuberは最強の副業である件について。 https://www.youtube.com/watch?v=wB8hNuNVoIw&t=267s 【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説! https://www.youtube.com/watch?v=YEw-a8qlADM 「YouTubeなんていつか稼げなくなる」という主張を論破する。 https://www.youtube.com/watch?v=VatNILApW4U 収益化から丸1年!YouTubeでいくら稼いだか公開。 https://www.youtube.com/watch?v=-zQxuQqZ5eA&t=103s その動画で月商○○万!? YouTubeで稼ぐ裏技的アプローチ。 https://www.youtube.com/watch?v=7I4APU_6i9o&t=433s 【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない! https://www.youtube.com/watch?v=jYdWfjjzD7Y 【第一回】SNS、YouTube、ブログで稼ぐ方法を、丁寧に解説します! https://www.youtube.com/watch?v=erNiLOncDnY
787 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 06:38:05.77 ID:m8mhjAm7.net] >>763 グロ
788 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 10:03:09.83 ID:DWihvkH4.net] https://qph.fs.quoracdn.net/main-qimg-2c09000282ddcbb32359dc242831a052
789 名前:デフォルトの名無しさん [2020/02/12(水) 16:01:35.18 ID:a1w2Xqz0.net] >>743 ああなるほど if(TRUE == !!b) のことか if(!!b) は javascript の方だろ
790 名前:はちみつ餃子 mailto:sage [2020/02/12(水) 16:24:33.81 ID:KQxiYwOn.net] ! は見づらいから私は not と書くことにしてる。
791 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 17:16:20.22 ID:DU9qWhLl.net] 一応、alternative tokensに規定はあるが 使う奴の心は #define BEGIN { なんてやるやつと同質だね
792 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 17:20:59.01 ID:DU9qWhLl.net] Cにも_Boolがなきゃヤダジタしてたやつとか マジそういう言語へ行ったきり帰ってくるなって感じ で結局BOOL < 0みたいなオカシイことが起き出す原因を作りやがる
793 名前:はちみつ餃子 mailto:sage [2020/02/12(水) 17:47:16.08 ID:KQxiYwOn.net] C と C++ で解釈が違うのに結果として動作は同じみたいなのがたまにあってすげーなって思う。
794 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 18:09:20.78 ID:goJJte/u.net] たとえば?
795 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/12(水) 19:09:04 ID:KQxiYwOn.net] >>770-771 if 文の条件式を見てて思い出した。 C だと条件式の評価結果を 0 と比較するというルール C++ だとブールに変換するというルール。 まあ整数をブールに変換する規則は結局のところ 0 と等しいかどうかなんで ちょっと回りくどくなってるだけなんだけど、 そういう違いがあっても互換性が維持されるというのがどこかで検証されてるんだろうと思うと、 手間かかってんなぁという感想が浮かんだ。 他にも列挙定数の型が C と C++ では違うとか……。 私が把握してるのはそんくらいだけど、 探せばもっとあるんじゃないかな。
796 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 20:25:01 ID:ytylQgpT.net] >>766 >if(TRUE == !!b) のことか さすがにこんな意味のない書き方が人の目につくほど蔓延りはしないだろう。おそらく>>743の妄想。 !!b は、bool型(と、しばしばオーバーロード)を備えた言語で非bool型の値bをbool型に変換するテクニックだろ。
797 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 20:38:11 ID:rfok9Tr/.net] b!=0 で良い
798 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:12:18 ID:
] [ここ壊れてます]
799 名前:h1wCYtKx.net mailto: そういうゴミみたいな自己満テクニック()が積もり積もって誰も触れないスパゲティモンスターになっちまうんだよ b!=0でも(bool)bでもいいからやるべきことを直接表現しろ [] [ここ壊れてます]
800 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:26:37 ID:rfok9Tr/.net] (bool)b はCへの移植の可能性があるならやっちゃダメ
801 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:31:03 ID:DU9qWhLl.net] >>776 何で? ISO/IEC 9899:2011 (E) 7.18 Boolean type and values <stdbool.h> 1 The header <stdbool.h> defines four macros. 2 The macro bool expands to _Bool.
802 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:34:37.96 ID:rfok9Tr/.net] typedef char bool; の可能性があるから
803 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:35:17.48 ID:ytylQgpT.net] Cに移植する可能性があるならC++の機能を使っちゃダメなのは当たり前だよなぁ C++スレで言うことではないと思うが
804 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:36:55.01 ID:rfok9Tr/.net] >>779 問題点はそこじゃない 移植時にコンパイラが問題点を見つけられないのが問題
805 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:38:26.52 ID:rfok9Tr/.net] コンパイラが問題点を見つけられない例は他に山ほどあるが だからといってわざわざ増やさなくても良い
806 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:39:05.32 ID:ytylQgpT.net] いや、問題があるなら移植する人が見つけろよ
807 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:40:47.83 ID:rfok9Tr/.net] 移植は完璧な人がする なんて妄想は捨てた方が良い
808 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:42:13.60 ID:rfok9Tr/.net] Cに移植する可能性が無いならどうでも良い ちなみにキャストで警告が出る環境もある
809 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:42:36.95 ID:ytylQgpT.net] だからそれは移植する側の問題だろ。勝手にやれよ
810 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 21:52:54.99 ID:DU9qWhLl.net] >>778 マクロとtypedefが被った場合どうなるか解ってる?
811 名前:デフォルトの名無しさん mailto:sage [2020/02/12(水) 22:12:26.79 ID:ecElmrkB.net] もちろん
812 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 00:16:13.58 ID:X++L6urQ.net] >>733 Rustを少し見てみたけど、書き方が全くC/C++とは違っていて、 全く異なる文化圏の言語になれた人が設計した臭がした。 これがC/C++の代替になるとは考えにくい。 はっきり行って、これを使えといわれると辛い。
813 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 00:26:27.60 ID:YbJF2Pjt.net] テスト機能が標準で用意されてるのはいい
814 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/13(Thu) 00:45:52 ID:XX4mj9DD.net] 個人的には Rust は好感触。 型システムは ML 系言語で実績があるものを基礎にしてることもあって、C++ のグダグダな歴史を背負ったものよりはまとも。 ML 系はやっぱり高級路線の言語だし、インデントでブロックを表す系統なのがしんどいけど、 Rust は上手く低レイヤ用 (としても使えるよう) に着地させてるし、 C 風の外観を踏襲してもいる。 C++ が Rust から取り入れられるものはそんなに多くないと思う。 C++ は良くも悪くも互換性についてかなり強い要求があるので、 Rust 的な、カッチリと保護された仕組みを後付けするのはどう考えても無理。 C++ が Rust を参考にすることは間違いなくあるとは思うが、 全体の思想がまるで違うので限定的な範囲でしか取り入れられない。 もし取り入れらたらそれは C++ の新機能として新しく学ぶので十分でしょ。 Rust を学ぶのは間違いなく有用ではあるけども、 Rust の知見が C++ に取り入れられる可能性がありそうだからという理由ならそんなに意味ない。
815 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 01:02:46 ID:b1nbpqgi.net] C++の配列は長さの情報を持ってないってことになってるけど 長さを与えなくてもdelete[]できるんだから、メモリのどこかにその情報はあるよね? なんでその情報をプログラマが利用できないようになってるの?
816 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 01:06:29 ID:qzSQSiwu.net] rustがかっちり保護してくれるとか低レイヤー向けとか馬鹿ほど信じてるよね。 ありゃ帯に短し襷に長しの典型言語だわ。
817 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 01:44:34.08 ID:X++L6urQ.net] >>792 実際、Rustは、Cを簡単にするのではなく、Cを難しくしてしまっていて、Cのポインタが理解できない or 難しく感じる人には、Rustの特徴の核心たる所有権、借用などの部分はちんぷんかんぷんだと思う。
818 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 01:48:50.73 ID:X++L6urQ.net] >>793 Cの問題点を取り除いたと言うより、ほとんど全てのプログラミング言語が暗黙のうちに用いている代入の概念をなるべく使わないようにして変数束縛などの全く異なる独自概念を用いようとしている。 しかし、これは、手続き型言語と関数言語の違いに匹敵するくらいのプログラミングの概念の変更になってしまうため、手続き型言語の中で改良された次世代言語と言うものではなくなってしまっているとも言える。
819 名前:デフォルトの名無しさん mailto:sage [2020/02/13(Thu) 05:24:36 ID:AWnkBPoe.net] 変数束縛って右辺値参照でしょ
820 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 06:24:47.58 ID:fMXzK7Sc.net] RustはC++なら簡単にできることをものすごく回りくどく書かないとコンパイル通らない感じだからとてもつらい
821 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 09:13:38.23 ID:6FSFTWhE.net] >>790 RustがC++に取って代わることがあるか、というニュアンスの質問でした 今C++でやってる仕事がRustに置き換わる可能性が高いなら今から勉強しとこうか、と
822 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 12:35:22.33 ID:z5cRWLgY.net] >>797 断言してもいいが、RustはC++に取って代わることは無い。 なぜなら、普通の手続き型言語での枠組みにすら入ってない書き方を強要されるから。 手短に言えば、単にC/C++と書き方が大幅に違っているだけではなく、書き方が他のどんな減の範疇にも属していない。