トップページ⇒tech
34コメント13KB

日本人のBYTEへの異常な愛情

■ このスレッドは過去ログ倉庫に格納されています
0001田部NGNG
田部です。
日本人って小さい物が好きですね。
盆栽が好き!

システムヘッダでBYTEを提供している開発環境ならともかく、
プロジェクトリーダーがわざわざ、
BYTEをtypedef して、
開発担当者を、地獄に突き落としてる例がこれです。

で、またまた「2ch.pc.program」の皆様に質問、
質問1:
現代の32BIT以上のCPUにおいて、
なぜ、素直に int 型や、char *を使用しないで
BYTEなんか導入する
プロジェクトが存在するんだろう?
質問2:
なぜ、整数型 int を記述すべきところで
char LoopCnt ;
char i ;
と、char を使用する人が後を絶たないのだろう
補足:
構造体の中や、
I/Oを伴う物では
unsigned char が必要である事は承知してます。

以下に BYTE を愛する人のコードを示します。
以上よろしくお願いします。
0002田部NGNG
――――以下:BYTEへの異常な愛情――――――
#include <stdio.h>
#include <string.h>
/*******************************/
typedef unsigned char BYTE ;
/*******************************/
static BYTE *mes[] = {
(BYTE *)"BYTEが、",
(BYTE *)"好きなら、",
(BYTE *)"ゲロを吐く"
} ;
static BYTE byte(BYTE id)
{
BYTE i ;
BYTE buf[BUFSIZ] ;

switch((int)id) {
case 0:
for(i = 0 ; i < 0x100 ; i += 3) {
(void)strcpy((char *)buf,(char *)mes[i%3 + 0]) ;
(void)strcat((char *)buf,(char *)mes[i%3 + 1]) ;
(void)strcat((char *)buf,(char *)mes[i%3 + 2]) ;
(void)printf("%s\n",(char *)buf) ;
}
return 0 ;
case 1000:
return (BYTE)-1 ;
}
return (BYTE)-1 ;
}
int main(void)
{
int i ;
for(i = 0 ; i <= 1000 ; i += 1000) {
BYTE ret = byte(i) ;
if(ret == (BYTE)-1) {
(void)printf("%d\n",ret) ;
}
}
return 0 ;
}
――――――――――――――――――――
以上
見て、勝手使って http://rec.ncos.co.jp
0003デフォルトの名無しさんNGNG
>>1 はウンコ
0004デフォルトの名無しさんNGNG
もしかして、fj.comp.lang.cのコピペ?
0005田部NGNG
あげ
0006デフォルトの名無しさんNGNG
まあ春先だから
0007デフォルトの名無しさんNGNG
バイトの小娘への異常な愛情なら自信アリアリですが
0008デフォルトの名無しさんNGNG
>>6
春です。
今ごろ、新人達は
C言語の初歩をやっている頃でしょう。
気分を変えて、新しいスレッドを立ててみました。

現象:
char cs[1024] ;
if(cs[0] == '\0') {
}
と、記述すべきところを

unsigned char ucs[1024] ;
if(strcmp(((const char *)ucs,(const char *)"\0") == 0) ==1) {
;
}
と、記述する人がいます。
疑問:
(a) なぜ、文字列に unsigned を付けるのか?
(b)   なぜ、キャストを好んで大量に付けるのか
(c) なぜ、1文字比較にstrcmp()の関数を呼ぶのか?
(d)   なぜ、文字列の末尾にプログラマが自分で¥0を書くのか
(e) なぜ、「0と等しい事が真ならば」としつこく書くのか

上記の(a) 〜(e)の
どれかに当てはまるコーディングを、
見たことがある方、

なぜ、
「無意味に書いて、無意味に遅いコード」が、
後を断たないのでしょう。
0009デフォルトの名無しさんNGNG
1ステップ幾らの名残だから。
0010デフォルトの名無しさんNGNG
2.プログラムは難解な程美しいという社風だから
0011AYAMNGNG
キューブリックに謝れ
0012見る増すカラスNGNG
>>8
(a) なぜ、文字列に unsigned を付けるのか?
答 0xffを-1ではなく255と評価したいから

(b)   なぜ、キャストを好んで大量に付けるのか
答 constの意味が良くわかっていないから

(c) なぜ、1文字比較にstrcmp()の関数を呼ぶのか?
答 比較関数を呼ばないと「互換性が無くなる」と上司に怒られるから

(d)   なぜ、文字列の末尾にプログラマが自分で¥0を書くのか
答 安全な方に振ってみたつもり

(e) なぜ、「0と等しい事が真ならば」としつこく書くのか
答 !などを使うと「見難い。保守性が無い」と上司に怒られるから


(b)〜(e)はバカだと思うけど(a)は納得できるかな。
0013デフォルトの名無しさんNGNG
>>8
田部って、へんなコード出して
「なぜこんな書きかたをする人がいるのでしょう」
ってパターンばっかりだよな。

