この会社辞めようと思ったソースコード#17

1仕様書無しさん
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。

ちなみにここは質問スレじゃないので
技術的な質問がしたいならム板 http://pc11.2ch.net/tech/ に逝って。

前スレ
この会社辞めようと思ったソースコード#16
http://pc11.2ch.net/test/read.cgi/prog/1175485506/
2仕様書無しさん:2007/07/06(金) 15:27:05
>>1乙である
3仕様書無しさん:2007/07/06(金) 15:35:51
goto >>1;
4仕様書無しさん:2007/07/06(金) 16:11:29
Try
 Call 新スレチェック

Catch 1_Exception
 Messagebox.Show(">>1乙んでれ","新スレ記念")

Finally
 if >>1 Is Not Nothing Then >>1.Dispose

End Try
5仕様書無しさん:2007/07/06(金) 22:48:15
Try
Dim i As Integer
Dim s As String

While True
i = 1 / 0
s = Nothing.ToString
Loop

Catch NRE As NullReferenceException
MessageBox.Show("ぬるぽ")
Resume Next

Catch ex As Exception
MessageBox.Show(">>1乙")
Resume Next

End Try
6仕様書無しさん:2007/07/06(金) 23:01:29
throw new NullReferenceException;
7仕様書無しさん:2007/07/06(金) 23:28:18
if ( i < 8 ){

} else if( i < 19 ){

} else {

}

っつーコードを今日見た。
8仕様書無しさん:2007/07/06(金) 23:43:08
定数直書きしてる以外は、まぁアリかなと思ってしまった。
9仕様書無しさん:2007/07/06(金) 23:43:31
>>7
ん?
10仕様書無しさん:2007/07/06(金) 23:57:35
>>7
どこら辺がだめなん?
11仕様書無しさん:2007/07/07(土) 00:04:49
else ifで8以上という条件が入ってないのがいやなのかね。
それはelseが含意してるからなくても問題ないよな。
12仕様書無しさん:2007/07/07(土) 00:28:02
マジックナンバーがいやなんじゃない?
13仕様書無しさん:2007/07/07(土) 00:29:16
別に会社辞めようと思うほどではないな
14仕様書無しさん:2007/07/07(土) 01:22:14
かといって、「辞めようと思ったほどではないが嫌になったソースを晒せ」スレを
わざわざ立てるまでもないような。
15仕様書無しさん:2007/07/07(土) 01:51:29
setHoge(int hoge) {
  hoge = hoge;
}

一瞬スルーしそうになった

