トップページ⇒tech
985コメント258KB

C言語を完全に駆逐するためには

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/05/07(水) 20:11:42
どうすればいい?
0002デフォルトの名無しさん2008/05/07(水) 20:13:02
クソすれ立てる人間を完全に駆逐するためには

どうすればいい?
0003デフォルトの名無しさん2008/05/07(水) 20:17:12
駆逐する意図が分からん
0004デフォルトの名無しさん2008/05/07(水) 20:30:05
C言語は生産性低い。
コーディングしててイライラする。
もうC言語はうんざりだ。
しかしパフォーマンスやらなんやらの点からC言語を選ばざるを得ないこともある。

C言語より全ての面で優れた言語があればもうCをやらなくていいよね?
「〜だからC言語で開発しよう。」という理由をこの世からひとつ残らず消したい。
0005デフォルトの名無しさん2008/05/07(水) 20:42:07
そんなキミにD
0006デフォルトの名無しさん2008/05/07(水) 20:43:26
>>4
で、なぜはほんとう?
0007デフォルトの名無しさん2008/05/07(水) 21:11:28
言語厨召喚スレ
0008デフォルトの名無しさん2008/05/07(水) 21:37:00
Cのパフォーマンス、スクリプト言語並のゆるい型付け、
Smalltalkから受け継いだオブジェクト指向、
そう、つまりObjective-Cの出番だな。

自分で言っときながら、これはねーよw
0009デフォルトの名無しさん2008/05/07(水) 21:41:29
MISRAやら、あの系統のコーディング規約とかを目にすることがあるけど、
あそこまでガチガチにするなら、素直にPascalつかっとけよって感じだけど。
0010デフォルトの名無しさん2008/05/07(水) 21:50:45
C++はCを(完全には)駆逐することは出来なかった。
なぜ?
0011デフォルトの名無しさん2008/05/07(水) 22:09:35
慣れてるから。実績があるから。
切替えによる不具合がないといいきれないから。
教育コストがかかるから。機能的に必要ないから。
0012デフォルトの名無しさん2008/05/07(水) 22:14:30
そりゃ、ハードウェアをある程度仮想化できて、汎用性と生産性が高い
アセンブラが登場してくれば……たぶんCとほとんど同じようなものに
なるだけだな、きっと。

0013デフォルトの名無しさん2008/05/07(水) 22:20:38
>>10
MFCとシステムハンガリアンのせいだったりして
0014デフォルトの名無しさん2008/05/07(水) 22:31:59
みんなに聞きたいんだが、みんなの意見はどれに近い?

1.C言語はクソ。早く完全に駆逐したい。
2.C言語はクソだけど、必要。今後も使われるのはしょうがない。
3.C言語はC言語でいいところもある。
4.C言語こそ最強。むしろ他の言語イラネ。

場合によって言語を使い分けすりゃいいだろ。というのは却下。


0015デフォルトの名無しさん2008/05/07(水) 22:52:37
>>14
2
古臭さを感じるけど、メジャーな代替言語が無いからなぁ
あんまり言うと言語厨が沸くから、この辺で
0016デフォルトの名無しさん2008/05/07(水) 23:02:04
>>14
2
環境制限なしでC++ or CならC++を取りたいな。
たぶん組み込みやってるから若干3よりではある。
0017デフォルトの名無しさん2008/05/08(木) 00:22:35
>>10
STLでprintfのような書き方できないから
0018デフォルトの名無しさん2008/05/08(木) 00:29:53
>>10
C++はC++で問題が多いからな
むしろC++は駆逐される側にまわってしまった感がある
0019デフォルトの名無しさん2008/05/08(木) 06:29:39
>>14
1
「ランタイムサポート(GCとか)を必要としない」「メモリに直接アクセスできる」
「アセンブリコードを埋め込める」「動的メモリ確保に依存しない」という特徴のある、
もうすこしマシな言語が欲しい
0020デフォルトの名無しさん2008/05/08(木) 11:19:14
まあ同意なんだけど、それってどれも欠点の裏返しとして槍玉に上がる利点なんだよな
なんか止揚っつーか、パラダイムシフトが欲しい所なのかもね
0021デフォルトの名無しさん2008/05/08(木) 11:51:05
他にCの代替になる優良な言語があるならともかく、
無い現状で駆逐しようとか気勢上げてもしょうがないだろう。
順番が逆。
0022デフォルトの名無しさん2008/05/08(木) 13:49:11
>>21
Javaとか言い出す奴が出そうだなw
0023デフォルトの名無しさん2008/05/08(木) 14:00:28
Cと全く同じことがCが動く全プラットフォームでできて
なおかつ機能が少なくとも同等でパフォーマンスが少なくとも同等な言語があれば
Cは一気に駆逐されると思うぜ