「なぜ、あなたの周囲にはレベルの低いプログラマが多いのでしょう?」
ってこっちが聞きたい。
0014デフォルトの名無しさんNGNG
私は小姑みたいに愚痴ってる人が1を真として使うことには
文句をつけないのか不思議でしょうがないです。
0015デフォルトの名無しさんNGNG
(b) 将来誰かがstrcmpを書き換え、引数の型がchar*にされたときエラーを出すために。
0016そりゃNGNG
ロリコンが多いからだろう >>1
0017デフォルトの名無しさんNGNG
田部は帰れ!
0018デフォルトの名無しさんNGNG
って言うか田部って誰よ?
0019デフォルトの名無しさんNGNG
MLスレで、漏れが「関数型言語=盆栽」理論を講釈してやった
相手だと思う。
0020デフォルトの名無しさんNGNG
その説明では田部が何者か全然分からんのだが。
0021デフォルトの名無しさんNGNG
それより BIT はなぜ休刊になりましたか?
0022デフォルトの名無しさんNGNG
bit復刊を願おう。.netがどうだとか
そんな毛唐の一商品についていくら詳しくてもだめろ。
あの雑誌が別に日本の技術レベルを底上げしてるとは
言わないが、象徴的な出来事ではある。
0023下司野郎NGNG
コンピュータ・サイエンス娯楽誌
という微妙なジャンルを成立させていた、
読者層が一般誌に流れたのと、
笑いを取れる執筆者が枯渇したからでは?
と勘繰ってみる
0024デフォルトの名無しさんNGNG
バイトをクビになって、今帰ってきました。欝
0025デフォルトの名無しさんNGNG
俺、今日バイトの面接だった。
なんかあっぴぃぃ〜るが足りなかったよ。
たぶん不採用だろうな。
でもいいんだ。いざとなったら親のすねかじって生きてくから。
親が死んだら遺産で(俺んち金持ちなのよね・・・これが唯一の救いだわ)
0026デフォルトの名無しさんNGNG
相続税の計算しとけよ。
0027デフォルトの名無しさんNGNG
田部さん、責められてますなあ。
http://queen.heart.ne.jp/cgi-bin/browse?msgid=%3Ca9epi3%24ifu%241%40nsvn01%2Ezaq%2Ene%2Ejp%3E&ym=200204
0028デフォルトの名無しさんNGNG
早朝に田部さんから痛いレスがついてる模様。
指摘された問題点を改めようという姿勢がまるでみうけられませんな。
もはやこれまでかと。
それともfj.comp.lang.cの懐はさらに深いのか?
コンゴノテンカイニキタイ
0029デフォルトの名無しさんNGNG
しらい迎撃モード突入
http://queen.heart.ne.jp/cgi-bin/browse?msgid=%3Ca9hg0b%24d6k%241%40nsvn01%2Ezaq%2Ene%2Ejp%3E&ym=200204
0030デフォルトの名無しさんNGNG
>>8

(b) なぜ、キャストを好んで大量に付けるのか
答 コンパイラが弾くから。 変数の整合性見直す時間ないし。

答’ コンパイラが弾くから。 後で極力直します。 沢山あると、読みにくくてかなわん。


(c) なぜ、1文字比較にstrcmp()の関数を呼ぶのか?
答 もっともらしい。 ソースサイズを、コメントの次に稼げるし。

答’ 比較が1文字でも文字列だしなあ、とか思うものの何て面倒な事を・・・。
 私は N88-BASIC 出身ってのもあるのだろうけど、初心者が1行に
こんなに詰めて書いているのを見ると、非常に嘘臭く見えるよ。


(d) なぜ、文字列の末尾にプログラマが自分で¥0を書くのか
答 自分で書いておけば、間違えて書き潰してしまっても安全だし。

答’ 初心者の頃、よく分かってなくて私もやってました(笑)。
 先頭に文字数書いておけばこんな苦労しないで済むのにぃ!!とか、
分かってね〜事を叫んだ記憶も(笑)。
 と言うか例題のどこに、自分で '\0' 書いているトコがあるのか?


(e) なぜ、「0と等しい事が真ならば」としつこく書くのか
答 成立する、とはイコール「1」だから。 「==1」と「==0」を定型文化
する事で慣用句となり、可読性が向上する。

答’ C的思考が出来ずBASIC発想だった頃、自分の思考手順をそのまま
書き下すと最後に「〜は成立する」で終わるので、どうしてもそうなっていた
頃がありました。
 初心者ならともかく、玄人さんになってまでコレやってたら適性疑うけどね(笑)。


 ちなみに私は仕事屋さんではなく日曜趣味なんで、それっぽい答と自分の
現状の答’を書いてみました。
 (a) に付いては私もこうしているので、特に言う事ナシ。
0031      NGNG



  素朴で単純な、ひとつのもの(箸とか)をいかに使うか
0032田部NGNG
ちょっと胃液が臭いでちゅ
0033デフォルトの名無しさんNGNG
>>30
頭に何も付けずに char だけ書くと、signed になるか unsigned になるか
処理系依存だったんじゃなかったっけ?
だから処理系依存にならないようにわざわざ unsigned 付ける人がいたような。
0034デフォルトの名無しさんNGNG
漏れはどっちかというとdereferenceしてからキャストするな。

const char *p = "カラアゲうまうま";

for (; *p; p++) {
  if (((unsigned char)*p - 0xa1) < 0x5e) {
    ...
  }
}
■ このスレッドは過去ログ倉庫に格納されています