2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

C言語なら俺に聞け 146

1 :デフォルトの名無しさん :2018/04/30(月) 04:47:37.50 ID:XX4FB8lc0.net
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
-
※前スレ
C言語なら俺に聞け 145
http://mevius.5ch.net/test/read.cgi/tech/1519046038/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

958 :デフォルトの名無しさん :2018/08/15(水) 17:58:30.01 ID:/kIK810yM.net
自己啓発の勉強ならC89で困ることとかなんかあるんだろうか?

959 :デフォルトの名無しさん :2018/08/15(水) 17:59:04.25 ID:2ovpzQjs0.net
//コメントと、どこでも変数宣言、がダメってのは辛いのよね。
エラーを直すのは簡単だけど、いかにもバカバカしい作業で。

960 :デフォルトの名無しさん :2018/08/15(水) 18:00:49.89 ID:PyNbth/v0.net
他人に教えるなら標準は尊重しよう

961 :デフォルトの名無しさん :2018/08/15(水) 19:26:07.57 ID:kg5weZ+NM.net
VSでC++環境使ってC文法だけで組めばよくね?
それ以前に環境なんてどれでもいい、とは思うが。
JavaでEclipseに慣れてるのならそれもありだと思うよ。
環境で躓くこと自体が無駄だよ。

そもそもJava分かっててCの練習なら、ポインタと変数の寿命管理だけだろ。
GUIでなければ、寿命管理は全部入れ子の構造化プログラミング徹底で済んでしまうし、今時CでGUIもない。
結果的にポインタだけなのだから、環境なんて何でもいいと思うが。
その上で、現場で古い文法を使う必要があるのなら、その時に慣れればいいだけで。
環境なんて全くどれでもいいだろ、これなら。

emacs毛嫌いしている奴がいるのもよく分からんが。
Ctrl+Fとか覚えたくなければ、カーソルキー使えばいいだけだろ。
emacs使いでも、よほどコアな奴でない限り、EmacsLispなんて書いてないぞ。俺も書けんし。

962 :デフォルトの名無しさん :2018/08/15(水) 19:29:59.75 ID:BN2igdfy0.net
viのキーバインドになってないと体が覚えるまで面倒

963 :デフォルトの名無しさん :2018/08/15(水) 19:42:07.19 ID:kg5weZ+NM.net
キーバインド自体は対応させるELが有ってもおかしく無いと思うけど。
(emacs教団の入会基準があのキーバインドに慣れることでも無かろう)
むしろ編集モード/閲覧モードを持つviの方がエディタとしては異端だ。
他の通常エディタに慣れたらviは無理だと思うが。

とはいえ、どっちも使えるって奴も聞かないので、
vi派なら今更emacsに慣れる必要は無いと思うが。

同様に、JavaでEclipseに慣れてるのなら、VSに慣れる必要もないし、そのままやった方がいいと思うよ。
何も知らなくて環境の立ち上げすら面倒なら、
VSならインストールさえすればクリックでビルド&デバッグ実行まで出来るから楽ってだけで。

964 :デフォルトの名無しさん :2018/08/15(水) 20:00:10.97 ID:PVw+eqmQd.net
いろいろ使いたければC++を使えば良いんだよ
new delete 例外 stl を使わなくてもCより便利だろ

C++じゃなくてわざわざCを覚えたいって言うからには
何か理由があるんだろう

965 :デフォルトの名無しさん :2018/08/15(水) 20:08:35.17 ID:kg5weZ+NM.net
ちなみに、CとC++を明確に区別してるのって、C使いとC++使いだけだろ。
他はだいたいC/C++扱いだし、926もそうだと思うが。

966 :デフォルトの名無しさん :2018/08/15(水) 20:21:36.71 ID:53ohHsaIa.net
まあでかいプログラムはC++で書いてれば良かったと思うようになるよ。
でもC++で書かれたクソコードというのはCのそれの比ではないので、品質のコントロールは問題になる。

