C言語なら俺に聞け 147

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/16(木) 23:36:02.22ID:fOCSKLtw
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言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/
2018/09/03(月) 18:58:25.85ID:LFbByM25
最初の質問者は計算機の仕組みを知りたいのであってWebアプリを作りたいわけでもMISRA Cルールを知りたいわけでもない件
672デフォルトの名無しさん
垢版 |
2018/09/03(月) 20:30:15.22ID:E2St7m4+
典型的な超頭悪そうなヤツラが
ひたすら長文連投してる
2018/09/03(月) 20:31:53.98ID:zLYH5Np3
>>670
またrubyガイジかよ。Cスレにまで出張ってくるななよ
2018/09/03(月) 20:35:14.84ID:i7qE7EE1
>>672
そのまんまお前の事だ
2018/09/03(月) 21:07:08.36ID:e7RcTinN
>>674
???
2018/09/03(月) 21:32:03.32ID:i7qE7EE1
半角バカを知らないのか
2018/09/03(月) 23:39:43.07ID:e7RcTinN
あいつか
2018/09/04(火) 00:25:08.00ID:Ilbb7rlr
とりあえずPCCでも読んでみることにします。
2018/09/04(火) 00:45:19.60ID:LzYZ2uc7
Cのスレに不毛な喧嘩売ってくるのは大体Cで挫折して、
劣等感を何とか慰めようとするカーミング行動だから気にするな
2018/09/04(火) 00:47:45.68ID:oF8LgJEj
>>669的にはコンピュータのしくみはどうでもいいってこと?
2018/09/04(火) 06:21:50.26ID:4a01gUXa
>>663 にある本の紹介文なのか宣伝コピーなのか、
「70年代のTRPGの生の感触がばりばり伝わってくるAD&Dの本」て部分を
どう解釈したら良いのか分からないのだ。

Cや「ドラゴン・ブック」、TRPG, AD&D って言葉くらいは知ってる者に
解題してくれないか。
ひどく野暮な質問かも知れないけど、聞くは一時の恥とか言うし、敢えて頼む。
2018/09/04(火) 08:45:47.28ID:HIB3dDVe
>むしろ計算機の仕組みなどを学びたいと思っています。

それなら情報処理の基礎なんかをやった方が良い様な気がする
今は基本情報処理とか言うんだっけか?
資格とかのやつよ
2018/09/04(火) 14:29:38.61ID:Ilbb7rlr
向いてないっすか……。正直物理や数学は得意なほうなんですがね……。
2018/09/04(火) 14:48:39.41ID:0ItemGYT
>>683
高齢者はマウンティングする病にかかりがちなので気にすんなよ
685デフォルトの名無しさん
垢版 |
2018/09/04(火) 15:15:50.63ID:FJBPHmlL
>>653
武内覚さんのLinuxの仕組み片手にCやるのがおすすめ
ファイルIOとかなら、システムコール、VFS、FS、Raid、デバドラ、スケジューラー、SCSiまでユーザーランドからデバイスまで一貫して、かつお手軽に触れる
686デフォルトの名無しさん
垢版 |
2018/09/04(火) 16:39:04.23ID:gZnu4stV
cの文法で書けるだけの
無能を自覚できてない低学歴知恵遅れの高齢底辺ITどかたに多い
687デフォルトの名無しさん
垢版 |
2018/09/04(火) 17:30:33.56ID:DgdW8Zal
お。半角文字の入ってない書き込みを久しぶりに見たような気がする。
688デフォルトの名無しさん
垢版 |
2018/09/04(火) 17:53:50.88ID:gZnu4stV
底辺ITドカタさんたちは
今日みたいな台風の日も自宅待機ではなく
出勤でしたか

大変でしたね
2018/09/04(火) 18:52:18.48ID:Yl2cIsi8
台風で東海道線や環状線が止まるのはまあ想定内だったが阪急や京阪まで止まるのは想定外だったわ
2018/09/04(火) 20:17:15.30ID:tpLBdVu4
>>683
数学が得意なら諦めるのはまだ早い
2018/09/04(火) 20:22:39.67ID:GSpvNdv5
やっぱワンチップマイコンでアセンブラがいいよ。
クリスマスに向けてLEDチカチカさせてジングルベルでも鳴らしてみるとかどうよ。
2018/09/04(火) 20:27:34.18ID:bz6n3SY3
ジングルベルはJasracフリーだな、心配ない
2018/09/04(火) 21:12:38.21ID:nrC4An0b
ロジアナがあればベストだが無ければせめてオシロは欲しいな
2018/09/04(火) 21:54:25.98ID:Uy+TuYSZ
>>683
向いていないね。それは臭いから分かる。お前は本当の「天然」ではない。
以下参考だが、結局中身は同じだ。
> 一撃必殺!急にマンガ家だの声優だの絵師だのになりたいと言い出した子どもや大人を止める、オススメの方法
> https://togetter.com/li/1130025

