ขนาดวิดีโอ: 1280 X 720853 X 480640 X 360
แสดงแผงควบคุมโปรแกรมเล่น
เล่นอัตโนมัติ
เล่นใหม่
C言語の歴史的背景を勉強したわけじゃないけど使ってみた感覚としてC言語ってアセンブラを分かりやすくして、レジスタを操作をしなくて良くしただけで本質はメモリを直接操作する言語。文字列はそこに勝手に利用者がnull文字を付け加えて文字列として扱ってるだけって感覚。配列も数や文字をまとめる仕組みじゃなくてメモリアドレスをまとめて操作するための仕組みな気がする。結局どこまで行ってもメモリ操作でしかない。その分、必要最低限の処理で軽い。他の言語はソースに書いたプログラムに自動的にメモリの割り当てをするプログラムが含まれてるからうまく噛み合わなかったりすると遅くなる。
メモリが近すぎてエンディアン見えるのが個人的にだるいポイント共用体ぶち込まれるとキレそうになる
勉強になりました!
古いCランタイムは一切使っちゃだめですよね。strcpy_sなどのサイズ指定可能なものに全て置き換えないといけません。そもそも最新のコンパイラに警告またはエラーで怒られちゃいますけどね。
Windows上では独立したメモリ空間をプログラム毎に自動で割り当てるからポインタの危険性は想像する以上に低い。せいぜい自分の作ったプログラムがエラーを起こすだけで済む。
この前、pythonでプログラムを組んだけど、データの扱いが曖昧で、特に通信系データを扱おうとすると通信エラーの排除が面倒過ぎた上に不完全性が残った。結局はtry・exceptで逃げるしか無かった。Javaも似たもんだろうかなと思ってる。Pythonで落ちる事無く動いていたけど、不安で仕方なかったのでcで書き直しました。高速になって、ノートラブル。cだとエラー処理を自分で全部書けるから安心。cでポインタが云々て話しをよく聞くけど、そこら辺で躓く人が他言語で書いていても、現物を見ると何じゃコリャなソースばかり。「これ動かすの?」と聞くとブチキレるので、距離を置く様にしてる。
後半すごく同意。
現代の私達がRustやZigなどを指示している一方で、OpenBSDの開発者たちがC言語でなんとかしてなんか安全なツールとかライブラリとかOSとかを作りまくってるのって報われる努力なんでしょうか
C/C++を勉強していますが、怖くなってきました…。
Windows XP時代にまだろくにPCに詳しくなかった時、大学で初めてUNIXでC言語させられたけど#includeとstdio.hとか意味不明だったな。で?これで何ができるのかみたいな。個人的は目に見えるWeb系のHTMLから初めてPHPやpythonやる方が理解しやすくてプログラミングってこんなところでこう動いているんだなって分かる。
その段階で意味不明なのはC言語のせいじゃないっすね
@@kazuselen ライブラリとかインクルードするとか、そういう意味がわからなくてプログラミングを挫折した。
サムネ、インド人で草です
C言語は、全ての言語、アルゴリズム等のベースとなる言語。C言語がなければ他の言語は生まれてこなかったでしょう。C言語が脆弱性をうみやすいのは否定しないが、それの原因は作る人間側の話。メモリ空間を操作できるのが悪いような印象を持ったけど(間違ってたら、ごめん)、他の言語では隠蔽されているだけの話。大きな考え違いをしているのでは?あと、メモリ空間を操作できなければ、効率の良いアルゴリズムはできない。もし否定する人がいれば、フルのネットワークスタックをC言語以外で組んでみてもらいたいものである。できれば、有名になれるだろう。
考え違いをしているのはあなたですね。不要な部分を触れる設計は良くない設計です。ましてや触らなければならないのは論外です。
C言語の歴史的背景を勉強したわけじゃないけど使ってみた感覚として
C言語ってアセンブラを分かりやすくして、レジスタを操作をしなくて良くしただけで本質はメモリを直接操作する言語。
文字列はそこに勝手に利用者がnull文字を付け加えて文字列として扱ってるだけって感覚。配列も数や文字をまとめる仕組みじゃなくてメモリアドレスをまとめて操作するための仕組みな気がする。結局どこまで行ってもメモリ操作でしかない。
その分、必要最低限の処理で軽い。他の言語はソースに書いたプログラムに自動的にメモリの割り当てをするプログラムが含まれてるからうまく噛み合わなかったりすると遅くなる。
メモリが近すぎてエンディアン見えるのが個人的にだるいポイント
共用体ぶち込まれるとキレそうになる
勉強になりました!
古いCランタイムは一切使っちゃだめですよね。strcpy_sなどのサイズ指定可能なものに全て置き換えないといけません。そもそも最新のコンパイラに警告またはエラーで怒られちゃいますけどね。
Windows上では独立したメモリ空間をプログラム毎に自動で割り当てるからポインタの危険性は想像する以上に低い。せいぜい自分の作ったプログラムがエラーを起こすだけで済む。
この前、pythonでプログラムを組んだけど、データの扱いが曖昧で、特に通信系データを扱おうとすると通信エラーの排除が面倒過ぎた上に不完全性が残った。結局はtry・exceptで逃げるしか無かった。Javaも似たもんだろうかなと思ってる。
Pythonで落ちる事無く動いていたけど、不安で仕方なかったのでcで書き直しました。高速になって、ノートラブル。
cだとエラー処理を自分で全部書けるから安心。
cでポインタが云々て話しをよく聞くけど、そこら辺で躓く人が他言語で書いていても、現物を見ると何じゃコリャなソースばかり。「これ動かすの?」と聞くとブチキレるので、距離を置く様にしてる。
後半すごく同意。
現代の私達がRustやZigなどを指示している一方で、OpenBSDの開発者たちがC言語でなんとかしてなんか安全なツールとかライブラリとかOSとかを作りまくってるのって報われる努力なんでしょうか
C/C++を勉強していますが、怖くなってきました…。
Windows XP時代にまだろくにPCに詳しくなかった時、
大学で初めてUNIXでC言語させられたけど
#includeとstdio.hとか意味不明だったな。
で?これで何ができるのかみたいな。
個人的は目に見えるWeb系のHTMLから初めてPHPやpythonやる方が理解しやすくてプログラミングってこんなところでこう動いているんだなって分かる。
その段階で意味不明なのはC言語のせいじゃないっすね
@@kazuselen ライブラリとかインクルードするとか、そういう意味がわからなくてプログラミングを挫折した。
サムネ、インド人で草です
C言語は、全ての言語、アルゴリズム等のベースとなる言語。C言語がなければ他の言語は生まれてこなかったでしょう。
C言語が脆弱性をうみやすいのは否定しないが、それの原因は作る人間側の話。
メモリ空間を操作できるのが悪いような印象を持ったけど(間違ってたら、ごめん)、他の言語では隠蔽されているだけの話。大きな考え違いをしているのでは?
あと、メモリ空間を操作できなければ、効率の良いアルゴリズムはできない。
もし否定する人がいれば、フルのネットワークスタックをC言語以外で組んでみてもらいたいものである。できれば、有名になれるだろう。
考え違いをしているのはあなたですね。
不要な部分を触れる設計は良くない設計です。
ましてや触らなければならないのは論外です。