Cは使われるべくして使われている言語だ
Cの代替がない限り、Cは死なないし死ねない
0024デフォルトの名無しさん2008/05/08(木) 14:59:03
それってただのまがいもの

皮肉的につっぱしるなら「少なくともCと同等以上の歴史と運用実績を持ち」も追加してほしす
0025デフォルトの名無しさん2008/05/08(木) 18:33:49
C+CoreFoundation
C+GObject

みたいなので我慢出来ない?
0026デフォルトの名無しさん2008/05/08(木) 18:48:41
>>21
だからCの代替になる言語を作ろう(あるいは見つけてこよう)という話じゃないの?
0027デフォルトの名無しさん2008/05/08(木) 20:03:31
>>8
Apple信者の俺でもそれはねーよw
0028デフォルトの名無しさん2008/05/08(木) 20:41:35
ハードウェアが根本から変わったらCは駆逐される。
ハードウェアがノイマン型のうちはCは無くならんよ。
0029デフォルトの名無しさん2008/05/08(木) 21:51:45
Cには標準で動的にサイズが変わるコレクションが無いっていうのがいや。
0030デフォルトの名無しさん2008/05/08(木) 22:05:50
でも、それで充分な内容もたくさんあるってことだね。
0031デフォルトの名無しさん2008/05/08(木) 22:45:42
>>26
結局Cみたいなもんしかできあがらんだろうなってのが
大方の意見だと思われ。
0032デフォルトの名無しさん2008/05/09(金) 01:53:40
OSでUNIX(POSIX)的なものを完全に駆逐できれば可能かもね
0033デフォルトの名無しさん2008/05/09(金) 02:30:25
Inferno を思い出した
0034デフォルトの名無しさん2008/05/09(金) 03:21:42
>>29
裏で勝手にメモリ取らないというのがCのポリシーだろ。
その意味でstrdupは異端。
0035デフォルトの名無しさん2008/05/09(金) 03:52:58
>>34
>Cのポリシー

初めて知った。どこかに明文化されてる物なの?
0036デフォルトの名無しさん2008/05/09(金) 09:17:04
俺解釈だろ
0037デフォルトの名無しさん2008/05/09(金) 12:37:27
>>32
Unixと共に産まれUnixと共に滅ぶのならCも本望だろう。
どっちも死にそうに無いけど。
0038デフォルトの名無しさん2008/05/09(金) 17:20:01
ハード寄りな言語がCしか無いのってのが現状。
カーネルやデバイスドライバとかいじろうとするとCしか選択肢がないんだよ。
0039デフォルトの名無しさん2008/05/09(金) 17:31:17
tomoyo Linux最高
0040デフォルトの名無しさん2008/05/09(金) 19:19:10
Cの文法上の不満点は?
0041デフォルトの名無しさん2008/05/09(金) 19:47:02
そういうレベルじゃないだろ
0042デフォルトの名無しさん2008/05/09(金) 19:56:30
>>40
宣言の文法は、異常。
もっとスッキリできなかったのか?
0043デフォルトの名無しさん2008/05/09(金) 20:22:02
Cはタイプ量が多くなる。
他の先進的な言語と比べて10倍くらいタイプが必要だろ。

