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

Поделиться
HTML-код
  • Опубликовано: 28 дек 2024

Комментарии • 15

  • @コイルビーム
    @コイルビーム Год назад +21

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

  • @negileeks
    @negileeks 2 года назад +6

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

  • @member.x.from.sai-teiki
    @member.x.from.sai-teiki 7 месяцев назад +2

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

  • @マツダニャンコネン
    @マツダニャンコネン Год назад +2

    勉強になりました!

  • @readme-exe
    @readme-exe 7 месяцев назад +4

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

  • @netbsdmania716
    @netbsdmania716 Год назад +4

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

  • @RikuKoizumi
    @RikuKoizumi Год назад

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

  • @Ruku-f5t
    @Ruku-f5t 7 месяцев назад +1

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

  • @技術屋まっちゃん
    @技術屋まっちゃん Год назад +11

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

    • @kazuselen
      @kazuselen 5 месяцев назад +2

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

  • @oreorescreen
    @oreorescreen Год назад

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

    • @kazuselen
      @kazuselen 5 месяцев назад +2

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

    • @oreorescreen
      @oreorescreen 5 месяцев назад

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