今はプログラミングなんて本当に簡単に始められる。そのレベルでグダグダ質問している時点で向いてない。
本当の「天然」なら、もう既にとりあえず何かしらのコードを書いてる。
お前は勉強しないと何も出来ないと考えている「いい子ちゃん」タイプだ。
そういう奴は自分でサイクルを回せず(=暴走出来ない)、上手くなれない。
無理してプログラマになっても、後輩に簡単に抜かれ、馬鹿にされる、悲惨な人生になるぞ。止めとけ。
(ここ見るだけでも老害を馬鹿にしたがっている奴はいくらでもいるのが分かるだろ)

ベーマガ世代だって理解してやっていたわけではない。やりたくてやってただけだ。
先に数学をやった方が効率が良かったはずだが、そんな事は考えてもいない。

お前は、サッカーをやる前に、筋トレして体幹も作り上げ、万全の状態にしようとしている。
勿論そういうのもありだが、それはやはり「養殖」なんだよ。
「天然」はそうじゃない。サッカーをしながら、もっと上手くなりたいから筋トレして体幹も作っていく。
好きだから続けられるし、環境が多少酷くても我慢出来る。(これがIT産業がブラック化しやすい遠因にもなってる)
そういう「天然」向け仕様の環境で、「養殖」では悲惨なことになる。
(勿論、プログラミングをやってみてから好きになる、というのもありだが、それはかなり少数派だと思う)

向いてる/向いてないで言えば、
ちょっとコードを書けるようになって調子に乗ってここで俺ツエーしている馬鹿共の方が向いてると言える。
2018/09/04(火) 21:55:26.59ID:Uy+TuYSZ
今はプログラミングの裾野が広がって、絶対的な人数が全く足りてない。
だから文系をSEとして大量投入してみたものの、いい結果がでたとは言いがたい状況だ。
それで次は「小学生からプログラミングを教える」「国民全員がプログラミング出来るように」
みたいなアホなことをやろうとしているのだが、これは完全に愚策だ。
プログラミング出来ない/したこと無い奴らが仕切ってるからおかしなことになってる。
それにお前がつき合う必要はない。

教育改革ってのは取り返しが付かない人体実験になるから、性急にやっては駄目なんだ。
この認識すらなくゆとり教育を導入した文化省の連中は、
今からでも全員死刑に処すべきだと俺は思っている。
(それくらい罪深いし、社会に対して悪影響を及ぼしている。日本はミスリードに甘すぎだ)
今の「小学生からプログラミング」についてはどうやらお遊び程度だからまあいい。
やるにしても当初はこの程度で様子見しながら拡大するか取りやめるか試すべきなのさ。
(俺は意味無いから止めろと思っているが)

今時PCもスマホもない家なんて珍しいだろ。
なら初心者用のプログラミング環境はすぐに整えられるし、勝手に始められる。
だからそのレベルでこんな所に質問してる時点で間違ってる。

天然:何故プログラミングをするのか?そこにPCがあるからだ (単にいじくり回したいだけ)
幼稚園児:ケーキ屋さんになりたい!(だってケーキ大好きだしもっと食べたいから)

お前には幼稚園児が「ケーキ屋さんになりたい!だってお金儲かるし!」
みたいな事を言っている違和感がある。
初心者の癖に計画しすぎだ。必要があって否応なしに始めるわけでも無し、意味不明すぎる。
そういう奴も中にはいるのかもしれないけどさ。
ただ、確実に言えるのは、プログラミング界隈は良くも悪くも全般的にギーク向けに出来上がってる。
お前がギークになりきれないのなら、ずっとアウェイのままだ。
それは幸せなことではないと思うよ。
2018/09/04(火) 22:38:39.94ID:l07xjkBV
おいら頭悪いから長い文章よめねんだ
2018/09/04(火) 22:49:40.55ID:CWUYudxX
今北産業
2018/09/04(火) 23:00:09.15ID:8Afhx4Yo
>>696
周りに迷惑かけない分、頭の悪い長文書く奴より立派だから安心しよう
699デフォルトの名無しさん
垢版 |
2018/09/04(火) 23:14:17.99ID:gZnu4stV
オレみたいに的確に要点をまとめてる長文なら読める
低学歴知恵遅れの長文は読めるシロモノじゃないからな