label:
for(int i = 0; ; i++) {
  s = fs.readline()
  switch  (i) {
  case 0:
    ...
  case 1:
    ...
    ...
  case XX:
    break label;
}

この意味の分からない switch 文、全く関係のない
VB 屋も書いてたけど、何か意味があるのだろうか
16前スレ996:2007/07/07(土) 02:09:12
>>前スレ997
>配列参照って START TO END みたいな指定出来るん?

いや、それはさすがに。
考えてることが違うと思うけど、漏れが使ってるのはこんなんです。

 Dim Data1(1 to 6) As Integer
 Dim a As Variant

 For i = LBound(Data1) To UBound(Data1)
  a = Data1(i)
 Next i

>>前スレ999
>あ、ごみん、そういう意味じゃなかったのね>996
>なんかボケてた済まん

いえいえ、こっちこそ説明が足りなかった。
17仕様書無しさん:2007/07/07(土) 02:23:21
optionで配列開始番号固定すれば良いのに。
18仕様書無しさん:2007/07/07(土) 02:25:28
>>16
おまえのソースで辞めたくなったヤツ多そうだな。
19仕様書無しさん:2007/07/07(土) 02:28:16
>>17
>>18
書いておくけど

 Dim Data1(1 to 6) As Integer

の部分は前スレ998をコピーしただけだから。
20仕様書無しさん:2007/07/07(土) 02:29:48
while(rs.next())
{
~~
break;
}

を見て嫌になった。本人に↓と同じ意味だよね?と確認しつつ直した。

if(rs.next()){
21仕様書無しさん:2007/07/07(土) 03:01:48
>>20
何か問題でも?
22仕様書無しさん:2007/07/07(土) 03:10:39
>>21
詳しく書かなかったから伝わらなかったかな。

while(rs.next())
{
System.out.println("hoge");
break;
}

って書けばわかるかな。
23仕様書無しさん:2007/07/07(土) 03:16:32
あー、無条件にbreakしてるのか
24仕様書無しさん:2007/07/07(土) 03:23:34
>>23
そうそう!そうなの。そういえば更に思い出したんだけど、こんな感じだったなあ↓
while(rs.next()){
if(cond)
{
// some statement
}
break;
}

もちろんif(rs.next() && cond)に書き直した。

VB6とかやってる人間は、if(cond1 && cond2)の中身が
&&とか関係なく全て評価されると思っちゃうから、
二重if文とかを書く傾向があるように見える。
25仕様書無しさん:2007/07/07(土) 03:23:35
breakとcontinueは好きな奴はホント好きだよなあ
26仕様書無しさん:2007/07/07(土) 03:34:14
>>25
思考が構造化されてないんだよ
27仕様書無しさん:2007/07/07(土) 04:48:50
while(1){
if ( hogehoge ){
28仕様書無しさん:2007/07/07(土) 04:50:00
書きこんじったorz

while(1){
a++;
if ( hogehoge[a] )
{
b++;
continue;
}
break;
}
29仕様書無しさん:2007/07/07(土) 05:10:30
>>24
実はその while は中で break や continue を使ってジャンプするためのもので、
そしてさらに実は別のループ文に含まれていて、内側の while を if に置き換えると
それまで配置されていた break や continue が外側のループに適用されるように

っていう悪夢が頭の中をよぎった。
30仕様書無しさん:2007/07/07(土) 05:38:34
>>28
文字数のカウント?
どこから教えるべきか悩むな
31仕様書無しさん:2007/07/07(土) 05:39:08
>>15
どの言語でも何故か
for {
  case
}
が好きな奴いるよな。何故だろ
32仕様書無しさん:2007/07/07(土) 09:18:30
if(なんか条件) {
}

なにも実行しないんですか?
気になって眠れません><
33仕様書無しさん:2007/07/07(土) 10:35:50
>>32
その「なんか条件」の式は副作用を持っているのかなあ。
それとも将来その中に何かを書きこむのが100%確実だからそう書いているのかな?

気になって(ry
34仕様書無しさん:2007/07/07(土) 12:12:43
>>32
その条件のときは何も処理しないということを明示するために敢えてそういう風に書くことはあるけど
グダグダ陰口叩かれないように今度からコメントを書いておくか
35仕様書無しさん:2007/07/07(土) 12:37:39
>>34
if (条件) { 空 } else { 何かする } ならまだわかるけど(条件逆転しろとは思う)、
上から下に流れるだけの状況でelseもなくif (条件) { 空 } と書く理由はよく
わからんな。
36仕様書無しさん:2007/07/07(土) 13:11:54
空の関数DoNothing()を入れとくとか。
37仕様書無しさん:2007/07/07(土) 13:14:28
>>35
たしかに
if(条件){
 空っぽ
}else{
 処理
}
はあるけど
if(条件){
 空っぽ
}
はないな
失礼した。
38仕様書無しさん:2007/07/07(土) 14:11:20
if (a = 0) {
}
39仕様書無しさん:2007/07/07(土) 14:56:37
削るとバグが出るって奴か。
40仕様書無しさん:2007/07/07(土) 15:24:23
>>32
条件のところが関数とかメソッドを呼んでいるならば怖いね
条件式というか関数実行後の副作用がありえるし、エラーコード判定の名残の可能性がある・・・
例外使えないような連中とJavaとかやるとよく出くわすコードかも
41仕様書無しさん:2007/07/07(土) 15:30:07
>>40
中途半端に使えると、
} catch( Exception e ){
}
と書いて揉み消してくれるので、余計タチ悪い。w
何度出くわしたことか。orz
42仕様書無しさん:2007/07/07(土) 15:47:04
>7
昔DOSプログラマだったころ、MSC6でそれ書いてはめられたことがある。
オプティマイザが順番を入れ替えやがって、>7のコードでいえばi < 8のときも
else if (i < 19)の部分が先に評価されて条件が成立してしまうという…。
そのときは#pragmaで部分的にオプティマイザを切ったけど、それ以来
冗長でもelse if ((i >= 8) && (i < 19))と書くようにしてた。
43仕様書無しさん:2007/07/07(土) 16:35:07
>41
それは中途半端に使えるというレベルでもないw
44仕様書無しさん:2007/07/07(土) 21:05:11
>>42
初歩的な言語仕様から外れてるんだから
それはコンパイラのバグだと思うが。

45仕様書無しさん:2007/07/07(土) 21:05:22
>>42
それはオプチマイザのバグだろ・・・
46仕様書無しさん:2007/07/07(土) 21:08:52

♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪

♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪

♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪

♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪

♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪
47仕様書無しさん:2007/07/07(土) 21:17:10
>>38
誰を騙そうとしてんだよw
48仕様書無しさん:2007/07/07(土) 21:39:55
>>45
最適化もコンパイラの一部だろ
49仕様書無しさん:2007/07/07(土) 21:42:27
>>45>>42へのレス
50仕様書無しさん:2007/07/07(土) 21:48:54
それは見ればわかるよ
51仕様書無しさん:2007/07/07(土) 21:50:48
if((((式1)&&(式2)) || ((式3)||(式4)) && ((式5)||(式6))){
  --意味不明なスパゲッティが数十行--
}else if(--眩暈がするたくさんの式--){
  --以下略--
}

せめてコメント付けておいてください…
5242:2007/07/07(土) 21:53:07
いや、当然コンパイラのバグだよ。だからといってそのコンパイラを使うのをやめるわけには
そう簡単にはいかないから、防御的プログラミングをしたっていう話で。
53仕様書無しさん:2007/07/07(土) 22:11:27
>>42
コンパイラの不具合にあわせて防御的プログラムをしたのはいいと思うよ。
でもね、このスレは会社をやめようと思ったソースコードなんだよ。
そのソースコードで会社を辞めようと思ったのか?
54仕様書無しさん:2007/07/07(土) 22:23:42
コンパイラのバグをどうにもせず、防御的コーディングのみで
対応するような会社だったら辞めたくなるな。
まぁ、製品によっちゃどうしようも無いこともあるだろうけど。
そうだとしたら、間違って最適化された箇所を早期に
発見してくれるツールなり何かが欲しくなってくるな。
55仕様書無しさん:2007/07/07(土) 22:25:39
コメントも無い
変更履歴も無い

あるのはコピーライトだけ
56仕様書無しさん:2007/07/07(土) 22:28:24
>>54
テストをちゃんとすれば気づくだろ。
テスト時は最適化せずに、リリース時だけ最適化してコンパイルする奴ならむしろ辞めてほしい
57仕様書無しさん:2007/07/07(土) 22:38:42
>>51
どうせ正解はこんな感じ。

if((((式1)&&(式2)) || ((式3)||(式4)) && ((式5)||(式6))){ //もし今年が閏年なら
  --意味不明なスパゲッティが数十行--
}else if(--眩暈がするたくさんの式--){
  --以下略--
}
58仕様書無しさん:2007/07/07(土) 22:42:58
一番辞めようと思ったというか辞めたのはアプリケーションを改修のために引き継ぐ事になった時の話だ。
外注に作らせていて炎上したらしく、酷いことはまあ予想していた。
だが、本気で辞めようと思ったのはその時が最後だ。

 ソ ー ス コ ー ド が 存 在 し な い
59仕様書無しさん:2007/07/07(土) 22:46:25
>>58
逆アセンブルでGO!
60仕様書無しさん:2007/07/07(土) 23:00:21
>>58
うちのプロジェクトではよくあることだ
10年勤めて2回はソースコードがまったく存在せず、
2回は偽物またはバージョン違い(つかそもそもコンパイルエラーが出る)のソースコードが提供された。

もちろん仕様書つきのプロジェクトなどお目にかかったこともない。
61仕様書無しさん:2007/07/07(土) 23:03:12
>>58

ソースコードがないのも、ソースコードのバージョン管理ができていないのも
経験したけど、
 ど っ ち も 嫌 だ !

>>59
最初から組み直したほうが早いこともあるかも……。

俺が経験したのは、マシンごとバイナリが失われて、ソースコードも無くて、
あったのはインタフェース仕様書だけという、かなりアレな状況だったけど。www
62仕様書無しさん:2007/07/07(土) 23:05:53
>>60
>コンパイルエラーが出る

さすがに都市伝説かと思ってたけど、本当にあるんだな。w
63仕様書無しさん:2007/07/07(土) 23:15:19
>コンパイルエラーが出る

VisualStudioの古いバージョンで作ったのを
新しいバージョンでコンパイルしようとすると
コンパイルエラーはしょっちゅうでる
64仕様書無しさん:2007/07/07(土) 23:18:43
>>60
そんなプロジェクトにしか回されないお前って一体・・・
65仕様書無しさん:2007/07/07(土) 23:19:12
ソースコードないのはないので好きだけどな。

1年ぐらい時間くれるし。ないならしかたないよねって感じで

今時年契約で5000万とかうますぎるし
66仕様書無しさん:2007/07/07(土) 23:21:37
コメントアウトされたコードあるのは全て糞
消せよ読みにくいんだよ
67仕様書無しさん:2007/07/07(土) 23:23:57
>>66
NEC様のご命令で消せません><
68仕様書無しさん:2007/07/07(土) 23:24:41
結構変更履歴として残させるとこ多いね。
ローテクな感じでかわいそう。
69仕様書無しさん:2007/07/07(土) 23:33:30
>>66
お前が消せよ
70仕様書無しさん:2007/07/07(土) 23:43:54
>64
でもそんなプロジェクトこそ実力と経験は必要だよな
全然報われないだろうけどw
71仕様書無しさん:2007/07/07(土) 23:45:54
>>68
コードの90%近くを書き直してコメント率が70%位行った時は、さすがにorzってなったな。
72仕様書無しさん:2007/07/07(土) 23:47:57
コメント率って何?
ソースコード中のコメントの量?
73仕様書無しさん:2007/07/08(日) 00:17:26
そうだよ
74仕様書無しさん:2007/07/08(日) 00:20:19
もしくは各行に対してコメントの記述してある割合
// 変数i の宣言
int i ;
// 変数i に0を代入
i = 0;

とか死にたくなるくらいくどいソースは見たことある
肝心なi が何に使用されているかは記述されていないんだがなw
75仕様書無しさん:2007/07/08(日) 00:43:16
>74くらいのコメントなら自動生成できるなw
そんな機能絶対いらないけどw
76仕様書無しさん:2007/07/08(日) 01:00:55
>>74を短くしてみた。

// int i;
int i;
// i = 0;
i = 0
77仕様書無しさん:2007/07/08(日) 02:36:11
// もし a と b が等しいなら
if(a==b){
 // c に func() の戻り値を代入
 c = func();

// それ以外なら
}else{
 // 何もしない
}

..._| ̄|○
78仕様書無しさん:2007/07/08(日) 02:46:53
>>77
小学校の卒業式を思い出した
79仕様書無しさん:2007/07/08(日) 04:09:29
まともなコメントは最後のだけか
80仕様書無しさん:2007/07/08(日) 04:38:53
>79
最後はコメント以前にelse{}自体が要らない…
81仕様書無しさん:2007/07/08(日) 04:44:45
いらないけど、会社で書くことが決まってるかもよ?
うちはdefaultは書く決まりになってるし。
82仕様書無しさん:2007/07/08(日) 05:09:37

width を本気で ワイズと全員が言っていた時。。。

83仕様書無しさん:2007/07/08(日) 05:12:09
スレ違い
変な読み方スレへお帰りください
84仕様書無しさん:2007/07/08(日) 06:15:04
>>82
ワイドって読んでたけど、本当はなんなの?
85仕様書無しさん:2007/07/08(日) 06:31:05
>>84
辞書引け
86仕様書無しさん:2007/07/08(日) 06:34:11
辞書を引いてみたが、ウィドスと読むのかな?
発音記号はこんな感じだった → widθ
87仕様書無しさん:2007/07/08(日) 06:49:15
え、俺はずっとwithと同じ発音だと思ってた・・・やべぇw
88仕様書無しさん:2007/07/08(日) 11:27:34
Javaで一時的に2MBほどのbyte配列を確保しなければならなかったと言うことがある。
簡単なアップロードモジュールなんだが、実装をさせてみた所、単体テストでOutOfMemoryが炸裂。
嫌な予感がしたのでソースを追ってみた。

byte[][][] fileDate = new byte[2][1024][1024];

協力会社からきた30台Java経験3年の奴だったんだが、Fizz-Buzzやらせて辞めさせた
89仕様書無しさん:2007/07/08(日) 11:31:31
>>88
それでいいんじゃねーのw?それで2MBって思えばさw
90仕様書無しさん:2007/07/08(日) 11:48:07
何か見落としていたらすまんが>>88の何が悪いのかわからん
91仕様書無しさん:2007/07/08(日) 11:52:56
>>88
分かりやすくていいじゃんw
92仕様書無しさん:2007/07/08(日) 11:57:15
>90
オレも分からなかった
Javaの多次元配列だとなにかあるのか?
93仕様書無しさん:2007/07/08(日) 12:00:54
>>90
参照するたびにオフセットから3つのインデックスを算出しないといけないのはナンセンスだな。
9490:2007/07/08(日) 12:04:39
>>93
JVMの仕様はオブジェクトの構造を定めていないから実装依存だと思うんだが。

というか何がわからんかって、>>88のコードでOutOfMemoryが炸裂する理由がわからん。
配列アクセスで参照を辿るという「普通の実装」で考えても
byte[1024][1024][2]ならタコだがbyte[2][1024][1024]なら問題ないと思うが。
9588:2007/07/08(日) 12:07:57
訂正
byte[][][] fileDate = new byte[1024][1024][1024];
96仕様書無しさん:2007/07/08(日) 12:10:26
>>95
ちょww
9793:2007/07/08(日) 12:15:31
4GB積んだ企業向けシステムなら問題なしw
98仕様書無しさん:2007/07/08(日) 12:18:03
>>88
つまり、その最初の2つのインデックスしか使用してないわけだなw

>>97
JVMって4GBもヒープとれたっけ?
99仕様書無しさん:2007/07/08(日) 12:21:27
>>93
それに関しては多次元配列にする方が効率が良かったりする
new byte[2*1024*1024] だと2MBの連続した領域がヒープに確保される筈
だけど、new byte[2][1024][1024]だと1KBの連続した領域がバラバラに確保されて参照されるんで、OutOfMemoryが発生しにくい
最近の実装が最適化でもするならばスマソ
100仕様書無しさん:2007/07/08(日) 12:21:56
88は、仕事でもタコミスを連発していることだろうな
10190:2007/07/08(日) 12:33:40
>>99
あまり詳しくないがGCがコンパクションくらいするのでは?
そもそも2MBの配列をローカルで使い捨てするようなプログラムなら
そっちの方が問題が大きい気もするが。

そもそも「2MBの配列」を
byte[2 * 1024 * 1024]で取るかbyte[2][1024][1024]で取るかというのは、
性能よりも何よりも、まずはその配列の意味を考えて決めるのが正しい姿勢だと思うが
102仕様書無しさん:2007/07/08(日) 13:20:04
ファイルのアップロードという話だから
new byte[2*1024*1024]のほうがストリームと
つなげやすくていいんじゃないだろうか

それはそうと、「fileDate」に誰もつっこんでないんだな
103仕様書無しさん:2007/07/08(日) 13:25:00
>>102
よくあるスペルミスだし、辞めるほどじゃないから
104仕様書無しさん:2007/07/08(日) 13:37:46
JavaだったらNIOのDirectByteBufferとか使うんじゃね?
105仕様書無しさん:2007/07/08(日) 13:44:40
>>99
OSによるだろうが仮想メモリ空間が提供されている以上は
メモリに空きさえあればOutOfMemoryの発生頻度は同じ
106仕様書無しさん:2007/07/08(日) 14:13:52
>95
おいおい, 全然意味合いが違うじゃないかw

>102
byte型に独自フォーマットで日付の何かを入れてるんだと解釈していた
107仕様書無しさん:2007/07/08(日) 15:32:14
32bitフラットメモリモデルでは、たとえば、
DLLのコード部分も同じ4GBの空間に読まれるので、
そこで仮想メモリ空間が分断化されることは多々ある。
108仕様書無しさん:2007/07/08(日) 20:27:13
ソースコードじゃないが
仕様書のタイトルを♪で囲ってた時・・

♪○○○○システム♪
109仕様書無しさん:2007/07/08(日) 20:56:23
>>107
なに適当言ってるの?
110仕様書無しさん:2007/07/08(日) 22:22:40
いいか、みんな

        (゚д゚ )
        (| y |)

安部政権になれば「いい国」になると信じてたのに、
いつまでたっても苦しいままだ。

それどころか、ますます国じゅうが狂ってきて、
日本人同士が憎しみ合うようになっている。


    美しい  ( ゚д゚)   国
       \/| y |\/


ひらがなにして


        ( ゚д゚)  う つ く し い く に
        (\/\/

逆から読むと…

        ( ゚д゚) 憎 い し 苦 痛
        (\/\/


そういうことだったんだ。
111仕様書無しさん:2007/07/08(日) 23:32:49
>74
今追ってるソースがさー

' SQL文を作成
(コード略。まぁベタベタに文字列連結してると思いねぇ)

' レコードセットオープン
(コード略。単にOpenメソッド呼んでるだけだが)

' フェッチループ
(コード略。毎度おなじみ、Do Until .EOF~.MoveNext~Loopだ)

もうDB読みに行くたびにこればっか。下の二つのコメントいらんから何がしたいのかを書けよと > 書いた香具師
明日もまた最初の「SQL文~」のとこに「何を照会するのか」書き足す作業がはじまるお……
112仕様書無しさん:2007/07/08(日) 23:33:09
>>110
死ね
113仕様書無しさん:2007/07/08(日) 23:38:52
>109
何、どの辺りが適当なわけ?
114仕様書無しさん:2007/07/08(日) 23:39:54
書かなくとも解るコメントって本当に邪魔だよな
そんな時に限って重要なコメント(目的とか制限とか)が記述されていない
115仕様書無しさん:2007/07/09(月) 06:19:47
「コメントは全行に書け」という規則があったので、コーディング用紙の右側に全部
                              /*                  */
を書いた奴を大量コピーして使用。そのままパンチに出したから、隙間の所も全て
空のコメント行になってた。しかも肝心のコメント文はカタコト(w
116仕様書無しさん:2007/07/09(月) 14:21:50
>そのままパンチに出したから、

50年くらい前かな?

117仕様書無しさん:2007/07/09(月) 16:21:34
>>116
おいおい、25年くらい前まではあったぞ。
118仕様書無しさん:2007/07/09(月) 17:26:27
確かに、紙カードを最後に使ったのは、25年前だなぁ
119仕様書無しさん:2007/07/09(月) 17:43:30
ちょwwww
お前らいったい何歳なんだ?
俺29なんだが・・・

ps.別スレに誤爆して欝なおいら
120仕様書無しさん:2007/07/09(月) 18:39:25
そんないい歳こいたオッサンが昼間から2chかいいご身分ですな。
しかし、五十路ニートってしゃれにならんなw
121仕様書無しさん:2007/07/09(月) 19:06:56
マ板で昼間からとか
122118:2007/07/09(月) 19:11:01
いや、もう引退しているから。
暇で暇で仕方がないんです。
いいご身分でしょorz
123仕様書無しさん:2007/07/09(月) 19:30:43
>>122
それはそれで、先派内がうらやましい気がする
124仕様書無しさん:2007/07/09(月) 20:15:17
>>123
長くても20年短ければ明日だもんな
125117:2007/07/09(月) 21:20:37
悪ぃ、俺職場から書いてる。
126仕様書無しさん:2007/07/10(火) 01:42:34
>>122
なんかおもろいソフトつくってよ
127仕様書無しさん:2007/07/10(火) 05:42:04
ベタだけど、フィボナッチ数列の一般項を求めるプログラムで再帰で書く奴はどうかと思った。その子は情報系。あ、大学での話ね。
128仕様書無しさん:2007/07/10(火) 06:14:22
>>74 >>111 そんなバカなことがあるもんか。
129仕様書無しさん:2007/07/10(火) 07:00:49
>128
それが実際いるんだな。
「各処理が何をしているのか分かるよう、コメントを書くべき」
ということだけ知ってて
実際何を書くべきなのか全く分かっていない奴
コードを直訳しろとは誰も言ってないだろっちゅーに…
130仕様書無しさん:2007/07/10(火) 07:08:23
' 結果をRetに格納
Ret = MsgBox(ry
' もしRetが6なら
If Ret = 6 Then
  ' Aに1を格納
  A = 1

VBじゃもはや見飽きたコメントだな。
せめて【Retが「はい」なら】と書け…
って言うかそれ以前に定数使えよと思うけど。
しかもAに1を入れる意味が何なのか書いてない。
131仕様書無しさん:2007/07/10(火) 07:23:12
ようはアレだろ、コメントはコードを日本語化したものを書くのじゃなく、そのコードはどういう意図なのかを書けってことだろ。
コメントは他の人にも分かるよう、コードの意味を書くのですよとか言うのを言葉どおりに受け取ってるんじゃない?
132115:2007/07/10(火) 08:49:54
>>115が30年ぐらい前だったかな。 俺は今59だけどクミコで現役です。
小ぶりのシステム新築お任せがよく来ます。
133仕様書無しさん:2007/07/10(火) 10:19:08
まあ入門書丸覚えが精一杯、てなレベルの人々が多いんだろう。
入門書に書いてある、コードの直訳としてのコメントしか
見たことが無いから、『コメントとはそーゆーモンである』と
身につけてしまうのであろう。
そうなってしまわない奴こそがまっとうなプログラマーになれるわけだが...
134仕様書無しさん:2007/07/10(火) 11:54:48
久美子さん(59歳)まだまだ現役です。
135仕様書無しさん:2007/07/10(火) 11:55:37
ワロタww
136仕様書無しさん:2007/07/10(火) 11:59:10
ホットドックで楽しようと考えた管理者が大杉た
137仕様書無しさん:2007/07/10(火) 12:02:25
>>134
どういう意味で現役なのかwwww
138仕様書無しさん:2007/07/10(火) 13:05:33
えっ、そっち?うわー
139仕様書無しさん:2007/07/10(火) 13:26:38
>>127
再帰の練習課題なのに
一般項の公式つかって得意になってる奴?
140仕様書無しさん:2007/07/10(火) 14:20:46
>>139は無類の再帰好き
141仕様書無しさん:2007/07/10(火) 14:32:54
フィボナッチ数列ぐらいの単純なものなら再帰より一般項を直接求めたほうが速いかも知れんけど、どっちでもいいよ
142仕様書無しさん:2007/07/10(火) 14:37:03
>一般校を直接求め
どうやって?
143仕様書無しさん:2007/07/10(火) 14:38:03
>>139
いや、そうじゃなくて線形で書けってこと。
オーダーが全然違う
144仕様書無しさん:2007/07/10(火) 14:38:49
例えば
(define (fib n)
145仕様書無しさん:2007/07/10(火) 14:42:26
線形?反復の間違いだろ
146仕様書無しさん:2007/07/10(火) 14:50:41
そもそも数列自体が再帰的に定義されてるから、再帰的にプログラミングすることは別に自然だと思うけどな。
147仕様書無しさん:2007/07/10(火) 14:57:23
言ってる意味がよくわからんが
 return fib(n - 1) + fib(n - 2);
じゃなくて
 int tmp = fib(n - 2);
 return tmp + n - 1 + tmp;
と書けってことか?
148仕様書無しさん:2007/07/10(火) 14:58:54
ただ、フィボナッチのプログラムを書けなら再帰で全然OK
時間のオーダーをなるたけ小さくしろなら、再帰で書く奴はゴミ虫
149仕様書無しさん:2007/07/10(火) 15:03:24
>>147
それ両方再帰じゃない?
再帰:
(define (fib n)
 (if (<= n 2)
   1
   (+ (fib (- n 1)) (fib (- n 2)))))

反復:
(define (fib n)
 (define (iter rersult a count)
  (if (=> count n)
    result
    (iter (+ result a) result (+ count 1))))
 (iter 1 1 1))
150仕様書無しさん:2007/07/10(火) 15:12:05
フィボナッチ数の一般項ならWikipediaにも載ってるよ
151仕様書無しさん:2007/07/10(火) 15:13:42
ただ、無理数のn乗が入ってるから余程nが大きくない限り普通に足し算したほうが速い気がするw
152仕様書無しさん:2007/07/10(火) 15:15:33
>>142
・・・(^ω^;)
高校で習うから安心していいよ
153仕様書無しさん:2007/07/10(火) 15:22:07
寿司食いたい
154仕様書無しさん:2007/07/10(火) 15:24:23
>>146
自然ていやぁ自然かも知らんが、末尾再帰を再帰で書くのは阿呆。
155仕様書無しさん:2007/07/10(火) 15:35:22
ちょっとおもしろそうだから、再帰・反復・一般項でそれぞれ実行時間計ってみた。
再帰;
35項まで求めて9.3秒
40項は1分たっても反応無いので中止
反復;
10000項まで求めて0.14秒
一般項:
10000項は無理数の10000乗が無理だった
156仕様書無しさん:2007/07/10(火) 15:36:01
プログラムの頭に処理内容がフローチャートで書いてあるソース群を
渡されたのだが...
変更したら上に書いてあるフローチャートも直すのか?
つーかもうあってねぇよ
157仕様書無しさん:2007/07/10(火) 16:01:06
イイハナシダナー
158仕様書無しさん:2007/07/10(火) 16:33:58
>156
直してあげなさい
後の人のために

それか、チャートをDELしてあげなさい
159仕様書無しさん:2007/07/10(火) 16:51:39
Schemeの場合
末尾再帰は最適化でループに書き換えられなければならない
という事が仕様で明示されてるから末尾再帰ならOK
末尾再帰と認められない書き方したらダメだが
160仕様書無しさん:2007/07/10(火) 16:53:23
>155
実際そこまで違うものなのかー
161仕様書無しさん:2007/07/10(火) 17:03:40
>>160
全く嘘はついていないぜ
TUTSchemeで実装&時間計測
162仕様書無しさん:2007/07/10(火) 17:19:01
>>155
>10000項は無理数の10000乗が無理だった
その前に、64bit double で計算してると n=71 あたりで誤差が出始めるし
そもそもほぼ O(1) なんだから 10000 までやっても意味ない気が。
163仕様書無しさん:2007/07/10(火) 17:33:12
ですよねー
164仕様書無しさん:2007/07/10(火) 17:59:32
>>162
まぁね
オーダーはexpt使ってるからlogNくらいかも。まぁ係数がかなり小さいだろうが。
165仕様書無しさん:2007/07/10(火) 18:32:45
n=70ぐらいでいいのなら、map が最速じゃね?
166仕様書無しさん:2007/07/10(火) 18:50:03
普通に反復でも0秒だけどね、70くらいなら
167仕様書無しさん:2007/07/10(火) 19:11:23
ここはスレ違いへの許容があるスレですね
このぐらいのほうが話題が膨らんで楽しい
168仕様書無しさん:2007/07/10(火) 21:46:22
>>159
Cでもイマドキのコンパイラなら、最適化してくれるよ。
169仕様書無しさん:2007/07/10(火) 22:36:11
こんなソースがありました。

Dim iIndex As Integer
For iIndex = 1 to 3
Select Case iIndex
Case 1
処理1
Case 2
処理2
Case 3
処理3
End Select
Next

これって・・・
処理1
処理2
処理3
でいいだろ...orz
170仕様書無しさん:2007/07/10(火) 22:39:26
>>169
そういうパターンって意外に多いみたいだな。

なぜそういう却って難しい書き方をしてしまうのか、理解できない。
171仕様書無しさん:2007/07/10(火) 22:40:02
>>169
ばっかwww
きっと増える可能性を考慮して頑張って考えたんだよwwww
そのあと増えることは実はないのにwwwww

End Select
Next

の間に共通の処理があるならいいとおもうけどさ・・・・
172仕様書無しさん:2007/07/10(火) 23:19:17
>>169
テストコードじゃないの?
173仕様書無しさん:2007/07/10(火) 23:28:08
ステップ数で金額が決まるんじゃね?
どうせコボラだろ。
174仕様書無しさん:2007/07/11(水) 00:00:39
>>173
そんな事言ってると、
大勢のコボラーにピンセットで全身の皮膚を摘まれるぞ。
175仕様書無しさん:2007/07/11(水) 01:43:49
176仕様書無しさん:2007/07/11(水) 03:17:01
>>171
増える可能性を考慮すると、余計に
単に並べた方が良くね?
177仕様書無しさん:2007/07/11(水) 12:53:19
>>176
無理やり解釈したが結構無理があったようだ
178仕様書無しさん:2007/07/11(水) 13:56:19
寿司食いたい
179仕様書無しさん:2007/07/11(水) 14:04:32
( ゚д゚)ガリでも食ってろ
180仕様書無しさん:2007/07/11(水) 14:31:07
char *hoge(char *inbuf, char *outbuf);

コメントには入力専用と書いてあるが、
inbuf を変更されるのか気になって夜も眠れない。
181仕様書無しさん:2007/07/11(水) 14:43:29
while(1) printf("寿司食いたい\n");
182仕様書無しさん:2007/07/11(水) 15:11:08
ちょっとリアルで寿司食いにいってくるわ
183仕様書無しさん:2007/07/11(水) 15:17:13
while(1) printf("ウニ軍艦\n");
184仕様書無しさん:2007/07/11(水) 16:20:13
寿司.Dispose
185仕様書無しさん:2007/07/11(水) 18:06:44

while(1) printf("かんぴょう巻\n");

printf("大トロ\n");

printf("シマアジ\n");

printf("あわび\n");

printf("ウニ\n");

printf("ぷりん\n");
186仕様書無しさん:2007/07/11(水) 18:11:16
/(^o^)\
187仕様書無しさん:2007/07/11(水) 19:03:13
先生、かんぴょう巻きがオーバーフローしました
188仕様書無しさん:2007/07/11(水) 20:08:40
>>185を改善してpythonに移植。

while hara!=full:
    print "かんぴょう巻き"

if hara!=full:
print "大トロ"
    print "エビ"
    print "トラフグ"
    print "ウナギ"
189仕様書無しさん:2007/07/11(水) 20:31:00
>>188

行:7ParalysisExceptionが発生しました!!

こら!!
ふぐ使うときはちゃんとキャッチしないと大ごとになるぞ?
190仕様書無しさん:2007/07/11(水) 20:33:35
スレッドでグローバル静的変数が最強。
191仕様書無しさん:2007/07/11(水) 21:27:31
std::vectorの中身を書き換えるのがその次くらいに最強ですよ。
192仕様書無しさん:2007/07/11(水) 22:23:57
ちょっと前に見かけたやつ

resultset = statement.executeQuery("select a.id id1,b.id id2,a.namae namae,b.denwa denwa from tbl1 a,tbl2 b where a.id=" + param);

while (resultset.next()) {
if (resultset.getString("id1").equals(resultset.getString("id2"))) {
namae = resultset.getString("namae");
denwa = resultset.getString("denwa");
}
}
193仕様書無しさん:2007/07/11(水) 22:28:43
>>192
C丼かjavaかよくわからんが、とにもかくにもSQLを見直せという事か・・・。
194仕様書無しさん:2007/07/11(水) 22:58:19
>>192
ループでいちいちIDチェックするくらいならJOINしろと。>>193の言いたいことはそういうことだよね?
あと、SQLインジェクション対策をしていないのも問題かな。
195仕様書無しさん:2007/07/11(水) 23:04:51
しかし、こういうSQLとロジックを思いつく方が逆に凄いと思うんだが。
COBOLerでもこんなコードは思いつかんだろう。

と思いたい。
196仕様書無しさん:2007/07/11(水) 23:22:00
>>195
同感
197仕様書無しさん:2007/07/12(木) 03:24:35
>170
意図的に Case 2 の部分だけを動作させたいとき(デバッグの時とか)に
For 文を直すだけで良い とか?
198仕様書無しさん:2007/07/12(木) 04:24:42
>>195
コボラはそもそも SELECT * FROM テーブル名 しか知らないからなw
199仕様書無しさん:2007/07/12(木) 09:51:02
>>192
社保庁の名寄せか?w
200仕様書無しさん:2007/07/12(木) 10:10:57
テーブルの設計がヘンで>>192みたいな事になったことはある。

当然使いものにならなくて、最終的には全部作り直しになったらしい。
201仕様書無しさん:2007/07/12(木) 15:53:24
>>195
見よう見まねで内部結合しようとしたら、なんかいっぱい返ってきたから
チェックするようにしました、みたいな。
ヴビ厨が得意。
202仕様書無しさん:2007/07/12(木) 16:19:41
データベースを使ったデータ操作関連プログラムは、テーブルの設計がしっかり
していれば糞ソースになりにくい。

203仕様書無しさん:2007/07/12(木) 16:32:42
いや、なるでしょ。
テーブルの設計と、プログラマが書くコードは別問題。
204仕様書無しさん:2007/07/12(木) 16:33:09
>>202
ダメな奴は、正規化すればするほど >>201 みたいなことに陥りやすい件。
205仕様書無しさん:2007/07/12(木) 16:41:12
テーブル設計がしっかりとしたものになるかどうかは、
6割の努力と4割の運任せだよって、かあさんが言ってた。
206仕様書無しさん:2007/07/12(木) 16:51:42
>>205
それはブイヤベースの間違いじゃないかい?
207仕様書無しさん:2007/07/12(木) 17:05:48
運任せってのはわかるな。
初期設計の時は見落としていた活用の道が出てきて、転用しようとしたら設計が悪くて、再構築になることがある。
再構築しなくてよいテータベースがあると、その設計に感嘆する。
センスの差なのかもしれんね。
208仕様書無しさん:2007/07/12(木) 17:05:59
結局、最前線に配置されている兵隊が駄目だと、どんなに
すばらしい作戦も失敗すると。
209仕様書無しさん:2007/07/12(木) 17:07:35
>>207
>再構築しなくてよいテータベースがあると、その設計に感嘆する。

ER図がぱっと頭の中に浮かぶんだな。
210仕様書無しさん:2007/07/12(木) 17:22:05
>>207
発展型の転用と、思いつきの転用の差だと思う。
ユーザーがぶれてないだけで、設計の良し悪しはあまり関係ない気がする。
211仕様書無しさん:2007/07/12(木) 18:45:01
テータベースに萌えた
212仕様書無しさん:2007/07/12(木) 21:47:11
>再構築しなくてよいテータベースがあると、その設計に感嘆する。

本来はそうなるように最初から設計しておくものだが・・・。

Excelしか触ったことなかったり、Accessが256以上のカラムが使えないから困るとか
言う人には夢の話なのかもしれんが。
213仕様書無しさん:2007/07/12(木) 22:29:53
>>212
1レコード212のカラムの設計するほうが難しいと思うんだがw
でも・・・あるんだよなぁ・・・・orz

超汎用テーブルとかだれが思いつくのさ
214仕様書無しさん:2007/07/12(木) 22:50:36
>>213
みかか村で過去に14テーブルぐらいそうゆうのみたなw
215仕様書無しさん:2007/07/12(木) 22:59:21
こんなDBもあるんだからびっくりだ
名前, 種類, データ1, データ2, ・・・・, データ99, 予備1, 予備2,・・・予備99
216仕様書無しさん:2007/07/12(木) 23:04:34
そんな用途不明のフィールド量産してどうするんだwww
暗号か?www
217仕様書無しさん:2007/07/12(木) 23:07:11
データベースの設計は基本的に「1 fact 1 place」を頭に入れておけば
そう難しいモノでもないのだが、どーもCOBOLerとかAccessやExcelしか
知らん人は不思議なテーブル設計をするよな。

なんでそんなに面倒で難しい方向に走りたがるのかよーわからん。
218仕様書無しさん:2007/07/12(木) 23:08:37
>215
予備の無意味さに吹いた
219仕様書無しさん:2007/07/12(木) 23:14:10
C++で、構造体にメンバ変数を追加する必要があって、
その構造体を扱っているコードをみていたら、わざわざ
メンバ変数を一個ずつコピーしてる関数が。

HogeCopy(Hoge* dst, Hoge* src)
{
  dst->a = src->a;
  dst->b = src->b;
  dst->c = src->c;
  :
  :
}

これ、*dst = *src; でいいだろと思ったけど、念のためにコードを確認してみると、
メンバ変数は31個なのに、コピーしてるのは29個だけ。

ただのバグだと思うけど、*dst = *src;に置き換えて全部コピーするようにして、なにか
影響があるといやなので、(影響がないか調べるのもめんどうなので)上のコードに、
追加したメンバ変数を、コピーするコードを追加しておきました。
(こうやってどんどんダメなコードになっていくんだろうなぁ)

220仕様書無しさん:2007/07/12(木) 23:17:01
>>217
COBOLは、レコード長固定のファイルに対して
1レコード読む→レコードを桁で区切る→処理
をすることに特化した言語だからな
予備カラムなんて考え方もそれに由来するんだろう

コボラはその考え方でしか理解出来ないからDBにまでそれを持ち込む
221仕様書無しさん:2007/07/12(木) 23:18:36
ポインタのコピーは、ポインタが上書きされるだけでは?
それを行うならmemcpy(だったっけ)を使うのでは?
222仕様書無しさん:2007/07/12(木) 23:20:06
>>221
メンバ変数にCStringがあるから、それやると、逆に大惨事に。
223仕様書無しさん:2007/07/12(木) 23:36:04
>>221
>219 のどの辺がポインタのコピーなのかkwsk
224仕様書無しさん:2007/07/12(木) 23:52:26
src->aのメンバ変数aが何の型か
解からないけど実はポインタ型とか
勝手にいい方に解釈してみるテスト
225仕様書無しさん:2007/07/13(金) 00:29:36
>>219
数にもよるが俺ならこう書くかもしれない。
HogeCopy(Hoge * dst, Hoge * src)
{
Hoge * dstOld = dst;
// とりあえず全部コピー
*dst = *src;

// 以下2つはコピーしたくない
dst->x = dstOld->x;
dst->y = dstOld->y;
}
226仕様書無しさん:2007/07/13(金) 00:31:55
強い保障されたswap( )実装しろよ
227215:2007/07/13(金) 07:19:23
実はこれある大手銀行のデータベースなんだ・・・
二度とそこには預金しなくなったYO
228仕様書無しさん:2007/07/13(金) 08:34:20
>>215
前、銀行子会社のソフト会社に勤めてた。
親絡みの仕事してる事業部と、親関係ない自前パッケージ作ってる事業部があって
関係ない方にいたんだけど、親絡みの方から移動してくるコボラはそんな感じだった

内部コード、ソート順、名称、種別、区分、大分類、中分類、少分類、ステータス1、ステータス2…
内部コードとソート順にキーをはってるくせに
実際は種別でテーブル分けろよみたいな動きを切替えて
区分でみてるデータと大中小分類でみてるデータがあって
有り得ないデータの制御はアプリで規制するの

正規化とかはなにそれ?って感じなの
だって単項目マスターに全マスターほおりこむから

高望みしないからせめてソート順のキーをはずしてくれ…
意味のない内部連番キーにしてるんだから十分じゃないか
229仕様書無しさん:2007/07/13(金) 10:03:31
HogeCopy(Hoge * dst, Hoge * src)
{
Hoge * dstOld = dst;
// とりあえず全部コピー
*dst = *src;

// 以下2つはコピーしたくない
dst->x = dstOld->x;
dst->y = dstOld->y;
}

*dst = *src した時点で、dstOldのさしている先も更新されているって…
230仕様書無しさん:2007/07/13(金) 12:51:28
>>225
おまえ C 使えないだろ。
231仕様書無しさん:2007/07/13(金) 14:11:00
>>224
メンバ変数aがポインタ型だったとして、
dst->a = src->a と *dst = *src がどう違うと言うんだ?

>>225
ワロタw
232仕様書無しさん:2007/07/13(金) 14:51:23
>>225
馬鹿!!!
233232:2007/07/13(金) 14:52:49
およよ。既に突っ込まれ済みですかw
234仕様書無しさん:2007/07/13(金) 15:28:05
>>225の人気に嫉妬
235仕様書無しさん:2007/07/13(金) 17:43:53
>書くかもしれない

ってとこからして、間違った時のことを想定してるんじゃないの?
236仕様書無しさん:2007/07/13(金) 17:59:37
>>225と寿司九位タイ
237仕様書無しさん:2007/07/13(金) 18:17:50
>>>Hoge * dstOld = dst;
--
<<<Hoge dstOld = *dst;
238仕様書無しさん:2007/07/13(金) 18:30:36
女なら普通に3本まではつっこめる。
男でも3本くらいはつっこめる。
239仕様書無しさん:2007/07/13(金) 18:55:29
>>225
イジメないから出ておいで。
240仕様書無しさん:2007/07/13(金) 20:18:13
・・・いぢめる?
241仕様書無しさん:2007/07/13(金) 20:58:31
当然だろ
242仕様書無しさん:2007/07/13(金) 20:59:50
>>237
そのpatchはコンパイルが通らなくなる可能性が・・・
243仕様書無しさん:2007/07/13(金) 21:38:16
HogeCopy(Hoge * dst, Hoge * src)
{
Hoge dstOld = *src;
*dst = *src;

dst->x = dstOld.x;
dst->y = dstOld.y;
}
か?
>>231
メンバにポインタや参照があるとシャローコピーになってしまう恐れがあるって事じゃ?
244仕様書無しさん:2007/07/13(金) 22:59:08
ホイコーローコピーってどんなコピーだっけ?
245仕様書無しさん:2007/07/14(土) 00:26:54
つーか、SQLだとテストいらなくて、同処理をするjavaだとテスト必要って
....なにが違うの?
246仕様書無しさん:2007/07/14(土) 00:31:29
>>245
SQLはプログラミング言語ではなく、
javaはプログラミング言語だからです。
247仕様書無しさん:2007/07/14(土) 00:40:56
あまり複雑なストアドは書かんでほしい。
デバッガはもちろん、printデバッグもできんじゃないか。
248仕様書無しさん:2007/07/14(土) 07:44:07
SQLもプログラム言語というか普通に命令セットの集合だと思うが。

つか、SQLと同処理をするJavaはそりゃテスト要るだろ。

SELECT WKDATE,DAYNAME(WKDATE),COUNT(NUM1).AVG(NUM1)
FROM HOGE
WHERE YEAR(WKDATE) = 2006
GROUP BY WKDATE
ORDER BY WKDATE ;

SQLだと1行(?)ですむ処理がjavaだと結構な行数(?)になるしな。
249仕様書無しさん:2007/07/14(土) 11:31:43
>>248
SQLはプログラム言語じゃないよ。
PL/SQLはプログラム言語だよ。
250仕様書無しさん:2007/07/14(土) 11:47:15
>>249
「~じゃない」は言えるけど、「~だ」が言えないタイプの奴だなw
脊髄反射で否定するのは得意。

まあ俺も SQL はプログラミング言語に分類するより、データベースに特化した
クエリ言語に分類するのが適当だと思うけれども。
251仕様書無しさん:2007/07/14(土) 11:57:30
SQLは問い合わせ言語であって、プログラム言語じゃないよ。
252仕様書無しさん:2007/07/14(土) 12:00:48
マシンに明確な指示を与えるための規則の集合という意味では
プログラミング言語と呼んでも間違いではないと思うんだが。
クエリ言語という分類があるとすれば、集合的には、プログラミング言語とクエリ言語の積といったところか。

HTMLはプログラミング言語か―というような議論と同質だな。
253仕様書無しさん:2007/07/14(土) 12:01:03
>>250
アホかw
「俺も~が適当だと思う」って、お前の意見なんか聞いちゃいねーよw
SQLのことをよく知らないの丸わかりだな
254仕様書無しさん:2007/07/14(土) 12:03:38
>>252
htmlをプログラミング言語なんて思ってる奴なんか、何も知らない初心者だけだろう。
テキストをマークアップするだけの作業のどこがプログラムなんだ?
本に蛍光ペンや赤ペンで線引いたりするのと本質的には同じ作業だろうが。

つまりお前は何も知らない初心者と言うことだ。
255仕様書無しさん:2007/07/14(土) 12:09:17
>>254
様々なプラットフォームのブラウザに同一の表示結果を与えるための
マークアップは、プログラミングと言っていいと思う。
256仕様書無しさん:2007/07/14(土) 12:10:26
実際、たとえばOracleのcaseを駆使したSQLなんかはプログラムと言っても差し支えはないだろうが
もともとそういうのはクエリを呼び出した側がやるべき処理ではあるんだよな。
SQLがどんどん高性能化していってるせいで境界線がよくわからなくなってきてる。
257仕様書無しさん:2007/07/14(土) 12:12:23
>>255
いいわけがない。
そもそも、htmlを読んでどう表示するかはブラウザ側の実装次第。
つまり「様々なプラットフォームのブラウザに同一の表示結果を与えるため」に必要なのは
ブラウザ開発者側の努力だよ。
だからAcid2なんてものがあるんだろ。
258仕様書無しさん:2007/07/14(土) 12:15:20
Acidテストも知らない新人がなに息巻いているんだ?
休日使って勉強でもしとけや
259仕様書無しさん:2007/07/14(土) 12:17:09
つかドラゴンブックにHTMLはプログラミング言語だって
書いてあるけどな
260仕様書無しさん:2007/07/14(土) 12:21:32
クエリ言語っていうかSQLの一説は構造化照会言語なんだから
そのまんまな話に思えるが。

ストアドなSQLは立派にプログラム言語してると思う。
261仕様書無しさん:2007/07/14(土) 12:23:17
つか、字句を拾って構文を読み取る者全般を
プログラミング言語って解釈だぞ。
262仕様書無しさん:2007/07/14(土) 12:23:54
あなた方の発言はこちら向きです
http://pc11.2ch.net/test/read.cgi/prog/1179420838/
263仕様書無しさん:2007/07/14(土) 12:25:59
>>261
じゃあ、面接か何かで
「プログラム言語が得意です!とくにHTMLです!」
って言ってみてよ。
俺にはできない。

それで笑われたら「字句を拾って…」って同じ反論してみてよ。
俺にはできない。
264261:2007/07/14(土) 12:35:01
俺、今はもう作ってないけど
組込み向けのブラウザ作ってた時期があった(都合により退社)

んで今の会社の面接で得意な言語はなんですか?って聞かれて
最近ではHTMLですね。バリバリかけますって言ったよ。
採用担当者とエンジニアは笑ってたな。
レンダリングエンジンを作ってたのでHTMLは得意なんですよねって
言い直した。

まぁ今その会社で7年目だが文句あるか?

265仕様書無しさん:2007/07/14(土) 12:38:49
>>264
>最近ではHTMLですね。バリバリかけます
じゃなくて
>レンダリングエンジンを作ってた
ここが重要だったんだろ?

日本語が不自由だって自覚を持った方がいいよ。
266仕様書無しさん:2007/07/14(土) 12:39:47
>>264
結局>>257が書いてるのと意味合い的には何も変わっていないわけだが
267仕様書無しさん:2007/07/14(土) 12:51:28
バイナリだって言語と呼べるのかもな。
CPUが解釈できる命令のことを機械語って言ったりするし。

>>257
それはブラウザ以外にも言えることだと思う。
そもそも、機械語を読んでどう処理するかはプロセッサの実装次第。
つまり「過去のプロセッサ含め、さまざまなプロセッサで同一の処理結果を保証するため」に必要なのは
プロセッサ開発者側の努力だよ。
だから・・・なんてものがあるんだろ。(←思いつかなかったw)
268仕様書無しさん:2007/07/14(土) 12:55:39
>>267
本物の馬鹿がやってきた
269仕様書無しさん:2007/07/14(土) 13:01:21
>>267
スレタイも読めないんじゃ、そんなバカな書き込みもむべなるかな。
270仕様書無しさん:2007/07/14(土) 13:03:04
自分の固定観念で追いつけなくなるとすぐ馬鹿呼ばわりする
プログラマってのはこういうのが多いなw
プログラミング言語でも何でも出来合いのものを組み合わせて作るのはうまいが
自分から新しいものは作り出せない香具師が多い理由がわかる気がするわ
271仕様書無しさん:2007/07/14(土) 13:04:59
今までさんざんスレ違いな会話していて、俺がきたら「スレタイ嫁」かよw


まあいいや、続きをドゾー。おじゃましますた^^
272仕様書無しさん:2007/07/14(土) 13:06:54
>>271
だって、プログラミング言語の話なのに、CPU持ち出すんだもん。
そりゃ違うじゃん。
273仕様書無しさん:2007/07/14(土) 13:10:17
いくらなんでも「HTMLはプログラミング言語じゃない」から>>267の話は飛躍しすぎ
揚げ足取りのコピペって時点でもどうかと思うが
>>257の書き込み自体はもっともじゃないのか
274仕様書無しさん:2007/07/14(土) 13:16:03
アバヨいっといてまた書き込むのもアレだが、俺は端的に言語の例を挙げただけなんだがな。
プログラミング言語の範疇だとか定義だとか、これほど曖昧な物はない。

データの処理のしかたを規定するものなら、例外なくプログラミング言語だと、俺は思うんだが。
SQL然り、HTML然り、機械語然り。どれも何かを処理する手順書という点では共通。
275仕様書無しさん:2007/07/14(土) 13:28:34
定数が1ずつずれちゃってたときなんか修正がいやだったなあ・・・
276仕様書無しさん:2007/07/14(土) 14:35:46
いや、>>245 はSQLだろうがJAVA組もうがテストしろと
言いたいだけではない
277仕様書無しさん:2007/07/14(土) 14:49:05
この会社辞めようと思った腐れ上司の一言0x1E
http://pc11.2ch.net/test/read.cgi/prog/1179420838/

もし日本語が読めるのであれば、どうぞこちらへ
278仕様書無しさん:2007/07/14(土) 15:31:05
>>263
君の話は飛躍しすぎ
厳密に言えばhtmlもプログラミング言語の範疇であろうが、普段われわれがプログラミング言語として考えるところのCやJavaなどから見ればプログラミング言語らしくないというだけの話
ここで面接官がいうPLにhtmlが含まれないであろう事は当たり前である。でもそれはhtmlがPLに含まれないことを示すものではない
279仕様書無しさん:2007/07/14(土) 15:46:28
君の文は読み悪すぎ
厳密に言えば句読点の使い方もあやしいし
そもそも適度な改行が入っていないのがおかしいという話
280仕様書無しさん:2007/07/14(土) 15:55:49
Q. SQLってプログラミング言語なの?
A. 全然違うよ。全く関係ないよ。
281仕様書無しさん:2007/07/14(土) 16:38:45
ttp://ja.wikipedia.org/wiki/SQL

>SQLは「宣言型プログラミング言語」と分類される
282仕様書無しさん:2007/07/14(土) 16:46:23
>>278
PLってなに?甲子園の常連校?
283仕様書無しさん:2007/07/14(土) 16:51:06
この会社辞めようと思った糞議論。
284仕様書無しさん:2007/07/14(土) 17:11:46
>>279
この、改行厨めがっ

>>282
常連ってほどでもないだろ、最近は
昔は強かったよねぇ
285仕様書無しさん:2007/07/14(土) 17:17:10
>>281
うぃきをソースにスンナよ糟が
286仕様書無しさん:2007/07/14(土) 17:18:15
>>285
うるさい、お前はもっとかす
287仕様書無しさん:2007/07/14(土) 17:19:36
「言語」と「プログラミング言語」は分けて考えようぜ。
288仕様書無しさん:2007/07/14(土) 17:21:46
くっだらねぇ
そんな本質的でないところにこだわるなよ
議論するなら、定義を持ち出してきて白黒決着つく形で議論しろよ
これだから糞文系プログラマーは面白い
289仕様書無しさん:2007/07/14(土) 17:26:37
公理も定義もない状態で議論しても主観によるところが大きいから、お互いの論理に矛盾無しに反立しうる。
つまりはお互い平行線のまま水掛け論になりうる。そんな無駄な議論の好むのがえてして文系。あいつらの考えることはよくわからん。
290仕様書無しさん:2007/07/14(土) 17:29:21
どうでもいいけどオナニー文章書いて
悦にはいるのはやめてけろ
291仕様書無しさん:2007/07/14(土) 17:38:25
この会社辞めようと思った腐れ上司の一言0x1E
http://pc11.2ch.net/test/read.cgi/prog/1179420838/

もし日本語が読めるのであれば、どうぞこちらへ
292仕様書無しさん:2007/07/14(土) 20:47:46
俺、今からメロン食う
みんな応援ヨロシクな
293仕様書無しさん:2007/07/14(土) 20:51:21
馬鹿野郎
コロッケだろ
台風なんだから
294仕様書無しさん:2007/07/14(土) 20:53:17
メロン半分食い終わった
295仕様書無しさん:2007/07/14(土) 20:54:10
俺、今からスイカ食う
みんな応援ヨロシクな
296仕様書無しさん:2007/07/14(土) 20:55:20
Wikipediaをウィキと呼ぶプログラマが書いたソース。
297仕様書無しさん:2007/07/14(土) 21:14:34
>>296
おお、新しい。

メールの内容の英数字が全角半角混在のやつが
書いたソースなみにいやだなあ。
298仕様書無しさん:2007/07/14(土) 22:15:41
10年単位の長きに渡ってつぎ足しつぎ足しして熟成されたソース
299仕様書無しさん:2007/07/14(土) 22:35:21
>298
カオスっぷりが頭に浮かぶなw
300仕様書無しさん:2007/07/14(土) 22:59:47
プログラミング言語の定義(誰が言ったかは忘れた)
『逐次実行・条件分岐・繰り返しの構造を持つ言語』

…コレがホントかどうかも忘れた。
301仕様書無しさん:2007/07/14(土) 23:57:06
ダイクストラの構造化定理が似てるが、
プログラム→順次・反復・分岐で書ける
という感じの命題だから、論理学的には「逆」だな。
302仕様書無しさん:2007/07/15(日) 01:05:21
じゃあやっぱりSQLもHTMLも含まれないでFAなんじゃん
303仕様書無しさん:2007/07/15(日) 01:41:50
Programming with Stored Query Language.
304仕様書無しさん:2007/07/15(日) 01:44:06
プログラミング言語かどうかはともかく、テストはしなくちゃな。
JavaやSQLの記述はもちろん、iniファイルの内容を書き換えた場合ですら。
そういえば設定内容を書き換えるのは開発じゃないと思ってる輩がいたっけ。
305仕様書無しさん:2007/07/15(日) 01:56:50
>>304
設定ファイルを書き換えることさえ開発だって言ってたら
運用の人まで開発者になっちゃうじゃまいか
306仕様書無しさん:2007/07/15(日) 02:00:56
その理屈だと秀丸の背景色を変えることすらも開発さ
307仕様書無しさん:2007/07/15(日) 02:07:38
ソフトを完成しさせて人手に渡るところまでは開発だろ
Iniファイルだって完成前までの初期設定変更とかは開発だと思うけど
そっからさきは違うだろうね
308仕様書無しさん:2007/07/15(日) 02:13:49
JAVAなんてアホでも出来るように作られてる言語なんだし
そんなに熱く語るほどの事かね?
309仕様書無しさん:2007/07/15(日) 02:18:57
>>308
そのJAVAをこれから始めてみようと思う俺が来ましたYO!
310仕様書無しさん:2007/07/15(日) 04:16:26
// このURLへは今後接続しないことを示す
public boolean discnct(String cnurl) {
   try{
      URL url = new URL(cnurl);
      HttpURLConnection urlconn = (HttpURLConnection)url.openConnection();
      urlconn.disconnect();
      return true ;
   }
   catch(Exception e){
      return false ;
   }
}
311仕様書無しさん:2007/07/15(日) 08:52:46
>>310
何をしたいのかがサッパリだ
312仕様書無しさん:2007/07/15(日) 09:22:16
discnct という名前からして、いい感じに腐っている。
いまだに母音を省略する命名ルールが生きのこっているなんてガラパゴスか?
313仕様書無しさん:2007/07/15(日) 10:34:14
コメントが全部、日本語をローマ字表記。

 koreha, komento desu.
 kokode***suru
 [debagu yy/mm/dd]
314仕様書無しさん:2007/07/15(日) 10:38:12

IME壊れたんだろう
315仕様書無しさん:2007/07/15(日) 11:46:40
> [debagu yy/mm/dd]
にしても、これはちょっと。debug でいいやん。
316仕様書無しさん:2007/07/15(日) 11:59:26
せめてdebaggu
317仕様書無しさん:2007/07/15(日) 12:00:17
テーブル名とかカラム名がローマ字ならよく見る
TORIHIKITBLとかHURIKOMIKINGAKU CHAR(10)みたいな
318仕様書無しさん:2007/07/15(日) 12:03:25
それならいいけど
未だに母音抜いてTRHKとかHRKMKNGKとかの方がよく見る気がする
ヘブライ語かよ
319仕様書無しさん:2007/07/15(日) 12:36:35
discnctについては、母音省略もアレだが、dis-を「~しない」だと思ってる
のがイタイな。
320仕様書無しさん:2007/07/15(日) 12:37:52
>>318
KWSKかよ
321仕様書無しさん:2007/07/15(日) 12:38:40
>>313
文字コード関係じゃね いちおう・・・
322仕様書無しさん:2007/07/15(日) 12:43:36
>>JAVAなんてアホでも出来るように作られてる言語なんだし
アホにはむり、コボラならOKの言語
323仕様書無しさん:2007/07/15(日) 13:16:14
>>319
disconnectは普通に「切断」という意味だが・・・?
324仕様書無しさん:2007/07/15(日) 13:18:24
>>323
そうだよ。

すでにつながっているものを「切断」するんであって、
最初からつながないという意味じゃない。
325仕様書無しさん:2007/07/15(日) 13:36:30
最初から繋がらないなんてどこに書いてあるんだ
最初から繋げない じゃないのか
326仕様書無しさん:2007/07/15(日) 13:49:23
メソッド名としては、testConnectibityとかの方が助かると思う。
327仕様書無しさん:2007/07/15(日) 13:54:18
>>324
disableは最初から出来ないと思うよ
328仕様書無しさん:2007/07/15(日) 13:56:19
disableは、可能であることを出来ないようにしておくことだね。
329仕様書無しさん:2007/07/15(日) 13:56:32
>>327
できる/できないで話すのもなんだが、
It disable you to ~~ とかで使うから、出来なくするってのが一般的じゃないの?
unableが最初から出来ない方なわけで。
http://dictionary.goo.ne.jp/search.php?mode=0&MT=disable&kind=ej&IE=sjis&type=sleipnir&ej
330329:2007/07/15(日) 13:57:03
あ、it disable -> it disablesです。ごめんね。
331仕様書無しさん:2007/07/15(日) 13:57:15
>>326
それだ!
332仕様書無しさん:2007/07/15(日) 13:57:17
>>327
最初から出来ないのは unable じゃ?

333仕様書無しさん:2007/07/15(日) 14:27:26
>>332
ああ、そうだね。

だけど、身体障害者には生まれつきもあるわけで、
本来出来るというのは、健康な人間なら本来出来るが、その人は障害のために最初からできないわけで、

つまり、構造的に接続できるようになってる物を、切断した状態にしておくのが切断であり、
さっきまで接続していたかどうかとか、時間的経過に関係なく切断状態にあるのが切断だと思うよ。>>324

334仕様書無しさん:2007/07/15(日) 14:28:29
正直どうでもいい
335仕様書無しさん:2007/07/15(日) 14:30:47
>>334
名前と実際が食い違うのをいちいち関数仕様を読んで覚えたりソースコード追っかけたりするのは面倒だろ?
336仕様書無しさん:2007/07/15(日) 14:37:10
>>333
日本語と英語じゃ言語構造も単語の細かい意味も変わってくるので、
生半可に論じられないし、そもそもスレ違いだからEnglish板にでもいってらっしゃい。
そして、ここでdisconnectといっているのは、切断のことではなく、
「~を切断する」ということです。他動詞ですね。
337仕様書無しさん:2007/07/15(日) 14:38:59
>>333

disconnect(切断する)じゃなく disconected (切断状態にある)ならいいんだろうな。
元のはdiscnctだからそこまで考えてないだろうけど。
338仕様書無しさん:2007/07/15(日) 14:40:10
distnctにするとぜんぜん違う意味になりますな。
339仕様書無しさん:2007/07/15(日) 14:40:59
×disconected
○disconnected
細かい綴りの話してるときにtypoしちまったぜ orz

340仕様書無しさん:2007/07/15(日) 14:45:06
kiretemasu?
341仕様書無しさん:2007/07/15(日) 14:47:23
kiretenaissuyo
342仕様書無しさん:2007/07/15(日) 14:54:01
>>310
確認するけど、コメントと関数名とやってることの三つがバラバラというのが問題なんだよね?

やってることは、与えられたURLに接続してみて、
接続できたら(例外が発生しなければ)trueを返し、例外が発生したらfalseを返す。
343仕様書無しさん:2007/07/15(日) 17:56:01
そもそもこんないらん議論を呼ぶ
変数名つけるのが問題
344仕様書無しさん:2007/07/15(日) 18:15:24
もう全部

func001();
func002();

でいいよ
345仕様書無しさん:2007/07/15(日) 18:23:57
>>344
いちばんスレにふさわしいやつだな。
346仕様書無しさん:2007/07/15(日) 18:31:26


 ・・・

if (ret == false) {
 // 上記の処理が以上の場合、ファルスを返す。
 return ret;
}

347仕様書無しさん:2007/07/15(日) 18:33:59
if (ret==false) {
return true;
}
348仕様書無しさん:2007/07/15(日) 18:57:03
>>346,347
変数名の付け方に問題があるかもしれんが一概に悪いとは思わんよ。
以下のような場合もあるから

bool ret = 何かの初期化メソッド();
if(ret == false)
{
// 初期化失敗
return false;
}

// ほかの処理
..
return true;

349仕様書無しさん:2007/07/15(日) 19:02:26

// (略)  falseを返す。

 のつもりを

// (略)  バルスを返す。

と書いていた奴。。。(読みはファルスじゃねぇし)

350仕様書無しさん:2007/07/15(日) 19:19:36
>>349 いや、あれだよと突っ込んでほしいのか?
351仕様書無しさん:2007/07/15(日) 20:54:06
>>349
自爆装置を仕込んでいるのか
352仕様書無しさん:2007/07/15(日) 20:55:06
>>349
コードを追記したら

    func();   // 目がぁ~目がぁ~

はお約束だな
353310:2007/07/15(日) 21:44:15
変な議論呼んだようですまん
貼った俺自身もこのメソッドが何をしたいのかよく分からなかったんだが、
呼び出し先メソッドが↓のレスなんで、
どうやら接続した後の切断処理をやってるつもりなのかなぁ、と考えてる
354310:2007/07/15(日) 21:46:05
// 接続先のファイルサイズを取得
public long getFileSize(String cnurl) {
   boolean isCnct = cnct(cnurl) ; // ※接続テストをしているらしい
   if (!isCnct) { return -1; }    //  接続可能ならtrue
   URL url;
   try {
      url = new URL(cnurl);
      HttpURLConnection urlconn;
      urlconn = (HttpURLConnection)url.openConnection();
      long fullsize = 0;
      Map headers = urlconn.getHeaderFields();
      String key = "Content-Length" ;
      String e = (headers.get(key)).toString();
      e = e.substring(1,e.length()-1) ;
      fullsize = Long.parseLong(e) ;
      boolean isDisCnct = discnct(cnurl) ; // ※ここで310呼び出し
      if (!isDisCnct) {
         return -1 ;
      }
      if(fullsize < 0)
         return -1 ;
      else
         return fullsize ;

   } catch (IOException e1) {

   }
   return 0;
}
355仕様書無しさん:2007/07/15(日) 22:08:18
なんというコード・・・
356仕様書無しさん:2007/07/15(日) 22:18:14
何したいわけ?
357仕様書無しさん:2007/07/15(日) 22:27:07
cnct(対象URLに接続)

getFileSize(ファイルサイズ取得)

discnct(切断処理)

・・・がやりたかったのかな?
358仕様書無しさん:2007/07/15(日) 23:41:45
たった二十行程度のコードに
山のように突っ込みどころが・・・
359仕様書無しさん:2007/07/15(日) 23:55:07
>>310のコメント
// このURLへは今後接続しないことを示す
が、
/** @return true 切断成功 false 失敗。このURLへは今後接続しない */
ならまぁよかった、ということなのかな。

360仕様書無しさん:2007/07/16(月) 00:49:09
つか成功したかどうかHashかなんかで管理して
余計なオブジェクト毎回接続するたびに作らないようにしね?
結果の保持が必要な場合は別途なにかクラス作って
突っ込んだ方がよくね?
361仕様書無しさん:2007/07/16(月) 01:01:17
あまりにひどいコードに絶望した…!

でもそういうコードを以前見かけたことが
あるのに気づいて更に絶望した!!
362仕様書無しさん:2007/07/16(月) 02:02:50
コメントにアスキーアートがはってあったぞ
「カイジ」のやつ
363仕様書無しさん:2007/07/16(月) 02:11:13
         __,,,.... -――‐- .._         そりゃあ…かまわない
       /vV///∠∠彡:ニニヽ  おまえらの疑問に答えること それ自体は容易い 簡単だ
      {/`ー-‐'''"´   二二ニニl   例外時の処理はこれこれこう こういうメソッド行き
     /ー--‐''''"´    二二ニニ|       返り値は…?パラメータは?
    ,/ー---‐'''"´__   ニニ二二|     そんなコメントは いくらでもできる
    〈べヽ l. ヾニ-‐'''ヾ> =r-、ニニ|
    },-o->  ヽPニニ  ミ ス.|ニ二|  しかし 今 オレが そんなコメントを 仮に付けたとしても
.     |二/,'   ー― '  `に!|二ニト、        その真偽はどうする…?
    |/,' __ ヽ\    r<二ニ| \
      | 「r---一ァ'!   | \ニ|   |`'ー-、__ 真偽など どうでもいいから
       | !` 三 ̄  l    |    \!  |      読みたいと言うのか…?
        \       _.. -''"    /|    |
    _,.. ‐'''"`ー <´       / |  |       ククク……
364仕様書無しさん:2007/07/16(月) 02:23:55
>>363
一見まともなコメントにこんなの付いてたら嫌になるな。
365仕様書無しさん:2007/07/16(月) 05:00:11
何を信じればいいのかw
366仕様書無しさん:2007/07/16(月) 05:06:11
>>363
プログラマやめろよ、つかやめてくれw
367仕様書無しさん:2007/07/16(月) 12:26:01
>>354
酷いな・・・8行で済むのにそんなにダラダラと・・・
368仕様書無しさん:2007/07/16(月) 13:11:02
>>363
お前とは仕事したくねぇよ・・
369仕様書無しさん:2007/07/16(月) 19:13:26
納期は命より重いっ・・・!
370仕様書無しさん:2007/07/16(月) 20:32:25
     ざわ・・・
            ざわ・・・

  ざわ・・・





俺のバグですたorz
371仕様書無しさん:2007/07/17(火) 11:34:53
>>344
ローカル関数に関してはそのルールで書く人を知っている。
本人曰く、『どーせ俺しか読まねぇし』。
372仕様書無しさん:2007/07/17(火) 12:00:04
3年後の「俺」には読めない罠。
373仕様書無しさん:2007/07/17(火) 12:44:05
あるあるwww
374仕様書無しさん:2007/07/17(火) 12:51:10
>>372
一年後に読める自信がないです。

覚えているうちに仕様変更とかあればいいんだが…
375仕様書無しさん:2007/07/17(火) 12:54:19
違う仕事一個でも挟むと無理そうだ
376仕様書無しさん:2007/07/17(火) 13:05:25
>>372
三週間でも微妙
377仕様書無しさん:2007/07/17(火) 13:50:59
>>376
って言うか、たったの3連休で頭真っ白なんですが・・・

先週までの俺が何をどうしたかったか、やっと何となく解ってきたw
今週の俺によると、先週までの俺は未熟者だったらしいww
378仕様書無しさん:2007/07/17(火) 16:11:58
前日の日記をつけろ。毎日3行程でいいぞ。
379仕様書無しさん:2007/07/17(火) 19:13:28
似たようなのもう出てそうだが、

Hoge1()
{
  __asm {
    :
    :
  }
}

Hoge2()
{
  __asm {
    :
    :
  }
}

7000行ほどでコメント一切無し
380仕様書無しさん:2007/07/17(火) 19:32:47
Cool!w
381仕様書無しさん:2007/07/17(火) 19:45:12
>>379
昔は、マシンコードを定数の配列にして、関数ポインタで指してたり...
382仕様書無しさん:2007/07/17(火) 19:55:24
定数ならまだいいが、技術的な制限から、コードを実行中に書き換えながら走らせることもあったな。
当分使われないコードセグメントはメモリから削除して、空いた空間に別のコードセグメントをロードしたりとかもしたし。

今となってはOSが担当する処理だが、その当時はそんなトリッキーなことを強いられたもんだ。
383仕様書無しさん:2007/07/17(火) 19:59:06
>>381
今でもやっていたりする....
384仕様書無しさん:2007/07/17(火) 20:04:59
辞めさせられないようにする為の保険か?
385仕様書無しさん:2007/07/17(火) 21:29:30
メモリに入りきらない。
386仕様書無しさん:2007/07/17(火) 22:01:34
>>379
何か問題でも?
387仕様書無しさん:2007/07/18(水) 02:59:01
せめてコメントぐらいはつけて欲しいな
388仕様書無しさん:2007/07/18(水) 03:38:17
ソースコードが残ってなくてROMがあるんだけど、バグ対処してねとかいうのもあったな。

電算室(古っ!)に配属になって初めて書いたプログラムが自己変更コードだった。指導者乙。
そういうのがお行儀悪いことだと知るのはその10年後。
389仕様書無しさん:2007/07/18(水) 11:48:54
10年は長いですね。
390仕様書無しさん:2007/07/18(水) 11:58:05
その部署の文化になってればそれが当たり前になっちゃうからなあ。
391仕様書無しさん:2007/07/18(水) 12:07:48
>>388
Intel 8x86 の時は、自己書き換えしても問題なかったから、メモリの制約とあいまって、
むしろあたりまえのプログラミング技法だったと思う。
80x86nになってキャッシュの概念が出てきて、メモリ上で自己書き換えしてもそのコードが
保持されないので問題が顕在化して、行儀が悪いということになった。
392仕様書無しさん:2007/07/18(水) 12:17:59
行儀の問題はキャッシュとは関係ないっしょ
393391:2007/07/18(水) 12:42:13
いや、この場合は関係あると思ってるんだが。
「キャッシュのために今までのノウハウが使えなくなった」が「行儀が悪い」にすりかえられた。
まあ今じゃ通用しないノウハウだし、「行儀が悪い」という言葉にはよっぽどのひねくれ者じゃなければ
逆らおうと思わないから、いいけどね。
394仕様書無しさん:2007/07/18(水) 12:48:29
すげーどうでもいいことだが。
x86の自己書き換えはパイプラインで問題になった。
キャッシュは最初から対策してる。
395仕様書無しさん:2007/07/18(水) 13:10:44
自己書き替えはそれこそZ80の時代から「行儀が悪い」とされてましたが何か
396仕様書無しさん:2007/07/18(水) 15:13:54
86 系で自己書き換えのときのキャッシュのフラッシュ(の欠落)が問題になったのは
ハーバードアーキテクチャを初採用した Pentium から。
Mac では 68040 を積んだ Quadra から。

メモリ上の自己書き換えやコード生成は今でも結構使われていて別に問題のある技法でもない。
他により妥当な方法があるのに使いたがるのは問題ある行為かもしれないけど。
397仕様書無しさん:2007/07/18(水) 18:36:28
今はメモリ使い回すメリットがほとんどないだろ
メモリが小さかった時代には一つのひゅほうだったかもしれないが
398仕様書無しさん:2007/07/18(水) 19:09:25
ひゅほうでんせつ
399仕様書無しさん:2007/07/18(水) 21:19:00
最近は
データ領域:書き換え○ 実行×
コード領域:書き換え× 実行○
みたいなことやるしな。
400仕様書無しさん:2007/07/19(木) 00:50:51
LISPだと自己書き換えってどういう感じに捉えられているんだろう?
401仕様書無しさん:2007/07/19(木) 01:00:31
すべてがS式なんだから、コード書き換えもアリとは思う。
けど、アルゴリズムとしてトリッキーに過ぎる感はあるな。
で、そういう感覚もっていることは、PGとしては大事。
402仕様書無しさん:2007/07/19(木) 01:11:23
longjumpで書き換えまくるのは普通だし
今でもそうゆうコード書いてる。

書くなって言われるけどなんでって思う
403仕様書無しさん:2007/07/19(木) 01:18:32
テクニックとしては面白いんだけどな。バッファオーバーラン攻撃の基本だし。
だからといって、製品の中に自己書き換えを組み込むのは勘弁。動的に書き換わるコードは追跡が難しすぎる。
動的コード生成にしても、機械語直接生成よりもスクリプトを吐く方が簡単に済みそう。
404仕様書無しさん:2007/07/19(木) 01:26:53
>>402
longjmpは自己書き換えしなくても作れるだろう。
ものすげー変なCPUまで把握してないが。
405仕様書無しさん:2007/07/19(木) 02:18:03

コード書き換えはマルチタスクで動かせないだろ
406仕様書無しさん:2007/07/19(木) 06:58:17
iTRON準拠のマルチタスク環境では動いていたというか動かしていたよ。
407仕様書無しさん:2007/07/19(木) 10:06:50
>>405
>コード書き換え

>マルチタスク
に、まるで相関がない。
408仕様書無しさん:2007/07/19(木) 15:50:24
自己書き換えはすたれてるけど、コード生成自体は ATL のサンクとか
JIT コンパイラ的技法とかで必要に応じて使われているよね。
409仕様書無しさん:2007/07/19(木) 18:43:12
HaskellのコンパイラがDEP(データ実行防止)に引っかかった。
HaskellはHaskell自身で書かれているらしいから、どうもコード生成or自己書き換えしてるっぽい。

まだまだ現役だな。
410仕様書無しさん:2007/07/19(木) 19:24:16
>>409
>>408
>JIT コンパイラ的技法
411仕様書無しさん:2007/07/19(木) 22:37:16
ふとリコンフィギュラブルを思い出した。
ttp://www.atmarkit.co.jp/fsys/zunouhoudan/037zunou/intel_reconfig.html
412仕様書無しさん:2007/07/19(木) 23:57:15

ふとりプリキュアに見えた
413仕様書無しさん:2007/07/20(金) 00:28:50
>>412
病みすぎ
414仕様書無しさん:2007/07/20(金) 14:03:15
うーん。「自己変更コード」とか「自己書き換えコード」とか呼ばれているけど。
誰も「自己改竄コード」とは呼ばないな。
415仕様書無しさん:2007/07/20(金) 14:08:29
普通は悪用目的の書き換えを指すんじゃまいか?改竄て。
416仕様書無しさん:2007/07/20(金) 23:08:58
進化するコード
417仕様書無しさん:2007/07/20(金) 23:32:27
>>414-416
だんだんウィルスになってないか?
418仕様書無しさん:2007/07/21(土) 00:35:34
暴走してウィルス化するなんていかにも漫画的なシチュエーションだ
419仕様書無しさん:2007/07/21(土) 01:11:30
ソースが貼られず自称上級者の醜い言い争いばっかりじゃねーか
もっとトンデモソースで俺を癒してくれよ
420仕様書無しさん:2007/07/21(土) 03:18:33
switch( cValue ) {
case 0:
hogehoge( );
break;
case 1:
・・・
case 255:
hugahuga( );
break;
default:
ASSERT( False );
break;
}
421仕様書無しさん:2007/07/21(土) 05:19:36
これでcValueがucharなら笑えるな
422仕様書無しさん:2007/07/21(土) 08:40:07
関数名が func0()~func255() じゃないってことは、コボラーじゃないのか....
423仕様書無しさん:2007/07/21(土) 09:22:02
while( flg == TRUE){
  switch( hoge){
  case 1:
    hage1();
    hoge = 2;
    break;
  case 2:
    hage2();
    hoge = 5;
    break;

   ・・・・・
  case 25:
    hage25();
    hoge = 10;
    break;
  }
}
こんな感じのswitch文が3つあってループの関数は1000行くらいある。
当然コメントも仕様書もマニュアルも何もない。あるのはソースだけ。
VC++1.52でコンパイルするのだが、改変して行数が増えるとコンパイラがコンパイルしてくれない。

case12 とかで hoge = 0 とかしてるのと、あっちこっちジャンプしながら
最終的にcase12にたどり着くので無限ループにはなっておらず、しょっちゅうトラブるが、大抵はなんとなく動いている。
だけど何で動いているのか分からない上に、改造しようにも手がつけられない。
424423:2007/07/21(土) 09:24:38
あ、case 12ではhoge=0じゃなくてflg=FALSEだった。

ま、5年ほど前に面倒見させられたソースです。
その部分はごっそり書き直したけどね。
425仕様書無しさん:2007/07/21(土) 09:25:14
>>423
コードの意味がわからないってのはわかるが、
改変して行数が増えるとコンパイラが通らないって何?
VC++1.52だと最大行数の制限があるの?
426仕様書無しさん:2007/07/21(土) 09:27:51
>>423
パーサーとかそんな感じで作るけど
#ifdef DEB_PRINTしこんで
コールグラフ作ればいいだろ。

んで文法作ればいい。おそらく処理しきれない
例外を見過ごして別の規則に遷移してるだけ
じゃねーの?
427仕様書無しさん:2007/07/21(土) 09:28:44
16ビットの制限とかあるんじゃね?
428仕様書無しさん:2007/07/21(土) 09:33:31
>423
hogeX()や各case値に意味あるんだろうから、そっから状態遷移図でも描いて見れば。
429仕様書無しさん:2007/07/21(土) 09:46:32
>>428
hogeX()や各case値に意味あるケースは稀じゃね?w
430仕様書無しさん:2007/07/21(土) 09:49:31
そうなのかw
431仕様書無しさん:2007/07/21(土) 09:55:27
caseでのコードではこんなのあったな@Java
メンテしろと言われたけど、拒否したら左遷された
後任は自殺未遂したらしいけど・・・

うろ覚え
int i = 20;
label WHILE_LABEL;
while(true) {
    switch (i) {
       case -3:
          i = func3();
          break WHILE_LABEL;
       case -2:
          i = func3();
          break WHILE_LABEL;
       case -1:
          i = func3();
          break WHILE_LABEL;
       // 中略
       case 50:
          i = func50();
          break;
       default:
          i = func0();
    }
}
423のに似ているけど戻り値がリザルトコードになっていてマジでカオス
432仕様書無しさん:2007/07/21(土) 10:25:39
オブジェクト指向はおろか構造化すら怪しいグラマが必死に考え出したコードっぽいな。
こんなコードが随所にあるなら431は拒否して正解だ。
433431:2007/07/21(土) 10:31:32
随所どころか、辛うじて理解できた一部だよ
結局、ほとんど理解できなかった
434仕様書無しさん:2007/07/21(土) 10:42:34
例はちょっと書けないけど最強にカオスなコードならあるぞ

make
yaccでmake+コード自動生成
生成コードmake
yaccでmake+コード自動生成
・・・

これが15回も繰り返されるカオスなコードあったよ
435仕様書無しさん:2007/07/21(土) 11:58:45
>>434
それは何のプログラムなの?
436423:2007/07/21(土) 12:10:28
>>425
1関数のサイズの上限が決まってたと思う

>>426,428
何年も前に終わった仕事について批判されてもなぁ・・・
大体1関数が1000行って時点で何かおかしいんだから直して当然だろ
437仕様書無しさん:2007/07/21(土) 13:08:52
関数ってどんなに多く書いても数百行で済まないか?

絶対処理分割できるぞ
438仕様書無しさん:2007/07/21(土) 14:23:36
>>436
関数の制限じゃなくてswitchの制限だと思うよ。
439仕様書無しさん:2007/07/21(土) 14:51:16
>>437
普通に手続き言語をやってくれば、どんなに長くても数百行なんだが、
大昔のPLCしか触ったことない奴だとだらだら書く事しか知らなくて、1000行とかいく事がある。
440仕様書無しさん:2007/07/21(土) 16:49:09
実行される行数が50を超えたらそれは長すぎ。
441仕様書無しさん:2007/07/21(土) 16:52:49
>>440
実行される行数ってコンパイルした後の話か?
442仕様書無しさん:2007/07/21(土) 17:38:24
実行後の行数なんて意識する必要ないだろ、50行超えたら読みにくいだけ
443仕様書無しさん:2007/07/21(土) 17:43:39
別にコードなんて動けばどーでもいいんだよ
オマイラだってどうせ適当に書いて後は野となれ山となれだろう?
この会社辞めようと思ったソースコードなんてお高くとまってないで
正直になれよ
プログラムなんてちゃんと動けばそれでいいんだよ
444仕様書無しさん:2007/07/21(土) 17:44:18
煽り乙
445仕様書無しさん:2007/07/21(土) 17:54:01
>>443
中国産は長い・意味不明・動かないの3拍子揃ってるぜw
446仕様書無しさん:2007/07/21(土) 18:05:21
>>445
コメントが中国語なら尚可。
447仕様書無しさん:2007/07/21(土) 20:00:17
>>443
>プログラムなんてちゃんと動けばそれでいいんだよ

ちゃんと動かないから問題な件
448仕様書無しさん:2007/07/21(土) 20:27:21
プログラムはちゃんと動いて、ソースが読みやすくて、修正しやすくて、
テストしやすいのが理想ではあるな。

現実にはだましだまし動かしているプログラムが多数存在するワケで。
449仕様書無しさん:2007/07/21(土) 21:59:16
>>443
それぐらいならおれにもできる、いや、だれだってできるだろう。
だがきみに呼ばれて出てくるかな?
450仕様書無しさん:2007/07/22(日) 04:09:08
先代と先々代のコードです、参考にしてくださいと言って渡されたコード。
10年も使いまわされた割には読みやすくて、コメントも良くついてるし・・・ あれ?
コメントに俺の署名があったよ。会社やめる前のコードだったけど。
451仕様書無しさん:2007/07/22(日) 06:56:04
そのコードで何人が辞めて逝ったのか...
452仕様書無しさん:2007/07/22(日) 09:57:43
if (isdate(strDate) =false) = true then
なんてのが前あったけど意味がないorz
453仕様書無しさん:2007/07/22(日) 13:06:38
ifでboolな判定するときに比較のtrue・falseをどちらか固定にするヒトっているからそれじゃね
454仕様書無しさん:2007/07/22(日) 14:07:11
それって言われてもそれの意味がわからない
455仕様書無しさん:2007/07/22(日) 14:32:27
>>453
>boolな判定するときに比較
莫迦確定ですよ、それ。
456仕様書無しさん:2007/07/22(日) 15:09:42
ワロタ
457仕様書無しさん:2007/07/22(日) 15:10:04
>>446
そしてコメント自体が間違っている、と
458仕様書無しさん:2007/07/22(日) 15:52:46
>>455
ホント、バカ確定なのは確かなんだけど、
うちの会社のVBから入ってきた人間だとナチュラルに存在している。
<cond> == false ってやる奴は本当に多い。

アレかな?unlessがほしいのかな?
459仕様書無しさん:2007/07/22(日) 15:55:21
>>458
俺はFalseで比較することが多いんだけど・・・
bCond == False
bCond != False
True比較は使わない。
比較を書かないことはある。
460仕様書無しさん:2007/07/22(日) 15:57:37
=true <>true !=trueか
=false <>false !=falseのどちらか限定なら有り得る

変な書き方すると>>452なのかな
461仕様書無しさん:2007/07/22(日) 16:38:04
>>459
あえて
If Not cond_expr Then とか if( !cond_expr)
としない理由は?
== false とかのほうが見やすいから?
462仕様書無しさん:2007/07/22(日) 16:49:45
論理定数との比較はアホの仕業。
463仕様書無しさん:2007/07/22(日) 17:03:49
>>461
C使いなんで!が見づらいってのが大きいのかな?
if( !IsHogehoge( ) )
if( IsHogehoge( ) == Flase )
慣れでどうにかなるレベルだし、どうでもいいね。
スレ汚しスマソ
464仕様書無しさん:2007/07/22(日) 17:34:51
CでFlaseはちょっと・・・
仕様にFlaseを返すとあるならともかく
論理的な0と非0で比較するなら漏れは明示的に0と定数で書くが。
標準ライブラリ関数はFlaseではなく0を返すわけだし。

まだFlaseの綴りにはつっこまない
465仕様書無しさん:2007/07/22(日) 17:56:19
VBの場合はIfの後の値を括弧で囲まなくてもいいというのと、論理否定の演算子が
Notという事情があるから、シンメトリを気にすると

If Hoge.Enabled = True Then
........

If Hoge.Enabled = False Then
........

とつい書きたくなるという事情があると思う。

Cの場合はそもそも論理型がないから論外だろうね。
466仕様書無しさん:2007/07/22(日) 17:57:24
>>464
最後の1行に「蛇足」という言葉の
真の意味を見た。
467仕様書無しさん:2007/07/22(日) 18:03:46
>>464
標準関数使ってないよ。ってか使える環境じゃないし。
関数はもちろんFalseを返す仕様だからそれと比較してるだけ。
468仕様書無しさん:2007/07/22(日) 18:07:29
そういう俺様仕様でもコンパイラ様は最適化してくれるのかなあ。
多分無理だと思うけど。。
469仕様書無しさん:2007/07/22(日) 18:22:37
最適化レベル0なんだけど・・・
470仕様書無しさん:2007/07/22(日) 19:40:47
/**
2xxx/xx/xx
俺の名前
DES:[xxxxxxxxxxx] 
**/

ってコードが全然関係ない一度も使ったことがない下請け
Cからあがってきたw
え?なんでだ?俺の名前がえーなんでだとすげー悩んだ。

んで理由が解かったんだけど、俺が新人のころに使っていた
派遣A氏が勝手にコードを持ち出して、B社に転職、B社倒産。
今回使った下請けCにコードもろもろ流出した模様。

つーことでCから俺のコードが上がってきたわけ。

俺はコードにはDESの暗号を埋め込んでるからすぐああ俺だって
解かった。こんな経験したいる?今それ関係で下請けCを扱いて
やってるよ。w
471仕様書無しさん:2007/07/22(日) 19:56:16
>>458
VB6にはC言語の ! 演算子に相当する演算子が無い
VB6のNot演算子はC言語の ~ 演算子に相当する
472仕様書無しさん:2007/07/22(日) 20:38:38
>>470
規約がゆるいか、もしくは無いプロジェクトだったんだな
473仕様書無しさん:2007/07/22(日) 20:41:25
>んで理由が解かったんだけど、俺が新人のころに使っていた
>派遣A氏が勝手にコードを持ち出して、B社に転職、B社倒産。
>今回使った下請けCにコードもろもろ流出した模様。
よく分かったね
つか、そんなの調べる暇があるくらいお気楽な職場なのかな?
474仕様書無しさん:2007/07/22(日) 21:09:53
とデスマーチ犯が文句言っています。
475仕様書無しさん:2007/07/22(日) 22:16:09
>>473
そりゃ資産の流出が明るみに出たんだもん、
デスマでもなけりゃ調べるでしょうよ。
476仕様書無しさん:2007/07/22(日) 22:19:38
そのツッコミ箇所は傍から見てても予想外w
477仕様書無しさん:2007/07/23(月) 00:10:55
>>475,476
俺だったら「ふーん、俺のコードじゃん。どっから流れてきたのかな?」って思う程度で
それ以上突っ込んだりしないけどな。
別に俺が書いたってだけでそのコードは俺の持ち物じゃないんだからいちいち調べる気は起こらないな
478仕様書無しさん:2007/07/23(月) 00:20:59
会社の資産持ち逃げされてるのに問題にしないやつらって
なんのために会社で働いてるの?まさか全員人工無能?
479仕様書無しさん:2007/07/23(月) 00:40:58
新人作成のスパゲティコードの拡散なんて
資産どころかウィルスをバラまいているようなもんだ
逆に迷惑をかけてるよ
480仕様書無しさん:2007/07/23(月) 00:51:59
>>478
愛社精神とか全然ないので
むしろ被害うけてたら内心プゲラです
481仕様書無しさん:2007/07/23(月) 00:52:44
盗まれて困るにしろ迷惑をかけるにしろ、ちゃんと管理しとけよw
482仕様書無しさん:2007/07/23(月) 01:04:58
管理といえばVSSが割れだったトコがあったなぁ・・・・
それとソース管理とか自体なくて共有フォルダに適当に入れとくだけのトコとかもあったなぁ
483仕様書無しさん:2007/07/23(月) 01:24:20
>471
論理値に対しては!演算子相当……
っても、VBのFalseは数値化すると0、Trueは-1だから結局~ってことで良くなるのかorz
484仕様書無しさん:2007/07/23(月) 07:24:40
>>479
辞めた会社のソースなんか知るかよ

今勤めてる会社のコードだったとしても上司に報告するだけだな。
調査して賠償させる方が得か、放置した方がましかは法律や経営の専門家に任せた方がいい。
485仕様書無しさん:2007/07/23(月) 08:24:16
一つの関数が8000行
2カ月目で試用期間だが辞めたくなった
486仕様書無しさん:2007/07/23(月) 20:47:26
>>483
True = -1なのはBASICを小メモリで実現する技巧の一つだったと思われ
487仕様書無しさん:2007/07/23(月) 20:56:14
会社でVB6のヘルプみたら、bool値にnotを使ったら、論理演算してくれるようなことを書いてあったよ。
488仕様書無しさん:2007/07/23(月) 21:31:49
>>487
2の補数表現で-1は?
489仕様書無しさん:2007/07/23(月) 22:14:15
>>488
それはNotはビット演算してるだけだけど、たまたま論理演算の結果とあってるだけってツッコミ?
ヘルプには、trueをnotしたらfalse、falseにnotしたらtrueになるってはっきり書いてあったから、bool値にnotしたら、
論理演算になるんじゃないの?
490仕様書無しさん:2007/07/23(月) 22:46:35
たまたまじゃなくて、合うようにしたらそういう定義ってことでしょ。
491仕様書無しさん:2007/07/23(月) 22:58:57
どちらにしろ論理値の反転として、Notを使いなさいってこった
492仕様書無しさん:2007/07/23(月) 23:34:25
Const cond = 2

If cond Then
  WScript.Echo "cond is true."
End If

If Not cond Then
  WScript.Echo "Not cond is true."
End If

If cond = False Then
  WScript.Echo "cond is false."
End If
493仕様書無しさん:2007/07/23(月) 23:50:53
>>492
その場合condは暗黙的にLong型だから、Notはビット反転になる(論理反転にはならない)。

Const cond As Boolean = 2

あるいは

If CBool(cond) Then
If Not CBool(cond) Then
If CBool(cond) = False Then

これでおk
494仕様書無しさん:2007/07/24(火) 00:24:54
案の定 false との比較の話になっててワロタ
495仕様書無しさん:2007/07/24(火) 23:00:59
>>409
GHC かい?
GHC は確か未計算部分の値を実行可能なコードの形で持ってるんだったような。
↓これのどこかに書いてあったが真面目に読んでないんで忘れた。
http://hackage.haskell.org/trac/ghc/wiki/Commentary
496仕様書無しさん:2007/07/24(火) 23:52:33
再帰といえば、以前、以下のようなコードをみつけたことがある。他社から派遣されてきたプログラマが書いたものだ(※2)。

void do() {
  
  // 処理
  ・・・
  if( 処理成功 ){
    return;
  }
  
  // 再試行
  if ( YES == message("失敗しました。再試行しますか?") ){
    do();
  }
}

do() という関数の中から、「再試行」のために do() を再帰的に呼び出している。
数回の再試行を行うだけであれば、彼の意図の通りに動作するだろう。しかし、プログラムというのは、動けばいいというものではない。

彼は、おそらく「再帰」という概念自体を持たぬまま、いや、持たぬが故に、このような変なコードを書いてしまったのだろう。
それ以前に、「関数」の概念が十分に理解できておらず、「処理に付ける名前(=ラベル)」と同じ程度にしか考えていないことが窺える。
少なくともプログラマとして他社に派遣できるようなレベルではないはずなのだが・・・。
497仕様書無しさん:2007/07/24(火) 23:55:12
いやまて。関数型言語使いの可能性は捨てきれないぞ。
498仕様書無しさん:2007/07/24(火) 23:58:19
>>497
とうぜん末尾再起でループに最適化されるのを見越して書いてますよね。
499仕様書無しさん:2007/07/25(水) 00:11:09
>>496
そのコピペのソースは?
500仕様書無しさん:2007/07/25(水) 00:14:02
501仕様書無しさん:2007/07/25(水) 00:47:42
>>500
俺FizzBuzzの話聞くまで海外にもアホPGが居るって事を知らなかった。
考えてみれば当たり前か。
502仕様書無しさん:2007/07/25(水) 01:14:34
福島県の会津地方のある温泉ホテル「○○○○○○ホテル」で働いたのですが、当初経理の募集で応募し、
面接、筆記試験後採用され働いたのですが、出社間近になり、経理をやるにはフロントの業務を知らないとダメだからとかいいつつ、
フロントに回され何の研修もなしにイヤイヤやっていたのですが、数日休みなしでお昼休憩も取れず一生懸命やっていて、
少し間が空いたので、奥でほんの気持ち程度休息していると、会長とやらハゲジジイに「こっち出てきてやろうよ」と言われました。
ようは休息するなってことでしょうか?、私ってかわいそうと思っちゃいました。
503仕様書無しさん:2007/07/25(水) 01:32:44
ハロー アイアムガイジン
504仕様書無しさん:2007/07/25(水) 13:22:29
>>496
496 の見積もりでは、何回くらいユーザがYESを繰り返すとスタックが
あふれると思う?
505仕様書無しさん:2007/07/25(水) 14:02:27

失敗してそのまま続行しても、また失敗するんじゃね?
506仕様書無しさん:2007/07/25(水) 14:12:37
なんという糞実装w
507仕様書無しさん:2007/07/25(水) 15:11:54
おおそうか、手動無限再帰になるのか。
笑けるなあこれは。
508仕様書無しさん:2007/07/25(水) 15:22:12
Yes 以外を押さない限り、再試行し続ける実装でつね。
あきらめずに続ければ、何かのタイミングでうまくいくかもしれないとあてこんでるのかなぁ。
タイムリミット値かループカウンタくらい見ればいいのに…
509仕様書無しさん:2007/07/25(水) 15:59:07
「ほほえみのむら」の武器防具屋のようだ
510仕様書無しさん:2007/07/25(水) 16:36:17
>>507
その辺は仕様だからしてコーディングがどうとかいうレベルの話じゃないよね。
496は再起による実装を問題視したんだろうけど、漏れはそれは問題とは思わないなあ。
千回YES押したら異常終了しましたなんてのは出荷判定でもOK出るだろ。
511仕様書無しさん:2007/07/25(水) 18:08:07
末尾再帰が叩かれるとか初めて見た
512仕様書無しさん:2007/07/25(水) 18:46:49
使い方を明らかに間違ってるからだろ
513仕様書無しさん:2007/07/25(水) 20:20:29
それはSchemeに対する挑戦か
514仕様書無しさん:2007/07/25(水) 20:29:42
そもそもループが無い言語と同列にしてどうする
515仕様書無しさん:2007/07/25(水) 20:38:35
その場しのぎのソフトとかスクリプトならむしろ
歓迎できる黒魔術だと思うけど、そうじゃないなら保守したくない。
516仕様書無しさん:2007/07/25(水) 20:40:59
こんなコードがあった。

Const HOGE_STR_SELECT_PHRASE = "Select * from "
Const HOGE_STR_WHERE_PHRASE = " where "
Const HOGE_NM_TABLE = "hoge_table"

...

' Select * from hoge_table where name = ' ... ' というSQLを作成
strSQL = HOGE_STR_SELECT_PHRASE & "hoge_table" & HOGE_STR_WHERE_PHRASE _
& "name = " & chr(39) & name & chr(39)
517仕様書無しさん:2007/07/25(水) 20:46:07
>>516
VBならインジェクション対策を無視るのは場合による。
ライブラリによってはサブクエリへの値の埋め込みを許さない場合があるから。

型指定が無いのと、SQLのクローズやキーワードを
いちいち定数にしているのと、定義した定数を使わずにリテラルべた書きなのと、
chr(39)なんてしているのは場合によらず問題だけど。
518仕様書無しさん:2007/07/25(水) 20:56:14
いいプログラマはすべて再帰とポインタを扱えるべきであり、
これはその人がプログラマとして優れているか見分けるためのいい方法でもあると私は考えている。
しかしあいにくと最近のプログラミング言語はほとんど完全にこの技術を不要にしているというのが本当のところだ。
10年前にはコンピュータサイエンスの学生が再帰と関数プログラミングの授業を1つと、
CかPascalによるデータ構造の授業を1つ取ることなく大学を出ることはなかったのだが、
今日では、他の点では申し分ない大学の多くがJavaだけで楽に乗り切れるようになっている。
519仕様書無しさん:2007/07/25(水) 21:38:31
またコピペか
520仕様書無しさん:2007/07/25(水) 22:06:10
こういう文脈でJavaはよくバカにされるけど、Javaの動作なんか
ポインタ分かってなきゃ理解できないと思うんだよなぁ。
521仕様書無しさん:2007/07/25(水) 22:09:14
理解できてないから「Javaにポインタは無い」とかろくでもない誤解があったりするんだろ。
522仕様書無しさん:2007/07/25(水) 22:24:25
再帰って木構造のデータ扱ってると自然に使ってないか?
523仕様書無しさん:2007/07/25(水) 22:27:25
夏だねぇwww
524仕様書無しさん:2007/07/25(水) 22:33:17
緊張します
525仕様書無しさん:2007/07/25(水) 22:58:42
緊張の夏
526仕様書無しさん:2007/07/25(水) 23:00:14
>>522
何を当たり前のことをw
527仕様書無しさん:2007/07/25(水) 23:01:32
再帰使ってるってだけで目の敵にされるから使わない。
528仕様書無しさん:2007/07/25(水) 23:30:11
再帰が問題になるのはかなり負荷のかかることをやってる場合で,それは結構な時間がかかる。
何時間何日と待たされた挙句スタックオーバーフローではキレるなというほうが無理。
529仕様書無しさん:2007/07/25(水) 23:34:22
>>528
つうか、開発してたらどれ位ネストしてしまうか位わかるだろうに・・・・
考えずに再帰してるやつとかいるよな
530仕様書無しさん:2007/07/25(水) 23:36:00
>>528
それはループに展開されない再帰を書くのが悪いんだよw
531仕様書無しさん:2007/07/25(水) 23:36:18
>>528
負荷の高さと再帰は関係ないだろ。
532仕様書無しさん:2007/07/25(水) 23:39:39
遅いしスタック溢れがあるし、使わずにすめばそっちの方がいいよな。
533仕様書無しさん:2007/07/25(水) 23:40:52
オレは末尾再起を信じている。
534仕様書無しさん:2007/07/25(水) 23:43:47
きちんと正規化されていない冗長テーブルで、第3正規形ならばヘッダ項目の値に相当するデータを取得するSQL。

SELECT MAX(foo)
INTO wFoo
FROM bar
WHERE hoge = wHoge
;

同じグループのデータなら、ヘッダ項目の値は必ず一つしかないと考えていいんですね?1事実1項目の原則を無視してますが、今後にプログラムバグは発生しませんね?
535仕様書無しさん:2007/07/25(水) 23:54:38
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  )) >>531
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ
536仕様書無しさん:2007/07/25(水) 23:57:37
>>535
再帰を別のものと勘違いしてないか?
537仕様書無しさん:2007/07/25(水) 23:59:06
>>531
関数呼び出しのコストを考えなくて良い言語を使っているならね。
538仕様書無しさん:2007/07/25(水) 23:59:23
>>521
それこそ誤解。
JavaにはCで言うポインタ相当の機能が無い=Javaにはポインタはない。

というか、Javaの言語仕様の説明で「Javaにポインタあります」なんて出てきたっけ?
リファレンスのことを言っているんでしょ?
Javaにはポインタはないけど、リファレンスはある。
まあ、名前としてだけのポインタなら、java.lang.NullPointerExceptionがあるわけだ。
C#だとSystem.NullReferenceExceptionだったっけか。

Java理解するだけならポインタなんかぜんぜん知らなくてもOKだと俺は信じている。
ただ、参照は理解しないと致命的。まともなプログラムは何も書けんだろう。
(強い, 弱い, (ソフト,) ファントム や、循環参照 とかは後回しでいい。)
539仕様書無しさん:2007/07/26(木) 00:02:55
>>538
じゃヴぁ厨はアホしかいないからwww
真剣に相手にしない方がいいよw
540仕様書無しさん:2007/07/26(木) 00:03:08
>>537
>>528 は
「負荷のかかる処理に再帰は使われる」と言ってるのか、
「再帰だから負荷がかかる」と言ってるのかしらんけど、
どっちにしても、再帰を特別視しすぎ。
541仕様書無しさん:2007/07/26(木) 00:18:58
>>534
SQLの集約関数で何でもいいからグループ内で取れた値のうち1つを
とりあえず返す(パフォーマンス優先)っていう関数があればいいのになあ、と思う。
542仕様書無しさん:2007/07/26(木) 00:21:18
Top n とか ROWNUMとか?
543仕様書無しさん:2007/07/26(木) 00:21:49
またJavaにはポインタはですか、飽きましたよw
544仕様書無しさん:2007/07/26(木) 00:26:49
>>542
Top nの方が近いかな。
select retrieveSomeValue(expr) from ** group by ~~
で適当に値返す。最大とか最小とか意味は持たない。
返却値は実装依存。パーティション内で同一の値を持っているなら何も困らない。

まあ、こういう話はスレ違いかな。
SQLといえば、Oracle限定だが、

WHERE
1 = HOGE AND 1 = HOGE2 AND 1 = HOGE3 AND 1 = HOGE4

ってのは勘弁してほしい。

1 = ALL(HOGE, HOGE2, HOGE3, HOGE4)

って書いてほしい。あんまりこれを徹底しすぎると実行計画が最悪になるが
↑のケースだとこっちの記法の方がパフォーマンス損失なしでわかりやすい。
545仕様書無しさん:2007/07/26(木) 00:31:52
ポインタと参照を議論するならまず定義してからにしようぜ。かなり今更だが。

ポインタ:
 意味: 符号無し整数値として表現されたメモリ上の位置。
 可能な操作:
  - 加減算
  - デリファレンス

参照:
 意味: メモリ上の位置だが内部表現が隠蔽される。
 可能な操作:
  - デリファレンス

C++: どっちも有り
Haskell: どっちも有り
C: ポインタだけ
Java: 参照だけ
Perl: 参照だけ
546544:2007/07/26(木) 00:32:52
あ、ごめん。>>544の実行計画のよしあしはケース依存だわ。

SQL系で言えば、subquery_factoring_clause(WITH ~~)使わないとか、
やたらとselect * from が多いとか、スキーマきりまくりで
プログラム内でデータ結合してるとか、
OUTER JOIN で未だに(+)記号使ってるとか、勘弁してほしいのが多いなあ。

あとみんな INNER JOIN ~~ USING なんで使わないの?
NATURAL JOINは削除フラグとかがあるから使えないとしても、
バカみたいに同じ列の名前を = で結ぶのはなんで?
547仕様書無しさん:2007/07/26(木) 00:41:03
ポインタを隠蔽した方がガベージコレクションに都合が良いんだろうか?
548仕様書無しさん:2007/07/26(木) 00:46:52
>>545
Pascalのポインタは加減算できないぞ。
549仕様書無しさん:2007/07/26(木) 00:56:38
>>545
「参照」で上げてる中で明示的にデリファレンスをするのはperlだけじゃないのか?
550仕様書無しさん:2007/07/26(木) 00:58:50
>>549
そういえば、Perlはリストのリストとかないしな。
リストにリストの参照ならあるけど。

VB6は一方通行のポインタ(DLLに渡すだけ用)と参照があるね。
551545:2007/07/26(木) 01:13:47
>>547
ポインタの指してる場所を好き勝手に変更できる場合だと、指してる先が本当
に実在する値を指してるのかどうかを実行時に判定できる必要があるからな。
Boehm GC みたいな力技でも何とかなるが。

>>548
それは知らなんだ。そもそも Pascal にポインタあったのか。

>>549
明示的かどうかは考えてなかった。まあそれを言ったら Haskell の IORef や
TVar も明示的にデリファレンスする参照だ。

increment :: Num a => TVar a -> IO ()
increment n = atomically $
         do old <- readTVar n
           writeTVar n (old + 1)
552仕様書無しさん:2007/07/26(木) 01:19:32
CとかC++とか、むしろポインタこそ真変数ってぐらいポインタばっかだ
553仕様書無しさん:2007/07/26(木) 02:50:39
FizzBuzzって何?


>>553
ググレカス!!
ウィキレカス!! ウィッキーレ!!


>>553
Google't!!!
Wiki't!!!


>>553
ラピュタ!!!!



>>553
↑ パズーーーーーー!!!!! だから・・



>>553
オネアミスの翼!!!!



ェエェーーーー!!!!!
554仕様書無しさん:2007/07/26(木) 05:53:03
>>551
Pascalは確かにポインタが存在する。
特にOOPLとして拡張されてるDelphiなんかは
参照とポインタが別の物として存在してるし。

オブジェクト型はJavaのように暗黙的な参照として扱われ
ポインタは加減算出来ず、型も厳密なので限られた事しか出来んが
こちらは明示的にデリファレンスが必要。

ポインタと参照の境目は「指し示すもの」を明示的に扱うかどうかじゃね?
555仕様書無しさん:2007/07/26(木) 10:16:59
pascalのポインタって、演算子じゃなくて
inc()とかいう関数使って加減算出来なかったかな。
それは加減算の内に入らないのかな?
556仕様書無しさん:2007/07/26(木) 21:09:41
とりあえずアドレスは間接参照という概念を実装するために使われる
お手頃な手段であって必要条件ではないな。
557仕様書無しさん:2007/07/26(木) 21:15:09
Cのポインタだってアドレスになってるのは実装依存。
必ずしもアドレスになってなくてもいい。
558仕様書無しさん:2007/07/26(木) 21:19:37
>>557
じゃ、アドレスになっていない処理系を紹介してくれないか?
存在もしない処理系についてえらそうに語ってないことを明らかにしてくれよ。
559仕様書無しさん:2007/07/26(木) 21:56:42
>>558
全くの別人だし、実際にアドレスではない処理系は知らないが、
思いこんでると危険。仕様にアドレスだと記載していないのだから
違うかも知れないと思っておくのは大切。

「std::vector<T>::iterator」が「T*」では無いかも知れない
って言ってるのと同じだよ。
こっちはそうでない処理系を見つけるのは簡単だろうけど。

C/C++には「未定義の動作」が多いからね。
全く違う環境と処理系の仕事をやらざるを得なくなったときに
ハマるかどうかはそこで決まるかも。
560仕様書無しさん:2007/07/26(木) 22:21:28
仮想記憶だったら物理アドレスじゃねーな。
561仕様書無しさん:2007/07/26(木) 22:24:29
C++の参照も一般概念としての参照とはまた違うから、
参照という言葉をC++で初めて知ってそのままの香具師の言うことも怪しい。
562仕様書無しさん:2007/07/26(木) 22:28:46
&はそのオペランドのアドレスを返すことになってる。

Cで言うアドレスってのが何かってのは別の話だ。
563仕様書無しさん:2007/07/26(木) 22:38:52
ちなみに、メンバ変数/メンバ関数へのポインタは、
たいていの場合、いわゆるメモリアドレスではない。
564仕様書無しさん:2007/07/26(木) 22:39:52
広く意味を取るなら
参照 ∋ ポインタ
にしかならないんじゃないかなと。
ただ「ポインタ」と「参照」の区別があるような気がするのは、あくまでC/C++が
議論の基底にある所為ではないかと思う。

それを敷衍して、「ポインタ = アドレス値」 や、「参照 = 暗黙的なデリファレンス」 と
してしまうと、他の言語(での用語)については確かに正しく定義出来なくなるなぁ。
新語が必要?
565仕様書無しさん:2007/07/26(木) 22:53:29
ポインタは忘れてもいいけど
ポンヨーは忘れたら恐い目にあうぞ
566仕様書無しさん:2007/07/26(木) 22:57:45
>>555
それは拡張された仕様だとおもわれ。

TurboPascalでも使えたのかな?
使ってた当時は、ポインタを整数やら配列にキャストしたりして、無理やりポインタの演算を
やってた記憶が。
567仕様書無しさん:2007/07/26(木) 23:03:40
>>558
昔はインタプリタのCがあったから、そういうののポインタは、アドレスは直には入ってないんじゃないか?
568仕様書無しさん:2007/07/26(木) 23:39:03
だからCのポインタの値はアドレスと規格で決まってるっての。

そのアドレスが(ry
569仕様書無しさん:2007/07/26(木) 23:44:47
>>564
まあ意味論的には区別する必要無いな。
ポインタの加減算とかが必要になるのは
生のメモリブロックに触ろうとしてるからだし。
570仕様書無しさん:2007/07/26(木) 23:48:49
>>564
だからかな?身の回りのperlerの人たちはあまり「参照」て言わない。
「リファレンス」ていう。・・・よけいややこしくなるかw
571仕様書無しさん:2007/07/26(木) 23:58:11
>>570
リファレンス先の実体のことをリファレントと呼ぶ。
572仕様書無しさん:2007/07/26(木) 23:59:38
>>571
じゃあポインタの指してる先も「リファレント」?
573仕様書無しさん:2007/07/27(金) 00:00:30
>>572
まあ、そうだね。
Perlだとリファレンスをデリファレンスして得られるものがリファレント。
574仕様書無しさん:2007/07/27(金) 00:04:24
さあ結局>>545が果敢に試みた定義は果たしてできるのかw
というかここしばらく誰もソースを張ってないぞw俺もな。
575仕様書無しさん:2007/07/27(金) 00:09:34
なんだか最近脱線しがちw
576仕様書無しさん:2007/07/27(金) 00:15:38
しかし『プロ』グラマらしい会話でいいじゃないか。
577仕様書無しさん:2007/07/27(金) 06:26:40
プロにもなってポインタ・・・ボイン・ボイン・・・
578仕様書無しさん:2007/07/27(金) 08:16:26
フロにはいって・・・ボイン・ボイン・・・

に空目した。
579仕様書無しさん:2007/07/27(金) 21:16:17
pointer pointee
reference referent
???
580仕様書無しさん:2007/07/27(金) 22:14:49
referとかreferrer(rは2つ。HTTPのはcreatなみに手遅れ)とかも忘れるな。
581仕様書無しさん:2007/07/27(金) 23:41:27
creatは、一文字でも短くというunixの慣習からだから
ある程度は仕方ないにしてもrefererは単なるアホだろ。
582仕様書無しさん:2007/07/28(土) 01:18:19
>>579
referenceeだったら感覚的にはreferenceされるものって感じだけど、
referentはreferenceして得られるものって感じ。
583仕様書無しさん:2007/07/28(土) 03:53:17
>>581
Ken Thompsonは「Unixを作り直すとしたらどこを直したいですか?」と聞かれて
「creat()にeを付けたいね」と答えてる。

typoなのか制限があったのかはいまだに確定的な証拠を見たことがない。
ちなみに「一文字でも短くというunixの慣習から」という推測は見たことがないな。
584仕様書無しさん:2007/07/28(土) 04:48:35
システムコール名が最大 6 文字だったから一文字でも短くというのは誤りではないが
creat に関しては間違って短くしすぎただけ、だと思っていたが。
585仕様書無しさん:2007/07/28(土) 05:30:57
ちょっとググったら
CREATでクリエイトって読ませる社名が結構多い事を知った
586仕様書無しさん:2007/07/28(土) 07:49:44
クゥレイトォ!
587仕様書無しさん:2007/07/28(土) 10:58:27
アセンブラ6文字制限説に関しては、creatと同時期に6文字のシステム
コールは存在するからあまり信用できんのよな。たとえばunlinkとか。
削る必要があったのならこれもunlnkとかになってただろう。

588仕様書無しさん:2007/07/28(土) 11:01:48
creatって書いたら、[crI:t]って発音しちゃうよな。
589仕様書無しさん:2007/07/28(土) 11:42:19
breadとかのノリでクレットもありそう。
590仕様書無しさん:2007/07/28(土) 13:17:40
ポティトゥ
591仕様書無しさん:2007/07/28(土) 13:23:14
トメェトゥ
592仕様書無しさん:2007/07/28(土) 16:27:25
トァマゴゥ
593仕様書無しさん:2007/07/28(土) 16:47:28
>>592
吹いたww
594仕様書無しさん:2007/07/28(土) 23:48:12
if ( height < height * 7000)
595仕様書無しさん:2007/07/28(土) 23:54:37
>>594
オーバーフローしたら偽になるってこと?
596仕様書無しさん:2007/07/29(日) 00:12:46
プラスかマイナスかを判定しているんじゃない?
597仕様書無しさん:2007/07/29(日) 00:37:08
定数なのにいちいち計算すんなってことかな
598名無しさん@そうだ選挙に行こう:2007/07/29(日) 00:55:54
0のときも偽になるな。
599名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:13:10
プログラム以前の問題だな。算数のレベル。
600名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:36:59
>>594
↓の -fstrict-overflow を使うと面白いことになりそうだ。
http://gcc.gnu.org/gcc-4.2/changes.html
601名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:42:06
if (len != 2 || len != 3) {
...
}
602仕様書無しさん:2007/07/29(日) 01:47:46
>>601
一瞬考えちゃったw
603名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:50:10
>>601
len != 2が評価された瞬間に割り込みでlenの値が書き換わる。
え?ローカル?割り込み無い?(* ̄- ̄)ふ~ん
604名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:02:36
!= 演算子がオーバーロードされてたり・・・
しないよな
605名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:26:55
こんな記述意味ねー、と思っているとスレッドや演算子オーバーロードで死ぬ。
それがマ板のルール。
606名無しさん@そうだ選挙に行こう:2007/07/29(日) 02:35:15
じつはlenはワード型への参照で、lenが指す先はI/Oアドレスにマッピングされてて(ry
607名無しさん@そうだ選挙に行こう:2007/07/29(日) 06:48:06
if(式)の式の評価順序は(ry
608名無しさん@そうだ選挙に行こう:2007/07/29(日) 07:36:28
>>594は if (height * height < 7000 ) の、
>>601は if (len != 2 && len != 3) の間違い…だよなぁ
609名無しさん@そうだ選挙に行こう:2007/07/29(日) 10:39:41
>>607
評価順序は?
610名無しさん@そうだ選挙に行こう:2007/07/29(日) 11:33:12
2ならlen != 2で通らないで次いく。
3ならlen != 2→len != 3で通らないで次いく。
1ならlen != 2→len != 3でifの中に入る。
結果的に>>608と同じになる。
何か問題でも?
611名無しさん@そうだ選挙に行こう:2007/07/29(日) 11:59:35
>>610
死ね。
612名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:03:20
俺も何に問題があるのかよくわからなかった。
結果的にSQLのLEN NOT IN (2,3)とかわらないのではないかと。
613名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:08:15
> if (height * height < 7000 )
それなんてサイコロ?

僕だったら
if ( len == 2 || len == 3){
  ; //ダミー
}else{
}

限定的条件は優先判断が僕ルール。
614名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:11:57
ifの()の中を評価している最中に違うスレッドに処理が移る時ってあんの?
615名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:24:18
シングルコアならないだろうけどマルチコアならあるかも

でも途中で変更されたからってまたそれを読みに行ったりしないだろ
616名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:53:14
コアの数がいくつだろうと切り替わるときは切り替わる可能性があるような。
617仕様書無しさん:2007/07/29(日) 13:05:12
コンテキストスイッチがいつ起こるかなんて完全にOSの胸三寸だろ。
618名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:44:14
だがそんな動作をするソースを見たら会社を辞めたくなると思う
619名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:45:26
610はつりだよな。
620名無しさん@そうだ選挙に行こう:2007/07/29(日) 13:46:38
621名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:46:21
601 はCかJAVAどっち?
622名無しさん@そうだ選挙に行こう:2007/07/29(日) 17:13:34
>612
そのSQLをCのif文に展開してみ
623名無しさん@そうだ選挙に行こう:2007/07/29(日) 17:28:05
>>621
Java
624仕様書無しさん:2007/07/29(日) 20:27:24
>>619
ん?なんか文句あっか?どこが悪いか説明もできないほどの
コミュニケーション能力のなさなのか?
625仕様書無しさん:2007/07/29(日) 20:34:39
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんな餌で俺様が釣られクマ――
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
626仕様書無しさん:2007/07/29(日) 20:38:07
>>624
えっ?マジなの?うそだろ・・・。

一応悪いところ書いておくけど、
610に書いてあるロジックは論理積。
以上!
627仕様書無しさん:2007/07/29(日) 20:49:33
あははw
628仕様書無しさん:2007/07/29(日) 21:21:14
ああ、よくわかった。
食事を取らない状態だとわからなかった。
{x ∈ N | x != 2 ∨ x != 3} = Nそのもの
629仕様書無しさん:2007/07/29(日) 21:38:36
この業界って
ドモアブルの定理すら知らん奴が
給料もらってんの?
630601:2007/07/29(日) 21:45:15
ちなみに詳しく書くと

 if (len != 2 || len != 3) {
  System.out.println("error");
  System.exit(1);
 }
 else {
  ...
 }

1度でも走らせれば動かないことがわかるはずなのに・・・。
631仕様書無しさん:2007/07/29(日) 21:48:35
>>629
ソフト屋でドモアブルの定理が必要になるのって、科学技術計算をやるとこくらいじゃね?
ハード屋は必須だけど。

でも、この業界はド・モルガンの定理を知らない奴がゴロゴロいるところが恐ろしいと思う。
632仕様書無しさん:2007/07/29(日) 21:56:31
>>630
意図としては2または3でないときエラーとする,かな。

if( !(len == 2 || len == 3) )

ド・モルガンは高校で習うから知らないはずはないんだが・・・
633仕様書無しさん:2007/07/29(日) 22:04:38
>>629
懐かしい。

が、知ってる必要はないでしょ。
問題は理数の大卒でそれを知らない奴がいることだね。
634仕様書無しさん:2007/07/29(日) 22:05:27
>>608で出てるよ
635仕様書無しさん:2007/07/29(日) 22:06:09
>>633
お前が割り込んだせいで俺のレスが変な感じに!
636仕様書無しさん:2007/07/29(日) 22:11:54
ドモアブルって

(r*e^(j*x)) * (s*e^(j*y)) == (r*s)*e^(j*(x+y))

だよな。

TeX使いてー(w
637仕様書無しさん:2007/07/29(日) 22:14:04
唐突なド・モアブル吹いたw
638仕様書無しさん:2007/07/29(日) 22:16:40
>>636
いや、いいたいことはわかるが、それは違う。
それオイラーの公式を変形しただけやん。

ドモアブルは、複素数をn乗したら絶対値がn乗になって、偏角がn倍になるってやつ。
639仕様書無しさん:2007/07/29(日) 22:20:19
みんな優しいなw
>>629の悲劇はうろ覚えの呼び名ではなく公式を書かなかったことか。
640仕様書無しさん:2007/07/29(日) 22:22:26
641仕様書無しさん:2007/07/29(日) 22:43:11
ぐぐってみると、ど・もあぶるは、絶対値が1のとき限定みたいな・・・
642仕様書無しさん:2007/07/29(日) 22:44:40
オイラはオイラー
643仕様書無しさん:2007/07/29(日) 22:47:48
ド・モアブルなんてどーでもいいから、毎回毎回
あ、あ、あ、あのこ、こ、このし、しようがわ、わからないので
でですが?

とか吃るのやめろ。まずそれからだ。
644仕様書無しさん:2007/07/29(日) 22:49:07
公式の名前も覚えてないのに
偉そうなこと言った俺涙目w
645仕様書無しさん:2007/07/29(日) 22:54:55
唐突な吃り指摘吹いたw
646仕様書無しさん:2007/07/29(日) 23:05:44 0
ド・ゴールの定理とか口走ってたら涙目じゃ済まなかったな。
647仕様書無しさん:2007/07/29(日) 23:09:22 0
>643
みんなおまいを恐れてるのさ。
まずは萌えフィギュアを机に並べて雰囲気を和らげろ。
648仕様書無しさん:2007/07/29(日) 23:12:39 0
お七夜を初七日と言い間違えた奴よりはマシだ。w
649仕様書無しさん:2007/07/29(日) 23:14:16 0
いやでも紛らわしいよな。さすがに四十九日はわかるが。
650仕様書無しさん:2007/07/29(日) 23:28:12 0
で、610=624はどこ行ったんだ?
651仕様書無しさん:2007/07/30(月) 00:37:12
寿司食いたい
652仕様書無しさん:2007/07/30(月) 00:38:40
>>651
がりでも食ってくる
653仕様書無しさん:2007/07/30(月) 00:44:31
610もああだこうだ書く前に
JavascriptでもVBAでもいいから
そこらへんで試してみりゃよかったのにな。
654仕様書無しさん:2007/07/30(月) 04:22:05
>>632

正しくは
if(!(len==2 && len==3)) {
}
で必ずtureに成る。
655仕様書無しさん:2007/07/30(月) 08:15:20
そのへん、賢いコンパイラならif自体消すだろうしな。
656仕様書無しさん:2007/07/30(月) 13:07:29
デスマってくるとわけのわからないコード書きがちだよな。
早く逃げ出したい一心で。

やはり残業はほどほどにして頭がスッキリした状態でコードを書きたいものだ。
657仕様書無しさん:2007/07/30(月) 13:24:46
今はみんなIF文に頼りすぎてるから論理演算が苦手になるんだろうね。

話は変わるけどC++でこういうソース見た。

CClassX* obj = GetCLassX(.......

if (obj != NULL && obj->Get() != NULL)
{
  ...
}

JavaとかPHPなら、先頭の評価でIF文抜けるんだけどね
658仕様書無しさん:2007/07/30(月) 13:44:03
>>657
C++で
if(p && p->hoge()) do_something();
は(マルチスレッドで p が書き換わる場合を除いて)安全だが?
659仕様書無しさん:2007/07/30(月) 15:07:29
>>658
条件は先頭から評価されていくとは限らないんじゃなかったっけ?
660仕様書無しさん:2007/07/30(月) 15:58:26
&&と||演算子は短絡評価になる。

&&の場合、左側の式の評価結果がfalseなら右側は評価されず
||の場合、左側の式の評価結果がtrueなら右側は評価されない。
661仕様書無しさん:2007/07/30(月) 16:03:19
ということは>>657のソースはありなのか?
662仕様書無しさん:2007/07/30(月) 16:10:35
C++の構文としては安全だから「あり」。
当然だが、意味があっているかは別問題。
663仕様書無しさん:2007/07/30(月) 16:23:39
トンクス。ひとつ大人になった
664仕様書無しさん:2007/07/30(月) 16:26:27
>>615
毎回読みに行くかどうかはvolatile修飾子や最適化の設定次第だな
665仕様書無しさん:2007/07/30(月) 17:25:40
まずいソースは深い議論を呼ぶんだなあ。
今ちょうどこの本読んでるところ。
http://www.amazon.co.jp/dp/4894716895
666仕様書無しさん:2007/07/30(月) 17:31:39
>>657
>今はみんなIF文に頼りすぎてるから
意味不明。

あと、C/C++のショートサーキットは常識。

>>664
>>617
667仕様書無しさん:2007/07/30(月) 17:44:41
>>今はみんなIF文に頼りすぎてるから
>意味不明。

論理演算でかいくぐれるところも全部ifで片付けちまうってことじゃね
668仕様書無しさん:2007/07/30(月) 19:18:04
>>666
俺はメモリやI/Oアドレスの内容を毎回読みに行くかどうかの話をしてるだけで
コンテキストスイッチがいつ起こるかの話なんかしてない
669仕様書無しさん:2007/07/30(月) 20:08:03
昔ベーマガでDr.Dが
「IFは遅いから論理式を使え」
と言っていたのを思い出した。
670仕様書無しさん:2007/07/30(月) 20:35:09
>>667
論理圧縮して書くと奇異の目で見られるからな。
カルノー図使って説明しようとすると、「何?その怪しい図は?」って顔されるし。

仕様書通りに書けって言う気持ちはわかるけど、コードは論理圧縮して、
テストデータは仕様書通りにすれば問題ないと思うんだけどな。
どう考えても、レビュアーがコードレビューの時に頭悪いことを必死に隠す
ために言っているとしか思えない。w

そもそも仕様書書いた奴が頭悪いというツッコミはなしね。www
671仕様書無しさん:2007/07/30(月) 20:37:40
>>670
そのコードを書いた奴が十分に頭が良ければ、納得のいく説明を簡潔にできると
思うんだが。>コードレビュー時
672仕様書無しさん:2007/07/30(月) 20:37:49
やっぱ可読性悪くなるから仕事向けじゃないののかw
673仕様書無しさん:2007/07/30(月) 20:52:48
>>670
あんまし圧縮すると、仕様とは似ても似つかないものになったり
コードだけ読んでも把握し辛くなったりするから程々に。
674仕様書無しさん:2007/07/30(月) 21:33:12
>>670
読みにくくて変更しにくいから駄目なんだよ。
そのデメリットに釣り合う客観的なメリットがコメントで記載してあれば許す。
675仕様書無しさん:2007/07/30(月) 21:38:53
>>630

それ、VB上がりの人だね。

VBだと動くんだよ。
676仕様書無しさん:2007/07/30(月) 22:29:02
>>675
嘘だろ?
677仕様書無しさん:2007/07/30(月) 22:39:00
デバッグ時にコンパイルしたり実行したりするのは素人だろ。
プロは机上デバッグで納品する。
678仕様書無しさん:2007/07/30(月) 22:40:31
さすがプロだぜ!
679仕様書無しさん:2007/07/30(月) 22:46:56
机上寝バックなら任せろ。
680仕様書無しさん:2007/07/30(月) 22:49:17
>>675
まじ?じゃあ610がVB厨だったら、
ちゃんとコード書いて動作確認してたのかも
知れないわけか。悪いこといっちゃったなあ。
681仕様書無しさん:2007/07/31(火) 01:53:08
今VB厨の俺が確かめてみた(VB6)
If (a <> 2 Or a <> 3) Then←Bには!=とか||ないんだよ・・・lenは予約語だし
検証:a=0~10の範囲で
結果:全部真で通りました。やったw
Else通りませんね~
682仕様書無しさん:2007/07/31(火) 01:55:13
・・・通るわけねーだろ

アホか
683仕様書無しさん:2007/07/31(火) 01:57:01
! はなかっただろうが Not ぐらいあっただろ
684仕様書無しさん:2007/07/31(火) 01:59:57
If (Not (a = 2) Or Not (a = 3)) Then←全部通るなぁ
If (Not (a <> 2) Or Not (a <> 3)) Then←もちろん2,3だけ通る
685仕様書無しさん:2007/07/31(火) 02:00:18
>>682 の意味が今ひとつわからない。
全部真だろ。見ただけで。いや、syntaxが間違ってるとかいうなら別だが。
686仕様書無しさん:2007/07/31(火) 02:02:13
スレのレベルの低下が著しいな
687仕様書無しさん:2007/07/31(火) 02:05:52
ネタが高度すぎてついて行けない。というか>>610-685までのどれがどれだけネタかすら
わからない。助けてー。
688仕様書無しさん:2007/07/31(火) 02:06:56
オレの人生がネタ
689仕様書無しさん:2007/07/31(火) 02:07:01
>>687
全部マジレスだw
690仕様書無しさん:2007/07/31(火) 02:07:15
2chの存在がネタ
691仕様書無しさん:2007/07/31(火) 02:08:36
そんな救いのないwいやちょっとw
692仕様書無しさん:2007/07/31(火) 02:10:46
もうインターネットの存在がネタ
693仕様書無しさん:2007/07/31(火) 02:20:58
これ他言語で試そう、っていう暇な人いる?w
694仕様書無しさん:2007/07/31(火) 02:26:00
>>693
もう全部ネタでいいじゃないかw そっとしとけ。
695仕様書無しさん:2007/07/31(火) 02:44:00
そうそう、本気だったんだから
そっとしておこうよ。
696仕様書無しさん:2007/07/31(火) 02:49:51
ここまでオレの自作自演(・∀・)ですた
697仕様書無しさん:2007/07/31(火) 03:45:15
>>693
ためすまでもないよ。

やっぱVBも普通ジャン、うそつき!
698仕様書無しさん:2007/07/31(火) 07:21:09
もし評価に関数が入ってて
関数呼び出しが副作用を持つならVBは結果が変わるな
699仕様書無しさん:2007/07/31(火) 09:48:28
VBじゃなくても変わりうるがな
700仕様書無しさん:2007/07/31(火) 13:07:44
operator || を作れば完璧だな。
しかも副作用を伴うヤツ。
701700:2007/07/31(火) 13:08:44
operator && と  operator || か。スマソ
702仕様書無しさん:2007/07/31(火) 13:34:44
operator || を定義しちゃうと、もう短絡評価されなくなるからなあ。
不っ細工な仕様だぜまったく。
703仕様書無しさん:2007/07/31(火) 19:28:42
VBは短絡評価されないが、C++もオペレータ定義しちゃえば無くなるのか。
俺普段C++やらないから知らなかったぜ。
704仕様書無しさん:2007/07/31(火) 20:26:05
そういう理由があるのでMore effective C++とかの本では
|| とか && とか , のオーバーロードは非推奨という内容のトピックを設けているようだ
705仕様書無しさん:2007/07/31(火) 22:04:31
>>699
CやC++の&&, ||はシーケンスポイントにもなっている。
706仕様書無しさん:2007/07/31(火) 22:09:40
つまり、たとえoperator &&やoperator ||をオーバーロードしようとも、
評価順は左辺が先・右辺が後ということか。左辺の結果による短絡は
なくなる可能性があるとしても。
707仕様書無しさん:2007/07/31(火) 22:13:38
つまりオーバーロードしてネカマが小梅になっても
評価はやっくんよりも低いということか。
708仕様書無しさん:2007/08/01(水) 00:39:00
#define MODULE_01 {
....
....
....約1000行
}


#define MODULE_02 {
...
}
709仕様書無しさん:2007/08/01(水) 00:41:09
インライン関数の新しい手法か?w
ちゃんと\つけてるんだよな?
710仕様書無しさん:2007/08/01(水) 00:44:16
流石の俺もこの発想はなかった
711仕様書無しさん:2007/08/01(水) 01:43:11
inline関数は長いと普通の関数呼び出しになるがこれは・・・
引数が無いのがせめてもの救いか。
712仕様書無しさん:2007/08/01(水) 01:49:51
ブロックになってるだけまだましかねぇ...
713仕様書無しさん:2007/08/01(水) 02:16:08
MODULE_01
MODULE_01
MODULE_01
MODULE_01
MODULE_01
714仕様書無しさん:2007/08/01(水) 02:23:29
#define MODULE_02 {\
...
MODULE_01
715仕様書無しさん:2007/08/01(水) 02:25:41
途中でorz

#define MODULE_02 {\
...(なんかいっぱい)
MODULE_01\
...(なんかいっぱい)
}

#define MODULE_03 {\
...(なんかいっぱい)
MODULE_02\
...(なんかいっぱい)
MODULE_01\
...(なんかいっぱい)
}
716仕様書無しさん:2007/08/01(水) 13:49:33
わざわざ #define しているということは、何回か使うんだよな…。
しかも内容が 1000 行って…それだけで 1 ファイル(.c/.cpp)分になる位の容量だよな…。

マクロの引数が無いということは、その1000行はおそらくその外側のブロックの変数を書き換えたりするんだよな…。

鬱だな。
グローバル変数の悪夢。

/*
完全に完結していたらスマン。
でもそれなら完全に関数化して欲しいな。
*/
717仕様書無しさん:2007/08/01(水) 19:24:07
Java@Eclipseもなかった時代
あるクラスのソースファイル HogeHoge.java                                              
public class HogeHoge {   /*

public int func001() {
 
//酷いパスタソース


}

 // 数千行


*/}
718仕様書無しさん:2007/08/01(水) 20:32:32
>>717
もはやクラスの必要性すらわからないな
719仕様書無しさん:2007/08/01(水) 21:35:34
HogeHogeを継承したクラスに処理本体が書いてあるんじゃね?
720仕様書無しさん:2007/08/02(木) 01:01:21
>718-719
コードをよく読もー
頭の/* に気付かずに必死にパスタをほぐしていくと
最後にうがーーーーーーーっっっっっっとなるわけだ。
721仕様書無しさん:2007/08/02(木) 02:13:08
日本語が文字化けしてるソース。
エラーメッセージやコメントが読めない。
722仕様書無しさん:2007/08/02(木) 02:21:58
char *func(){
char buf[512];
char *ret;

/* bufに対する処理.. */

ret = buf;
return ret;
}
723仕様書無しさん:2007/08/02(木) 02:25:17
>>722
ローカル変数へのポインタを返すなんて猿でもやらないだろ、常考
724仕様書無しさん:2007/08/02(木) 02:48:54
>>722
昔のソースを見ると結構良く見る
見た目ちゃんと動いちゃうから気が付かないんだよな
725仕様書無しさん:2007/08/02(木) 02:50:36
class hogehoge { }

class hagehage extends hogehoge { }

class tekateka extends hagehage { }
726仕様書無しさん:2007/08/02(木) 06:26:04
>>721
間違えた文字コードでそのファイルを開いてるだけでは?
727仕様書無しさん:2007/08/02(木) 06:47:42
通信中にビット化けおこしてるかも
はたまた複数のエンコードが混在したソースとか
728仕様書無しさん:2007/08/02(木) 06:47:47
>717
色の変わらないエディタつかってたの?
729仕様書無しさん:2007/08/02(木) 07:55:03
>>724
見た目もちゃんと動かないだろ。
リターンした直後に参照したとしても書き換わってる可能性高いだろ。
730仕様書無しさん:2007/08/02(木) 08:03:08
strcpyとかのように、スタックをあんまし使わない関数へ渡すなら
動きそうな感じもするけどね
731仕様書無しさん:2007/08/02(木) 09:17:36
>>722
最初はbufを直接返したけど動かなくてあわててretを追加してみたと予想。
なんか思考と行動がかわいいじゃないか。
732仕様書無しさん:2007/08/02(木) 11:02:04
>>729
環境によるだろうが、運が良ければ動くだろうな。
733仕様書無しさん:2007/08/02(木) 11:30:00
>>729
別の関数よぶまでは壊れることはない。

特権レベルのない環境では保証できんが。
734仕様書無しさん:2007/08/02(木) 12:37:56
そんな環境はたぶん無いと思うが、
スタックを巻き戻す時に 0x00 でクリアする
処理系もあっても不思議では無いような気はするな。
735仕様書無しさん:2007/08/02(木) 14:24:40
.NET のDataSet(単一のDataTable)の中にプログラム中のメッセージ定数や、Enumにあたるものを格納して、
メッセージクラスwだなんてのたまうバカ。プロジェクトの構成もいろいろと凄かった。
もう勘弁してくれよほんと。
736仕様書無しさん:2007/08/02(木) 15:00:51
メッセージ定数とかどこでもよくやるじゃん。
737仕様書無しさん:2007/08/02(木) 19:20:58
DataSetって便利だから下手なメッセージ管理クラス作られるよりいい気がする
738仕様書無しさん:2007/08/02(木) 21:04:58
>>728
Java1.3の時代、viで開発していましたが何か?
739仕様書無しさん:2007/08/02(木) 21:32:00
vimとかじゃなくて、vi?
740仕様書無しさん:2007/08/02(木) 21:47:09
か、漢だ……
741仕様書無しさん:2007/08/02(木) 22:32:03
本物のプログラマは COPY CON PROGRAM.EXE を使う
742仕様書無しさん:2007/08/02(木) 22:59:44
ネ木1 ネ木4 →  
743722:2007/08/03(金) 00:25:33
この関数呼び出しを直接strcat(だったかな?)の引数にしていて、一応結果は正しくなっていた。
実際には buf の前後に他のローカル変数があったので、それらを犠牲に buf は生き残っていたんだと思う。
744仕様書無しさん:2007/08/03(金) 00:35:22
>>741
本物の例。
C>copy con #.com
テスト
^Z
    1 個のファイルをコピーしました。

C># バッチファイルで '#' がコメント行に出来るようになるんだぜ

C>#スペース空けないとダメだけどな。
'#スペース空けないとダメだけどな。' は、内部コマンドまたは外部コマン
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
745仕様書無しさん:2007/08/03(金) 00:41:14
すげー

って テ だけでいいやん
746仕様書無しさん:2007/08/03(金) 00:49:05
>>741
そういや昔実行ファイルをテキスト化するツールがあったな
20年ぐらい前だが
747仕様書無しさん:2007/08/03(金) 00:55:23
>>746
逆アセンブラではなくて?
748仕様書無しさん:2007/08/03(金) 00:58:00
>>747
いや、パソ通のBBSにうpされたテキストを保存するだけで実行ファイルになるというやつ
749仕様書無しさん:2007/08/03(金) 01:30:44
>748
ish通すとかでなく?
そりゃすごい。
750仕様書無しさん:2007/08/03(金) 02:11:16
懐かしい話してるなー
それ確かに見たことあるよ
当時驚いた
751仕様書無しさん:2007/08/03(金) 17:08:08
おもわず eicar.com をここに書こうかと思っちゃったよ。
virus検出に引っかかるだろうからやめとくけど、
あれもtextを保存するだけで.com形式の実行ファイルになる。
752仕様書無しさん:2007/08/04(土) 01:43:55
>>722
記憶違いならすまんが、大分昔に、
配列宣言すると勝手にstaticになるCコンパイラ無かったっけ?
753 ◆Xk4F.Zuuwg :2007/08/04(土) 10:18:14
>>752
何その厄介なコンパイラ(((( ;゚Д゚))))
754仕様書無しさん:2007/08/04(土) 11:38:12
変数とか使う直前に書いていたら、"わかんなくなるから全部メンバーにして"って
言われた。
メソッド内でしか使用しないのに....こんなもんか?
755仕様書無しさん:2007/08/04(土) 11:57:10
>>754
メンバ変数をm_001~でつけてやったらよかったのにw
「全部メンバーにしておきました!」
756仕様書無しさん:2007/08/04(土) 14:35:00
PLCのレジスタ名みたいだな
757仕様書無しさん:2007/08/04(土) 15:16:19
>>752
メイン関数で配列取ればスタティックみたいなもんだな
758仕様書無しさん:2007/08/04(土) 16:42:08
>>754
マジで言うとさ、そういう時ってプログラマとしての正念場だと思うわけよ。
俺はそういう書き方はできないよ、っていう態度ははっきりさせたほうがいい。
糞コードの書き逃げが通用するのはまれで、たいていはあとで自分の首を
絞めることになるよ。
759719:2007/08/04(土) 17:07:51
>>720
いやだから、後方互換性のためだけに、HogeHogeが形だけ残ってるのかと。
760仕様書無しさん:2007/08/04(土) 20:35:50
>>754
コボラ大量投入しようとしてるんじゃね?

>>755
次にくるのは「台帳作れ」な気がする
761仕様書無しさん:2007/08/05(日) 00:34:24
引き継いだソース(レガシVB)なんだけど。
とある標準モジュールの構造。数個のプロシージャに処理を切り分けてはいるものの
・全プロシージャがPublic。モジュール外からのエントリはその内1個
・どのプロシージャにも引数一切無し、代わりにモジュールに数十個のグローバル変数
・その変数も全部Public。クロスリファレンスなんて作ってる暇ないからはっきりとは言えんが、
 90%モジュール外から見えなくておkなはず

「DATA DIVISION.」とか書いてないのが不思議でしょうがない。
762仕様書無しさん:2007/08/05(日) 00:38:54
全部書き換えてしまえ
763仕様書無しさん:2007/08/05(日) 01:11:57
public変数なのにgetterあったりする
764仕様書無しさん:2007/08/05(日) 01:29:11
リファクタリングでpublic変数→getterってよくあることじゃない。
だから用意周到にgetterも用意してあるんだよ。
765仕様書無しさん:2007/08/05(日) 02:37:51
リファクタの途中かよw
766仕様書無しさん:2007/08/05(日) 07:57:58
互換性のためにとりあえず残してる、じゃね?
767仕様書無しさん:2007/08/06(月) 10:06:54
互換性のためにしても、VBのPublic→Privateへの変更って簡単そうに思うけど。
Privateに置換して参照できないエラーが出たら、Publicに戻せばいい。
漏れの保守してるコードではそれでトラブったことないんだが、それができないリスキーな
コードってのもあるの?
768仕様書無しさん:2007/08/06(月) 10:54:14
おや? とは思うが辞めようと思うほどかなぁ?
そういう状況のソースを見たら、メンテナに聞いてみたりはするとは思うが
メンテナがはっきりしなかったりしたら無視して getter/setter 使うかな
769仕様書無しさん:2007/08/06(月) 11:55:11
メンテナってメンターのこと?
770仕様書無しさん:2007/08/06(月) 11:57:19
maintainer
771仕様書無しさん:2007/08/06(月) 12:01:28
尹孫河
772仕様書無しさん:2007/08/06(月) 13:23:30
VBよくわからんがprivateにアクセスしようとするとエラーになるの?
勝手にその場で変数作られたりしない?
773仕様書無しさん:2007/08/06(月) 13:49:02
>>772
コードでOption Explicit を指定すれば、宣言なしの変数作成は警告が出るようになる。
このオプションは、IDEで自動入力するように指定することも可能。

…しかし、これを知らなかったり、面倒くさいという理由で無効にしてるVBプログラマも多そうだな…
オプションをさぼったせいで、仕込んだバグの発見に苦労するのは自分なのに。
774仕様書無しさん:2007/08/06(月) 15:38:59
Option Explicitはデフォだとおもてたよ

今やってるソース。
同業他社があまりの対応の悪さに、客に斬られた。で、ソース管理がこっちに回ってきた('A`)
VBなんだけど

あらゆる関数にResume Next
Option Explicit?なにそれおいしいの?(゚∀゚)
起動したら初期設定で種々の設定値をDBやファイルから取得するんだが
ファイルが無くてもエラーにせずそのまま処理続行
DBに接続できなくてもエラーにせずそのまま(ry
ファイルにデータが入ってなくても(ry
なので、最初はすんなり起動するが、画面のあちこちを触っているといきなりエラーで落ちるor
無限ループに突入してアボン

勘弁してくれorz
775仕様書無しさん:2007/08/06(月) 16:16:27
Unit Testの都合上、Privateで十分なものをPublicにする場合が多い。
VB6だけど orz
776仕様書無しさん:2007/08/06(月) 17:11:00
>>774
逆に、叱られたわけじゃないけど
昔いた会社でエラー処理が多過ぎる
って言われたことは有るな
進めたくても先に進めません
777仕様書無しさん:2007/08/06(月) 20:07:08
状況的に発生しえない例外まで全部捕捉しようとする冗長なコードなら幾つも見た。
適正なインデックス範囲で回してるのに ArrayIndexOutOfBoundsException を catch しようとしてたりね。
そういうのは鬱陶しいし無駄に警戒心が働くんで正直やめてほしいんだが。
778仕様書無しさん:2007/08/06(月) 20:55:47
まあ、RuntimeExceptionはキャッチ禁止だよね。
779仕様書無しさん:2007/08/06(月) 21:50:16
>>777
世の中ハードウェアもOSも信用出来ない。
もちろんアプリも信用出来ない。
780仕様書無しさん:2007/08/06(月) 22:01:50
子供の夢にも出てこない
大人が懐かしがることもない
781仕様書無しさん:2007/08/06(月) 22:04:56
>>778
基本はそうだけど、場合による。
日付などのフォーマットの間違いを例外で適当に指摘させる意味でも、
あるいはFileNotFoundな状況で自作例外をリスローすることもあるかもしれない。
782仕様書無しさん:2007/08/06(月) 22:12:56
>>779
やあdjb
783仕様書無しさん:2007/08/06(月) 23:45:49
まあ、NullPointerExceptionはキャッチ禁止だよね。
784仕様書無しさん:2007/08/06(月) 23:56:12
>>779
もうコンピュータも電化製品も文明も捨てて山に篭るしかないな
785仕様書無しさん:2007/08/07(火) 00:15:18
>>783
が!
786仕様書無しさん:2007/08/07(火) 00:19:08
>>785
そういえば略さずに書くと>>783だったっけな。
787仕様書無しさん:2007/08/07(火) 01:39:39
NullReferenceExceptionも叩いてください
788仕様書無しさん:2007/08/07(火) 01:47:45
ぬるり
789仕様書無しさん:2007/08/07(火) 01:51:03
ぬるりふぇらせくす
790仕様書無しさん:2007/08/07(火) 01:54:20
ぬりえ
791仕様書無しさん:2007/08/07(火) 02:14:57
>>742 それ、
ネ木1 ネ木4 →コ 

にした方が、セーブ終了後にちゃんとモニタプロンプトに戻るんでオススメ。
今度試してみてね。

792仕様書無しさん:2007/08/07(火) 11:06:16
以前、助っ人で関わったプロジェクトでの事。
早めに当日の作業が終わったので、
プロジェクト内の他のメンバーのソースを眺めてた。

あるモジュールのソースを開いた所、ランダムに文字列が並んでおり
あ、やべ、バイナリファイル開いちゃった、と思い慌てて閉じた。

・・・ちょっと待てよ、テキストファイルしかチェックインしてないはずだぞ・・・

もう一度同じファイルを開いた。
それがソースファイルで有る事を理解した俺は「あ”~~~~~」と叫んでしまった。
皆が黙々と作業している所でだ。

隣の席の奴(彼は優秀で書くソースも綺麗)に小さい声で「このソース凄いね」と
声を掛けると、彼は俺のPCのモニタを一瞥して軽く横に首を振った。

何が凄いってインデント滅茶苦茶、空の行がやけに沢山有ったり、
反対にゴチャゴチャっと改行しないで固まってたり、
とても人間が書いたものとは思えない。

そこで、誰のモジュールか調べると・・・
えーーーー!!!
プロジェクトリーダーかよwww
793仕様書無しさん:2007/08/07(火) 12:02:26
某ツールでCOBOLからVBに変換かけた後のパスタソースよりましだと思う
794仕様書無しさん:2007/08/07(火) 12:02:43
整形ツールを使えば?
795仕様書無しさん:2007/08/07(火) 12:58:02
スパゲッティと言うよりむしろ固焼きソバ。
ほどこうとすると砕けます。
796仕様書無しさん:2007/08/07(火) 13:15:43
パスタにしよう。うん、パスタ。
797仕様書無しさん:2007/08/07(火) 14:22:38
十割そば。
触るとすぐにブツブツ切れます。
798仕様書無しさん:2007/08/07(火) 15:22:37
ネストがわけわかんないソース
799仕様書無しさん:2007/08/07(火) 15:25:23
>797
それはお前が本物の十割そばを食ってないからだ
800仕様書無しさん:2007/08/07(火) 16:09:05
まさに今>>792と同じような状況でソース見てる




延々と300行ぐらい続くdebugPrintを
どーすっかな、これ
つーか水増し?
801仕様書無しさん:2007/08/07(火) 16:40:39
水増し最悪だよな
NEC関連に行っていた時、リファクタリングでステップ数が減ったらば大問題になった
結局は理解してもらえずにぶち切れた開発陣は無駄コードを散りばめたというオチ
どうせ下請けのプロジェクトリーダーですよ、ゴミ屑以下だから説明する権利もない
802仕様書無しさん:2007/08/07(火) 17:42:00
問題になるほど減るか?

同じ開発チームで・・・



さいしょから水増しコードだったんじゃないのかと。



普通は作ってる途中はコードは少なめに作ると思うけど。

.net1.0で作ってたのをリファクタリングで2.0に変更したとかじゃあるまいし。
803仕様書無しさん:2007/08/07(火) 17:52:54
>>802
そうだよ、最初から水増しされていたわけだ。
コピペされていた部分をリファクタリングでまとめたら1/3程度にコンパクトになった

前任者は水増しして請求金額を多くしていたんじゃね、って感じ
俺のかかわったのは3年前くらいだあ、未だにNの見積もりって、ステップ数試算→人月計算なんだろうか・・・
804仕様書無しさん:2007/08/07(火) 20:07:28
水増し部分は散りばめないで、メイン部分と綺麗に切り離して読みやすさを保ってね♥

必要な関数()
{
 必要な動作数行
 水増し関数()
}

水増し関数()
{
 水増し数千行
}
805仕様書無しさん:2007/08/07(火) 21:20:11
ステップ数で見積もるから悪い
806仕様書無しさん:2007/08/07(火) 21:36:16
ステップ数ってアセンブリ言語全盛期の時代の言葉のような。
807仕様書無しさん:2007/08/07(火) 21:42:12
みんなステップ数が悪いのは知ってるんだけど、
コード量を定量的に評価できる代案出せないのが現状だな
こうやってずっと同じ愚痴を言い合うのがせいぜい(自嘲
808仕様書無しさん:2007/08/07(火) 21:43:20
一機能8万円でっていう企業がITProかどっかで紹介されてた。
809仕様書無しさん:2007/08/07(火) 21:44:00
>>800
マルチスレッドのタイミング取りかも知れないぞw
debug-print 類は大抵遅いからそのラグで別スレッドの処理が間に合ってしまうというヤツ
810仕様書無しさん:2007/08/07(火) 21:46:09
>>807
定量的に評価する価値があるもんとも思えないんだけどね
どれだけ複雑な処理を実装するかとソースの量は比例しないんだし

上(発注元含む)がそれを理解してはくれないんだがね…
811仕様書無しさん:2007/08/07(火) 21:58:27
>>810
良い代案が無いから、上もそれで諦めてくれているんだよ。
812仕様書無しさん:2007/08/07(火) 21:59:53
http://itpro.nikkeibp.co.jp/article/NEWS/20070719/277909/?L=rss
「SI業界の悪習,人月と訣別する」---スターロジックが1タスク8万円の“明朗会計”システム構築を開始
813仕様書無しさん:2007/08/07(火) 22:10:48
コピペ君って馬鹿だな、まで読んだ。
814仕様書無しさん:2007/08/07(火) 22:19:01
>>807
なんか、入力項目で何ポイント、出力項目で何ポイント、画面遷移数、
対応キーで何ポイントとか言うプログラムの工程見積もりのプランが
あったと思うが、それを洗い出して数値化する方が激しく面倒だった記憶がある。
815仕様書無しさん:2007/08/07(火) 22:24:16
>>814
ふぁんくしょんぽいんと法ってやつやね。
基本情報の試験で出たけど、現場ではとんとお目にかかった記憶がないww
816仕様書無しさん:2007/08/07(火) 22:24:49
ステップの見当はつくけど
水増ししてもメンテでつまらん手間が増えるだけで
馬鹿らしい。恥ずかしいし
817仕様書無しさん:2007/08/08(水) 10:37:50
水増ししてメンテどころか仕込まれまくられたら、目も当てられないんじゃないの?
818仕様書無しさん:2007/08/08(水) 18:48:02
さあ、抜き打ちコードレビューだ。
819仕様書無しさん:2007/08/08(水) 19:54:14
拒否しますw
820仕様書無しさん:2007/08/08(水) 20:12:34
しかし、第三者機関によるレビューって必要なんジャマイカ?と思う今日この頃
821仕様書無しさん:2007/08/08(水) 20:33:27
>>820
実現するにはあまりにも難しいし、誰もうれしくない。
822仕様書無しさん:2007/08/08(水) 20:43:19
>>821
客は嬉しいんじゃないか?
価格より質を重視する流れは多少なり出てきた
823仕様書無しさん:2007/08/08(水) 21:07:16
そこで全頭検査ですよ。お客さんも一緒になって。
824仕様書無しさん:2007/08/08(水) 21:57:26
客がコン猿みたいのを雇って、仕事の質をチェックさせればいいよ。
825仕様書無しさん:2007/08/08(水) 21:59:33
1次受けが大手なのが慣習
それをやると失礼に当たるんだな、美しい国では
826仕様書無しさん:2007/08/08(水) 22:01:49
>>807
最適化ありmake(ビルド?)後のバイナリサイズで計測するのはどーか。
827仕様書無しさん:2007/08/08(水) 23:44:06
>>826
巨大なビットマップをリソースに放り込まれたらどうする
828仕様書無しさん:2007/08/08(水) 23:54:50
>>826
ぼったくられる
でも、現状と大差はないwww
829仕様書無しさん:2007/08/09(木) 01:40:22
コード1行書くのに、考える時間も加えてコンマ何秒かはかかることを考えると
規模→掛かる時間の見積りに使うとこまではlocは言われるほどクソじゃない
(無論、それを足がかりにそれ以前の作業量まで逆算してなんぼだが)
問題は規模と掛かる時間が出たら即→人月→コスト、と導かれてしまうので
とにかくコードをやたらと書けばぼったくれる!! というアフォな発想まで導かれてしまうこと
830仕様書無しさん:2007/08/09(木) 01:53:12
そして、仕込まれまくる?
831仕様書無しさん:2007/08/09(木) 02:56:54
大雑把に 設計 + コーディング + テスト の活動を行うとして、
これに掛かる時間・コストがコーディングの生成物であるソースの「ステップ」数だけで計れると考えてる方がおかしい

とはいえ、コーディングに掛かる時間・コスト×3 なら妥当なのかもしれないが...
832仕様書無しさん:2007/08/09(木) 03:19:04
コードの質見れる人があんまりいないということなのでは?
833仕様書無しさん:2007/08/09(木) 03:49:46
たとえれば建築物の見積もりが使った釘の本数に比例するみたいなもんだろうか
釘を減らした新しい工法は評価されない
水増しのために要らない所に釘を打ちまくって強度が弱くなる
834仕様書無しさん:2007/08/09(木) 08:14:24
>>827
使われてなかったら最適化で消えんじゃね?
VCとか良くわかんないけど。

>>831
詳細設計書なんて普通納品しないし、成果物に対して金払う考え方はアリだと思う。
個人的にはそもそも人月で金決めること自体アヤシイ気がしてる。
現実とのギャップはデカいけどな・・・

実際のところ問題は、検収の時にロクにレビューしてないことだろ。
ピアレビューじゃなくて、発注先と元の間でのレビュー。
835仕様書無しさん:2007/08/09(木) 10:44:53
検収時にレビューされてももう遅い。
業界全体がウォーターフォールなんだから、最初のうちにつぶさないとダメ。
それに動けばとりあえずは役目は果たしてるから、
それ以上投資したくないって考え方の人間が多いだろ。
836仕様書無しさん:2007/08/09(木) 11:19:23
switch (pHoge) {
case 1:
  func1();  // 当たり前の処理1
  break;
case 2:
  func2();  // 当たり前の処理2
  break;
.
.
.
default:
  errfnc(); // ありとあらゆる想定の巨大な関数
  break;
}

で、errfuncがバイナリ全体の8割だったプロジェクトは知っている。
人間が操作してもdefaultに行き着く事は不可能だったよ。
論理上は必要だから最適化もかからない。
837仕様書無しさん:2007/08/09(木) 14:39:02
機能-->step数-->人月ってとこがウソなんだよ。
   -->step数-->極小化する努力-->step数-->それを書く人月 なら妥当だけど。
見積りじゃなくて、出来た結果を最適化してそのstep数しか払わない、とか決めれば
最初からシェイプアップしたもの作るようにならないかな?

>>833 「打った釘」じゃなくて、「運び込んだ釘」の量だな。「現場のどこかに埋めた釘の山」(w
838仕様書無しさん:2007/08/09(木) 15:11:33
どうやって最適化する?
コンパイル後のバイナリを逆コンパイル?w
839仕様書無しさん:2007/08/09(木) 16:27:01
最適化の意味が違ってるみたいだね。
840仕様書無しさん:2007/08/09(木) 16:49:11
コンパイラがやってくれるのは、サイズ/実行時間(パイプラインなんか絡むとややこしいけど)
このどちらかでしょ。 ソースコードの価値は、保守まで考えたら人間にとっての可読性で、
それには「簡潔さ」が大事と思うわけよ。 必ずしも短きゃいいというものではなくて、命名の
適切さとか、部分の配置とかあるだろうね。 でもたいていの場合、「短いほうが適切・かつ
読みやす」かった。 レビューの過程で「無駄に長くしている」を摘発するのでもいいんだけど。
今まで「自分だけ」以外のプロジェクトではその逆しか出会ったことない。
841仕様書無しさん:2007/08/09(木) 17:20:11
可読性
842仕様書無しさん:2007/08/09(木) 17:21:19
>>841の続き
求めると長くなるときがあるし、結構難しいような?
843仕様書無しさん:2007/08/09(木) 19:14:06
>>834
> 使われてなかったら最適化で消えんじゃね?

リソースコンパイラが最適化を行うという話は聞いたことが無い。
844仕様書無しさん:2007/08/09(木) 20:26:08
正直、人員の最適化から始めないとダメかも
845仕様書無しさん:2007/08/09(木) 20:37:38
客(仕様)を最適化しないと
846仕様書無しさん:2007/08/09(木) 20:53:02
無駄ソース抜くプリコンパイラ作ってくれ
847仕様書無しさん:2007/08/09(木) 21:40:57
ランダムに3分の1くらいで行数消せばいいんじゃね?
848仕様書無しさん:2007/08/09(木) 23:56:22
改行文字を消せばいいんじゃね?
849仕様書無しさん:2007/08/10(金) 00:04:01
可能な限りif文を3項演算子使うようにするツールでも作って
850仕様書無しさん:2007/08/10(金) 00:18:06
それなんて難読化w
851仕様書無しさん:2007/08/10(金) 11:46:29
三項演算子はいらない子
852仕様書無しさん:2007/08/10(金) 12:31:20
三項演算子と三原順子は似ている
853仕様書無しさん:2007/08/10(金) 12:46:10
三原順子と三色同順は似てない
854仕様書無しさん:2007/08/10(金) 12:54:02
三色ご飯食いたい
855仕様書無しさん:2007/08/10(金) 13:03:30
サンコンもいらない子
856仕様書無しさん:2007/08/10(金) 15:06:01
コンパイルすりゃif文も三項演算子も一緒
857仕様書無しさん:2007/08/10(金) 15:06:53
見易さがぜんぜん違うんだぜ?
858仕様書無しさん:2007/08/10(金) 16:36:02
場合によってはサンコンの方が
見やすく感じる時もある。
859仕様書無しさん:2007/08/10(金) 16:36:29
サンコン演算子って何か嫌だなw
860仕様書無しさん:2007/08/10(金) 17:17:40
if とは意味が違うからな
どちらかの値を設定するという意味を持つ式を書きたいなら

bool result;
if(hoge() == 0) {
  result = true;
} else {
  result = false;
}

より

result = (hoge() == 0) ? true : false;

の方が明確。
# この場合は result = (hoge() == 0); で充分だがそこは勘弁してくれ
861仕様書無しさん:2007/08/10(金) 17:27:26
言語によっては一緒の意味だがな
例えばRubyは↓で r に式1か式2が返る

r = if 条件式 then
  式1
else
  式2
end
862仕様書無しさん:2007/08/10(金) 17:48:35
出た!!
キ印言語
863仕様書無しさん:2007/08/10(金) 17:57:56
(set! r
   (if 条件式
     式1
     式2))
864仕様書無しさん:2007/08/10(金) 18:17:36
>>860
個人的には三項演算子には()付けて欲しい。

result = ( (hoge() == 0) ? true : false );

冗長なのは分かってるが、ホントに個人的な話ね。
865仕様書無しさん:2007/08/10(金) 18:24:27
>>864
俺漏れも
866仕様書無しさん:2007/08/10(金) 18:26:23
条件式には付けるけど...
867860:2007/08/10(金) 18:34:08
>>864-966
return(value); と return value; みたいな宗教戦争になりそうだな。
そういえばifの条件式の前後のスペースもそうだな。

個人的には見ての通りのスタイルだが他人が書いたソースの
その程度の違いなら全く気にしない
868仕様書無しさん:2007/08/10(金) 18:34:58
アンカーミスった…orz
869仕様書無しさん:2007/08/10(金) 18:37:35
ポップアップレス多すぎw
870仕様書無しさん:2007/08/10(金) 19:29:19
>>863
Lisp系列も普通のプログラマから見るとキ印なんだよな
カッコ対応がすぐに判るエディタを使わないと修正がし辛すぎる…
871仕様書無しさん:2007/08/10(金) 21:21:38
Lisperにとっては「括弧? そういえばそんなものもあったな」らしいな。
872仕様書無しさん:2007/08/10(金) 21:25:17
ウィスパーは関係あるの?
873仕様書無しさん:2007/08/10(金) 22:31:58
if文が値を返す言語の1つだから出てきたんだろ
874仕様書無しさん:2007/08/10(金) 22:50:19
pnutsもSQLもErlangもキモ言語か
875仕様書無しさん:2007/08/11(土) 00:41:09
寿司食いたいフフフフフフフフフフフフフフフフフフ
876仕様書無しさん:2007/08/11(土) 00:47:26
>>875
ガリでも食ってろ
あとちゃんと初期化しとけ
877仕様書無しさん:2007/08/11(土) 01:13:55
なんだこっちにも飛火かよw勘弁してくれフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
878仕様書無しさん:2007/08/11(土) 01:21:12
アガリの意味しってるか?
もうガリ一枚すら食えないって意味だぞ?
しらねーだろ?
879仕様書無しさん:2007/08/11(土) 01:24:02
A gari
880仕様書無しさん:2007/08/11(土) 01:25:10
食えなくなるまで食うってのは動物で人間くらいなもんって話を思い出した。
881仕様書無しさん:2007/08/11(土) 01:42:37
人間の三大欲望の一つだからな>食う事
繁殖以外でSEX(生殖行為)するのは人間と一部霊長類(ボノボ)だけだし。
睡眠は...よくわからん
882仕様書無しさん:2007/08/11(土) 01:46:42
睡眠はまだまだ未解明の部分が沢山あるんだよな
883仕様書無しさん:2007/08/11(土) 02:15:19
三大欲求と言いつつ
セックスはしなくても生きていける
884仕様書無しさん:2007/08/11(土) 02:21:31
おまいは生きていけても人間は生きていけなくなる
885仕様書無しさん:2007/08/11(土) 02:24:49
たしかに拷問として
・満足に眠らせない  ・・・ つらそう...
・満足に食べさせない ・・・ ひど!
・満足にSEXさせない ・・・ ちょw
て感じか。全然重みが違うなw
886仕様書無しさん:2007/08/11(土) 02:51:22
ソースではないが今日現地調整で
突然別の人のソースを勝手に修正しはじめたバカがいて、

「ちょwなにやってんすか!!?」
って聞いたら
「ちょっとiniファイルの設定かえたから」だって。
はぁ???

なんと彼はiniファイルの設定に強引に合わせるために、
ソースを修正しようとしていたらしい・・・


887仕様書無しさん:2007/08/11(土) 07:01:07
それ、iniファイルなくても動くんじゃない?・・・つーか、そいつ込みで納入しちゃいなよ
888仕様書無しさん:2007/08/11(土) 07:07:13
まだ可愛い。
自分のソースがコンパイル通らないから俺のヘッダーを勝手に直した馬鹿がいた。
はっきり覚えてないけどプロトタイプ宣言あたり。
当然、翌日俺のソースがコンパイル通らない。

人生で一番切れた日。
889仕様書無しさん:2007/08/11(土) 07:51:08
>>888
その程度なら可愛いもんじゃん。w
890仕様書無しさん:2007/08/11(土) 08:13:39
バックアップ取ってと頼んだら
取ってもらったバックアップが全て .lnk になっていた
891仕様書無しさん:2007/08/11(土) 08:17:18
いや、さすがにそれネタだよな…?
892仕様書無しさん:2007/08/11(土) 09:46:30
ローカルな配列名は、要素の型の複数形にする規約はアリだと思うんだ。
int ints[N]; とか char *strings[N]; とか。

でもな、配列(を指すポインタ)の配列はsを二つ重ねるのはやめてくれ。
ぱっと見て何のことかわからんかったorz


int *intses[N];
893仕様書無しさん:2007/08/11(土) 10:13:49
フォルティッシシシシシモ?
894仕様書無しさん:2007/08/11(土) 11:22:07
>>893
ffffffって強すぎやしないか?
895仕様書無しさん:2007/08/11(土) 11:59:43
>>894
チャイコフスキーにはよくあること
896仕様書無しさん:2007/08/11(土) 12:12:20
>>894
白は強いのか?
897890:2007/08/11(土) 12:32:13
>>891
ネタだと思うだろ?
実話なんだぜ、それ…
1KBのファイルが列んでてさぁ~っはっはっは…
はぁ…
898仕様書無しさん:2007/08/11(土) 12:37:57
>>892
適当な名前が思いつかなかったときの手抜きでそういうのを使うのは分かるけど、
規約で決められるとつらいもんがあるな。
899仕様書無しさん:2007/08/11(土) 18:16:48
ワロスメソッド
public void printasstarisk(int count){
 for(int i=0;i<=count;i++)
  System.out.print("*");
}
900仕様書無しさん:2007/08/11(土) 21:24:54
なんでstaticじゃないの
901仕様書無しさん:2007/08/11(土) 21:53:07
てゆか printasstarisk(3) てしたら四つ出力されるじゃん
てのが笑いどころだよね。たぶん。static もそうだけど。
902仕様書無しさん:2007/08/11(土) 23:17:38
標準出力のラッパクラスみたいなもののメソッドなら
static でなくてもそんなに違和感が有るわけではないなぁ

「System.out.print を沢山呼ぶな」か「1 つ多いよ」かの
どっちかが笑いどころかなぁ…

Java って前者を咎める慣習ある?
903仕様書無しさん:2007/08/11(土) 23:31:42
単純に
× printasstarisk
○ printasterisk
かも。
904仕様書無しさん:2007/08/11(土) 23:49:38
スペル間違いは結構見かけるなぁ
footer が hooter になってたり image が imege になってたり。
905仕様書無しさん:2007/08/11(土) 23:52:56
それで辞めたくなるの?
906仕様書無しさん:2007/08/11(土) 23:55:06
アセンブラのラベルでATTIとかKOTTIとか書いてるのを見たときはちょっとやめたくなったな。
ま、ゴミソースだから別にいいか。
907仕様書無しさん:2007/08/11(土) 23:59:21
angleがangelになってるのがあった。
908仕様書無しさん:2007/08/12(日) 00:06:30
それは何かステキだ
909仕様書無しさん:2007/08/12(日) 00:17:27
デスマで意識朦朧として天使が見えていたのかもしれん
910仕様書無しさん:2007/08/12(日) 00:37:55
hootersのねえちゃんはいいな。
911仕様書無しさん:2007/08/12(日) 00:40:45
スペルミスが多いソースはその他の部分もへぼい傾向はある
912仕様書無しさん:2007/08/12(日) 00:43:44
無理に英語にしようとして意図の違う単語使ってたり
913仕様書無しさん:2007/08/12(日) 00:47:22
とは言え、スペルミス程度で辞めていたらきりがない
914仕様書無しさん:2007/08/12(日) 00:48:12
スペルミス程度で辞めたくなるようじゃ会社勤めは無理だろうな
独立してやっていくしかないんじゃね?
915仕様書無しさん:2007/08/12(日) 01:08:56
日本人なら日本語を使え
916仕様書無しさん:2007/08/12(日) 01:09:30
そこでなでしこの登場ですか?
917仕様書無しさん:2007/08/12(日) 01:11:00
VBあたりの関数名・変数名に日本語が使える言語かも知れん
918仕様書無しさん:2007/08/12(日) 01:17:44
それいっちゃあjavaだって使えるんじゃね?
919仕様書無しさん:2007/08/12(日) 01:28:32
どっかのブログで、アルゴリズムを説明するのに、Rubyで日本語の識別子をつかって、
擬似言語風にコードを書いて、それがいい感じだったから、自分もためしにC#で日本語の
変数やらをつかってみたことあったけど、かえって読みにくいし、入力もムカつくくらいやりにくかったな。
もし日本語使うとしても、重要なところにしぼって使わないとダメだな。

920仕様書無しさん:2007/08/12(日) 01:58:13
俺はVBAでゴミコード書くときにたまに日本語つかう。
使うときは一応関数に限定して、関数名が長くなりそう、ややこしい機能、英単語がわからないとかって時に使ってる。
921仕様書無しさん:2007/08/12(日) 01:58:35
C#はUnicodeで定義されている空白文字なら
空白文字として使える優良言語。
922仕様書無しさん:2007/08/12(日) 02:24:55
>>921
よく C/C++ 初心者の質問で挙がる全角空白じゃエラーにならないってこと?
923仕様書無しさん:2007/08/12(日) 02:36:27
うん。ちなみにJavaだとエラー。
924仕様書無しさん:2007/08/12(日) 03:07:20
Unicodeが使えるなら必要な仕様だなあ
925仕様書無しさん:2007/08/12(日) 13:23:45
全角の演算子も使えるようにするべきじゃね?
∈ とか ≦ とか
926仕様書無しさん:2007/08/12(日) 13:54:21
UNICODE 的には「全角」とかいう概念無しにそいつらも「文字」(数学記号)だしな
927仕様書無しさん:2007/08/12(日) 15:06:59
あぁ、Unicodeを何か誤解して、全部全角でコーディングしたバカならいたな(遠い目
2バイト文字ってそういう意味じゃねーよw
928仕様書無しさん:2007/08/12(日) 16:29:03
それ全角英数字オンリーってこと?
どんだけww
929仕様書無しさん:2007/08/12(日) 17:51:31
半角カナと全角英数字は無くすべきだなw
930仕様書無しさん:2007/08/12(日) 18:53:42
UNICODEには、FULLWIDTH LATIN~とかHALFWIDTH KATAKANA~とかいう
グリフがあるよ。
残念でした。
931仕様書無しさん:2007/08/12(日) 19:17:23
そういう意味じゃねぇだろ?
932仕様書無しさん:2007/08/12(日) 20:09:25
unicodeの半角全角は、他の文字コードから変換したときに、情報が失われるのがまずいからだろ。
933仕様書無しさん:2007/08/12(日) 21:06:35
「互換性のために残しています」
934仕様書無しさん:2007/08/12(日) 21:24:06
互換性といえば、まず2036年2月6日6時28分15秒と2038年1月19日3時14分07秒を乗り切らなければ。

鬱になるよなー。今プログラム書いても30年後に正常に動く保障が無いんだもんなー。
最初から正常に動かないと言う指摘はスルー。
935仕様書無しさん:2007/08/12(日) 22:08:12
30年後は会社辞めてる予定なので自分が書いたプログラムがトラブろうがどうしようが知ったこっちゃない
936仕様書無しさん:2007/08/12(日) 22:33:24
今からでもtime_tは64bitにしとけばいいのにね。
937仕様書無しさん:2007/08/12(日) 23:08:25
たしかにな。
現在組んでいるソースで30年後が問題になるものなんてほぼないが、今から対応して
問題を無くしておくのがプログラマおよびリーダーの心得。
派遣・外注上等の業界には逆立ちしても無理だがな。
938仕様書無しさん:2007/08/13(月) 01:09:09
30年後かー。
俺の歳だと定年後なんで、その時には俺のコードなんかリプレースされてるだろ、
知ったこっちゃないという気になるよ。
2000年問題もこんな感じだったんかな。
939仕様書無しさん:2007/08/13(月) 01:16:45
さすがに今度はコボラーの出番もあるまいて
940仕様書無しさん:2007/08/13(月) 02:08:56
世界のあちこちで問題が起こっている中、問題が発生しなかったシステムの管理者が
ソースのコメントから名前を見つけて退職後の俺に粗品とともに感謝を伝えてくれないかな

…無いな。

>935 >938
まるっきり2000年問題の二の舞じゃないか?
941仕様書無しさん:2007/08/13(月) 02:16:22
Javaで組んでたらまず問題ない。
データベースも問題なし。

やっぱり抽象的な層をはさむ言語が有利。
942仕様書無しさん:2007/08/13(月) 02:25:00
永遠に壊れない自動車ができたら、自動車メーカーは潰れる。
道路の幅が数年おきに変わって、買い換えないといけなくなれば話は別だけど。
943仕様書無しさん:2007/08/13(月) 02:38:02
>>942
自動車はいくら設計や機構が完璧でも
いずれ材質が劣化して壊れるよ

たとえ話が下手すぎ
944仕様書無しさん:2007/08/13(月) 03:20:01
>>940
他の人から見れば2000年問題だろうが2038年問題だろうが、ノートラブルでクリアして当然なので
たとえMS-DOSで動いているシステムで2038年問題をクリアできていたとしても誰も感謝などしない。
945仕様書無しさん:2007/08/13(月) 03:45:57
逆に、2000年問題とか2038年問題を残しておいたほうが
後で対応していない→当時の人は?→対応してよ→お金いただきます。
でも期限付きで急ぎの仕事なので、高いですよ?仕事ゲット!でウマーかもしれないwww

>>940
逆に対応してなかったら、そいつ探し出してフルボッコとかありえるw
946仕様書無しさん:2007/08/13(月) 05:36:16
2079年問題も考えなきゃいけない俺たち平成生まれ


問題が発覚する頃にまだ生きてる可能性があるんだよorz
947仕様書無しさん:2007/08/13(月) 06:12:18
平成生まれがもう就職し始めてる事に今初めて気付いた
948仕様書無しさん:2007/08/13(月) 06:35:16
>>946
プログラマとしては生きてないけどな
949仕様書無しさん:2007/08/13(月) 07:04:57
>>948
そういやそうだ。
80歳とか余裕で死んでる年齢だ。

たとえばWindows98が発売から10年経っても使えるけど
既に完全互換のXPでNTFS使えば済むわけで。


問題は互換性のためのファイルシステムが使えなくなること。
デジカメとか組み込みのファイルシステムがFAT・・・
950仕様書無しさん:2007/08/13(月) 07:41:20
2079年問題なんて初めて聞いた。

お前らが死ぬ以前にFATが死んでるから問題にはならんだろ。
俺なんざ time_t が溢れるまで生きていられるかどうか....
951仕様書無しさん:2007/08/13(月) 09:29:11
自分が生きてないからどうなってもいいなんてのは考え方として良くないだろう
そんな事だから石油も枯渇するし大気も汚染されるんだ
売り切りでソースも二度と見なくていいし責任も問われない仕事だったら
後は野となれ山となれでやっつけ仕事をかましちまうのかおまえらは?

…するかもしれんw
952仕様書無しさん:2007/08/13(月) 09:45:35
>>950
VC8 (最近のgccもそうかな) の time_t があふれるまで生きていたら神
953仕様書無しさん:2007/08/13(月) 10:14:07
>>951
そりゃぁ「かましちまう」さ。そういうビジネスだろ。生産物に対して報酬を得るビジネスだよ。
生産者は生産物の産む利得とは切り離されているからな。
生産物の産む利得の一部でも入ってくるなら「死ぬまで面倒見ます」なのだけど。
954仕様書無しさん:2007/08/13(月) 20:07:56
gccはまだじゃないかな?
両対応させる関係で結局VC8にも_USE_32BIT_TIME_Tつけたが。
955仕様書無しさん:2007/08/13(月) 20:49:00
time.h で typedef __time_t time_t;
bits/types.h で typedef __TIME_T_TYPE __time_t;
bits/typesizes.h で #define __TIME_T_TYPE __SLONGWORD_TYPE
bits/types.h で #define __SLONGWORD_TYPE long int
結局のところ、
typedef long int time_t;
なんだな。

正直、適当言ってスマンカッタ。
956仕様書無しさん:2007/08/13(月) 21:52:20
しかし、time_tとか typedef されているものって、
そういう将来的な変更に対応しやすくするためのものなんじゃないの?
だとすれば、一般的なプログラマはそれほど大げさな対応はいらないんじゃないかな。
。。。甘い?
957仕様書無しさん:2007/08/13(月) 21:59:41
time_t hoge=time(NULL);
fwrite( &hoge, 1, sizeof(hoge), fp ); //アーッ
958仕様書無しさん:2007/08/13(月) 23:28:05
ぬるぽ
959仕様書無しさん:2007/08/13(月) 23:38:16
ガッ!
960仕様書無しさん:2007/08/13(月) 23:42:24
*((char*)0)=1;
961仕様書無しさん:2007/08/13(月) 23:47:29
Access Violation... はいいんだが、
>>957のソースって何か起きるか?
第2,3引数が逆なのが気にはなるが。
962仕様書無しさん:2007/08/13(月) 23:50:16
time_tのサイズが変わったらファイルに互換性がなくなる
ということだろうて
963仕様書無しさん:2007/08/14(火) 00:03:15
>Access Violation... はいいんだが、
って何の話?

>第2,3引数が逆なのが気にはなるが。
fwriteには、常にバイト数で書き込んだ値を返して欲しいから、
第二引数は常に1にしてる。
964仕様書無しさん:2007/08/14(火) 00:13:23
生のtime_tで保存はやっちゃった刑だよね。
現実としてはYYYYMMDDとか、time_tでもテキストだろ。

俺はそう信じて盲進するよ。
965仕様書無しさん:2007/08/14(火) 00:26:21
2000年問題で先送りにしちゃった系の問題のが深刻だろうな
30年あたりを境にして1900年代と2000年代を切り分けるような対処した奴、手を上げろw
966仕様書無しさん:2007/08/14(火) 00:38:13
現在の年に近い方でも選択すべきだった?
967仕様書無しさん:2007/08/14(火) 01:01:34

年金問題スレでは0を入力すれば西暦で1を入力すれば和暦なのは当たり前で、そうしないのはクズなんだってさ。
968仕様書無しさん:2007/08/14(火) 01:30:18
□年 □月 □日

969仕様書無しさん:2007/08/14(火) 02:27:25
30年先にもまだWindowsがあると思ってるバカ。
その前に5年でリースが切れるから心配ないよ。
970仕様書無しさん:2007/08/14(火) 04:02:21
>>965
何その手抜き仕様
971仕様書無しさん:2007/08/14(火) 05:32:43
組み込みでは数十年にわたって使われ続けているシステムなんてザラにあるが
Windowsでも無くはないんじゃないかね
MSのサポートも開発環境も満足に残ってないだろうから改修大変
完全リプレースだとしても元のソースがわからず大変
972仕様書無しさん:2007/08/14(火) 07:00:08
>>969
MSが嫌いのはよく分かったから、少し落ち着こうな。
Windowsも使われている組み込み機器は数十年使われる事もあるんだよ。
自分の常識に合わない人をいきなりバカ呼ばわりすると後で恥をかく事があるから今度から気をつけような。
973仕様書無しさん:2007/08/14(火) 10:10:57
time_t 問題はそもそも OS の設計の問題という気がするんだが、
time_t を操作するアプリの見通しの甘さは責められても
OS を責める声は少ないのな
みんな、OS に関してはあきらめてるのか?
974仕様書無しさん:2007/08/14(火) 10:55:17
time_tで十分なサイズを取るのと引き替えに
ファイル名か拡張子が短くなってもいいのか、
それとも微妙に大きいディレクトリエントリ使ってファイルアクセスのたびに割り算・・・

975仕様書無しさん:2007/08/14(火) 11:16:28
未だ動いている(らしい)MS-DOSの業務アプリ作ったヤツも、
そんなに長く使われているとは思っていなかっただろうな。

その時代とは違って、今は一般にも普及してしまったから、
MSもそう簡単にWindowsは切り捨てられないし、
切り捨てたとしても資産が膨大だから、
ReactOS みたいなのが使われるかもしれないし。
30年後どうなっているかはわからないけど、考えておくのは
悪いことじゃない。

そもそも、IA-32やAMD64(Intel64)アーキテクチャがどうなっているかもわからんがな。
976仕様書無しさん:2007/08/14(火) 13:53:07
ウィンドァウズ ブィストァ
977仕様書無しさん:2007/08/14(火) 14:50:14
time_t問題って、30年後だろ?
その頃は引退してるから、どうでもいいやw

原子炉とか、生命にかかわるシステム開発してる奴だけは、注意しとけよ
978仕様書無しさん:2007/08/14(火) 14:59:35
生命にかかわるシステム開発してるけど、周りにはそんな
危機感全く無し
979仕様書無しさん:2007/08/14(火) 15:02:14
一応WindowsならFILETIMEは64ビットだからよゆー。
プログラムの修正も不要。

問題はFAT32のファイル時刻の拡張・・・
FAT32で長いファイル名に対応し、ファイル作成日時と更新日時が保存できるようになってるけど、
サイズの変更は、互換性の意味からもないのかも。
980仕様書無しさん:2007/08/14(火) 15:11:34
>>965
普通70年を境にするだろw

それより、消費税を固定で5%と組み込んでしまった俺・・・
time_tより、近い問題な気が・・・
981仕様書無しさん:2007/08/14(火) 15:21:14
64-bitでも怖いから128-bitにしておこうぜ
982仕様書無しさん:2007/08/14(火) 16:25:13
西暦2922億年に人類が居るとは思えないな
983仕様書無しさん:2007/08/14(火) 17:06:28
脱線が過ぎないか
984仕様書無しさん:2007/08/14(火) 19:08:45
人類の後継者がお前を呪うかもしれないぞ
985仕様書無しさん:2007/08/14(火) 20:54:09
消費税登録部分がモジュール化されていたのに
計算部分で*1.05とかあるでやんの
氏ねよ役立たず害虫
986仕様書無しさん:2007/08/14(火) 21:23:10
それは死んだ方がいいな
987仕様書無しさん:2007/08/14(火) 21:54:39
>>980
コードを守るためにも是非消費税増税に反対してくれ。
(減税にも反対な)
988仕様書無しさん:2007/08/14(火) 21:56:11
ちなみに漏れは元号が変わらないことを切に願っている
989仕様書無しさん:2007/08/14(火) 23:02:11
いまだに内部は昭和で動いてるシステムもありそうだなあ
990仕様書無しさん:2007/08/14(火) 23:16:28
消費税って率をマクロその他にでもすりゃいいのかな・・・
でも単にパーセンテージが一律変わるのみ、とは限らないのでやはり計算部自体を隔離すべきか
991仕様書無しさん:2007/08/14(火) 23:20:42
消費税計算部だけDLL化
992仕様書無しさん:2007/08/14(火) 23:25:24
前いた会社では消費税は、適用年月日と税率をあわせて外部ファイルにおいてあった。
...でも実際のプログラムには1.05と...orz
993仕様書無しさん:2007/08/14(火) 23:32:10
消費税は今後品目別税率が導入されて、業務によってはもろに影響受けるだろうから、外出ししといた方がいいかもね。
994仕様書無しさん:2007/08/14(火) 23:33:45
データベースに元号に関するデータが入っていたんだが、変更しても反映されない。
おかしいと思って調べてみたら、JSPに直書きされてた

見なかった事にした
995仕様書無しさん:2007/08/14(火) 23:35:06
しかし考え方を変えれば問題が起こるその日まで問題なく動いているんだから,
工業的見地からすればポリシーとか美的感覚の問題だと考えられなくもないんじゃない?

形あるものはいつかは壊れるのだと日本人なら誰でも悟っているんだから,
ハードウェアとソフトウェアの区別がつかない相手ならばそれが理不尽なことであることを意識しないんじゃない?
996仕様書無しさん:2007/08/14(火) 23:35:22
ユーザーが設定できるように…ってのも無理があるか
税率の変更だけならともかく品目や価格で差別化されたらソースをいじらざるを得ないだろうな
997仕様書無しさん:2007/08/14(火) 23:38:12
>>995
>形あるものはいつかは壊れるのだと日本人なら誰でも悟っているんだから,
>ハードウェアとソフトウェアの区別がつかない相手ならばそれが理不尽なことであることを意識しないんじゃない?

システムに関してはなぜか無謬性を求めるユーザがあまりに多いように感じるのは俺だけ…?
998仕様書無しさん:2007/08/14(火) 23:40:43
>>995
そりゃそうだが、同時多発テロみたく発生したらたまらんよ
999仕様書無しさん:2007/08/14(火) 23:44:32
つーかもうスレ終わりじゃないか
1000仕様書無しさん:2007/08/14(火) 23:49:31
この会社辞めようと思ったソースコード#18
http://pc11.2ch.net/test/read.cgi/prog/1187102925/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。