どうすればいい?
クソすれ立てる人間を完全に駆逐するためには どうすればいい?
駆逐する意図が分からん
C言語は生産性低い。 コーディングしててイライラする。 もうC言語はうんざりだ。 しかしパフォーマンスやらなんやらの点からC言語を選ばざるを得ないこともある。 C言語より全ての面で優れた言語があればもうCをやらなくていいよね? 「〜だからC言語で開発しよう。」という理由をこの世からひとつ残らず消したい。
そんなキミにD
言語厨召喚スレ
Cのパフォーマンス、スクリプト言語並のゆるい型付け、 Smalltalkから受け継いだオブジェクト指向、 そう、つまりObjective-Cの出番だな。 自分で言っときながら、これはねーよw
MISRAやら、あの系統のコーディング規約とかを目にすることがあるけど、 あそこまでガチガチにするなら、素直にPascalつかっとけよって感じだけど。
C++はCを(完全には)駆逐することは出来なかった。 なぜ?
慣れてるから。実績があるから。 切替えによる不具合がないといいきれないから。 教育コストがかかるから。機能的に必要ないから。
そりゃ、ハードウェアをある程度仮想化できて、汎用性と生産性が高い アセンブラが登場してくれば……たぶんCとほとんど同じようなものに なるだけだな、きっと。
>>10 MFCとシステムハンガリアンのせいだったりして
みんなに聞きたいんだが、みんなの意見はどれに近い? 1.C言語はクソ。早く完全に駆逐したい。 2.C言語はクソだけど、必要。今後も使われるのはしょうがない。 3.C言語はC言語でいいところもある。 4.C言語こそ最強。むしろ他の言語イラネ。 場合によって言語を使い分けすりゃいいだろ。というのは却下。
>>14 2
古臭さを感じるけど、メジャーな代替言語が無いからなぁ
あんまり言うと言語厨が沸くから、この辺で
>>14 2
環境制限なしでC++ or CならC++を取りたいな。
たぶん組み込みやってるから若干3よりではある。
>>10 STLでprintfのような書き方できないから
>>10 C++はC++で問題が多いからな
むしろC++は駆逐される側にまわってしまった感がある
>>14 1
「ランタイムサポート(GCとか)を必要としない」「メモリに直接アクセスできる」
「アセンブリコードを埋め込める」「動的メモリ確保に依存しない」という特徴のある、
もうすこしマシな言語が欲しい
まあ同意なんだけど、それってどれも欠点の裏返しとして槍玉に上がる利点なんだよな なんか止揚っつーか、パラダイムシフトが欲しい所なのかもね
他にCの代替になる優良な言語があるならともかく、 無い現状で駆逐しようとか気勢上げてもしょうがないだろう。 順番が逆。
Cと全く同じことがCが動く全プラットフォームでできて なおかつ機能が少なくとも同等でパフォーマンスが少なくとも同等な言語があれば Cは一気に駆逐されると思うぜ Cは使われるべくして使われている言語だ Cの代替がない限り、Cは死なないし死ねない
それってただのまがいもの 皮肉的につっぱしるなら「少なくともCと同等以上の歴史と運用実績を持ち」も追加してほしす
C+CoreFoundation C+GObject みたいなので我慢出来ない?
>>21 だからCの代替になる言語を作ろう(あるいは見つけてこよう)という話じゃないの?
ハードウェアが根本から変わったらCは駆逐される。 ハードウェアがノイマン型のうちはCは無くならんよ。
29 :
デフォルトの名無しさん :2008/05/08(木) 21:51:45
Cには標準で動的にサイズが変わるコレクションが無いっていうのがいや。
でも、それで充分な内容もたくさんあるってことだね。
>>26 結局Cみたいなもんしかできあがらんだろうなってのが
大方の意見だと思われ。
OSでUNIX(POSIX)的なものを完全に駆逐できれば可能かもね
Inferno を思い出した
>>29 裏で勝手にメモリ取らないというのがCのポリシーだろ。
その意味でstrdupは異端。
>>34 >Cのポリシー
初めて知った。どこかに明文化されてる物なの?
俺解釈だろ
>>32 Unixと共に産まれUnixと共に滅ぶのならCも本望だろう。
どっちも死にそうに無いけど。
38 :
デフォルトの名無しさん :2008/05/09(金) 17:20:01
ハード寄りな言語がCしか無いのってのが現状。 カーネルやデバイスドライバとかいじろうとするとCしか選択肢がないんだよ。
tomoyo Linux最高
40 :
デフォルトの名無しさん :2008/05/09(金) 19:19:10
Cの文法上の不満点は?
そういうレベルじゃないだろ
42 :
デフォルトの名無しさん :2008/05/09(金) 19:56:30
>>40 宣言の文法は、異常。
もっとスッキリできなかったのか?
Cはタイプ量が多くなる。 他の先進的な言語と比べて10倍くらいタイプが必要だろ。
44 :
デフォルトの名無しさん :2008/05/09(金) 20:26:39
それはGUIみたいな無駄かつ無意味な処理を書くから。
C++はC+程度に留めておけばCに止めを刺せたかもしれないのにな。 ちょっと欲張りすぎたね。
Cの宣言の文法は一貫性があって良いと思うんだけど、なかなか賛同が得られない
文法にすら不満が無いのならなんで駆逐させたいんだ
クラスが無いのが不満。 CでOOぽくコーディングするとキモくなる。
>>48 いやそれCの不満点として挙げる必要ないだろw
ま、C++使っちゃいけない場合が多すぎるのもあるけど
関数プログラミングができないのが不満
今時、クロージャもジェネレータもリストの内包表記もパターンマッチも型推論も 総称関数もイテレータもクラスもインターフェイスも継承も遅延評価も参照透明性も 名前空間もモジュールシステムも高階関数もガベージコレクションも例外機構も、 その他色んな物が入っていないのが不満。 という事は無いな(まあ正直な所、少しはあるけど)。 Cが良いのは慎み深い所。21世紀になってもオブジェクト指向の追加すらされてない だなんて何と禁欲的で信頼に値する事か。あと92年くらいは使われ続けるんじゃない だろうか。
GCは要らない。GCなんか入れたらC言語の利点が失なわれてしまう 代数的データ型とか、制限付きの無名関数とか、強力なマクロとか、パターンマッチとか、 そういうこまごましたものが欲しい
オブジェクトシステムを入れるなら単一継承にして欲しいし、そうなるだろうな
Cのリプレースを目指すわけじゃなく単純に哲学を受け継いだ正常進化系の言語ってありそうなもんだけど 結局メジャーになるようなものは出てきてないな。
そんな難しい機能入れたって、C厨に使えるわけないだろ。
1980〜1990年頃まではfortranとcobolは駆逐されない。とみんなが考えていた。 まあ「駆逐」という言葉の定義に依存する話だ。 この頃から現在に至るまでのコンピューティングの変化を書ききることは出来ないけれど。 まあ「同程度の変化が起これば主流言語の交代が起こるのではないか」と愚考する。 あるいは現在と同様の状態が長い間、続くのかもね。
今の時代にCだけしか使っていない人間が生き残っているとも考えづらいし、 高級言語はそれなりに触っている事だろう。
>>57 入社してCの部署に配属されて、Cしか触ったことないってやつとかいっぱいいそうだけど。
ハード寄りの組み込みの人たちとかUNIX系OSのカーネル開発者系の人達とかはたとえ 先進的言語について精通していたとしても自分の仕事ではCを使う、みたいな感じで 生き残り続けるんじゃない?
>>58 うちの会社では見た事無いな。Javaの研修がほぼ必須になってるし。
組み込み機器メーカーのソフト開発部門とかだとC専業部隊があるのかな。
>>48 そこでObjective-Cですよ!
…ごめん俺もなんか無理
>>8 しかし何でObjective-Cは微妙に思えるのかねぇ。
C言語と一緒にCシェルも駆逐してくれ。
むしろBシェルがイヤっす あーいう曖昧なのを許容するなんて出来ない あれがデフォなせいでLinuxやら使いたくない
何か曖昧だったっけ?
>>54 結局のところノイマン型コンピュータ言語の根本的な変革って二つしか無い。
一つは構造化で一つはオブジェクト指向。
Cが進化するとしたらオブジェクト指向を取り入れるくらいなもので、実際
そのように進化してると思うが。
わざわざノイマン型コンピュータと明言する必要でもあるのか?
68 :
デフォルトの名無しさん :2008/05/10(土) 06:08:06
まぁ、出世してエラくなれば、言語使ってPGなんてしなくなるから、 どうでもよくなるよ。
仮面ライダーBLACKが一度死んでRXとして復活したように Javaも一度死ぬべきだ そして真の神仕様の言語として復活すべし
逆だな、Javaはもっとカオスになってくれないと リファクタリングしたときの効果が薄くていかん。 D言語みたいに中途半端になってしまう。
>>1 先ずは、KernelとコンパイラをC以外で書いてみれば?
javaとC#とあとはオブジェクト指向スクリプト言語しか使ったこと無い俺に C++がCより劣ってる点を教えてくれ。
カーネルはともかく、コンパイラをCでかく必要って本当にあるのか? 入力はただの文字列だし、出力だってただの文字列だろ。 直接ハードを叩くわけでも無し。 ていうかコンパイラこそ、リッチな機能をもった高級言語で書くべきなんじゃ。 でも世の中のコンパイラは大抵Cで書かれてるんだっけ?
>>73 しょうもない質問で申し訳ない。
コンパイラの出力って文字列なの?バイナリも文字列の一種?
>>72 斜め上の機能を使いにくい
GCはまあ使えるがcall/ccとか無理ぽ
>>72 すぐにコンパイル・リンクにめちゃくちゃ時間がかかるようになること。
俺の理解ではコンパイラはアセンブラを吐いて アセンブラがバイナリを吐くということになっている。 アセンブラまで含めてのコンパイラというなら コンパイラの出力はバイナリ。
>>66 オブジェクト指向っていうのは、構造化の延長線上じゃないの?
>>73 そこらへんの高級言語よりは速いコードを生み出すと信じられているから。
>>79 C++とかJavaとかCの延長線上の言語でオブジェクト指向を見ると
そう見えるかもしれんね
>>72 バイナリがやたらでかくなる
ネームマングリングの所為でシンボルダンプやスタックトレースが読み辛い
>>72 技量の低い私にはコンパイラの出力がどーなっているか C は分かっても C++ はわからない。
私のような技量の低いプログラマーを駆逐する方が本来の目的に近づけるのかも。
>>78 では、「んなもん実装次第」だということを理解しましょう。
(1)多くのOSがC言語の関数群として表現されている (2)他言語のコンパイラも多くはC言語で書かれている。 (3)(1,2)を他言語に換装する作業が面倒&標準言語が未定。 個人的にはObjective-Cに興味があります。 (コイツは言語の名称で損していないだろうか?)
Objective-CってMac専用だろ その時点でCにとって代わるのは無理
>>73 そりゃ自分の言語がいろんなプラットフォームで動くようにしたいからでしょ。
だから言語は C でかくか、JavaVM で動かすかのどっちか。
変態系は lisp で書いたりするけど。
そんなん過渡期にこういうのありましたよ、って紹介でしか知りません
>>86 > (1)多くのOSがC言語の関数群として表現されている
これは別にどうでもいい要素じゃん。
PascalとかVBからでもAPI呼び出したりできてるし。
Objective-CってMac専用ってイメージなのか。 俺はずっとNext専用ってイメージしかなかったから、ちょっとびっくり。
Objective-Cは取り敢えず[]で括るのがキモイ
C++でガベージコレクション使わんのがある程度Cの代用に なるんじゃないのか
最近はC++の記法の方がキモく感じられるようになった。 Objective-Cはかなり良いのだけど、これ以上広がることはないだろうな、まったく残念ながら。
ちょっと興味はあるんだが検索してもサンプルコードらしきコードが全然出てこないな
>>86 2 は重要かな?
Lisp のコンパイラは大抵 Lisp 自身で書かれているし、
確認していないけど javac は C++ で書かれてるよね?
その他、JavaScript のコンパイラは Java, OCaml, SML,
JavaScript, C++, etc. で書かれた実装があったと思う。
最初のC++コンパイラはCで書くしかないからな そのコードを捨ててC++で書き直す意味が分からん
>>99 >最初のC++コンパイラはCで書くしかないからな
cfront は C++ で書かれていたらしいが?
それどうやってコンパイルしたんだろ 手か 俺は絶対に嫌だが
つ bootstrap
我々はもう既にオブジェクト指向から拡張した新たなるパラダイムに接している。 ただ気付いていないだけだ。 Extension Method や Generic を見ているとわかる。 継承と多態では表現できない世界に入り込んでしまっている。 皆さん、新たなるパラダイムにようこそ。
ここだけ 1990 年代のスレですか?
JavaChip上でJavaOSが動けばCも捨てられるんだろうけどね でも結局、最後はマシン語の世界に降りていかないといけないだろうし そうなったら最後は高級アセンブラであるところのCに頼らざるをえない。
だからもっとまともな高級アセンブラが欲しいって話じゃないのか
D言語があるじゃまいか!
皆に黙殺されるD言語
真のオブジェクト指向言語はLOGO
Objective-D++が有れば最強……かも。
>99 最初のC++の実装は、確かCへのトランスレータじゃなかったっけかな。 国内でもPC向けのC++実装はトランスレータの時代があった。MIWA C++とかさ。
C++は生れた時から今までずっと、C with class だろ? CとC++で、OOなコードを書こうとする時、コード量が増える以外の 違いってあるのかな?
>>99-101 「最初のC++コンパイラはC with Classesで書かれた」が答えというオチ?
Zortech C++ のバージョン1使ってたぞ。Cへのトランスレータだった ちなみに作者はWalter Bright Dの作者でもある
Zortech C++は最初からトランスレータじゃなくてnative compilerだったと 思うけど。PC向けに国内で初めて手に入ったnative compilerってことで俺も 買って、そして余りのバギーさに枕を濡らした記憶がある。
仮想関数があるとパフォーマンス落ちるから継承がある言語はCの代わりにはなれないな。
パフォーマンス(笑)
あんたの笑いのツボはよく分からんな
エンドユーズに限りなく近いデベロッパならC++/C#/Javaで十分ですよ。 Java7はビデオデコード機能がFlashやSilverlightに追いつくらしくて期待してる。 後はゲーム系インタフェースさえ標準化されればJavaだけでいいのに。
Java(笑)
継承無しのクラスに価値はあるのか?
継承はクズ。これからは委譲。
オブジェクト指向を根本から否定かよ。
>>120 C言語(笑)
お前のやってる手法は根拠レスでチープな行為だ。
なぜ継承がクズかkwsk
>>123 delegationも立派なオブジェクト指向の手法。継承だけがOOPLじゃないのよ。
>>125 オブジェクトの関係を固定してしまうから変化に弱い。
>>126 初心者の俺でも分かるようにもっとkwsk
仮想関数は実行時に差し替えることができない。だから継承しまくる デリゲートはそれができる。だから継承いらない
処理の委譲とインタフェースの実装はまるで別な機能だろ。 ストリーム関係が継承を必要とする最もたる例だと思うが。
CとC++/C#/Javaなんて唯の兄弟喧嘩だろ しかも偉大な兄(C)を越えられない Cを駆逐するなら、全く別のアプローチしか無い
超えようと機能を追加していったのがC++で、別のアプローチのつもりが 気がついたらナナメ上だったのがJAVAだと。
C言語なんてハードウェアよりじゃないかぎり使う方が馬鹿だと思うが。
つまり Apache はハードウェアよりと…
ハードウェア寄りじゃ無い場面で、Cの幻影を引き摺ってる言語を使ってる 時点でダメだよな。
世間はそう思ってないみたいだが、どうなのよ?
ちなみに Perl も Python も Ruby も SpiderMonkey も Tcl/Tk も C だよね
フリーの言語処理系だけ並べられても
>>134 Java が出なければ SML が主役になる筈だったと言ってる人が居たけど…
>>137 ハードウェアよりじゃない所で、実装言語を確認出来る良い例だから。
STLが無いってだけでC言語は糞だろ。 生産性の無い言語は現場から去るべき。
マルチプラットフォームでパフォーマンスが求められるとどうしてもCになるねえ しかし、それこそC言語のほうこそ、「FORTRANとCOBOLを完全に駆逐するためには」 とか日頃思ってるんじゃないかな。コンピュータの世界ではCはそんなに独占してる わけじゃないから
C++が糞じゃなかったらとっくに現場から去ってるって
PerlとTclはちょっと違うな。 Cも含めた闇鍋風バカ言語。もちろん良い意味で。
STLが無いと生産性の上らない
>>140 は現場から・・・
>>144 の苦しい言い訳とか、Cが如何に使えないかよくわかる。
STLなめんな。
未だにテンプレート禁止のところもあるというのに
ちょ、子供の喧嘩は勘弁な
>>141 今やCの守備範囲とFortran,COBOLが生き残ってるところは、ほとんど被ってないからなぁ
Fortanを駆逐するのは(可能がどうか別にして)Camlでいいと思うが、COBOLは何だろう?
つーかこの急激なスレの伸びはなんなのよw
コレクションもなく文字列操作も冗長で正規表現も標準で無いとかふざけすぎ。 エラートラップをするにしてもエラーコードびっしりで冗長極まりない。 例外を使わせろよ。C++みたいにfinallyの無いなんちゃって仕様じゃない奴。
そこで組み込みスクリプト言語ですよ
>>151 finallyも使いやすいとは思えないけどな。
C#のusingとかDのscopeとかみたいな仕組みくらいのほうがいい。
C++デストラクタもまああり。
C++はネイチブ生成の宿命があるのに その場合エラー専用処理がものすごく非効率って問題が
>>153 んなもんケースによるだろ。
ケースによるのにfinallyがないのが糞なんだよ。
finally相当の機能なら、C++/CLIでついたんじゃなかったっけ?
まるでC++/CLIがC++の後継みたいな言い方だな
C++/CLIはC++じゃない
>>150 それだけみんなCに不満もってるってことだ。
総力を挙げて潰さないとこの業界に未来はないよ。
形式仕様から、最終的にバイナリコード(FPGAベースのチップ向けの)を 生成する研究が実用化されれば、Cだけでなく、現状のほとんどの言語を使わなくなる。 プログラミングは、「問題領域向けのDSLを記述+DSLで動作記述」になるよ。
問題領域向けのDSLを記述+DSLで動作記述 ↑ これのコンパイラは結局Cでかかれると。
最近は言語処理系は関数型言語か C++ で書くのが流行の様だよ C++ がもう少しまともだったらな
コンパイラはリッチな環境の上で動かせるから選択肢の数が全然違う
C言語で開発しとけばなんかあったとき安心、見たいのがあるのかね? 性能をどうしてもあと10%上げなきゃいけない、なんてときもCなら何とかなるとか。
Cで書いた所でそれ程ハードルが高くなる訳じゃない 特に拘りがないだけじゃないの
俺はCだとハードルかなり高くなる。 それで飛び越えられなくなるわけじゃないとしても、いちいち高めにジャンプしなきゃいけないのがむかつく。
コンパイラをCで書くとか、嗜虐癖があるとしか思えん
>>164 C で書いておけば色んな言語と混ぜられる。
C のルーチンを LL から呼び出すのは至極楽ちん。
前にRubyからCのルーチン呼ぼうとしたらSWIGとかいうの使う羽目になった。 配列とか使ってたから、変換用のコーディングも若干必要になったし。 大変というほどでも無いが至極楽ちんというほど楽ちんでもないような。
CはLLのインラインアセンブラや〜
>>168 C#とPowerShellその他.NETなLLの親和性は異常
CというかシステムコールをOOなLLでラッピングとかもう面倒でやってらんない
何でシステムコールが出てくる? シスコール生で叩かせるLLなんてあるのか?
>>171 そういえば、.NETってなんとなくスルーしてたなぁ。
趣味として使うとしたら学ぶ価値ある?
普段はRuby使ってます。
>8 >Cのパフォーマンス これほんと?
>>174 C だけ使えば C と同じ性能。
C++ でもよく使われる言い回し。
>>71 古い話で恐縮だけれども、ICOTの例のプロジェクトでは prolog の進化形で **カーネルの大部分を** 記述していたとか。
そういう用途のシステムでは、そういう選択もあるようです。
#同じ研究を現在のハードウェア技術で行ったらどうなるのかつくづく知りたいものですが、あと 100 年はとりあげられないでしょうか‥‥‥。
>>88 人を変態よばわりしないでください。
R6RS準拠のコンパイラがでたんですって?
Cに文句言うより86アセンブラをまず駆逐しろよ・・・ Intelでさえできなかったんだぞ
今時のCPUはアセンブラ(≒機械語)を直接実行せずに 自前の命令に変換するんでしょ。 そんな内部コードを毎度毎度表にさらしてたら大混乱が起こるんじゃね。 AMDの人も命令コードなんて全然大した問題じゃないとか言ってたし。
>173 > そういえば、.NETってなんとなくスルーしてたなぁ。 > 趣味として使うとしたら学ぶ価値ある? プログラミングが趣味か、なんらかの成果物を完成させるのが趣味かで変わってくるんじゃ? ドトネト系はWindowsのアプリを作るということなら、死ぬほど楽なのは確か。 特にC#とC++/CLIの楽さは異常。
182 :
173 :2008/05/15(木) 18:43:57
>>181 レスさんくす。
C#でもかじってみるか。
(そういえばIronRubyはどうなったんだ?とんと話を聞かないが。)
開発言語をアセンブラからCに変えて解放されることって 1.レジスタの管理 2.メモリの管理 3.スタックの管理 くらいかな? こうやってみるとCって意外と面倒な問題を解決してくれてることに気づくw
184 :
デフォルトの名無しさん :2008/05/16(金) 18:54:16
とりあえずage
185 :
デフォルトの名無しさん :2008/05/16(金) 19:23:40
CはどんなCPUでも同じ文法で動く、“共通アセンブラ”みたいな位置づけ。 他の言語と比べること自体がナンセンス。 もう機能追加とかしない方がいい。 CにはOOだのGCだの必要なし。それはLLとかに任せればいい。
namespaceとstructに関数ぶら下げるのとoverloadがあると気分的にだいぶ楽になるな。 IDEとの親和性も爆上がるし。
>>185 ただ、cppにはもうちょっと賢くなってほしいけどなあ。
あ、でもあんまり賢すぎるとlispみたいになんでもマクロで書いちゃう
人が出てくるからダメかな。
>>183 Cはメモリーもスタックも管理しないだろ
自動変数の事じゃないの
190 :
183 :2008/05/17(土) 00:20:31
スタックの管理は自動変数、 メモリーの管理はmalloc&free,大域変数のつもりで書いた。
OO言語としてC++は置いといて高級アセンブラとしてCを凌駕する ポストC的な言語がほとんど話題にならない時点で結論が出ているわけだが。
c++を駆逐してほしいんだが
学習コスト<<駆逐コスト
>>191 高級アセンブラが使われる環境を駆逐したいんじゃない?
入れ子が{}じゃなくて ポインタが*じゃないC言語ください
なぜ組み込みの世界であんなに C++ が嫌われるのか理解できない。 些細なデメリット避けるために大きなメリットを失っている。
>>192 今田舎に別荘を建てて隠遁する準備が進んでいるよ
200x 年には完成する見込みらしい
>>196 C++ は遅い・複雑・でかいの3重苦だから組み込みには向いていない
特にリンクやロードが遅いのは致命的
MISRA-C++ とか JSF++ って日本語の解説無いのかな
C+αとして使えば全く速度は変わらないし生産性はかなり上がると思っている。 むしろプログラムを自然に作れば C++ の方が速いと思っているぐらいです。 リンクやロードが遅い理由はよく分からないが、それは言語の問題じゃないん じゃない?
>>200 >リンクやロードが遅い理由はよく分からないが、それは言語の問題じゃないん
>じゃない?
世間の C++ 使いって所詮この程度の認識なんだよね…
自分が使っている道具に対する関心が無さ過ぎ
>全く速度は変わらないし
だからこんなことを平気で言えてしまうわけだな
そういうのはいいから説明してくれよ
VC8 で Dhrystone Benchmark, Version 2.1 を C と C++ でコンパイルして比較 C Dhrystones per Second: 10300995.0 C++ Dhrystones per Second: 10299298.0 確かに C の方が速いですね。
dhrystone で測れるのはループの中の計算時間だけだからね
ループの中で結構関数呼び出しもしてるよ。
リンクやロードも?
>>200 C+αなんかではなく、ポテンシャル全開でC++を使うときの
コンパイル・リンクの遅さの原因の半分は言語仕様だと思う。
残りの半分は実装の問題。
+αでない残りのポテンシャルの部分って具体的に何よ? 例外とか?
テンプレートじゃね?
>>206 リンクは C が 0.10257s で C++ が 0.10281s です。
ロードは Windows の場合だと実行と切り離せないのでうまい計測方法が分かりません。
>>208 コンパイルで一番負担がかかるのは圧倒的にテンプレートだと思います。
boost::spirit のように凝ったテンプレートをインクルードしたファイルは
極端に時間がかかります。
遅いだけあってテンプレートの可能性は絶大なのですが。
VCの場合はテンプレートでオブジェクトファイルも大きくなるようです。
ただしリンク後は実行ファイルはそれほど大きくなりません。
>>195 入れ子が begin end,
ポインタが ^ でもいい?
>>203 同じソースコードで C++ にしただけで 10% 遅くなった。
g++ でコンパイルが通る様にしたのと、scanf() も消して
ベンチマーク回数は 10000000 回固定にしている。
C++:
% otool -L dry2
dry2:
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
% time ./dry2
-- snip --
./dry2 1.35s user 0.00s system 99% cpu 1.352 total
C:
% otool -L dry2
dry2:
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
% time ./dry2
-- snip --
./dry2 1.22s user 0.00s system 99% cpu 1.227 total
あまり例題としては適当じゃないけど、こんなもんかね。
ちなみに ObjC でもやってみた。 ObjC: % otool -L dry2 dry2: /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0) % time ./dry2 -- snip -- ./dry2 1.42s user 0.00s system 99% cpu 1.424 total 更に、ベンチマーク回数を 10 倍にすると… C: ./dry2 12.26s user 0.01s system 99% cpu 12.291 total C++: ./dry2 13.47s user 0.01s system 99% cpu 13.490 total ObjC: ./dry2 14.17s user 0.01s system 99% cpu 14.200 total Better C は Slower C でしたw こんなお遊びのマイクロベンチの結果を真に受けちゃ嫌よ。
VC は優秀だな。
いろんな分野でC++はPythonに置き換わりつつあるな Rubyなんてのを与えられた日本人は世界から置いてけぼり
何のスレだここは
cソースはcppソースに変換後にコンパイルされるんだが。
cpp ってCプリプロセッサのこと? 確かに gcc はそういう手順になっていると思います。
>>214 C コンパイラが C++ 並みに遅いのは優秀とは言えないと思うけど…
アセンブラ出力かシンボルダンプが見てみたいね
>>218 .cpp の事でしょう
何となく何でこうなってるのかは予想がつくけど…
Dhrystone Benchmark, Version 2.1 を同じ環境で VC 8.0 と GCC 3.4.4 (cygwin) で比較 VC 8.0 (最適化オプションは /O2) C: 1m37.328s C++: 1m37.437s GCC 3.4.4 (最適化オプションは -O4 -fno-omit-frame-pointer -march="pentium-m") C: 2m2.188s C++: 2m4.297s ちなみに -march を外すとさらに 24s ぐらい時間がのびました。 C コンパイラが C++ 並みに遅くてもこれだけ速ければ十分優秀じゃないかな? というよりこちらでは GCC も C が C++ 並みに遅くなりました。
>>220 ちゃんと C++ としてコンパイルしてる?
共有ライブラリのリンク情報かシンボルダンプかアセンブラ出力か、
何でも良いけど晒してみて。最適化オプション無しだとどうなる?
>>221 C++ 版は VC では /TP オプションで、GCC では g++ 経由でコンパイルしたので
C++ としてコンパイルしているはずです。
C++ でコンパイルするとき class X; をソースに書いてもエラーが出ません。
リストは長くなるのでここでは勘弁してください。
参考までに最適化を禁止して時間を計測しました。
最適化なしだと C++ が遅くなると思っていたのですが意外な結果になりました。
VC 8.0
C: 18m58.547s
C++: 18m58.890s
GCC 3.4.4
C: 4m46.594s
C++: 4m47.765s
>>222 ウィンドウズは知らないけど、うちの環境だとアセンブラ出力も
シンボル名もライブラリのリンクもベンチマークのスコアも変わる。
純粋に C だけのコードでこれだから、Better C として C++ の
機能を混ぜた使い方(例えば例外処理や名前空間)をすれば
更に悪化する物と期待出来る。ウィンドウズで組み込みなら
C++ でも変わらないかもね。あとは Symbian とか。
まあ Better C って考え方は他にも落とし穴があるから、俺は
好きじゃないな。
>>224 OS というよりもほとんどの場合コンパイラとリンカで決まると思います。
(Windows の場合は実行時の最適化もやりかねないけど)
組込み向けコンパイラの場合は信じられないくらい最適化がダメなものも
あるようです。5,6年前にある有名 CPU 向けの純正コンパイラーを使った
とき、register 付きローカル変数を使っただけで命令がかなり削減された
ことがありました。VC ではとても考えられないし、いまどき register を
使おうと思う人も少ないと思います。
昔の話なので今の組込み環境がどうなっているのかよく分かりませんが。
> Better C って考え方は他にも落とし穴があるから
技術的にはそれほど大きな問題もないと思っているのですが、興味深いので
よかったら教えていただけませんか?
その駄目コンパイラ… 気になる…
227 :
デフォルトの名無しさん :2008/05/20(火) 13:43:51
あーその本、もってるけど全然読んでないな。 ちゃんと読んでみるかな。
>>227 C++は遅いし、コンパイラの事を知らない人間が作った言語だよ。
AT&T に居たんだから Aho なりに相談すれば良かったのにな
暴言キタ━━>▽<━━━
いやだってやたらと信じやすい人が居たから… C++ をマンセーするのも良いけど程々にね
あ、いちいち最後に改行を付け加えてる人の事な。 ストラウストラップが GLS の 1/10 でも言語設計の知識があったら あんなコンパイルが糞遅くなる事も無かっただろうさ。
あ、いちいち最後に改行を付け加えてる人の事な。 ストラウストラップが GLS の 1/10 でも言語設計の知識があったら あんなコンパイルが糞遅くなる事も無かっただろうさ。
GLS がストラウストラップ 1/10 でも現実を見ていれば あんなアプリケーションの起動が糞遅くなる事も無かっただろうさ。
C のどこが起動が遅いって?
なんでCが出てくるんだ
ぐぐったら、 予備校とサーバとガラステレビ台が出て来た語学センターとガールズラブサーチってのが出て来た とりあえずガールズラブサーチ見てる
起動は?
>>225 >OS というよりもほとんどの場合コンパイラとリンカで決まると思います。
だから環境って書いただろ…
ナチュラルに斜め下の指摘をするのは止めてくれ
>>239 Guy L Steel Jr.の事だと思って読んだけど違うの?
なら、そんな疑問は浮かばないだろ
Guy L Steel Jr.とC言語の関係が分からん
ガイ・スティールと聞いてJavaを最初に思い出したとか?>起動が糞遅く まあ言語仕様の著者ではあるが無理感じるな
なぜSchemeが出ない
つか、何で知らないなら調べようとしないかね…
ググっても出てこないのはSteelじゃなくてSteeleだからだ
>>235 書いていないな。
そもそもあの本が書かれたのは95年頃で、
テンプレートによるコンパイル速度の低下は
まだ問題になっていなかったのではないかと思う。
俺はテンプレートさえなければ、Cと比べて気になるほどなるとは思えない。
テンプレートこそC++の特徴であり価値の一つだと思うんだけど
254 :
252 :2008/05/21(水) 00:09:26
>>253 そりゃそうだ。テンプレートなしでC++使うなんて気にはなれないし、
実際、そんな機会は全然ないから
「Cと比べて気になるほどなるとは思えない」というのは自分の想像でしかない。
すれ違いすまん。
C++ に無理矢理似非クロージャを入れて喜んでるくせに GLS も知らないんだよな…
そもそもGLSって略称一般的かなあ
スティールが設計に深く関わった高性能な言語は Fortress ぐらいしかないんじゃない?
>>235 D&E 15.10 あたりで問題は認識しいるようですよ。
最近のコンパイラはプリコンパイルヘッダーや簡易ビルドの技術が発達しているので
ずいぶん良くなったと思います。
モジュール分けしてそれぞれの依存度を少なく設計すればそれほどストレスを感じません。
>>258 他の言語だってモジュール分けすればもっと速いよ
C++ と違って小細工しなくても常識的な速さだけど
まあビルドの速い言語ほどその後の処理負担が大きいけどな。ユーザーが多いほどコストが増大。
C++が遅いのは文法の問題だから一般的なまともな言語と比較しても意味無い。
>>261 詳しく。
>>259 モジュール分割や依存度下げは小細工かよ。まあ前方宣言はそうかもしれないが。
C/C++は糞。 Cは必要悪だがC++は必要ですらない。
ベターCとしてのC++は悪くない ただたまに勘違いしたやつがいらんところで、継承とかテンプレートを 使いまくる。
プロファイルを定義して違反したらコンパイル時にエラーか警告出すような 機能を付けてくれないかな。
ほほう、それでC++が晴れてベターCになれると。
>>266 問題点を指摘して、もっといい方法を教えてください。
全体のビルド時間に占める構文解析の時間はそんなに大きいものかね? 第一 C++ の構文解析を複雑にしているのはほとんど C の文法を引き ずっている部分だよ。D&E を読めば構文解析に配慮していることが分 かるよ。
配慮はしてるけど何もしてないってことだろ。俺も自分がニートなのに配慮してる けど特に就職活動とかしてない
>C++ の構文解析を複雑にしているのはほとんど C の文法を >引きずっている部分だよ Cからすれば勝手に引き摺って勝手に泥沼に走り去った後ろ姿しか見えない訳で。 ようも色々余計な物引き摺って、そんな泥沼に邁進してるなと。
言語屋からの賛成を得てC文法の良くないところを直そうとしたがユーザーから 猛反発食らってあきらめた。現実ばかりを見て理想を追いかけない駄目な設計者。
デファクトスタンダードと言う言葉を送ろう。 最近の悪例 Windows 別に利用者がダメとは思わない。
さらに彼の欠点はコンパイラの実装者よりも言語ユーザーを重視した設計をすることだ。 EC++ の設計を見習うべきです。
つまりCをつかってりゃよかったって話なのか?
その通り。 ためしにCを知らない新人にいきなりC++を勉強させてみるとよい。 C++のプログラムを作らせるとCを知らないはずがCスタイルになる。 つまりCは人間の直感に合っているのだ。
言いたいことは分かる気がする。 俺1人でプログラムを書くと、核となる処理は結局、手続き型。 ただ、OOP言語だと、その部分をうまく書くために、 いろんなクラスを書くという感じになる。
赤ん坊を無人島に放置して勝手に育ってセックルのやり方もわからない状態を 人間の直感にあってるとか言われてもねぇ
>>276 「数学を学ばないと未知数を x と書かずに○と書く」みたいな話だな。
「抽象的なものは勉強すべき」ということは欠点でもなんでもないんじゃないの?
>>276 そんなに直感にあった言語だったら今頃大学生は皆Cが書けるように
なってるはずだが。
それどころか現実は日本の技術者激減で国家滅亡の危機なわけだが
古い言い伝えを思い出すな。 紀元前七世紀、エジプト王プサメティコス一世は臣下に命じ、生まれたばかりの赤ん坊を一切のプログラミング言語とは無縁に育てさせた。 そして赤ん坊がある程度大きくなった時、ある質問をした。 「"Hello world"はどう記述する?」 答えて曰く「# include <stdio.h> int main(void) {printf("Hello, world!\n"); return 0;}」 王はC言語が最古のプログラミング言語だと確信したという……。
AとBはどこ行った?w
勝手に確信する分には別に構わんが、言い伝えるのは勘弁してほしいな
駆逐できそうにないですね
>281 俺が3丁目の角のタバコ屋の長老から聞いた話だと、その王様がCで バベルの塔問題を解かせようとプログラミングをしていたら、OOPの神様が お怒りになり、kill -9の雷を降らせ、以降言語がC++やらObjective Cやら JAVAやらC#やら諸々へと分裂していったと。 そして、崩れ落ちるcoredumpの中で最後に残っていたのがCshだったそうな。
>>276 素人の直感は専門家の正しい知見から180度ずれるという宇宙的な法則があってだな・・・
たとえば、システムヘッダの中で、アンダーバーで始まる名前が
多用されているのを見て、そのまま真似したりする。
30度でも90度でもなく180度だ。これは物理的な必然だ。・・・いや、忘れてくれ・・・
そして、C++のOOPを覚えたと思ったら、また180度ずれて、トータル360度ずれて元に戻る。 まさに真理の哲学ですね。
CプログラマがC++を使わない理由を探す理由を知りたい。
その前に
>>288 がなぜそんなことを聞くのか理由を知りたい
>>288 組み込み系では、Cが最適開発環境であることは多い。
CプログラマってCだけしか使ってない人?そんなひといるのかな。 少なくともLLの一つや二つは使ってるでしょ。C++は要らないけど。
C言語と日本語と英語が使えます。
その昔、asahi.comでの求人でプログラマ職若干名ってのがあってね、そのときの 条件ってのが「言語: C言語(日常会話レベル)」だったってのが冗談じゃなくてあった。 職場で同僚とためしに「 printf("hello, world!\n");」「break;」とやってみたが、 ゴメン、俺には無理だわと応募をあきらめた。
うちの場合は 「CよりC++のほうがいいのは分かったよ、でも使いません」 のような感じでいつも終わってしまう。
考えるのがめんどくさい 息をするのもめんどくさい
ゆうちゃんとめんどくさいさい
組み込みで使うとかいわれても幅が広くてわかりにくいんだが 携帯ゲーム機用ソフトとかもCで組んでたりすんの?
GBAのときはCの方がC++より多かったと思う。今は分からない。
なるほど、GBA⇒DSだと性能差は十倍にもなってない感じだし まだCが多かったりするんだろか。PS3が組み込み系に分類されてたり 携帯電話を組み込み系と言ったら笑われたり、俺にはよくわからん
>>299 >携帯電話を組み込み系と言ったら笑われたり
そうなの? カーナビと携帯は組み込みの2大巨頭だと思ってたよ。
「JavaVM乗るような潤沢な環境を組み込みと言うかww」 っていう考えの人も居るっていうだけの話だが、 実際組み込みって言葉はピンキリで随分曖昧な気がする
>組み込みで使うとかいわれても幅が広くてわかりにくいんだが 幅が広いからCでないと厳しい環境もあるっていうんじゃダメかね? オレが今取りかかってるシステムはRAMが32Kしかないんだが Cとアセンブラ以外使おうとは思わないよ。とにかくリソースがぎりぎり。 処理時間、セクションやスタックの使用量とかも仕様で出さなきゃならんしな。 必ずしもプロファイラがあるわけでもないし。
>301 大量に生産するため、リソースを贅沢にすることは即コストに直結する。 開発コストよりも製造コストが重視される。それが量販製品における 組み込み系の特徴の一つ。携帯電話はこれが極端に当てはまる。 JVMが乗っかるのは潤沢な環境なのではなく、それがために他にくるしわ寄せを 吸収しなければならない分、余計につらいってことだね。 正直、いくら携帯電話の機能が大きくなったといっても、本当にリソースが 豊富に使えるなら、基本が機能追加でコードの流用が効く携帯で、毎度毎度 あそこまでデスマにはならない。
アセンブラで組むのが一番だと思うが、極端に可読性が落ちる。 C++だと余計なことをしてくれて自分が望むアセンブラに展開してくれない。 だからC。
C++ が C と比較してコンパイル結果を予想しにくくしているものは以下のよう なものがあると思う。逆にこれらを使わなければほぼ予想通りのコンパイル結果 になるはずだ。 - 非 static メンバー関数の暗黙の this の存在 - コンストラクタからの基本クラスとメンバ変数のコンストラクタ自動呼び出し - デストラクタからの基本クラスとメンバ変数のデストラクタ自動呼び出し - 静的変数のコンストラクタとデストラクタの呼び出しとそのタイミング - コンストラクタを持つ静的局所変数の暗黙の初期化チェック - 自動変数のデストラクタの呼び出し - 暗黙の型変換の呼び出し - 一時オブジェクトのデストラクタの呼び出し - 仮想関数の呼び出しオーバーヘッド - 実行時型情報の時間コストと空間コスト - 多重継承と仮想基本クラスによるオーバーヘッド - メンバーポインタ操作の時間コスト - 例外処理の時間コスト (特にデストラクタを持つ自動変数が存在するとき) - inline 関数の出力コード (ただし大域最適化したときはCでも同じ) - 複雑なテンプレートの出力コード - 実体を持たない const 変数がある (ただし大域最適化したときはCでも同じ)
C++ に慣れてくれば上のような機能を使っても C 並にコンパイル結果を予想 できるようになってくる。ただし複雑なテンプレートの出力コードの予想はか なり難易度が高い。 C でもがんばれば上のような機能を実現できるが、結局 C++ の速度と変わら なくなってしまうはずだ。そのようなソースコードのメンテナンスはよほどの 天才でないとできないと思う。 自分が考える C++ の欠点は - 複雑なテンプレート使用時のコンパイル時間 - テンプレートと名前空間により中間ファイルのサイズが膨張 - コンパイラのバージョン間で ABI が変わりやすい - 仕様が大きいので学習が大変
さらに C++ の欠点の追加 - 標準準拠度の高いコンパイラが少ない (特にテンプレート) - テンプレート関連のエラー表示が分かりにくい
C++の一番の欠点は、そうやっていちいち他の言語に対する「自分が有利と思う点」を 開陳してまわらないと気がすまない、鬱陶しい奴が多いことだろう。
ピアソンやオライリーの本に書いてあることを垂れ流してるだけじゃね? スレの流れのリソースが厳しい環境での答えにもなってなければ スレの主題への評価にもなっていない。
>>308 それは言語の欠点ではなく俺の欠点だ。
>>309 ピアソンやオライリーの本はよく読んでいるから影響を受けているに違いない。
しかしこれ以外の本よく読んでいる。
コンパイル結果を予想できればある程度必要なリソースの見積もりが可能だ。
そしてリソース消費がCとほとんど変わらないプログラムをC++で作れる。
さらにバイト単位でリソース消費を抑えたければ最適化無しのアセンブラで組むしかない。
C++がCの代わりになるかもしれないことを主張しているのだからそれほどスレの
主題から離れていないだろ。
>>305 >逆にこれらを使わなければ
C でオケ
>>312 だな。
>>305 をコーディング規約にでも書いた日には
「Cでいいじゃねえか!!」と言われそう。
Cがこれだけ普及したのは、あまり抽象化しなかったから。 このCに抽象化の手術を施したのが、C++でありJavaでありC#等々。 基本的に無理筋なんだ。
抽象化=クラスと信じて疑わないのがきもい
>>312 ,
>>313 >>305 を使わなくてもCより遥かに安全で保守が容易なプログラムを作れるようになるのだ。
さらに iniline 関数と const 変数(最後の項目)を使えば安全かつ効率のいいものを作れる。
後は徐々に使う機能を増やしていけばよい。
特にデストラクタの利用は効果的だ。
>>313 実は
>>305 は最後の項を除くと割りと簡単にルールを説明できる。
- コンストラクタ、デストラクタ、非 static メンバー関数を定義しない
- 多重継承を使わない
- 演算子 .* と ->* を使わない
- try, catch, throw を使わない
- inline 関数を定義しない
- template を使わない
最後の項は基本的にうれしいことなので、あえて使いたくないときは
extern を使うなり、アドレスを取得するなりすればよい。
>>316 >Cより遥かに安全で保守が容易なプログラムを作れるようになるのだ。
ワラタw
・安全で
・保守が用意
共にどこまで把握したことを活用できるか、という問題じゃん?
煽り地味た笑いは早計かと思ふ。
でもC++を一人で神経質にやってもそうはいかんという経験自体は誰もが持ってるだろうしな
共同作業時の問題とか考えると尚更なあ
OOPの幻想
デザインパターン振り回してテンプレート禁止とか言い出すSmalltalk厨の上司
JavaScriptなんて素人の言語だとか時代遅れな事いいやがって
手前の遅刻を棚に上げて帰るのが早過ぎるとかどの面下げて言う
間違った仕様書いといて実装に逆切れしやがって 徹夜して直すと自己管理ミスとかもうね
原付のブレーキ切ったろか
切るべきか 切るべきだな けけけけけけ
>>316 ワラ太
すこし見ていないうちに話のレベルが少し上がっているな(笑)。まあ、 「新規の言語はすべて旧来の言語のアンチテーゼ」 ある時点で一気に主流になった言語を駆逐するのもそう簡単ではないだろ。 新たな概念も良いけど「誰でも理解できる」という条件を満たさないと意味がない。 「誰でも理解できる」「簡潔に書ける」「効率」等の条件を満たさないと・・・ 考えているうちに「自分が生きている内に駆逐されるなら、是非それを経験したい」と思ったよ。
>>321 駆逐されたと言う基準はなんだ?
COBOLやFORTRANは駆逐されたのか?
君の生まれる遥か前に生まれたと思うぞ、FORTRANは51歳で未だに現役だ。
>>320 決してジョークではない
今までの流れからCプログラマ(特に組込み系)のC++に対する懸念は以下の2つと考えている。
- 生成されるコードが大きくて遅い(例えベターCとして使っても)
- 暗黙の処理によって生成されるコードやリソースが予想しにくい
コードの大きさと速さに関しては、ゼロオーバーヘッドルールによってCのソースコードを
C++コンパイラでコンパイルしてもほぼ同じになると考えてよい。
(ただし最適化の出来が悪いとそうならないときがある)
しかもC++はCとの(道理にかなった)非互換性を選択したことでCの危険なプログラムを
エラーにすることができる。特にコンパイル時とリンク時の型安全の検査は有名だ。
予想しにくい件に関しては
>>317 のルールに従い、さらに以下のC++機能を使うとよい。
- うっかりミスの防止する機能
非先頭変数宣言、アクセス指定子、C++キャスト演算子、new演算子、参照
- プログラムを組織化し、大規模化しやすくする機能
継承、staticメンバ(関数と変数)、入れ子構造体、構造体内typedef、名前空間
- あれば便利、見通しをよくする機能
関数と演算子のオーバーロード、デフォルト引数、構造体タグ名が型名
これらの機能は全くオーバヘッドがないか、Cと同じぐらい処理が自明だ。
そしてプログラムを安全にし保守を容易にする。
>>323 >決してジョークではない
ジョークじゃないなら、そろそろ終わりにしなよ
見ていて辛いわ
なら見るのを止めるのがおすすめ
やっぱりネタかよw
C++を知らないから使っていないんだという前提が痛過ぎる
>>323 所で、VC++の最適化にはすばらしいものを感じているが。
今のC言語にあそこまでに最適化があるのか?
無ければ、VC++でCらしく書いたほうが優秀と思われ。
VCのはいたASM見たこと有る?
ここはC++を無理矢理Cとして使うスレだっけ?
いくらなんでも、非静的メンバ関数の使用はありだろ。 暗黙の引数thisが予想できないというのが理解できない。 普通の関数で引数1つ増えるのと比べて何もオーバーヘッドは変わらない。 むしろ呼出規約によってはthisだけレジスタ渡しになって、素の状態ではやや有利な場合すらあり得る。
時折Objective-Cを思い出しては、絶望するスレ。
ObjC はとっても C 的で良いんだけど、C を置き換える為の物ではないよね
字面がキモすぎ
事実上Apple版DLRになってるObj-Cランタイムに価値がある訳で CからObj-Cランタイムを扱うための言語拡張に過ぎないとも言える C++やC#とは狙いが違う感じ
ここのC++厨はPC上で動くアプリしか作ったことないんだろ。 秋月のキットでも買って出直してこいよ。
どんな言語でも見た目が気になるのは初学者のうちだけだよ 文法がまずいとそうもいかないけど
>>335 恐らくウィンドウズ以外の経験が全く無いんだろうさ
C を駆逐出来るのは C だけだな。C++ は失敗作。 誰か C 1x の仕様策定プロセスを始めてくれないかな。
Cから発生した言語は、みんなそのルートを通る。 いまさら新しいCを作ってどうする?
どのルート?
Cを継承する、拡張する、駆逐する、いわゆる後継のために。 C++も最初はCにクラスが付いただけの言語だった。
C++ はもう良いだろ。C を駆逐するのに失敗した言語はスレ違い。
CはC99で失敗したからもう発展しない。 VCはC99未対応、gccは -std=c99 が必要
VCは要らん
>>328 さすがにCとC++の最適化ルーチンは共通化しているでしょう。
疑いもしていないので調べたことはないけど。
346 :
321 :2008/06/01(日) 11:47:24
>>322 曖昧な言葉「駆逐」の定義をまた始めるのか?自分はそれに参加する気はないね。
ここはスレタイに曖昧な言葉を使った雑談スレだと思っていたぞ。
レス内容に対してレスせずに発言者に対してレスする、このようなレスがレベルを下げるのを理解して欲しいね。
#答えよう。自分はFORTRANより年上だ。
間違いなくここは雑談スレだけど、それを表立って表明してはいけない約束だぜ。 つか、この板のほとんどのスレが雑談スレだ。初学者には雑談以上の話かもしれんけど。
C++がCを駆逐できなかったのはJavaのような誇大広告を怠ったからだよ。 「C++は2年以内にCを完全に殺す」のような宣伝をしていればCにダメージを与えていたのに。 あの会社の立場上難しいだろうけど。
>>349 C++ではなくCを使う理由にはなっていないんだよ。
環境によっては Java, C#, Python, Ruby などを使う理由にはなるが。
>>350 言語が単純で、枯れていて、速くて、資産が沢山あって、
スクリプト言語との連携が良いからだよ。Cでなければ
いけない理由は無いが、C以外にそんな言語は無いからな。
うーん、やはり見えない敵と戦うタイプだな。 いっそこのスレに呼べばいいんじゃないか? Another common theme among the posters was that one can get by just fine in C++ by ignoring the more complicated aspects of C++ and just focusing on the basic procedural and object oriented features of C++. In practice this means never touching templates and focusing on class and function based abstractions. I guess use of exceptions and MI would be optional and handled on a case by case basis. I actually don't have a problem going this route. The problem is that this is NOT the route that the C++ standards people are going and it certainly isn't the route the C++ literati/intelligentsia are going.
>>351 >言語が単純で、枯れていて、速くて、資産が沢山あって、
>スクリプト言語との連携が良いからだよ。
>>317 で残った部分は十分に単純で枯れているぞ。
そして速さはCと同じでCとC++の資産も使えるぞ。
スクリプト言語との連携もインタフェース部分だけ
extern "C" すればいいぞ。
>C以外にそんな言語は無いからな。
さらに
>>323 の機能を使えば安全で便利だぞ。
C++もそういう言語として使えるんじゃないか?
「残った部分」とかんな抽象的な。
言語仕様にある限り、使うバカは後を立たないし自分も忘れてうっかり使ってしまうこともある。
毎回チェックするのも大変だし。
>>317 で禁止されてる項目はC++がCに比べておいしい所そのものなわけで
これ禁止なら素直にCを使ったほうが早い。
>>354 >
>>317 で残った部分は十分に単純で枯れているぞ。
もう 317 は忘れろ。二度と俺にその話を振るな。
誰も賛同しない物を何でここまで引っ張るかね。
もうC++のことは忘れろ。C++はJavaに負けたんだよ。 MSでさえC++は捨ててJavaのパクリを推奨してる。
>>355 同意だな
>>317 ルールは論外だろ
ちっとも美味しくもなんとも無い"better C"とやらを使うことによって、
少なくともC++のグダグダのABIと、それによるコンパイラ間
非互換性といったおマケはついてくる
それならCのほうがずっといい
無論C99ではなくC89な
10 年前ならいざ知らず、今時 C++ をこれだけマンセーするなんて どれだけ時代が読めないんだろうねえ。しかも中途半端な俺ルールを ゴリ押ししようだなんて驚くわ。C++ は仕方が無く細々と使うもんだぜ。
>>355 >言語仕様にある限り、使うバカは後を立たないし自分も忘れてうっかり使ってしまうこともある。
「言語仕様にある限り使う」と言われればそれまでだが、高々7つ単純な項目ぐらい意識して
開発できるでしょう。しかもinline関数と定数としてのconst変数はいい意味で期待はずれの
結果になるだけで一般的にはルールから外してもいい。さらに暗黙の this を許容できれば
もっと単純になる。
一番簡単なのはプロファイル定義をコンパイラに指定できればいいと思っているが。
>>265 >これ禁止なら素直にCを使ったほうが早い。
個人的な経験から
>>323 の機能があればCと比較して十分開発がやりやすくなると思っている。
本当はデストラクタを使えれば最高だが、見えにくいオーバーヘッドは避けられないので
敬遠されるだろう。
>>358 >C++のグダグダのABIと、それによるコンパイラ間非互換性といったおマケはついてくる
まあ
>>306 でも少し触れたがこれはC++の有名な問題だ。
これを避けるためにboost風のライブラリ命名規則を使ってバイナリを分けたり、
ライブラリのインタフェースのみをCにして実装をC++にするという方法もある。
ABIの問題はC++の利点に比べれば小さいことだと思ってる。
Cでも全くABI問題がないわけではないし。
> ABIの問題はC++の利点に比べれば小さいことだと思ってる。 いや、その「C++の利点」を自ら自分ルールで縛りましょうと 言ってるから突っ込まれてるわけだろ。クラスもテンプレートも捨てるのでは C++の利点の大半をドブに捨てているのと同じだ。そしてABIの欠点は 残る。 ただの自分ルールだから、違反してもコンパイラでチェックも出来ないし 共同開発のチームのメンバに糞ったれなルールを周知し押し付けるための コストもかかる。 C++のABIの問題は決して小さくは無いだろ。 何のためにCOMが出来て、何のために黒歴史化しつつあると思ってるんだ。
>>362 >>360 にも書いたがチームメンバの問題はそれほど深刻ではないと思っている。
組織が大きくても検査ツールの導入ぐらい(Cプログラムの保守に比べれば)
たいしたコストでもないだろうし。
ちなみに
>>317 ではクラスの禁止は提案していないぞ。もちろん単一継承の禁止も。
これらのルールはあくまで動作が読みにくい機能を最高に削っただけで環境に合わ
せて緩めるべきだ。
>何のためにCOMが出来て、何のために黒歴史化しつつあると思ってるんだ。
COM的なものをC++のABI問題の解決のために利用しているのは少数派でしょ。
個人的にその手のものをC++で使ったのはDirectナントカぐらいしかないよ。
多分COMの人気がなくなったのは.NETの影響じゃないか? .NETじゃCの代わりに
なるとは思えないが。
>>363 >チームメンバの問題はそれほど深刻ではないと思っている。
君のチームがどんなプロジェクトで何を作っていて、
どんな人員構成かも分からんのに参考にはならんよ。
ここの人間がどう思っているかは既に分かってるだろ。
君のローカルルールを採用したい人間は誰も居ない。
検討するだけの価値がある様にも思えない。
結局Cは現役続行てことでおk?
今Cが使われてるのって、ファーム、ドライバ、OSのカーネルとかか? それらを駆逐すればいいんじゃね?
なんか抽象化の方策でもあるのか?
>>364 >君のローカルルールを採用したい人間は誰も居ない。
>検討するだけの価値がある様にも思えない。
何も俺のルールである必要はないんだぞ。あくまでも1つの例として出しただけだから。
強制しているように見えたなら悪かったよ。
Cで生産性上げるためのもっといいアイデアあったら教えて。
クソコードをチェックしてくれるデバッガーを大量に雇う
そーいえばEC++(embedded C++)ってどーなってるんだ? あれってリソース要求がシビアな環境向けのC++なんじゃなかったっけ
>>370 名前空間がないのが信じられない。実行のオーバーヘッドは全くないのに。
しかもそのせいでサブセットですらなくなった。
embeddedだからってサブセットにする必要性がない。 ランタイムライブらっりを小さくし、必要に応じたライブラリを使えばいいだけだし。ちょっとテンプレートの使い方を工夫すれば小さくなるもん
小さいの概念がデスクトップとは違うんだろう。 例外機構も入れたくないくらい小さくしたいみたいだから。
EC++はC++を小さくするというコンセプトはいいのに 小さくするやり方がまったくおかしいので使い物にならん 仕様考えた奴はC++をよくわかってないアホとしか思えん
確かEC++は日本人が中心になって考えたんだよ。 電機メーカーはコンパイラ作りになれていないからコンパイラの実装が楽な 仕様を選んだんじゃないか。
某h立で集まった人員の中でパーサ経験ある奴が俺しかいなかったな コンビネーションパーシングの考え方/作り方の講習係で終わった その後どうなったのやら話も聞かんけど、C++のサブセット作りたがってたのだけは記憶しとる
>>376 コンパイラの実装が楽なはずの機能まで外れているし
何考えてるんだか俺には全くわからない
>>378 バイナリのサイズを小さくする
コンパイラの実装を平易にする
これら以外の目的で削られた機能って具体的にどれの事を言ってるの?
378じゃないけど namespace 削った目的は分からない。 リンクが済んだらバイナリのサイズは変わらない。 実装は2週間以内が目安(D&Eより)、もちろん実装者によって違うが。
namespaceを無くすると名前マングリングが単純化できて、C互換のobjが吐けるとか?
>>381 名前マングリングはtype-safeリンケージのために名前空間なんぞを
導入するずっと前から行ってることだろ
オーバーロードのようなものがある限り、type-safeリンケージは必須だ
必要ならextern "C"を使えば済むとは思う。 どうでもいいかもしれないけど、 extern "C"が名前空間内でも使用可なのには最初驚いた。
const_cast, reinterpret_cast, static_cast, mutable も性能に影響を 与えないし実装は比較的簡単だと思う。 dynamic_cast だけ外すと分かりにくい仕様になるかもしれないが。
組み込み向けで小さいコードしか書かないから、きっと要らないのだろう。
コンパイラを実装する人の都合で削ったように見えるな。 C++からCへ変換するプリプロセッサで実現できそうな機能しか残ってない。
>>386 >コンパイラを実装する人の都合
これは実際非常に重要なのだけれど、C++ ではツールを含めた言語環境を
作る人間と、それを使う人間が完全に分離してしまっているのが不思議。
C++談義でもりあがってるところ悪いけど、そんなことより FORTRAN 77をさっさと完全駆逐してほしい。算術IFとかなんだよあれ。 大文字コードはSQLだけで充分だ。
>>388 FORTRAN は多分大型コンピュータと共に死滅するんじゃないかな?
いやいや、Fortran 90以降は好きだし使ってるけどな。2kからは オブジェクト指向になるらしいし。Fortran 77がクソ過ぎて困る。
高速な数値計算が必要なところは FORTRAN で作って extern "FORTRAN" で C++ から呼べばいいんじゃないか?
それを更に C で wrap して Fortran から呼び出したらいいんじゃない?
>388 算術IF文と論理IF文までしかなかったのはFORTRAN 66。 FORTRAN 77ならブロックIF文が使えるはずだが。 算術IFが廃止されたのはFORTRAN 95からだが、過去の資産の使いまわしに困る ようなFORTRANに存在価値ってあるのかな。
>>393 >、過去の資産の使いまわしに困るようなFORTRAN
FORTRANってベクトルマシンと趣味ユース以外で使われてんの?
微妙な計算ライブラリとか結構使われている。 自分が関わった某産業分野の制御でも使ってた。
そうなのか。 ……未だに何故Fortranなのかが判らん分野なんだよなー。 Haskellやmlなんかの関数型も数学向いてるって聞くけど 取って代わられる可能性あんのかな
秘伝のソースを一子相伝で守り続けている世界だよ 魔法が息づいているうちは、早々簡単に取って代わられない
楽にプログラミングしたい訳では無くて、楽に計算させたいだけだからね。 学術計算用途ではFortranが長いこと使われててライブラリが豊富にあった。 Fortranから他への移行なんて、ここ10年くらいの話じゃないかな? それもCとかC++だから、数値計算を専門でやってる人以外は、Fortranの ほうが楽でいいじゃんとか思う人も多いわけよ。別に困ってた訳じゃないから。
Cは蓄積だけでなく、実際実際ベクトル/行列計算の分野では 性能的にFortranに勝てんのでしょ C++は式テンプレートのような遅延評価での高速化テクニックが最近 出てきてるようだけど、どうなんだろう
ベクトル/行列計算の性能を追求するなら、Linuxでクラスタ組んで Cのライブラリを使うのが主流。 スパコンTOP500とかに並んでるのは、ほとんどそういう用途だわな。
Cには多次元配列がない、C99まで標準にはrestrictポインタがない、 複素数がないとかいろいろあるからなあ。科学技術計算にC++とかは お笑いなんで無視していいけど。
>>401 >科学技術計算にC++とかは
>お笑いなんで
そうなんか。識者とお見受け
後学のために詳しく聞きたいです。その用途でC++の難点って例えばどんなあたりですか?
PGI とか C++ にも対応してるけど、科学技術計算でダメなんか? まあ C++ なんかどうでも良いけど。
スパコン使う分野はともかく現在の数値計算の最前線(新米二等兵とも言う)では 圧倒的にC++が使われているよ。 Fortranの時代と比べてどちらがマシかは判断しかねる。
CもC++も、<適度に・中途半端に>なんでもやれる言語だからね、良くも悪くも。
C よりも C++ を先に駆逐して欲しいな 既に朽ち始めているから気に病む必要も無いかもしれんが
逆に Java や C# に限界を感じて C++ は再評価され始めているんじゃないか?
JavaやC#の限界ってなんのこと?
VMの外の人と話せないこととか
つ JNI
むしろC++が再評価ってなんのこと???
C++/CLIのことだろう
>>412 あれ便利っつーか楽っつーか、確かにいいんだけど
言語仕様としては究極の汚さだよなあ。
Javaのようにオブジェクト指向を強制する言語には限界がある。 C++のように、低水準プログラミング、構造化プログラミング、OOプログラミング、 テンプレートメタプログラミングを混ぜて使えるほうが現場で役立つ。
1 行目と 2 行目以降は全く関係無いね
役立たないとはっきり書いてほしかったのかな?
自己紹介には及ばん
アセンブラから見てCってどうなの?
ブロックの先頭でしか局所変数を宣言できない C90 の仕様は勘弁してほしい。 あと inline 関数が標準化されていないのも困る。 組込み環境ではそれだけの理由でも C++ の方を使いたいよ。 無理やり C を使わせられたら発狂しそうだ。
C99 か GCC でオケ
#define INLINE _inline
#pragma inline 使うコンパイラがあるので #define だけではすまない。
そこで_Pragma演算子よ、って結局C99というオチ。
C++
C以外の中級言語つくろうって動きはないのかね
Dは無視ですか、そうですか
C90 はポータビリティを考えたら外部識別子が 6 文字までしか使えないから使いにくい。 C++ は 1024 文字まで保障されている。
そういやそんなのあったな・・・全く守ってねーや
>>427 もっともC++処理系自体にはポータビリティがないがなw
きっと処理系のできは時間が解決してくれるよ。
もう時代の審判が下るくらいの時間は経ってると思うが、 今後これ以上何かあるかなあ…
今の C++ コンパイラってそんなに標準準拠度が悪いの? 組み込みなら C のように標準ライブラリの一部が削られているかもしれないけど。 VC9 と GCC4.x は問題ない範囲だと思うけど、準拠度の低いのってどんなのある?
C 言語のように構造体メンバのアクセス制限のない言語を使って複数人で開発するのは難しく ないですか? 以下の開発方法しか思いつかないのですが。 - 構造体オブジェクトへのアクセスは必ずその構造体用の関数を経由するように周知徹底する - 構造体定義を利用者から隠してメンバへのアクセスを不可能し、ヒープからオブジェクトを 生成する関数を用意する - 構造体の文書を整備し、定義に変更があったらその構造体を使っている場所を点検し直す インライン関数があれば最初の方法が現実的かな。
- 一度定めた構造体の定義に対して互換性がなくなるような変更をしない
>>435 それはpointみたいに非常に単純なものでない限りは
現実問題としては無理なので、
opaqueな型にしてしかもメンバにmagic number仕込むとかやったほうがいいな
何か無理やりOOをやりたいのか?C++じゃないんだが。
>>437 OO まではいかないけど抽象データ型を使うとプログラムの変更に強くなるし楽だと思う。
C の標準ライブラリでは FILE ぐらいしか思いつかないけど、Windows ではよくハンドルを
使っているようです。C の場合整数のハンドルより構造体のポインタを使ったほうが型安全
でいいかもしれませんね。
コンテナのようにある程度複雑の構造だと抽象データ型じゃないとつらいんじゃないかな。
>>434 むしろOO的には、一番目と二番目を徹底すべきじゃないのか?
C++であっても。
>>439 いや、構造体をクラスに見立ててOOしたいんだろ?
じゃなきゃ、
>>434 の1行目のようなアクセス制限が云々なんて前提が出てくるとは思えない。
Cのパラダイムを無視して、突然こんな前提で設計しろと言われたらオレは難色示すね。
というわけでお前の考え方では、複数人での開発は難しくなるだろう。
これまで培われたコンセンサスに乗っ取った構造体の使い方をすればいい。
無理してオレ流OOルールを持ち出せば、上で叩かれているC++のローカルルールと同じ問題になると思うがね。
お前はCのパラダイムを無理やりOOに当てはめて解釈しようとしてるんじゃないのか?
ああ、それと今オレがCで書いているシステムは、ヒープ割り当てができないようになってて、
スタックは1Kしか使えないんだがどうするんだい?
オレ流OOルールをもうひとつ追加するのか?RAMも16Kに減らされそうなんだが。
RAMが16Kbyteもあるなんて贅沢だw
C++はいらないけど、C++コンパイラは必要。 CのソースをC++でコンパイルすると型チェックが厳密なんで バグ出しにたすかる。プロトタイプ宣言の型が省略可能とか mallocが暗黙的に型変換されるとかありえない。あとNULLも0で 統一してくれ。
>>443 COOL 見たけどかなり面倒くさそう。
書くときの面倒くささよりコンパイラの安全性チェックができなくて
変更を間違ったときに気づかなくてバグになりそう。
これなら20年ぐらい前のC++仕様でも楽に安全に作れると思う。
CでOOPLならObjective-Cがあるじゃん。あれもあれで変な言語だけど。
「悪い方がよい」原則って、意味のある言葉じゃないだろ。 いいものが定着するとなにも言わずに、悪いものが定着すると 「悪い方がよい」って言えばいいんだから。
>>441 抽象データ型なんて昔から C で普通にやっていることだよ。
C++ の前の C with Classes でもこれをやりやすくするためにアクセス保護を導入したし。
構造体の定義が可視ならヒープにとる必要もないしスタックにもオブジェクトを置けるよ。
定義が可視ならもちろんアクセス保護があったほうが安心だけど。
>>449 リンク先を読めば意図は分かると思うけど、気になるなら
「New Jersey アプローチ」と読み替えても良いよ。
Java も「悪い方がよい」原則のような気がする。
>>451 >>449 をよく読めば意図が分かると思うけど、気になるなら
「悪いものが定着したときは「New Jersey アプローチ」って言えばいいんだから」
と読み替えても伊井よ
それ元ネタが凝った角度でモノ書こうとして失敗してる例に感じるな タイトル先行で書き下されたかのような。 完璧を求めると複雑巨大になり弊害がある 単純さを求めると完全ではなくなり弊害がある 一長一短って話だろ なんでworse is betterやねん
あ、なるほど。その文書読んでから読み直すと少し納得 少なくともタイトル先行な面白書きではない訳ですな で、改めて読み直してみたけど、やっぱり俺には誤解が残る Lispの造型が足りないせいか、頭が足りないせいかな
LISPの造型が足りないというのは、カッコの数が少なすぎるということかな?
>>455 だから、Lisperじゃない普通の人にとってはWorse is Betterには意味がない
ってことじゃないの。
こんなの何でも適当できるよ。
Linux使い「Windowsが普及してるのはWorse is Betterだから」
元共産主義者「資本主義が普及しているのはWorse is Betterだから」
チャーチル「民主主義が普及してるのはWorse is Betterだから」
つうか、現実の「複雑巨大システム」であるMulticsとPL/Iの失敗への 反省・アンチテーゼとしてUnix/Cが生まれたわけで、そのことさえ抑えておけば十分。 なぜかその論文?ではその有名な事実に触れてもいないけどね。 Unixの「New Jerseyアプローチ」は、理由もなく/何も無いところから 産まれ出てきたものでは無い。 データも何も無い、分析とは言いがたい内容で、単に「Worse is Better」とか 題目だけ唱えてもそれは題目でしかなく、何の意味も無いと思う。 まあ、一種のネタ文書なんだろうな。
自分で考える前に質問してしまう人がいるのは何でなんだぜ?
>>460 ほら、自分の言葉で説明できないだろ。Worse is Betterってのは
単なるお題目なんだよ。
>>461 >なぜかその論文?ではその有名な事実に触れてもいない
それはそういう文脈じゃないからだよ。
当然 MIT の連中が Multics を知らない訳はないでしょ。この文脈では
彼らにとっては Multics より ITS の方が現実的な意味を持っているだけ。
そこら辺の歴史は自分で勉強してチョ。
>>463 文章を読んで理解出来なかった奴に説明するのは無理だよ。
それは俺の能力ではどうしようもない。諦めてくれ。
つまりわかりやすく言えばLisperの僻みだろ。 「こんなに素晴らしく美しい言語であるLispが天下を取れないのはなぜか?! それは普及するものがWorse is Betterだからだ!Lispは悪くない!」 っていう発想の転換、悪く言えば現実逃避をしてるだけ。一般人には 共感が得られない。
つか Worse って言葉に引き摺られて論旨が見えてないでしょ。 別に UNIX/C を馬鹿にしてる文章じゃないんだぜ。とほほ…
>>465 そういう言い方がカルトくさいんだよ
「文章を読んで大作先生の素晴らしさを理解出来なかった奴に
説明するのは無理だよ。それは俺の能力ではどうしようもない。諦めてくれ。 」
とか、
「君、大白蓮華読んでないのがバレバレだよ。」
って言ってるのと変わらん。そんなの知るかボケ、と言わせてもらおう。
さて、自転車置き場の議論が始まりそうだから退散するとしますか…
>>448 俺はC++も「悪い」に属すると思う。
そうでなければここまで広まらなかったに違いない。
広まったのは単にMSのせいかも
SunはMSを潰すためにJavaを出した。MSはJavaとの共倒れを狙ってC#を出した。
実装が単純ならば移植しやすく広まりやすい。 正しいものを広めるより広まったものを改善するほうが簡単。 完全に正しいものを作ろうとすると最後の20%に努力の80%が費やされる。 つまり「悪い」の定義は単純な実装と最低限の品質で最大限の評価を得ること。
それなんてエロゲ?
>>472 MFCのせいでC++が浸透しないのかも
MFC以外のもっと使いやすいC++用RADがあったら 普及したかもなぁ・・・ってBCBは?!
>>477 VC++にVCLが標準装備だったらなあ
VCLそのものがC++で書かれていないのが痛い
くだすれ、落ちてねえ?
しかも前者に至っては既出
Yeats >> Blake >>> (越えられない壁) >> Wordsworthだろ 常識的に考えて・・・ まあ、英国詩人全部合わせてもRimbaud一人に勝てないけどな
ランボーってベトナム帰りのあいつか?
元ネタだから、yesと言っても間違いじゃない。
Close To The Edgeは名盤だよな
俺はHeart Of The Sunriseの方が好き。
C言語のプログラマは、自分たちを一番優等だと思ってるところが問題だ。
つまりプログラマの殆どはそんなこと思っているのか。
言語の違いなんてバイオリンとピアノの違いでしかない。 道具が違うからって音楽家は人を馬鹿にしたりしないだろ。 それと同じこと。 ただし、ヴィオリストは馬鹿だけど。
ベーシストをDISる厨バンドマンならいくらでも
>>493 >道具が違うからって音楽家は人を馬鹿にしたりしないだろ。
譬えの誤謬だ。
カズー奏者はどう頑張ってもバカにされる対象。
>>493 >ただし、ヴィオリストは馬鹿だけど。
(^^;;;;;
なぜ Va は自虐的なんでしょうね、てスレ違いですけど。
他の言語を貶す言語廚は、自分の推す言語使いこなせななくて自信がないから他の言語を貶すんだろうね。 自分の目的に合致している言語を使いこなしているのなら、他の言語なんて眼中にないだろう普通
>>497 誰しもそこから出発するわけでして、許してあげましょうよ。
このスレの主旨はそういう言語戦争とは違うと思うけど? そろそろCに変わる言語が欲しいね、という前向きな話だよ。
BCPLとK&Rの頃から愛してる C99になってもっと恋しくなった BSDとEmacsも愛してる Cを知ったその日から 僕のプログラミング地獄に音楽は絶えない
K&Rからなら信じるけど。 BCPLからなんて誰が信じるか。
そこマジレスするところじゃなくね?w
1億と2千年たってもC言語は健在だお。
そんなに人類生きてんのかな
マジレス乙w
そのころには人類は量子コンピュータ上でシュミレーティッド された世界に住んでるんだろな。動作言語はもちろんC-100002000
シュミレーティッド
C++の何がまずいかは語りつくされたようだから、 次はDのなにがまずいかについて聞かせてくれまいか。
D言語は良く知らない
DこそCを駆逐してやるという目的で生まれた言語だよね?
でもDコンパイラってCと100%互換なんじゃなかった? むしろ共存したいんじゃないの?
互換性は罠だな。 共存すると見せかけてCプログラマをDに取り込んでおいて、 Cに戻れないほど脳みそを蝕んでおいてからはしごをはずすんだろう。
なんか方向性が逆じゃないか? スタック変数の自動管理と、一般的な制御構文の使える高級アセンブラがあればいい。
そんなやつはもはや少数派なんだよ
Java とか.netのVMのアセンブラを使えば、幸せになれるんじゃないか?
517 :
513 :2008/07/03(木) 02:13:15
>>516 JVMとか.netのCLRとかは、それこそJavaやC#使えばいいだろ。
Cの本領発揮は、もはや絶対アドレスやIOポート参照が必要なところか、
CPUレベルの最適化が必要なところだけなんだから、だったらそこだけ
高級アセンブラで書いて、残りは本当の高級言語で書けばいい。
Cはポータビリティのために、効率が悪い点が多いんだよ。 低級言語は、機種依存な部分だけに使えばいい。
>>519 ここで低級言語といってるのはCのこと?アセンブラのこと?
>>511 惜しい。コンパイラは互換性無いよ。
互換性があるのはリンカ。
>>520 低級はローレベル。すなわちステムに近いことを示す。システム記述言語であるアセンブラやC/C++などじゃないか。
>>522 Cと他言語(Java等)を比べて低級な方って意味で言ってるのか、
それともCとアセンブラを比べて低(ry
ってことだろじょしこー
いや俺はJKよりJCのほうg
526 :
デフォルトの名無しさん :2008/07/14(月) 12:03:02
もっとも低級言語に近い高級言語C。この独特のポジションにいる限りCobolやVBが滅びても Cが滅びることはないように思う。
そもそも、現在生き残っている OS で C を使わないものが、どれだけ存在するのか? それ等の OS が全て駆逐されないかぎり、C は駆逐されないのは自明
まったくだ。リア工の俺にはCの無かった時代というのが想像できない。
LISPマシンが市場抑えていたらどうなったんだろう、って想像くらいか マシン語が括弧だらけになるんだろうな サンもJavaマシンとか考えてたな あれは夢想に終わったんだっけか 後者はマシン語がJavaVMのバイトコードに置き換わるだけだな 実現していたところで、結局その上にCコンパイラとか出て来て意味不明な事になってたんだろうな
34bitアーキテクチャが流行っただろうな
将来、 GPUにDSP系のプロセッサを乗せて そいつにコードを転送する必要が生じたとき、 そのコードはC言語をはじめ、手続き型言語では記述できない 組み込み系も視野に入れるなら、C言語の立ち入ることのできない領域は今でもあるよ。 FPGAとかあるし。
>手続き型言語では記述できない すまん。 俺にはそんなものがあるとはちょっと想像が付かない。 どういうこと?
>>534 FPGAとかゲートアレイっていう、電子回路をプログラミングできるチップがあって、
そいつをプログラミングするにはSystem-CとかHDLとかいう言語を使うんだ。
基本的には
「○番ポートと○番ポートの入力を足したり割ったりして、○番ポートに出力せよ」
という宣言の羅列になる。
本物のハードよりは遅いけれど、ソフトウェアよりは速い。
ソフトウェアより融通が聞かないけれど、ハードウェアよりは融通がきく。
という建前だった。
今は知らないけど。
それって手続き型言語で記述できないのか?
できるでしょ
手続き型言語を procedural language の訳語とするなら無理だろう 逐次実行であることが第一義だから対極にある ただ、C言語を駆逐する方向という意味では、全く逆に取り込まれていく方向にあると思う これは、言語・ソフト的にという意味では無くて、ハード的にという意味だが
SystemCはC++で書けるんだが
>>534 大雑把に書くと
手続き型言語は演算子を順番に評価実行する。
HDLなどの記述言語は、すべての演算子が同時に評価され常に評価結果が反映される。
HDLに適した処理を手続き型言語で書き直すと処理時間が遅くなりすぎる。
手続き型言語に適した処理をHDLで書くと回路規模が大きくなりすぎる。まあこれは、HDLでCPUを書いてしまえば解決できるというのがノイマン型コンピュータというか手続き型言語の原点かな。
記述できるじゃないか。
まぁ、手頃なスクリプト言語で書くほうが無難ってことだな。
haskellでHDL書きたい
>>541 記述できてもパフォーマンスを満たせない
できないじゃなくて現実的じゃないってことか、把握
547 :
デフォルトの名無しさん :2008/07/23(水) 08:10:10
CはどんなCPUでも同じ文法で動く、“共通アセンブラ”みたいな位置づけ。 他の言語と比べること自体がナンセンス。 もう機能追加とかしない方がいい。 CにはOOだのGCだの必要なし。それはLLとかに任せればいい。
CはC++の例外相当の処理を効率よく実行できないので不十分。 C++からCへのトランスレータが使われなくなったのはそのせい。
185でガイシュツ
ランタイムライブラリを統一できないから、それを必要としないCが生き残る MSがそれを統一したような気がしないこともないが、それは言わない約束だからCが生き残る
>>551 libcって知ってる?
2行目も意味不明
libcを他のライブラリと区別する理由はない
インタプリタが生き残るよ
C99のTechnical corrigenda TC3はどんな内容ですか?
libcって、ANSIレベルに毛が生えた物、って先入観しかないんだが…
Cが駆逐されると思ってるかどうかで考え方がかなり変わるみたいだな Windows使ってるとMSが潰れたら困るよ、みたいな感覚で関数型言語やってる人とか なんかすごくね?
Windowsを完全に駆逐するためには ってスレがあってもいいかもな。良くないか。
Macしかないな。
Macをプログラム言語にたとえるとlispになるのかなぁ。 とMacもlispも使ったことのない俺が言ってみる。
Objective-C涙目。しかし、たとえるならRubyかな。 触れ込みの良さ、扱いやすさと、後方互換性の欠如、筋の通らない仕様変更とか。
宗教じみてる点でも似てるな
指導者にカリスマがあるからな、仕方ない。毛はないが。
モルモン教だからだろ
神に祝福された存在であるRubyを、ちょっと小洒落てるだけがとりえのMacなんかと同列に扱わないでください><
Ahura Matz 神か。
567 :
デフォルトの名無しさん :2008/09/16(火) 23:40:56
アセンブラが人手によってかかれるべきでない(コンパイラに任せたほうが良い)のと同様に、C言語もまた人手によってかかれるべきではない。
なんちゃそれ。
>>567 C言語を共通アセンブラと考えるとそうかもしれないね。
そこでObjective-Cですね
2chで語る以前に、言語開発者がxxxよりは組みやすく〜とかいいつつ アホみたいに言語増やしたけど、今だにC,C++が生き残ってるってことは 駆逐は無理。以上
>>572 それ、C,C++の部分に大抵の言語があてはまるんじゃね?
いまだにCOBOLが…、いまだにPerlが…他
CPUもコア増やすくらいしかやることないならそろそろプログラム言語に歩み寄っていいんじゃないかい? VMがこれだけはやってんだから統一VMのモデルでも作ってネイティブでその命令実行してやれ。 そうすりゃCの呪縛も少しは薄れるだろ。
575 :
574 :2008/09/25(木) 06:30:10
自分で言うのもなんだが、結構いいアイディアな気がしてきた。 VMのコードをネイティブで実行するCPUなんてのは陳腐なアイディアだが、 C言語を駆逐するためにはかなり効果あるんじゃないか? 昔はハードウェアの値段がソフトウェアの値段より遥かに高かったけど、 今じゃすっかり逆転してるわけだし、VMの技術だってかなり枯れてきているころだろう。 インテルがコア数を増やすのも限界まで来て、それでもトランジスタを増やさなければいけないとなったら、 VMの命令をネイティブでサポートなんていう道に走らないとも限らない。 C言語完全駆逐の可能性はまだ残されているっ
今のCPUがマイクロコードで実装されていることもご存じないらしい。 Intelが有数のコンパイラベンダーであることもご存じないらしい。
>>575 どっちかというと、CPUの規模より集積可能なトランジスタのほうが上回る様になってきたから、余ったトランジスタ処分用にマルチコアにしたんじゃないの?
578 :
デフォルトの名無しさん :2008/10/02(木) 01:33:27
昔の同僚に、真顔でこれを言ったアフォがおった ツール類で何でもできるんだとよ
>>13 VCなくなったらそれこそC++なんか閑古鳥だろ
581 :
デフォルトの名無しさん :2008/10/02(木) 13:26:44
ポインタ概念のないVBがこれだけ進化してるんなら逆にC駆逐は時間の問題かと。 昭和生まれが現役引退するころにはプログラム歴史記念館に飾られてるよ。。きっと。
>>581 組込みソフトのこともちっとは勉強しろよ坊主
小娘かもしれん
お前らはC言語無くなったら何使うん?java?
Objective-D++
はいはい 他は?
lispがはやってほしい
ポインタの概念は絶対になくならないよ 何もかも値渡しするっていうアホ言語を作るなら別だが
C並に低レベルな言語は必要 それがCである必要は無いけれども
BCPLがあまりに低レベル過ぎて使いにくすぎたから C言語が作られたんだよな確か。 だからC言語はなくならないんじゃない?
並にって話してるのにそれより低いものを持ち出してもどうしようもないと思うぞ。
ロクな返事がねーな 代用できるものも考えずに潰すつもりだったの?君ら
C#
>>593 C#のネイティブコンパイラが出来たらな。
ngen.exeは腐っているのでもっとまともなネイティブコード
ジェネレータが必要だが。
PASCAL PL/I
596 :
デフォルトの名無しさん :2008/10/02(木) 22:38:47
CISC アセンブラ
要するに組み込みのハードのパワーがまだまだ貧弱なのがいかんのだろう。 あと10年もすれば組み込みのハードもパワーが有り余ってC言語が要らなくなるんじゃない?
パワー関係ないだろ 今時のマシンだろうがbootstrapのコードはasmじゃないと書けないし kernelのコアのコードがメモリも弄繰り回せないようでは話にならない Cのような機能を持った言語は要るんだよ Cである必要は無いけれども
ハードの性能とか一切関係ないよ 実用性という点においてCを超える言語が存在しないだけ 過去を考慮せず、これからのハードに的を絞っても Cより先に処理系を用意し続けるのって不可能に近いよ それが出来なきゃ駆逐なんて夢物語
Cがアセンブリを駆逐したという伝説がひとり歩きしているね 実際にはCがアセンブリと連携しやすかった所がポイントなのに
そういや、アセンブリは非常に低水準だけど、それでも大抵のハードでスタックは装備されてるんだよな。 もっといろんな概念がハードに採用されてもよさそうだけど、あんまりそうはならないね。 それだけスタックがプログラムにとって本質的ってことかな。
と思ったけど、よく考えたらハード的に特別スタックを用意してるわけじゃないんだっけ? スタックポインタなんてなんて名前のレジスタがあるからてっきり、ハード的にスタックがあるんだと思っちゃったけど。
でもただのjumpやmoveではない、push/pop/call/retがあるあたり 命令面では特別視されている感じがする。
RISC ではそういう命令あんまりないんじゃない。
>>606 まじで?
具体的なCPUの名前教えて。
R3000なんかはそうでしたね スタック操作も全部アセンブラでした
いやマクロ違うだろ
x86 は Pentium Pro 以降ハードウェアで x86 命令をマイクロ命令に変換してる。
でもx86のIntelではPentium-Mまで、AMDに至ってはPhenomに 至るまでスタックポインタをALUで操作していたから遅かったね。 これらのCPU以降ようやくスタック操作が速くなった。 まあCALL自体は少ないとしてもPUSH/POPはレジスタの少なさ ゆえ避けられないからな。
C言語を駆逐するのにスタックが関係あんのか?
大有りだろ
スレの流れを見るに、Cはなんだかんだ言っても用途があるのでなくならない。 代替言語が仮にあったとしても、それがC言語を上回る訴求力が無い限り無理ぽ。 ただ、新しいハードが市場を埋め、それは既存と全く違う機械語が実装され、 そこで最初に提供された開発環境がC++とかだったらCは駆逐されるかもね。
スタックに次ぐ、ハードウエアに追加するほどプログラミングに必須な機能といえば… ガベコレとか?
>616 C++がスーパーセットである以上、C++がCを駆逐することは不可能じゃないかな その状況で例えばLispだけだったら可能性はあるかもね
>>616 拡張子.cppの中身実質Cなコードが溢れるだけ。
って、コンパイラじゃなくて開発環境か。
APIがクラスとか例外とかを平気で使っている状況かな。
ふと思ったんだが別にCを駆逐する必要なくね? むしろ共通アセンブラとしてはベストじゃないか
共通アセンブラとしてならな。 Cで、でかいアプリ組まされるなんていう無法がまかり通るからいかんのだ。
じゃあ何の問題なんだよ。
あんたの職場環境の問題
きつい一言を…(TT)
「でかい」の基準なんて分野毎に全く違う。
Linuxをスクラッチから構成すると導入したい言語はたいていCかC++のコンパイルから始まるからこりゃ駆逐なんてできないやと思った。
>スクラッチから ……
LFSか
Hosh
self = [[Object alloc] init];
632 :
デフォルトの名無しさん :2008/11/08(土) 21:03:50
むしろランタイムがないと動かない言語が駆逐されるべき ランタイムのバージョンやベンダーに依存して異常動作するなぞ論外 オブジェクト指向もいらね。 変数定義と関数定義はクラスで一体化するよりむしろ分けた方が 良いと思ってる。
Cもランタイム無いと動かない環境あるだろ?
あったとしても他の言語仕様が膨大な言語にくらべれば互換性は 高いはずだと思われ。
glibcみたいのはランタイムとは言わないのかな? よく知らんけど。
POSIXのシステムコールなんて、ランタイムもいいところじゃないか。
つまりLispOSが最強ということか…
PCが機械語で動くかぎり、もっと言えばPCがメモリとCPUでできている限り、 Cが無くなることはないであろうと予言しておく。
ガイシュツですたか。まあそれだけCは偉大な発明だったわけだ。
Cが、特出すべき素晴しい言語だとは思わない 突然変異的なパラダイムは何一つ無いんだから ただ、それを記述する為に生まれたUNIXが純然たる地位を保っていることこそ Cが現在の地位を保持しているのでは無いかと思う Windowsですら、その呪縛からは逃れられてはいない
全然違う話で悪いんだが UNIXは素晴らしいがCは素晴らしくないと言う人間をどう思う?
ファシスト。
Cの駄目な点は文字列の扱い。 char型の配列を操作するのはとにかく面倒なので改良型Cが欲しいところ。
Cの改良は何度も失敗してる。 全然関係ないけど、LuaみたいなのをベターCと見なせるなら、もしかするかもね。
ポインタの演算禁止とか、malloc()禁止とか、そういうコーディングルールを使ってるところは Pascalとかでいいじゃんって思うけど、そういうレベルの人たちって、ちょっと違ってると、もう使えなくなるしな。
for文とかwhile文でbreak禁止とかストレスたまって仕方ない。
Cは覚えることが少ないから初心者向きだと思っていたが、Schemeを覚えて考えが変わった。 Cなんていらないや。
今のlisperにとってCは闇米のようなものだ
>>634 glibcのバージョン変わると起動しなくなるのが高い互換性?
動的リンクとCの言語仕様は関係無いな
>>650 それって窓で言えば
kernel32.dllやuser32.dllを別のに差し替えるようなものだぞ
Cが嫌いなら無視してればいいのに おバカさん向けのお上品な言語が他にたくさんあるわけだし
655 :
デフォルトの名無しさん :2008/11/14(金) 22:17:59
逆にさらにアセンブラよりな「cフラット」をつくるべきだな
Cの歴史を考えるとOSを同時に作ることが必須なんじゃないか? OSイイ!→イイOSを作れる言語使う CだけでなくUNIXも同時に駆逐しなければ無理だと思う
657 :
デフォルトの名無しさん :2008/11/14(金) 22:49:41
ていうかさ。 もっと強烈凶悪なプリプロセッサがCに追加されたら、Cを駆逐しようなんて意見はなくなると思うな。
テンプレートのことか?
659 :
デフォルトの名無しさん :2008/11/14(金) 23:19:13
テンプレートも欲しいし、 いくつか追加して欲しい演算子もあるな。 でも、それができたらきっとCで満足してしまいそうな俺が居る。
C++の機能を適度に導入するのは賛成 というか実際そういう方向へむかってますね
効率は重要だけどCの低レベルさは嫌いとか、そんな都合いい話あるわけないじゃん それが理解できないやつがC駆逐とかポストC言語に期待とか幻想抱くんだろうな
Pascalとか昔の構造化BASICくらいのレベルなら、いまの最適化技術なら、Cと変わらないコードができるよ。
>>662 pascal はね、共用体が変だし、; をかく場所も理屈っぽいし、なによりも、おなじことを書くのにc の倍のタイプ量になるのもやだし。
basic? 論外。
C言語を使っている組織・人間に対し武力介入を行う
暗黙の型変換などを排除したstrictCが欲しい
色んなハード向けのコンパイラ屋がいる限り、 やっぱり駆逐されることはまず無いだろうね。 言語機能を機械語に置き換える量が最小元。 ・新たなハードが出ても直す所はちょこっと しかも、冗長さが無いのでパースが楽。 ・クラス構文なんか付加されるだけでも割とダルい ランタイムライブラリが殆どない ・ハード構成に合わせGCなんかを作るのは手間 単純でいて、OSが作れるほど実用的。 ・lispなどもっと単純な言語もあるがハードには不向き これを越える言語がないとなぁ。
Cって 遅い(実行速度じゃなくて開発の早さ) 高い(スキルのある人を探すと) 低機能(高級でないという意味で) だけど早い安い高機能に負けないのは汎用性が他の追従を許さないからでは 高機能と汎用性って相反してる気がするからCは生き残るんじゃないかな 真っ白なノートと塗り絵のノートの違いみたいな なんて素人なりに考えてみました
Cコードを吐く特定の言語の)コンパイラがあればすべて解決だろ? C++(cfront)が失敗だろうが他の{実装|言語}でトライすればいいだろjk
>>669 最適化の邪魔になる構文と、人間のための構文を仕様から
除去しないと難しいな。そうなると、最早Cでは無いが。
因みに、GCCの中間コードには近い物が有り、実用化されてるけどね。
671 :
デフォルトの名無しさん :2009/01/25(日) 05:39:19
移植性の問題はコンパイラじゃなくてジェネレータにすればかなり解決するんじゃないか? というか、昔のC++しかりCのコードを吐くジェネレータは多そうだけど、実際どうなの
672 :
デフォルトの名無しさん :2009/01/25(日) 08:09:17
とりあえずガベコレ搭載したObjective-C 2.0でいいんじゃないか?
おまえらがC言語以外の言語で素晴しいソフトをどんどん作ればいいのさ
色んな思想があるから、色々と(微妙な)亜種が登場して なんだかんだで C が生き残る
Dだろ
Dとか最速消滅候補だろwww
678 :
デフォルトの名無しさん :2009/01/26(月) 09:49:56
なんだかんだいってCでつくっちゃうよな 確かにオブジェクトシステムとガベコレがないのは痛いが あとインラインアセンブラはDのほうがいい
しかしDよりはCのほうがいい。
680 :
デフォルトの名無しさん :2009/01/26(月) 23:18:56
Java、D、C#とかの構文よりもCの構文のほうが綺麗だと思う もしCにGCとか無名関数があるとしたら、絶対Cを使うね #オブジェクト指向なんて飾りです。えろい人にはそれがわからんのです
Boehm GCでも使えばいいじゃん
682 :
デフォルトの名無しさん :2009/01/27(火) 00:04:03
>>681 スマン。言いたかったことがかなりずれてた
君たちはCとJava、D、(ryだったら、どの構文がすきなのさ?
scheme
なんだ、ナンバーサインの人か
私じゃないよ。 # ←ここに空白を入れる人と入れない人がいる。
>>680 自分は別に構文に関しては気にならないけど、
Java とか C# でどこら辺が汚いっすか?
>>687 まぁ言語自体がどうこうと言うより、
使ってる奴の頭が汚染されてるんだよね。特にJavaはw
689 :
デフォルトの名無しさん :2009/01/28(水) 12:44:04
>>687 Javaの構文のうざさは異常
もうちょっと簡潔に書ければ文句ないんだが
>>1 人類を駆逐すればC言語を完全に駆逐できますよ
691 :
デフォルトの名無しさん :2009/01/30(金) 01:23:27
だれかはやくネイティブ吐けるC#コンパイラつくってくだしあ
692 :
デフォルトの名無しさん :2009/01/30(金) 08:04:59
CLIのバイトコードを直接実行できるCPUがあると便利かなあ。
693 :
デフォルトの名無しさん :2009/01/30(金) 08:57:59
>>691 その発言の%s/C#/java/ してごらん
gjcがどうしたって?
Cの嫌いなところは標準ライブラリが貧相なこと そして昔、C言語はライブラリが充実していて移植性が高いと吹聴していた 影響でC言語で書けばワンチップマイコンからスーパーコンピュータまで どんなプログラムでも動くと勘違いするお客さんの多いこと・゚・(ノД`)・゚・
696 :
695 :2009/01/30(金) 23:07:16
誤)どんなプログラムでも動くと勘違いするお客さんの多いこと 正)どんなプログラムも無修正で動くと勘違いしているお客さんの多いこと
でも実際のところ、ポータビリティでCより勝る言語って無いでしょ?
698 :
デフォルトの名無しさん :2009/01/31(土) 04:37:30
わざわざCの構文に似せた言語を作るのやめてくれ。 要らない記号だらけで読みにくいんだよ。
俺はもっと記号を増やすべきだと思うんだが。 それともlisp見たいのがいいのか?
700 :
デフォルトの名無しさん :2009/01/31(土) 09:34:01
Lispが理想なんだが、多くの人はC風のが読みやすいのかな?
慣れだろ
702 :
デフォルトの名無しさん :2009/02/01(日) 00:10:10
チューリングマシーン!!!
Cなんて組み込みでしか使われんだろ? 駆逐されたも同然じゃん
君の住んでる世界でCが使われてないだけです
>>703 それじゃ駆逐されたとは言えん
このスレの目指す先はCの完全消滅だ
そういう意味ではCを消滅させられる可能性があるのはDだったけど・・
アルマゲドンで爆破が成功せずに地球に落ちたらCの完全消滅完了
709 :
デフォルトの名無しさん :2009/02/04(水) 22:11:35
オブジェクト指向以前の世代の言語としての完成形がCだから。 C++, C#, Java とかこの辺はみんなCの子供達であって、内部にCを持っているようなもの。 そういう意味ではCを駆逐することはできないだろう。 CのライバルはPascalとかであって、現代のひ弱な息子達ではないのだ。
Pascalこそ完全駆逐された言語だろが
711 :
デフォルトの名無しさん :2009/02/04(水) 23:06:25
Pascalの記述法(BEGINとかENDとか)は現在でもC系と勢力を二分しておる。 今でもCとPascalの代理戦争は続いてるんだ。
712 :
デフォルトの名無しさん :2009/02/04(水) 23:15:16
なつかしいな #define BEGIN { #define END }
C#はCの姿を借りたPascalの末裔だと思うが
714 :
デフォルトの名無しさん :2009/02/04(水) 23:30:26
PascalはDelphiの心の中で今も眠っています。
行儀良くプログラムが書けるという意味ではpythonがPascalの正当な継承者かもね
716 :
デフォルトの名無しさん :2009/02/05(木) 03:23:43
while(1) { wakeup; static int day; int time = wakeuptime(); while(1) { 2ch; if(time == Daytime()) { lunch; }; if(time == nighttime()) { supper; }; if( time == sleeptime();) { break; } time++; } day++; sleep; } こんな毎日、無限ループって怖いよな;;
717 :
マイク ◆gZ6OoOjBU6 :2009/02/05(木) 06:32:58
努力せずCという言語に依存し続ける無能な年寄りは無能な若者は確かにいらないと思う。 だがCはCで高級アセンブラ的側面を残している。 C++のような面倒なオブジェクト指向要素を排除してだ。 だからCは衰えはするけれども無くなることは無いだろう。 だって仕事しながら普通に家庭を持って家族を養って普通に生活する為には いつまでも限りの無いコンピュータオタクで居続ける コンピュータオタクとして努力しつづけることは不可能だもの。 俺のこの分析は間違いないだろう。
718 :
マイク ◆gZ6OoOjBU6 :2009/02/05(木) 06:33:50
無能な年寄りや無能な若者。
Fortranは勝ち組だな
C+ ぐらいのを作ればいいんだよ。
久しぶりだな、糞コテ。もう来るなよ。
722 :
マイク ◆gZ6OoOjBU6 :2009/02/05(木) 17:41:03
俺が思うに
ダンゴリオンというかコテはそれなりに優秀だと思うが
>>721 お前のような口だけの名無しはたいした事無いよ。
と糞コテが申しております
口だけの糞コテ
725 :
マイク ◆gZ6OoOjBU6 :2009/02/06(金) 07:41:07
口だけって言われても・・・ お前も口だけの糞名無しじゃん。
Cは使ってないけど駆逐する必要を感じない。
727 :
デフォルトの名無しさん :2009/02/06(金) 08:24:22
CがいらないとかwwwCがこんだけ普及したのはなぜだろうねえ 良く考えればわかりそうなもんだが
>>727 シンプルで使いやすい
高級アセンブラっぽくてアセンブラより便利
構造化プログラミング言語としてまあ成功してる
と言う感じじゃね
コンピューター史において普及した確実な理由なんてのはないと思うがなぁ Cと*nixが普及した理由より、Lispマシンなどのその他が 主流であり続けられなかった理由を考えた方が興味深いかもしれん
少なくとも、多くのプロセッサが8bit (せいぜい16bit) だった時代には 処理系の作り易さ、実用性、可搬性、作られたプログラムの軽さで C以外に主役になれる言語なんかなかったからな。
worse is better 正しさと単純さのトレードオフ
734 :
デフォルトの名無しさん :2009/02/07(土) 21:16:48
1.Cより、より簡単な文法である。 2.GCはない。 3.Cよりもアセンブラ的なことができる。 4.マクロがCよりより現代的だ。 5.型推論があったりする。 6.C言語より安全だ。 コンパイラの性能としては昔に比べると、 コンパイルスピードはおいて置いて、メモリは食ってもいいのではないかと。 とかいう言語があればいいんじゃないかと。
つまりD言語からGCを取っ払えと
もうアセンブラでいいじゃん
これからの時代、C++は避けても大丈夫? そりゃ会社で使うように指示されてるなら避けられないけど、趣味の範囲でとしたら。 Cはやっとくべきかなとは感じてるけど、C++はやだなあ。
>>737 > 趣味の範囲で
趣味なんて十人十色なので、これだけじゃ回答のしようがないな。
「何をやりたいか」をはっきり言ってくれんと。
>>737 趣味でやるならC++なんか逆に面白いのかもしれんぞ
趣味でやるなら C++0x
741 :
デフォルトの名無しさん :2009/02/08(日) 13:13:29
配列とかメモりブロックがサイズ情報さえ持ってればなあ。
>>741 コンパイル時にサイズが決まる配列は情報もってる
int main() {
int foo[100];
printf("foo's size = %d\n", sizeof(foo) / sizeof(*foo));
// VCだと↓でもおk
// printf("foo's size = %d\n", _countof(foo));
}
出力結果
foo's size = 100
>>742 そういう話じゃないだろ
c99だと動的に長さ与えてもsizeofで長さが取れるし
int len=10;
int arr[len];
mallocしてヒープから取った場合の話だろ
それは配列とは言わんだろ
745 :
742 :2009/02/08(日) 23:17:38
>>741 >>743 ヒープからメモリ確保するたびに自動でどっか変数に
確保したサイズを保存するとなるとオーバーヘッドになるから、
C言語の今の仕組みの代替にはならんのではと思う。
おとなしくstd::vectorか自前関数作るのが良いと思う。
>>745 >変数に
>確保したサイズを保存するとなると
ヒープの管理上、ほぼ例外なく持ってる筈なんで
それを取得する手段が標準化されれば済む話じゃね?
例外ありまくりです 50バイト必要なときに64バイト確保した場合 50という数字はどこにも記録されないなど
成程。 では保存するようにすればよいではないか。
共通アセンブラとしての役割なら C より LLVM IR のほうがいいんじゃない?
>>746 ヒープの管理領域から得られるサイズは要求したサイズと必ずしも一致するわけでは無いので、別にサイズを保存しなければならない。
いろんな理由で要求サイズより大きくなる場合がある。
>>748 オーバーヘッドになるから組み込みの人たちには嫌がられるだろうねー。俺も嫌だ。
でも需要があるのでサイズ保存するようにしたのがC++のvector
>>751 >オーバーヘッドになるから
速度的には malloc/free のとき以外に影響はないわけだが。
その程度が気になるほど何度も割り当てと解放を繰り返してるなら
そっちの方がよっぽど問題。
>C++のvector
違。
で、 int n[10], *p = n + 3; とした時、pのサイズはどういうカラクリで取得すればいいんだよ。
ヒープの話してたんじゃないのか?
printsize(void *p){ printf("%d\n", sizeof(*p)); } でサイズとれなきゃ意味なさすぎ。 autoだろうとstaticだろうとヒープだろうと区別なくメモリの塊として ポインタでこねくり回すのがCのコンセプトなんだからな。 ヒープのサイズ知りたいだけなら現状でもヘッダ覗けば取れるだろ。 完全に環境依存になるが。
言いたいことは、わかったから、もう一度仕様を読んできてください。 GCCのglibcなら、malloc.hのmalloc_usable_size()とかだったかなで、 malloc()で確保されたバイト数がわかるはず。 それが嫌なら、自分で構造体を利用して俺様ポインタでも作れば良い。 いい加減スレ違い以上
ヒープ使えるようなシステムならわざわざCを使ったりしない。 他の言語使う
>>734 テンプレートほど強力じゃなくてもいいから総称型とオーバーロードがあると
型推論が活躍すると思います。あとC++よりも見やすいABI。
それと、インラインアセンブラで生成したコードをchar配列に突っ込んで書き換えやすくする機能
(xbyakみたいなの)欲しい
Cに対する改善案は数あれど本当にそれがパフォーマンスを低下させることなく 生産性を引き上げるのかといわれると微妙なのばっかりなんだよな。 大半がオナニーシンタックスシュガーにとどまってるものばかり。 膨大な数のコンパイラに対してアップデートを強要する動機づけとしてはあまりにも弱い。 Cの進化がかなり保守的なのもわかる気がするよ。
>>758 >インラインアセンブラで生成したコードをchar配列に突っ込んで書き換え
ウィルス作るんですね?
いいえJITです
762 :
758 :2009/02/11(水) 01:39:42
>>760 その発想はなかった.......orz
このスレももうすぐ駆逐されそうですね
C駆除厨が完全に駆除されたわけか Cは向こう100年は安泰だな
C駆除厨の心境「ハードウェアの革新的飛躍に期待」
766 :
デフォルトの名無しさん :2009/02/11(水) 16:11:03
>>765 FPGAベースで、ほとんどの言語を駆逐するあれか!!
いや、壊れると腐ってハエがたかるあれじゃないかな
FPGAはまずクソ環境をなんとかすべき Xilinxとかやる気をそがれる
769 :
デフォルトの名無しさん :2009/02/14(土) 20:59:24
>>757 >ヒープ使えるようなシステムならわざわざCを使ったりしない。
>他の言語使う
ハァ?テメエ、ヒープの意味すらわかってねーだろバカタレ
OS乗ってなかったらヒープもないんじゃね?
s/ないんじゃね/ないじゃん/
772 :
デフォルトの名無しさん :2009/02/14(土) 21:57:59
>>770 >OS乗ってなかったらヒープもないんじゃね?
お前もわかってない。
ヒープ以前にスタックの意味がわかってない
>>772 ん、誤解があったかな?
スタックはOS無くてもコンパイラが作ってくれるけど、
ヒープ(mallocとか)は自分で書かないと使えないじゃないすか。
cellのspeを生で使おうとしてたとき、普通にヒープなんてなかったぜ
最近まで、「プログラムしね。C言語うんこめ」なんて思っていたけど、 いろいろ調べてみたり、打ってみて、プログラミングに熱くなる人の気持ちが分かる気してきた。 Cを取り合えず頑張ってみる宣言
スレタイくらい読めよw
C 並みに低レベルなコードだけが書けて、かつもっと安全な言語仕様(型とか)の 言語が出てくれば、自然と移り変わっていくんじゃねーかなーと思った。
まぁ現に組み込み業界とか徐々にC++に移り変わってるけどな
詰め込みで肥大化?
templateの無いC++ほしい
それじゃ何の役にも建たない
>>778 平たく言えば、c++ からオブジェクト指向の概念やらの、より高度な仕様を抜いた感じ。
786 :
デフォルトの名無しさん :2009/02/15(日) 13:37:56
Cしかコンパイルしないコンパイラ探すほうが大変な昨今 ぶっちゃけおんなじ事をCで書くのとC++で書くのと どっちがコード少なくやれるんだべ?
>>744 >とかメモりブロックがサイズ持ってたらなぁ
配列限定の話じゃないみたいだが
mallocしたメモリブロックを配列と呼ぶ人は多いし(違いを理解していても)、そこは空気読むべきだったと思う
>>786 余りにアバウトすぎてなんとも言えねぇwwww
C++の方が大規模になればなるほどCに比べてコード量は少なくできる部分が 多くなると思うが、指数的に比例して頭を使う量が増えると思うw
C++ってひとくくりに言うけど環境によって全然違うよね CだったらC89くらいなら対応を期待できるが C++は例外使えないとかありがち
ねーよ。
Embedded C++ と C++は別もんだろう
おまえらもよく知ってるアホみたいに売れてる携帯ゲーム機は例外使えないよ それとプロジェクトで例外禁止はものすごくよくあるだろ
>>794 >それとプロジェクトで例外禁止はものすごくよくあるだろ
流石のウチも、そこまで間抜けはいない。
googleのC++のコーディング規約は例外禁止だったな。
任○堂もソ○ー(PS3以前)も例外禁止 mozillaも例外禁止 BREWも例外禁止 確かによくあることだなw
google: 既存コードが例外を考慮していないから。
ゲーム屋: 知らん。なんで?
mozilla: 実装していない処理系で利用できなくなるから。
BREW: うんこだから。
>>794 : よく解らないから。
mozilla を除いて例外がモジュールの境界をまたがないルールにすれば使っても問題ないんじゃない?
800 :
デフォルトの名無しさん :2009/02/18(水) 18:43:28
そんなルールあってないようなものだから危険すぎるだろ
Googleだったら、速度重視するのに邪魔だったという理由が 付加されていても不思議に思わない。 高級さが欲しければPythonでも使っていろってことで。
たしか VC と GCC4 は try ブロックの出入りと throw したとき以外は例外による実行 コストは 0 だったような気がする。 コンパイラが悪いと例外を使っていなくても関数の出入りで負荷がかかるかもしれない。
他のスレでもそうだけど、何でC++厨って C++スレでもないのにスレ違いな事を長々と書きこむの?
他のスレでもそうだけど、何で 「他のスレでもそうだけど、何で××厨って △△スレでもないのにスレ違いな事を長々と書きこむの?」 みたいな事を言う奴って スレに沿った話題も提供せず文句ばっか書き込むの?
これは自己参照レスか
BitC って言語がある。コンセプトはなかなかよさげ。
まだまだ alpha 版って感じだけど。
ttp://www.bitc-lang.org/ トップページと言語仕様の最初のほうだけをざっと
見ると、
* 型推論
* 値としての関数(型安全)
あたりを C に取りこんだって感じ?シンタックス
今んとこ、便利だからっていう理由(パースしやすい
とかそういう理由かな) で Scheme ライクなものを
選択してるみたい。
ゲームに関しては例外発生した時点で製品品質がアウトだし復帰できるような 処理でもないからだな。 処理が失敗して巻き戻るとかゲームじゃ許されねぇ。
809 :
デフォルトの名無しさん :2009/02/19(木) 23:31:29
これまでの言語に毛の生えた程度の新しい言語じゃ、 少しばかり文法や使い勝手が向上しても誰も見向きもしないよ。 誰がわざわざそんな言語覚えようとするんだい? そして、C++, Java, C#, VB などが生き残ってるのは何故か考えてみよう。 言語の存在価値があるのは、言語類型やアーキテクチャが全く別物か、 そもそも根本的に違う言語であるかの時でしかない。
趣味で C でニンテンドーDSの開発やってて 少し規模が大きくなると、綺麗に管理したくなってきて クラス使ってインスタンスを操作する流れにしたくなっちゃうんだけど 自分はオブジェクト指向言語に毒されてるんかなぁ 組み込みの分野では C の言語仕様で十分なんすか?
型に執着して派生型とか汎用型とか共変とか反変とか 芋蔓式に出てくる今現在のオブジェクト指向 が 毒されている感はある
>>808 品質(笑)
雑魚ゲーム屋のエラー処理なんて
無限リトライか停止しかないだろw
>>810 速度やリソースとの兼ね合い。
>>808 みんながこういう認識なら例外禁止にしたほうがいいかも。
例外禁止にしても例外処理が要らないわけじゃないんだけどな。
>>808 ディスク、ネットワーク、バックアップメディアなどの処理ではエラーから復帰しないと
だめだろう。
ハングするゲームちょくちょくあるよなw
ゲームの世界だと例外を適切に処理しないことよりプログラムが停止することの 方がリスキーという認識なのかな。 その結果想定外の状態が発生したとしても貴重なデータが破壊されたり 人が死んだりする致命症にはならないわけだし。
818 :
デフォルトの名無しさん :2009/03/14(土) 22:22:19
例外、テンプレなしc++ってけっこう便利だと思うんだが。
例外、テンプレありならもっと便利だよ。
Cを駆逐するために登場したDがCより先に駆逐されたな
駆逐されたというか誰にも相手をされずにひっそり孤独死したような感じ
おまいら勝手に殺すなw
まったくだ。まだ生まれてもいないだろ。
流産だな
堕胎したのか
827 :
デフォルトの名無しさん :2009/03/16(月) 13:02:33
デストラクタで例外を投げるなとあれほど言ったのに…
けへへ、以前納品したアプリ、CでC++のクラスっぽい実装してたんだけど まさしくデストラクタっぽい後処理関数で例外を投げるに等しい処理をしていたことに今頃気付いた。 まぁ、アプリ終了時しかその関数に行かないし、終了するのは外部から殺されるときだからどうでもいいと言えばどうでもいいのだけれどw
Cでクラスのまねごとしてるだけなら別に問題ない。
「Cでオブジェクト指向プログラミングするテクニック」みたいのって幾度となく見てるけど、 カプセル化とか抽象データ型くらいまでまではいいけど、継承とか多態までいくと 「それムリがあるだろ」って感じになるな。マにうけるやつがいるから、ああいうの広めるの やめてほしい。
オブジェクト指向言語が裏でなにやってるかわかって勉強になるんじゃまいか? 実際に仕事でそうコーディングされたらたまらんが。
>>830 多態って構造体のメンバに関数ポインタでも持たせておくのかな。
自分でやろうとは思わないけど、個人的には許容範囲。
cでベクタグラフィックスベースのGUIツールキット作ったときは、 多態や継承だらけになるように設計したよ。 どのコントロールも基本的な動きはおなじで、かつ置換可能だったからね。
ふざけて課題でやった事あるけど、それこそ仕事でそんな事やるぐらいならC++使えよw
>>832 Xツールキットで派生クラス作るときは必須。
そうかなあ
Cを駆逐ってお前ら… どう考えても、まずJavaを駆逐するべきだろ。
>>837 無理して駆逐しなくても、そのうち自然消滅するだろう。
携帯を見れば分かるように、あんなもんエンドユーザにとって
何のメリットも無い。
いま案件数でトップだから、完全消滅まで時間かかりそうですな
Javaの価値ってJavaVMによるポータビリティと莫大なソフトウェア資産ってところ? ほかには何かあったっけ?
サンって身売り先探してるらしいじゃん
JavaはIBMが駆逐しそうです。(><)
843 :
デフォルトの名無しさん :2009/03/20(金) 00:40:07
C言語は2038年に自然消滅します
>>844 もうとっくに対策済んどるわ
いつの時代の話してんだボケw
846 :
デフォルトの名無しさん :2009/03/20(金) 19:00:01
>>845 そーでもないぞ。
(実際Linuxとか窓とかダメだろ)
64bit化すれば自然に解決なんじゃね?
C言語があるせいでPCの進化が妨げられてるよな
プラットフォームAPIが64bitで返せば、後はコンパイラのtime_tの扱いを変えるだけだからな。 問題はCよりVB6.0な気がする。去年も一本書いたし、何故か現役なんだよな。
大丈夫。VBは言語じゃない。
>>850 そんなもん現役で使うことが問題なんであって。
VBもうやだ・・・
VBイラネ
なにその末期患者を安楽死させるみたいな案は。 この世からC言語という病理だけ取り除けば全人類が幸せになれるだろ。
てか、病理って何だ俺。
Cの後に何を使うかってのをまず決めてもらわないと
C++に決まってる。 C++こそ至高。
禿同。C++の向かっている方向は素晴らしい。 これからも更なる高みを目指して羽ばたいて欲しい。 変態言語の王道楽土を築けるのはC++だけ。
なに?C++が変態言語だと?
おれ、テンプレートでノイローゼになって自殺するのが夢なんだ…
Boost.MPLをはじめて知ったとき、余りにも理解できなくてノイローゼになりそうだった
知らなくても使えるという理想郷でパンドラの箱をあけるんじゃない。
箱開けないとコンパイルエラーとかデバッグの時に困るんだよ
自前実装よりはノイローゼのがマシ
ゴンドアの谷の歌にあるもの 土に根をおろし 風とともに生きよう 種とともに冬をこえ 鳥とともに春を歌おう どんなに恐ろしい武器を持っても 沢山のかわいそうなロボットを操っても 土から離れては生きられないのよ! ↑を適宜改変して「C言語から離れては生きられないのよ!」にしてちょ
AT&Tの谷の歌にあるもの CPUに根をおろし マシン語とともに生きよう Eレジスタとともにメモリの壁をこえ バイナリデバッガとともにインストラクションを歌おう どんなに恐ろしいJITを持っても 沢山のかわいそうなVMを操っても CPUから離れては生きられないのよ!
869 :
デフォルトの名無しさん :2009/07/03(金) 21:02:20
C++0xを完全に流産させるためには どうしたらいい?
Dを布教
アボートしますた double free or corruptionだっておー 人の書いたソースをデバッグするのは大変だなぁ
完全に C の代替となり得る言語が存在しないのが現状だから C と仲良く付き合うことを考えたほうが生産的じゃね?
>>872 つか、これだけルーズな言語はないんだが
当初の設計思想が、高級アセンブラだよな
DOS時代にマクロアセンブラ使い始めて思ったのが、「もっと高度なマクロを 使いたい」だったからなぁ。高級アセンブラの需要は高かったと思う。
Cを深く理解している人が作った Cのコンセプトを100%受け継ぎつつ 互換性はない言語って誰か作ってないかな。 言語仕様眺めてみたい。
876 :
デフォルトの名無しさん :2009/07/04(土) 13:34:36
>>875 100%受け継いでて互換性がないって、矛盾してるだろw
矛盾していないと思うよ。 「Cのコンセプトを100%受け継ぎつつ」だから、 言語仕様はシンプルにするとか、プログラマは全知全能とか。
Cのコンセプトに沿った物でCではない物の需要やいかに C使えよ、で終わるんじゃないかなあw
879 :
デフォルトの名無しさん :2009/07/04(土) 18:22:14
確かにCは駆逐したほうがいいな。 まあハードの進化によって早晩あんな糞言語は消え去るだろう。
言語としてのC以外に、環境としてのC世界が広いのが悩ましいな いろんなシステムがC由来の世界に依存してるからね *nix以外だとOSXはCore Foundationでラップした世界にしてる感じなのかな MSならそのうち根幹からCLIとかにしちゃうのかもしらんけど
881 :
デフォルトの名無しさん :2009/07/04(土) 19:44:52
環境としての広さならPerlだって負けてないぞ Unixには標準でインストールされてるし、Windowsでもフリーでダウンロード可能。 道具の扱いやすいさにおいてはPerlがぴかいちだと思ってる。 C言語はやることが細かすぎて途中で放り出したくなる
perlがもう駆逐されてるのに。
>>879 モノに出来ずよっぽど悔しかったんだろうが、お前はそもそもプログラマに向いてない。
perlはCGI記述用として注目されたのが唯一の最盛期だったな
それ以前に、sed, awk, perl あたりの言語やツールが盛り上がったことがあったんだよ。
sec+awkが遅いから、代わりにperlが流行った。 ところで、Cは組み込みの文字列型と、new/deleteを採用してほしい。
>>886 > ところで、Cは組み込みの文字列型と、new/deleteを採用してほしい。
そんな物を「今さら」「Cに」採用すべき必然性は皆無。
どんな言語にも何も必然性なんてないよ。
「よく分からんけど取りあえず反論してみたい」らしいなw
Cを駆逐したいなら、「今さら」という発想が出てくるだろうが、 Cを今後も使い続けていくなら、「今さら」ということはない。 C++とCはずいぶん違う言語になった。 C++を丸ごと使いたくない人たちに向けてのCの改良があっていい。 ただし、言語の文法は究極的には好みの問題で、 必然性なんて議論する話ではない。 必然性があるかないかなんて話をしはじめたら、 一般的な必然性のあるものなんてない。
C言語儲の僕は、前から名前空間とテンプレートが欲しいと思っていた まぁ、C89でもがんばれば似たようなことはできるしC99なら似たようなことができるから、そこまで強く言ってこなかったが >886 無ければ自分で作ればいいだけのことよ 僕は、文字列型を作ったし、C言語で抽象データ型とオブジェクト指向風に書くためにnew/deleteのようなマクロも作った
>>891 みんなが勝手に俺様仕様を作ってもしかたがない。
gccを使ってフロントエンドのみ変えるだけなら誰でもできる。
>>891 趣味と実務は違うのだよw
プロの世界は、技術だけではやって行けない。
その意味が分からないなら、まだ下っ端。
技術だけではやっていけないかも知れないが、技術が無い奴はこの世界から去って欲しい。 とはいいつつも、技術が無い奴の尻拭いで飯食ってるので、やっぱ居て欲しい。
需要がある以上は駆逐されんと思うけど、 駆逐するには、という質問に対して代替言語を提示する以外に 何かいい回答ってあるんすか?
Cで書くのが無理なくらいハードウェアが複雑化したりとか
何かの間違いで Java プロセッサが台頭してきたりとか もっと間違えて .NET プロセッサが出来たりとか
順番が逆だろう Javaが完全勝利した後でJavaプロセッサが台頭するならわからんでもない
javaが台頭なんてありえるのかよ。 2-3世代前のマシン使ってるような遅さなのに。 特にLinux上。
ecj、gcjあるよねー
const みたいに実行速度に影響ないようなものなら c にとりいれられる。
ネームスペースは?
904 :
デフォルトの名無しさん :2009/07/29(水) 05:07:58
まあバグばっかり作ってる実務より稼動する趣味の方がましってマーケットは考えるけどな
Head Fastシリーズとかに代表される 「初心者向けの」オブジェクト指向本やデザインパターン本が 言語基盤としてJavaを取り上げるケースが増えてるので なんとなくJavaがはびこりはじめているような気がする…。
携帯電話というプラットホームは一応「C言語を駆逐」した例になるのかな?
なぜ?
>>906 ブロードバンドプロセッサ側はおもいっきりCだけど
普通にCで書かれたアプリもあるだろ
>>909 auのBREWアプリだけでしょ。
ドコモもソフトバンクもアプリはJava。
その下の層はもちろんCが欠かせないはずだけど、
>>906 はそこを言っているわけではないだろうし。
それだとWindowsもC#が
Obj-C
>>905 オブジェクト指向言語を学びたいやつにCで教えるのは嫌がらせでしかないだろw
まあそうなんだけど、ある程度オブジェクト指向が分かった後で Cで無理やりオブジェクト指向してみるといろいろ感じるものがあるんだよな〜。
俺は最初からOO風なコード書いてたからJavaとかに移行しても違和感なかった というか構造体に変数入れてついでに関数ポインタ入れてとやってたら必然的にそうならない?
916 :
デフォルトの名無しさん :2009/07/30(木) 01:00:10
まあいまやCなんか誰でも書けるから 希少性の上で価値はなくなったよな
むしろCでちゃんと書ける奴は減ってる
>>914 C でなんとか OOP しようと悪戦苦闘した後に C++ に触れると
なんだかとてもありがたい言語のように思えるからあら不思議。
>>917 なんで減るん?退職したり死んだり?
むしろCでちゃんと書ける奴の増加率は減ってる
>>915 んなことするくらいなら c++ つかえ
C++無い頃はそうやってた
そういう意味では、C → C++ → Java/C# と移行したほうが有り難味があるな。 Cで、ドローツールっぽいのを書いていたけど、C++に移行して感動した。 その後、C++でCORBAやってたけど、Java/EJBに移行してなんて簡単なんだと思った。 そして今は、ScalaやOcamlを勉強しながら、Javaはなんて面倒なんだろうと嘆いている。
そうしてどんどんプライドもメモリ使用も処理のサイクルも肥え太っていく 豚が出来上がるのですね
Javaはなんで面倒なんだろう
中国人とかのC使いが増えまくりだからな 生産効率が悪いCはもう部分的にしか使わないのが普通だよね
>>919 C++がありがたい言語なのは当然だろう。
なにが不思議なんだ?
宗教スレだから
我らが教祖ビヨーン・スポッスポッ
ありがたいというか適材適所に使うだけの話で 言語にこだわってると遅れとる原因になるよ
組み込みや OS はまだまだ C なんかね。 そういう見方をすれば c 使いがエリート意識もつのもしゃーない気もするな。
C言語のコンパイラの1つや2つ書いてから言えよ。
Cに限らず、実用レベルの品質、性能をもったコンパイラは 大抵100人年以上の工数がかかるんだがな。
150 名前:デフォルトの名無しさん 投稿日:2109/07/31(水) 21:02:14
Cコンパイラ作ったぞ
>>932 出てこいやー
といいつつメタコンパイラーに吐かせただけなのでした
C++やC#は原作者の名前が覚えづらいのが問題。 その点Cは、ダリル・ホール&ジョン・オーツと、覚えやすいから安心。
それ、びよーん・すぽっすぽっに喧嘩売ってるのかしら
aho
awkの「a」のひと
>>1 ボランティアで既存のCのコードを全部新言語でリプレースし
可読性、パフォーマンス、メンテナンス性等で既存のコードを圧倒する。
Linuxカーネルとか。そしてCグラマの引退を待つ。
そうすりゃCのコードなんて99%撲滅できる。
なんつー厨房思考
カーネルも書けるような新言語ってあったっけ?
言語から作れ、つってんじゃね?知らんけど。
D
これだけ *アセンブラに近い言語* を他に作れるかの問題だろ 高級になればなるほどアセンブラから離れるわけだし…
なつやすみですね、みなさん。 みなさんにしゅくだいです。 これからいっしゅうかんいないに どくそうせいのあるCげんごのけってんをひとり10こしらべてここにかきなさい。
1.すぐ喧嘩になる(書式論争free不要論争その他) 2.インデントがめちゃくちゃでも動く 3.自称なんちゃってプログラマでも参加出来る 4.そのうちコンパイル中の警告が気にならなくなる 5.メモリリークしてても気付かない 6.名前がぶつからないように長くなる 7.ヘッダ二重読み防止機能を自分で毎回書く 8.staticが糞 9.scanfが糞 10.いらない子をいっぱい生んでしまった 順不同
>948 1. 別に喧嘩しているわけではないよ、教えをひろめているだけだよ 2. フリーフォーマットを認めていない言語に移ってください インデントなんて可読性をあげるだけのただの飾りだよ 3. なんちゃって、せめて規格書を読んだ人だけが使う職人向け言語になってほしいな 4. 無視するのはへぼプログラマ、私はコンパイラの警告はすべてクリーンに保っている さすがにlintクリーンはできていないが 5. ただのへぼプログラマ 6. あるある、しかしながら、構造体に関数ポインタで長くならないようにしている 7. あれを書くと始めようという気になる、 もっとも、最近はIDEで書かずに済んだりしているんだろう スクリプトで一発にしてもいいし、UUID必須だよな 8. staticの修飾の意味がスコープによってことなるのは、確かによくない まぁ、もう慣れているから今更変えられるのもごめんだけど 9. scanfが糞 10. 確かに C言語の短所は同時に長所である場合が多い 型の大小関係以外決められていない -> 多くの環境に移植された 入出力をライブラリで提供 -> 言語としてとてもシンプルにできた ポインタがあるのでアンセーフ -> 効率の良いプログラムがかける ... 別に名前空間とテンプレートが加われば、C言語に不満はないんだわ
950 :
このプログラム作ってくださいm( _ _ )m :2009/08/11(火) 03:11:48
1. 以下のプログラムは、勝ち数と負け数を入力して勝率 (= 勝ち数 / ( 勝ち数 + 負け数) )を計算するプログラムである。 勝ち数、負け数に負の値が入力された場合は入力をやり直させ、 勝ち数+負け数が0 の場合は勝率計算が不能であることを表示する。 ただし、このプログラムはバグを含んでおり正しく動作しない。 デバックを行って正常動作するようにせよ。 修正したソースプログラムと実行結果を示すこと。
951 :
このプログラム作ってくださいm( _ _ )m :2009/08/11(火) 03:13:26
#include <stdio.h> int main(void){ int nwin, nlose; do printf("勝ち数を入力してください:"); scanf("%d",nwin); if (nwin<0) puts("負の値を入力しないでください!"); while(nwin<0); do printf("負け数を入力してください:"); scanf("%d",nlose); if (nwin<0) puts("負の値を入力しないでください!"); while(nlose<0) total = nwin + nlose; if (total = 0) puts("勝率を計算できません。"); else printf("勝率は%dです。\n",nwin/total ); return(0); }
952 :
このプログラム作ってくださいm( _ _ )m :2009/08/11(火) 03:14:07
2.半径(cm)と中心角(度)(いずれも整数値)を入力して扇形の面積を計算する プログラムを作成せよ。円周率の小数点以下桁数は任意に決めてもよい。 ただし、入力値に以下の処理を加えること。 ・半径に負の値が入力された場合、入力をやり直させる。 ・中心角の入力値は以下のように処理する。 i. 0〜359の場合はそのまま使う。 ii. 負の値の場合、0か正の数になるまで繰り返し360を 加えた値を中心角とする。 (例: -30 -> 330, -450 -> 270 ) iii.360以上の場合、360で割った剰余を中心角とする。
953 :
このプログラム作ってくださいm( _ _ )m :2009/08/11(火) 03:15:08
3.正の整数を繰り返し入力し、0 か負の数が入力されたらそこで入力を打ち切り、 そこまでの合計と平均を計算するプログラムを作成せよ。 最後に入力した負の数は計算に入れないようにせよ。 また、平均は小数点以下まで算出せよ。 すいません、明日までにお願いできますか?
955 :
このプログラム作ってください!( >_ < ) :2009/08/11(火) 04:24:05
ごめんなさい。 そっちに貼ります。
957 :
デフォルトの名無しさん :2009/08/11(火) 07:57:56
Linux関係ないし C++はテンプレート使っててるから 早い分コードサイズがでかい
959 :
デフォルトの名無しさん :2009/11/19(木) 22:30:42
googleの新言語goがこんどこそCを駆逐する!
>>959 go が GC 使っている以上、GCのない言語の需要はなくならないと思う。
GCはいい事はいいんだけど、デストラクタと無関係な点で 必ずしも一番いいとは言えない
GCがキチンとしてないと糞ニーのテレビみたいに止まっちゃうよw
.NETで書かれたプログラムを走らせながらタスクマネージャを見ていると explorer.exeのCPU使用率が一定間隔で跳ね上がる事がよくある ああこの時GCが動いてるんだなあと思うんだけど、何か気持ち悪い
964 :
デフォルトの名無しさん :2009/11/24(火) 21:51:08
OSからは、あと30年は消えそうにない。
>>958 純粋な疑問なんだけど、コードサイズがでかいと具体的にどういう問題があるの?
そりゃ実行時のメモリ不足とか配布に難がでてきたりとかだろ。
命令キャッシュミスとかね
それはあんまりないだろ。
969 :
デフォルトの名無しさん :2009/11/25(水) 16:35:29
おいおい テキストサイズ増えたらIキャッシュミスが増えるCPUって欠陥だろw
>>936 プログラム板にRubyのスレはたくさんあるけど、
Troffのスレは一つもないね。
972 :
デフォルトの名無しさん :2009/12/29(火) 18:32:45
(´・ω・`)
C言語とC++とC#
974 :
デフォルトの名無しさん :2010/02/23(火) 22:07:28
(´・ω・`)
>>965 流れ見てないけど、単純にROMに入らんことがある。
家電屋です。
入りきらないのなら容量増やせばいいじゃない。 1Mb x32とか。
>>946 同等の機能で、もうちょっと洗練された仕様の言語が欲しいなあ。
何かC言語って、色んなところになあなあの仕様があるから
余計に難解に感じることがある。
978 :
デフォルトの名無しさん :2010/02/24(水) 09:44:11
>>977 そういう話は聞くが具体的にはなんだろう。
>>975 よくある話でワラタ
ファーム屋と回路屋が別会社で喧嘩する話聞くよな
回路屋はアセンブラレベルで考えてファーム屋は高級言語で考えていた溝
前に回路屋はRAMが全部グローバルだと思っていてきっちりマップまで作っていた為に
スタックで潰しまくりんぐwwww
>>976 それだからソフト屋はコスト意識が低いと言われるんだ
でも最近いるんだよな
テレビのリモコン程度にIO足りないとかでSH2やら使う仕様書くメーカの奴
いくらのリモコン作るんだよって話www
166や595のゲートで済むのにな
OSがいるとか意味不明すぎ
だからと言ってアセンブラで開発工数かけるのも問題
>>961 goにはコンストラクタもデストラクタもないべ
>>976 私組み込みに関わった事は無いけどその考えはプロとしては最悪だと思うの。
ほ
へ?
転職してC言語から離れたからもうC言語駆逐されてもいいよ でもC言語は組み込みがある限りは不滅なのかね
985 :
デフォルトの名無しさん :
2010/02/27(土) 02:46:38 OSもあるから。