文章だけで低学歴知恵遅れかどうかは
簡単に判別できる

このスレに連投されてる長文の駄文は
低学歴知恵遅れが記述したと推認することに疑いの余地がない
2018/09/04(火) 23:17:12.74ID:Yl2cIsi8
必要なら数学の知識などなくても感覚で覚えるからな
座標計算の必要があれば三角関数など知らない小中学生でもsinやcosくらいは使う
2018/09/04(火) 23:26:47.20ID:lJV/Mb/R
>>700
小中学生に三角関数は無理でしょう…まず相似の概念を習うのが中学2〜3年くらいなのでは?
2018/09/04(火) 23:31:24.63ID:dqoEXQdt
数学は教科書で勉強しないとあかんよ
経験で得た知識なんてただの思いこみ
2018/09/04(火) 23:46:19.73ID:Yl2cIsi8
思い込みでも何でも使っているうちに覚える
自分の場合は30年以上前中学生の頃に画像処理のプログラミングしている間に三角関数(といってもX座標はcos、Y座標はsinといった程度)や
論理演算(RGBの合成はOR、反転はXORなど)を覚えた
その後になって高校の頃に教科書でまともに学んだ覚えがある
2018/09/05(水) 00:03:44.17ID:ElSUubWJ
>>701
三角関数が何なのかは分からなくても、sin と cos を使うだけなら小学生でも定型文的に覚えちゃうんじゃね(おれは中学の頃だったが)。
円を描くところから始まり、直径を変化させると渦巻きにできたり位相や周期を変えて橢円やらリサージュになることに気付いたりで、
パラメータをやみくもに変えて手探りで欲しい結果にたどり着くようになる。
もちろん円的な動きの元ネタは必要で、ベーマガみたいなののコードをパクって出発だな。
小学生の頃はファミリーベーシックだったので三角関数には行き着かず、中学生でMSXになって三角関数に出会ったが、小学生の頃にMSXがあれば手を出してたと思う。
2018/09/05(水) 00:11:58.72ID:ElSUubWJ
そういや小学生のころはスーパーマリオが出たころで、ファイアバーをどうしても再現したくてファミリーベーシックで頑張ってたわ。
三角関数に行きついてないから、角度の範囲毎の動きを個別に書いたな。
でも長さが伸び縮みしたり軌跡がカクカクで、結局将来の夢に据えてお仕舞いにしたw
2018/09/05(水) 00:29:02.76ID:TND9Xsam
ニュー速で話題にしていた、CLA Fortran プログラムですが、
C言語への移植が終わりました。
公開方法について、検討しています。
↓ここを使おう蚊と考えています。
https://ideone.com/

C言語へ書き換えたソースと、入力用データとパラメータの3つですが
入力用データとパラメータについては、サンプルに掲載したものと同一
なので公開は必要ないかも知れません。
ただし実行するには必要になります。どうしましょうか?
テキストファイル形式で単独でアップロードするか、
ソースの一番下にコメントとして載せるかどの方法が良いでしょうか?
あと、オリジナルFortranソースもアップロードした方が良いですか?
これは以前PDFを見つけてくれた方がソースに起こして頂いたものです。
2018/09/05(水) 00:29:27.46ID:TND9Xsam
間違えました、済みません。
2018/09/05(水) 00:56:31.50ID:8BhrS90z
>>694
>>695
よくわからんのだが、お前が相手をしてるそいつはなぜプログラミングを初めたいと思ってると思ってる?
よくわからんのだが、ギークとかなんやらの最初とそいつの最初の具体的な差がよく分からん
709デフォルトの名無しさん
垢版 |
2018/09/05(水) 07:35:22.74ID:p5l66rRv
C言語ポインタ完全制覇っていう書籍が気になってるんだけどこれはどの程度の知識がある人を対象にしてるの?
2018/09/05(水) 08:20:43.64ID:2JdbfNpR
どの程度っても難しいなw
簡単なポインタは分かるけど、二重ポインタとか配列が絡むと混乱しちゃう程度の知識の人向け?
初心者なら悪い本じゃないから買っちゃえ。
711デフォルトの名無しさん
垢版 |
2018/09/05(水) 10:04:35.05ID:TsbO/g0i
>>701
円を書く時に使えると聞いて確かに書けるので使っていて、後で高校生向けのやたらやさしく書いてある図と絵が満載の参考書を見てどういうことか詳細がわかった。俺が中2の時の話。

で、今思うに、これぐらいならちゃんと教えれば小学生でもわかるんじゃないか?俺としては単に教えてないからできないだけのような気がしてならないぞ。