967 :デフォルトの名無しさん :2018/08/15(水) 20:22:57.45 ID:/SQznhgr0.net
C99はC++の拡張を取り入れるんならC++98と互換性が取れるところで一旦〆れば
よかったものを、なんで要らん独自性を出したかねぇ。

968 :デフォルトの名無しさん :2018/08/15(水) 20:24:28.79 ID:PVw+eqmQd.net
勉強段階なら一緒に覚えれば良いよ
自然といろんな流儀を覚える

969 :デフォルトの名無しさん :2018/08/15(水) 20:27:16.78 ID:kg5weZ+NM.net
>>966
> でもC++で書かれたクソコードというのはCのそれの比ではない
うむ、それは言えてる。
文法が簡易すぎてC++的意味不明な回りくどい糞コードを書けないからなのか、
それともこの簡易文法だけで戦っていける奴らは本質的に鍛えられるからなのか。

970 :デフォルトの名無しさん :2018/08/15(水) 20:28:43.25 ID:2ovpzQjs0.net
わざわざ「C言語なら俺に聞け」スレッドで質問してるからには
C++ではないCに限定してるんじゃないか、と判断するのも合理的ではあるわね。
CとC++の両方を扱う初心者向けスレッドも別に存在するし。

もちろん >>932 の意図は投稿者自身のものだけど。

971 :デフォルトの名無しさん :2018/08/15(水) 20:28:52.37 ID:PVw+eqmQd.net
C++の糞コードと言えばこれ

#define private public

972 :デフォルトの名無しさん :2018/08/15(水) 20:28:53.66 ID:kg5weZ+NM.net
>>967
それってC側からC++と分かれたってこと?(俺は経緯はよく知らない)
てっきりC++が独自路線突き進んだと思っていたが。

973 :デフォルトの名無しさん :2018/08/15(水) 20:30:15.51 ID:PVw+eqmQd.net
もう別の言語だよ
もちろん共通部分だけでも組めるけど

974 :デフォルトの名無しさん :2018/08/15(水) 20:38:11.04 ID:PVw+eqmQd.net
そういえば
コメントを // から /* */ にわざわざ変える人がいる
今まで何人か見た

そんな暇があったらさっさとコードを組め

975 :デフォルトの名無しさん :2018/08/15(水) 20:39:14.27 ID:kg5weZ+NM.net
>>971
それ、単純に通るか?

なおVC++/CLIではそこで手こずったことがある。
当初ほぼprivateで作っていたクラスを継承する必要が出てきて、
protectedとpublic等に変更したらコンパイラにさんざん文句言われて手こずった。
あれでC++の糞さを再認識した。本質的でないところで凄く引っかかる。
(VC++/CLIは意図的に文法を厳しくしているからというのもあるが)

976 :デフォルトの名無しさん :2018/08/15(水) 20:44:46.95 ID:PVw+eqmQd.net
単純に通るか通らないかは環境や作りに依存する
わざわざ糞コードを披露するところが律儀だね

977 :デフォルトの名無しさん :2018/08/15(水) 20:53:59.37 ID:kg5weZ+NM.net
あー、俺のコードが糞だったからってか?
しかし、当初継承無しで単独で使う予定だったクラスに対し、仕様変更で機能追加されたんだから致し方ないと思うが。

ただ、個人的にはpublic/private自体が不要、とは思っている。
JavaScriptはpublicしかなくて、当初「これでいいのか?」と思ったが、やってみたら全く問題ない。
外から使うときに中身なんて気にしたくないから、そもそもprivateなんて触りに行かない。
逆に、外から触りたい物をprivateにすることも間違っているし。
あれはいちいち書かなくとも自然と分かれ、それで全く問題ない。
(文法的にチェックするだけの意味しかない。まあそれを言えば型システム自体もそれに近いが)

978 :デフォルトの名無しさん :2018/08/15(水) 21:00:35.67 ID:PVw+eqmQd.net
じゃあclassを使わないで
全てstructで書けば良いよ
public protected privateは一切不要だから