0044デフォルトの名無しさん2008/05/09(金) 20:26:39
それはGUIみたいな無駄かつ無意味な処理を書くから。
0045デフォルトの名無しさん2008/05/09(金) 20:29:29
C++はC+程度に留めておけばCに止めを刺せたかもしれないのにな。
ちょっと欲張りすぎたね。
0046デフォルトの名無しさん2008/05/09(金) 20:39:26
Cの宣言の文法は一貫性があって良いと思うんだけど、なかなか賛同が得られない
0047デフォルトの名無しさん2008/05/09(金) 20:55:38
文法にすら不満が無いのならなんで駆逐させたいんだ
0048デフォルトの名無しさん2008/05/09(金) 21:52:40
クラスが無いのが不満。
CでOOぽくコーディングするとキモくなる。

0049デフォルトの名無しさん2008/05/09(金) 21:59:45
>>48
いやそれCの不満点として挙げる必要ないだろw
ま、C++使っちゃいけない場合が多すぎるのもあるけど
0050デフォルトの名無しさん2008/05/09(金) 22:01:40
関数プログラミングができないのが不満
0051デフォルトの名無しさん2008/05/09(金) 22:17:26
今時、クロージャもジェネレータもリストの内包表記もパターンマッチも型推論も
総称関数もイテレータもクラスもインターフェイスも継承も遅延評価も参照透明性も
名前空間もモジュールシステムも高階関数もガベージコレクションも例外機構も、
その他色んな物が入っていないのが不満。

という事は無いな(まあ正直な所、少しはあるけど)。

Cが良いのは慎み深い所。21世紀になってもオブジェクト指向の追加すらされてない
だなんて何と禁欲的で信頼に値する事か。あと92年くらいは使われ続けるんじゃない
だろうか。
0052デフォルトの名無しさん2008/05/09(金) 22:23:45
GCは要らない。GCなんか入れたらC言語の利点が失なわれてしまう
代数的データ型とか、制限付きの無名関数とか、強力なマクロとか、パターンマッチとか、
そういうこまごましたものが欲しい
0053デフォルトの名無しさん2008/05/09(金) 22:28:22
オブジェクトシステムを入れるなら単一継承にして欲しいし、そうなるだろうな
0054デフォルトの名無しさん2008/05/09(金) 22:30:48
Cのリプレースを目指すわけじゃなく単純に哲学を受け継いだ正常進化系の言語ってありそうなもんだけど
結局メジャーになるようなものは出てきてないな。
0055デフォルトの名無しさん2008/05/09(金) 22:31:03
そんな難しい機能入れたって、C厨に使えるわけないだろ。
0056デフォルトの名無しさん2008/05/09(金) 22:38:40
1980〜1990年頃まではfortranとcobolは駆逐されない。とみんなが考えていた。
まあ「駆逐」という言葉の定義に依存する話だ。
この頃から現在に至るまでのコンピューティングの変化を書ききることは出来ないけれど。
まあ「同程度の変化が起これば主流言語の交代が起こるのではないか」と愚考する。
あるいは現在と同様の状態が長い間、続くのかもね。
0057デフォルトの名無しさん2008/05/09(金) 22:39:29
今の時代にCだけしか使っていない人間が生き残っているとも考えづらいし、
高級言語はそれなりに触っている事だろう。
0058デフォルトの名無しさん2008/05/09(金) 22:42:31
>>57
入社してCの部署に配属されて、Cしか触ったことないってやつとかいっぱいいそうだけど。
0059デフォルトの名無しさん2008/05/09(金) 22:47:50
ハード寄りの組み込みの人たちとかUNIX系OSのカーネル開発者系の人達とかはたとえ
先進的言語について精通していたとしても自分の仕事ではCを使う、みたいな感じで
生き残り続けるんじゃない?
0060デフォルトの名無しさん2008/05/09(金) 22:52:19
>>58
うちの会社では見た事無いな。Javaの研修がほぼ必須になってるし。
組み込み機器メーカーのソフト開発部門とかだとC専業部隊があるのかな。
0061デフォルトの名無しさん2008/05/09(金) 23:06:24
>>56
コボルはまだまだ残る
なぜか残る
0062デフォルトの名無しさん2008/05/09(金) 23:46:18
>>48
そこでObjective-Cですよ!
…ごめん俺もなんか無理>>8

