
Cは既に時代遅れ? 308
ストーリー by hylom
C使いの皆様のコメントお待ちしております 部門より
C使いの皆様のコメントお待ちしております 部門より
あるAnonymous Coward 曰く、
「どうも周知徹底が不足しているようなので再度のお願いとなりますが、C死ね。」などと言われるように、いつの間にかCは忌避すべき言語に成り下がったらしい。
/.J読者諸兄にはCでのプログラミングに造詣が深い方も多数いらっしゃると思いますが、どうでしょうか?
個人的には、自分が気に入らないからといって他人の志向をとやかくいうのもどうかと思いますが、COBOLerとかFORTRANマンセーな方々の意見も聞いてみたい。
ちなみにはてなブックマークのコメントでは賛否両論が寄せられている。
そこまで言うならお前が殺してみろよ (スコア:4, すばらしい洞察)
もちろんアセンブリで書けないなんて言うわけがないが、ヨイショしてるJavaやC#でKernelやブートローダが書けるんなら誰も苦労はしねえよと。
こういうハードウェアよりのものを、どんなスペックのマシンでも問題なく動かせるような言語、そしてコンパイラを作ってからこういう事言えよって思う。
C死ねっていう奴らって対案出さずにただ死ねだの邪悪だのって言うばかりで、何の対案も出さない。
*本当に*殺すつもりがあるんならまともな対案出して、世界中が安心してCを捨てられるようになってから殺してくれ。
Re:そこまで言うならお前が殺してみろよ (スコア:2)
例えばOpen FirmwareではForthでブートローダが書けるでしょうし、Lispで書かれたブートローダもあります。
その他C以外の言語で書かれたOSは多くあります。歴史的にメジャーにならなかったというだけです。
Re:そこまで言うならお前が殺してみろよ (スコア:2)
その Forth とか lisp も、Cかアセンブラで書いてるんですけどね。
Re:そこまで言うならお前が殺してみろよ (スコア:2)
召喚されたようなので。
Whitesmith Cですか。昔のことなのであいまいな記憶で書くので間違いがあるかもしれません。確かに2.xのころのライブラリはK&Rの本に出てくるライブラリとは違っていました。ただ、あのころはいわゆる標準ライブラリという規格がなかったので、そんなものかと思っていました。それにIdrisの上のプログラムを作るときはそれしかなかったし、それ以外では組み込み用のファームウェアのコードをはかせていたので、Whitesmithのライブラリはほとんど使っていませんでしたね。
3.xになってANSIの規格に準拠するころからはいわゆる普通のCのライブラリもついていたような気がします。まあWhitesmithの創業者でANSIのCの標準化委員会のメンバーのP.J.Plauger自身が標準のCライブラリの本を書くぐらいだから当たり前ですね。
後はあのインデントのスタイルに好き嫌いがありましたね。今でもwhitesmithのスタイルはEmacsのc-modeでサポートされていますが。
Whitesmith自体は後にどこかの会社に吸収されたと聞きましたが、そのときにはもう前の会社にいなかったのでよく分かりません。ADaC [adac.co.jp]の中の人が詳しいでしょうけど。
あ゛、ここまで書くときっと素性が知れているけど、まあIDでいいか。
数学・記号論理学的(?)包含関係どうなってるんでしょうね? (Re:そこまで言うならお前が殺してみろ (スコア:2)
首記の件、数学・記号論理学的な包含関係(必要十分条件)の観点で、原理的に「出来ること」と「出来ないこと」を論じると、
(1)マシン語(全て可)はアセンブラの必要条件
(2)アセンブラはC言語の必要条件(★必要十分条件に近い★)
となることは言えるのですが、
(3)C言語、C++言語は、JavaやC#の必要条件
と言い切れるかと考えると、事がわかりやすいと思います。
原理的に出来ることの可能性という意味では、明らかに上記(1)→(2)→(3)の順番です。しかしながら、「人として高度なことをコンピュータにやらせられること」と考えると、どうなんでしょうね。
個人的には、上記(2)項が、最も「原理的に出来ることと、人として高度なことをコンピュータにやらせられることの、バランスの良いポイント(つまりCやC++程度がちょうど良い)」と感じてしまうのですが、老害ですかね(?)。
optimized for /.
Re:そこまで言うならお前が殺してみろよ (スコア:2, すばらしい洞察)
その話にしろ過去の功績の話にしろ、突っ込まれたら反論できない部分に予防線を張ってるだけにしか見えない罠。
存在が赦せないというならそこを例外として認めるような事を言うんじゃなくて完全に抹殺してみせろ、と。
Cよりもっと低級な言語も無くそう (スコア:4, おもしろおかしい)
アセンブラを無くせ!
機械語無くせ!
論理回路無くせ!
# そして抽象化された概念だけが残った
組み込みな人は死ねってこと? (スコア:3, 興味深い)
特に小規模な方ですと、アセンブラに回帰ですか? それじゃプログラマはもっと地獄でしょ。
#ツッコミ入ると思うから念押しておくけど、携帯のアプリプロセッサやブルーレイレコーダーとかぐらいの規模(とリソース)のものは、寧ろ例外に近いものですし。
Re:組み込みな人は死ねってこと? (スコア:5, すばらしい洞察)
古い組込プロセッサや初期のDSPなんぞは、そもそもコンパイラを用いた開発を想定したアーキテクチャでCさえ使うのに不自由するからアセンブラ以外の選択肢は無い
Cは古いとか言ってる連中は、上位のアプリケーション・レベルの開発しかやったことがなくて、それ以外の世界を知らないお馬鹿さん
例えば、web関連のアプリケーションなんかは既存の資産(ライブラリ等)を要領よく使って大量のコードを効率よく開発しなければいけないのだから、設計の新しいそれなりのプログラミング言語を使用するのが当然
そういう用途にはRubyみたいな言語を使えばよい
そうやって作ったアプリケーションもいわば使い捨てだから(数年でシステム更新して使用年限が短い)、たとえ将来Rubyの開発が頓挫したとしても、その時には他の言語を使ってサッサと作り直してしまえばそれでよい
そういう世界しか知らない人にはC/C++だとかAdaを用いる開発を理解することなど出来ないのでしょう
Fortranはどう見ても古い言語だが過去の資産が多いし、基本的には静的なメモリ割当をする言語だからスパコン等の高速な数値演算プログラムの開発には都合が良いので(効率よいコードを吐くコンパイラを作りやすいので)まだまだ死にはしない(最新のFortranも静的なメモリ・アロケーションしか出来ないと言っているのでは無い)
Re:組み込みな人は死ねってこと? (スコア:2, 参考になる)
最速の memset64 を求めて [tumblr.com]
Re:組み込みな人は死ねってこと? (スコア:2, すばらしい洞察)
組み込みだと、Cの代替選択肢って何でしょう?
Forth。
Re:組み込みな人は死ねってこと? (-10000, よけいなもの) (スコア:2, 興味深い)
Forthって書いた人は、多分解ってて書いてるよ。
MZ-80BにFIG-Forthを入れてみたことあるし、Rgy-ForthやTitってのも興味もって見てたことある。でも、Forthだと、小さな組込み的なプログラムを、実機を動かしながら手早く作るにはむいてるとは思うけど、ドキュメント性はあんまりよくないと思った。あとで見て、なにしてるのか、自分でもわけわからなくなる。
あと、ワードを注意して作成し用いないと、ワードがワードを呼んで(間接・直接にかかわらず、結局Callだからね)、実行時間はC言語で素直に書いたもののほうが、ひょっとして早いんじゃないかとも思うようになった。ROM化サイズがC言語より短くなるってのは、場合によっては本当だとおもったけど。
優秀なクロスコンパイラや開発ホスト、デバッガ環境が使える状況だと素直にC言語で書いたほうが、後々の為かもしれません。
ということを総合的にみて暗黒面っていってるんじゃ?
Re:組み込みな人は死ねってこと? (スコア:2, すばらしい洞察)
あの言語は、使い手次第でCにより近くなったり、Javaにより近くなったり、どちらでもない独自の道を歩んだりする。
良く言えば、使い手次第であらゆるニーズに応える成果を挙げられる言語。悪く言えば、使い手次第でどんなニーズにも適合できなくなる言語。
C++がJavaなどと比べ劣勢なのは、その自由奔放さゆえにかえって使い手の技量が必要とされてしまいがちな点と、より上の立場で、管理するのが困難である点が大きいと思う。
どの水準で使うのかを決めるばかりでなく、使う人が実際にその水準で使っているか(その水準で使える技能を持っているか)を考慮しなければならないのは、非常に難しいだろう。
組み込みな人は各人各様だから… (スコア:1)
// COBOLで組み込みな人にボコられてみたいと一瞬思った。
Re:組み込みな人は各人各様だから… (スコア:2)
ちょっと昔は実際にこんなのが売られていた。
http://www.ipsj.or.jp/museum/computer/other/0004.html [ipsj.or.jp]
#その昔COBOLで組み込みもやったことあるけど、コンパイラがダメダメでPL/Mに逆戻りってこともあった
Re:組み込みな人は死ねってこと? (スコア:1)
アセンブラより簡単で、Javaより軽いからCを使う、という構図なら、
マシンパワーは上がることがあっても下がることは考えにくいので、
Javaが軽くなったらCなんて使わない、ということになりえる
今のところマシンパワーに対して最適なのがCだというだけで、
Javaでサクサク動くならJavaを使うでしょ
#大昔はアセンブラで作るのが常識だったわけで、今の常識が将来ずっと常識ということは考えにくい
アキレスがダイエットしても亀の体重には追いつけない (スコア:2, おもしろおかしい)
なんかC++でもメモリ沢山積めるようになってマシンパワー上がれば問題ないとか言われてたけど
結局マシンパワー上がるとCも更に軽くなるのであった
Re:組み込みな人は死ねってこと? (スコア:2, すばらしい洞察)
Re:アセンブラサイコー!! (スコア:1)
Re:組み込みな人は死ねってこと? (スコア:2, 興味深い)
ホビー向けの組み込みプラットホームであるArduino [wikipedia.org]は、gccにラッパを被せたC/C++にベースの開発環境になっており、C++なクラスライブラリがある程度用意されています [musashinodenpa.com]
あまり本気でC++してるわけではないですが、
クラスメソッドという形での名前空間の分離は
それだけでもC++の価値はあるんじゃないかと思います。
レベルに差異がありすぎるのではないでしょうか。 (スコア:3, 興味深い)
卜部昌平氏のblogを引用させていただきますと、
> 他のツールを使えば全然ダメじゃない人でもCではダメなコードを書いてしまう、これがポイントなのですよ。かくいう自分もCで書いちゃったらメンテナンスしやすい見通しの効いたコードになる自信はちょっとないです。Cで綺麗なコードを書きましょうってのは道具というか、お膳立てが足りなすぎるのです。
という逃げ口上がありますが、要するに氏はそもそも他の補助がないと綺麗なコードを書くことができない様子です。
「C死ね」に反論している諸兄は、Cでも綺麗なコードを書ける人たちでしょうから、ここにギャップが生まれているのだと思います。
古くからCを使っている人たちは、綺麗なコードを書く努力をし、それらを克服し続けてきているものと信じています。
私はCを使う一番の理由は「システムを軽くする」です。
(もちろん、大規模システムでCのみを使うのはナンセンスだと思うし、それをしている人はすでに居ません)
※「私」がACなのは申し訳ないと思っています。
敬意がないな (スコア:3, すばらしい洞察)
主張の中身云々よりも死ねという言葉の選択がとても嫌ですね。
C言語だって人が作ったものなのだから。
どうも周知徹底が不足しているようなので再度のお願いとなりますが、 (スコア:2, おもしろおかしい)
・確かにCなくしては人類(のみならず有性生殖するあらゆる生物)は存続できないが、それはCの存在を赦す理由にはならない。
(中略)
結論:リア充爆発しろ。
Re:どうも周知徹底が不足しているようなので再度のお願いとなりますが、 (スコア:1, おもしろおかしい)
いや33年ほど生きてますがCの存在は知ってますしCがどのようになされているのかもよく知ってるつもりですけど、自分自身はCの経験がないので良く分かんないです。
CだけじゃなくてAもBも経験無いですが。
#当然AC
Cがないからと言って、BやAは・・・言わせんな (スコア:1, おもしろおかしい)
ACと言えば当然ANTI Cだろ。ブラザー。
Re:どうも周知徹底が不足しているようなので再度のお願いとなりますが、 (スコア:2, すばらしい洞察)
つまりCすら書けないのは論外。
またC叩きと見せかけたC++叩きか… (スコア:2)
C叩きはC使いの方に任せますが、C++使いは、こういった無根拠な印象に基くC++叩きと、日夜戦っています!
#あとJavaを代替案として挙げるというのはどうなんだろう…言語本体とは関係ない所で今将来がとても危うい感じがするのに…
根拠(オフトピ) (スコア:1, 興味深い)
EffectiveC++とか見てみろ。
あれはやっちゃダメ、これはすべきでない、それはしないほうが良い、のオンパレードじゃないか。
そんなものをいちいち気にしないとまともなプログラムが出来上がらないのは欠陥品と言わざるをえないだろう?
Re:またC叩きと見せかけたC++叩きか… (スコア:3, おもしろおかしい)
C使いは慎み深く、奥床しい。「いえいえ、あれは半分、アセンブラでございます」
C使いはツンデレ。
C使いはサディスト。愛しているモノを嬲らずにはいられない変質者。
Re:またC叩きと見せかけたC++叩きか… (スコア:1)
Re:またC叩きと見せかけたC++叩きか… (スコア:2, おもしろおかしい)
そんなエサでおれが釣られるかクマー!(AAry (スコア:2, すばらしい洞察)
というか、「ある程度」機種依存性を排除し易い高級マクロアセンブラみたいなものと思えば良いかと。
標準でガベージコレクタがないのだから。
ただ、好きか嫌いかと言われれば、私は嫌い。
言語仕様に柔軟性があり過ぎて、厳密性に欠ける。故にバグの誘発要因になっている。
複雑な処理をキッタネー一行に押し込んでカッコ付けるバカが後を絶たない。
Re:そんなエサでおれが釣られるかクマー!(AAry (スコア:4, おもしろおかしい)
> カッコ付けるバカが後を絶たない。
おっと、LISPの悪口はそこまでだ。
Re:そんなエサでおれが釣られるかクマー!(AAry (スコア:2)
>複雑な処理をキッタネー一行に押し込んでカッコ付けるバカが後を絶たない。
複雑な処理をカッコに押し込んでカッコ付けるバカが後を絶たない、のまちがいですか?
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
高速化手法にはCが必要 (スコア:2, 参考になる)
現実的な解は C ってことになるんでないの?
FORTRAN とかでも出来るかもしれないけど。
素人でも手に入る入門書は C を前提にしてるよね。
そんなこんなで、まだまだ C は必要だと思う。
まあ,現代のアセンブラ言語みたいなもんやね。 (スコア:2)
今の状況では,Cを使う機会はないんですが,
死ねとは思わないなあ。
まあ,最近の緩い言語の型システムでCを使うとイタイ目にあうことは確かだけど,
言語の違いと特色みたいなもんだからなあ・・・
原始的なプログラム作るには,Cが一番だと思うけどなあ。早いし。
まあ,使わないけどw
Re:まあ,現代のアセンブラ言語みたいなもんやね。 (スコア:1)
情報量および効力0 (スコア:2)
タレコミのリンク先で書かれている程度のことはとっくにわかっていること。
その程度のことを念じているだけで C が死ぬならとっくに死んでる。
なぜ言語を目の敵にするのか? (スコア:2, すばらしい洞察)
俺は言語なんか何でも良いや、Cだろうと、Javaだろうと、Rubyだろうと、
JavaScriptだろうと(VBはちと勘弁して欲しい気もするけど...)。
職業プログラマにとっては仕事なんだもん、書けと言われりゃ言語なんざ選ばんよ。
そりゃ得意とする言語や苦手とする言語もあるけど、二週間もやりゃ大抵慣れるだろ。
それよか、Javaから入った小僧が書き散らすCのコードとかの方が、
死ねとは言わんが、できたら消えてほしいなぁ。
言語なんて所詮道具だし、使う人間の方が問題な気がする。
特定言語を貶す = 自分の事を貶す、て事なんじゃないの?
俺がVBを苦手とするのも、VBではなくて俺の責任だよ。
トラウマ (スコア:2, おもしろおかしい)
どうも周知徹底が不足しているようなので再度のお願いとなりますが、ruby死ね。 (スコア:2, すばらしい洞察)
rubyでしか書けない類のプログラムは存在しない(例を挙げるならwebサービス)ので、それはrubyの存在を赦さない理由になる。
確かにrubyに輪をかけてさらにダメな類のプログラミング言語は存在する(例を挙げるならvisual basic)が、それはrubyの存在を赦す理由にはならない。
確かにrubyでしか書けないダメプログラマは存在する(例を挙げてほしければここにおまえの名前を入れろ)が、それはrubyの存在を赦す理由にはならない。
結論:ruby死ね。
煽り。そんだけ。
最近は使って無いです (スコア:1, オフトピック)
ちょっと前までは、Linuxのソースをコンパイルし直しをしてやっと動かせたりが
当たり前になっていましたが、今では、ソースすら使わないパターンが増えています。
それだけ皆さんが頑張ってくれているのだと感謝。
私も貢献出来たら良いのですが、中々スキル不足なので貢献出来る所まで達していません。
今の所、使って不具合などあったら報告するだけの私です。
Cが無いと、少なくともUNIX全般は活動停止してしまうと危惧します。
Re:最近は使って無いです (スコア:2, すばらしい洞察)
Cが無いと、少なくともUNIX全般は活動停止してしまうと危惧します。
うん。だから元のブログ [tumblr.com]には、
と書いてあるんじゃないですかね。
酸っぱいブドウ (スコア:1)
そういうことにしておこう。きっとそうだ。
教育現場ではかなり前から切実 (スコア:1, 参考になる)
入門としてCを扱う? アセンブラまで囓るようなカリキュラムならいいが、
ソートアルゴリズム習うのにポインタの扱いに習熟する必要あるんですか?
むしろLLや何かの方が学習には向いているのでは?
いやいやしかしCを扱えないと卒業後に困るのではないか? 今時はCのみでは役にたたない?
ではC++ではどうか? しかし学習に時間がかかりすぎる。初心者が手を付けるには向いていない。
ではC#か? Windows前提というのは如何なものか。javaの方が良いのではないか?(以下略
・・・と延々と巡り巡ってこれと言った定番が無いのでCとpascalみたいな妙な実習になったりとか。
Cはほとんど知らないがLLなら1つある程度習いました、ってな学生が社会に受け入れられる時代は来るかな?
基礎教養としてCは適切な学習言語だと思うが、実用言語として別の物を習熟させたほうがいいと思うんだけどね。
そんな時間はないから、原理から入るとC、そこを無視するといきなりflashで作品作り、みたいなことに。
Re:教育現場ではかなり前から切実 (スコア:2)
インタプリタがついてて気軽に始められ、
マルチプラットフォーム対応で応用範囲が広く、
ライブラリも充実していて、教育用途専用というわけではなく、
実用アプリケーションも多数作られているという点で見れば、
Pythonなんかがいいんじゃないですか?
国内でも実習に使っている大学、結構あるみたいですよ。
Re:教育現場ではかなり前から切実 (スコア:2)
今どきのプログラムの計算コストのかなりの割合をメモリアクセスが占めるという重要なことに気がつけて良かったじゃないですか.というわけにはいかないか,教育用ならば.
Re:教育現場ではかなり前から切実 (スコア:2)
JNIを使えば、Javaでもポインタと仲良しさんになれますよ
Re:マニュアル車っぽい (スコア:2)
業の報いを受けているとか?
書いては(仕様変更で)消し、書いては(仕様変更で)消し、書いては……
# 一体何の報いでこんなことを毎日しているんだろう……
Re:超高級言語 (スコア:2)
Yes, milady.
みんつ