979 :デフォルトの名無しさん :2018/08/15(水) 21:06:02.60 ID:YVF6Ac/t0.net
VSCodeのVimプラグイン使いづらいんだよな
SublimeTextのVimプラグインみたいに両方のエディタのいいとこ取りみたいなキーバインディングだったらいいのに

980 :デフォルトの名無しさん :2018/08/15(水) 21:08:10.50 ID:YVF6Ac/t0.net
リロードしてなかったら既にエディタの話題が終わってて浦島みたいな気分だ
ハゲが

981 :さまよえる蟻人間 :2018/08/15(水) 21:18:55.80 ID:XbGFS7Sjd.net
はーげん脱

982 :デフォルトの名無しさん :2018/08/15(水) 22:46:38.48 ID:UO318XzAM.net
>>978
確かに俺はそれでいいが、
それだと「出来る限りprivateにすべき」教の信者から迫害を受けるのがウザイ。
これはC++よりもJavaの方が酷いように思うが。

この辺の文法的宗教戦争がCにまるでないのはメリットかも、とは思うよ。
private/publicに関してはデメリットの方が多い気がする。
なお、型もだ。動的型ならC++のテンプレートの大半は書かなくて済む。
無駄に手間を増やしている。動的型の方が書くのは快適だ。
あとはtypoを完全に検出れば、といったところか。
とはいえ、速度を追求するC/C++の世界には馴染まないが。

983 :デフォルトの名無しさん :2018/08/15(水) 23:04:52.90 ID:BN2igdfy0.net
Kotlinもよろしく

984 :デフォルトの名無しさん :2018/08/15(水) 23:05:44.66 ID:B3Li9vMqa.net
まあ実装とインターフェースを区別する心掛けが大切なのであって、privateにして満足したらあかんとは思うよ。

985 :デフォルトの名無しさん :2018/08/15(水) 23:54:13.35 ID:1IcV1KLeM.net
>>984
というよりJavaは「粗結合教」「イテレータ教」かな?
見せなくて済むなら見せるなでインタフェースを無理に細くしているのと、
抽象化する必要がない場合もとりあえずイテレータにしてるだろ。
C++もナマポ撲滅の為に無駄にイテレータを導入しているから、この点は似ているが。

Cはここら辺の宗教戦争がない代わりに、どうしても抽象レベルが上がりにくく、
低レベルコードをひたすら書く羽目になるのが欠点か。

986 :デフォルトの名無しさん :2018/08/16(木) 01:31:46.14 ID:IiF9TGTT0.net
どの言語でも、基本は疎結合。
スパゲッティ・泥団子などの密結合は、皆大嫌い!

こっちをいじれば、あっちが変わり、
あっちをいじれば、こっちが変わりw

987 :デフォルトの名無しさん :2018/08/16(木) 01:50:41.92 ID:HU9VHWiC0.net
クラスはないがモジュール分割くらいは普通にするだろう

988 :デフォルトの名無しさん :2018/08/16(木) 03:27:52.80 ID:zyXyJDDmd.net
>>979
激しく同意

989 :デフォルトの名無しさん :2018/08/16(木) 07:14:50.63 ID:yO9+GMaw0.net
イテレータがナマポ撲滅のため??

990 :デフォルトの名無しさん :2018/08/16(木) 07:39:41.31 ID:IWf/QMdza.net
ここの人たちはリーナスさんのC++批判はどう思ってる?

991 :デフォルトの名無しさん :2018/08/16(木) 07:39:43.44 ID:t6OwQxX10.net
相手するなよ…

992 :デフォルトの名無しさん :2018/08/16(木) 09:33:11.42 ID:yO9+GMaw0.net
俺もC++には気に入らんところがいくつかあって
リーナスの意見とは一致するところが多い

まず筆頭のクソが例外
次いでnewのコレジャナイ感
classとstructのしょーもなすぎる違い

993 :デフォルトの名無しさん :2018/08/16(木) 13:12:37.52 ID:KNhd5GXjd.net
>>992
C♯さんディスってるんですか?

994 :デフォルトの名無しさん :2018/08/16(木) 17:25:51.84 ID:w2NRgS+k0.net
goにしよう