しかし後々高校に入ってから数学の授業で「これ割るこれがsin」などと教師が言ってるのを見て、こんな説明だけでわかるやつはいないだろうとも思った。
ちゃんと教えられる人があまり居ない事もわからないやつを続出させる原因なのかもなと。
2018/09/05(水) 10:24:41.46ID:mkiFi/5o
あの説明はひどいよな
だから何?がずーっと消えない
2018/09/05(水) 10:29:11.29ID:jTYdKpzW
sin,cos,tanそのものはアホな小学生でない限り余裕で理解できる。
ただ、それに付随した加法定理やらいろんな公式をセットにして教えたいし、それより先に教えることがたくさんあるので>>711の言っている通り教えてないだけだと思う。
2018/09/05(水) 10:29:52.26ID:TP9d0IJd
せんせい
「同じ授業を受けていい点数を取る生徒ももいるんだから、悪いのはIQの低い君達」
「分かる奴は塾に行ってる?じゃあ悪いのは君達の努力不足だ」
2018/09/05(水) 10:36:57.83ID:2JdbfNpR
論破やな・・・w
2018/09/05(水) 12:34:15.95ID:TWmx8fnR
>>709-710
初心者には、この本もよい

詳説 Cポインタ、2013、オライリー・ジャパン
2018/09/05(水) 12:40:26.88ID:BcgqOcGx
>>711
普通は円を書くのに三角関数を使わない
普通は
2018/09/05(水) 12:41:23.62ID:vNhhiwgZ
絵が円形に動くときは?
2018/09/05(水) 12:43:57.25ID:BcgqOcGx
絵が円形に動くとき
は普通に円を書く時ではない
2018/09/05(水) 12:45:48.51ID:vNhhiwgZ
え、
>>711ってarcとか使わないで円を書くって言ってるの?
2018/09/05(水) 12:54:42.87ID:usOBe9qe
アスペっすわ
722デフォルトの名無しさん
垢版 |
2018/09/05(水) 12:59:20.81ID:TsbO/g0i
三角関数の説明に三角形だけの図を描いてこれ割るこれとか言って済まそうってのは手抜きな感じがする。やはり円も描かねば。

ま、しかし、sin. cos 使って円が書けるのがわかったのは良いが、当時のマイコンは貧弱で浮動小数点演算なんかやらせてたら遅くて仕方がなかった。
しかしBASICでグラフィックに円を描かせると妙に速い。正数計算して描いてるからだが、どうするとそんなことができるのかを延々と探り続けてようやっとわかったのが高校生になってからだったかな。
今はもうほとんど覚えてないが二乗して足してってオーバーしたら引いてみたいな計算したと思った。
723デフォルトの名無しさん
垢版 |
2018/09/05(水) 13:00:45.01ID:TsbO/g0i
>>717>>720
まあ40年ぐらい昔の話だからね。
2018/09/05(水) 13:01:32.32ID:9Ih296dz
>>722
で?
2018/09/05(水) 13:07:48.81ID:D3bYtmsn
ポインタ限定でそんなに語ることがあるのか
2018/09/05(水) 13:15:30.75ID:Lw38WY1e
>>722
それってブレゼンハムやミッチェナーのDDAアルゴリズムを利用した直線や円周の高速描画だろ
懐かしいな
727デフォルトの名無しさん
垢版 |
2018/09/05(水) 13:22:45.26ID:TsbO/g0i
>>726
何て言うのかは知らなかった。何かのプログラム解析してわかったんだったかな。その辺は忘れた。
直線も足してってオーバーしたら引くみたいなやり方だよね。今ではハードウェアで組み込まれてるんだろうな。
2018/09/05(水) 13:24:01.11ID:ElSUubWJ
>>725
ポインタが指す先が const の場合とかポインタそのものが const の場合とかさらに volatile が組合わさったりさらにそういうののポインタだったり配列だったり関数ポインタまで入り込んだりした場合に、
正確に型宣言したり読んだりするには結構修行が必要だからいろいろややこしいことが書いてあるんじゃないか
2018/09/05(水) 13:27:13.74ID:TND9Xsam
>>722
>当時のマイコンは貧弱で浮動小数点演算なんかやらせてたら遅くて仕方がなかった。