しかし何でObjective-Cは微妙に思えるのかねぇ。
0063デフォルトの名無しさん2008/05/09(金) 23:58:47
C言語と一緒にCシェルも駆逐してくれ。
0064デフォルトの名無しさん2008/05/10(土) 00:02:17
むしろBシェルがイヤっす
あーいう曖昧なのを許容するなんて出来ない
あれがデフォなせいでLinuxやら使いたくない
0065デフォルトの名無しさん2008/05/10(土) 00:19:13
何か曖昧だったっけ?
0066デフォルトの名無しさん2008/05/10(土) 00:24:05
>>54
結局のところノイマン型コンピュータ言語の根本的な変革って二つしか無い。
一つは構造化で一つはオブジェクト指向。
Cが進化するとしたらオブジェクト指向を取り入れるくらいなもので、実際
そのように進化してると思うが。
0067デフォルトの名無しさん2008/05/10(土) 01:46:46
わざわざノイマン型コンピュータと明言する必要でもあるのか?
0068デフォルトの名無しさん2008/05/10(土) 06:08:06
まぁ、出世してエラくなれば、言語使ってPGなんてしなくなるから、
どうでもよくなるよ。
0069デフォルトの名無しさん2008/05/10(土) 06:55:54
仮面ライダーBLACKが一度死んでRXとして復活したように
Javaも一度死ぬべきだ
そして真の神仕様の言語として復活すべし
0070デフォルトの名無しさん2008/05/10(土) 07:10:58
逆だな、Javaはもっとカオスになってくれないと
リファクタリングしたときの効果が薄くていかん。
D言語みたいに中途半端になってしまう。
0071デフォルトの名無しさん2008/05/10(土) 08:08:13
>>1
先ずは、KernelとコンパイラをC以外で書いてみれば?
0072デフォルトの名無しさん2008/05/10(土) 08:31:08
javaとC#とあとはオブジェクト指向スクリプト言語しか使ったこと無い俺に
C++がCより劣ってる点を教えてくれ。
0073デフォルトの名無しさん2008/05/10(土) 08:56:37
カーネルはともかく、コンパイラをCでかく必要って本当にあるのか?
入力はただの文字列だし、出力だってただの文字列だろ。
直接ハードを叩くわけでも無し。
ていうかコンパイラこそ、リッチな機能をもった高級言語で書くべきなんじゃ。
でも世の中のコンパイラは大抵Cで書かれてるんだっけ?
0074デフォルトの名無しさん2008/05/10(土) 09:03:16
>>73
しょうもない質問で申し訳ない。

コンパイラの出力って文字列なの?バイナリも文字列の一種?
0075デフォルトの名無しさん2008/05/10(土) 09:04:31
>>72
斜め上の機能を使いにくい
GCはまあ使えるがcall/ccとか無理ぽ
0076デフォルトの名無しさん2008/05/10(土) 09:06:03
>>72
すぐにコンパイル・リンクにめちゃくちゃ時間がかかるようになること。
0077デフォルトの名無しさん2008/05/10(土) 09:06:31
>>74
しっ!そこ突っ込んじゃ可哀想!
0078デフォルトの名無しさん2008/05/10(土) 09:12:02
俺の理解ではコンパイラはアセンブラを吐いて
アセンブラがバイナリを吐くということになっている。
アセンブラまで含めてのコンパイラというなら
コンパイラの出力はバイナリ。
0079デフォルトの名無しさん2008/05/10(土) 09:15:44
>>66
オブジェクト指向っていうのは、構造化の延長線上じゃないの?
0080デフォルトの名無しさん2008/05/10(土) 09:19:17
>>73
そこらへんの高級言語よりは速いコードを生み出すと信じられているから。
0081デフォルトの名無しさん2008/05/10(土) 09:29:21
http://shootout.alioth.debian.org/debian/

