アカウント名:
パスワード:
Cはちょっと抽象度の高いマシン語だと教わったし、その理解は間違いではないと思う。欠点つーか、まさにそれが利点なんじゃねーの?
#だから日本では、「使いこなせないのは修行が足りないからでは?」と考える。
とりあえずC99では除算演算子による負数の除算の動作が規定されて [seclan.dll.jp]、一歩前進。その代わり標準ライブラリにdiv関数が何のために存在するのかよくわからなくなりましたが。
「'\0'は0x00だ」は標準規格でも正しいですよ。これは八進法で文字コードの値を指定する記法で、'\1' == 1、'\10' == 8という具合です(最大3桁(\xxx)まで)。
>「i=i++」はコンパイルエラー
これ、コンパイル時に検出できないパターンがあるんですよ。どうしますか。実行時の検出でOK?
ECMA-262やJLSはちゃんと規定してますね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
だからC言語はマシン語だと… (スコア:3, すばらしい洞察)
Cはちょっと抽象度の高いマシン語だと教わったし、
その理解は間違いではないと思う。
欠点つーか、まさにそれが利点なんじゃねーの?
#だから日本では、「使いこなせないのは修行が足りないからでは?」と考える。
本音と建て前を分離しようとがんばってるところ (スコア:1)
もう、おおむねよく使われるコンピュータのアーキテクチャも固まってきたんだし、各アーキテクチャ向けに、アーキテクチャ依存しまくりの「ぶっちゃけこうなってますC」を策定しちゃえば良いと思います。x86-Cとかamd64-Cとか。
例えば、ヌルポインターってなんなのか? [kouno.jp]の説明に過剰な慎重さが求められたりとかするのは、かなり無駄じゃないかと。もう「内部表現が『0x00000000』ポインタ」と決めてしまえば説明がすごく短くなるのに。
他にも、「i=i++」はコンパイルエラー、とか「'\0'は0x00だ」とか、「実装はそうなってるけど、それはCの仕様ではなく、実装依存でたまたまそうなっているだけで・・・」という回りくどい説明を切って捨てられるように。
Re:本音と建て前を分離しようとがんばってるところ (スコア:1, 参考になる)
とりあえずC99では除算演算子による負数の除算の動作が規定されて [seclan.dll.jp]、一歩前進。その代わり標準ライブラリにdiv関数が何のために存在するのかよくわからなくなりましたが。
Re:本音と建て前を分離しようとがんばってるところ (スコア:1)
「'\0'は0x00だ」は標準規格でも正しいですよ。これは八進法で文字コードの値を指定する記法で、'\1' == 1、'\10' == 8という具合です(最大3桁(\xxx)まで)。
Re: (スコア:0)
>「i=i++」はコンパイルエラー
これ、コンパイル時に検出できないパターンがあるんですよ。どうしますか。実行時の検出でOK?
Re:本音と建て前を分離しようとがんばってるところ (スコア:1)
>これ、コンパイル時に検出できないパターンがあるんですよ。どうしますか。
・・・なるほど。じゃあ、何が起こるのかを固定すべく、演算が実行される順番を厳密に定める方向で。
Re: (スコア:0)
ECMA-262やJLSはちゃんと規定してますね。
Re: (スコア:0)
登場時期とか開発者とかその動機とかもろもろ鑑みると
まあこんなもんじゃないすかね
個人的に好きか嫌いかと言われれば大嫌いですけど
なんだかんだ言いつつ潰しも利きますし
ちょっと踏み込むとすぐにCしか使えなくなったりしますし
当面スタンダードの座は維持できるんじゃないですか
Re: (スコア:0)
Cの1文からニモニックとほぼ正確な所要clk数を透視できたため。
コンパイラの最適化の挙動まで知ってる人は一部のレジスタ位までは透視できた。
TMPを含めたC++、変態最適化、不思議ちゃんCPUの今じゃ、まずできない。
で、Cを否定してみたところで、
中途半端に関数型とくっついたC++は言語仕様に人間のおつむが追いつかないし
#C++をちゃんと知ってるのなんて、boostのphoenixの連中位でしょ
Ocaml/F#だと、本来の関数型みたいなエレガントで上質な香り立つコードじゃなくて
手続型の手垢に塗れた