アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
何故TAB (スコア:3, 興味深い)
"output.c: html_print()" の設計方針がまったく理解できない。
\x01や\x02にも特殊な意味を割り当ててるようだし
web経由でやってくる汚れたデータを扱う場所で
なぜそのような独自メタ文字を定義するのかな。
手を抜くという目的のためなら手段を選ばない。誰だって犠牲にする。
大人って汚いね。
unhtml_buffer()なんて
条件によってはループが終るときi==BUFSIZEだけど
そのあとbuf[i]にカスを突っ込んでるから他所の土地に手を出してることになる
安全のためにstrncpyを多用してるみたいだけど
strncpyは溢れたとき自動で末尾に留
Re:何故TAB (スコア:1)
こういうことがやりたいときにはこういう実装が一般的、みたいな
暗黙の了解っていうのはプロのプログラマー(変な表現!)の人たちは
何処で身につけられるのでしょうか?
学校、自分の経験から、会社の先輩から、他人のソースを読んで、
とにかくヒラメキ、そんなのがわからん天才以外プログラミングしてはいかん、etc・・・
勉強がてらの趣味プログラムしか経験していない私ですが
その課程で一番プログラミングに必要とされる知識は
結局そういう実装上の常識?みたいなもんなんじゃないかと痛感しました。
大きな意味でアルゴリズムだと思
Javaなどの高級な言語を使いましょう (スコア:1, 参考になる)
ソフトウェアエンジニアリングとアルゴリズムだけに注力したいのなら、そのような些末にとらわれない言語を使うべきです。
# もちろん、Cを使わなければいけないときもありますが。
いったん「何をするべきか」「何をするべきではないか」が分かってしまえばいいんですけど。
> 自分の経験だと試行錯誤な経験と人のソースを読む
> ってことで地道に身につけてくしかないかなぁ、道はスゲェながそうだ・・・
> という結論に達したのですが皆さんはどう思われるでしょうか?
ある問題をCで書き表すとき、その方法にはいくつかありますよね。
私はそれらの選択肢を頭の中でアセンブリ言語に直し、もっとも単純で、できれば高速になるものを選びます。
高速化はこだわらない方がいいですね。機械的に出来る最適化はコンパイラがやってくれますし、数回しか
実行されないところを高速化してもしょうがない。
それよりはソースが単純なものになるように書きましょう。
そうすれば、あとで(自分を含む)誰かが読んだときに分かりやすいですし、変に凝った書き方をするよりも
高速かつ安全であることが多いです。この辺りはCに限りませんけどね。
変なソースを読むよりは、「意識してプログラムを書く」方がお勧めですね。
あとK&Rをきちんと読みましょう。
あの本には標準ライブラリ関数を実際に作る話がたくさん出てきます。自分でもやってみましょう。
処理系で実装は違えど、内部でどんな処理をしているかを知っていれば、取捨選択やコスト計算が出来るようになります。
あとやってはいけないこともね。ついでに関数ごとの細かい違いも頭に入りますし。
# fputs() と puts() の出力の違いとか。 :)
Re:Javaなどの高級な言語を使いましょう (スコア:2, 参考になる)
>(理解出来ない|まともに使えない)、Cの欠点です。
>ソフトウェアエンジニアリングとアルゴリズムだけに注力した
>いのなら、そのような些末にとらわれない言語を使うべきです。
C言語はもともとメモリ操作が容易にできることを想定して
作られているので、それは仕方ないのかなあ、とも思います
私がむしろ問題だと思うのは、
>あとやってはいけないこともね。ついでに関数ごとの細かい違いも頭に入りますし。
># fputs() と puts() の出力の違いとか。 :)
こちらでしょうか。コンパイラ実装の容易性を優先して、コーディングの容易性を犠牲
にしすぎているように思います
Re:Javaなどの高級な言語を使いましょう (スコア:0)