この辺は工夫次第
8bitPCが全盛だった頃、動く3Dオブジェクトを表示するのに機械語で演算処理組んでいた
全部整数化し、SIN関数値は全部テーブルで持たせていたな
試して見れば分かるが実際に必要なテーブル範囲は90度もいらない
2018/09/05(水) 13:37:21.57ID:7JsiFjUt
敵の弾が自分めがけて飛んでくる
ってたったそれだけでも中学の頃は大変だったな・・・
なつかしい
2018/09/05(水) 13:47:10.12ID:ElSUubWJ
>>730
大変だった
どんな式を立てたかは忘れたが、角度によって弾の速さが変わっちゃったりして試行錯誤してたな
2018/09/05(水) 13:51:42.60ID:mkiFi/5o
1フレームごとに最短距離で追尾してくる最も厄介なミサイルが実は一番簡単
2018/09/05(水) 14:58:15.54ID:jTYdKpzW
もうすでにC言語なんか関係なく回顧厨になっとるな。
俺も乗っかろう。
昔はBASIC標準のライン描画やらペイントルーチンが遅いので、いかに高速なアルゴリズムを作るかパソコン雑誌の特集になってたりしたな。
超高速中間色対応ペイントルーチン!みたいな。
ある意味、良い時代だった。
2018/09/05(水) 16:27:30.41ID:GAiajT5F
中間色とか20年以上聞いてない
2018/09/05(水) 19:06:16.01ID:83kKikU4
中間管理色
2018/09/05(水) 20:11:02.62ID:oFUMlVxX
タイルパターン
2018/09/05(水) 20:19:51.65ID:dRudxIH1
ランダムディザ
2018/09/05(水) 20:20:14.55ID:TND9Xsam
液晶上にある発光体の色は3種類
マゼマゼする原理は同じ
2018/09/05(水) 21:50:01.40ID:PklssQfn
>>734
CoolType/CelarTypeがそれに近いけどな
2018/09/05(水) 21:50:31.53ID:YeNc+rPy
R成分100%にB成分100%をビット演算で重ねる、みたいな話か。
2018/09/05(水) 22:58:16.11ID:Lw38WY1e
重ねるというよりも隣接するドットを違う色で決まったパターンで表示することで
擬似的に色調表現するテクニック
基本的に8色しか使えなかった頃に多色表現するために開発された手法
複数ドットでひとつの点を表現するためにいかに自然に見せるかといかに高速化するかが
プログラム的に腕の見せ所だった
2018/09/05(水) 23:26:42.92ID:ElSUubWJ
cleartype はそういうのじゃなく、三原色の並びを利用して擬似的に横方向の解像度を上げる方法でしょ。
1画素内に三原色が RGB と並んでた場合、それを2画素並べると以下のように画素の分解能を超えた位置に白点を表示できる。

RGB___ 白黒 … 座標 0 に白点
_GBR__ シアン赤 … 座標 1/3 に白点
__BRG_ 青黄 … 座標 2/3 に白点
___RGB 黒白 … 座標 1 に白点
2018/09/05(水) 23:39:34.25ID:PklssQfn
>>742
知ってるぞ。
ClearTypeはsubpixel技術で、中間色はsubcolor技術だ。
まあ2)GrayScaleAAの方が近いといえばそうだが。
> 2) Grayscale anti-aliasing
> https://en.wikipedia.org/wiki/ClearType
2018/09/06(木) 00:30:08.44ID:RM3Caylz
文字表示から離れればという気もするが
745740
垢版 |
2018/09/06(木) 05:55:34.60ID:UQb09hzL
すまん、投稿が受け入れられたタイミングがマズくて
>>739 に対する反応みたいに並んでしもうた。
>>740>>739 の「マゼマゼする原理は同じ」に乗っかったネタ文だ。

R成分100%とB成分100%をマゼマゼして、HTMLの16進表記で#FF00FFの色を作ったら、
「そりゃ“マゼンタ”だよ、バカだねぇお前さんは」という想定(しかし破綻)。
746740 == 745
垢版 |
2018/09/06(木) 06:16:09.23ID:UQb09hzL
もちろん「マゼマゼ」は >>738 だよ、引用アンカーを間違えるとは。
マゼマゼでダメダメ。再び「バカだねぇお前さんは」
2018/09/06(木) 09:31:52.28ID:/8o/0CpY
>>745
ん?俺は別に煽られたとは捉えてないし問題ないぞ。
そもそも話が通じないのは「抽象思考」が出来てないからだ。

三角関数で → 円も描ける、であって、(演繹)
円を描く為には → 三角関数、ではない。(暗記)

とはいえ適用する場合は大体お約束的だし、
大学入試なんて解けるように作ってあるのだから、「暗記」タイプでも努力すれば数学の点も上げられる。
しかしそれでは駄目なんだよ。意味がない。
そして小学生に三角関数を教えても「暗記」にしかならないから、その時点で教えるのはやはり間違っている。
> これ割るこれがsin (>>711)
これも、結局の所これ以外にどう表現しろと?という話だからね。

