パスワードを忘れた? アカウント作成
328878 story
プログラミング

Cは既に時代遅れ? 308

ストーリー by hylom
C使いの皆様のコメントお待ちしております 部門より

あるAnonymous Coward 曰く、

どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。」などと言われるように、いつの間にかCは忌避すべき言語に成り下がったらしい。

/.J読者諸兄にはCでのプログラミングに造詣が深い方も多数いらっしゃると思いますが、どうでしょうか?

個人的には、自分が気に入らないからといって他人の志向をとやかくいうのもどうかと思いますが、COBOLerとかFORTRANマンセーな方々の意見も聞いてみたい。

ちなみにはてなブックマークのコメントでは賛否両論が寄せられている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2011年05月24日 19時59分 (#1958115)
    歴史的経緯云々を除いても、Cでしか書けないようなプログラムは依然として存在する。
    もちろんアセンブリで書けないなんて言うわけがないが、ヨイショしてるJavaやC#でKernelやブートローダが書けるんなら誰も苦労はしねえよと。
    こういうハードウェアよりのものを、どんなスペックのマシンでも問題なく動かせるような言語、そしてコンパイラを作ってからこういう事言えよって思う。

    C死ねっていう奴らって対案出さずにただ死ねだの邪悪だのって言うばかりで、何の対案も出さない。
    *本当に*殺すつもりがあるんならまともな対案出して、世界中が安心してCを捨てられるようになってから殺してくれ。
    • Cじゃないとブートローダーが書けないというのは歴史的経由そのものではないでしょうか。
      例えばOpen FirmwareではForthでブートローダが書けるでしょうし、Lispで書かれたブートローダもあります。
      その他C以外の言語で書かれたOSは多くあります。歴史的にメジャーにならなかったというだけです。
      親コメント
      • その Forth とか lisp も、Cかアセンブラで書いてるんですけどね。
         

        親コメント
    •  首記の件、数学・記号論理学的な包含関係(必要十分条件)の観点で、原理的に「出来ること」と「出来ないこと」を論じると、

      (1)マシン語(全て可)はアセンブラの必要条件
      (2)アセンブラはC言語の必要条件(★必要十分条件に近い★)

      となることは言えるのですが、

      (3)C言語、C++言語は、JavaやC#の必要条件

      と言い切れるかと考えると、事がわかりやすいと思います。

       原理的に出来ることの可能性という意味では、明らかに上記(1)→(2)→(3)の順番です。しかしながら、「人として高度なことをコンピュータにやらせられること」と考えると、どうなんでしょうね。

       個人的には、上記(2)項が、最も「原理的に出来ることと、人として高度なことをコンピュータにやらせられることの、バランスの良いポイント(つまりCやC++程度がちょうど良い)」と感じてしまうのですが、老害ですかね(?)。

      --
      optimized for /.
      親コメント
  • by kumatds (22762) on 2011年05月24日 21時16分 (#1958210) 日記

    アセンブラを無くせ!
    機械語無くせ!
    論理回路無くせ!

    # そして抽象化された概念だけが残った

  • by gedo (7079) on 2011年05月24日 19時47分 (#1958103) 日記
    組み込みだと、Cの代替選択肢って何でしょう? 大抵の組み込みにはC++やC#、Javaは重すぎます。
    特に小規模な方ですと、アセンブラに回帰ですか? それじゃプログラマはもっと地獄でしょ。

    #ツッコミ入ると思うから念押しておくけど、携帯のアプリプロセッサやブルーレイレコーダーとかぐらいの規模(とリソース)のものは、寧ろ例外に近いものですし。
    • by Anonymous Coward on 2011年05月24日 20時07分 (#1958126)
      用途に応じて使い分けるのが普通
      古い組込プロセッサや初期のDSPなんぞは、そもそもコンパイラを用いた開発を想定したアーキテクチャでCさえ使うのに不自由するからアセンブラ以外の選択肢は無い

      Cは古いとか言ってる連中は、上位のアプリケーション・レベルの開発しかやったことがなくて、それ以外の世界を知らないお馬鹿さん
      例えば、web関連のアプリケーションなんかは既存の資産(ライブラリ等)を要領よく使って大量のコードを効率よく開発しなければいけないのだから、設計の新しいそれなりのプログラミング言語を使用するのが当然
      そういう用途にはRubyみたいな言語を使えばよい
      そうやって作ったアプリケーションもいわば使い捨てだから(数年でシステム更新して使用年限が短い)、たとえ将来Rubyの開発が頓挫したとしても、その時には他の言語を使ってサッサと作り直してしまえばそれでよい
      そういう世界しか知らない人にはC/C++だとかAdaを用いる開発を理解することなど出来ないのでしょう

      Fortranはどう見ても古い言語だが過去の資産が多いし、基本的には静的なメモリ割当をする言語だからスパコン等の高速な数値演算プログラムの開発には都合が良いので(効率よいコードを吐くコンパイラを作りやすいので)まだまだ死にはしない(最新のFortranも静的なメモリ・アロケーションしか出来ないと言っているのでは無い)
      親コメント
    • by Ryo.F (3896) on 2011年05月24日 22時10分 (#1958273) 日記

      組み込みだと、Cの代替選択肢って何でしょう?

      Forth。

      親コメント
    • by Anonymous Coward on 2011年05月24日 23時47分 (#1958357)
      C++をJavaやC#と同列に扱うのは、間違いだと思う。
      あの言語は、使い手次第でCにより近くなったり、Javaにより近くなったり、どちらでもない独自の道を歩んだりする。
      良く言えば、使い手次第であらゆるニーズに応える成果を挙げられる言語。悪く言えば、使い手次第でどんなニーズにも適合できなくなる言語。
      C++がJavaなどと比べ劣勢なのは、その自由奔放さゆえにかえって使い手の技量が必要とされてしまいがちな点と、より上の立場で、管理するのが困難である点が大きいと思う。
      どの水準で使うのかを決めるばかりでなく、使う人が実際にその水準で使っているか(その水準で使える技能を持っているか)を考慮しなければならないのは、非常に難しいだろう。
      親コメント
    • 多分Lispの人はLispで組み込み、てな具合にその人の得物を武器に闘うのではないでしょうか?
      // COBOLで組み込みな人にボコられてみたいと一瞬思った。
      親コメント
    • 死ねというか、良く言えば枯れてる、悪く言えば既に死んでるってことでしょ

      アセンブラより簡単で、Javaより軽いからCを使う、という構図なら、
      マシンパワーは上がることがあっても下がることは考えにくいので、
      Javaが軽くなったらCなんて使わない、ということになりえる

      今のところマシンパワーに対して最適なのがCだというだけで、
      Javaでサクサク動くならJavaを使うでしょ

      #大昔はアセンブラで作るのが常識だったわけで、今の常識が将来ずっと常識ということは考えにくい
      親コメント
      • by Anonymous Coward on 2011年05月24日 20時58分 (#1958192)

        マシンパワーは上がることがあっても下がることは考えにくいので、
        Javaが軽くなったらCなんて使わない、ということになりえる

        なんかC++でもメモリ沢山積めるようになってマシンパワー上がれば問題ないとか言われてたけど
        結局マシンパワー上がるとCも更に軽くなるのであった

        親コメント
  • by Anonymous Coward on 2011年05月25日 9時15分 (#1958533)

    卜部昌平氏のblogを引用させていただきますと、

    > 他のツールを使えば全然ダメじゃない人でもCではダメなコードを書いてしまう、これがポイントなのですよ。かくいう自分もCで書いちゃったらメンテナンスしやすい見通しの効いたコードになる自信はちょっとないです。Cで綺麗なコードを書きましょうってのは道具というか、お膳立てが足りなすぎるのです。

    という逃げ口上がありますが、要するに氏はそもそも他の補助がないと綺麗なコードを書くことができない様子です。

    「C死ね」に反論している諸兄は、Cでも綺麗なコードを書ける人たちでしょうから、ここにギャップが生まれているのだと思います。

    古くからCを使っている人たちは、綺麗なコードを書く努力をし、それらを克服し続けてきているものと信じています。

    私はCを使う一番の理由は「システムを軽くする」です。
    (もちろん、大規模システムでCのみを使うのはナンセンスだと思うし、それをしている人はすでに居ません)

    ※「私」がACなのは申し訳ないと思っています。

  • 敬意がないな (スコア:3, すばらしい洞察)

    by kcg (26566) on 2011年05月25日 11時54分 (#1958648) ホームページ 日記

    主張の中身云々よりも死ねという言葉の選択がとても嫌ですね。
    C言語だって人が作ったものなのだから。

  • by Anonymous Coward on 2011年05月24日 19時40分 (#1958095)

    ・確かにCなくしては人類(のみならず有性生殖するあらゆる生物)は存続できないが、それはCの存在を赦す理由にはならない。
    (中略)
    結論:リア充爆発しろ。

  • 確かにCに輪をかけてさらにダメな類のプログラミング言語は存在する(例を挙げるならC++)

    C叩きはC使いの方に任せますが、C++使いは、こういった無根拠な印象に基くC++叩きと、日夜戦っています!

    #あとJavaを代替案として挙げるというのはどうなんだろう…言語本体とは関係ない所で今将来がとても危うい感じがするのに…

    • by Anonymous Coward on 2011年05月24日 20時01分 (#1958117)

      EffectiveC++とか見てみろ。
      あれはやっちゃダメ、これはすべきでない、それはしないほうが良い、のオンパレードじゃないか。
      そんなものをいちいち気にしないとまともなプログラムが出来上がらないのは欠陥品と言わざるをえないだろう?

      親コメント
  • by Anonymous Coward on 2011年05月24日 20時09分 (#1958127)
    既に先輩諸氏が上で述べられているように、組み込み系、カーネルやデバドラ等、プリミティヴな処理を行うプログラムにCは必要不可欠。
    というか、「ある程度」機種依存性を排除し易い高級マクロアセンブラみたいなものと思えば良いかと。
    標準でガベージコレクタがないのだから。

    ただ、好きか嫌いかと言われれば、私は嫌い。
    言語仕様に柔軟性があり過ぎて、厳密性に欠ける。故にバグの誘発要因になっている。
    複雑な処理をキッタネー一行に押し込んでカッコ付けるバカが後を絶たない。
  • by Anonymous Coward on 2011年05月24日 20時09分 (#1958129)
    SSE/AVX やら OpenMP やら GPGPU やら使おうとすると、
    現実的な解は C ってことになるんでないの?
    FORTRAN とかでも出来るかもしれないけど。
    素人でも手に入る入門書は C を前提にしてるよね。
    そんなこんなで、まだまだ C は必要だと思う。
  • 今の状況では,Cを使う機会はないんですが,
    死ねとは思わないなあ。
    まあ,最近の緩い言語の型システムでCを使うとイタイ目にあうことは確かだけど,
    言語の違いと特色みたいなもんだからなあ・・・
    原始的なプログラム作るには,Cが一番だと思うけどなあ。早いし。
    まあ,使わないけどw

  • by CowardDuck (25674) on 2011年05月24日 22時26分 (#1958291)

    タレコミのリンク先で書かれている程度のことはとっくにわかっていること。

    その程度のことを念じているだけで C が死ぬならとっくに死んでる。

  • by Anonymous Coward on 2011年05月24日 22時50分 (#1958311)
    やっぱ、Cで仕事させられることが苦痛だとかなんかなぁ...

    俺は言語なんか何でも良いや、Cだろうと、Javaだろうと、Rubyだろうと、
    JavaScriptだろうと(VBはちと勘弁して欲しい気もするけど...)。
    職業プログラマにとっては仕事なんだもん、書けと言われりゃ言語なんざ選ばんよ。
    そりゃ得意とする言語や苦手とする言語もあるけど、二週間もやりゃ大抵慣れるだろ。
    それよか、Javaから入った小僧が書き散らすCのコードとかの方が、
    死ねとは言わんが、できたら消えてほしいなぁ。

    言語なんて所詮道具だし、使う人間の方が問題な気がする。
    特定言語を貶す = 自分の事を貶す、て事なんじゃないの?

    俺がVBを苦手とするのも、VBではなくて俺の責任だよ。
  • トラウマ (スコア:2, おもしろおかしい)

    by Anonymous Coward on 2011年05月25日 0時47分 (#1958407)
    そいつ、絶対「はじめてのC」にしくじってトラウマを負ってるだろ
  • どうも周知徹底が不足しているようなので再度のお願いとなりますが、ruby死ね。

    rubyでしか書けない類のプログラムは存在しない(例を挙げるならwebサービス)ので、それはrubyの存在を赦さない理由になる。
    確かにrubyに輪をかけてさらにダメな類のプログラミング言語は存在する(例を挙げるならvisual basic)が、それはrubyの存在を赦す理由にはならない。
    確かにrubyでしか書けないダメプログラマは存在する(例を挙げてほしければここにおまえの名前を入れろ)が、それはrubyの存在を赦す理由にはならない。
    結論:ruby死ね。

    煽り。そんだけ。
  • ちょっと前までは、Linuxのソースをコンパイルし直しをしてやっと動かせたりが
    当たり前になっていましたが、今では、ソースすら使わないパターンが増えています。
    それだけ皆さんが頑張ってくれているのだと感謝。

    私も貢献出来たら良いのですが、中々スキル不足なので貢献出来る所まで達していません。
    今の所、使って不具合などあったら報告するだけの私です。

    Cが無いと、少なくともUNIX全般は活動停止してしまうと危惧します。

    • by Ryo.F (3896) on 2011年05月24日 20時04分 (#1958123) 日記

      Cが無いと、少なくともUNIX全般は活動停止してしまうと危惧します。

      うん。だから元のブログ [tumblr.com]には、

      すでにCで書いてある既存のプログラムを今すぐ根絶やしにするのは難しかろう。過去にそれらが果たしてきた歴史的役割まで否定するつもりもない。

      と書いてあるんじゃないですかね。

      親コメント
  • by saitoh (10803) on 2011年05月24日 19時59分 (#1958114)
    Cについていけなくてもっと緩い言語しか扱えない奴の負け惜しみですよ。いちいち相手にしなくて良いよ。

    そういうことにしておこう。きっとそうだ。

  • by Anonymous Coward on 2011年05月24日 20時44分 (#1958176)
    そう、学校(相当)の場でどのような言語を教えれば良いのか、大変微妙なのです。

    入門としてCを扱う? アセンブラまで囓るようなカリキュラムならいいが、
    ソートアルゴリズム習うのにポインタの扱いに習熟する必要あるんですか?
    むしろLLや何かの方が学習には向いているのでは?
    いやいやしかしCを扱えないと卒業後に困るのではないか? 今時はCのみでは役にたたない?
    ではC++ではどうか? しかし学習に時間がかかりすぎる。初心者が手を付けるには向いていない。
    ではC#か? Windows前提というのは如何なものか。javaの方が良いのではないか?(以下略

    ・・・と延々と巡り巡ってこれと言った定番が無いのでCとpascalみたいな妙な実習になったりとか。
    Cはほとんど知らないがLLなら1つある程度習いました、ってな学生が社会に受け入れられる時代は来るかな?
    基礎教養としてCは適切な学習言語だと思うが、実用言語として別の物を習熟させたほうがいいと思うんだけどね。
    そんな時間はないから、原理から入るとC、そこを無視するといきなりflashで作品作り、みたいなことに。
typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...