C 言語のポインターやメモリーについて紫様に解説していただきました!
私も C 言語を勉強してプログラムのことにもっと詳しくなりたいです。
でも脆弱性はこわいですね。どう勉強したらいいんでしょうか。
まだの方はぜひチャンネル登録と高評価をお願いします!
コメントで感想や質問を書いてもらえると嬉しいです!
ニコニコ動画版
#やくもけ #ゆっくり解説 #プログラミング #C言語
――――――――――――――――――――――――――――――――
本コンテンツは東方 Project の二次創作です。
source

この危うさが実行スピードが速いですね
結論 pythonは神
C、文法をどうにかして欲しいんだよなぁ・・・
あとコンパイラがミスを発見しやすい構造にしてほしい
親切設計ねーー、、、
この業界に自分が入る上で先生のような存在でした。
Java先生とC先生。
配列a[n]は人間のための糖衣構文でしかなく、内部的にはa+nと同じで、n[a]と書いても同じようにアクセスできると聞いた時には面白いと思った。
危険すぎて廃止されたgets()とか言う魔物
昔は危険をさけるためのチェック機能を省いてでも早く動くのが重視されていたんですね。
最適化が化け物みたいに上手いので、一般プログラマーがアセンブリコード書くより高速なバイナリを生成できるのは凄いと思いました。
ポインタ
ポ人ンタ
ポハンタ
Cの一番の利点は汎用性なんよ
C系が動かない機械は中々ないからね
sprintfは".*s"、で徹底してましたね。
ポインタはメモリマップドIOで便利、例えば0x80000000がVRAMだと
char *ptr=0x80000000;memset(ptr, 0xff, 256);でライン描画みたいなイメージ
初心者泣かせは64bit対応とアライン問題で、奇数アドレスによるバスエラーとか
しかも開発環境デバッグオプションだと露呈せずに本番でのみ発生とか。懐かしいですね。
プログラミングRustの序文で、
「有名なプロジェクトのコード含め、C言語で書かれたほとんどのプログラムが未定義動作を行っている」と書かれているのを見てゾッとした
Cが理解出来れば最新の高級言語がなんでそういう実装になってるのかも理解出来て楽しい
でもCやって挫折するぐらいなら
わかりやすい言語をやった方がいいのかもしれない…
プログラミングかぁやってみようかなぁ
↓
なんだこのC++言語ってやつ楽しそう
↓
絶 望 な う
まあC言語を例えると、申し訳程度の安全装置の付いた重機関銃みたいなもんで。配列とか文字列とか扱いを間違えると、全弾打ち尽くすまで暴発=暴走しまくると。が、これさえあればとりあえずはコンピュータを操ることができる、他の言語の援軍が来るまで持ちこたえることができる有用な武器という感じ。今はOSが止めてくれますが、昔はアプリから簡単にパソコンを暴走させることができました=何回リセット・ボタンを押したことやら。
C言語はアセンブラより視認性が良くて高級言語では扱えないメモリ空間を直接扱える【中級言語]だから「脆弱性」と呼ぶのは間違っている。
組込み用途など少ないメモリ空間で要求される機能を埋める必要があるからの仕様です。
嘘だと思うならROM256Kbyte、RAM256kbyteで制御用プログラムを書いてみると良い
何故か急に上がってきた
業務で書かれるC++のクラス設計があまりに酷すぎて、C言語で関数型プログラミングに回帰したいなぁと思っていたけど参照がないのすっかり忘れてた
メモリ操作が難しいのもあるけど、パッケージマネージャやテストフレームワークといった開発環境も自分で整える必要があるのがC/C++の面倒なところですね
30年以上前専門学校でプログラミングを学んでプログラマになって秒で逃げ出した身だが、
最近の言語は賢いんだなあ。
C++の方が色々と優秀なんだけど学習コストが高すぎるのとメモリ問題が解決してない
それを更に解決したのがRust
こいつらは速度を保ったまま安全性と使いやすさが向上してるから現代だとRust一択なんだよね。
ただ、全ての優秀な言語の祖なので構文を覚えておくとすごく便利だし、脆弱性無視すれば思ったより簡単だから学生に教えるのにピッタリ。
C言語はカーソルのメモリ操作といった禁断の行為をしなければ、機械語に近いためアセンブリをいじれたり便利である。でも最近そんな禁断の行為をした馬鹿がいるんですよね…藤徳Dというんですけど
偉大なgccに敬礼!
ランタイムでなるべく余計な処理をしないRustが、配列範囲の管理だけはランタイムでもやる辺り、本当に危険なんだなって……
40年前に会社に入社したとき
装置の制御はアセンブリ言語で行っていました。
私は学生の時にCP/Mで走るC言語を学んでいたので
会社を説得してC言語コンパイラを導入しました。
当然 ソフト開発の効率が大きく上がりました。
その後 C++言語も販売したので それも導入しました。
中学生からのプログラム歴40年以上のアマチュアC言語プログラマーです。
バッファオーバーフローには非常に気を使いますね。受け取ったデータが、用意していた領域サイズを超えるとヒープ領域だけでなくプログラムが格納されている領域まで塗りつぶされてしまう。もしここに機械語命令として意味のあるデータを送り込まれたらプログラムを書き換えられてしまう。