パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

RMS、GNU C 言語リファレンスマニュアルをアナウンス」記事へのコメント

  • もうC/C++は捨ててRustから始めたほうがいい
    C++の違法増築っぷりは言うに及ばずCで大規模プログラミングは苦行すぎる。

    • by Anonymous Coward on 2022年09月08日 16時43分 (#4321640)

      Cは超高級アセンブラのつもりで。
      C++は超高級マクロアセンブラのつもりで。
      そもそもCPU周りアセンブリわからん人間はC/C++使うべきでないと思う。
      詰むから。
      ま、現代PCの世界だとデバイスドライバとかBIOSレベルを書く人じゃないと
      C/C++は積極的に使わないほうがいいね
      でも組み込みだとそもそもC/C++しか処理系がないのです
      ニッチなところでmicroPythonとかBASICとかあるけど
      いつでも使えるわけじゃない
      それだってCPUハード周り理解して使うべきですけどね

      親コメント
      • うん、まあ、i++ってのを見た時はアセンブラかよ、って思ったけどね。
        --
        ---- 6809
        親コメント
      • by Anonymous Coward

        PL/Mをご存知だろうか。
        PL/1のサブセットとしCP/Mの開発者でもあるゲイリー・キルドールが作ったシンプルな言語。
        CよりもPascalよりもシンプルでコンパイラが出力するコードが想像しやすい。
        まさに高級マクロアセンブラと言って良いと思う。

      • by Anonymous Coward

        Cは規格表を読むだけで理解できます。

        アセンブリを理解しないと……という人は帰納的理解が得意なんだと思いますが、
        すくなくともデバッグには向いてない気がする。

        • あんな穴(鼻から悪魔等)だらけの規格表で?
          親コメント
          • by Anonymous Coward

            そこは穴だと理解できますよね?
            そこは使わない。それで問題が解決しないなら、Cをこえるということです。
            # C99やC++では穴が減る方向にあるので、C89で理解が止まっている人はちょっと驚くかも。

            Cの範囲をこえるなら、使おうとしているコンパイラなどの知識がいるでしょう。
            そちらで明文化されていないならどうしようもない。道具をうまく使うしかないなら、
            そこで初めてアセンブリの知識がでてくるかもしれません。
            (明文化されていない時点で再現性はどうなのよと心配になってしまいますが)

            自分の設計の根拠はなんなのか、いつでも説明できる必要があると考えると、
            Cの理解にはアセンブリが必要などという発言は出てきません。

            • by Anonymous Coward

              C99で止まったのは完成したからなのか諦めたからなのか。

        • by Anonymous Coward

          えー、GCCって最適化でよくバグるから-sの結果が読めないとデバッグできないんだけど。

          • by Anonymous Coward

            それな。
            キリキリチューニングとか最適化の癖知らないとできないし。
            asmマクロで小技仕込むこともあるし
            section分けて自分でROMRAMオーバレイするだの
            マルチコアで共通メモリ通信するだのやってると
            やはりあれはマクロアセンブラの階層だと思って使うのが
            間違いがないですよ

          • by Anonymous Coward

            本当にバグなんでしょうか。あなたのことが心配です。

            • by Anonymous Coward

              パッチ送ったことも何度もあるよー。x86以外のCPUだとテスト甘いんだよね。

          • by Anonymous Coward

            たぶんGCCのせいじゃない

          • by Anonymous Coward

            cとGNU Cは別言語というストーリーでCの規格がわかってもGNU Cワランと言われても…

          • by Anonymous Coward

            最適化すると落ちるけど、最適化しないと普通に動くからそのまま最適化しないで開発しちゃう事ある。 「ちゃんと最適化しないとなー」と思っていながらリリースした事がある。

        • by Anonymous Coward

          >Cは規格表を読むだけで理解できます。
          標準Cならそうだろうね。
          C11/17は現代のノイマン型コンピュータを抽象マシンとしてモデル化した高級マクロアセンブラっぽいし。
          ただ、GNU Cだからなぁ。

          • by Anonymous Coward

            未だに関数ポインタをvoidポインタにキャストすると未定義動作なのに?

            • by Anonymous Coward

              関数ポインタがどこ由来かわからないならUBだろ

      • by Anonymous Coward

        C/C++をアセンブラと形容できる奴の思い描くC/C++ってC89とかC++03だろ。

        • by Anonymous Coward

          任意の機械語が生成できるツールではないC/C++コンパイラをアセンブラ呼ばわりする奴はそもそものところアセンブラを知らない

        • by Anonymous Coward

          K&Rですよ。それしかなかったからね。
          while (*dst++ = *src++); /*dangerous!*/
          とか、脳裏にレジスタです。
          # 予約語registerが好きだった。関数内でいくつ使えるか試したものだ

          • by Anonymous Coward

            今どきのコンパイラならSSA変換してループアンローリングしてと、変数一つにレジスタ一つ割り当てなのかも分からない

      • by Anonymous Coward

        アセンブリ(CPUの命令)は知らなくて良いけど、
        CPU周りというかCPUがどうやって動いているかは知らないとダメだね。
        C言語の規格に関数の自動変数をどこまで取れるかは書いてないから、
        その辺知らないと平気で数千バイトとか取っちゃうんだよね。

        • by Anonymous Coward

          数千バイトは大して問題ない

          • by Anonymous Coward

            ほんといい時代になったものだ

        • by Anonymous Coward

          変数領域はあまり関係ないのでは?
          どちらかというとポインターを理解する事は、結局はCPUのアドレッシングを知る事でもあるので
          結果的に知るって感じがする。
          アセンブラからC言語を習得するのは結構楽だった。

物事のやり方は一つではない -- Perlな人

処理中...