【初心者向け】危険なのに避けられない C 言語の心折設計

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ม.ค. 2025

ความคิดเห็น • 17

  • @コイルビーム
    @コイルビーム 2 ปีที่แล้ว +21

    C言語の歴史的背景を勉強したわけじゃないけど使ってみた感覚として
    C言語ってアセンブラを分かりやすくして、レジスタを操作をしなくて良くしただけで本質はメモリを直接操作する言語。
    文字列はそこに勝手に利用者がnull文字を付け加えて文字列として扱ってるだけって感覚。配列も数や文字をまとめる仕組みじゃなくてメモリアドレスをまとめて操作するための仕組みな気がする。結局どこまで行ってもメモリ操作でしかない。
    その分、必要最低限の処理で軽い。他の言語はソースに書いたプログラムに自動的にメモリの割り当てをするプログラムが含まれてるからうまく噛み合わなかったりすると遅くなる。

  • @negileeks
    @negileeks 2 ปีที่แล้ว +6

    メモリが近すぎてエンディアン見えるのが個人的にだるいポイント
    共用体ぶち込まれるとキレそうになる

  • @マツダニャンコネン
    @マツダニャンコネン 2 ปีที่แล้ว +2

    勉強になりました!

  • @netbsdmania716
    @netbsdmania716 2 ปีที่แล้ว +4

    古いCランタイムは一切使っちゃだめですよね。strcpy_sなどのサイズ指定可能なものに全て置き換えないといけません。そもそも最新のコンパイラに警告またはエラーで怒られちゃいますけどね。

  • @readme-exe
    @readme-exe 7 หลายเดือนก่อน +4

    Windows上では独立したメモリ空間をプログラム毎に自動で割り当てるからポインタの危険性は想像する以上に低い。せいぜい自分の作ったプログラムがエラーを起こすだけで済む。

  • @piccadillylily
    @piccadillylily 13 วันที่ผ่านมา

    この前、pythonでプログラムを組んだけど、データの扱いが曖昧で、特に通信系データを扱おうとすると通信エラーの排除が面倒過ぎた上に不完全性が残った。結局はtry・exceptで逃げるしか無かった。Javaも似たもんだろうかなと思ってる。
    Pythonで落ちる事無く動いていたけど、不安で仕方なかったのでcで書き直しました。高速になって、ノートラブル。
    cだとエラー処理を自分で全部書けるから安心。
    cでポインタが云々て話しをよく聞くけど、そこら辺で躓く人が他言語で書いていても、現物を見ると何じゃコリャなソースばかり。「これ動かすの?」と聞くとブチキレるので、距離を置く様にしてる。

    • @Ibegyourmercy
      @Ibegyourmercy 11 วันที่ผ่านมา

      後半すごく同意。

  • @member.x.from.sai-teiki
    @member.x.from.sai-teiki 8 หลายเดือนก่อน +2

    現代の私達がRustやZigなどを指示している一方で、OpenBSDの開発者たちがC言語でなんとかしてなんか安全なツールとかライブラリとかOSとかを作りまくってるのって報われる努力なんでしょうか

  • @RikuKoizumi
    @RikuKoizumi ปีที่แล้ว

    C/C++を勉強していますが、怖くなってきました…。

  • @oreorescreen
    @oreorescreen ปีที่แล้ว

    Windows XP時代にまだろくにPCに詳しくなかった時、
    大学で初めてUNIXでC言語させられたけど
    #includeとstdio.hとか意味不明だったな。
    で?これで何ができるのかみたいな。
    個人的は目に見えるWeb系のHTMLから初めてPHPやpythonやる方が理解しやすくてプログラミングってこんなところでこう動いているんだなって分かる。

    • @kazuselen
      @kazuselen 5 หลายเดือนก่อน +2

      その段階で意味不明なのはC言語のせいじゃないっすね

    • @oreorescreen
      @oreorescreen 5 หลายเดือนก่อน

      @@kazuselen ライブラリとかインクルードするとか、そういう意味がわからなくてプログラミングを挫折した。

  • @Ruku-f5t
    @Ruku-f5t 8 หลายเดือนก่อน +1

    サムネ、インド人で草です

  • @技術屋まっちゃん
    @技術屋まっちゃん 2 ปีที่แล้ว +12

    C言語は、全ての言語、アルゴリズム等のベースとなる言語。C言語がなければ他の言語は生まれてこなかったでしょう。
    C言語が脆弱性をうみやすいのは否定しないが、それの原因は作る人間側の話。
    メモリ空間を操作できるのが悪いような印象を持ったけど(間違ってたら、ごめん)、他の言語では隠蔽されているだけの話。大きな考え違いをしているのでは?
    あと、メモリ空間を操作できなければ、効率の良いアルゴリズムはできない。
    もし否定する人がいれば、フルのネットワークスタックをC言語以外で組んでみてもらいたいものである。できれば、有名になれるだろう。

    • @kazuselen
      @kazuselen 5 หลายเดือนก่อน +2

      考え違いをしているのはあなたですね。
      不要な部分を触れる設計は良くない設計です。
      ましてや触らなければならないのは論外です。