これが嫌だったのなら教育関係に就職して改革すべきだが、
実際ゆとり教育を先導した戦犯役人はこのタイプだった(はずな)ので救えない。
理解出来なかった奴が「俺が理解出来なかったから」という理由で主導するからおかしな事になる。
今現在の「プログラミング教育導入」もこれに近く、
そもそもプログラミングできない/やったこと無い奴らが主導してるから暴走してる。

三角関数なんて、円以外で適用される場合の方が多い。
それを過度に円に結びつけるのは数学としては間違っている。
単振動なんて、本来は円運動とは関係ないだろ。あれはma=kxの解がsinxだって話であって。
内積が|a||b|cosθになるのだって、円なんて全く関係ないし。
三角関数は、「偶々そういう関数を定義したら、何か知らんけど色々使える」であって、その見方だと
> これ割るこれがsin
になってしまう。これ以外に表現しようがない。
逆に、「宇宙の全ては円で出来ている」(なぜなら三角関数が適用出来る場合が多いから)
という捉え方も出来なくはないが、こっちの方がカルトだろ。
おそらく、数学の発達過程で他にも色々関数が定義されて、でも使えない物は淘汰されて、
結果的に今の三角関数だけが残ったのだと思うぜ。
2018/09/06(木) 09:33:21.82ID:/8o/0CpY
中間色/CoolType./AAも、俺にとっては「隣接するピクセルを用いて中間値を表現すること」で同じだ。
お前らはそれを
・フォントの場合
・色/ピクセルの場合
と別々に覚えてるから別物に見える。それはお前らの脳内が「暗記」ベースだからだよ。

暗記ベースでプログラミングの上達を目指すのは「デザインパターン」だ。
しかしこれも必要以上に細分化し、しかもJava文法が足りない点を必死で補っていたりで、
はっきり言ってポシャったろ。あれでは無理があるのさ。
勿論、「暗記」しかできない奴はいまだにそれにすがり続けているようだが。

ただ、実際の所、プログラミングは当然実装出来ると分かっている範囲で為されることが圧倒的に多いので、
「暗記」ベースの手法でもほぼ全ケースで何かしらの適用が出来、対応出来る。
だからそんなに問題にはならず、ある意味Javaプログラマが一定レベルまで順当に成長するのはこれがある。
ただ、「暗記」ベースだと、知らない事は発想出来ない。別物扱いだから。
中間色を「抽象思考」で捉えているのなら、
方向を変えて適用した結果がCoolTypeでありAAでしかなく、これらは自然に連結する。
この点がずいぶん違う。
2018/09/06(木) 09:34:16.38ID:/8o/0CpY
この点に於いて、「暗記」ベースの奴は文法リッチな言語、JavaやC++の方がいい。
というかな、プログラミングが上達する奴と全く上達しない奴が居て、
別段人間的に問題がある(全く努力をしてない)訳ではないのが不思議だったのだが、
今のところの俺の結論はこれだ。
「暗記」ベースの奴はCやJavaScript等の文法がスカスカな言語では上達しにくい。(上達出来ない)

文法リッチな言語だと、「この文法はこのときに使う」というやり方で、
「プログラミングパターン」を「暗記」で積み上げることが出来る。
(これは本来「デザインパターン」と呼ばれるべき物だが、
この用語は継承をこねくり回したゴミの呼称となってしまっているので、敢えて別に命名する)
だから、文法を一通り押さえれば、知識としてのプログラミングパターンを一定量積み上げることが出来、
結果、一定までは確実に上達するというわけだ。
Javaはこの手法で平均レベルのプログラマを大量確保出来ている。

ただし逆に、文法等の暗記事項に計上されてないと、彼等は上達出来ないので、過度に暗記にすがる。
これが今の「デザインパターン」の状態だ。必要以上に細分化し、また、無駄に増やし続けている。
彼等にとっては新規パターンの登録と暗記がすなわち上達であり、それ以外に方法がないからだ。
したがって、今後ともこの暴走は続く。

C++erで言えば、彼等は shared_ptr/unique_ptr/weak_ptr の使い方にはご執心だが、そこまでしか見えていない。
次に導入されようとしている observer_ptr については必要性も使い方も分かっておらず、理解も出来ない。
なぜなら、「暗記」出来るのはそれらが定義されて以降であり、
「暗記」では現在未定義の物を演繹的に作り出すことが出来ないからだ。
良くも悪くも、C++が文法リッチになる過程で、CerとC++erが自然発生的に分かれてきたのはこの辺だと思う。
Linusから見ると、C++の文法もデザインパターンと同様のゴミの山に見えているはず。
(JavaScriptなんて、たったあれだけの文法で、C++で表現出来る範囲を越えるのだから笑える)
2018/09/06(木) 09:35:06.90ID:/8o/0CpY
Cの場合には文法がスカスカだから、
ポインタで → 何でも出来る、とならないと上達しにくい。(演繹)
この場合は → shared_ptr、では無理だ。暴走出来ない。(暗記)
だから「暗記」ベースな奴は文法リッチな言語を選んだ方がいい。
(ただしポインタがあまりに汎用性がありすぎて最適化等に問題があり、
結果、他言語では色々制限を付けられてきたのはご存じの通り)

