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

C言語は滅びるべきか」記事へのコメント

  • by hetareDAIO (17407) on 2017年07月20日 7時11分 (#3247114) 日記

    C言語が悪いんじゃなくて、それを扱う人間のレベルが低いのが悪いということ、質を担保するためのコストがかなり高くなること、でしょう。

    かといって、そう簡単にレベルの底上げができたり質を担保するためのコストが下がるわけでもなく、危ないことがやりづらい・起きにくい環境を選びましょう、というのは同意できて、オススメとしてRustを挙げるのも同じではありますが。

    個人的な危惧として、未だにコンピュータを理解するにはC言語を知らないとだめだ、という原理主義者が結構いることです。そんなことないんだけどなぁ…。

    --
    ほえほえ
    • by manmos (29892) on 2017年07月20日 10時20分 (#3247238) 日記

      コンピュータを理解したいのなら一つくらいアセンブラを知ってほしいとは思う。

      理解のためだけでいいので古いのでいい。
      86系より68000系の方がコンピュータを理解するのはいいと思う。(個人の感想です。)

      その上でC言語を理解してほしい。そうすると他の言語の何が良くて何が悪いのかよくわかり、使用用途がはっきりする。

      #まあ、タレコミ時のタイトルのC++は死んでいいと思う。(個人の感想です。)

      親コメント
      • by Anonymous Coward

        コンピュータを理解したいのなら一つくらいアセンブラを知ってほしいとは思う。

        コンピュータの「何」を理解するかって部分は一切触れずに「コンピュータを理解する」って言葉が、各々の思惑で使われているような気がするが、そこは大丈夫なのかな。

        OS上で動作するシステムの開発をするにあたって、アセンブラの知識がそれほど重要だとは思えない。WEBシステムの開発やってる連中がアセンブラを勉強して、役立てることが出来るのか。彼らはアセンブラを知らなくても、ある視点ではコンピュタを理解している人と言って差し支えないと思いますよ。

        86系より68000系の方がコンピュータを理解するのはいいと思う。(個人の感想です。)

        コンピュー

        • 先にLISPを知っててCを知ったとき、
          struct list {
            struct list *car;
            struct list **cdr;
          };
          なんだって理解した。

          forthも解りやすかった。すぐコンパイラ?が書けた。
          Cがアセンブラにどう落ちるか理解すると、大体の言語は理解できると思うけどなぁ。

          親コメント
    • 何でもかんでも自分でやらなきゃいけない言語っつーか、
      細かいところの始末が個人レベルに委ねられすぎというか、
      だからこそもう少し高級言語使えや、となるのも理解はできる。

      自分は、C言語を使えますが、別に知らなくてもいいんじゃね、という気はしてます。
      C言語を使いこなすうえでの七転八倒は、確かに血肉となってますが、
      掛けなきゃいけなかったコストかというとスゲエ微妙。
      当時はそれしか選択肢がなかっただけで。いやTurbo Pascalとかはありましたけどね。
      親コメント
    • Re:言語のせいじゃない (スコア:2, おもしろおかしい)

      by Anonymous Coward on 2017年07月20日 9時17分 (#3247181)

      > 人間のレベルが低いのが悪いと
       
      つまり、滅びるべきは、人 間 !

      親コメント
    • by Anonymous Coward on 2017年07月20日 8時06分 (#3247138)

      > 未だにコンピュータを理解するにはC言語を知らないとだめだ、という原理主義者が結構いることです。

      「コンピュータを理解するにはC言語を知っているだけじゃダメだ」ならその通りでしょうけどC言語知らないとコンピュータを理解するのが厳しいのはその通りでしょう。

      親コメント
      • by Anonymous Coward

        Rustじゃなんでコンピュータの理解が厳しくなるのです?

        というか、Cの何をしればコンピュータ理解になるのかが未だにしっくりこない。

        ポインタ? GCが無いこと? ヒープとスタックのメモリモデル? 標準でライブライが弱いから自分で実装するので勉強になる? それくらいなら他の言語でもなぁ。

        コンピュータの低レイヤであるドライバやOSがC言語だからコードを追うために必要と言われたら分かるけど。

        • by Anonymous Coward

          > じゃなんでコンピュータの理解が厳しくなるのです?
          なんだろう。このもやもや感。

          C言語は理解できてないけど他の方法でコンピューターを理解できたなら
          「私はこういう方法で理解したけど、その方がC言語よりこういう理由で効率が良い」と主張すればいいし、
          未だにコンピューターもC言語も理解できてないならあんたはお呼びでない。

          • by Anonymous Coward

            親コメじゃないけど言わせてもらうわ。

            他の言語は理解できないけどC言語で理解できたなら
            『私はこういう方法で理解したけど、その方が他の言語よりこういう理由で効率が良い』と主張すればいいし、
            未だにコンピューターも他の言語も理解できないロートルなら黙ってろよ。

            • by Anonymous Coward

              C言語扱える人は大抵別な言語も扱えるかと・・・?
              PHPとかだとPHPとJavaScriptだけって人も結構居るけど
              スキルリストにC言語が入ってる人はCでもJavaでもLL言語でも割と幅広い範囲をカバーしている人が多いですね
              逆にネットワーク系のスペシャリストなのにCが得意な人なんかもいるような・・・。
              世間で言うところのWeb系は割と技術力が低い人が多くて手数とかはったりとか発想力で勝負とかもあるのでなんともかんとも。

              コンピュータの原理を理解しろという言葉を貴方はおそらく理解出来ていないかと思います。
              まずはアセンブラで何をどうしたらどうなるのかを学んだ方がいいのではないでしょうか。

              • C, C++言語を知っていれば確かにJavaもカバーできないことはないけど、Javaでの「お作法」とかライブラリとかは想像もつかないから、結局最初から学び直しでしたね。

                たかが{ }をどこにくっつけるかで宗教的違いがぁっ!
                SQLに至ってはインデントの仕方すら、まだ自分の中でさえ決まってないや。

                親コメント
              • by nim (10479) on 2017年07月20日 13時55分 (#3247379)

                > C言語扱える人は大抵別な言語も扱えるかと・・・?

                COBOLとProlog以外はねwww

                親コメント
              • by Anonymous Coward

                C言語の話をしてるのにアセンブラの話を出すバカ登場

                しかも、言ってる事が全部テメェの思い込みと来たもんだ、スゲェや!

                C言語が使えて他も行けるって奴は確かにいる。
                ただ、C言語を知ってるから他の言語でも関数型プログラミングができます程度のやつが*扱える*の範疇になるならと思ってるならレベルが知れる。

                #Z80でもプログラム書いたことあるわボケぇ!(泣)

              • by Anonymous Coward

                > C言語扱える人は大抵別な言語も扱えるかと
                そう思ってRustに挑戦しましたが、見事に打ち砕かれました(笑)

              • by Anonymous Coward

                SQLは予約語を大文字にするか全部小文字かでの宗教対立がですね…

              • by Anonymous Coward

                正直自動で整形してくれない限りは全部小文字で書きたいわ
                一発ですんなりかけたためしがないし

          • by Anonymous Coward
            個人的には C よりは、CASL で十分なのでアセンブリやるほうが効率いいと思う。
            1週間もかからず、基礎的な土台は理解できる。
            コンピュータを理解するなんてのは、言語一つできたぐらいでは到底無理だけど、他の言語ではなく C をやっておくように勧めるような部分だけなら、全て CASL の範囲でも十分におさまる。むしろ正確でなおかつ簡単に理解できる。
            • by Anonymous Coward

              アセンブリは構造の理解には役立つけど
              何かを実現するためのコストが高すぎる。

              低レイヤーのプログラムをしたい場合は
              大半をCでクリティカルな部分だけアセンブラみたいなやりかたしないと
              時間をドブに捨てていくようなもん。

              • by Anonymous Coward

                CもできないCASLもできない人が コンピュータの原理を学習するならCを学ぶよりCASLの方が手軽で効果的って話だろ。。。

            • by Anonymous Coward

              CASLの知識じゃ実際のコンパイラがどういうコード吐いて実行してるかを想像するのは無理だろ。

            • by Anonymous Coward

              caslでプログラム書くのに比べたら、C言語の方が100倍以上生産性がある。
              pythonとかF#とかはC言語の10倍くらい生産性があるなあ。

          • by Anonymous Coward

            "どの言語で理解した"ということは重要ではなくて、「C言語じゃないと駄目だ」という言説への反論ですよね
            何故そのような主張を勧めたのでしょうか?

          • by Anonymous Coward

            コンピューターって要するに「仮想マシン」と理解していいんじゃね。
            JavaVMでもいい。
            現実にはAthlonの16本レジスタなんて、もう人間が直接使いこなすことはできないよ。

      • by Anonymous Coward

        コンピューターを理解した時の言語と言えば、S-BASICとM-BASICかなぁ。
        1.コンピュータは計算機であり電卓代わりに使える。(これに関してはROMBASICの方が優秀)
        2.コンピューターSM何れかのBASICを最初にロードしないと何もできない。(なんせ、MZですから)
        3.コンピューターに想定外の事をやらせるのは結構大変。(SWのONOFF読み込み、豆電球を付けたり消したりとか)
        4.でも、想定外の事でもやってやれなくはない。(プリンタポートのペーパーエンド端子を入力に使ったり、データ端子にトランジスタ噛まして出力に使ったり)
        5.その気になればDATA文に直接マシン語書くようなことまでできる。

    • by Anonymous Coward on 2017年07月20日 11時32分 (#3247295)

      プログラミングができる人でコンピューターを理解したい・させたいならコンピューターの仕組みについて直接学ぶほうが早いだろう。その上で実際のプログラムの記述がコンピューターの動作の何になるのか考えていけばいい。
      どうせなら低級言語でやるほうが良い。CPUの仕様書なり解説書なりを読んだ後でコンパイラを作るのが良いんじゃないのかね。そこまでする必要があるのかそこまでしたいのかは人によるんだろうけど。
      道具の仕組みを知りたいなら道具を使うのではなく分解するほうが早い。

      親コメント
      • by Anonymous Coward

        コンパイラ作るくらいならCPUから作ってしまったほうがいいと思いますけどね。

        • by Anonymous Coward

          FPGAでも簡単なCPUなら作れるんだっけ…?

        • by Anonymous Coward

          ステマ扱いになるかもしれませんが、自分はO'reillyの書籍「コンピュータシステムの理論と実装」 https://www.oreilly.co.jp/books/9784873117126/ [oreilly.co.jp]によって、コンピュータシステムの基本を理解できたと思っています。
          元は大学の講義用に作られたもので、NANDゲートからAND・ORゲートなどをHDLで記述していき、ALU、CPUを作り、アセンブラ、VM、コンパイラ、OSを書くことによってコンピュータシステムが出来上がり、その上で動くアプリケーション(テトリス)の完成へと導く書籍です。
          実装を交えながら理解していく手法のため

    • by Anonymous Coward

      >未だにコンピュータを理解するにはC言語を知らないとだめだ、という原理主義者が結構いること

      あと「C言語は万能で何でも出来る」という考えを実践するのもどうかと。
      確かにコンピュータ言語の中では比較的何でも出来る言語ではあるんだけど
      それは決して「どんなプログラムを書くのにも向いている」ではない。

      awkのワンライナーで済む処理をCで書いて半日潰してデバッグしてる人が
      隣にいたりすると「C氏ね」とか言いたくなる人がいるのもわからんでもない :-)

    • by Anonymous Coward

      >原始的なメモリ管理機能しか備えておらず、それが脆弱性や不具合を生む原因となっているという

      この点が実用面ではデメリットでも教育面ではメリットだというだけでしょう。
      別にZ80のマイコンボード用意できるならそれでもいいよ。

    • by Anonymous Coward

      真の原理主義者なら、土からシリコン単結晶を作成するところから始めるんじゃないでしょうか?(TOKI○的なアレ)

    • JAVAこそ消えてなくなれ

    • by Anonymous Coward

      現実には人間が正しく使うのは不可能だから「正しく使えば」なんて前提は無意味。もっと言えば、正しく使えないくせに「俺様だけは正しく使える」とか思い上がって、あげくの果てに「正しく使えないバカが悪い」とか(まさにこの親コメのように)言い出すのだから有害でしかない。

      単に代替の存在しないニッチがあるから使わざるを得ない、Rustのおかげでニッチの一部を埋められるようになったというだけのこと。

開いた括弧は必ず閉じる -- あるプログラマー

処理中...