Cは全てにおいて最速ではないが、かなりの範囲で最速になるな。
機械語に近くて、コンパイラ屋にも人気のある言語なだけに。
0082デフォルトの名無しさん2008/05/10(土) 10:33:28
>>79
C++とかJavaとかCの延長線上の言語でオブジェクト指向を見ると
そう見えるかもしれんね
0083デフォルトの名無しさん2008/05/10(土) 11:24:39
>>72
バイナリがやたらでかくなる
ネームマングリングの所為でシンボルダンプやスタックトレースが読み辛い
0084デフォルトの名無しさん2008/05/10(土) 12:26:13
>>72
技量の低い私にはコンパイラの出力がどーなっているか C は分かっても C++ はわからない。
私のような技量の低いプログラマーを駆逐する方が本来の目的に近づけるのかも。
0085デフォルトの名無しさん2008/05/10(土) 12:31:12
>>78
では、「んなもん実装次第」だということを理解しましょう。
0086デフォルトの名無しさん2008/05/10(土) 17:08:29
(1)多くのOSがC言語の関数群として表現されている
(2)他言語のコンパイラも多くはC言語で書かれている。
(3)(1,2)を他言語に換装する作業が面倒&標準言語が未定。

個人的にはObjective-Cに興味があります。
(コイツは言語の名称で損していないだろうか?)
0087デフォルトの名無しさん2008/05/10(土) 17:22:33
Objective-CってMac専用だろ
その時点でCにとって代わるのは無理
0088デフォルトの名無しさん2008/05/10(土) 18:46:40
>>73
そりゃ自分の言語がいろんなプラットフォームで動くようにしたいからでしょ。
だから言語は C でかくか、JavaVM で動かすかのどっちか。
変態系は lisp で書いたりするけど。
0089デフォルトの名無しさん2008/05/10(土) 19:10:35
>>87
専用って訳じゃないと思う、、(^^;
ttp://wwwa.dcns.ne.jp/~nito/objective-c/answer-17.html

無理なのには同意。objcいいとは思うんだけどね、、
0090デフォルトの名無しさん2008/05/10(土) 22:28:04
そんなん過渡期にこういうのありましたよ、って紹介でしか知りません
0091デフォルトの名無しさん2008/05/10(土) 23:40:28
>>86
> (1)多くのOSがC言語の関数群として表現されている 

これは別にどうでもいい要素じゃん。
PascalとかVBからでもAPI呼び出したりできてるし。
0092デフォルトの名無しさん2008/05/10(土) 23:50:51
Objective-CってMac専用ってイメージなのか。
俺はずっとNext専用ってイメージしかなかったから、ちょっとびっくり。
0093デフォルトの名無しさん2008/05/11(日) 05:42:43
Objective-Cは取り敢えず[]で括るのがキモイ
0094デフォルトの名無しさん2008/05/11(日) 11:19:20
C++でガベージコレクション使わんのがある程度Cの代用に
なるんじゃないのか
0095デフォルトの名無しさん2008/05/11(日) 11:49:29
最近はC++の記法の方がキモく感じられるようになった。
Objective-Cはかなり良いのだけど、これ以上広がることはないだろうな、まったく残念ながら。
0096デフォルトの名無しさん2008/05/11(日) 12:05:21
ちょっと興味はあるんだが検索してもサンプルコードらしきコードが全然出てこないな
0097デフォルトの名無しさん2008/05/11(日) 12:16:54
オブジェクト指向言語の比較
http://hmdt.jp/oop/index.html

ちょっと興味深かった。
0098デフォルトの名無しさん2008/05/11(日) 12:53:49
>>86
2 は重要かな?
Lisp のコンパイラは大抵 Lisp 自身で書かれているし、
確認していないけど javac は C++ で書かれてるよね?
その他、JavaScript のコンパイラは Java, OCaml, SML,
JavaScript, C++, etc. で書かれた実装があったと思う。
0099デフォルトの名無しさん2008/05/11(日) 14:26:14
最初のC++コンパイラはCで書くしかないからな
そのコードを捨ててC++で書き直す意味が分からん
0100デフォルトの名無しさん2008/05/11(日) 14:35:38
>>99
>最初のC++コンパイラはCで書くしかないからな

cfront は C++ で書かれていたらしいが?
0101デフォルトの名無しさん2008/05/11(日) 14:53:21
それどうやってコンパイルしたんだろ
手か
俺は絶対に嫌だが
■ このスレッドは過去ログ倉庫に格納されています