逆に「たったこれだけの文法で全て表現出来るなんてステキ」と思える奴は
CやJavaScript等の文法スカスカ言語の方が向いてる。
JavaScriptがゴミゴミ言われながらもここまで残っているのもこの点が大きい。
あれは使える奴が使ったら凄く使える言語だ。
ただ、今のJavaScriptプログラマの大半がゴミなのも事実だが。

Cの授業が全く無駄だ、という話も出所はここだ。
プログラミングなんて、結局、「代入、条件分岐、関数呼び出し、ループ」でしかなく、
ループですら代入と条件分岐で実装出来るのだから冗長だ。
一応チューリング完全であるbrainfuckは関数呼び出しすらないので、これも冗長とも言える。
そしてCの授業で行われるのはまさに「代入、条件分岐、関数呼び出し、ループ」だけであり、
これでどうやって初音ミクが歌って踊るのだ?と初心者には思えるだろう。
最終的にはGPUを介してVRAM上に代入(ラスタライズ)しているだけだとしても、
それが初心者に見えるはずもない。
(もっとも、今の3Dベースの2D《テクスチャとして貼ってるだけ》だと
ラスタライズ結果をVRAMに戻しているかも怪しいが)

ただ、MITがSICPを止めたのと同様、今時初心者がCをやる必要はない。
DrawLineで線が描ける、HTML出力したら絵が出る、で済む連中がCやるのが間違ってる。
逆に、デバイスドライバ等を書いたり、
計算機自体の専門家(HighPerformanceComputing)等を目指すならCは必修になる。
2018/09/06(木) 09:42:07.42ID:MYy5/YOc
量子化誤差の拡散!
2018/09/06(木) 09:50:36.43ID:2H4On29+
コードもだらだら書いてるんだろうなぁ
2018/09/06(木) 10:01:03.49ID:BRF//rri
メモリーリークについて質問です
プログラム終了時に残ってしまったものに関してはOSが解放してくれるから対処しなくていいと聞きました
今までデバッグしてメモリーリークが出ると無くなるまで結構あれこれやってたんですが全部無駄だったんでしょうか
2018/09/06(木) 10:10:29.24ID:2H4On29+
>>753
終了時には解放してもらえるけど、メモリリークしたままだと動き続けられないじゃん。
たまに再起動してもらうの?
2018/09/06(木) 10:21:17.68ID:BRF//rri
あーいや想定してるのはちょっとした処理を行って出力して落ちるだけのプログラムなんです
ループの中で何回もmallocしてメモリを食いつぶすとかそんなことも無くて、ただ終了時まで動的確保した変数が解放されてないみたいな
そういう状況でお願いします
2018/09/06(木) 10:37:52.78ID:2H4On29+
>>755
そういう限定的な条件では解放は省略するって方針もあるかもね。
終了パターンがいろいろあると解放するだけでも一苦労だったりするし。

ただせっかく作ったそのコードは制約が多く他には転用しづらかったりと資産としての価値は低いと思う。
そもそもデバッグでメモリリークを発見とか言ってるとなると、メモリの管理はしっかりしてて解放を省略していることも設計に入ってる、という状況ではないんじゃないの?
それはメモリを管理できてないってことじゃないのかな。
そんな場当たり的なことやってると大きなコード書けないよ。
メモリリークを潰させるのは、メモリを解放すること自体が目的というよりメモリを管理させる教育的な目的じゃないかね。
2018/09/06(木) 11:35:05.98ID:BRF//rri
いや教育というか、上司が作ったAPIを利用して機能作れって指示が出ててですね
そのAPIが上で説明したように変数解放しないままプログラム終了してたって状況です
んでこれいいんですかこうすれば治りますがみたいなこと言ったらいいんだ勝手に解放されるかと