995 :デフォルトの名無しさん :2018/08/16(木) 17:56:37.44 ID:sGlIzl1XH.net
goto

996 :デフォルトの名無しさん :2018/08/16(木) 18:29:44.72 ID:GnkF98h40.net
gotogo2

997 :さまよえる蟻人間 :2018/08/16(木) 18:34:35.64 ID:x8SR5C2Sd.net
次スレ

998 :デフォルトの名無しさん :2018/08/16(木) 22:32:33.50 ID:+7r3fHyOM.net
>>990
俺はかなり賛同。言いたいことは分かる。
ただ、Cはクラスとラムダを導入すべき、それからリテラルをもっと充実させて、複合代入も欲しい。
これらがあれば、ずいぶん楽に書けるようになるはず。

>>989
イテレータの必然性なんてほぼ無いだろ。
様々なコンテナに対応する必要があれば、列挙を抽象化する必要があるが、まずこれがほぼ無い。
次に、インタフェースを揃えたいだけなら、酷い話「forで回せる」でも揃ってしまう。
そしてクラス内のコンテナを外部から直接イテレートする必要もほぼ無い。(publicにイテレータを見せる必要がない)
イテレータが必要なのって、汎用コンテナを作るときくらいだろ。
イテレータは抽象化の分かりやすい例だから取り上げられているだけで、実用性は皆無だと思うぜ。
それよりforEachとかの方が100倍使える。
Matz「俺はxxx[i]なんていちいち書きたくないんだよ」の方が分かる。

抽象化もコストがかかるから、必要ない抽象化はやるべきではない。
同様に、疎結合化もコストがかかるから、必要ない疎結合化はやるべきではない。
Cの場合は一応、ファイル内は密結合、ファイル間は疎結合というコンセプトだろ。
(実際それが適用されているかはともかく)
まあこれで合ってると思うぜ。
同様にクラス言語もクラス内は密結合、クラス間は疎結合のはずだが、
Javaの場合はクラス内も疎結合にしようとして細切れにするのが基本だろ。
そういう文化もありだとは思うが。
(FizBuzzのJava実装でイテレータ導入して悪ノリしてたのがあったろ。あれ)

疎結合の方がいいのは事実なのだけど、結果的にコード量が増える。
それで読む手間が増えるようなら意味無いだろ。
自分が読んで一番楽なところでバランスすればいいのだけど、それは俺はC程度かと思う。
ただこれは俺がC出身だからであって、Java出身ならあの細切れ状態が合うのかもしれないが。
(Javaは、テンプレートがない分、多態の選択肢が狭くて、結果的にあの文化なのだとは思う)

999 : :2018/08/16(木) 22:41:01.15 ID:G1RQbz/X0.net
>>998
>(FizBuzzのJava実装でイテレータ導入して悪ノリしてたのがあったろ。あれ)
これ、見てみたいです…

1000 :デフォルトの名無しさん :2018/08/16(木) 23:37:52.43 ID:fOCSKLtw0.net
C言語なら俺に聞け 147
https://mevius.5ch.net/test/read.cgi/tech/1534430162/

1001 :デフォルトの名無しさん :2018/08/17(金) 02:02:24.00 ID:itWjjCCsd.net
>>1000
乙なんだな

1002 :デフォルトの名無しさん :2018/08/17(金) 04:54:29.33 ID:xjFqJl5K0.net
>>1000
乙野郎!

1003 :デフォルトの名無しさん :2018/08/17(金) 07:30:57.69 ID:TtX4VAeH0.net
>>998
ちょっと何言ってるかわからん
983はナマポと何の関係があるのかと聞いているんだが??

1004 :デフォルトの名無しさん :2018/08/17(金) 08:18:10.48 ID:VdqNpuZ90.net
うめ

1005 :デフォルトの名無しさん :2018/08/17(金) 08:18:29.95 ID:VdqNpuZ90.net
うめ

1006 :デフォルトの名無しさん :2018/08/17(金) 08:18:59.69 ID:VdqNpuZ90.net
1000

1007 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1007
275 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★