07/07/06 14:42:11
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
をつらつらと綴っていって頂戴。
ちなみにここは質問スレじゃないので
技術的な質問がしたいならム板 URLリンク(pc11.2ch.net) に逝って。
前スレ
この会社辞めようと思ったソースコード#16
スレリンク(prog板)
2:仕様書無しさん
07/07/06 15:27:05
>>1乙である
3:仕様書無しさん
07/07/06 15:35:51
goto >>1;
4:仕様書無しさん
07/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:仕様書無しさん
07/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:仕様書無しさん
07/07/06 23:01:29
throw new NullReferenceException;
7:仕様書無しさん
07/07/06 23:28:18
if ( i < 8 ){
~
} else if( i < 19 ){
~
} else {
~
}
っつーコードを今日見た。
8:仕様書無しさん
07/07/06 23:43:08
定数直書きしてる以外は、まぁアリかなと思ってしまった。
9:仕様書無しさん
07/07/06 23:43:31
>>7
ん?
10:仕様書無しさん
07/07/06 23:57:35
>>7
どこら辺がだめなん?
11:仕様書無しさん
07/07/07 00:04:49
else ifで8以上という条件が入ってないのがいやなのかね。
それはelseが含意してるからなくても問題ないよな。
12:仕様書無しさん
07/07/07 00:28:02
マジックナンバーがいやなんじゃない?
13:仕様書無しさん
07/07/07 00:29:16
別に会社辞めようと思うほどではないな
14:仕様書無しさん
07/07/07 01:22:14
かといって、「辞めようと思ったほどではないが嫌になったソースを晒せ」スレを
わざわざ立てるまでもないような。
15:仕様書無しさん
07/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
07/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:仕様書無しさん
07/07/07 02:23:21
optionで配列開始番号固定すれば良いのに。
18:仕様書無しさん
07/07/07 02:25:28
>>16
おまえのソースで辞めたくなったヤツ多そうだな。
19:仕様書無しさん
07/07/07 02:28:16
>>17
>>18
書いておくけど
Dim Data1(1 to 6) As Integer
の部分は前スレ998をコピーしただけだから。
20:仕様書無しさん
07/07/07 02:29:48
while(rs.next())
{
~~
break;
}
を見て嫌になった。本人に↓と同じ意味だよね?と確認しつつ直した。
if(rs.next()){
21:仕様書無しさん
07/07/07 03:01:48
>>20
何か問題でも?
22:仕様書無しさん
07/07/07 03:10:39
>>21
詳しく書かなかったから伝わらなかったかな。
while(rs.next())
{
System.out.println("hoge");
break;
}
って書けばわかるかな。
23:仕様書無しさん
07/07/07 03:16:32
あー、無条件にbreakしてるのか
24:仕様書無しさん
07/07/07 03:23:34
>>23
そうそう!そうなの。そういえば更に思い出したんだけど、こんな感じだったなあ↓
while(rs.next()){
if(cond)
{
// some statement
}
break;
}
もちろんif(rs.next() && cond)に書き直した。
VB6とかやってる人間は、if(cond1 && cond2)の中身が
&&とか関係なく全て評価されると思っちゃうから、
二重if文とかを書く傾向があるように見える。
25:仕様書無しさん
07/07/07 03:23:35
breakとcontinueは好きな奴はホント好きだよなあ
26:仕様書無しさん
07/07/07 03:34:14
>>25
思考が構造化されてないんだよ
27:仕様書無しさん
07/07/07 04:48:50
while(1){
if ( hogehoge ){
28:仕様書無しさん
07/07/07 04:50:00
書きこんじったorz
while(1){
a++;
if ( hogehoge[a] )
{
b++;
continue;
}
break;
}
29:仕様書無しさん
07/07/07 05:10:30
>>24
実はその while は中で break や continue を使ってジャンプするためのもので、
そしてさらに実は別のループ文に含まれていて、内側の while を if に置き換えると
それまで配置されていた break や continue が外側のループに適用されるように
っていう悪夢が頭の中をよぎった。
30:仕様書無しさん
07/07/07 05:38:34
>>28
文字数のカウント?
どこから教えるべきか悩むな
31:仕様書無しさん
07/07/07 05:39:08
>>15
どの言語でも何故か
for {
case
}
が好きな奴いるよな。何故だろ
32:仕様書無しさん
07/07/07 09:18:30
if(なんか条件) {
}
なにも実行しないんですか?
気になって眠れません><
33:仕様書無しさん
07/07/07 10:35:50
>>32
その「なんか条件」の式は副作用を持っているのかなあ。
それとも将来その中に何かを書きこむのが100%確実だからそう書いているのかな?
気になって(ry
34:仕様書無しさん
07/07/07 12:12:43
>>32
その条件のときは何も処理しないということを明示するために敢えてそういう風に書くことはあるけど
グダグダ陰口叩かれないように今度からコメントを書いておくか
35:仕様書無しさん
07/07/07 12:37:39
>>34
if (条件) { 空 } else { 何かする } ならまだわかるけど(条件逆転しろとは思う)、
上から下に流れるだけの状況でelseもなくif (条件) { 空 } と書く理由はよく
わからんな。
36:仕様書無しさん
07/07/07 13:11:54
空の関数DoNothing()を入れとくとか。
37:仕様書無しさん
07/07/07 13:14:28
>>35
たしかに
if(条件){
空っぽ
}else{
処理
}
はあるけど
if(条件){
空っぽ
}
はないな
失礼した。
38:仕様書無しさん
07/07/07 14:11:20
if (a = 0) {
}
39:仕様書無しさん
07/07/07 14:56:37
削るとバグが出るって奴か。
40:仕様書無しさん
07/07/07 15:24:23
>>32
条件のところが関数とかメソッドを呼んでいるならば怖いね
条件式というか関数実行後の副作用がありえるし、エラーコード判定の名残の可能性がある・・・
例外使えないような連中とJavaとかやるとよく出くわすコードかも
41:仕様書無しさん
07/07/07 15:30:07
>>40
中途半端に使えると、
} catch( Exception e ){
}
と書いて揉み消してくれるので、余計タチ悪い。w
何度出くわしたことか。orz
42:仕様書無しさん
07/07/07 15:47:04
>7
昔DOSプログラマだったころ、MSC6でそれ書いてはめられたことがある。
オプティマイザが順番を入れ替えやがって、>7のコードでいえばi < 8のときも
else if (i < 19)の部分が先に評価されて条件が成立してしまうという…。
そのときは#pragmaで部分的にオプティマイザを切ったけど、それ以来
冗長でもelse if ((i >= 8) && (i < 19))と書くようにしてた。
43:仕様書無しさん
07/07/07 16:35:07
>41
それは中途半端に使えるというレベルでもないw
44:仕様書無しさん
07/07/07 21:05:11
>>42
初歩的な言語仕様から外れてるんだから
それはコンパイラのバグだと思うが。
45:仕様書無しさん
07/07/07 21:05:22
>>42
それはオプチマイザのバグだろ・・・
46:仕様書無しさん
07/07/07 21:08:52
♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪
♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪
♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪
♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪
♪~キチガイの国~アメリカ~銃乱射~豚32匹死亡~いいザマだ~♪
47:仕様書無しさん
07/07/07 21:17:10
>>38
誰を騙そうとしてんだよw
48:仕様書無しさん
07/07/07 21:39:55
>>45
最適化もコンパイラの一部だろ
49:仕様書無しさん
07/07/07 21:42:27
>>45は>>42へのレス
50:仕様書無しさん
07/07/07 21:48:54
それは見ればわかるよ
51:仕様書無しさん
07/07/07 21:50:48
if((((式1)&&(式2)) || ((式3)||(式4)) && ((式5)||(式6))){
--意味不明なスパゲッティが数十行--
}else if(--眩暈がするたくさんの式--){
--以下略--
}
せめてコメント付けておいてください…
52:42
07/07/07 21:53:07
いや、当然コンパイラのバグだよ。だからといってそのコンパイラを使うのをやめるわけには
そう簡単にはいかないから、防御的プログラミングをしたっていう話で。
53:仕様書無しさん
07/07/07 22:11:27
>>42
コンパイラの不具合にあわせて防御的プログラムをしたのはいいと思うよ。
でもね、このスレは会社をやめようと思ったソースコードなんだよ。
そのソースコードで会社を辞めようと思ったのか?
54:仕様書無しさん
07/07/07 22:23:42
コンパイラのバグをどうにもせず、防御的コーディングのみで
対応するような会社だったら辞めたくなるな。
まぁ、製品によっちゃどうしようも無いこともあるだろうけど。
そうだとしたら、間違って最適化された箇所を早期に
発見してくれるツールなり何かが欲しくなってくるな。
55:仕様書無しさん
07/07/07 22:25:39
コメントも無い
変更履歴も無い
あるのはコピーライトだけ
56:仕様書無しさん
07/07/07 22:28:24
>>54
テストをちゃんとすれば気づくだろ。
テスト時は最適化せずに、リリース時だけ最適化してコンパイルする奴ならむしろ辞めてほしい
57:仕様書無しさん
07/07/07 22:38:42
>>51
どうせ正解はこんな感じ。
if((((式1)&&(式2)) || ((式3)||(式4)) && ((式5)||(式6))){ //もし今年が閏年なら
--意味不明なスパゲッティが数十行--
}else if(--眩暈がするたくさんの式--){
--以下略--
}
58:仕様書無しさん
07/07/07 22:42:58
一番辞めようと思ったというか辞めたのはアプリケーションを改修のために引き継ぐ事になった時の話だ。
外注に作らせていて炎上したらしく、酷いことはまあ予想していた。
だが、本気で辞めようと思ったのはその時が最後だ。
ソ ー ス コ ー ド が 存 在 し な い
59:仕様書無しさん
07/07/07 22:46:25
>>58
逆アセンブルでGO!
60:仕様書無しさん
07/07/07 23:00:21
>>58
うちのプロジェクトではよくあることだ
10年勤めて2回はソースコードがまったく存在せず、
2回は偽物またはバージョン違い(つかそもそもコンパイルエラーが出る)のソースコードが提供された。
もちろん仕様書つきのプロジェクトなどお目にかかったこともない。
61:仕様書無しさん
07/07/07 23:03:12
>>58
ソースコードがないのも、ソースコードのバージョン管理ができていないのも
経験したけど、
ど っ ち も 嫌 だ !
>>59
最初から組み直したほうが早いこともあるかも……。
俺が経験したのは、マシンごとバイナリが失われて、ソースコードも無くて、
あったのはインタフェース仕様書だけという、かなりアレな状況だったけど。www
62:仕様書無しさん
07/07/07 23:05:53
>>60
>コンパイルエラーが出る
さすがに都市伝説かと思ってたけど、本当にあるんだな。w
63:仕様書無しさん
07/07/07 23:15:19
>コンパイルエラーが出る
VisualStudioの古いバージョンで作ったのを
新しいバージョンでコンパイルしようとすると
コンパイルエラーはしょっちゅうでる
64:仕様書無しさん
07/07/07 23:18:43
>>60
そんなプロジェクトにしか回されないお前って一体・・・
65:仕様書無しさん
07/07/07 23:19:12
ソースコードないのはないので好きだけどな。
1年ぐらい時間くれるし。ないならしかたないよねって感じで
今時年契約で5000万とかうますぎるし
66:仕様書無しさん
07/07/07 23:21:37
コメントアウトされたコードあるのは全て糞
消せよ読みにくいんだよ
67:仕様書無しさん
07/07/07 23:23:57
>>66
NEC様のご命令で消せません><
68:仕様書無しさん
07/07/07 23:24:41
結構変更履歴として残させるとこ多いね。
ローテクな感じでかわいそう。
69:仕様書無しさん
07/07/07 23:33:30
>>66
お前が消せよ
70:仕様書無しさん
07/07/07 23:43:54
>64
でもそんなプロジェクトこそ実力と経験は必要だよな
全然報われないだろうけどw
71:仕様書無しさん
07/07/07 23:45:54
>>68
コードの90%近くを書き直してコメント率が70%位行った時は、さすがにorzってなったな。
72:仕様書無しさん
07/07/07 23:47:57
コメント率って何?
ソースコード中のコメントの量?
73:仕様書無しさん
07/07/08 00:17:26
そうだよ
74:仕様書無しさん
07/07/08 00:20:19
もしくは各行に対してコメントの記述してある割合
// 変数i の宣言
int i ;
// 変数i に0を代入
i = 0;
とか死にたくなるくらいくどいソースは見たことある
肝心なi が何に使用されているかは記述されていないんだがなw
75:仕様書無しさん
07/07/08 00:43:16
>74くらいのコメントなら自動生成できるなw
そんな機能絶対いらないけどw
76:仕様書無しさん
07/07/08 01:00:55
>>74を短くしてみた。
// int i;
int i;
// i = 0;
i = 0
77:仕様書無しさん
07/07/08 02:36:11
// もし a と b が等しいなら
if(a==b){
// c に func() の戻り値を代入
c = func();
// それ以外なら
}else{
// 何もしない
}
..._| ̄|○
78:仕様書無しさん
07/07/08 02:46:53
>>77
小学校の卒業式を思い出した
79:仕様書無しさん
07/07/08 04:09:29
まともなコメントは最後のだけか
80:仕様書無しさん
07/07/08 04:38:53
>79
最後はコメント以前にelse{}自体が要らない…
81:仕様書無しさん
07/07/08 04:44:45
いらないけど、会社で書くことが決まってるかもよ?
うちはdefaultは書く決まりになってるし。
82:仕様書無しさん
07/07/08 05:09:37
width を本気で ワイズと全員が言っていた時。。。
83:仕様書無しさん
07/07/08 05:12:09
スレ違い
変な読み方スレへお帰りください
84:仕様書無しさん
07/07/08 06:15:04
>>82
ワイドって読んでたけど、本当はなんなの?
85:仕様書無しさん
07/07/08 06:31:05
>>84
辞書引け
86:仕様書無しさん
07/07/08 06:34:11
辞書を引いてみたが、ウィドスと読むのかな?
発音記号はこんな感じだった → widθ
87:仕様書無しさん
07/07/08 06:49:15
え、俺はずっとwithと同じ発音だと思ってた・・・やべぇw
88:仕様書無しさん
07/07/08 11:27:34
Javaで一時的に2MBほどのbyte配列を確保しなければならなかったと言うことがある。
簡単なアップロードモジュールなんだが、実装をさせてみた所、単体テストでOutOfMemoryが炸裂。
嫌な予感がしたのでソースを追ってみた。
byte[][][] fileDate = new byte[2][1024][1024];
協力会社からきた30台Java経験3年の奴だったんだが、Fizz-Buzzやらせて辞めさせた
89:仕様書無しさん
07/07/08 11:31:31
>>88
それでいいんじゃねーのw?それで2MBって思えばさw
90:仕様書無しさん
07/07/08 11:48:07
何か見落としていたらすまんが>>88の何が悪いのかわからん
91:仕様書無しさん
07/07/08 11:52:56
>>88
分かりやすくていいじゃんw
92:仕様書無しさん
07/07/08 11:57:15
>90
オレも分からなかった
Javaの多次元配列だとなにかあるのか?
93:仕様書無しさん
07/07/08 12:00:54
>>90
参照するたびにオフセットから3つのインデックスを算出しないといけないのはナンセンスだな。
94:90
07/07/08 12:04:39
>>93
JVMの仕様はオブジェクトの構造を定めていないから実装依存だと思うんだが。
というか何がわからんかって、>>88のコードでOutOfMemoryが炸裂する理由がわからん。
配列アクセスで参照を辿るという「普通の実装」で考えても
byte[1024][1024][2]ならタコだがbyte[2][1024][1024]なら問題ないと思うが。
95:88
07/07/08 12:07:57
訂正
byte[][][] fileDate = new byte[1024][1024][1024];
96:仕様書無しさん
07/07/08 12:10:26
>>95
ちょww
97:93
07/07/08 12:15:31
4GB積んだ企業向けシステムなら問題なしw
98:仕様書無しさん
07/07/08 12:18:03
>>88
つまり、その最初の2つのインデックスしか使用してないわけだなw
>>97
JVMって4GBもヒープとれたっけ?
99:仕様書無しさん
07/07/08 12:21:27
>>93
それに関しては多次元配列にする方が効率が良かったりする
new byte[2*1024*1024] だと2MBの連続した領域がヒープに確保される筈
だけど、new byte[2][1024][1024]だと1KBの連続した領域がバラバラに確保されて参照されるんで、OutOfMemoryが発生しにくい
最近の実装が最適化でもするならばスマソ
100:仕様書無しさん
07/07/08 12:21:56
88は、仕事でもタコミスを連発していることだろうな
101:90
07/07/08 12:33:40
>>99
あまり詳しくないがGCがコンパクションくらいするのでは?
そもそも2MBの配列をローカルで使い捨てするようなプログラムなら
そっちの方が問題が大きい気もするが。
そもそも「2MBの配列」を
byte[2 * 1024 * 1024]で取るかbyte[2][1024][1024]で取るかというのは、
性能よりも何よりも、まずはその配列の意味を考えて決めるのが正しい姿勢だと思うが
102:仕様書無しさん
07/07/08 13:20:04
ファイルのアップロードという話だから
new byte[2*1024*1024]のほうがストリームと
つなげやすくていいんじゃないだろうか
それはそうと、「fileDate」に誰もつっこんでないんだな
103:仕様書無しさん
07/07/08 13:25:00
>>102
よくあるスペルミスだし、辞めるほどじゃないから
104:仕様書無しさん
07/07/08 13:37:46
JavaだったらNIOのDirectByteBufferとか使うんじゃね?
105:仕様書無しさん
07/07/08 13:44:40
>>99
OSによるだろうが仮想メモリ空間が提供されている以上は
メモリに空きさえあればOutOfMemoryの発生頻度は同じ
106:仕様書無しさん
07/07/08 14:13:52
>95
おいおい, 全然意味合いが違うじゃないかw
>102
byte型に独自フォーマットで日付の何かを入れてるんだと解釈していた
107:仕様書無しさん
07/07/08 15:32:14
32bitフラットメモリモデルでは、たとえば、
DLLのコード部分も同じ4GBの空間に読まれるので、
そこで仮想メモリ空間が分断化されることは多々ある。
108:仕様書無しさん
07/07/08 20:27:13
ソースコードじゃないが
仕様書のタイトルを♪で囲ってた時・・
♪○○○○システム♪
109:仕様書無しさん
07/07/08 20:56:23
>>107
なに適当言ってるの?
110:仕様書無しさん
07/07/08 22:22:40
いいか、みんな
(゚д゚ )
(| y |)
安部政権になれば「いい国」になると信じてたのに、
いつまでたっても苦しいままだ。
それどころか、ますます国じゅうが狂ってきて、
日本人同士が憎しみ合うようになっている。
美しい ( ゚д゚) 国
\/| y |\/
ひらがなにして
( ゚д゚) う つ く し い く に
(\/\/
逆から読むと…
( ゚д゚) 憎 い し 苦 痛
(\/\/
そういうことだったんだ。
111:仕様書無しさん
07/07/08 23:32:49
>74
今追ってるソースがさー
' SQL文を作成
(コード略。まぁベタベタに文字列連結してると思いねぇ)
' レコードセットオープン
(コード略。単にOpenメソッド呼んでるだけだが)
' フェッチループ
(コード略。毎度おなじみ、Do Until .EOF~.MoveNext~Loopだ)
もうDB読みに行くたびにこればっか。下の二つのコメントいらんから何がしたいのかを書けよと > 書いた香具師
明日もまた最初の「SQL文~」のとこに「何を照会するのか」書き足す作業がはじまるお……
112:仕様書無しさん
07/07/08 23:33:09
>>110
死ね
113:仕様書無しさん
07/07/08 23:38:52
>109
何、どの辺りが適当なわけ?
114:仕様書無しさん
07/07/08 23:39:54
書かなくとも解るコメントって本当に邪魔だよな
そんな時に限って重要なコメント(目的とか制限とか)が記述されていない
115:仕様書無しさん
07/07/09 06:19:47
「コメントは全行に書け」という規則があったので、コーディング用紙の右側に全部
/* */
を書いた奴を大量コピーして使用。そのままパンチに出したから、隙間の所も全て
空のコメント行になってた。しかも肝心のコメント文はカタコト(w
116:仕様書無しさん
07/07/09 14:21:50
>そのままパンチに出したから、
50年くらい前かな?
117:仕様書無しさん
07/07/09 16:21:34
>>116
おいおい、25年くらい前まではあったぞ。
118:仕様書無しさん
07/07/09 17:26:27
確かに、紙カードを最後に使ったのは、25年前だなぁ
119:仕様書無しさん
07/07/09 17:43:30
ちょwwww
お前らいったい何歳なんだ?
俺29なんだが・・・
ps.別スレに誤爆して欝なおいら
120:仕様書無しさん
07/07/09 18:39:25
そんないい歳こいたオッサンが昼間から2chかいいご身分ですな。
しかし、五十路ニートってしゃれにならんなw
121:仕様書無しさん
07/07/09 19:06:56
マ板で昼間からとか
122:118
07/07/09 19:11:01
いや、もう引退しているから。
暇で暇で仕方がないんです。
いいご身分でしょorz
123:仕様書無しさん
07/07/09 19:30:43
>>122
それはそれで、先派内がうらやましい気がする
124:仕様書無しさん
07/07/09 20:15:17
>>123
長くても20年短ければ明日だもんな
125:117
07/07/09 21:20:37
悪ぃ、俺職場から書いてる。
126:仕様書無しさん
07/07/10 01:42:34
>>122
なんかおもろいソフトつくってよ
127:仕様書無しさん
07/07/10 05:42:04
ベタだけど、フィボナッチ数列の一般項を求めるプログラムで再帰で書く奴はどうかと思った。その子は情報系。あ、大学での話ね。
128:仕様書無しさん
07/07/10 06:14:22
>>74 >>111 そんなバカなことがあるもんか。
129:仕様書無しさん
07/07/10 07:00:49
>128
それが実際いるんだな。
「各処理が何をしているのか分かるよう、コメントを書くべき」
ということだけ知ってて
実際何を書くべきなのか全く分かっていない奴
コードを直訳しろとは誰も言ってないだろっちゅーに…
130:仕様書無しさん
07/07/10 07:08:23
' 結果をRetに格納
Ret = MsgBox(ry
' もしRetが6なら
If Ret = 6 Then
' Aに1を格納
A = 1
VBじゃもはや見飽きたコメントだな。
せめて【Retが「はい」なら】と書け…
って言うかそれ以前に定数使えよと思うけど。
しかもAに1を入れる意味が何なのか書いてない。
131:仕様書無しさん
07/07/10 07:23:12
ようはアレだろ、コメントはコードを日本語化したものを書くのじゃなく、そのコードはどういう意図なのかを書けってことだろ。
コメントは他の人にも分かるよう、コードの意味を書くのですよとか言うのを言葉どおりに受け取ってるんじゃない?
132:115
07/07/10 08:49:54
>>115が30年ぐらい前だったかな。 俺は今59だけどクミコで現役です。
小ぶりのシステム新築お任せがよく来ます。
133:仕様書無しさん
07/07/10 10:19:08
まあ入門書丸覚えが精一杯、てなレベルの人々が多いんだろう。
入門書に書いてある、コードの直訳としてのコメントしか
見たことが無いから、『コメントとはそーゆーモンである』と
身につけてしまうのであろう。
そうなってしまわない奴こそがまっとうなプログラマーになれるわけだが...
134:仕様書無しさん
07/07/10 11:54:48
久美子さん(59歳)まだまだ現役です。
135:仕様書無しさん
07/07/10 11:55:37
ワロタww
136:仕様書無しさん
07/07/10 11:59:10
ホットドックで楽しようと考えた管理者が大杉た
137:仕様書無しさん
07/07/10 12:02:25
>>134
どういう意味で現役なのかwwww
138:仕様書無しさん
07/07/10 13:05:33
えっ、そっち?うわー
139:仕様書無しさん
07/07/10 13:26:38
>>127
再帰の練習課題なのに
一般項の公式つかって得意になってる奴?
140:仕様書無しさん
07/07/10 14:20:46
>>139は無類の再帰好き
141:仕様書無しさん
07/07/10 14:32:54
フィボナッチ数列ぐらいの単純なものなら再帰より一般項を直接求めたほうが速いかも知れんけど、どっちでもいいよ
142:仕様書無しさん
07/07/10 14:37:03
>一般校を直接求め
どうやって?
143:仕様書無しさん
07/07/10 14:38:03
>>139
いや、そうじゃなくて線形で書けってこと。
オーダーが全然違う
144:仕様書無しさん
07/07/10 14:38:49
例えば
(define (fib n)
145:仕様書無しさん
07/07/10 14:42:26
線形?反復の間違いだろ
146:仕様書無しさん
07/07/10 14:50:41
そもそも数列自体が再帰的に定義されてるから、再帰的にプログラミングすることは別に自然だと思うけどな。
147:仕様書無しさん
07/07/10 14:57:23
言ってる意味がよくわからんが
return fib(n - 1) + fib(n - 2);
じゃなくて
int tmp = fib(n - 2);
return tmp + n - 1 + tmp;
と書けってことか?
148:仕様書無しさん
07/07/10 14:58:54
ただ、フィボナッチのプログラムを書けなら再帰で全然OK
時間のオーダーをなるたけ小さくしろなら、再帰で書く奴はゴミ虫
149:仕様書無しさん
07/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:仕様書無しさん
07/07/10 15:12:05
フィボナッチ数の一般項ならWikipediaにも載ってるよ
151:仕様書無しさん
07/07/10 15:13:42
ただ、無理数のn乗が入ってるから余程nが大きくない限り普通に足し算したほうが速い気がするw
152:仕様書無しさん
07/07/10 15:15:33
>>142
・・・(^ω^;)
高校で習うから安心していいよ
153:仕様書無しさん
07/07/10 15:22:07
寿司食いたい
154:仕様書無しさん
07/07/10 15:24:23
>>146
自然ていやぁ自然かも知らんが、末尾再帰を再帰で書くのは阿呆。
155:仕様書無しさん
07/07/10 15:35:22
ちょっとおもしろそうだから、再帰・反復・一般項でそれぞれ実行時間計ってみた。
再帰;
35項まで求めて9.3秒
40項は1分たっても反応無いので中止
反復;
10000項まで求めて0.14秒
一般項:
10000項は無理数の10000乗が無理だった
156:仕様書無しさん
07/07/10 15:36:01
プログラムの頭に処理内容がフローチャートで書いてあるソース群を
渡されたのだが...
変更したら上に書いてあるフローチャートも直すのか?
つーかもうあってねぇよ
157:仕様書無しさん
07/07/10 16:01:06
イイハナシダナー
158:仕様書無しさん
07/07/10 16:33:58
>156
直してあげなさい
後の人のために
それか、チャートをDELしてあげなさい
159:仕様書無しさん
07/07/10 16:51:39
Schemeの場合
末尾再帰は最適化でループに書き換えられなければならない
という事が仕様で明示されてるから末尾再帰ならOK
末尾再帰と認められない書き方したらダメだが
160:仕様書無しさん
07/07/10 16:53:23
>155
実際そこまで違うものなのかー
161:仕様書無しさん
07/07/10 17:03:40
>>160
全く嘘はついていないぜ
TUTSchemeで実装&時間計測
162:仕様書無しさん
07/07/10 17:19:01
>>155
>10000項は無理数の10000乗が無理だった
その前に、64bit double で計算してると n=71 あたりで誤差が出始めるし
そもそもほぼ O(1) なんだから 10000 までやっても意味ない気が。
163:仕様書無しさん
07/07/10 17:33:12
ですよねー
164:仕様書無しさん
07/07/10 17:59:32
>>162
まぁね
オーダーはexpt使ってるからlogNくらいかも。まぁ係数がかなり小さいだろうが。
165:仕様書無しさん
07/07/10 18:32:45
n=70ぐらいでいいのなら、map が最速じゃね?
166:仕様書無しさん
07/07/10 18:50:03
普通に反復でも0秒だけどね、70くらいなら
167:仕様書無しさん
07/07/10 19:11:23
ここはスレ違いへの許容があるスレですね
このぐらいのほうが話題が膨らんで楽しい
168:仕様書無しさん
07/07/10 21:46:22
>>159
Cでもイマドキのコンパイラなら、最適化してくれるよ。
169:仕様書無しさん
07/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:仕様書無しさん
07/07/10 22:39:26
>>169
そういうパターンって意外に多いみたいだな。
なぜそういう却って難しい書き方をしてしまうのか、理解できない。
171:仕様書無しさん
07/07/10 22:40:02
>>169
ばっかwww
きっと増える可能性を考慮して頑張って考えたんだよwwww
そのあと増えることは実はないのにwwwww
End Select
Next
の間に共通の処理があるならいいとおもうけどさ・・・・
172:仕様書無しさん
07/07/10 23:19:17
>>169
テストコードじゃないの?
173:仕様書無しさん
07/07/10 23:28:08
ステップ数で金額が決まるんじゃね?
どうせコボラだろ。
174:仕様書無しさん
07/07/11 00:00:39
>>173
そんな事言ってると、
大勢のコボラーにピンセットで全身の皮膚を摘まれるぞ。
175:仕様書無しさん
07/07/11 01:43:49
>>174
このルールを適用しよう
スレリンク(prog板:247-253番)
176:仕様書無しさん
07/07/11 03:17:01
>>171
増える可能性を考慮すると、余計に
単に並べた方が良くね?
177:仕様書無しさん
07/07/11 12:53:19
>>176
無理やり解釈したが結構無理があったようだ
178:仕様書無しさん
07/07/11 13:56:19
寿司食いたい
179:仕様書無しさん
07/07/11 14:04:32
( ゚д゚)ガリでも食ってろ
180:仕様書無しさん
07/07/11 14:31:07
char *hoge(char *inbuf, char *outbuf);
コメントには入力専用と書いてあるが、
inbuf を変更されるのか気になって夜も眠れない。
181:仕様書無しさん
07/07/11 14:43:29
while(1) printf("寿司食いたい\n");
182:仕様書無しさん
07/07/11 15:11:08
ちょっとリアルで寿司食いにいってくるわ
183:仕様書無しさん
07/07/11 15:17:13
while(1) printf("ウニ軍艦\n");
184:仕様書無しさん
07/07/11 16:20:13
寿司.Dispose
185:仕様書無しさん
07/07/11 18:06:44
while(1) printf("かんぴょう巻\n");
printf("大トロ\n");
printf("シマアジ\n");
printf("あわび\n");
printf("ウニ\n");
printf("ぷりん\n");
186:仕様書無しさん
07/07/11 18:11:16
/(^o^)\
187:仕様書無しさん
07/07/11 19:03:13
先生、かんぴょう巻きがオーバーフローしました
188:仕様書無しさん
07/07/11 20:08:40
>>185を改善してpythonに移植。
while hara!=full:
print "かんぴょう巻き"
if hara!=full:
print "大トロ"
print "エビ"
print "トラフグ"
print "ウナギ"
189:仕様書無しさん
07/07/11 20:31:00
>>188
行:7ParalysisExceptionが発生しました!!
こら!!
ふぐ使うときはちゃんとキャッチしないと大ごとになるぞ?
190:仕様書無しさん
07/07/11 20:33:35
スレッドでグローバル静的変数が最強。
191:仕様書無しさん
07/07/11 21:27:31
std::vectorの中身を書き換えるのがその次くらいに最強ですよ。
192:仕様書無しさん
07/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:仕様書無しさん
07/07/11 22:28:43
>>192
C丼かjavaかよくわからんが、とにもかくにもSQLを見直せという事か・・・。
194:仕様書無しさん
07/07/11 22:58:19
>>192
ループでいちいちIDチェックするくらいならJOINしろと。>>193の言いたいことはそういうことだよね?
あと、SQLインジェクション対策をしていないのも問題かな。
195:仕様書無しさん
07/07/11 23:04:51
しかし、こういうSQLとロジックを思いつく方が逆に凄いと思うんだが。
COBOLerでもこんなコードは思いつかんだろう。
と思いたい。
196:仕様書無しさん
07/07/11 23:22:00
>>195
同感
197:仕様書無しさん
07/07/12 03:24:35
>170
意図的に Case 2 の部分だけを動作させたいとき(デバッグの時とか)に
For 文を直すだけで良い とか?
198:仕様書無しさん
07/07/12 04:24:42
>>195
コボラはそもそも SELECT * FROM テーブル名 しか知らないからなw
199:仕様書無しさん
07/07/12 09:51:02
>>192
社保庁の名寄せか?w
200:仕様書無しさん
07/07/12 10:10:57
テーブルの設計がヘンで>>192みたいな事になったことはある。
当然使いものにならなくて、最終的には全部作り直しになったらしい。
201:仕様書無しさん
07/07/12 15:53:24
>>195
見よう見まねで内部結合しようとしたら、なんかいっぱい返ってきたから
チェックするようにしました、みたいな。
ヴビ厨が得意。
202:仕様書無しさん
07/07/12 16:19:41
データベースを使ったデータ操作関連プログラムは、テーブルの設計がしっかり
していれば糞ソースになりにくい。
203:仕様書無しさん
07/07/12 16:32:42
いや、なるでしょ。
テーブルの設計と、プログラマが書くコードは別問題。
204:仕様書無しさん
07/07/12 16:33:09
>>202
ダメな奴は、正規化すればするほど >>201 みたいなことに陥りやすい件。
205:仕様書無しさん
07/07/12 16:41:12
テーブル設計がしっかりとしたものになるかどうかは、
6割の努力と4割の運任せだよって、かあさんが言ってた。
206:仕様書無しさん
07/07/12 16:51:42
>>205
それはブイヤベースの間違いじゃないかい?
207:仕様書無しさん
07/07/12 17:05:48
運任せってのはわかるな。
初期設計の時は見落としていた活用の道が出てきて、転用しようとしたら設計が悪くて、再構築になることがある。
再構築しなくてよいテータベースがあると、その設計に感嘆する。
センスの差なのかもしれんね。
208:仕様書無しさん
07/07/12 17:05:59
結局、最前線に配置されている兵隊が駄目だと、どんなに
すばらしい作戦も失敗すると。
209:仕様書無しさん
07/07/12 17:07:35
>>207
>再構築しなくてよいテータベースがあると、その設計に感嘆する。
ER図がぱっと頭の中に浮かぶんだな。
210:仕様書無しさん
07/07/12 17:22:05
>>207
発展型の転用と、思いつきの転用の差だと思う。
ユーザーがぶれてないだけで、設計の良し悪しはあまり関係ない気がする。
211:仕様書無しさん
07/07/12 18:45:01
テータベースに萌えた
212:仕様書無しさん
07/07/12 21:47:11
>再構築しなくてよいテータベースがあると、その設計に感嘆する。
本来はそうなるように最初から設計しておくものだが・・・。
Excelしか触ったことなかったり、Accessが256以上のカラムが使えないから困るとか
言う人には夢の話なのかもしれんが。
213:仕様書無しさん
07/07/12 22:29:53
>>212
1レコード212のカラムの設計するほうが難しいと思うんだがw
でも・・・あるんだよなぁ・・・・orz
超汎用テーブルとかだれが思いつくのさ
214:仕様書無しさん
07/07/12 22:50:36
>>213
みかか村で過去に14テーブルぐらいそうゆうのみたなw
215:仕様書無しさん
07/07/12 22:59:21
こんなDBもあるんだからびっくりだ
名前, 種類, データ1, データ2, ・・・・, データ99, 予備1, 予備2,・・・予備99
216:仕様書無しさん
07/07/12 23:04:34
そんな用途不明のフィールド量産してどうするんだwww
暗号か?www
217:仕様書無しさん
07/07/12 23:07:11
データベースの設計は基本的に「1 fact 1 place」を頭に入れておけば
そう難しいモノでもないのだが、どーもCOBOLerとかAccessやExcelしか
知らん人は不思議なテーブル設計をするよな。
なんでそんなに面倒で難しい方向に走りたがるのかよーわからん。
218:仕様書無しさん
07/07/12 23:08:37
>215
予備の無意味さに吹いた
219:仕様書無しさん
07/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:仕様書無しさん
07/07/12 23:17:01
>>217
COBOLは、レコード長固定のファイルに対して
1レコード読む→レコードを桁で区切る→処理
をすることに特化した言語だからな
予備カラムなんて考え方もそれに由来するんだろう
コボラはその考え方でしか理解出来ないからDBにまでそれを持ち込む
221:仕様書無しさん
07/07/12 23:18:36
ポインタのコピーは、ポインタが上書きされるだけでは?
それを行うならmemcpy(だったっけ)を使うのでは?
222:仕様書無しさん
07/07/12 23:20:06
>>221
メンバ変数にCStringがあるから、それやると、逆に大惨事に。
223:仕様書無しさん
07/07/12 23:36:04
>>221
>219 のどの辺がポインタのコピーなのかkwsk
224:仕様書無しさん
07/07/12 23:52:26
src->aのメンバ変数aが何の型か
解からないけど実はポインタ型とか
勝手にいい方に解釈してみるテスト
225:仕様書無しさん
07/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:仕様書無しさん
07/07/13 00:31:55
強い保障されたswap( )実装しろよ
227:215
07/07/13 07:19:23
実はこれある大手銀行のデータベースなんだ・・・
二度とそこには預金しなくなったYO
228:仕様書無しさん
07/07/13 08:34:20
>>215
前、銀行子会社のソフト会社に勤めてた。
親絡みの仕事してる事業部と、親関係ない自前パッケージ作ってる事業部があって
関係ない方にいたんだけど、親絡みの方から移動してくるコボラはそんな感じだった
内部コード、ソート順、名称、種別、区分、大分類、中分類、少分類、ステータス1、ステータス2…
内部コードとソート順にキーをはってるくせに
実際は種別でテーブル分けろよみたいな動きを切替えて
区分でみてるデータと大中小分類でみてるデータがあって
有り得ないデータの制御はアプリで規制するの
正規化とかはなにそれ?って感じなの
だって単項目マスターに全マスターほおりこむから
高望みしないからせめてソート順のキーをはずしてくれ…
意味のない内部連番キーにしてるんだから十分じゃないか
229:仕様書無しさん
07/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:仕様書無しさん
07/07/13 12:51:28
>>225
おまえ C 使えないだろ。
231:仕様書無しさん
07/07/13 14:11:00
>>224
メンバ変数aがポインタ型だったとして、
dst->a = src->a と *dst = *src がどう違うと言うんだ?
>>225
ワロタw
232:仕様書無しさん
07/07/13 14:51:23
>>225
馬鹿!!!
233:232
07/07/13 14:52:49
およよ。既に突っ込まれ済みですかw
234:仕様書無しさん
07/07/13 15:28:05
>>225の人気に嫉妬
235:仕様書無しさん
07/07/13 17:43:53
>書くかもしれない
ってとこからして、間違った時のことを想定してるんじゃないの?
236:仕様書無しさん
07/07/13 17:59:37
>>225と寿司九位タイ
237:仕様書無しさん
07/07/13 18:17:50
>>>Hoge * dstOld = dst;
--
<<<Hoge dstOld = *dst;
238:仕様書無しさん
07/07/13 18:30:36
女なら普通に3本まではつっこめる。
男でも3本くらいはつっこめる。
239:仕様書無しさん
07/07/13 18:55:29
>>225
イジメないから出ておいで。
240:仕様書無しさん
07/07/13 20:18:13
・・・いぢめる?
241:仕様書無しさん
07/07/13 20:58:31
当然だろ
242:仕様書無しさん
07/07/13 20:59:50
>>237
そのpatchはコンパイルが通らなくなる可能性が・・・
243:仕様書無しさん
07/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:仕様書無しさん
07/07/13 22:59:08
ホイコーローコピーってどんなコピーだっけ?
245:仕様書無しさん
07/07/14 00:26:54
つーか、SQLだとテストいらなくて、同処理をするjavaだとテスト必要って
....なにが違うの?
246:仕様書無しさん
07/07/14 00:31:29
>>245
SQLはプログラミング言語ではなく、
javaはプログラミング言語だからです。
247:仕様書無しさん
07/07/14 00:40:56
あまり複雑なストアドは書かんでほしい。
デバッガはもちろん、printデバッグもできんじゃないか。
248:仕様書無しさん
07/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:仕様書無しさん
07/07/14 11:31:43
>>248
SQLはプログラム言語じゃないよ。
PL/SQLはプログラム言語だよ。
250:仕様書無しさん
07/07/14 11:47:15
>>249
「~じゃない」は言えるけど、「~だ」が言えないタイプの奴だなw
脊髄反射で否定するのは得意。
まあ俺も SQL はプログラミング言語に分類するより、データベースに特化した
クエリ言語に分類するのが適当だと思うけれども。
251:仕様書無しさん
07/07/14 11:57:30
SQLは問い合わせ言語であって、プログラム言語じゃないよ。
252:仕様書無しさん
07/07/14 12:00:48
マシンに明確な指示を与えるための規則の集合という意味では
プログラミング言語と呼んでも間違いではないと思うんだが。
クエリ言語という分類があるとすれば、集合的には、プログラミング言語とクエリ言語の積といったところか。
HTMLはプログラミング言語か―というような議論と同質だな。
253:仕様書無しさん
07/07/14 12:01:03
>>250
アホかw
「俺も~が適当だと思う」って、お前の意見なんか聞いちゃいねーよw
SQLのことをよく知らないの丸わかりだな
254:仕様書無しさん
07/07/14 12:03:38
>>252
htmlをプログラミング言語なんて思ってる奴なんか、何も知らない初心者だけだろう。
テキストをマークアップするだけの作業のどこがプログラムなんだ?
本に蛍光ペンや赤ペンで線引いたりするのと本質的には同じ作業だろうが。
つまりお前は何も知らない初心者と言うことだ。
255:仕様書無しさん
07/07/14 12:09:17
>>254
様々なプラットフォームのブラウザに同一の表示結果を与えるための
マークアップは、プログラミングと言っていいと思う。
256:仕様書無しさん
07/07/14 12:10:26
実際、たとえばOracleのcaseを駆使したSQLなんかはプログラムと言っても差し支えはないだろうが
もともとそういうのはクエリを呼び出した側がやるべき処理ではあるんだよな。
SQLがどんどん高性能化していってるせいで境界線がよくわからなくなってきてる。
257:仕様書無しさん
07/07/14 12:12:23
>>255
いいわけがない。
そもそも、htmlを読んでどう表示するかはブラウザ側の実装次第。
つまり「様々なプラットフォームのブラウザに同一の表示結果を与えるため」に必要なのは
ブラウザ開発者側の努力だよ。
だからAcid2なんてものがあるんだろ。
258:仕様書無しさん
07/07/14 12:15:20
Acidテストも知らない新人がなに息巻いているんだ?
休日使って勉強でもしとけや
259:仕様書無しさん
07/07/14 12:17:09
つかドラゴンブックにHTMLはプログラミング言語だって
書いてあるけどな
260:仕様書無しさん
07/07/14 12:21:32
クエリ言語っていうかSQLの一説は構造化照会言語なんだから
そのまんまな話に思えるが。
ストアドなSQLは立派にプログラム言語してると思う。
261:仕様書無しさん
07/07/14 12:23:17
つか、字句を拾って構文を読み取る者全般を
プログラミング言語って解釈だぞ。
262:仕様書無しさん
07/07/14 12:23:54
あなた方の発言はこちら向きです
スレリンク(prog板)
263:仕様書無しさん
07/07/14 12:25:59
>>261
じゃあ、面接か何かで
「プログラム言語が得意です!とくにHTMLです!」
って言ってみてよ。
俺にはできない。
それで笑われたら「字句を拾って…」って同じ反論してみてよ。
俺にはできない。
264:261
07/07/14 12:35:01
俺、今はもう作ってないけど
組込み向けのブラウザ作ってた時期があった(都合により退社)
んで今の会社の面接で得意な言語はなんですか?って聞かれて
最近ではHTMLですね。バリバリかけますって言ったよ。
採用担当者とエンジニアは笑ってたな。
レンダリングエンジンを作ってたのでHTMLは得意なんですよねって
言い直した。
まぁ今その会社で7年目だが文句あるか?
265:仕様書無しさん
07/07/14 12:38:49
>>264
>最近ではHTMLですね。バリバリかけます
じゃなくて
>レンダリングエンジンを作ってた
ここが重要だったんだろ?
日本語が不自由だって自覚を持った方がいいよ。
266:仕様書無しさん
07/07/14 12:39:47
>>264
結局>>257が書いてるのと意味合い的には何も変わっていないわけだが
267:仕様書無しさん
07/07/14 12:51:28
バイナリだって言語と呼べるのかもな。
CPUが解釈できる命令のことを機械語って言ったりするし。
>>257
それはブラウザ以外にも言えることだと思う。
そもそも、機械語を読んでどう処理するかはプロセッサの実装次第。
つまり「過去のプロセッサ含め、さまざまなプロセッサで同一の処理結果を保証するため」に必要なのは
プロセッサ開発者側の努力だよ。
だから・・・なんてものがあるんだろ。(←思いつかなかったw)
268:仕様書無しさん
07/07/14 12:55:39
>>267
本物の馬鹿がやってきた
269:仕様書無しさん
07/07/14 13:01:21
>>267
スレタイも読めないんじゃ、そんなバカな書き込みもむべなるかな。
270:仕様書無しさん
07/07/14 13:03:04
自分の固定観念で追いつけなくなるとすぐ馬鹿呼ばわりする
プログラマってのはこういうのが多いなw
プログラミング言語でも何でも出来合いのものを組み合わせて作るのはうまいが
自分から新しいものは作り出せない香具師が多い理由がわかる気がするわ
271:仕様書無しさん
07/07/14 13:04:59
今までさんざんスレ違いな会話していて、俺がきたら「スレタイ嫁」かよw
まあいいや、続きをドゾー。おじゃましますた^^
272:仕様書無しさん
07/07/14 13:06:54
>>271
だって、プログラミング言語の話なのに、CPU持ち出すんだもん。
そりゃ違うじゃん。
273:仕様書無しさん
07/07/14 13:10:17
いくらなんでも「HTMLはプログラミング言語じゃない」から>>267の話は飛躍しすぎ
揚げ足取りのコピペって時点でもどうかと思うが
>>257の書き込み自体はもっともじゃないのか
274:仕様書無しさん
07/07/14 13:16:03
アバヨいっといてまた書き込むのもアレだが、俺は端的に言語の例を挙げただけなんだがな。
プログラミング言語の範疇だとか定義だとか、これほど曖昧な物はない。
データの処理のしかたを規定するものなら、例外なくプログラミング言語だと、俺は思うんだが。
SQL然り、HTML然り、機械語然り。どれも何かを処理する手順書という点では共通。
275:仕様書無しさん
07/07/14 13:28:34
定数が1ずつずれちゃってたときなんか修正がいやだったなあ・・・
276:仕様書無しさん
07/07/14 14:35:46
いや、>>245 はSQLだろうがJAVA組もうがテストしろと
言いたいだけではない
277:仕様書無しさん
07/07/14 14:49:05
この会社辞めようと思った腐れ上司の一言0x1E
スレリンク(prog板)
もし日本語が読めるのであれば、どうぞこちらへ
278:仕様書無しさん
07/07/14 15:31:05
>>263
君の話は飛躍しすぎ
厳密に言えばhtmlもプログラミング言語の範疇であろうが、普段われわれがプログラミング言語として考えるところのCやJavaなどから見ればプログラミング言語らしくないというだけの話
ここで面接官がいうPLにhtmlが含まれないであろう事は当たり前である。でもそれはhtmlがPLに含まれないことを示すものではない
279:仕様書無しさん
07/07/14 15:46:28
君の文は読み悪すぎ
厳密に言えば句読点の使い方もあやしいし
そもそも適度な改行が入っていないのがおかしいという話
280:仕様書無しさん
07/07/14 15:55:49
Q. SQLってプログラミング言語なの?
A. 全然違うよ。全く関係ないよ。
281:仕様書無しさん
07/07/14 16:38:45
URLリンク(ja.wikipedia.org)
>SQLは「宣言型プログラミング言語」と分類される
282:仕様書無しさん
07/07/14 16:46:23
>>278
PLってなに?甲子園の常連校?
283:仕様書無しさん
07/07/14 16:51:06
この会社辞めようと思った糞議論。
284:仕様書無しさん
07/07/14 17:11:46
>>279
この、改行厨めがっ
>>282
常連ってほどでもないだろ、最近は
昔は強かったよねぇ
285:仕様書無しさん
07/07/14 17:17:10
>>281
うぃきをソースにスンナよ糟が
286:仕様書無しさん
07/07/14 17:18:15
>>285
うるさい、お前はもっとかす
287:仕様書無しさん
07/07/14 17:19:36
「言語」と「プログラミング言語」は分けて考えようぜ。
288:仕様書無しさん
07/07/14 17:21:46
くっだらねぇ
そんな本質的でないところにこだわるなよ
議論するなら、定義を持ち出してきて白黒決着つく形で議論しろよ
これだから糞文系プログラマーは面白い
289:仕様書無しさん
07/07/14 17:26:37
公理も定義もない状態で議論しても主観によるところが大きいから、お互いの論理に矛盾無しに反立しうる。
つまりはお互い平行線のまま水掛け論になりうる。そんな無駄な議論の好むのがえてして文系。あいつらの考えることはよくわからん。
290:仕様書無しさん
07/07/14 17:29:21
どうでもいいけどオナニー文章書いて
悦にはいるのはやめてけろ
291:仕様書無しさん
07/07/14 17:38:25
この会社辞めようと思った腐れ上司の一言0x1E
スレリンク(prog板)
もし日本語が読めるのであれば、どうぞこちらへ
292:仕様書無しさん
07/07/14 20:47:46
俺、今からメロン食う
みんな応援ヨロシクな
293:仕様書無しさん
07/07/14 20:51:21
馬鹿野郎
コロッケだろ
台風なんだから
294:仕様書無しさん
07/07/14 20:53:17
メロン半分食い終わった
295:仕様書無しさん
07/07/14 20:54:10
俺、今からスイカ食う
みんな応援ヨロシクな
296:仕様書無しさん
07/07/14 20:55:20
Wikipediaをウィキと呼ぶプログラマが書いたソース。
297:仕様書無しさん
07/07/14 21:14:34
>>296
おお、新しい。
メールの内容の英数字が全角半角混在のやつが
書いたソースなみにいやだなあ。
298:仕様書無しさん
07/07/14 22:15:41
10年単位の長きに渡ってつぎ足しつぎ足しして熟成されたソース
299:仕様書無しさん
07/07/14 22:35:21
>298
カオスっぷりが頭に浮かぶなw
300:仕様書無しさん
07/07/14 22:59:47
プログラミング言語の定義(誰が言ったかは忘れた)
『逐次実行・条件分岐・繰り返しの構造を持つ言語』
…コレがホントかどうかも忘れた。
301:仕様書無しさん
07/07/14 23:57:06
ダイクストラの構造化定理が似てるが、
プログラム→順次・反復・分岐で書ける
という感じの命題だから、論理学的には「逆」だな。
302:仕様書無しさん
07/07/15 01:05:21
じゃあやっぱりSQLもHTMLも含まれないでFAなんじゃん
303:仕様書無しさん
07/07/15 01:41:50
Programming with Stored Query Language.
304:仕様書無しさん
07/07/15 01:44:06
プログラミング言語かどうかはともかく、テストはしなくちゃな。
JavaやSQLの記述はもちろん、iniファイルの内容を書き換えた場合ですら。
そういえば設定内容を書き換えるのは開発じゃないと思ってる輩がいたっけ。
305:仕様書無しさん
07/07/15 01:56:50
>>304
設定ファイルを書き換えることさえ開発だって言ってたら
運用の人まで開発者になっちゃうじゃまいか
306:仕様書無しさん
07/07/15 02:00:56
その理屈だと秀丸の背景色を変えることすらも開発さ
307:仕様書無しさん
07/07/15 02:07:38
ソフトを完成しさせて人手に渡るところまでは開発だろ
Iniファイルだって完成前までの初期設定変更とかは開発だと思うけど
そっからさきは違うだろうね
308:仕様書無しさん
07/07/15 02:13:49
JAVAなんてアホでも出来るように作られてる言語なんだし
そんなに熱く語るほどの事かね?
309:仕様書無しさん
07/07/15 02:18:57
>>308
そのJAVAをこれから始めてみようと思う俺が来ましたYO!
310:仕様書無しさん
07/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:仕様書無しさん
07/07/15 08:52:46
>>310
何をしたいのかがサッパリだ
312:仕様書無しさん
07/07/15 09:22:16
discnct という名前からして、いい感じに腐っている。
いまだに母音を省略する命名ルールが生きのこっているなんてガラパゴスか?
313:仕様書無しさん
07/07/15 10:34:14
コメントが全部、日本語をローマ字表記。
koreha, komento desu.
kokode***suru
[debagu yy/mm/dd]
314:仕様書無しさん
07/07/15 10:38:12
IME壊れたんだろう
315:仕様書無しさん
07/07/15 11:46:40
> [debagu yy/mm/dd]
にしても、これはちょっと。debug でいいやん。
316:仕様書無しさん
07/07/15 11:59:26
せめてdebaggu
317:仕様書無しさん
07/07/15 12:00:17
テーブル名とかカラム名がローマ字ならよく見る
TORIHIKITBLとかHURIKOMIKINGAKU CHAR(10)みたいな
318:仕様書無しさん
07/07/15 12:03:25
それならいいけど
未だに母音抜いてTRHKとかHRKMKNGKとかの方がよく見る気がする
ヘブライ語かよ
319:仕様書無しさん
07/07/15 12:36:35
discnctについては、母音省略もアレだが、dis-を「~しない」だと思ってる
のがイタイな。
320:仕様書無しさん
07/07/15 12:37:52
>>318
KWSKかよ
321:仕様書無しさん
07/07/15 12:38:40
>>313
文字コード関係じゃね いちおう・・・
322:仕様書無しさん
07/07/15 12:43:36
>>JAVAなんてアホでも出来るように作られてる言語なんだし
アホにはむり、コボラならOKの言語
323:仕様書無しさん
07/07/15 13:16:14
>>319
disconnectは普通に「切断」という意味だが・・・?
324:仕様書無しさん
07/07/15 13:18:24
>>323
そうだよ。
すでにつながっているものを「切断」するんであって、
最初からつながないという意味じゃない。
325:仕様書無しさん
07/07/15 13:36:30
最初から繋がらないなんてどこに書いてあるんだ
最初から繋げない じゃないのか
326:仕様書無しさん
07/07/15 13:49:23
メソッド名としては、testConnectibityとかの方が助かると思う。
327:仕様書無しさん
07/07/15 13:54:18
>>324
disableは最初から出来ないと思うよ
328:仕様書無しさん
07/07/15 13:56:19
disableは、可能であることを出来ないようにしておくことだね。
329:仕様書無しさん
07/07/15 13:56:32
>>327
できる/できないで話すのもなんだが、
It disable you to ~~ とかで使うから、出来なくするってのが一般的じゃないの?
unableが最初から出来ない方なわけで。
URLリンク(dictionary.goo.ne.jp)
330:329
07/07/15 13:57:03
あ、it disable -> it disablesです。ごめんね。
331:仕様書無しさん
07/07/15 13:57:15
>>326
それだ!
332:仕様書無しさん
07/07/15 13:57:17
>>327
最初から出来ないのは unable じゃ?
333:仕様書無しさん
07/07/15 14:27:26
>>332
ああ、そうだね。
だけど、身体障害者には生まれつきもあるわけで、
本来出来るというのは、健康な人間なら本来出来るが、その人は障害のために最初からできないわけで、
つまり、構造的に接続できるようになってる物を、切断した状態にしておくのが切断であり、
さっきまで接続していたかどうかとか、時間的経過に関係なく切断状態にあるのが切断だと思うよ。>>324
334:仕様書無しさん
07/07/15 14:28:29
正直どうでもいい
335:仕様書無しさん
07/07/15 14:30:47
>>334
名前と実際が食い違うのをいちいち関数仕様を読んで覚えたりソースコード追っかけたりするのは面倒だろ?
336:仕様書無しさん
07/07/15 14:37:10
>>333
日本語と英語じゃ言語構造も単語の細かい意味も変わってくるので、
生半可に論じられないし、そもそもスレ違いだからEnglish板にでもいってらっしゃい。
そして、ここでdisconnectといっているのは、切断のことではなく、
「~を切断する」ということです。他動詞ですね。
337:仕様書無しさん
07/07/15 14:38:59
>>333
disconnect(切断する)じゃなく disconected (切断状態にある)ならいいんだろうな。
元のはdiscnctだからそこまで考えてないだろうけど。
338:仕様書無しさん
07/07/15 14:40:10
distnctにするとぜんぜん違う意味になりますな。
339:仕様書無しさん
07/07/15 14:40:59
×disconected
○disconnected
細かい綴りの話してるときにtypoしちまったぜ orz
340:仕様書無しさん
07/07/15 14:45:06
kiretemasu?
341:仕様書無しさん
07/07/15 14:47:23
kiretenaissuyo
342:仕様書無しさん
07/07/15 14:54:01
>>310
確認するけど、コメントと関数名とやってることの三つがバラバラというのが問題なんだよね?
やってることは、与えられたURLに接続してみて、
接続できたら(例外が発生しなければ)trueを返し、例外が発生したらfalseを返す。
343:仕様書無しさん
07/07/15 17:56:01
そもそもこんないらん議論を呼ぶ
変数名つけるのが問題
344:仕様書無しさん
07/07/15 18:15:24
もう全部
func001();
func002();
でいいよ
345:仕様書無しさん
07/07/15 18:23:57
>>344
いちばんスレにふさわしいやつだな。
346:仕様書無しさん
07/07/15 18:31:26
・・・
if (ret == false) {
// 上記の処理が以上の場合、ファルスを返す。
return ret;
}
347:仕様書無しさん
07/07/15 18:33:59
if (ret==false) {
return true;
}
348:仕様書無しさん
07/07/15 18:57:03
>>346,347
変数名の付け方に問題があるかもしれんが一概に悪いとは思わんよ。
以下のような場合もあるから
bool ret = 何かの初期化メソッド();
if(ret == false)
{
// 初期化失敗
return false;
}
// ほかの処理
..
return true;
349:仕様書無しさん
07/07/15 19:02:26
// (略) falseを返す。
のつもりを
// (略) バルスを返す。
と書いていた奴。。。(読みはファルスじゃねぇし)
350:仕様書無しさん
07/07/15 19:19:36
>>349 いや、あれだよと突っ込んでほしいのか?
351:仕様書無しさん
07/07/15 20:54:06
>>349
自爆装置を仕込んでいるのか
352:仕様書無しさん
07/07/15 20:55:06
>>349
コードを追記したら
func(); // 目がぁ~目がぁ~
はお約束だな
353:310
07/07/15 21:44:15
変な議論呼んだようですまん
貼った俺自身もこのメソッドが何をしたいのかよく分からなかったんだが、
呼び出し先メソッドが↓のレスなんで、
どうやら接続した後の切断処理をやってるつもりなのかなぁ、と考えてる
354:310
07/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:仕様書無しさん
07/07/15 22:08:18
なんというコード・・・
356:仕様書無しさん
07/07/15 22:18:14
何したいわけ?
357:仕様書無しさん
07/07/15 22:27:07
cnct(対象URLに接続)
↓
getFileSize(ファイルサイズ取得)
↓
discnct(切断処理)
・・・がやりたかったのかな?
358:仕様書無しさん
07/07/15 23:41:45
たった二十行程度のコードに
山のように突っ込みどころが・・・
359:仕様書無しさん
07/07/15 23:55:07
>>310のコメント
// このURLへは今後接続しないことを示す
が、
/** @return true 切断成功 false 失敗。このURLへは今後接続しない */
ならまぁよかった、ということなのかな。
360:仕様書無しさん
07/07/16 00:49:09
つか成功したかどうかHashかなんかで管理して
余計なオブジェクト毎回接続するたびに作らないようにしね?
結果の保持が必要な場合は別途なにかクラス作って
突っ込んだ方がよくね?
361:仕様書無しさん
07/07/16 01:01:17
あまりにひどいコードに絶望した…!
でもそういうコードを以前見かけたことが
あるのに気づいて更に絶望した!!
362:仕様書無しさん
07/07/16 02:02:50
コメントにアスキーアートがはってあったぞ
「カイジ」のやつ
363:仕様書無しさん
07/07/16 02:11:13
__,,,.... -―‐- .._ そりゃあ…かまわない
/vV///∠∠彡:ニニヽ おまえらの疑問に答えること それ自体は容易い 簡単だ
{/`ー-‐'''"´ 二二ニニl 例外時の処理はこれこれこう こういうメソッド行き
/ー--‐''''"´ 二二ニニ| 返り値は…?パラメータは?
,/ー---‐'''"´__ ニニ二二| そんなコメントは いくらでもできる
〈べヽ l. ヾニ-‐'''ヾ> =r-、ニニ|
},-o-> ヽPニニ ミ ス.|ニ二| しかし 今 オレが そんなコメントを 仮に付けたとしても
. |二/,' ー― ' `に!|二ニト、 その真偽はどうする…?
|/,' __ ヽ\ r<二ニ| \
| 「r---一ァ'! | \ニ| |`'ー-、__ 真偽など どうでもいいから
| !` 三 ̄ l | \! | 読みたいと言うのか…?
\ _.. -''" /| |
_,.. ‐'''"`ー <´ / | | ククク……
364:仕様書無しさん
07/07/16 02:23:55
>>363
一見まともなコメントにこんなの付いてたら嫌になるな。
365:仕様書無しさん
07/07/16 05:00:11
何を信じればいいのかw
366:仕様書無しさん
07/07/16 05:06:11
>>363
プログラマやめろよ、つかやめてくれw
367:仕様書無しさん
07/07/16 12:26:01
>>354
酷いな・・・8行で済むのにそんなにダラダラと・・・
368:仕様書無しさん
07/07/16 13:11:02
>>363
お前とは仕事したくねぇよ・・
369:仕様書無しさん
07/07/16 19:13:26
納期は命より重いっ・・・!
370:仕様書無しさん
07/07/16 20:32:25
ざわ・・・
ざわ・・・
ざわ・・・
俺のバグですたorz
371:仕様書無しさん
07/07/17 11:34:53
>>344
ローカル関数に関してはそのルールで書く人を知っている。
本人曰く、『どーせ俺しか読まねぇし』。
372:仕様書無しさん
07/07/17 12:00:04
3年後の「俺」には読めない罠。
373:仕様書無しさん
07/07/17 12:44:05
あるあるwww
374:仕様書無しさん
07/07/17 12:51:10
>>372
一年後に読める自信がないです。
覚えているうちに仕様変更とかあればいいんだが…
375:仕様書無しさん
07/07/17 12:54:19
違う仕事一個でも挟むと無理そうだ
376:仕様書無しさん
07/07/17 13:05:25
>>372
三週間でも微妙
377:仕様書無しさん
07/07/17 13:50:59
>>376
って言うか、たったの3連休で頭真っ白なんですが・・・
先週までの俺が何をどうしたかったか、やっと何となく解ってきたw
今週の俺によると、先週までの俺は未熟者だったらしいww
378:仕様書無しさん
07/07/17 16:11:58
前日の日記をつけろ。毎日3行程でいいぞ。
379:仕様書無しさん
07/07/17 19:13:28
似たようなのもう出てそうだが、
Hoge1()
{
__asm {
:
:
}
}
Hoge2()
{
__asm {
:
:
}
}
7000行ほどでコメント一切無し
380:仕様書無しさん
07/07/17 19:32:47
Cool!w
381:仕様書無しさん
07/07/17 19:45:12
>>379
昔は、マシンコードを定数の配列にして、関数ポインタで指してたり...
382:仕様書無しさん
07/07/17 19:55:24
定数ならまだいいが、技術的な制限から、コードを実行中に書き換えながら走らせることもあったな。
当分使われないコードセグメントはメモリから削除して、空いた空間に別のコードセグメントをロードしたりとかもしたし。
今となってはOSが担当する処理だが、その当時はそんなトリッキーなことを強いられたもんだ。
383:仕様書無しさん
07/07/17 19:59:06
>>381
今でもやっていたりする....
384:仕様書無しさん
07/07/17 20:04:59
辞めさせられないようにする為の保険か?
385:仕様書無しさん
07/07/17 21:29:30
メモリに入りきらない。
386:仕様書無しさん
07/07/17 22:01:34
>>379
何か問題でも?
387:仕様書無しさん
07/07/18 02:59:01
せめてコメントぐらいはつけて欲しいな
388:仕様書無しさん
07/07/18 03:38:17
ソースコードが残ってなくてROMがあるんだけど、バグ対処してねとかいうのもあったな。
電算室(古っ!)に配属になって初めて書いたプログラムが自己変更コードだった。指導者乙。
そういうのがお行儀悪いことだと知るのはその10年後。
389:仕様書無しさん
07/07/18 11:48:54
10年は長いですね。
390:仕様書無しさん
07/07/18 11:58:05
その部署の文化になってればそれが当たり前になっちゃうからなあ。
391:仕様書無しさん
07/07/18 12:07:48
>>388
Intel 8x86 の時は、自己書き換えしても問題なかったから、メモリの制約とあいまって、
むしろあたりまえのプログラミング技法だったと思う。
80x86nになってキャッシュの概念が出てきて、メモリ上で自己書き換えしてもそのコードが
保持されないので問題が顕在化して、行儀が悪いということになった。
392:仕様書無しさん
07/07/18 12:17:59
行儀の問題はキャッシュとは関係ないっしょ
393:391
07/07/18 12:42:13
いや、この場合は関係あると思ってるんだが。
「キャッシュのために今までのノウハウが使えなくなった」が「行儀が悪い」にすりかえられた。
まあ今じゃ通用しないノウハウだし、「行儀が悪い」という言葉にはよっぽどのひねくれ者じゃなければ
逆らおうと思わないから、いいけどね。
394:仕様書無しさん
07/07/18 12:48:29
すげーどうでもいいことだが。
x86の自己書き換えはパイプラインで問題になった。
キャッシュは最初から対策してる。
395:仕様書無しさん
07/07/18 13:10:44
自己書き替えはそれこそZ80の時代から「行儀が悪い」とされてましたが何か
396:仕様書無しさん
07/07/18 15:13:54
86 系で自己書き換えのときのキャッシュのフラッシュ(の欠落)が問題になったのは
ハーバードアーキテクチャを初採用した Pentium から。
Mac では 68040 を積んだ Quadra から。
メモリ上の自己書き換えやコード生成は今でも結構使われていて別に問題のある技法でもない。
他により妥当な方法があるのに使いたがるのは問題ある行為かもしれないけど。
397:仕様書無しさん
07/07/18 18:36:28
今はメモリ使い回すメリットがほとんどないだろ
メモリが小さかった時代には一つのひゅほうだったかもしれないが
398:仕様書無しさん
07/07/18 19:09:25
ひゅほうでんせつ
399:仕様書無しさん
07/07/18 21:19:00
最近は
データ領域:書き換え○ 実行×
コード領域:書き換え× 実行○
みたいなことやるしな。
400:仕様書無しさん
07/07/19 00:50:51
LISPだと自己書き換えってどういう感じに捉えられているんだろう?
401:仕様書無しさん
07/07/19 01:00:31
すべてがS式なんだから、コード書き換えもアリとは思う。
けど、アルゴリズムとしてトリッキーに過ぎる感はあるな。
で、そういう感覚もっていることは、PGとしては大事。
402:仕様書無しさん
07/07/19 01:11:23
longjumpで書き換えまくるのは普通だし
今でもそうゆうコード書いてる。
書くなって言われるけどなんでって思う
403:仕様書無しさん
07/07/19 01:18:32
テクニックとしては面白いんだけどな。バッファオーバーラン攻撃の基本だし。
だからといって、製品の中に自己書き換えを組み込むのは勘弁。動的に書き換わるコードは追跡が難しすぎる。
動的コード生成にしても、機械語直接生成よりもスクリプトを吐く方が簡単に済みそう。
404:仕様書無しさん
07/07/19 01:26:53
>>402
longjmpは自己書き換えしなくても作れるだろう。
ものすげー変なCPUまで把握してないが。
405:仕様書無しさん
07/07/19 02:18:03
コード書き換えはマルチタスクで動かせないだろ
406:仕様書無しさん
07/07/19 06:58:17
iTRON準拠のマルチタスク環境では動いていたというか動かしていたよ。
407:仕様書無しさん
07/07/19 10:06:50
>>405
>コード書き換え
と
>マルチタスク
に、まるで相関がない。
408:仕様書無しさん
07/07/19 15:50:24
自己書き換えはすたれてるけど、コード生成自体は ATL のサンクとか
JIT コンパイラ的技法とかで必要に応じて使われているよね。
409:仕様書無しさん
07/07/19 18:43:12
HaskellのコンパイラがDEP(データ実行防止)に引っかかった。
HaskellはHaskell自身で書かれているらしいから、どうもコード生成or自己書き換えしてるっぽい。
まだまだ現役だな。
410:仕様書無しさん
07/07/19 19:24:16
>>409
>>408
>JIT コンパイラ的技法
411:仕様書無しさん
07/07/19 22:37:16
ふとリコンフィギュラブルを思い出した。
URLリンク(www.atmarkit.co.jp)
412:仕様書無しさん
07/07/19 23:57:15
ふとりプリキュアに見えた
413:仕様書無しさん
07/07/20 00:28:50
>>412
病みすぎ
414:仕様書無しさん
07/07/20 14:03:15
うーん。「自己変更コード」とか「自己書き換えコード」とか呼ばれているけど。
誰も「自己改竄コード」とは呼ばないな。
415:仕様書無しさん
07/07/20 14:08:29
普通は悪用目的の書き換えを指すんじゃまいか?改竄て。
416:仕様書無しさん
07/07/20 23:08:58
進化するコード
417:仕様書無しさん
07/07/20 23:32:27
>>414-416
だんだんウィルスになってないか?
418:仕様書無しさん
07/07/21 00:35:34
暴走してウィルス化するなんていかにも漫画的なシチュエーションだ
419:仕様書無しさん
07/07/21 01:11:30
ソースが貼られず自称上級者の醜い言い争いばっかりじゃねーか
もっとトンデモソースで俺を癒してくれよ
420:仕様書無しさん
07/07/21 03:18:33
switch( cValue ) {
case 0:
hogehoge( );
break;
case 1:
・・・
case 255:
hugahuga( );
break;
default:
ASSERT( False );
break;
}
421:仕様書無しさん
07/07/21 05:19:36
これでcValueがucharなら笑えるな
422:仕様書無しさん
07/07/21 08:40:07
関数名が func0()~func255() じゃないってことは、コボラーじゃないのか....
423:仕様書無しさん
07/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にたどり着くので無限ループにはなっておらず、しょっちゅうトラブるが、大抵はなんとなく動いている。
だけど何で動いているのか分からない上に、改造しようにも手がつけられない。
424:423
07/07/21 09:24:38
あ、case 12ではhoge=0じゃなくてflg=FALSEだった。
ま、5年ほど前に面倒見させられたソースです。
その部分はごっそり書き直したけどね。
425:仕様書無しさん
07/07/21 09:25:14
>>423
コードの意味がわからないってのはわかるが、
改変して行数が増えるとコンパイラが通らないって何?
VC++1.52だと最大行数の制限があるの?
426:仕様書無しさん
07/07/21 09:27:51
>>423
パーサーとかそんな感じで作るけど
#ifdef DEB_PRINTしこんで
コールグラフ作ればいいだろ。
んで文法作ればいい。おそらく処理しきれない
例外を見過ごして別の規則に遷移してるだけ
じゃねーの?
427:仕様書無しさん
07/07/21 09:28:44
16ビットの制限とかあるんじゃね?
428:仕様書無しさん
07/07/21 09:33:31
>423
hogeX()や各case値に意味あるんだろうから、そっから状態遷移図でも描いて見れば。
429:仕様書無しさん
07/07/21 09:46:32
>>428
hogeX()や各case値に意味あるケースは稀じゃね?w
430:仕様書無しさん
07/07/21 09:49:31
そうなのかw
431:仕様書無しさん
07/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:仕様書無しさん
07/07/21 10:25:39
オブジェクト指向はおろか構造化すら怪しいグラマが必死に考え出したコードっぽいな。
こんなコードが随所にあるなら431は拒否して正解だ。
433:431
07/07/21 10:31:32
随所どころか、辛うじて理解できた一部だよ
結局、ほとんど理解できなかった
434:仕様書無しさん
07/07/21 10:42:34
例はちょっと書けないけど最強にカオスなコードならあるぞ
make
yaccでmake+コード自動生成
生成コードmake
yaccでmake+コード自動生成
・・・
これが15回も繰り返されるカオスなコードあったよ
435:仕様書無しさん
07/07/21 11:58:45
>>434
それは何のプログラムなの?
436:423
07/07/21 12:10:28
>>425
1関数のサイズの上限が決まってたと思う
>>426,428
何年も前に終わった仕事について批判されてもなぁ・・・
大体1関数が1000行って時点で何かおかしいんだから直して当然だろ
437:仕様書無しさん
07/07/21 13:08:52
関数ってどんなに多く書いても数百行で済まないか?
絶対処理分割できるぞ
438:仕様書無しさん
07/07/21 14:23:36
>>436
関数の制限じゃなくてswitchの制限だと思うよ。
439:仕様書無しさん
07/07/21 14:51:16
>>437
普通に手続き言語をやってくれば、どんなに長くても数百行なんだが、
大昔のPLCしか触ったことない奴だとだらだら書く事しか知らなくて、1000行とかいく事がある。
440:仕様書無しさん
07/07/21 16:49:09
実行される行数が50を超えたらそれは長すぎ。
441:仕様書無しさん
07/07/21 16:52:49
>>440
実行される行数ってコンパイルした後の話か?
442:仕様書無しさん
07/07/21 17:38:24
実行後の行数なんて意識する必要ないだろ、50行超えたら読みにくいだけ
443:仕様書無しさん
07/07/21 17:43:39
別にコードなんて動けばどーでもいいんだよ
オマイラだってどうせ適当に書いて後は野となれ山となれだろう?
この会社辞めようと思ったソースコードなんてお高くとまってないで
正直になれよ
プログラムなんてちゃんと動けばそれでいいんだよ
444:仕様書無しさん
07/07/21 17:44:18
煽り乙
445:仕様書無しさん
07/07/21 17:54:01
>>443
中国産は長い・意味不明・動かないの3拍子揃ってるぜw
446:仕様書無しさん
07/07/21 18:05:21
>>445
コメントが中国語なら尚可。