ともあれそういう方針が有りだということは分かりました。どうもです
2018/09/06(木) 11:39:51.63ID:2H4On29+
上司を教育してやりたいなw
2018/09/06(木) 11:42:26.02ID:b42HI45e
ここに呼んできて
2018/09/06(木) 11:55:09.68ID:MYy5/YOc
>>753
プロセス終了するなら、無駄です。
761デフォルトの名無しさん
垢版 |
2018/09/06(木) 12:07:29.83ID:NrF/VtsZ
そのAPIを流用するのは難しいな。
しないつもりなのかも知れないが。

まあしかしできればメモリリークしない方が良いな。
そのままだと常駐するプログラムのループの中で使えないし。
2018/09/06(木) 12:44:35.90ID:5MBNHP4w
>>757
上司の指示ならそのままにしとけばいい
メモリーリークしてもプロセス終了で解放されるから問題なし
って言う奴は一定数いて説得しても改心しないから放置しとくしかない
後々何かで事故った時のためにドキュメントに書いとけ
2018/09/06(木) 13:36:44.44ID:N1zpzsdE
たいていドキュメントは失われるので俺ならソースコメントに書いておくな。
「2018/09/06 メモリ解放してないので注意(先輩の指示で改修見送り)」
2018/09/06(木) 14:37:14.38ID:3QzfQDga
そりゃ、そういう状況では解放処理は抽象的な書き方にすべきなんですよ。
freeがなければ安心できないのって病気に近いよ。
2018/09/06(木) 19:28:33.32ID:5MBNHP4w
どういう状況か知らんけど
> こうすれば治りますがみたいなこと
言ってるにも関わらず対応しないのは宗教に近いよ
2018/09/06(木) 19:34:20.37ID:hjZ1m3yx
>>755
mayersだったかdinkumの人だったか忘れたけど、これはリソースリークじゃないって力説してて、
自分も同じセリフを言ってみたくてmain関数で確保したものを開放せずにいたら、
あとからそのmainだった関数に再入しないといけない要件が増えて涙した。
(小物ツールだったのに…)

というわけでfreeしようぜ
2018/09/06(木) 19:56:53.52ID:/8o/0CpY
>>757
> ちょっとした処理を行って出力して落ちるだけのプログラム
> 上司が作ったAPIを利用して機能作れって指示
× API
○ ツール

上司が作ったちょっとした「ツール」を使って(データの一部を切り出してきて)パイプ等で受ける場合、
そのツールがプロセス終了時に解放してないと文句を言うのは煙たがられる。
それは「意識高い系」すぎるし、そもそも君の担当範囲に何も悪影響はない。
そんなことはいいからお前の担当部分のバグを直せ、と思われているはず。

一応言っておくとfreeもタダではないので速度は落ちる。
必ずその後にプロセスが終了すると分かり切っているのなら放置もありだし、そっちの方が速い。
大方、精々1000行以下の上から下までつるっと動くだけのプログラムで、
最初に1回ワーク領域としてmallocして終わり、のパターンだろ。
割とどうでもいいね。実行形式のみでの配布なら問題になることはない。
(俺ならfreeしておくが。理由は>>766と同じで、流用するときにバグるから)

なお「API」では通常、別プロセスを起動して呼び出すことはない。(俺の知る限り)
本来「ツール」と表現すべき所を意図的に「API」と言うなら、相当な悪意だと受け取られる。
ただ単に間違ったのなら、お前は上司に対していちいち文句を言わず、
指示されたようにやるべきレベルだ。わきまえた方がいい。

ソースコードにコメント、は止めた方がいい。そこは上司への不満を書く場所ではない。
直すなら「潜在バグ」として正式登録、その必要がないと判断するなら放置したほうがいい。
数年後、君によって後輩が助かれば君は讃えられるだろうし、
そうでなければ君は痛かった奴だなと思われる、ただそれだけの話だ。
コメントだけ残して修正してませんでした、ってのはマジで痛いだけだから止めとけ。
誰も助からないし、生産性がない。
(バグを踏んだ後輩から見れば責任逃れせずにちゃんと直しておいてくれ、としか見えない)
そもそもそのツールがバグってたのなら作った上司の責任だし、
上司がそれを面倒がるのなら、そのソースの管理責任を君が受け取って自由に出来るはず。
2018/09/06(木) 19:59:05.01ID:xdo6cDUj
そんなに速度のことが気になるなら、グローバルでドカッと変数確保すりゃ良いだろう
2018/09/06(木) 20:06:34.02ID:N2ZzCqNY
>>755
きちんと malloc() した領域を free() できているように、それを重点的に書き直していくだけでも、プログラムの構造がわかりやすくなり、バグも少なくなるとおもいます
2018/09/06(木) 20:08:11.19ID:N2ZzCqNY
>>768
そうそう、malloc() したポインタを線形リストに登録しておいて、最後にまとめて free() するとか…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況