バグの出にくい言語仕様を考える。

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
javaはC/C++からポインタをなくしたりGCを導入することで
メモリ管理にまつわるバグを出にくくした。
そのような考えを推し進めてバグの出にくい言語仕様を考えよう。
2デフォルトの名無しさん:2005/03/25(金) 19:59:12
>>1は根本的なことを判っていない。
プログラムが無ければバグも出ない。
つまり、言語仕様を考える前に、
如何にしてプログラムの存在しない世界を作るか、
を考えるべきだ。
3デフォルトの名無しさん:2005/03/25(金) 20:02:13
これまた>>2に思い切った電波を仕込むアグレッシブなスレだな
4デフォルトの名無しさん:2005/03/25(金) 20:39:19
俺はこんなバグを出したという情報募集。
それを回避できる言語仕様を考えていこう。
5デフォルトの名無しさん:2005/03/25(金) 20:53:07
文字を組み合わせて意味を成すからいけない
コンピュータでなぜ文字→単語→文という粒度が必要になるのか?
6デフォルトの名無しさん:2005/03/25(金) 21:10:33
>>1

もうプログラミング言語は進化し終わった
あとは手法の問題
7デフォルトの名無しさん:2005/03/25(金) 21:29:44
バグの出にくい言語仕様を考えるより、バグの影響を最低限に抑える環境を考えた方が建設的な気がする。
8デフォルトの名無しさん:2005/03/25(金) 21:46:17
>>2はMDAのことを言っているようにとれなくもない。
9デフォルトの名無しさん:2005/03/25(金) 23:29:39
UIのバグはどうにかならんものか
10デフォルトの名無しさん:2005/03/26(土) 07:12:26
誰かが作ったものを買う。
11デフォルトの名無しさん:2005/03/26(土) 11:27:23
Javaに残っている「バグが出やすいところ」を解析するのが
一番の近道かと
12デフォルトの名無しさん:2005/03/26(土) 11:32:33
言語仕様だけでバグの出にくさとか狙っても防げるのは瑣末なミスばかりで
testabilityが落ちるために却ってトータルの生産性は落ちる罠。
13デフォルトの名無しさん:2005/03/26(土) 13:19:19
>>6
おとといは馬をみたの。きのうは鹿、きょうはあなた。
14デフォルトの名無しさん:2005/03/26(土) 13:20:39
言語の進化ってなんだろう…
15デフォルトの名無しさん:2005/03/26(土) 14:26:14
というか、作り方を簡単にするのではなく、作り手を教育した方がいいと思う。
駄目な奴は何を使っても失敗する。
16デフォルトの名無しさん:2005/03/26(土) 14:29:14
>>15
はい???
17デフォルトの名無しさん:2005/03/26(土) 14:40:12
作り方を簡単にする、ねぇ・・・(ニガワラ
18デフォルトの名無しさん:2005/03/26(土) 14:46:20
JAVAやVBよりもバグになる要素が多い、Cやアセンブラだって、まともな奴が作ればバグは出ない
Cやアセンブラよりもバグになる要素が少ない、JAVAやVBだって、アホが作ればバグは出る

バグが出にくくすると言うことは、できることも少なくなると言うことで
制限のあるような言語を完璧に作っても意味ないと思うよ

俺も、教育を何とかした方がいいと思う
高度なことをやるためには、やはりCやアセンブラのような、
ハードを気にする言語が必要だって

コンピュータのことが解らないプログラマを大量生産しても、先細りになるだけ

Cやアセンブラレベルの事ができて、バグが出づらい言語をと言うのなら理解できるが、
JAVAの焼き直しとか、そう言うのはあまり意味がない
191:2005/03/26(土) 17:30:05
私としては実用性がどうこうという議論はひとまず置いといて
学術的な興味としてどのような言語がバグが出にくいか考えたい。
そのためにはかなり強い制限をかけてもよいと思う。
実行性能も気にするな。
意味は後からついて来る!


20デフォルトの名無しさん:2005/03/26(土) 18:05:42
文系でもできるもん!
VBOracleASP
21デフォルトの名無しさん:2005/03/26(土) 18:22:38
まずは「バグ」の定義からだな。
よろしく>>1
22デフォルトの名無しさん:2005/03/26(土) 18:23:18
>>20
文系ってダメ人間の集まりでしょ?
231:2005/03/26(土) 18:23:38
>>12
テストのし易さは重要なファクターだと思う。
それも言語仕様に含められないだろうか。
24デフォルトの名無しさん:2005/03/26(土) 18:25:44
そもそも関数型言語ではコンパイルさえ通れば論理的なバグは発生しない訳だが…
発生するとすればコンパイラにバグがあるってことになる。
Cなどでは論理的なバグに悩まされることも結構あるんだよね。
25デフォルトの名無しさん:2005/03/26(土) 18:26:37
それでいて、どうして生産性が高いと言われ続けているのか結構疑問かもかも。
26デフォルトの名無しさん:2005/03/26(土) 18:28:42
>どうして生産性が高いと言われ続けているのか

馬鹿には使えないようになってるから
27デフォルトの名無しさん:2005/03/26(土) 18:31:28
C系のプログラム言語はリソースが豊富だしな
言語仕様そのものが生産性を上げるわけではないと思う
28デフォルトの名無しさん:2005/03/26(土) 19:15:59
バグの出にくい言語仕様なんてもんは無いと思う。
バグが埋もれにくい(=発見しやすい)言語仕様はあるだろうが。
29デフォルトの名無しさん:2005/03/26(土) 19:17:00
Design By Contractとかだね
30デフォルトの名無しさん:2005/03/26(土) 19:21:33
>>29
いや、俺が考えてたのはそういう事じゃない。それは、結局検出する機構を用意しているに過ぎない。
31デフォルトの名無しさん:2005/03/26(土) 19:25:50
> バグが埋もれにくい(=発見しやすい)
> 検出する機構を用意している
おなじじゃんw
32デフォルトの名無しさん:2005/03/26(土) 20:01:28
>>31
日本語バグハケン
33デフォルトの名無しさん:2005/03/26(土) 20:05:55
人間は多少のバグは脳内訂正できるから問題なし。
34デフォルトの名無しさん:2005/03/26(土) 21:42:34
>>31
おなじじゃない
35デフォルトの名無しさん:2005/03/27(日) 02:24:43
どっかで誰かが言ってたが、
プログラムを作るのにも資格が必要なんじゃないかと。
たとえば命にかかわるプログラムの場合
なんちゃら資格が必要だとか。
36デフォルトの名無しさん:2005/03/27(日) 03:58:54
typedef で型名を定義した場合、再定義ではなくまったく
新しい型として扱われる。たとえば、 size_t と int では別の型となる。

enum 型で列挙された値以外の定数を enum変数に代入するとコンパイル
エラーになる。
37デフォルトの名無しさん:2005/03/27(日) 12:29:46
そんなのいまどき当たり前
38デフォルトの名無しさん:2005/03/27(日) 12:31:18
>>36
だからなに?
39デフォルトの名無しさん:2005/03/27(日) 12:43:36
たとえばさ、

BaseClass class {
省略
void Method1(void);
省略
};

DerivedClass class {
省略
void Method1(void);
省略
};

なんていう記述があったときに、言語仕様としてMethod1の呼び出しで
明示的にクラス指定をしなければならないとするか、
実装者に任せてコンパイラの警告に任せるとするかってするのは
全然違うよな。言語仕様として曖昧性を許さないというのは重要なことだと思うよ。

ほかにも多重継承を言語の仕様からはずしてしまうなんていうのも
言語仕様としてバグが出にくくしているといえると思う。

>>1はそういうこと言ってるんじゃないの?
40デフォルトの名無しさん:2005/03/27(日) 13:43:34
で、具体的なネタも振らずに逃げたわけだが。
41デフォルトの名無しさん:2005/03/27(日) 16:14:38
>>39 Wow 継承を指定するのを忘れてる(笑
42デフォルトの名無しさん:2005/03/27(日) 16:43:25
CPUからX87FPUをとっぱらって
有理数をサポートするX88RPUを開発してくっつける
43デフォルトの名無しさん:2005/03/27(日) 17:51:37
それは、バグの発生と関係あるのか ?

まさか、誤差とバグを混同してるなんてことないよな。
44デフォルトの名無しさん:2005/03/27(日) 18:19:19
まぁまぁ、おまいら。とりあえず要求定義しようではないか。
45デフォルトの名無しさん:2005/03/27(日) 18:20:37
型推論入れろー!
46デフォルトの名無しさん:2005/03/27(日) 18:22:35
Javaで十分バグが出にくいと思うんだけど・・・
そもそもバグって最適化にミスった時にしか起きないよね?
普通に組めばまず起きない
47デフォルトの名無しさん:2005/03/27(日) 19:01:21
>>45 型推論って余計にバグの温床になりそうな気がする。
48デフォルトの名無しさん:2005/03/27(日) 19:03:03
>>47
例えば、どんな時?
型推論だとテンプレートも要らないし、論理的なバグが激減すると思うんだけど…
49:2005/03/27(日) 19:52:14

 分析結果⇔外部設計⇔詳細設計⇔実装

を統合できる開発環境があればいいのではないかな。

1.前工程の成果物を作成した時点ですでに次工程の成果物がある程度できてる。
2.後工程の成果物に変更を加えれば前工程の成果物にも自動で変更が加えられる。

メリットは
1.下位工程への落としこみ、上位工程の修正時の人的ミスの減少
2.各工程のドキュメントが同時に変更されるので、検証が容易。

でも言語仕様とはちがうかな。。
50デフォルトの名無しさん:2005/03/27(日) 20:18:50
不完全性定理によると
「その論理の無矛盾性はその論理が無矛盾である限り証明できない」。
よって完全な言語仕様を定義することさえできないのだっ!のだっ!のだっ!
反論は受け付けません。
51デフォルトの名無しさん:2005/03/27(日) 20:30:24
数学の無矛盾性の証明不能を数学的に証明したわけね
52デフォルトの名無しさん:2005/03/27(日) 20:32:59
ああ、相対性理論の話ね。あるあるw
53デフォルトの名無しさん:2005/03/27(日) 20:40:06
>>50
それの証明はされているけど、論文には載せられないよね。量が多すぎて。
54デフォルトの名無しさん:2005/03/27(日) 20:56:18
>>52 おいおい、ゲーデルのだろ。
55デフォルトの名無しさん:2005/03/27(日) 23:52:09
ロジックの複雑さを常に一定に保てる仕様とか
56デフォルトの名無しさん:2005/03/28(月) 00:08:33
関数型言語で解決?
57デフォルトの名無しさん:2005/03/28(月) 00:19:21
>>56 関数言語のことを言っている?
58デフォルトの名無しさん:2005/03/28(月) 00:25:31
誤差がもしないとしたら
そもそも誤差によって起こる矛盾を回避する為の
例外的コードを書く必要がなくなり
結果その部分で虫を含む可能性はなくなる
虫というのは自然発生する訳でもなし
その原因をみないで何がわかるか?
虫を排するもっとも優れた方法は
そもそもプログラムを書かないこと
これもひとつの真理だろ
59デフォルトの名無しさん:2005/03/28(月) 09:18:18
>>58
つまらん事言ってるから、お前は今後は無視
60デフォルトの名無しさん:2005/03/28(月) 09:22:44
>>50
その公理系の内側からは証明できないって話じゃなかったか?
61デフォルトの名無しさん:2005/03/28(月) 09:23:37
最近は大概の機能がコンポーネントとして抜き出されてる
>>58を好意的に受け止めるとそういう理屈でバグを回避してることになる
62デフォルトの名無しさん:2005/03/28(月) 09:35:06
てことは「バグの出にくい言語」=「コンポーネントの多い言語」か
63デフォルトの名無しさん:2005/03/28(月) 09:58:35
「バグの出にくい」じゃなくて、「バグの入りにくい」だろ!
64デフォルトの名無しさん:2005/03/28(月) 10:14:10
より多くの規格品をかき集めることが大切なんだろうね。
gotoとかも定型化された使い方なら安全・綺麗・効果的となる。
細かいパズルより大きなパズルの方がバグが出ないのは当然のこと。
65デフォルトの名無しさん:2005/03/28(月) 12:32:53
んで、客先でレビューして、あんな事もできない、こんな事もできないと叩かれるわけだ(鬱
66デフォルトの名無しさん:2005/03/28(月) 12:46:54
>>1
Javaにポインタはある。
それを意識しなくてもいいというだけだ。
仕様書を見てみろ
67デフォルトの名無しさん:2005/03/28(月) 12:53:11
          _
          '´   ヽ
         ! j リノ)))) ヘヘェ♪
      _  l ll*゚ ヮ゚ノ∫_
〔ノ二二,___  リ     リ __,二二ヽ〕
 |:::::::::::::::::::::::::::ヽ ゜  ゜/::::::::::::::::::::::::::/
  〉::::::::: :::::::::::::〉 ・ 〈:::::::::::::: ::::::::〈    バッ
 |:::::::::::::::::::::::::/  ■  ヽ::::::::::::::::::::::/
  〔:::::::::::::::::::::/  ノ~ヽ  ヽ::::::::::::::::::|
  ヽ:::::::::::::::::/ /::::::::::::\ ):::::::::::::::::::ゝ
  ノ:::::::::::::::::::| |_〜─〜-| |〜〜〜/
68デフォルトの名無しさん:2005/03/28(月) 14:35:20
>>66 そりゃVMレベルの、つーか、バイトコードレベルの話じゃね?
69デフォルトの名無しさん:2005/03/28(月) 16:09:39
プリミティブ型以外は事実上ポインタじゃねーの?
70デフォルトの名無しさん:2005/03/28(月) 16:10:38
>>69
          _
          '´   ヽ
         ! j リノ)))) ヘヘェ♪
      _  l ll*゚ ヮ゚ノ∫_
〔ノ二二,___  リ     リ __,二二ヽ〕
 |:::::::::::::::::::::::::::ヽ ゜  ゜/::::::::::::::::::::::::::/
  〉::::::::: :::::::::::::〉 ・ 〈:::::::::::::: ::::::::〈    バッ
 |:::::::::::::::::::::::::/  ■  ヽ::::::::::::::::::::::/
  〔:::::::::::::::::::::/  ノ~ヽ  ヽ::::::::::::::::::|
  ヽ:::::::::::::::::/ /::::::::::::\ ):::::::::::::::::::ゝ
  ノ:::::::::::::::::::| |_〜─〜-| |〜〜〜/
71デフォルトの名無しさん:2005/03/28(月) 16:55:15
>>69 まぁそうなんだがちゃんとリファレンスカウントされてる
って点が違うとおもわれ。
72デフォルトの名無しさん:2005/03/28(月) 18:33:16
GCマンセーってことだな
73デフォルトの名無しさん:2005/03/28(月) 19:04:16
バグのないプログラムはないが、デバッグできないバグはない。



と言うわけで日本語で充分じゃん。
74デフォルトの名無しさん:2005/03/28(月) 20:00:40
誰も表明ベースについて言ってないけどあれが良いと思う。
型をさらに限定した感じ。
75デフォルトの名無しさん:2005/03/28(月) 20:44:58
配列てバグの温床じゃね?
配列のない言語ってできないもんかね。
76デフォルトの名無しさん:2005/03/28(月) 20:57:00
>>75
配列はリストの特殊形。そしてリストはデータ構造の唯一の基本形。
無理ですね
77デフォルトの名無しさん:2005/03/28(月) 21:00:56
>75
Pure Lispなんてどう?
78デフォルトの名無しさん:2005/03/28(月) 21:42:17
for文を無くしてforeachだけでプログラム組めないもんだろか。
とかいってみるテスト。
79デフォルトの名無しさん:2005/03/28(月) 22:34:46
アフォ発見
といってみるテスト。
80デフォルトの名無しさん:2005/03/28(月) 23:54:01
>>74
表明ベースってナニー?
ぐぐっても出てこないよぅ。
81デフォルトの名無しさん:2005/03/29(火) 00:30:50
Prolog
82デフォルトの名無しさん:2005/03/29(火) 01:00:31
>>80
表明契約でぐぐれ
83デフォルトの名無しさん:2005/03/29(火) 02:45:10
84デフォルトの名無しさん:2005/03/29(火) 03:03:23
パクリ元はEiffelだが
85デフォルトの名無しさん:2005/03/29(火) 21:17:43
今日もバグを出してしまった。
はやくバグの出ない言語を作ってくれ。
86デフォルトの名無しさん:2005/03/29(火) 22:43:53
仕様が変わったときに影響範囲を自動で検出できるといいんだけど。

87デフォルトの名無しさん:2005/03/29(火) 23:14:40
仕様変更ってのは機能追加の場合も多いだろ。今までにない機能を追加するのに、それの影響範囲を自動で検出するなんて理論的に無理。あらかじめ想定内(豚社長っぽいいいまわしだワラ)の仕様変更なら可能かもしれんが。
88デフォルトの名無しさん:2005/03/29(火) 23:19:35
そもそもコード書かなければいいんじゃないかな
GUIでボタンを置いていくかのように必要な機能を組み合わせるだけ
って出てるね。でもそれくらいしか・・・
89デフォルトの名無しさん:2005/03/29(火) 23:47:05
ソースコードの有無の問題じゃねーだろ。そもそもがソフトウェアは何を持ってバグとするかが微
妙だから「仕様です」なんて他では考えられないセリフが生まれた。仕様は、必ずしも論理的なも
とは限らないことに注意を払うべき。バグを作りこまないスーパー言語は、カオスを含むビジネス
ロジックなどはコンパイルエラーが出て実装できませんなんて冗談ができあがりそうだ。
90デフォルトの名無しさん:2005/03/30(水) 00:44:22
>>87
仕様変更の情報を何らかの形で与えてやれば
まったくの無理でもないような気がするけど。
まあ非常に難しいのは認めるが。
91デフォルトの名無しさん:2005/03/30(水) 01:02:54
仕様のバグはどうすればいいですか?
92デフォルトの名無しさん:2005/03/30(水) 01:25:50
「GUIでボタンを置いていくかのように必要な機能を組み合わせるだけ」でも
バグ出す香具師はゴマンといる・・・
93デフォルトの名無しさん:2005/03/30(水) 01:56:46
ナマスモノニリック理論を使えばいいんじゃない?
94デフォルトの名無しさん:2005/03/30(水) 14:18:15
一方、ソ連は鉛筆を使った。
95デフォルトの名無しさん:2005/03/30(水) 15:46:51
想定できるバグ(*1)を起こしうる記述を徹底的に制限して、
その類は全部コンパイル エラーにさせる。
アルゴリズムや記述方法(インデントの有無など)も
バグの引き金になるようなものは一切認めない。

*1 仕様との不一致は無視


ウザそうだ
96デフォルトの名無しさん:2005/03/30(水) 19:36:01
>>95
次第にそれが快感になってくる。

97デフォルトの名無しさん:2005/03/30(水) 19:42:40
よっしゃぁぁぁぁああああ、やっとコンパイル通ったぞぉぉおぉぉぉ!

って感じに喜べそうだ
98デフォルトの名無しさん:2005/03/30(水) 19:56:06
>>95
想定の範囲内というのが、堀江の脳内並みに広大になりそうだ。
99デフォルトの名無しさん:2005/03/30(水) 21:08:05
lintとかってバグをつぶすのに役に立ってるのかね。
あんまり役に立ってないイメージがあるんだが。
100デフォルトの名無しさん:2005/03/30(水) 21:11:40
使いこなせないのと便利じゃないのは同意じゃないわけで
101デフォルトの名無しさん:2005/03/30(水) 21:12:08
Adaなんかが確かバグを出しにくい(≒コーディングメンドクサイ)
あれこれの機能を持っていたような・・・
102デフォルトの名無しさん:2005/03/30(水) 21:13:08
    int a;
        int len;
    len = GetFileSize("〜.bmp");

Error(line: 1) - 分かりにくい名前をつけることはできません。
Error(line: 2) - インデントに問題があります。
Error(line: 2) - 変数名と用途があっていません。
    :
    :
103デフォルトの名無しさん:2005/03/31(木) 01:05:48
インデントはともかく、裏を返せばコンパイラの辞書にない変数名は付けられないと。
104デフォルトの名無しさん:2005/03/31(木) 01:07:31
>>103
その辺は動的に。
105デフォルトの名無しさん:2005/03/31(木) 01:28:06
>>99
eclipse のようにリアルタイムで通知してくれればまた別だろうね。
106デフォルトの名無しさん:2005/03/31(木) 16:12:51
全ての変数はボラタイル
107デフォルトの名無しさん:2005/03/31(木) 19:12:33
強い型付け&型推論
108デフォルトの名無しさん:2005/03/31(木) 19:31:09
1関数80行超えるとコンパイルエラー
109デフォルトの名無しさん:2005/03/31(木) 20:10:51
ネストが5以上はコンパイルエラー
110デフォルトの名無しさん:2005/03/31(木) 21:02:01
ソースコードにおけるコメントの比率が5〜10%に収まっていないとコンパイルエラー。
111デフォルトの名無しさん:2005/03/31(木) 21:04:23
個人的に#if 0 〜#endifの箇所はいっそのこと削除してほしい
漏れはバリバリ残してるがな
112デフォルトの名無しさん:2005/03/31(木) 21:06:50
>>109
え、なんで〜 lispとかネストしまくりやん!!!
113デフォルトの名無しさん:2005/03/31(木) 21:12:08
MISRA-Cとかどうなの?
114デフォルトの名無しさん:2005/03/31(木) 21:18:43
依存関係のある関数どうしで重複ロジックがあるとコンパイルエラー
115デフォルトの名無しさん:2005/03/31(木) 21:22:38
え〜 関数の多重定義できないの〜 最低
116デフォルトの名無しさん:2005/03/31(木) 21:33:30
インデントをもっと進化させられないだろうか。
ネストが深くなるとちゃんとインデントしてあっても
わけわからんくなる。
117デフォルトの名無しさん:2005/03/31(木) 21:33:40
朝ごはん食べてないとコンパイルエラー
118デフォルトの名無しさん:2005/03/31(木) 21:40:13
スレッドや子プロセスは非サポート
119デフォルトの名無しさん:2005/03/31(木) 22:30:04
ユニットテストが完備していないとコンパイルエラー
120デフォルトの名無しさん:2005/03/31(木) 22:36:04
名前規則に反しているとコンパイルエラー
121デフォルトの名無しさん:2005/03/31(木) 23:06:56
マジックナンバーはコンパイルエラー
122デフォルトの名無しさん:皇紀2665/04/01(金) 00:48:39
ねーねー、2次元構文(レイアウト)を採用することでどんな利点があるの?
123デフォルトの名無しさん:皇紀2665/04/01(金) 01:34:24
2次元構文て何
124デフォルトの名無しさん:皇紀2665/04/01(金) 01:58:16
>>123
ブロックをインデントで表したりする構文。
125デフォルトの名無しさん:皇紀2665/04/01(金) 05:09:28
>>94
かなりワロタw

以下知らない人用のコピペ

アメリカのNASAは、宇宙飛行士を最初に宇宙に送り込んだとき、
無重力状態ではボールペンが書けないことを発見した。

これではボールペンを持って行っても役に立たない。

NASAの科学者たちはこの問題に立ち向かうべく、10年の歳月と120億ドルの開発費をかけて研究を重ねた。

その結果ついに、無重力でも上下逆にしても水の中でも氷点下でも摂氏300度でも、
どんな状況下でもどんな表面にでも書けるボールペンを開発した!!

一方ソ連は鉛筆を使った。
126デフォルトの名無しさん:皇紀2665/04/01(金) 07:48:00
error: 平日18:00から9:00までおよび土日はコンパイルサービスを休止しております。
127デフォルトの名無しさん:int 2ch =05/04/01(金) 23:00:16
>>125
それってNASAはアホってこと?
128デフォルトの名無しさん:int 2ch =05/04/02(土) 00:17:15
>>85
例えば、ある返り値を持つ関数(関数は必ず返り値を持つものだけど)を定義しても、
プログラムが停止するかどうかを判定できない。
返すべき値があるはずなのに停止しないというのはバグだけど、それがバグかどうか見付ける
プログラムは書けない。
つまり、バグを完全に見つけ出すコンパイラは書けない。
よって、バグのでない言語はない。
129デフォルトの名無しさん:int 2ch =05/04/02(土) 01:49:42
なんかかなり好意的に読まないとわけわかんない文章なんだけど。
130デフォルトの名無しさん:int 2ch =05/04/02(土) 02:07:07
だったら好意を持ってくれ。
131デフォルトの名無しさん:int 2ch =05/04/02(土) 02:17:58
>>129
ところで、どのあたりがわけわかんないの?書き直すから。
132デフォルトの名無しさん:int 2ch =05/04/02(土) 03:03:45
>>131
129ではないが、128だけでは日本語としてかなり足りない部分があると思う。
単に言葉を並べただけで、論理展開を説明する文章になってない。
133デフォルトの名無しさん:int 2ch =05/04/02(土) 03:27:33
>>132
論文風に書けばいいのかい?
134デフォルトの名無しさん:int 2ch =05/04/02(土) 03:38:56
停止って何よ
135デフォルトの名無しさん:int 2ch =05/04/02(土) 03:39:48
それ以前に前提が間違っている。
136デフォルトの名無しさん:int 2ch =05/04/02(土) 03:55:48
>>135
どの前提よ
137デフォルトの名無しさん:int 2ch =05/04/02(土) 04:10:56
>>135
プログラムが停止するかどうかを判定できない、の部分なら証明済みだよ
138デフォルトの名無しさん:int 2ch =05/04/02(土) 09:38:02
>(関数は必ず返り値を持つものだけど)
139デフォルトの名無しさん:int 2ch =05/04/02(土) 10:53:04
とりあえずバグを消すのには、エディタを作るべきだと思う。





言語に求められているのはただひとつ。
代入記号と同値記号を全く別物にすること。

あと>>125サンクス。
140デフォルトの名無しさん:int 2ch =05/04/02(土) 11:25:30
>>138
必ず持たなければならないよ。voidであっても返り値は持つ。
141デフォルトの名無しさん:int 2ch =05/04/02(土) 11:28:24
>139
Algol, Pascal
142デフォルトの名無しさん:int 2ch =05/04/02(土) 11:50:35
なぜあの言語がでてこない?
143デフォルトの名無しさん:int 2ch =05/04/02(土) 11:52:05
あのってなんだ
144デフォルトの名無しさん:int 2ch =05/04/02(土) 11:52:58
Haskellをモデルにしてさらなる拡張をしようじゃないか。
いまのところHaskellが最先端でしょ?
145デフォルトの名無しさん:int 2ch =05/04/02(土) 11:56:19
>>128
それはメモリを無限に使って良い場合だよね。
メモリの上限が決まっていれば停止性は極めて簡単に判定できる。
146デフォルトの名無しさん:int 2ch =05/04/02(土) 12:01:42
>>145
原理的に可能というだけで、簡単に判定できるとは思えないのだけど。
147デフォルトの名無しさん:int 2ch =05/04/02(土) 12:01:55
>>145
それはメモリの上限を越えたら停止しないってことにするわけ?
それは実行してみないと解からないことだからコンパイラでは実質不可能だよね
148デフォルトの名無しさん:int 2ch =05/04/02(土) 12:21:07
メモリに上限があるときには、理論的には全ての組み合わせを検証できるわけ。
そうすると無限ループとかもわかる。
149デフォルトの名無しさん:int 2ch =05/04/02(土) 12:25:44
>>148
どういう場合のことを言っているのかよくわかんない。
例を出してみてくれる??
150デフォルトの名無しさん:int 2ch =05/04/02(土) 12:26:19
そして、全ての場合に成り立つの?
151デフォルトの名無しさん:int 2ch =05/04/02(土) 12:26:41
リファレンスぶっ飛んで自分のプログラム領域を破壊していてもわかるの?
152デフォルトの名無しさん:int 2ch =05/04/02(土) 12:29:36
>>151
明示的なポインタを禁止すればそういうこともなくなる。
153デフォルトの名無しさん:int 2ch =05/04/02(土) 13:06:51
メモリ上にプログラムとデータを置いて、
いつでもメモリの状態を記録したり、値を設定できるようなエミュレータを考える。
メモリのサイズは有限とする。
(レジスタやHDDも値を保存するものなのでメモリに含める)

メモリのサイズが有限なので、全ての状態について
次のステップでメモリがどうなるかを調べることができる。
(プログラム領域を壊すことも含まれる)

現実的なサイズのメモリに対して、全てを調べるというのは不可能だと思うけど、
理論的にはできる、という話。

要は有限オートマトンです。
154デフォルトの名無しさん:int 2ch =05/04/02(土) 13:10:14
>>153
それは実際に実行するよりも時間がかかるので…あまり…意味なかったり^^;
まぁ、メモリは無限ってことで考えようよ。
155デフォルトの名無しさん:int 2ch =05/04/02(土) 13:35:04
無限ループから自ら脱出しない関数は想定しなくていいの?
関数から脱出しない(当然返り値もない)のに正しいわけだが。
156デフォルトの名無しさん:int 2ch =05/04/02(土) 13:38:14
>>155
全ての場合ではなく、ある制約上では判定できそうだね

誰か証明して〜
157デフォルトの名無しさん:int 2ch =05/04/02(土) 14:24:18
>>155
プログラムで使用される全ての変数を監視し、同じ組み合わせが過去に1回以上現れたら
無限ループと判定出来る。何故なら、全ての変数は高々有限通りの値しか取らないから。

整数同士の割り算をしたときに無限小数になるけど、途中で出てくる「余り」が有限の値しか取らないため、
有限時間で無限小数か否かを判別できるのと同じこと。
但し、余程小さなプログラムで無い限り、プログラム内の全ての変数の組み合わせは天文学的な数になるので、
現実的ではない。

それでも、while の終了条件が現れるかどうかを検証したり(3n+1問題のような未解決問題を含む場合は無理)、

for (i=start; i<goal; i--)/* start < goal */

のようなコードに対して警告を出すようにすれば、ある程度バグを抑えることが出来る。

再帰関数の場合も、終了条件が書かれていなければエラーとする方法がある。


余程高度な(巨大という意味ではなくて、数学的に)プログラムでない限り、
停止条件の判別はそれほど難しくないはず。
158デフォルトの名無しさん:int 2ch =5,2005/04/02(土) 15:00:43
でも、こんなめんどくさくメモリをモジュール領域と分離して常時監視するようなスタックもなく
とろそうな言語(と言うより環境つーか、Smalltalk?)を作るのは、きっとC++かCなんだよね?
159デフォルトの名無しさん:2005/04/02(土) 22:15:07
>158
理論と実装の違いがわかってないアホ発見!
160デフォルトの名無しさん:2005/04/02(土) 22:18:03
「メモリの管理が完璧に行える=バグがでない」という認識のもとで議論が進んでるようなの
ですが、そもそもそーゆーもんなんですか?あんまり低次元の言語使ったことないからわか
らんのよ。やっぱメモリうんぬん言ってる人はCやアッセンブラの使い手なのかしら。
161デフォルトの名無しさん:2005/04/02(土) 23:28:18
>>160
理論だからメモリと言ってるのだけど、
本当はレジスタとか補助記憶とかネットワークとかも含まれるわけ。
そんでありとあらゆる状態を把握して、こういうときにはこうなる
ということがわかっていればバグは出ない、という直感的には当たり前な話。
もちろん現実には全ての状態を把握することはできないし、
理論上でもメモリが無限にあったら状態は把握できない。
162デフォルトの名無しさん:2005/04/03(日) 07:42:59
いきなり低レベルな話だが、
m_memberとかmember_とか_memberとかややこしいので言語仕様として命名規約を定めてほしい。
163デフォルトの名無しさん:2005/04/03(日) 10:54:43
>>162
あなたはfortranの悪夢を再現したいのですか?
164デフォルトの名無しさん:2005/04/03(日) 11:53:28
Cが「バグの出やすい言語仕様」である事を(しぶしぶながら)認める。
#だってCにはそんな設計思想ないもん
165デフォルトの名無しさん:2005/04/03(日) 11:57:23 BE:42530562-##
VBは??
166デフォルトの名無しさん:2005/04/03(日) 13:02:28
C系の言語(C,C++,Javaなど)やFortranなどしか扱った事がない人は一度StandardMLなどの言語を扱ってみることを奨めてみるテスト。
167デフォルトの名無しさん:2005/04/03(日) 13:19:40
どの言語でも、アホが書けばバグが出る。
まともな奴が書けばバグは出ない。
168デフォルトの名無しさん:2005/04/03(日) 13:41:29
「プログラミング言語なんて,一つ知っていれば十分だ」
と考えている人がいるかもしれないが,それは大きな間違いだ.
確かに,どのようなプログラミング言語を使ったとしても,その記述能力はチューリングマシンと同じである.
しかし,「プログラムを記述することができる」ということと「プログラムを自然な形で,容易に記述することができる」
ということには大きな隔たりがある.
プログラミング言語というものは,ある特定の目的を想定して設計されているから,与えられた問題に対して適切な
プログラミング言語を選択することは,そのプロジェクトの成否を左右する重要なことだ.
169デフォルトの名無しさん:2005/04/03(日) 14:09:33
>>168
そうでもなかったりするんだよな

Cかアセンブラができれば、まず間違いなく殆どのことができる。
(まー、アセンブラは別の意味でダメだろうけど)

Cもライブラリを作って、あとはロジックだけ入れれば動くような
資産を作っておけば、他の言語とあまり開発効率も変わらない。
ただし、習得までに時間が掛かるので、使われていないだけ。
特に大規模な場合、技術者が集まらない。

そんな俺も今メインの仕事はJAVAだがな。
170デフォルトの名無しさん:2005/04/03(日) 16:02:38
ぽかーん
171デフォルトの名無しさん:2005/04/03(日) 18:08:34
1つの言語という概念を捨てる。どこの国の言語や方便でも対応できる。
「B747で羽田から伊丹まで運行するフライトシミュレータ」と打つだけで開発できる。
コンピュータは隅々まで完璧なものを作ろうとするのでそこを制限する。
人間が可能性を作り上げるのではなくコンピューターが作ろうとする無限を
人間がここまで開発するというゴールを決めるだけ。
これぞ誰もが求める最高の言語だ。
172デフォルトの名無しさん:2005/04/03(日) 18:21:33
そして人間が、B74はどういう物かという情報を入力し間違えて事故になる


結局、どんなに簡単にしても駄目な奴は駄目
173デフォルトの名無しさん:2005/04/03(日) 18:43:26
プログラミング言語はJAVAが最期のメジャー言語。
もう、終わったんだっ!終わったんだよっ!!!!!!!!
チクショウっ!
174デフォルトの名無しさん:2005/04/03(日) 18:45:47
そうだね、>172のように飛行機の機種を間違えるようじゃ危なくて仕方ないよな。
175デフォルトの名無しさん:2005/04/03(日) 18:57:54
>>171
名指しで人を殺せと命令したらネット伝ってどこかの政府機関にアクセスして
その人の家に向けてミサイル発射させたりするんだろ?
176デフォルトの名無しさん:2005/04/03(日) 19:01:07
>B74はどういう物
Bカップ74cmじゃなかったのか。。。
177デフォルトの名無しさん:2005/04/03(日) 19:47:46
>>169
お前もしかしてアホ?
178デフォルトの名無しさん:2005/04/03(日) 19:50:02
この前からナンセンスなことばかり言っていたやつかい?
まぁ、いいか、と思ってスルーしていたけど、いい加減考えてから書き込んでくれ。
179デフォルトの名無しさん:2005/04/03(日) 20:07:33
自作自演のにおいを感じる
180デフォルトの名無しさん:2005/04/03(日) 20:15:02
>>179
>>177>>178は続きね。
181デフォルトの名無しさん:2005/04/04(月) 13:13:09
非正格な方が定義の順番を気にしないでいいからバグが減ると思うんだけど、どうだろう。
182デフォルトの名無しさん:2005/04/04(月) 13:40:56
結局関数型言語が最強ってことか
183デフォルトの名無しさん:2005/04/04(月) 14:22:33
でもhaskellまでいくと理解できる人がほとんどいなくなっちゃんだよね。
184デフォルトの名無しさん:2005/04/04(月) 14:27:43
バグの出やすい言語から出にくい言語を推測してみるのはどうだ?
185デフォルトの名無しさん:2005/04/04(月) 20:01:39
あれだ、再帰と束縛だけ定義した言語ってのはどうだ?制御構造は再帰だけでできるし。
186デフォルトの名無しさん:2005/04/04(月) 20:04:58
意外と再帰でループ書くのって面倒だよ
SchemeやMLみたいにnamed-letやlet recみたいな特殊構文ないと
187デフォルトの名無しさん:2005/04/04(月) 20:06:35
実はif文も入らないから非常にシンプル。
再帰でループって別に慣れたらむずかしくないと思うけど…
188デフォルトの名無しさん:2005/04/04(月) 20:07:19
あとcdeclだと末尾コールのフレーム縮小できないんだよね
全部stdcallにするか、根本を変えるしかない
189デフォルトの名無しさん:2005/04/04(月) 20:07:43
>>187
無知が適当こくなよ
190デフォルトの名無しさん:2005/04/04(月) 20:08:42
>>189
??えと、どこか間違ってる???
191デフォルトの名無しさん:2005/04/04(月) 20:10:29
>実はif文も入らないから非常にシンプル。
無知が

>再帰でループって別に慣れたらむずかしくないと思うけど…
>>186
適当こくなよ
192デフォルトの名無しさん:2005/04/04(月) 20:17:22
factorial 0 = 1
factorial n = n * factorial (n-1)
193デフォルトの名無しさん:2005/04/04(月) 20:21:56
>>186
let recって束縛でしょ?これがなんで特殊なの???
194デフォルトの名無しさん:2005/04/04(月) 20:22:45
あのなあ、それでif文消えても、なんか増えてるだろ、おい
195デフォルトの名無しさん:2005/04/04(月) 20:23:12
>>194
何が増えてるの?
多重定義しただけじゃん。
196デフォルトの名無しさん:2005/04/04(月) 20:24:23
>>193
let recなしでループ書こうとか思ってんのか
197デフォルトの名無しさん:2005/04/04(月) 20:24:47
多重定義じゃないと思うなあ・・
198デフォルトの名無しさん:2005/04/04(月) 20:27:36
>>196
MLだとletの代わりにlet recって書かないとダメだけど、その言語だとそうだというだけで、束縛は束縛。同じ意味やもん。
199デフォルトの名無しさん:2005/04/04(月) 20:28:31
無知というより、頭悪いだけか
200デフォルトの名無しさん:2005/04/04(月) 20:29:30
>>199
なんだと!!!じゃ>>192はなんなんだよ!!!!
201デフォルトの名無しさん:2005/04/04(月) 20:30:57
多重定義じゃなかったらなんて呼ぶんだよ!!!
202デフォルトの名無しさん:2005/04/04(月) 20:31:27
条件式の数だけ関数を定義してくのか
おめでたい頭だな
203デフォルトの名無しさん:2005/04/04(月) 20:35:00
多相定義っていうのかな?
204デフォルトの名無しさん:2005/04/04(月) 20:37:07
>>203
おお、きっとそうだありがとう

>>202
めでたいかな…えへへ^^
205デフォルトの名無しさん:2005/04/04(月) 20:41:47
まあ関数型にはif文の他にもパターンマッチによる分岐があると言いたかった、と
206デフォルトの名無しさん:2005/04/04(月) 20:43:53
>>205
いいや、再帰と束縛で全部かけるっていいたかったんだ!!!
207デフォルトの名無しさん:2005/04/04(月) 20:50:00
オトコって都合良いこと言うわよね
208デフォルトの名無しさん:2005/04/04(月) 20:53:24
>>207
惚れ直したかい?奥さん。ってキモいってキモすぎるお前もキモいんだよ!!!!糞ネカマにまで馬鹿にされちまった。
209デフォルトの名無しさん:2005/04/05(火) 12:30:41
>>192 (if 文からは話それるけど)

factorial (-1) だと無限loopになるよね。

この点はadaだと、ループの終了条件をコンパイル時に検出できるけど。
Haskellでは、これをチェックする仕組みとかあるのかな?

>>193
束縛される名前の有効範囲が違う。
210デフォルトの名無しさん:2005/04/05(火) 12:45:43
>>209
adaは知らないのだけど、haskellでは停止性判定なんてできないよー。そもそも停止性って判定できないでしょ?
211デフォルトの名無しさん:2005/04/05(火) 12:51:43
>>209
それに、ループの終了条件はプログラムを組む時点で書いてやらなくちゃいけないもん。
212デフォルトの名無しさん:2005/04/09(土) 14:08:24
まぢれす。BrainF**kにしたまえ。この板のどこかにあるから。
213デフォルトの名無しさん:2005/04/09(土) 14:09:24
>>212
なにをBrainfuckにするの?
214デフォルトの名無しさん:2005/04/09(土) 19:37:55
スレタイトル間違ったな。
あまりにも漠然だ。
だからー王道としては「バグとは?」っていうところからハイらなきゃならんでしょ。
制約を大量につける方向の意見がたくさん出てたけど、DBの設計とかでも
主キーさえ設定されていないシステムとかあるからなぁぁぁぁ。。ホント良くうごいてると思うよ。
215デフォルトの名無しさん:2005/04/10(日) 02:26:21
絶対に欲しい言語仕様
・ 一つの関数 (って概念が無ければロジックの塊) が50行を超えることはできない
216デフォルトの名無しさん:2005/04/10(日) 02:40:56
普通にswitch文入ると50行超えそうだよ
217デフォルトの名無しさん:2005/04/10(日) 03:06:09
http://www.rubyist.net/~matz/20050402.html#p02

空白の使い方に自由度がありすぎる、
TOOWTDI (There's Only One Way To Do It) 原則から言えば望ましくない。
よって、

    * インデントは厳密に空白4つ。タブ問題もこれで解決。
    * 冗長な括弧は禁止(例: return (1) は駄目、return 1が有効だから)。
    * 左括弧直後および右括弧直前の空白は禁止。
    * 引数括弧およびインデックス参照のブラケット直前の空白は禁止。
    * コンマやセミコロンの前の空白は禁止。
    * コンマやセミコロンには厳密に一つだけの空白(行末を除く)。
    * 行末のセミコロンは禁止(冗長だから)
    * 式の中で二つ以上の連続する空白は禁止。
    * 代入および比較演算子の前後には必ず空白が必要。
    * 演算子の左右の空白の量は等しくなければならない。
    * 式の中の空白の数に変化がある場合には
      演算子の優先順位を反映していなければならない。
      つまり、"1*2 + 3*4" は大丈夫だが、 "1*2 + 3 * 4" は駄目。
      しかし、推奨されるのは"1*2+3*4" である。
    * コロンの前の空白は禁止。
    * ディクショナリリテラルではコロンの直後に厳密に一つだけの空白。
      スライスのコロンの直後の空白は禁止。
    * ブロックの短縮形式 ("if x: y") は廃止。改行とインデントを使うこと。

というルールを導入する。
218デフォルトの名無しさん:2005/04/10(日) 03:12:18
>>216
switchで50行超えてる時点でダメ
219デフォルトの名無しさん:2005/04/10(日) 05:26:01
一ブロック30行以内。ブロック内に更にブロックを含む場合は、その行数を除いて30行以内。
Ex.
any func
{
...; // a
{
...; // b
}
...; // c
}
// b < 30, a + c < 30
更にネストの制限があればそこそこに抑えられるんジャマイカ。
220デフォルトの名無しさん:2005/04/10(日) 07:43:57
>>218
長すぎる関数はダメだと俺も思うが、どうしても長くなってしまう、
かつ長くなっても問題ない代表例がswitchだろう。
バイトコードインタプリタとか、オートマトンとか、長〜いswitch caseになり、
かつそれがさして問題にならないケースは多い。

目安だけど、case間で共用する変数が少なければいいんじゃないかね。

関数は何があっても××行以下でなきゃいかん!! という意見の方がよっぽど
バカだと思うんだがどうよ。

参考リンク:
http://www.st.rim.or.jp/~phinloda/cprog.html
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.1.3.html
221デフォルトの名無しさん:2005/04/10(日) 07:58:45
>>220
その手のものを知ってれば218みたいなことを言いださないのは自明じゃない。
つまり218には全く情報工学的な知識がないってのは明らかなんだから
そのレベルに合わせてやんなよ。

30行とかいうアホみたいな制限つけても、
foo() {
...
return foo_2();
}
foo_2() {
...
return foo_3();
}
のようにtail callでカスケードして回避されたら本末転倒だね。
222デフォルトの名無しさん:2005/04/10(日) 09:47:49
>>218みたいな素人は口出すなよ。
ここで発言して良いのは少なくともコンピュータサイエンスの初歩を学んだ事がある人間だけだ。
223デフォルトの名無しさん:2005/04/10(日) 11:18:55
コンピュータサイエンスとswitchの行数がなんで関係があるのかw
224デフォルトの名無しさん:2005/04/10(日) 11:19:49
>>223
口出すなよ、素人。
225デフォルトの名無しさん:2005/04/10(日) 15:07:32
コンピュータサイエンスの初歩ってなにかな?
大学で情報処理関連の学科を修めること?
226デフォルトの名無しさん:2005/04/10(日) 15:21:14
>>225
自分で考えて判断しろ。未熟だと思うなら来るな。
227デフォルトの名無しさん:2005/04/10(日) 15:40:18
コンピュータサイエンス未修者どころか既知概がいるな
228デフォルトの名無しさん:2005/04/10(日) 15:48:54
他人に押しつける最低条件を提示しておいて、自分で考えろって(w
229デフォルトの名無しさん:2005/04/10(日) 15:57:39
コンピュータサイエンス関連の査読つき論文を一本でも書いたやつは素人では無いと判断しよう。
230デフォルトの名無しさん:2005/04/10(日) 16:33:35
最近switch文なんか使わないな
つうか普通分岐が多くなったら保守性を考えて
ジャンプテーブルとか多態を使うとかするだろ
そういう意味じゃ>>218のいう事はわかるけど

コンピュータサイエンスの初歩ってなんだろうな
231220:2005/04/11(月) 02:28:07
>>230
たとえばバイトコードインタプリタだと、

case I_ADD:
 stack[sp-2] = stack[sp-2] + stack[sp-1];
 sp--;
 break;

程度のcaseがずらずら並ぶことが多いわけよ。
こんなもん、ジャンプテーブル(関数ポインタのテーブル?)や多態を使って
書いたとして、何かいいことあるか?

Plaugerの「プログラミングの壺」でも、switch caseはサブルーチンが長くなっても
しょうがないケースとして挙げられていたと思う。
232デフォルトの名無しさん:2005/04/11(月) 12:25:29
古い表現だが。
「情報的強度を持つ」と表現されるモジュール/関数かな
233デフォルトの名無しさん:2005/04/24(日) 15:41:57
トレンドマイクロのウィルスバスターが原因のシステム障害。
これ、絶対に「バグが出にくい言語仕様」とかいうレベルで解決できるバグじゃないっしょ。

真相はわからないけど、
Windows SP2 のあるファイルをウィルスと誤検出して何度もアタックしてCPU使用率100%
になってしまってるそうです。いつもは、「隔離に失敗しました」とか出るけどね。今回はなんでかね。

まともにテストやってれば絶対防げるたぐいの障害だったと思うんだが、
テストしてないとかってもう問題外だよね。( ´,_ゝ`)プッ
234デフォルトの名無しさん:2005/04/24(日) 16:34:11
しかし代替しようにも物が某ノートンしかない現実
235デフォルトの名無しさん:2005/04/25(月) 10:30:02
avast! や AVG でいいんじゃない。
ClamAV はマクロウィルスが弱いなぁ。
236デフォルトの名無しさん:2005/04/29(金) 00:53:19
関数型言語はHowではなくWhatを書くというがまだまだHowを書いてるように思う。
ソートとかでも
sort(array)
{
return x,x in permutation(array),all i in 0..array.length-2,x[i]<=x[i+1];
}
みたいに書けないもんだろうか。もしこれでいけたらバグも減ると思うんだが。
237デフォルトの名無しさん:2005/04/29(金) 00:55:37
>length-2
一目でバグの予感のするコードだな
238デフォルトの名無しさん:2005/04/29(金) 00:56:14
>>236
同じのをHaskellで書いてみな
239デフォルトの名無しさん:2005/04/29(金) 09:01:26
バグが出にくくするには、一文字入力する毎にすべてをチェックする、強力なプロセッサがあればいいのでは
240デフォルトの名無しさん:2005/04/29(金) 09:04:55
eclipseはそれに近くねーか。
241デフォルトの名無しさん:2005/04/29(金) 09:37:13
>>236
ソートにO(n!)かかりそう。
242デフォルトの名無しさん:2005/04/29(金) 10:00:18
ランダムに置き換えてソートされていたら終了するていうアルゴリズムどうかな
運がよければ一発でソートできるかも
243デフォルトの名無しさん:2005/04/29(金) 10:52:45
バブルソートでも、運がよければソートする前にもうソートされてるかも
244デフォルトの名無しさん:2005/04/29(金) 10:58:10
それは入力データに依存してるじゃない
ランダムソート法では入力データには依存しないことが証明されている
「運」という概念をプログラミングに持ち込むというわけ
勝ち組のためのプログラミング手法ね
245デフォルトの名無しさん:2005/04/29(金) 12:14:19
ワラタ
246デフォルトの名無しさん:2005/04/29(金) 18:57:19
意外と笑い話でないかも
実用範囲で実現するはずはないが
並列にすべての入れ替えをやらせてみて
失敗したものは殺すという具合に
247デフォルトの名無しさん:2005/04/29(金) 20:10:32
Prolog みたいな言語だと、そういうのが普通だったり。
実際に並列処理できるかどうかは別として。
だからパズルなんかに強い。
248デフォルトの名無しさん:2005/04/29(金) 23:13:09
>>246-247
そんなことは、ちょっと考えれば誰でも思いつくと思うんだけど...。

http://www.google.co.jp/search?hl=ja&q=%E3%82%B2%E3%83%BC%E3%83%A0+%E4%B8%A6%E5%88%97%E6%8E%A2%E7%B4%A2&lr=
249デフォルトの名無しさん:2005/04/30(土) 21:24:30
誰でも思いつくからといって
特許にならないというわけではない
250デフォルトの名無しさん:2005/04/30(土) 22:47:07
誰も特許の話なんかしてないわけだが...。
251デフォルトの名無しさん:2005/05/11(水) 15:37:16
>>242
発想が10年遅い
まあこれからは君もシャッフルソートの普及につとめるのだ
252デフォルトの名無しさん:2005/05/20(金) 18:47:12
236のコードでコンパイラがソートだと認識できれば
最適化でクイックソートのコードを吐けるんじゃないかな。
253デフォルトの名無しさん:2005/06/03(金) 22:59:50
ソートとか懐かしいな。クイックソートのアルゴリズムを、友人とあーでもないこーでもないと
言いながら考えてた頃が一番楽しかった。今では苦痛でしかないが。

んで、>>242の言うランダムソートって早い?速さの期待値ではバブルソートと同じに思うんだが。

254デフォルトの名無しさん:2005/06/03(金) 23:34:41
そこまで速いわけねーし、つまらん。
255デフォルトの名無しさん:2005/06/04(土) 02:53:57
>>248
>この世の果てて恋を唄う少女YU−NO
>このゲーム、並列世界を探索しているときは、2で書いたとおり高いストーリー性と
>ゲーム性を有した作りになっているのですが、目的の場所であるデラグランドではそう
>でもなくなります。ルート分岐はないですし、アイテムを使ってゲームを進展させていく ...
>homepage3.nifty.com/konbatto/yu-no.htm - 18k - キャッシュ - 関連ページ

何が言いたいのかわからん・・
256デフォルトの名無しさん:2005/06/04(土) 18:56:35
エロゲヲタの普及活動はキニシナイ
257デフォルトの名無しさん:2005/06/07(火) 22:18:46
236のまね。
だれか解読してくれ。

u(sequence<vertex> x)
{
return all i,j in x.index , i!=j
 {
  x[i]!=x[j];
 }
}

l(graph g)
{
return { x in g.vertex.subsequence |
       u(x);
       x.length>=3;
       all i,i+1 in x.index
       {
         {x[i],x[i+1]} in g.edge;
       }
       {x[0],x[x.length-1]} in g.edge;
      }
}

is_t(graph g)
{
  return l(g).length==0;
}
258257:2005/06/07(火) 22:24:58
しまった。
一箇所プログラム間違ってた。
まあ、いいや。大筋はあってるし。
259デフォルトの名無しさん:2005/06/07(火) 23:10:50
>>236 とか >>257 みたいなのは、 Prolog 辺りでなら素直に書けると思うけど。

>>236 なんかは

ascending([]).
ascending([_|[]]).
ascending([H|T]) :- [S|_] = T, H =< S, ascending(T).

sort(List, Result) :-
permutation(List, Result), ascending(Result).

だいたいこんな感じで、ちゃんと動くし。
260デフォルトの名無しさん:2005/06/08(水) 22:03:55
Prologのことは知らんがそれはO(nlogn)で動くわけ?
261デフォルトの名無しさん:2005/06/09(木) 01:24:26
もちろん動かない。
順列作って一つずつチェックするんだから、 O(n!) とかじゃないかな。
262デフォルトの名無しさん:2005/06/12(日) 03:16:58
ランダムソート法の話が出てるが量子コンピュータ使えば実現の可能性は無くも無いな
まあ、要素4つまでですとか、激しく実装制限付きそうだが
263デフォルトの名無しさん:2005/07/07(木) 09:11:57
バグ低減に関係あるかわからないけど
ちょっと思ったことをチラシの裏。

ある float i は0.0〜∞までの値域を持ち、
1.0以上の値を入力されるとループして
必ず0.0〜1.0の間に収まるように処理される。
そしてこの float i を受け取る関数 void f( float i ) があるとする。
皆さんが f を設計する場合 i に大して何らかのチェックを設けるだろうか?
もし自分なら、i が値域に収まるよう加工すると思う。

void f( float i ){
i = upper_loop( i, 1.0 );
・・・

しかし、これだと f を呼び出す側がちゃんと値域に収めていた場合、
同じ処理を2度行うことになり無駄になってしまう。

i = upper_loop( i, 1.0 );
f( i );

この例以外にも、たとえばNULLチェックなど
当てはまるケースは少なくないように思う。
これを静的に回避出来るような仕様をもった言語は今存在するだろうか?
回避することは可能だろうか?
264デフォルトの名無しさん:2005/07/07(木) 10:27:17
負けずにチラシの裏
「もし自分なら」のほうが正しい
0.0〜1.0の値域をもつ変数型を定義可能に
回避する事に意味があるとは思わない。
仕様明示すれば無駄なことする奴はいないだろうし、いたとしても呼ぶ側の問題
265デフォルトの名無しさん:2005/07/07(木) 10:52:03
>>263の言いたいことは判らんではないのだが、>>264はいっちょん判らん。
#まぁ、チラシの裏だからな。
266デフォルトの名無しさん:2005/07/13(水) 23:29:18
>>262
4つまでじゃバブルソートでもよさげだな
267デフォルトの名無しさん:2005/07/14(木) 11:54:25
現場からの声っぽく書いてみる。

Java の言語仕様はメモリーリーク系のバグが出にくいよ。
変に気を使ってメモリー管理するプレッシャーから開放された。

いま、変に気を使っているのはスレッド。
スレッド関係のバグ多いよ。めちゃくちゃ気を使う。
言語仕様のレベルでスレッド絡みのバグが出にくいものなんて
できると嬉しいねぇ。
268デフォルトの名無しさん:2005/07/14(木) 16:15:11
現場じゃなくたってみんな感じてることだよそれは。
269デフォルトの名無しさん:2005/07/17(日) 22:49:59
スレッドを使ったプログラムを書いたことのないへたれなおれに
どの辺が気を使うのか教えてクレ。
270デフォルトの名無しさん:2005/07/19(火) 13:27:05
>>269
如何にまともな人間に書いてもらうかが、一番気を遣うと思われ。
#まさかへたれを自認しているのに自分で書く気を起こすわけじゃないよな?
271デフォルトの名無しさん:2005/07/19(火) 20:11:49
最初はみんなへたくそ(≠へたれ)。
272デフォルトの名無しさん:2005/07/20(水) 00:45:43
>>269
デッドロック
273269:2005/07/20(水) 21:02:43
デットロックて食事する哲学者とか?
そんなのもう解決した問題かとおもてた。
現実はもっと複雑になるのかな?
274デフォルトの名無しさん:2005/07/21(木) 17:33:15
>>273
スレッドを使ってプログラミングしてみると良い
275デフォルトの名無しさん:2005/07/21(木) 20:34:25
って言うか、解決してる。
276デフォルトの名無しさん:2005/07/23(土) 01:32:54
>>275
まずはお前の言う「解決してる」の定義を説明してみろ。
277デフォルトの名無しさん:2005/07/23(土) 03:47:42
1.5使ってみればよい話なんじゃないの?
278デフォルトの名無しさん:2005/07/23(土) 16:43:28
1.5とはなんじゃらほい
279デフォルトの名無しさん:2005/07/23(土) 17:26:53
話の始まり(>>267)がJavaだからSDKのバージョンのことじゃない?
1.5でスレッドの何が改善されてデッドロックが起きなくなったのかは知らないけど
280デフォルトの名無しさん:2005/07/23(土) 19:21:11
次期C++では
const句,throw句の他に
cpp句でcスタイルのプログラムを出来なくして欲しいね。
281デフォルトの名無しさん:2005/07/23(土) 19:44:30
別に JDK5.0 (1.5) でも、スレッド周りの言語仕様は何も変わってないよ。
>>275 はいい加減なこと書いて釣りしてるだけじゃないのか?
282デフォルトの名無しさん:2005/07/23(土) 21:50:01
>>267
Cωにそんなのなかったっけ
283デフォルトの名無しさん:2005/07/23(土) 21:52:56
>>263
性的に回避したいのなら、
f( float i ) {
assert( 0 <= i && i <= 1.0 );
}
でよいような。。。
284デフォルトの名無しさん:2005/07/23(土) 23:16:48
>>283
assertではリリースビルドでは消えてしまうし
結局関数fに範囲外の値が渡されてしまう可能性が残ってしまう。
そういった「もし○○でなかったら〜」という受身の姿勢ではなく
「○○である保障をつける」というアプローチが出来れば、
より安全になるし、余計な処理も減るし、最適化も効きやすくなるんではないかと。

例えば、楕円体の物体と点との衝突判定する関数がある。

bool detect_collision_of_point_and_ellipsoid( const vector3& point, float_t radiusR, float_t radiusS, float_t radiusT)
{
assert( radiusR != 0.0f && radiusS != 0.0f && radiusT != 0.0f);

const float_t m = radiusR / radiusS;
const float_t n = radiusR / radiusT;
return point.x * point.x + m * m * point.y * point.y + n * n * point.z * point.z <= radiusR * radiusR;
}

radiusSとradiusTは除数になるのでゼロであってはならない。
半径がゼロでは楕円体として存在できないから、この制限は当然と言える。
だったら最初からradiusSとradiusTは、ゼロには絶対にならないという保障を付けてしまえばいいとか。
XMLってこれと似たような仕様を持っていたような・・
285デフォルトの名無しさん:2005/07/23(土) 23:26:09
計算の度に0になって無いかチェック入れないとダメじゃん。
286デフォルトの名無しさん:2005/07/23(土) 23:29:07
なんでいきなりXML。DbCを知らんのだろうか?
287デフォルトの名無しさん:2005/07/24(日) 00:19:28
デバッガ上とかで、デッドロックそのものって検知できる?
「今こことここでデッドロックしてますねざまーみろ」と言ってくれるような
デバッガってありますか?
288デフォルトの名無しさん:2005/07/24(日) 02:25:48
COBOLでの話@JavaWorldだが、変数名を漢字に書くようにしたらしたらバグが1/3減ったらしい。
たしかに、ケアレスミスは減りそう。

案外日本語プログラムでまともなのがでたらいいのかも。
289デフォルトの名無しさん:2005/07/24(日) 03:02:11
日本語で文章を書いても>>288のようなごくごく短い文ですらケアレスミスを含む
ようでは、その効果はあまり期待できなさそう。
290デフォルトの名無しさん:2005/07/24(日) 08:13:02
PHPをはくホームページビルダーみたいなソフトが、オープンソースで開発されて、
大量のプラグインが供給されれば、最強じゃない?プログラムを書かなくていいんだし
みんなプログラムをしなくていい、SEになろうぜ
デスマからも開放で最強
291デフォルトの名無しさん:2005/07/24(日) 08:23:16
>>289
連番を振っただけの変数名よりは遥かにマシだと思う。
292デフォルトの名無しさん:2005/07/24(日) 10:20:12
一バイトかなだらけの糞ソースが誤変換だらけの糞ソースになるだけだろ。
293デフォルトの名無しさん:2005/07/24(日) 10:56:18
>>291
連番を振るような人は日本語にしても連番振るんでない?
294デフォルトの名無しさん:2005/07/24(日) 12:24:19
壱弐参四五六七八九拾
295デフォルトの名無しさん:2005/07/24(日) 13:28:12
最終的にはリファクタリングするとして、最初のクラス図を書いてソースコードを
生成する部分には日本語が使えると便利だと思う。
296デフォルトの名無しさん:2005/07/24(日) 13:35:06
普通に日本語も使えると思うのだが。
好むかどうかは兎も角、kaisuuなどとローマ字綴りをしてもいいし、
変換するスクリプトを一つ書いておくだけでもいいと思うぞ。
297デフォルトの名無しさん:2005/07/24(日) 14:09:20
>>296
ん〜、て言うか、ぶっちゃけ、>>295を満たす様なEclipse用のプラグインが
欲しいんだよな。とか思ってたら普通に使えるし!>日本語

public class テストクラス {
 private Vector メッセージリスト;
 public テストクラス() {
  メッセージリスト = new Vector();
 }
}

こんなのを普通にコンパイルして実行可能だった( ゚д゚)ポカーン
普通に無理だと(Eclipseが文句言うだろうと)思って試してみた事もなかっ
たのが敗因か・・・・・・・・にしても、キモ!w
でも、やっぱ日本語は読みやすい。setメッセージ等というメソッドを見て
ると、やっぱ珍妙には感じるが・・・・・・
298デフォルトの名無しさん:2005/07/24(日) 16:16:23
>>297
日本語、結構便利だぞ。
学生の頃、フルアセンブリ言語のソース書いたときは
全てラベルをS−JIS全角で記したよ。
マクロはアルファベットで書いて住み分けして。
299デフォルトの名無しさん:2005/07/25(月) 00:37:53
英語だと先頭だけ大文字とか全部大文字とかして種類を区別できるけど
日本語シンボルだと難しいよね。何か妙案はあるかね。
300デフォルトの名無しさん:2005/07/25(月) 04:45:10
>>285
先の例の目的はあくまで静的にゼロチェックすることだ。動的にやっては意味がない。
たとえば「( A - ( B / C ) ) * D」という式があるとする。この解がゼロになる条件は自明的に得ることができる。
・A と ( B / C )が同じ値
・Dがゼロ
以上の条件をいずれも満たさない場合、この式の解は非ゼロであると保障することができる。

しかし、全ての値が静的に決まる訳ではない。人間による入力やファイルからの読み込み、時間や乱数など
動的にしかわからないものもある。
しかしその場合も上のように方程式を解くことによって、「動的に入力される値がこの値ならばゼロになる」のような
例えるなら「危険な値」を特定することが出来る。
301デフォルトの名無しさん:2005/07/25(月) 04:54:22
>>287
スレッドというのは手続き型言語の範疇を超えている。
その例は不適切だ。

自分的には、そもそもデットロックが起こる可能性のある手法を
なんとかデットロックが起こらないように組む、これがそもそも間違っているのではないかと思う。
例えば、今流行のGPUのShader言語は複数の処理が並列に実行されるがデットロックが起こることは
決してない。これが正しい並列プログラムのやり方だと思う。
302デフォルトの名無しさん:2005/07/25(月) 05:19:58
>>300

それを行うにはすべての関数で逆関数を求める必要があるから
事実上不可能だな。
まぁ言語仕様自体をそれが可能な範囲に制約してしまうという
アプローチもあるが、機能的にかなり限定された言語になって
しまうだろう。
303デフォルトの名無しさん:2005/07/25(月) 09:58:13
>>300
どうでもいいけどその例の場合、Cが0かどうかのチェックが先に来なくては意味がないね。
304デフォルトの名無しさん:2005/07/25(月) 10:18:07
>>2
的を射てるな。
システムを構成するコードが減れば減るほど保守性は向上する。
これには無理矢理トリッキーな手法でソースコードを短くする行為は含めない。

究極は彼の言うようにコードを一行も書かずにシステムを構築することだ。
それで客の要求を満たせるのであればそれはすべての人が幸せになる解決策だ。
305デフォルトの名無しさん:2005/07/25(月) 11:29:08
>>304
実務においてSEがその方針をとると、製作工数が発生しないので会社もSE自身も嬉しくない罠。
#更に市販ソフトのインストール作業と顧客へのチュートリアルをさせられる罠。
306デフォルトの名無しさん:2005/07/25(月) 14:00:34
>>305
なるべくコードを書かずしてカスタマイズする方法を確立すればいい。
エンジニアリングに工数も発生するが低級な面倒なバグは減る。
高レベルなバグは比較的取りやすいわけで。

だからフレームワークや○○ツクール的なアプリケーションの開発というのは有用だと思う。
307デフォルトの名無しさん:2005/07/29(金) 19:39:02
308デフォルトの名無しさん:2005/07/29(金) 19:42:32
俺のクラスにも307みたいなのいるよ。
309デフォルトの名無しさん:2005/07/29(金) 20:13:05
な ん だ こ れ は
310770:2005/07/29(金) 20:47:04
おれならMLでスマートに書くけどねw
311デフォルトの名無しさん:2005/07/29(金) 22:49:23
おれならハスキルルでエレガントに書くけれどね
312デフォルトの名無しさん:2005/07/30(土) 03:17:34
>>307
ぱんちゅ
313デフォルトの名無しさん:2005/07/30(土) 08:46:51
>>307
これだから絵かける奴は裏山しい
314デフォルトの名無しさん:2005/10/05(水) 00:13:54
100人でペアプロしよう!

もしくは、

1つの関数に3とおりの処理を記述し、すべてが一致しないと先に進めない処理系を作ろう。
315デフォルトの名無しさん:2005/10/08(土) 22:55:36
>>1
ポインタを使いこなせない「自称『C』使い」を排斥するだけで
解決するのでは?
316デフォルトの名無しさん:2005/10/10(月) 12:26:31
バグ出す奴=ポインタを使いこなせない奴
という考えが短絡的で愚か
317デフォルトの名無しさん:2005/10/10(月) 23:22:51
>>316
誰もそんな事言ってないようですが。
何か受信しちゃいましたか?
318デフォルトの名無しさん:2005/10/12(水) 11:59:26
悪い電波さ
319デフォルトの名無しさん:2005/10/13(木) 19:50:50
は?
320デフォルトの名無しさん:2005/10/13(木) 20:08:28
アルゴリズム単位で記述する言語
321デフォルトの名無しさん:2005/10/13(木) 20:23:13
それって関数型言語・・
322デフォルトの名無しさん:2005/10/13(木) 20:36:17
#私はいま、「車輪の再発明」を目撃したのだろうか?
323デフォルトの名無しさん:2005/10/13(木) 21:39:13
標準出力に文字列しか出力することができない言語
子息演算や関数やクラスという概念も無い。

これでバグはでない!
324デフォルトの名無しさん:2005/10/13(木) 21:51:56
仕様:「0l」を出力せよ。
実装:「O|」を出力。

ハイ、バグの出来上がり。
325デフォルトの名無しさん:2005/10/13(木) 22:44:51
OCRで読み込めばOK
326デフォルトの名無しさん:2005/10/14(金) 10:49:19
変数の値によって処理が分岐したり、繰り返しがあったり、いろんなことが出来るような
言語仕様だからバグがでるんだよ。その言語で出来ることを減らせばバグも経る。

例えば:
入力されたソースプログラムのバイト列のどこかに、一つでもビットが立っていれば、
68 65 6c 6c 6f 2c 20 77 6f 72 6c 64 0a という13バイトを出力し、
ビットが立っていなければ何もしない。という言語仕様。

これならバグは出にくい。
327デフォルトの名無しさん:2005/10/15(土) 03:50:16
最近、「継承」に懐疑的で、インターフェースだけでなんとかならないだろうか、と考えてます。
少なくとも「再利用できるから継承する」とか、「親クラスの機能を置き換えるために継承する」
というのは動機として不純だと思う。

どのオブジェクト指向言語も Object を頂点とした系統樹を育ててきたけれど、
言語によってそれは全然バラバラ。Java,MFC,C#しかり。SmallTalkも全然違う。
それって、考えてみれば変な気がする。
どれもオブジェクト指向なのに、そのとっても大事な系統樹が全然違うなんて。
そもそも、オブジェクトを系統立てること自体が間違いじゃないだろうか?

まず「クラス」よりも「インターフェース」が大事、と言うのは同意が得られるよね。
基本的にはインターフェースを中心に置いた設計がいいと思う。
継承の動機って何だろう?
その動機を他の形で置き換えられれば、継承は必要なくなるはず。
util的な実装に置き換えられないだろうか?
アスペクトの織り込みでできないだろうか?
328デフォルトの名無しさん:2005/10/15(土) 05:02:14
>>327
なんとなく同意。
329デフォルトの名無しさん:2005/10/15(土) 05:42:03
>>2
には割合同意。ただプログラムが皆無になるということはなくて、
プログラムはできるだけコンパクトにして、できるだけデータに追い出すってのは
正しい方向性だと思う。

ただあれね。文字ベースのコードってのは「書いてあること以外は何もないよ」っていう
安心感はあるから、細かい仕様を気にする以上そういった特質は必要なものだと思う。

>>327
も通った道だなぁ。
依存関係を減らすことがプログラムの独立性を上げて、再利用しやすくする道なのに、
継承ってのは非常に密接な依存性を導入してしまう。

327が言うように、あまり「継承が基本」みたいな言語仕様はよろしくない気はする。
リスクの少ない包含(has a)+インタフェース継承なんかを簡単に書けるほうが良いかもしれない。

interface I {
hoge();
fuga();
};
class A : implements I {
hoge();
fuga();
};
class B : implements I {
A a : hoge, fuga for I; // インタフェースIのhoge,fugaはaに対応させる
};

アスペクト志向はまだ勉強してないなぁ。
330デフォルトの名無しさん:2005/10/15(土) 13:08:32
>>327
だから継承とかインターフェースとかの技法は
「オブジェクト指向」とは何の関係もないんだよカスが
331デフォルトの名無しさん:2005/10/15(土) 13:37:26
ま、オブジェクト指向はアセンブラでもできる作法論であって、継承とかはただの言語仕様だからな。
332デフォルトの名無しさん:2005/10/16(日) 10:34:16
template じゃダメ?
333329:2005/10/16(日) 18:35:25
>>332
C++のだとすれば・・・
templateはもう1段階の複雑性を導入してる感じで、
バグが出にくい・・・とは相反する気がする。

うまく使えばバグ抑止に貢献するとはいえ、
ちょっと敷居(うまく使うために必要な知識レベル)が高すぎないか?
言語仕様的にバグが出にくいというからには、敷居は低めに設定する必要があると思うし。
334デフォルトの名無しさん:2005/10/16(日) 19:49:43
敷居が高いかねぇ……
335デフォルトの名無しさん:2005/10/17(月) 01:04:25
>>334
発想力のすばらしい人のコードを見るとたぶんそんな事は言わなくなると思う
336デフォルトの名無しさん:2005/10/17(月) 01:09:36
言語かライブラリか?
Javaはスレッドとかシリアライズとかを言語に取り入れていますよね?
synchronizedとか、transientとかがJava構文にあるのが何よりの証拠です。
今までの言語では、それらはライブラリ側の仕事をでした。
一方、C#ではeventやdelegateも言語仕様に含まれています。
どちらがいいんでしょうね?
337デフォルトの名無しさん:2005/10/17(月) 01:14:47
>>335
それはテンプレートに限らないと思うが。
338デフォルトの名無しさん:2005/10/17(月) 02:02:39
a-zより記号が多いからキライ。>template
339デフォルトの名無しさん:2005/10/17(月) 02:30:04
templateはエラーが意味不明ですさまじくデバッグしにくそうなんだが
340デフォルトの名無しさん:2005/10/17(月) 05:26:20
templateベースの頭の逝かれたライブラリは
バグ以前にコンパイルが通らねーからなぁ。
バグ防止にはそりゃいいかもな。
341デフォルトの名無しさん:2005/10/17(月) 11:53:27
>>336
プログラムを書く上で基本的な構造に大きく影響する機能は
言語に取り込んでしまったほうがいいんじゃないかな。
文法上わかりやすく記述できる可能性が高まるし。
342デフォルトの名無しさん:2005/10/17(月) 12:22:33
Schemeがいいよ
記述も簡単でバグで困ったことない
343デフォルトの名無しさん:2005/10/17(月) 12:50:06
>>342
かっこつけてるんじゃないよ
344デフォルトの名無しさん:2005/10/17(月) 12:51:48
>>338
lispとか存在自体が我慢ならないでしょ?w
345デフォルトの名無しさん:2005/10/17(月) 19:57:51
>>344
338じゃないが、正直LISPには我慢ならない。
再帰が人間に理解しやすいわけないじゃんか、と。
346デフォルトの名無しさん:2005/10/17(月) 20:34:11
>>345
人間に、ではなくて、お前に、だろ。
347345:2005/10/17(月) 21:27:04
>>346
もちろん再帰をやたら使ってあるコードは、俺にも理解しにくいよ。手続き的な書き方と比べるとね。
LISPのソースって、手続き的に書けるロジックでやたら再帰を使う傾向があるから、
そういう場面を指して言ってる。
とはいえ再帰が必要な場面も当然ある。

・・・とマジレスしてみた。
348デフォルトの名無しさん:2005/10/17(月) 21:29:10
まあ、使う人間の頭の中がバグだらけならどんな言語で作ってもバグだらけになるな
349デフォルトの名無しさん:2005/10/17(月) 21:51:10
LISPは演算子がない故に処理が手に取るようにわかるからなあ。
括弧に目をつぶれば全て同列に扱えるのは利点だな。
しかもC++テンプレート以上の記述能力を備えた超強力なマクロの存在がある。
まさに言語単体としては最強の開発ツールだろうな。
350デフォルトの名無しさん:2005/10/17(月) 22:08:18
Perlで@{${$hashname}{${$keyname}}}とかするのが最凶
351デフォルトの名無しさん:2005/10/17(月) 22:51:21
話はまずヴァルゲイン殿を作ってからだ。
352デフォルトの名無しさん:2005/10/17(月) 22:52:08
ヴァルゲインは作る側の頭にバグがあっても自動的に訂正してくれる。
353デフォルトの名無しさん:2005/10/19(水) 01:47:29
意味不明な単語を出して流れを止めないように・・・ どっかの小説かなんかのようだが
354デフォルトの名無しさん:2005/10/19(水) 01:53:08
そりゃ、メフィストフェレスだって、ロボットだって、小説の中の話だよ。
ライトノベルだからってなめてんじゃねーぞ。
355デフォルトの名無しさん:2005/10/19(水) 02:09:12
>>354
レスはぇぇよ

なめてないから、そんでどうすればバグの出にくい言語仕様になるんですか
356デフォルトの名無しさん:2005/10/19(水) 02:11:47
つまり、どんな頭の悪い人間でも思った通りのことをできるようにしようと思ったら、
人工知能チックになっちゃうね、っていうありきたりの話だよ。
357デフォルトの名無しさん:2005/10/19(水) 02:41:19
で、その人工知能の仕様は?
358デフォルトの名無しさん:2005/10/19(水) 02:43:40
それを含めて、まだ研究途上だろうよ。
359デフォルトの名無しさん:2005/10/19(水) 03:00:19
>>358
だから考えてくれよ。そういうスレなんだから。

人工知能って要はコンパイラ+インタプリタなんだろ?多少インテリジェントな。
360デフォルトの名無しさん:2005/10/19(水) 21:07:52
人工知能は作るのが難しいからもう人力で良いよ
361デフォルトの名無しさん:2005/10/20(木) 00:21:11
ゆとり教育弊害にあった職に就けないニート達を薄給でバイトとしてこき使えば
人工知能の代わりを果たしてくれるよ。
362デフォルトの名無しさん:2005/10/20(木) 00:23:28
>>361
いや、まじでゆとり教育初期の失敗世代は使えないから無理
363デフォルトの名無しさん:2005/10/20(木) 00:40:27
>>361
天然無能なんて、どこで使えるんだよ
364デフォルトの名無しさん:2005/10/21(金) 23:14:51
範囲チェックを文法に入れてしまうのはどうだろうか?
例えばこんな感じ。
var month: int(1..12);
その変数にアクセスするたびに、範囲チェックが走る。
相当遅くなりそうだけれど、コンパイルオプションで無効にもできる。
365デフォルトの名無しさん:2005/10/21(金) 23:22:15
ちなみに範囲外になると、java.lang.OutOfRangeExceptionが投げられます。
Javaではキャストやポインタチェック、配列の添え字のチェックをしているので、
範囲チェックをするのも悪くないかもしれない。
366デフォルトの名無しさん:2005/10/21(金) 23:28:30
エクセル使えばいいんじゃね?
367デフォルトの名無しさん:2005/10/21(金) 23:35:36
>>365
setter使えばいいんじゃないの?
368デフォルトの名無しさん:2005/10/21(金) 23:41:53
>>364-365
Pascal とかも知らないで、言語仕様を語ってるの?

>>367
ヒント: とかく、プログラマーはさぼりたがる。
369デフォルトの名無しさん:2005/10/21(金) 23:46:24
言語を知ってる知らないレベルの人間は、このスレではしばらくROMれ。
370デフォルトの名無しさん:2005/10/21(金) 23:59:58
ん?
車輪の再発明を指摘しただけだが、なんか気に障ったか?
371デフォルトの名無しさん:2005/10/22(土) 00:29:22
車輪の再発明というか、最近再注目され始めたDBCだろ。
このスレでもがいしゅつ。
372デフォルトの名無しさん:2005/10/22(土) 00:50:21
Javaのアノテーションみたく制約条件を書ける様にすれば良いんじゃね?
テストケースなんかもソースにぶち込めちゃうと良くない?
373デフォルトの名無しさん:2005/10/22(土) 02:50:08
何このスレ
>>1程度の脳味噌はすらばしいな
374デフォルトの名無しさん:2005/10/22(土) 13:37:45
オブジェクト指向とか、エージェント指向とか言って、新たなBUGが目立って来たな。
375デフォルトの名無しさん:2005/10/22(土) 20:52:34
覚えたつもり君たちが使ってますからね
376デフォルトの名無しさん:2005/10/24(月) 09:53:48
>>371
> 車輪の再発明というか、最近再注目され始めたDBCだろ。

遥か昔からPascalに備わっている機能だと何度いt(ry
377デフォルトの名無しさん:2005/10/24(月) 20:24:19
Del厨うざい
378UCLA とか書くなよ。 :2005/10/24(月) 21:46:08
>>377
ばか、UCSD に決まってるだろ。
379デフォルトの名無しさん:2005/10/24(月) 21:47:05
だから、範囲チェックじゃなくて制約条件がいいってば
380デフォルトの名無しさん:2005/10/26(水) 14:12:11
UnitTest メソッドかクラスを付けないとコンパイル通っても実行できない
381デフォルトの名無しさん:2005/10/26(水) 18:57:41
バグを生む主な原因
必要以上に分岐が多く複雑化し、作者の知能のレベルを超えた場合。
だれてもやりがちな例として、n要素nのm状態について場合分けして
n行m列の行列で表される連立方程式並みに複雑化。
俺の解決策
状態をそれぞれクラス化し状態の視点から事象を考えると
プログラムが簡素化する。
なおn,mが小さいときは無意味。
382381:2005/10/26(水) 20:34:48
Syntax Error wwww
n要素n-->n要素

俺の実例として、通信とゲームが別スレッドで動作してるプログラムで、
サーバー通信関係を全て1つのクラスで処理していたの(10万行)を改修し、
ゲーム状態別にクラスを作ってそれぞれに通信イベント処理機能をもたせたところ
異常に簡素化した。(2万行)
383デフォルトの名無しさん:2005/10/26(水) 21:02:31
381の知能レベルまで読んだ
384デフォルトの名無しさん:2005/10/26(水) 21:09:17
設計方法論と言語仕様を混同している方がいますね
385デフォルトの名無しさん:2005/10/26(水) 22:30:45
最長不倒関数 って言葉を思い出した
386デフォルトの名無しさん:2005/10/26(水) 22:31:44
アンチパターン って言葉も思い出した
387デフォルトの名無しさん:2005/10/27(木) 03:14:53
そもそも通信サーバプログラムに対して状態遷移を考慮した作りにしてない時点で糞
388デフォルトの名無しさん:2005/10/27(木) 10:28:36
悪い習慣のプログラミングをしてると、「あ〜ま〜え〜は↑〜あ↓〜ほ↑〜か↓〜」って
言ってくれる言語がいいかもしれない

389デフォルトの名無しさん:2005/10/27(木) 16:34:06
おじさま、もうおやすみになって…
390UCLA とか書くなよ。 :2005/10/28(金) 00:03:32
>>388
それは、処理系の仕事。

こちらへどうぞ
http://pc8.2ch.net/test/read.cgi/tech/1111363360/1-
391デフォルトの名無しさん:2005/10/28(金) 10:45:05
>>381
そういう考え方の言語なかったけ?
392デフォルトの名無しさん:2005/10/28(金) 11:53:05
プログラミング言語でバグが出易いのは、言語がとても繊細すぎるからだよ。
ほんの1文字間違えてもバグが出る。


もっと冗長でロバストな言語ならバグは少なくなるだろう。
実現したい仕様について、目的から書き始め、
目的については大目標から詳細項目まで、網羅しなければならない。

目的が記載し終わってから、方法 の記述に入るが
393デフォルトの名無しさん:2005/10/29(土) 18:20:20
テキストで書くから綴りミスやらが出るんであって、図形を組み合わせてプログラムすれば良いじゃん
394デフォルトの名無しさん:2005/10/29(土) 20:54:13
>>393
15角形を書くつもりが16角形を書いてしまうミスをするかもしれない。
395デフォルトの名無しさん:2005/10/29(土) 23:00:28
>>394
じゃあ色で
396デフォルトの名無しさん:2005/10/29(土) 23:21:17
RGB(0, 0, 0)とRGB(1, 1, 1)の区別ができません。
397デフォルトの名無しさん:2005/10/29(土) 23:52:29
じゃあ匂いで
398デフォルトの名無しさん:2005/10/30(日) 03:08:12
>>397
女の子の香りと秋葉系の臭いの区別は何とか付きます
399デフォルトの名無しさん:2005/10/30(日) 03:44:09
鼻が詰まったらバグに気付かない罠。
400デフォルトの名無しさん:2005/10/30(日) 05:41:19
そして華麗に400
401デフォルトの名無しさん:2005/10/30(日) 06:56:22
バグ捜査犬を育成しよう
402デフォルトの名無しさん:2005/10/30(日) 06:58:49
犬って目がいいの
403デフォルトの名無しさん:2005/10/30(日) 08:00:09
直ぐに無臭のバグが開発されて元の木阿弥
404デフォルトの名無しさん:2005/10/30(日) 08:43:11
prologでちゃんと動くコード書ければバグ率圧倒的に少なくなる気がする
405デフォルトの名無しさん:2005/10/31(月) 00:12:13
>>403
無臭と言う事は、NOPですね?
406デフォルトの名無しさん:2005/10/31(月) 19:43:00
>>404
波平とフネは夫婦、と書き忘れるかもしれない。



・・・Prolog=磯野家、というイメージが離れない・・・
407デフォルトの名無しさん:2005/11/12(土) 10:00:11
従来:
 // someFunction()はnullを返すかもしれない関数
 SomeClass instance = someFunction();
 // nullかどうかをチェックする必要あり
 if (instance == null)
   throw new NullPointerException();

新仕様:null を許すか,許さないかを区別する「null 拒絶識別子」

 // クラス名に ! がついている場合,そのままではコンパイルエラー
 SomeClass! instance = someFunction();

 // "(!null)" キャストの必要がある。
 // 自動で null チェックをし,null が返ってくれば例外発生
 SomeClass! instance = (!null) someFunction();

# (以上は「Curl」に備わっている機能です)

 // null を許さないので,自動でオブジェクトを生成
 SomeClass! instance;
 SomeClass! instance(10, "string");
408407続き:2005/11/12(土) 10:04:10
 // 「消極的 null 拒絶修飾子」は,言語側で NullObject パターンをサポート
 class SomeClass extends BaseClass {
   /** NullObject コンストラクタ */
   null() {
     super(); // BaseClass の NullObject コンストラクタ
     member_ = "(null)";
     mayBeNull = null; // メンバは null を許容する
   }
 }

 // null が返ってきたら NullObject を得る
 SomeClass? instance = someFunction();
 // キャストは不要だが,とりあえず推奨
 SomeClass? instance = (?null) someFunction();

 // 明示的な NullObject 取得
 SomeClass? instance;
 SomeClass? instance = null;
 BaseClass? base = (SomeClass?) null;

 // NullObject は null と等しい
 if (instance == null) put("I'm a NullObject. " + instance.toString());

 // "!" のクラスへは,キャスト不要
 SomeClass! notNull = mayBeNullObject;
 // こんな事も可能
 SomeClass! notNull = (?null) someFunction();
 SomeClass! notNull = (?null) null; // 明示的に NullObject 取得
 // null と比較するなら,こうする?
 if (notNull == (?null) null) put("I'm a NullObject.");
409デフォルトの名無しさん:2005/11/12(土) 10:18:46
どうしたの?
410デフォルトの名無しさん:2005/11/12(土) 11:11:34
いやー,javaとかにこんな機能があったらいいなーと思って。。。
411デフォルトの名無しさん:2005/11/12(土) 11:47:20
でも、それってNullPo例外出れば初期化忘れだって一発で解る事が、
勝手に初期化される事で想定外の初期化が行われ複雑性が増さない?
こういう機能をつけるならパラメータ付コンストラクタは排除すべきだと思うけど
412デフォルトの名無しさん:2005/11/12(土) 12:53:46
なるほどー。なら new で明示的な初期化は必須ですかの。

 SomeClass! instance; // コンパイルエラー
 SomeClass! instance = new SomeClass();

NullObject のヤシも,null 単体で初期化できるのはバグの元?

 SomeClass! instance = new null SomeClass();
 BaseClass? base = new null SomeClass();

↓これくらいは許せるかな。。。

 SomeClass? instance = new null;

最近,仕事で NullObject パターンに出くわしたり Curl 使ったりで
いろいろ考えさせられてます。
いっそ,こういう事を言語側の方で強制してくれればもっと楽なのかな,とか。。。
413デフォルトの名無しさん:2005/11/12(土) 13:10:57
初期化以外の代入は書かないってことかな。
関数型言語方面だとNullとObjectのいずれか2値もしくは1つを強制できたりするけど。
414デフォルトの名無しさん:2005/11/15(火) 22:56:15
バグの出にくい言語仕様といったらBASICでは?
415デフォルトの名無しさん:2005/11/15(火) 23:13:30
>>414
根拠は??
416デフォルトの名無しさん:2005/11/15(火) 23:47:53
まあ、インタプリタは支離滅裂な動作はしても、暴走まではしないからなw
417デフォルトの名無しさん:2005/11/16(水) 00:20:32
>>416
ム板からさようなら。もう来なくていいです。
418デフォルトの名無しさん:2005/11/16(水) 02:38:15
この前WinXPが暴走して、カラフルモザイクチカチカ画面が出現。
うあ、BASIC/DOS時代みたい、なつかスイー と、
しばらく見とれてしまたよ。
419デフォルトの名無しさん:2005/11/17(木) 11:43:35
>>418
ウィルスにでも入られたのでは?
420デフォルトの名無しさん:2005/11/17(木) 15:10:34
>>418
そういうのってハード側の問題って気がする
421デフォルトの名無しさん:2005/11/18(金) 01:25:17
こんな言語ならバグ0。

Program ::= Expresstion*
Expresstion ::= Program*
422デフォルトの名無しさん:2005/11/18(金) 01:58:45
Expresstion……
423デフォルトの名無しさん:2005/11/18(金) 02:43:29
ぬるぽを無くすには、静的にnull汚染を閉じこめる。

当然、初期化なしはコンパイルエラー。
nullを返し得る関数は他と区別して、その返値を受ける変数も他と区別。
nullチェックしてからでないと使えなくする。

clean( Object o, map.get#("hoge")) {
//返値がnullでない場合。oに(非null)返値が入る。
} null {
 //返値がnullの場合。ここでoを使うとコンパイルエラー
}

Object o = map.get#("hoge") //clean文以外でnullが帰り得る関数を使うとコンパイルエラー


424デフォルトの名無しさん:2005/11/18(金) 03:01:48
30行(文)以上のメソッド、30メソッド以上のクラスは、コンパルが通らない言語。
425デフォルトの名無しさん:2005/11/18(金) 12:58:10
>>423
あんまりガチガチにするとそれを抜けようと訳ワカメのコード書く奴が出るから
変な実装なら素直にぬるぽが出たほうが良いと思うぞ
426デフォルトの名無しさん:2005/11/18(金) 13:06:10
訳ワカメのコードをコンパイルすると、コンパイラが、
画面から殺人光線を出してコーダーを殺す言語。
427デフォルトの名無しさん:2005/11/18(金) 13:13:37
とにかくコーダーを殺す言語。
428デフォルトの名無しさん:2005/11/18(金) 13:27:32
Haskellつかえばだいたいおk。
429デフォルトの名無しさん:2005/11/18(金) 15:20:13
>>428
Haskellだと糞コーダーを半殺しに出来たりするんですか???
430デフォルトの名無しさん:2005/11/18(金) 15:58:18
糞コーダーが雲散霧消する
431UCLA とか書くなよ。 :2005/11/18(金) 22:16:54
>>423
そんなメンドイことすると処理の流れが追えなくなるぞ。

null ポインタを経由したアクセスは確かにバグの温床
だけど、それを避けるために他のバグが増えるようでは
意味がない。

まだ、null を返そうとしたら例外発生することを強要
した方がましだと思う。
432デフォルトの名無しさん:2005/11/19(土) 01:15:24
なぜ追えなくなる?
nullが返り得るなら対処するのは当たり前だろ。
さらに、NullObjectパターンを支援する仕組みがあればばっちり。

>まだ、null を返そうとしたら例外発生することを強要
>した方がましだと思う。

そんなのどうやんだよ。
そもそも、動的じゃ大して意味ねぇだろ。
433デフォルトの名無しさん:2005/11/19(土) 05:40:47
>>432
431じゃないけど
例外は、エラー状態を認知させ、プログラムの死という罰則を用いて
その状態を改めようとします。
すなわち、例外を捕捉しなければアプリケーションの停止という動作が
単純に保障されるわけですよ。
これは大して意味のないことですか?
434デフォルトの名無しさん:2005/11/19(土) 07:18:42
動的にNullバグを捕まえることはtry catch使えば
今の言語仕様でも可能だから大して意味無いって言ってるんでしょ
実行前にNullバグを捕まえときたいって言ってるんじゃねーの?
435デフォルトの名無しさん:2005/11/19(土) 07:31:40
Javaの仕様的にムリ
そういった強制はhaskellとかの関数型言語が得意
436デフォルトの名無しさん:2005/11/19(土) 09:46:43
nullを許すかどうか,てな言語仕様はとても重宝するですよ。
C++の例。
ttp://www.tietew.jp/cppll/archive/819
437デフォルトの名無しさん:2005/11/19(土) 10:30:17
全ての処理は結果を疑え。全ての処理は結果を返せ。
って事で、void 型の返り値の関数定義を抹殺!
438デフォルトの名無しさん:2005/11/19(土) 10:48:11
結果のいらないvoid型はバグの原因にはならないでしょ

戻り値を使う必要無し=NULLポインタが発生しない
なので、むしろバグ抑制に繋がる
439デフォルトの名無しさん:2005/11/19(土) 11:28:44
void* 型の返り値を抹殺というなら話は分かる
440デフォルトの名無しさん:2005/11/19(土) 12:10:37
>>438
戻り値をvoidにして、参照型引数で結果を貰うタイプの場合は?
441UCLA とか書くなよ。 :2005/11/19(土) 13:02:07
>>432
From:
Mail: sage
----------------
>>432
> なぜ追えなくなる?

だから実際にコード書いてみなよ。

clean( Object o1, map.get#("hoge1")){
 ...
 clean( Object o2, map.get#("hoge2")){
  ...
  clean( Obejct o3, map.get#("hoge3")){
   ...
  } null {
   ...
  }
 } null {
  ...
 }
} null {
 ...
}

みやすいか?
特に問題なのは、null が帰ってくる時の多くはエラーの場
合だから、o1, o2, o3 で null が帰ってきた場合でもほ
とんど同じエラー処理書いたりすることがあるけど、対応し
にくいだろ?
442>>432 続き:2005/11/19(土) 13:04:42
>>432
> そんなのどうやんだよ。

コンパイラにポインタを返す関数の時は null チェックを
入れるように組み込めばいいだけの話。

> そもそも、動的じゃ大して意味ねぇだろ。

馬鹿かおまえ。
おまえのやつだって、所詮は動的に分岐するかないだろ?
要は、null の時を処理を必ず書くことを強要しているだ
けに過ぎない。
例外版で null に対する処理をきちんと書かせるなら、
catch() 節を書くのを強要すればいいだけの話。
443デフォルトの名無しさん:2005/11/20(日) 01:47:16
それって、ぬるぽが出るのがちょっと早くなるだけじゃん。
バグの解決はちょっと早くなる事はあるかも知れないけど、
バグが出にくくはならない。

>>423は、nullを返して良いメソッドでnullが返った場合の対処が強制される。
nullを返して良いメソッドはどうするんだ?null全面禁止か?
返すべき物がないという状況はどうしても存在すると思うが。
それに対して無理にNullObjectみたいのを返しても無駄だろ。

444デフォルトの名無しさん:2005/11/20(日) 01:48:15
>>423
nullを許すかどうかを明示的に分けるのはいいアイディアですね。
ただ、文法的にはもう少し工夫がいるかも。
多分、constとかと同じようにmodifierみたいにするといいのでは?
例えば以下のような感じです。nullable が新しいキーワードです。
nullable File findFile(File path, String pattern) {
for (File f : path.listFiles()) {
if (match(f, pattern)) return f; // 見つかった
}
return null; // 見つからなかった
}
引数 path, patternはnull不可です。
戻り値はnull可です。だから return null も可能です。
また、nullableな変数をそうでない変数に代入することは可能だけれど、
その逆は不可になります。
445デフォルトの名無しさん:2005/11/20(日) 01:51:15
>javaはC/C++からポインタをなくしたりGCを導入することで
>メモリ管理にまつわるバグを出にくくした。

しかし、一方で参照が残っていつまでもFreeされないオブジェクトによる
メモリ溢れという新たな問題が発生した。
446デフォルトの名無しさん:2005/11/20(日) 01:54:24
あっ、最後のは逆ですね。
447デフォルトの名無しさん:2005/11/20(日) 02:06:41
>>423は、aif else みたいなもんだな。Lispよう知らんけど。
http://community.schemewiki.org/?anaphoric-if

schemeのand-let* みたいにすれば、ネストの問題も収まるんじゃね?
448デフォルトの名無しさん:2005/11/20(日) 02:16:48
構文はこんな感じ?

clean {
 receive( Object o1, map.get#("hoge1") ) {
  ...
 }
  ...
receive( Object o2, map.get#("hoge2") : Obejct o3, map.get#("hoge3")){
  ...
 }
} null {
 ...
}
449デフォルトの名無しさん:2005/11/20(日) 10:25:17
>>444
その関数の戻り値を代入する型もnullableでなければならないわけだが、
そうするといつまで経ってもnullableでない変数に引き渡せないということにならないか?
450デフォルトの名無しさん:2005/11/20(日) 12:14:04
nullable T を T にキャスト とかそんな感じのことができればいいんじゃね
キャストできなければキャストエラーで
451デフォルトの名無しさん:2005/11/20(日) 12:20:56
>>444
すでにC#2.0に同じような文法がありました。
書き方は File? のようにハテナがつきます。文法的にはmodifier。
nullableでない変数に入れるときにはキャストが必要のようですね。
http://msdn.microsoft.com/vcsharp/programming/language/
452デフォルトの名無しさん:2005/11/20(日) 12:22:31
null完全廃止でいいべ。’null’つうリテラルも廃止。
返すモンがないことがあるメソッドは、
nullを返す代わりにNoReturnValue extends Throwableを投げる。
453デフォルトの名無しさん:2005/11/20(日) 14:32:38
if (hoge == null) hoge = "hoge";



hoge _= "hoge";

って書けるようにするといいと思う。
454デフォルトの名無しさん:2005/11/20(日) 15:03:35
何の意味があるのか意味が分からん。
455デフォルトの名無しさん:2005/11/20(日) 18:48:54
NPE防止のためにとりあえずなんか入れとくって事か?
うわ、超危険人物発見、直ちに抹消せよ
456デフォルトの名無しさん:2005/11/20(日) 18:56:53
NullPointerException
略して んぺ
457デフォルトの名無しさん:2005/11/20(日) 20:32:55
まあ、零番地操作で例外処理を起こすハードウェアにしておけば問題無いだろ。
458デフォルトの名無しさん:2005/11/20(日) 20:39:31
457は素人
459デフォルトの名無しさん:2005/11/20(日) 20:58:18
assertion をサポートすりゃ平気のような気がするんだけどなぁ。
null 返すとか返さないとかも。

…… assert を書き忘れるとバグに繋がるが。
460デフォルトの名無しさん:2005/11/21(月) 01:58:05
静的と動的の違いも解らんのか。
というかそれ以前に、強制と任意の区別も付かんのか。
ネタだと思いたい。
461デフォルトの名無しさん:2005/11/21(月) 09:37:32
>>459
事前表明は実行時でしか機能しません。
ここではそういったことではなく、
どこかでnullを返すよう仕向けられるという時点で設計意図と反するわけで
値型やC++の参照のように原理上、実体=nullの状態がありえない保障が欲しい、
という話をしているように感じます。
言語仕様的な制約によって実行前に事前にエラーを検出する機構ということです。
そういったサポートを受けたい場合、現状としては高度な型機構を持つ関数型言語を使うか、
表現力が格段に貧弱ですが全てを値渡しで書くしかないでしょう。
462デフォルトの名無しさん:2005/11/21(月) 10:59:05
>>461
nullブロックとnullableどっちの話をしてる?
nullableならまあありかな?と思うけど、nullブロックはちょっとって気がする
それならもっとブロックへnull代入チェックだけじゃない一般化された制約条件みたいなのを記述できる方が良い
463デフォルトの名無しさん:2005/11/21(月) 11:34:40
>>462
たぶんどっちの話でもない気がする・・。
464デフォルトの名無しさん:2005/11/21(月) 12:53:28
だから一般化したら、>>452みたいに非実行時例外だろ。
静的にチェックできる制約はそんなに浮かばないが。
465デフォルトの名無しさん:2005/11/21(月) 13:14:52
452みたいな考え方はありだと思うけど
例外処理はオーバーヘッドが大きくなるからあまり使いたくない
if文でNULLかNotNULLかの場合分けで済むなら例外を投げるまでも無く
コンパイラが自動的に場合分けをすれば済む話だし
466デフォルトの名無しさん:2005/11/21(月) 15:50:54
↓以下、静的にチェックできる制約を考えて列挙
467459:2005/11/21(月) 20:34:24
ぶっちゃけさ、静的にチェックできる 『データ型の制約』 って、つまり 『型』 なんだよな。
今ある assertion は動的チェックが多いけど、静的チェックに昇華する気になれば昇華できるのではないかと。


思った。思っただけ。
468デフォルトの名無しさん:2005/11/22(火) 13:45:22
>>467
言ってることはまったくその通り。
どんなことができるのかは型を定義できる言語をひとつふたつ学んでみれば分かる。

例) Haskell, OCaml, SML
469デフォルトの名無しさん:2005/11/23(水) 00:30:18
1文目はそうだが、2文目はただの妄想じゃないのか?
静的チェックに置き換えられるassertなんてどんだけあるんだよ。
470デフォルトの名無しさん:2005/11/23(水) 01:23:11
>444のアイデアは面白いなーと思ったが
Java のような言語に加えるのは大変だろうなと思った。
既存のコードが使えなくなるからね。。。

Java に加わるとすれば、nullable じゃなくて
notnull みたいな逆の意味のキーワードになるじゃろか?
471デフォルトの名無しさん:2005/11/23(水) 01:28:34
わざわざコンパイルが厳しくなる新しいキーワード用意しても
そういうのがまさに必要なPG共が使うわけがねぇ。assert文すら使われてねぇだろ。
472デフォルトの名無しさん:2005/11/23(水) 08:49:48
静的チェックに置き換えられるassertはけっこうあると思うぞ。
超がんがる処理系があったらだけど。
つかプログラマが脳内で静的チェックするからこそassertを書けるんだし。
473デフォルトの名無しさん:2005/11/23(水) 09:41:47
つか実際に使われてんのは>451で出てるC#2.0だけなのか?
# 他の関数型言語は自前でなんとでもできる、てか・・・
ちょと触ってみてぇ。
実際に触ってみれば、利点とか欠点とかも分かりそうなもんだ。
474デフォルトの名無しさん:2005/11/23(水) 11:41:06
>>471
コンパイル条件を厳しくするキーワードを導入しても、だれも使わないというオチになりそうだから、
なにも修飾子をつけないと最も厳しいコンパイル条件となって、修飾子をつけていくことで制限を
外す、という設計思想じゃなきゃだめだな。

そうすると、制約だらけでウザいだけの言語になって、さらに既存の言語の拡張という形はとれなくなるが。
475デフォルトの名無しさん:2005/11/23(水) 11:49:07
>>472 ← こいつは、動的・静的を全く解っていない。
現場のPGってやっぱこんなんばっかりか?
それとも、常識を覆すアイデアがあるなら披露汁

>>474
それをいったら、ただの静的型だってウザい。
LispとかJavaScriptとかPythonとか書いてると実感する。

476デフォルトの名無しさん:2005/11/23(水) 14:47:57
コンピュータ側に指示を出す言語じゃなくてPGに指示を出す際にバグの出ない言語が欲しい
477デフォルトの名無しさん:2005/11/23(水) 16:43:06
そういう言語があったとして、理解できる奴は読む側に回らないと思うぞ。
478デフォルトの名無しさん:2005/11/23(水) 16:52:26
仕様書記述言語でもつくるか。

そうすると、仕様書記述言語からプログラミング言語へのトランスレータが開発されて、PG全員解雇。

しかし、仕様書ライタなる新たな職業が誕生し、仕様書デバッグなる工程が必要となる。
479デフォルトの名無しさん:2005/11/23(水) 16:53:35
>>476
言語の問題ではなく、コンパイラのソフトウェアとしての問題。スレ違い
480デフォルトの名無しさん:2005/11/23(水) 17:04:42
形式的仕様記述言語 の検索結果 約 22,800 件中 1 - 10 件目 (0.20 秒)
481デフォルトの名無しさん:2005/11/23(水) 17:57:57
バグがあるからこそPGの飯の種が尽きない。
482デフォルトの名無しさん:2005/11/23(水) 18:00:06
バグがでなくなったら別の仕事すればいいじゃん。バカ?
483デフォルトの名無しさん:2005/11/23(水) 19:03:28
>>478
そうなったらその仕様書はソースと呼ばれる
484デフォルトの名無しさん:2005/11/23(水) 19:24:51
静的なチェックの方が動的なチェックよりも好ましい
というのはいまいち納得がいかない。
どうやら定説のようだがなんで?
485デフォルトの名無しさん:2005/11/23(水) 19:28:20
静的チェックはコンパイル時に暴かれる。
動的チェックはそのチェックする箇所が実行されないとチェックされない。

たとえばコンパイルと実行で別のコンピュータを使うという事態が考えられる。
486デフォルトの名無しさん:2005/11/23(水) 20:10:42
>>484
> 静的なチェックの方が動的なチェックよりも好ましい

どこの定説だ?

普通に考えて、静的チェックで全部チェックできればそ
れが一番だと思うが。
できねーから、併用するしかないんだろ。
487デフォルトの名無しさん:2005/11/23(水) 20:55:05
>>483
そもそも、仕様書・コード・ドキュメント、この3種は含まれる情報量は本来過不足なく等しいはずで、
単にどの工程で誰が何の目的で作成するかの違いしかない。
要するに三重の無駄。
どれか1個にすべし。
488デフォルトの名無しさん:2005/11/23(水) 20:57:36
わざわざ言われなくても、うちにはコードしかありません><
489デフォルトの名無しさん:2005/11/23(水) 20:59:00
職業プログラマは大変ですねぇ。
僕は趣味でフリーウェア公開してる程度だからとても気軽ですよww
490デフォルトの名無しさん:2005/11/24(木) 06:20:17
全ての型に文法的に範囲を指定できれば、数値がらみのバグはかなり減ると思うんだが。
型の宣言に値の範囲を強制するというのはどうだろう。
例えば0から100までの整数を型として定義したら内部で自動的に範囲チェックを掛けてくれる。

int(0-100) val;
val=100; // これはOK
val+=2; // これはNG


もちろん、既存の言語(JavaやC++)でもこういうクラスを作ることは可能だが、手間や実行速度の関係で実際にやるところは少ない。
だが、言語仕様でそうなってれば抵抗無く使えると思うんだが。
491デフォルトの名無しさん:2005/11/24(木) 07:19:17
>>490
pascal系なら、範囲型というのがあるよ。
492デフォルトの名無しさん:2005/11/24(木) 07:31:15
部分範囲型の間違いだ  Delphiだと こんな感じ

var x,y:0..99; <----部分範囲型の変数を定義
begin
x:=100; <----------コンパイル時エラー
for x:=low(x) to High(x) do begin
  {$R+} <-------実行時範囲チェックを有効にすると
  y:=x+1; <------- 実行させるとこの行で例外が発生
  Caption:=format('%d',[y]);
end;
end;
493デフォルトの名無しさん:2005/11/24(木) 11:13:51
しかし、大抵は直値代入じゃなくて変数を介した処理中におかしくなるだろ。
結局実行時チェック。バグが出にくい、と言う意味じゃあんま意味なし。
バグったときの原因調査は早くなるだろうけど。
494デフォルトの名無しさん:2005/11/24(木) 17:25:19
>>489
あー・・Vecterとかに登録してある10分で作れるようなプログラムね。いい加減うざいんだよね〜検索して引っかかると。
495489:2005/11/24(木) 18:05:11
>>494
趣味とはいえ、さすがにそんな簡単なのは公開してませんよw
こないだ作ったのはリバースコネクションに対応した遠隔操作ソフトと、プロセスマネージャから
隠蔽できるキーロガーです。もちろん、どっちも健全な利用しかできないようにしてありますw
496デフォルトの名無しさん:2005/11/24(木) 18:05:25
その10分で出来るプログラムに、1ヶ月掛けて丁寧にバグをたっぷり仕込んで
客から金取るのがおまえね。
497デフォルトの名無しさん:2005/11/24(木) 21:52:23
趣味と職業の違いは、プログラムとしての難易度じゃなくて、職業の場合、
自分が一生使わないプログラムを作るケースが多いってとこだな
498デフォルトの名無しさん:2005/11/25(金) 00:29:57
趣味でPDA用のプログラムを作ったら、
自分が一生使う気の無い機能を要求されたり
入手困難な派生機対応要求されたり。
付き合いがあるし進んで実機デバッグしてくれたから作ったけど、
寧ろ仕事なら拒否もできたかせめて吹っかけることくらいできたのに……
499デフォルトの名無しさん:2005/11/25(金) 01:10:10
>>498
オプソにして、自分で機能追加させれば解決。
500デフォルトの名無しさん:2005/11/25(金) 02:50:31
ひょっとして500
501デフォルトの名無しさん:2005/11/25(金) 18:02:47
>>493
でもたとえば、MAX100同士の掛け算なら左辺はMAX1万じゃないと
おかしいとか、オーバーフローの可能性があるとか、そういう警告は
だせたりしない?
502デフォルトの名無しさん:2005/11/25(金) 18:15:03
それは言語仕様の問題ではなくなってしまうのだよ
503デフォルトの名無しさん:2005/11/25(金) 19:55:57
神はこう言われた
バグあれ
するとバグがうまれた

まで読んだ
504デフォルトの名無しさん:2005/11/25(金) 19:59:01
それなら私は悪魔と共に歩もう。
505デフォルトの名無しさん:2005/11/25(金) 22:25:21
>>502
そんなことはないだろ。
部分範囲型をもってる言語のちょっと賢い処理系なら、
そういうことをやることはたいして難しくない。
逆に、そういう型をもたない言語でやるのは基本的に無理。

ただ、そういう警告が有効かと言うと、かなりウザイと
思われて Off されるのがオチだと思う。
506デフォルトの名無しさん:2005/11/26(土) 00:24:11
>>501
だからそれがコンパイル時に判定できるのは、実質直値同士の場合だけ。
あんま意味なし。
507デフォルトの名無しさん:2005/11/26(土) 00:49:08
>>506
演算子に範囲型を適用すれば実行しないで値を保障できるよ。

int(0..100) operator *(int(0..100) left, int(0..100) right);

例えばこの演算子はかならずint(0..100)の値を返すことが保障される。
内部的に値をクリップするか、例外を投げるのかはその定義次第。
508デフォルトの名無しさん:2005/11/26(土) 00:54:15
例外投げるってそりゃつまり動的チェックじゃん。
バグが出にくいんではなく、バグが分かりやすいだけじゃん。
509デフォルトの名無しさん:2005/11/26(土) 00:55:24
つまり実行時にどうあれ、演算子*の返却型について引き続き int(0..100)という
範囲型が適用され、より限定的に型判定を続行できる。
510デフォルトの名無しさん:2005/11/26(土) 00:57:34
それは解るけど、バグが出にくくなる訳じゃない。
俺は知らないけどPascalにあるの?
で、他の言語が真似しないって事は、やっぱ…。
511デフォルトの名無しさん:2005/11/26(土) 00:57:36
>>508
このメリットがわからなければそれでいいんじゃないの。
不要だって人は不要なんだろうし、別にわからないからって
今のところ馬鹿にされたりしないだろうしね。

512デフォルトの名無しさん:2005/11/26(土) 01:01:14
>>510
Cみたいないい加減な言語に慣れてるから
部分型が扱えるとどういう利点があるかって事が、たぶん想像できないんだろうね。
関数型言語とか一部の強い型付け言語でしか使えないし。
513デフォルトの名無しさん:2005/11/26(土) 01:01:39
型がきちんと一貫してチェックができる事に意味があるんじゃなくて、
ソフトのバグが減ることに意味がある。型は手段。

バグが早期に例外が出て分かりやすくなると言うメリットは認めるよ。
しかし、スレタイにはマッチしないだろ。
514デフォルトの名無しさん:2005/11/26(土) 01:06:31
例えばクラスの継承ツリーも一種の部分型制御なんだけど、
一般的に広まってる言語ではそういう大雑把な視点でしか見えないから
いきなり範囲型といわれても利点がぼやけてくるんだろう。
515デフォルトの名無しさん:2005/11/26(土) 01:08:35
そんなに利点があるならもったいぶらず教えてくれよ。こっちは土方なんだから。
範囲内が保障されてるってのは、現実的な意味ではうそで、範囲外になったら例外になるだけでしょ。
「実行が継続されている場合は」という隠れた前提条件がある。
その前提条件を満たす事こそがバグを出さないということで、
それ自体をサポートしてくれないと意味がない。

解ってないけど、保障、というには、型が演算で本当に閉じていないといけないんじゃないか。
もちろん、整数に範囲を付けるというのじゃ、もともと無理な話。
516デフォルトの名無しさん:2005/11/26(土) 01:18:10
>>515
LISP辺りで「見なす」という訓練をした後に強型付きのMLとかを学習すると
その辺が見えてくるんじゃないかと。
範囲というより集合という言い方の方が近い。
517デフォルトの名無しさん:2005/11/26(土) 01:23:54
部分型と範囲外なら例外、の関係が解らん。
具体例キボン
schemeをほんのちょっとだけやってるし、
Haskellのほんのほんのさわりだけなぞった事はある。
518デフォルトの名無しさん:2005/11/26(土) 01:31:47
もしかして、
int も int(1...100)も同じコードで処理できる事自体が嬉しいと言うことか。
バグが出にくいというのとは関係ないように思うが。
519デフォルトの名無しさん:2005/11/26(土) 01:32:07
例えばintも広い意味では範囲型、集合型の1つと言える。
インテルのIA32に対応したC言語処理系のint型が32bitなのはプロセッサのレジスタの
大きさなどの制限という現実からの反映というだけであり、
「intは32bitで表現できる値の集合を表現した型」と言い換えることができる。
shortなら16bit、charなら8bitの範囲。
これはプロセッサが「たまたま」これらの型を直接表現できるだけで、
もしもintの計算でオーバーフローしたら、ハードウェアがそれを
検出してくれたりするだけのこと。
これ以外の範囲の型があったとしても別に驚くことではないと考えられると思う。
520デフォルトの名無しさん:2005/11/26(土) 01:35:25
>517
schemeわかるならSICPでも読んでみなよ
521デフォルトの名無しさん:2005/11/26(土) 01:36:25
それはそうだね。
ただ、範囲を狭くしてオーバーフローしやすくして嬉しいとは思えない。
intじゃなくてchar使うのは、基本的に単にメモリ節約でしょ。
522デフォルトの名無しさん:2005/11/26(土) 01:39:12
>>518
違うお。
型を限定できて嬉しい、ということだお。
523デフォルトの名無しさん:2005/11/26(土) 01:39:33
和田先生の糞訳本を買うだけ買って読んでない…。
どの辺?
気合い入れてやっぱ読んでみるかな。
524デフォルトの名無しさん:2005/11/26(土) 01:43:25
>>522
それは>>515>>521で実利を否定してるんだけど…。
どう考えてもオーバーフローしやすくして嬉しいとは思えない。
schemeじゃ逆に32bit制限を外す方向だと思ってるけど。
525デフォルトの名無しさん:2005/11/26(土) 01:43:42
だから数字というまとまりじゃなくて、それ1っこ1っこをみなきゃわからないお
範囲とかじゃなくて、奇数だけ集めた型とか欲しくなったときとか考えるお^^
526デフォルトの名無しさん:2005/11/26(土) 01:56:42
>>523
日本語訳の第2版なら2章だよ。
527デフォルトの名無しさん:2005/11/26(土) 01:57:37
なるほど。
(奇数に閉じてない)割り算を静的に禁止できれば嬉しいかも。
ただ現実には、奇数のような、演算の大半が閉じてるようなのが欲しい場面はほとんど無くて、
欲しいのは、演算で閉じようがない、業務やシステムの都合による制約が保障されてる物。
というのは、単にそれは手続きベースだからなのか?
制約はコードの外部に存在する以上、あまり関係ない気がする。
528デフォルトの名無しさん:2005/11/26(土) 02:09:14
>>526
d楠。読んでみるっすよ。
…SICP見つからない。どこいったんだ。サイトで英語読むか…orz
529デフォルトの名無しさん:2005/11/26(土) 02:29:16
まだこのスレに出てきてないみたいなので書いておくと、
バグを減少させる方法としては副作用をなくし、参照透過性を保つというやり方が既にある。
現実的には副作用を一切起こさないということはできないので、
副作用を別の概念としてモデル化し、そのコンテキスト上では
論理的に存在しないものと「見なす」技法が関数型言語で発達している。
530デフォルトの名無しさん:2005/11/26(土) 03:01:01
>>529
それは多分メンドクサイのと実装時に無駄なコードが増えるような気が(直感で)する
その辺はどうなんだい?
531デフォルトの名無しさん:2005/11/26(土) 03:07:11
ノイマン型思考をやめればいいんじゃないかな。
慣れだと思う。
532デフォルトの名無しさん:2005/11/26(土) 11:23:55
もうnullについては

File file = getFile() || new NullFile();

でいいよ。
533デフォルトの名無しさん:2005/11/26(土) 12:52:37
そうするとNullObjectパターンは万能かという話になる。
そして、ダメな場合はどうするのか。
534デフォルトの名無しさん:2005/11/26(土) 15:36:37

バグの出にくいことと
abortしにくいこととは
全く違う概念だからなぁ

535デフォルトの名無しさん:2005/11/26(土) 20:52:43
>>534
同意。その二つを混同しているレスがあったので念の為に同意しておく
536デフォルトの名無しさん:2005/11/26(土) 21:17:43
つうか、ヒューマンエラーを無くすには、人以外がプログラミングに従事すれば良いと思うよ。
537デフォルトの名無しさん:2005/11/26(土) 21:22:28
そりゃ人以外がやればいくらエラー出てもヒューマンエラーじゃないけどなw
538デフォルトの名無しさん:2005/11/27(日) 22:01:42
バグをなくすには徹底したテストあるのみ。
レビューなんぞは糞の役にも立たないですよ。

(言語仕様と関係ないか)
539デフォルトの名無しさん:2005/11/27(日) 22:40:20
>>538
そうか?
540デフォルトの名無しさん:2005/11/27(日) 22:47:57
構造上のBUGはテストなんか何万回繰り返しても無駄だったりするんだがな。
541デフォルトの名無しさん:2005/11/27(日) 22:53:28
レビューで8〜9割のバグを摘出できるとか言うデータもあるようだがどうにも納得がいかん。
プログラムなんぞ眺めててもバグなんぞ一向に見えてこん。
プログラムなんぞ動かしてなんぼだろ。
みんなレビューやってる?
542デフォルトの名無しさん:2005/11/27(日) 23:05:22
>レビューで8〜9割のバグを摘出できるとか言うデータもあるようだが
確か国際事務機会社の調査だったかな
>みんなレビューやってる?
そのような調査結果の有無とは無関係に、
そんな事を工数かけてやって、バグの発見が遅れたら誰も責任取れないからw
やっているところは少数派では
543デフォルトの名無しさん:2005/11/28(月) 00:00:35
やってるよ〜。
理解の足りてないコーダや詰めの甘いプログラマは自分のコードを説明させると
それだけでぼろぼろバグ(及びその予備軍)を出してくれるし、
その間にそいつの書いたコードを読んでいると潜在的なバグが見えてきたりするし。
尤も、バグを潰すことより保守性を上げることの方が主たる目的なんだけどね。
544デフォルトの名無しさん:2005/11/28(月) 00:45:23
レビューが意味ないなんて言う奴が居るなんて、マジで信じられん。
馬鹿が馬鹿なレビューしてたらそうなのかもしらんが、
レビューしないなんてあり得ない。
545デフォルトの名無しさん:2005/11/28(月) 00:47:34
逆に天才ハッカーばかりでバグなんて元々ほとんどあり得ない、
という夢の世界もあるかもしれんが。
546デフォルトの名無しさん:2005/11/28(月) 00:53:03
テストで出にくいバグ(=調査が大変なバグ)も見つけられるし、
テストだけだと、ただ「大体動く」だけで、
保守も拡張も出来ないゴミコードがリリースされうる。
547デフォルトの名無しさん:2005/11/28(月) 01:50:00
少なくとも自己レビュー位はやるんじゃないのか?
テストで見直しをちゃんとやりましょうとか小学校で言われただろ
548デフォルトの名無しさん:2005/11/28(月) 01:51:33
引数自体は書き換え不可で
戻値をいっぱい返せるとか

bool foo(int a, string & result)



bool, string foo(int a)

凡ミスが結構減りそう

549デフォルトの名無しさん:2005/11/28(月) 01:54:08
>>548
>>529

でもって、今どきの言語ならそれは常識。
550デフォルトの名無しさん:2005/11/28(月) 02:02:13
単純にリスト返すだけならPerlやRubyでもサポートしてるような。

Cだって構造体返す手があるしね。スタックに巨大オブジェクト作るのは感心しないが。
551デフォルトの名無しさん:2005/11/28(月) 02:06:57
>>549
わかった風な口叩けばいいってもんじゃないよ。
参照透過性を維持するには重大な欠陥を同時に抱えることになる。
それに気づいてない馬鹿なんだろうけど、
今どきの言語のどこにそんな常識があるの?
552デフォルトの名無しさん:2005/11/28(月) 03:03:15
>>550
単純データならどうとでもなるんだけどね。
構造的なデータを副作用なしで効率良く扱うのは先端の関数型言語でも
まだ課題の1つになっている。
関数型言語では特殊化や、修正が起こる部分について結合を弱くすること
によってコストを減らすなど、ある程度の言語のサポートが得られるが、
何の根拠も持たない言語では修正が発生するたび、適切に自力で
コンストラクトするしかない。配列みたいな特性のコンテナデータを修正する
場合は悪夢が待っている。
553デフォルトの名無しさん:2005/11/28(月) 04:07:05
仕様そのものがバグでした・
554デフォルトの名無しさん:2005/11/28(月) 11:43:38
顔を見ればどれくらいバグを出す奴かは推測がつく。
555デフォルトの名無しさん:2005/11/28(月) 17:27:46
御自分よりもバグが少ない人もですか?
556デフォルトの名無しさん:2005/11/29(火) 23:27:20
顔のバグが多い奴ほど、バグは出さない法則
557549:2005/11/30(水) 00:59:26
>>551
常識と書いたのは、参照透過が じゃなくて、
単なる多値返却なら という事なんだが。
…どうやってもそうは読めんな orz
558デフォルトの名無しさん:2005/11/30(水) 02:14:53
プログラマ採用面接で顔だけで判断する香具師はありえんだろ
559デフォルトの名無しさん:2005/11/30(水) 10:09:39
しかし、顔はあらゆる面接の類で重要視される。
560デフォルトの名無しさん:2005/11/30(水) 11:00:35
顔というより話を聞いて日本語の会話が成立しない場合は採用しないな
561デフォルトの名無しさん:2005/11/30(水) 12:29:26
話よりなにより顔だ。
562デフォルトの名無しさん:2005/11/30(水) 12:30:15
顔より味だ
563デフォルトの名無しさん:2005/11/30(水) 13:06:26
>>558
落とす理由が見た目だけで、誰が納得すると思う?
564デフォルトの名無しさん:2005/11/30(水) 13:08:39
>>563
つまりありえんのだからお前の言ってることと同じだと思うが?
565デフォルトの名無しさん:2005/11/30(水) 13:33:37
落とした理由をわざわざ説明する会社があるかボケ。納得も糞もない。

面接は顔が一番重要。これは常識。
566デフォルトの名無しさん:2005/11/30(水) 15:49:44
ブサイクは性格悪いからな。
顔が歪むと心も歪む。
567デフォルトの名無しさん:2005/12/01(木) 00:35:53
顔と言うより、顔つきや態度だな
568デフォルトの名無しさん:2005/12/01(木) 11:13:58
>顔が歪むと心も歪む
569デフォルトの名無しさん:2005/12/01(木) 11:37:00
技術スレが、こういう下らんネタになると伸びるというのが、
ム板のレベルの低さを物語っているな。
570デフォルトの名無しさん:2005/12/01(木) 19:20:54
>>569
みんなもう手持ちのネタが尽きたんだよ。
レベル低いっていうならおまいがネタ振れ。
571デフォルトの名無しさん:2005/12/01(木) 21:09:36
整形するとバグが減るのか
572デフォルトの名無しさん:2005/12/02(金) 01:43:46
確かにインデント整形するのは良いですね
573デフォルトの名無しさん:2005/12/02(金) 12:43:18
>>569
ム板に技術スレ勃てる奴が阿呆、という事で。

>>572
574573:2005/12/02(金) 12:48:28
>>573
>ム板に技術スレ勃てる奴
…いや合ってるよ!阿呆は俺だろ!
575デフォルトの名無しさん:2005/12/02(金) 13:13:11
逆、裏、対偶が判ってないやつ多すぎ
576デフォルトの名無しさん:2005/12/02(金) 13:28:57
ド・モルガンの法則知らん香具師も大杉
577デフォルトの名無しさん:2005/12/02(金) 15:47:28
久美子も大杉
578デフォルトの名無しさん:2005/12/02(金) 18:29:02
大杉とレスする奴も(ry
579デフォルトの名無しさん:2005/12/02(金) 18:44:55
>>576
お前の脳内にたくさんいそうだね。
580デフォルトの名無しさん:2005/12/02(金) 20:21:41

 モリガン (Morrigan)

【分類】

 ケルト神話(Celtic mythology)

【解説】

 カンムリ烏の姿で血を求め戦場を飛び回る、戦いの女神。
クー・フーリンに惚れるが、相手にされなかったことに腹を立て、
事ある毎に彼の戦いの邪魔をする。その後、命を助けられてからは
彼の味方をし、生き絶えたクー・フーリンの肩にとまった鳥も、彼女だったのだ。
581デフォルトの名無しさん:2005/12/02(金) 20:22:52
相 手 に さ れ な か っ た こ と に 腹 を 立 て、

事 あ る 毎 に 彼 の 戦 い の 邪 魔 を す る 。

まるでおまえらにそっくりだな
582デフォルトの名無しさん:2005/12/02(金) 21:10:24
神話レベルのツンデレか
すげーなモリガン
583デフォルトの名無しさん:2005/12/02(金) 22:36:11
ちょい、スレの進行も鈍っているようなので初カキコ
ウチは機械化上がりだったんだけど、講義で品質管理についてこうならった

1.目的に合い、実行可能な使用の決定
2.使用目的に合うかの確認
3.製造中はいりうる不良要因の排除
4.安定不変の作業
5.製造から発送までの全行程の全員検査
6.納入後の情報収集とサービス

正直な話、コッチの業界ではみんな話が「1」の段階で止まっている。
頭の中で「動けばコード」みたいなところがあって
現場の中に品質って言うのは1〜6でまとまって作る者だって言う意識がない
・IT業界自体ゼンゼン若のはわかるし
・ソフトウェア開発も技術的に若い
・ソフトウェア自体は複雑だっていうのも分かる
でも、ここのスレも思考の対象が「言語仕様」で話が止まっている節がある…
正直、良い品質を作ろうって意味では何処の行程であれ、効果があればよいのだから
少し発想を広げてみたらどうかな?
584デフォルトの名無しさん:2005/12/02(金) 22:53:37
このスレで扱ってるバグは……『3』だけじゃないか?
とくに1と2はバグじゃなくて仕様設計のミスだろう。
585583:2005/12/03(土) 00:04:12
うにゅ、適切な非難だと思う。
個人的には、バグについて広く話せたらその方がありがたいのもあるので、話の枕としては必要なものだと思ったのだ

あと、少し具体的な話なんだけど、バグを上手に排除するには
・バグの入りにくい言語
・注入してしまったバグを事前に発見しやすい言語
・出てきたバグの原因を特定しやすい言語
は消せる者さえ消せれば基本的に等価なので考えるとき狭まらないで欲しい
釈迦に説法だった人も多数なんだろうけど

個人的には、現代の良いところは開発現場ではIDEもセットにして言語を考えるのが当たり前になりつつことなので
IDEと仲良しになる事に糸口がありそうな気がするけど…。
586デフォルトの名無しさん:2005/12/03(土) 01:37:14
少なくとも、自分の書いた日本語の間違いを放置するような香具師が書いたコードは信用ならんと言うことさね。
587デフォルトの名無しさん:2005/12/03(土) 02:14:03
コードレビューはしてますか?
588デフォルトの名無しさん:2005/12/03(土) 10:29:02
コードレビューしやすい言語はバグが発見しやすいか否か
589デフォルトの名無しさん:2005/12/03(土) 10:45:13
>>583
スレタイ嫁アホ
590デフォルトの名無しさん:2005/12/03(土) 12:39:38
>>853
まあ、結局のところ営業がいくらで握ってきたかで品質なんて物は決まるからな
本質的に作る事が出来ない金額で物を作れと言われる場合が殆どだから、
どこを端折るかというと顧客への納品時にばれない品質から端折る
591デフォルトの名無しさん:2005/12/03(土) 14:37:44
>>853の中の人は大変だな
592デフォルトの名無しさん:2005/12/03(土) 16:19:20
>>591
お前今時中の人とか言ってんじゃねぇ。ズレてんだよ。
593デフォルトの名無しさん:2005/12/03(土) 18:06:00
>>592はツンデレ
594デフォルトの名無しさん:2005/12/03(土) 18:34:49
ツンデレももう古いっての。
595デフォルトの名無しさん:2005/12/03(土) 19:40:08
そんじゃデレツン
交際中はデレデレなんだけど結婚した途端ツンツン
596デフォルトの名無しさん:2005/12/03(土) 20:49:06
夫に言えない結婚してから機嫌を損ねる理由ベスト3

1.トイレで用を足すときに便器を汚す(特に小便)
2.紙がなくなっても自分で交換しない
3.ゴミを溜める
597デフォルトの名無しさん:2005/12/04(日) 00:27:22
>>596
俺はそのすべての問題をクリアしているからいい男
598デフォルトの名無しさん:2005/12/10(土) 13:39:54
コードレビューのコストを減らして、コードレビューを支援すると言う意味で、
可読性を残した上で、コード(ステップ数)が短くて済む言語というのは、
重要なのでは。
保守コストも下がるし。

いまだにLOCで仕事を計る馬鹿な会社が敵だが。(うちだ…orz)
599デフォルトの名無しさん:2005/12/10(土) 22:52:47
ステップ数が短くてすむというのはライブラリを充実させるということ?
600デフォルトの名無しさん:2005/12/10(土) 23:42:09
ライブラリに動作実績がなければ意味ない
601デフォルトの名無しさん:2005/12/11(日) 00:03:31
>>599
LISPやPrologだとCOBOLの五分の一くらいの
ステップ数になるといった意味では。
602デフォルトの名無しさん:2005/12/11(日) 04:08:27
ただライブラリを増やすだけじゃなくて
テンプレートやMix-Inのようなパラメタライズ。
603デフォルトの名無しさん:2005/12/11(日) 07:40:48
仕様にバグが無い様にするのが重要
604デフォルトの名無しさん:2005/12/11(日) 10:34:51
○Perl5.8.7(OS依存除くルートにあった.cと.hだけ)
$ wc *.h|grep total
37441 149383 1244389 total
$ wc *.c|grep total
103778 339711 2659553 total
計 約140Kstep

○Pugs6.2.10(src以下すべて)
$ find src -type f -exec cat {} >> /tmp/all \;
$ wc /tmp/all
71040 315200 2213460 /tmp/all
計 約71Kstep

■ 結論
 Haskell >>>>>>>>>>>>>> C
605デフォルトの名無しさん:2005/12/12(月) 06:03:56
>>601
バグの出にくい言語仕様という観点からいえば
LISPやPrologのライブラリを育ててこなかったのは
ソフトウェア界の怠慢。
606デフォルトの名無しさん:2005/12/12(月) 07:58:58
東証のシステムは結局何で書かれていたんでしょうか
COBOLで書かれていたのを最近Javaでリプレースしたとか
607601:2005/12/12(月) 09:13:45
>>605
言語もシステムのライフサイクル通しての総コストの
少ないものが選択されていると考えるべき。
画像処理が必須のWINDOW環境ではこれらの言語が選択
されなかったのも仕方がない。
再び、人工知能技術の応用という方向に焦点が移れば、
変わってくるのでは。
608デフォルトの名無しさん:2005/12/12(月) 09:37:31
画像処理……俺の知っている画像処理とは違うようだ。
609デフォルトの名無しさん:2005/12/12(月) 10:08:31
>>608
すみません。GUIですね。
610デフォルトの名無しさん:2005/12/12(月) 11:35:40
あなたの知ってる画像処理も困難だと思いますが
611デフォルトの名無しさん:2005/12/12(月) 13:17:15
>>606
COBOL+Cに決まってる
UIに関しては一部Java(Web)も混じってるかも試練
612デフォルトの名無しさん:2005/12/12(月) 13:25:06
>>606
あそこはシステム一本でマッコウ勝負してる
世界でも特有のドケチ取引所と聞いたが
言語の問題じゃない。
613デフォルトの名無しさん:2005/12/12(月) 21:36:52
Prologの場合、オブジェクト指向との相性が
どうなんだろうね。そういう枠組み全くなしでは
今後やっていかれないと思うが。
614デフォルトの名無しさん:2005/12/13(火) 01:49:13
Prolog にバグという概念は成立しない
615デフォルトの名無しさん:2005/12/13(火) 07:37:28
ビットマップを操作するようなプログラムでは
一々TrailStackにpush,popするPrologはとても
採用できない。そういう意味で汎用言語ではない。
ただ、バグの寡多という点では優位であることは
間違いない。言語仕様という観点からはこれ以上の
ものを想定することは難しいと言ってもよい。
やはり、上位層にProlog、下位層にC++というような
切り分けで業務プログラムは開発されるべきだった。

現在のPrologが>>613の問題も含めて、こういう期待に
応えられるかどうかかなり疑問だが・・・。
616デフォルトの名無しさん:2005/12/13(火) 10:23:56
そこでProlog++
617デフォルトの名無しさん:2005/12/13(火) 11:14:03
いやObjective-Prolog
618デフォルトの名無しさん:2005/12/13(火) 13:07:53
>>615
> 言語仕様という観点からはこれ以上の
> ものを想定することは難しいと言ってもよい。

Prologは頭部にたかだか1つの述語しか書けない。
しかし複数の述語が書ける言語が研究レベルでは存在している。
実用化したらPrologは過去の遺物になる。
619デフォルトの名無しさん:2005/12/13(火) 13:33:30
>>618
完全性は・・・。
620デフォルトの名無しさん:2005/12/14(水) 06:58:18
もっと国家ぐるみでMLにちからいれればいいじゃん。
国に収めるソフトはすべてMLでかかせりゃいいんだよ。
621デフォルトの名無しさん:2005/12/14(水) 09:22:57
>>618
20年以上前に、東北大の野口教授の下でそういう研究が
されていた。計算量が膨大になるんじゃないかってことで
あまり相手にしなかったのだが、何か、画期的な転回でも
あったのだろうか。

622デフォルトの名無しさん:2005/12/14(水) 12:52:06
Σ
623デフォルトの名無しさん:2005/12/15(木) 23:46:40
いまさらPrologかよ。メニーコアに向けてKL1だろ
624デフォルトの名無しさん:2005/12/16(金) 00:29:34
メニーコアか。
シングルスレッドでもバグが絶えないというのに
厄介な時代になったものだ。
625デフォルトの名無しさん:2005/12/16(金) 04:16:36
言語で作るからおかしくなるのではないか? これからは
絵で作った方が直感的に分かっていいのではないか?
626デフォルトの名無しさん:2005/12/16(金) 06:03:51
>>625
お約束だけど一応紹介しとく
http://pc8.2ch.net/test/read.cgi/tech/1131442510/
627デフォルトの名無しさん:2005/12/16(金) 06:29:33
>>623
「バグの出にくい」だけに拘ればの話です。
628デフォルトの名無しさん:2005/12/16(金) 16:46:21
>>625
NTTのオープンハウスだっけ・・あれで図形言語がどうのこうのっていうポスター発表しているやつがいて、
質問に答えられないでオドオドしていたのを思い出した。
629デフォルトの名無しさん:2005/12/16(金) 18:48:13
多分、ビジュアルプログラミングだと思う
日本は結構研究盛んな国らしいけど、本とかいっこうに見かけないんだよね
以前どこかの本で「ビジュアルプログラミングの本を書いてくれないか」
と依頼されたんだけど「使い物になるか専門家の間でもはっきりしていない」ということで、ユーザーインターフェイス全般の話をしていた本があった。

図形化すると全体が良く見渡せるって言うのは大賛成なんだけど
数万行のコードをフローチャートに書き換えた場合、どんな恐ろしいことになるかなんて言うのは、火を見るより明らかなわけで
図形にするならするで、後々コードが巨大化しても見やすいようにする工夫は必要だよね
630デフォルトの名無しさん:2005/12/17(土) 00:15:39
ヴィジュアルだとなんでバグが減るん?
つか、MDAとか関係あるん?
631デフォルトの名無しさん:2005/12/17(土) 00:45:58
つまり図形や色などの視覚的要素を追加することで
幼稚園児並の知能があればレゴブロックで何かをこしらえるように
プログラミングできる。
あるいはPCのパーツをかき集めて自作パソコンを組み立てる様なもの。
規格化された部品を組み合わせるだけでプログラムが完成する。
CUIに対するGUI、すなわちコマンドを叩くよりアイコンをダブルクリックする
ことが好まれるように、名前だけでなくイメージ化することで、
より直感的に脳へ働きかける。
632デフォルトの名無しさん:2005/12/17(土) 03:07:55
まぢで図形化がよくみわたせるとおもってるんでつか?

その前に、#define文使うのやめてくれ。
633デフォルトの名無しさん:2005/12/17(土) 03:52:01
たしかにCUIよりGUIの方がよくみわたせるね。
UNIX文化はさっさと滅んでください。
634デフォルトの名無しさん:2005/12/17(土) 08:13:55
>>633
単位時間にキーボードから入力できる情報量と
用意されたICONの包含する情報量の比較だが、
どんなものか。
635デフォルトの名無しさん:2005/12/17(土) 09:46:58
バッチファイルなら実用的な範囲でGUI化できそう
636デフォルトの名無しさん:2005/12/17(土) 10:17:24
iconが姉歯化していないかの検証も必要。
637デフォルトの名無しさん:2005/12/17(土) 11:23:03
この流れだと、LabViewできる香具師は神?
ドキュメント性が悪いし保守を考えると紙屑なんだけど。
638218:2005/12/17(土) 22:36:14
>ヴィジュアルだとなんでバグが減るん?
だね、基本的に「保守性が高いコードを期待できる」の方の話になってしまう
スレの主旨とズレている気がするね。
まぁ、話題が停滞しているので話を広げるのも悪いとは思わないが…

>まぢで図形化がよくみわたせるとおもってるんでつか?
君がUMLは全く役に立たないと思っているなら、図形化は無意味と言うことなんだろうね

>単位時間にキーボードから入力できる情報量と、用意されたICONの包含する情報量の比較
俺はもう、文字を表示するのに「system.put.println」とか仰々しく18タイプもしたくないんだ!
言語が偏ってる?ゴメソorz

まぁ、Wordとかと違って「コーディング」だけできるUIなら
ショートカット周りの工夫で、解決できるんジャマイカ
639デフォルトの名無しさん:2005/12/17(土) 22:43:44
MAX/MSPもビジュアル言語の範疇かな?
確かに想定外のバグは出にくい気がする。
やれることが限られているからってのもあるけど。
640デフォルトの名無しさん:2005/12/17(土) 23:13:27
やれることが限られているのは日帝が人材を奪ったから。
641デフォルトの名無しさん:2005/12/18(日) 00:12:42
>>638
その言語は補完が提供されるIDEがあるわけで、偏ってるのはお前の脳味噌かと
642デフォルトの名無しさん:2005/12/18(日) 01:14:24
言語が文字の変わりに図形を使用しても、バグが減る理由がない。
見渡しなら、テキストからの変換ツールがあればいい。
プログラミングの裾野を広げるには役立つが、
入力まで図形なんて、まともなプログラミングには生産性低すぎ。

昔だが、Mindstormでプログラミング環境が図形言語だったが、
気の利いた作品はみんなそんな環境は潰して普通にC++でコーディングされたものだった。
643デフォルトの名無しさん:2005/12/18(日) 03:38:47
漏れもプログラムはソースだけで充分だと思う
FlashのActionScriptとかが典型的な例だ
644デフォルトの名無しさん:2005/12/18(日) 03:40:01
↑使いにくいっていう例ね
645デフォルトの名無しさん:2005/12/18(日) 04:14:56
UMLって図形っぽいよな・・・。
646デフォルトの名無しさん:2005/12/19(月) 01:12:35
まあ、UMLじゃ動作保障無いけどな
647デフォルトの名無しさん:2005/12/19(月) 01:24:28
MDAだって、結局UMLだけしょうもなくてテキスト言語併用だろ。
648デフォルトの名無しさん:2005/12/19(月) 04:41:18
全部を図形にする必要はないんじゃない? レベルによって変えればいいと思う。
649デフォルトの名無しさん:2005/12/19(月) 22:46:32
図形的に編集できる言語じゃなくて、コンパイル時に図形情報としてロジックを出力できる言語ならいいんでは?
ロジックの確認にだけ、図形情報を用いる。
650デフォルトの名無しさん:2005/12/20(火) 01:12:13
点(命令)を羅列していくんじゃなくて、ワイアドロジックみたいな
感じでスレッドを線で表現して、それにフローチャートのように
分岐、繰り返しがくっついたようなものってないのかな。
線と線の間にはボックスがあって、それを突っつくと手続き型言語のような
命令文が入ってる。
651デフォルトの名無しさん:2005/12/20(火) 03:57:07
あるよ
めちゃくちゃ開発効率悪いよ
652デフォルトの名無しさん:2005/12/20(火) 11:04:43
業務はマルチスレッドなのに顧客の頭のなかがシングルスレッドだったりする
653デフォルトの名無しさん:2005/12/20(火) 11:15:33
いまさらだがとりあえず言っとく

>>625
なあに、かえって免疫力がつく。
654デフォルトの名無しさん:2005/12/20(火) 11:54:17
ビジネスロジック系のバグ潰しは厳しいなぁ。
大抵のバグはこの辺に仕込まれるんだよなぁ…
仕様、設計とコードの食い違いというかなんというか。

あくまで「プログラム」の範疇でいうなら、
モジュール又はメソッドの入出力の完全検査以外にあるまい。

配列とか配列のようなクラスの中身の型を制限するのは
C++ではテンプレ、Java5ではGenericsで実現済み( ArrayList<String> )だから、
次はサイズの制限も簡単に書けるように…
たとえば ArrayList<String>[0<][1000>=] とか書けるようにして、
それ以上のサイズの配列が渡される可能性がある呼び出し部分はエラーにしちまうとか。

そうすることでありえない値が入力されて発生するようなバグは減ると思うんだが…
655デフォルトの名無しさん:2005/12/20(火) 12:32:48
>>654
std::vectorのat()でできますが。
#operator[]()を使われると制限できないが、そもそもvectorを使ってくれる保証もない。
656デフォルトの名無しさん:2005/12/20(火) 15:21:09
>>651
そこまでは知っているんだけど、実際に触って確かめられないんだよねぇ
誰か窓環境で動くモノとかあったら、配っているところ知らない?
657デフォルトの名無しさん:2005/12/20(火) 15:35:27
>>656
Fの運用監視ツールの運用設計画面なんかどうだ
658デフォルトの名無しさん:2005/12/21(水) 00:00:20
バグを無くすには分岐とループを無くすのが効果的だよ
つまりエクセル最強
659デフォルトの名無しさん:2005/12/21(水) 00:25:49
平面図形だからいけないんだ。これからの時代は立体だ。
で、3Dに見える眼鏡かけてデータグローブで立体になってる
オブジェクトを鷲掴みにして積み上げる。穴開けてねじ止め。
コンクリ固めて鉄筋を通す。

でも耐震強度偽装されて震度5で倒壊。
660デフォルトの名無しさん:2005/12/21(水) 07:57:21
構造化プログラミングなんてキッシュイーターがやることだね。
本物のプログラマはgoto文を恐れずに使う。
661デフォルトの名無しさん:2005/12/21(水) 11:39:07
>>658
エクセルは分岐できるじゃん、ループは怒るけど
662デフォルトの名無しさん:2005/12/21(水) 11:43:21
キッシュおいしいよね
663デフォルトの名無しさん:2005/12/21(水) 12:05:24
日本人じゃねーからナァ
キッシュなんてよー食わねーよな
664デフォルトの名無しさん:2005/12/21(水) 12:32:52
本物のプログラマって、あれ、ただの時代遅れだろ。
古き良き、っていう郷愁なのかも知れないが。
665デフォルトの名無しさん:2005/12/21(水) 16:29:09
>>664
あれは
Fortran -> C++
アセンブラ -> C
Pascal -> Java
と置き換えれば今でも通用するw
666デフォルトの名無しさん:2005/12/21(水) 17:48:27
>>659
そういうのはしーぽんに任せる。
667デフォルトの名無しさん:2005/12/21(水) 17:48:45
ソフトウェアの専門職に就くためには資格試験を通らなければなれないようにすべきだ
668デフォルトの名無しさん:2005/12/21(水) 19:02:14
禿銅
669デフォルトの名無しさん:2005/12/21(水) 19:09:52
金が絡むくだらない連中が反対しなければ良かったんだ。
670デフォルトの名無しさん:2005/12/21(水) 20:05:56
>>667
その資格、毎年更新を義務化とかじゃなきゃすぐに意味なくなるぞ。
671デフォルトの名無しさん:2005/12/21(水) 20:28:03
C#とJavaのどっちを試験問題に採用するかでMicrosoftとSunがモメたりするわけですね。
672デフォルトの名無しさん:2005/12/21(水) 20:32:09
>>661
確かに分岐はできるけど、影響範囲は通常そのセルの中だけだと
思うから、非常に限定的だよ。
673デフォルトの名無しさん:2005/12/21(水) 20:49:24
>>671
特定の言語を覚えているかどうかなんて問題外。
まぁ、試験用の独自言語を作ればどこも文句は言わないだろう。
674デフォルトの名無しさん:2005/12/21(水) 21:17:46
>>673
現実的でない試験課題がでる意味の無い資格だとか文句が出ると思うが。
675デフォルトの名無しさん:2005/12/21(水) 21:49:44
そこでLISPですよ
676デフォルトの名無しさん:2005/12/21(水) 22:08:18
>>674
現実的でない??
貴方の頭は一つの言語しか理解できないようにできているんですか?
現実って何ですか?言語の試験は別でしょう。
677デフォルトの名無しさん:2005/12/21(水) 22:11:12
場合によれば、毎回問題用紙に疑似言語の説明が書いてあって、ある種の問題はそれを参考にして解答するようにすればいいな。
678デフォルトの名無しさん:2005/12/21(水) 23:24:19
>>1
高速に動いて欲しい時にGC発動なんて御免
679デフォルトの名無しさん:2005/12/21(水) 23:54:02
そういう部分はGC走らないようにコードを組むべきでは?
680デフォルトの名無しさん:2005/12/22(木) 02:21:14
>>678
常にGCが動いていれば問題は無い
681デフォルトの名無しさん:2005/12/22(木) 02:29:52
>>678
高速を求めるならアセンブラで書けよ。
682デフォルトの名無しさん:2005/12/22(木) 03:39:56
>>678
Javaってそんなに長々と止まる時あるか?
別スレッドでGCは動きっ放しだから、中々止まらないのでは?
683デフォルトの名無しさん:2005/12/22(木) 06:57:31
>>681
アセンブリな
684デフォルトの名無しさん:2005/12/22(木) 06:58:49
>>682
つまりJavaは常に遅いということか
685デフォルトの名無しさん:2005/12/22(木) 08:47:40
今時GCでギャーギャー言うヤツは素人
686デフォルトの名無しさん:2005/12/22(木) 13:08:58
GCログ見てみろ。 一瞬で終わってる。
まれに起きるFULL GCだけ、数秒かかってるけど。
つーかFULL GCってメモリがかなり圧迫されてない限り、ヒマな時しか起きないし。
687デフォルトの名無しさん:2005/12/22(木) 15:43:21
スマートポインタ使えばGCいらなくない?
688デフォルトの名無しさん:2005/12/22(木) 21:19:45
スマートポインタを用いた、参照カウンタ式ガーベジコレクションは
循環参照の問題と、実行スピードの問題がある。

参照カウンタのコストは結構高くつく。特にマルチスレッド環境では。
トータルの処理コストは他のガーベジコレクションに負ける。
689デフォルトの名無しさん:2005/12/22(木) 22:06:43
速度有線の代表の一つといえる様なゲーム開発で、D言語が噂されているように
一定以上大規模なら、バグに悩まされるよりGCに頼った方が良いのが今の時代だよね

正直、後の時代、新しい言語がGC持たないというのはないんじゃないのかな。
汎用言語ならなおさら
690デフォルトの名無しさん:2005/12/22(木) 22:15:02
>>683
どっちでもいいじゃん。
慣用的にアセンブラで通るんだから。

あと、「アセンブリ」っていうんなら、なぜ「アセンブリ言語」と言わないのか不思議なんだよ。
691デフォルトの名無しさん:2005/12/22(木) 23:17:30
……俺、普通に使ってる気がするんだが。
692デフォルトの名無しさん:2005/12/22(木) 23:30:54
アセンブリ言語と言わなかったのは私の落ち度だが、
アセンブラで書けよ
コンパイラで書けよ

違和感あるだろ?
693デフォルトの名無しさん:2005/12/22(木) 23:41:31
JIS用語では「アセンブラ言語」だったな確か。
694デフォルトの名無しさん:2005/12/23(金) 01:20:42
コンパイラ言語
695デフォルトの名無しさん:2005/12/23(金) 07:21:33
実際に書ける香具師なら読み方なんか気にしないぞ
696デフォルトの名無しさん:2005/12/23(金) 08:15:14
「コンパイラ」は直訳すると「翻訳者」なので、アセンブリ言語で
書かれたソースから機械語に変換するアセンブラもコンパイラだと
言える。
697デフォルトの名無しさん:2005/12/23(金) 08:20:41
アセンブラはニモニックと機械語を一対一で置き換えてるだけ
ソースを翻訳している訳ではないのでコンパイラと呼ぶのは不適切
698デフォルトの名無しさん:2005/12/23(金) 08:25:13
単なる翻訳でなく、意訳するのがコンパイラの仕事。
その意訳のためにかえってバグが生じることも稀にあるが、多くの場合恩恵の方が大きい。
699デフォルトの名無しさん:2005/12/23(金) 08:27:58
T図式だとどっちも同じ。
700デフォルトの名無しさん:2005/12/23(金) 09:08:42
>>698
アセンブラは「単なる翻訳」ですらない。
701デフォルトの名無しさん:2005/12/23(金) 12:46:44
assembling language = 記号言語
assembler language = アセンブラ言語
702デフォルトの名無しさん:2005/12/23(金) 15:14:45
確かに、文字列置換を翻訳と考えるのは無理があったな。
703デフォルトの名無しさん:2005/12/24(土) 02:28:34
com・pile
━━ vt. 資料を集める; 編集[編成]する;

おまえら、知ったか辞めとけって。翻訳て…こんなん高校英語だろw
704デフォルトの名無しさん:2005/12/24(土) 04:42:41
中卒が辞書の一行目だけ引っ張って知ったかしてるwww

【動-5】《コ》コンパイルする、機械語に翻訳する◆コンパイラー言語(機械コードと一対一に対応しない言語、使いやすい言語)の翻訳。アセンブラ言語(機械コードと一対一に対応する言語、コンピュータ技術者向きの言語)の翻訳はassemble。
705デフォルトの名無しさん:2005/12/24(土) 11:40:16
ついでに言うとcompileを翻訳としておくとinterpretは通訳の意味だから
人にコンパイラとインタプリタの違いを説明するときに都合がよい。
706デフォルトの名無しさん:2005/12/24(土) 11:42:57
まあ、こんぴゅーたーの分野でコンパイラっつったら
翻訳と翻訳してまず間違いないわな
707デフォルトの名無しさん:2005/12/24(土) 18:09:31
OSを基本ソフト、ソースコードを設計図と言い張るくらい微妙だけどな
708デフォルトの名無しさん:2005/12/24(土) 18:59:37
IBM用語
709デフォルトの名無しさん:2005/12/24(土) 21:42:50
鍵盤
710デフォルトの名無しさん:2005/12/25(日) 00:57:01
作譜言語で算帖に算譜を記述して、翻訳系に掛ける。
711デフォルトの名無しさん:2005/12/25(日) 02:59:57
えっと、ゴメン。このスレ終わるかのごとくつまらないこと閃いちゃったんだけど

バグとは「プログラマの意図しない動作をする」ことだから、その原因は
・文法ミスで、意図しない動作を組み込んでしまう
・ライブラリの知識不足で、意図しない動作を組み込んでしまう
なんかの、ヒューマンエラーという事になるんだよね…。
まさしく、プログラミングというのはバグを入れ込む作業ということだよなぁ…

で、話の続きなんだけど。
「バグを入れにくい言語使用」なら、上の単純なミスを減らす言語を考えることなんだよね
>>62 とかも言っているけど。っていうか、2chのお約束でスレの1-100の間で基本的なことなら大体出ている気が…。
712デフォルトの名無しさん:2005/12/25(日) 03:10:09
まず、バグを定義しろ。
713デフォルトの名無しさん:2005/12/25(日) 03:17:54
>>704
その辞書いますぐ棄てた方がいいぞ


  コンパイラ=使いやすい言語
www

  アセンブラ=コンピュータ技術者向きの言語
禿藁
714デフォルトの名無しさん:2005/12/25(日) 03:25:12
>>711
そういう視点で観れば Python なんかは果てしなくバグを産みやすいな
715711:2005/12/25(日) 06:11:12
自分Python歴3日なので、特に興味本位で、その実例上げて欲しい
多分、Python人口自体も少ないので、Pythonで頻出するバグも良くリストアップされていないと思うし
716デフォルトの名無しさん:2005/12/25(日) 08:08:58
pythonはお約束をみんなが守ることでその辺を解決しようとしてる。
Perlの方が歴史が長い分やばいんじゃね?
717デフォルトの名無しさん:2005/12/25(日) 09:15:21
このスレタイに関していうとD言語とかいい線いってるとおもうね
718デフォルトの名無しさん:2005/12/25(日) 12:12:08
自分にとっては「Cの設計者が不可能か不可能に近いほど困難と判断したテーマ」
を延々と話している様にしか見えないのだけれど
719デフォルトの名無しさん:2005/12/25(日) 15:15:51
>>718
楽しければ別にいいじゃまいか
720デフォルトの名無しさん:2005/12/25(日) 20:18:20
バグを定義しないと話が進まないな
721デフォルトの名無しさん:2005/12/25(日) 20:19:59
定義厨うざい。
バグがどんなものかなんてなんとなくわかんだろ。
722デフォルトの名無しさん:2005/12/25(日) 20:33:06
>>721
おまえが低脳
723デフォルトの名無しさん:2005/12/25(日) 20:33:31
そうか?部分の仕様が既に問題を抱えてる類のバグがあまり語られてないように思うが。
そしておうおうにして、この手のが一番厄介。
724デフォルトの名無しさん:2005/12/25(日) 20:37:16
>>717
D言語にこのスレのどんな機能が盛り込まれてる?
725デフォルトの名無しさん:2005/12/25(日) 23:23:34
華麗にスルーできない機能
726デフォルトの名無しさん:2005/12/26(月) 10:30:28
>>721
なんとなくじゃダメなんだよ
最近の建築偽装問題にも通じるところがあるが、曖昧なところが多ければ多いほど不正を見逃す原因になる
727デフォルトの名無しさん:2005/12/26(月) 11:07:06
>>721
おまえがダメな方の人間だということはよくわかった
728デフォルトの名無しさん:2005/12/26(月) 17:00:53
>>724
表明はCにもあるけど契約プログラミングはDから
729デフォルトの名無しさん:2005/12/26(月) 21:15:52
>>722
>>726
>>727
じゃあお前らがこのスレにふさわしいバグの定義してみろ。
できもしないくせにえらそうなこと言うな。
730デフォルトの名無しさん:2005/12/26(月) 21:18:02
>>729 みたいなのがバグ
731デフォルトの名無しさん:2005/12/26(月) 22:10:14
>>723
その辺はもう少し上級レベルのモデリングとかでなんとかするんじゃないの?
732デフォルトの名無しさん:2005/12/27(火) 19:28:00
言語仕様によってどこまでカバー出来るかな。
733デフォルトの名無しさん:2005/12/28(水) 00:36:48
バグの定義は一応「作成者の意図しない動作をする」でいいんじゃないのかな?
適当に広いし…

>>723
例えば
・if(a==0)と書くつもりがif(a=0)と書く
・引数のスペルをタイプミス
とか、超有名な類かな…
テクニック的にはif(0==a)と書くのが常套手段だけど
正直な話、if文の条件式中じゃ代入は禁止したほうがいいかも
734デフォルトの名無しさん:2005/12/28(水) 01:02:18
最近の言語じゃたいていそうなってない?
条件式の型がboolじゃないとエラー
735デフォルトの名無しさん:2005/12/28(水) 01:47:01
>>733
コードが、そのコードを作成した者の意図しない動作をする、ということか?
でも、そんなのって、通常ほとんどなくないか?

コードから呼び出してる先の動作が理解と違ってたり、
もともと意図に入ってない条件が実は存在したり、
もともとの意図が間違ってる、とかがほとんどだけど。

動的言語だと違うのかな?
あるいは読み返しとかしないのかな?
仕事のコーディングで読み返ししないなんて俺には考えられないけど。
736デフォルトの名無しさん:2005/12/28(水) 02:18:57
>>735
通常はほとんどないから虫であって、ワサワサ湧いてきたら怖いぜ。
まあ、概ねバグってるときはそうなんだけれども。

言語のほうでやれるのは「バカ避け(という語が嫌いな方は
フール・プルーフで)」しかないだろう。

つまりウッカリミスをつぶすGCであったり、
戻り値返すべきところを返さなきゃゴルァするとか、
ぬるぽってたら例外投げて沈めるとか、ガッとか。
737デフォルトの名無しさん:2005/12/28(水) 02:51:39
GCはメモリ開放しなくていいから楽、みたいな認識しかほとんどされてないのが不幸。
738デフォルトの名無しさん:2005/12/28(水) 03:46:57
まず人間にバグがあり、それがプログラムに転写されているのだ。
よってバグのないプログラムを作りたいのならまず人間をデバッグ
する必要がある。
739デフォルトの名無しさん:2005/12/28(水) 05:32:35
しかし、あまりアイデアを盛り込まない禁欲的な
言語仕様というのはあるだろう。
740デフォルトの名無しさん:2005/12/28(水) 06:09:33
Pascalとか?
あれはコンパイラ側の都合で手抜き仕様で作られてるからな。
書きにくくて仕方ない。
741デフォルトの名無しさん:2005/12/28(水) 17:28:36
簡潔という意味ならschemeに並ぶモノが思いつかないかな
例え機能を増やしても、バグが出ない様に、出ても分かる様にするのが今の時代の流れだから、長いものには巻かれて構わないと思うよ。
というか、そうでもしないともう現場をのりきれないでしょう…
742デフォルトの名無しさん:2005/12/28(水) 18:37:41
「何でもできるよ」的言語はもう10年以上も昔にダメだしされてるじゃん。
743デフォルトの名無しさん:2005/12/28(水) 18:51:35
なんでも出来る言語=アセンブラ/機械語
744デフォルトの名無しさん:2005/12/28(水) 19:17:19
確かに、何も出来ない言語にBUGの入る余地は無い罠w
745デフォルトの名無しさん:2005/12/28(水) 20:25:47
みんな、解ってるとは思うが>>743は放置な
746デフォルトの名無しさん:2005/12/28(水) 21:54:47
>>737
詳しく教えてください。
747デフォルトの名無しさん:2005/12/29(木) 06:21:08
遅レスだが、not nullはAda(2005)にあるぞ
748デフォルトの名無しさん:2005/12/29(木) 11:48:54
せっかくNULL返してるのに、判定しないでアクセスしようとするからダメなんだよ。
言語仕様以前のコーディングの問題だからなぁ・・・。
749デフォルトの名無しさん:2005/12/30(金) 00:31:08
バカかお前。お前はなんでもかんでもコーディングの所為にしてろ。もうくんなアホ。
750デフォルトの名無しさん:2005/12/30(金) 00:57:34
ここってネタスレじゃなかったの?
751デフォルトの名無しさん:2005/12/30(金) 14:20:14
ということは、not nullがあるのはC#2.0とAda(2005)だけか。
実用されているとは言い難いな。

>436見て「あ、いいな」とか思ったけど、実務で使うのはもう少し後にするか。。。
752デフォルトの名無しさん:2005/12/30(金) 21:48:05
>>751
【重要】一連のnot nullネタの始まりが>>407である件について
753デフォルトの名無しさん:2005/12/31(土) 18:10:25
だからMLとかで書けばいいじゃん。
754デフォルトの名無しさん:2005/12/31(土) 22:24:16
>752
ん?Curlにもnot nullがあるって事かな?
>407に書いてある事がよく分からん。。。

>753
言語を選べれば苦労しないさ。。。
755デフォルトの名無しさん:2005/12/31(土) 23:19:01
>754
>言語を選べれば苦労しないさ。。。

じゃあこんなとこ来るなよw
756デフォルトの名無しさん:2005/12/31(土) 23:39:53
すばらしい言語ができて、それが一般的になれば使える可能性あがるし
757739:2006/01/01(日) 00:27:32
>>740
亀レスというか、年が明けてしまった。おめでとうございます。
MLを念頭に置いていました。Pascalというと参照型を採用した
ことが物議を醸した時代ですね。
バグは作法でしか対応できないとは思いません。
758デフォルトの名無しさん:2006/01/02(月) 01:52:44
>>751
C#2.0にnot nullなんてあったっけ?Nullableならあるけど
759デフォルトの名無しさん:2006/01/03(火) 04:33:17
ポインタ廃止しても、ヘッダファイル廃止しても、バグが減るどころか増えてるじゃん
760デフォルトの名無しさん:2006/01/03(火) 04:51:47
>>759
どこにそんな統計情報あんの?
761デフォルトの名無しさん:2006/01/04(水) 20:41:39
C#のNullable…本来nullが格納できない型がnullを格納できるようにする
Adaのnot null…本来nullが格納できる型からnullを禁止する

ちょっとちゃうな。確かに。
762デフォルトの名無しさん:2006/01/07(土) 02:47:27
> 本来nullが格納できる型からnullを禁止する
こうならいいが、

> 本来nullが格納できない型がnullを格納できるようにする
これって、このスレ的には全然意味なくね?

763デフォルトの名無しさん:2006/01/07(土) 02:54:55
>>407-412
いいな。

しかし、こうなるとif文やtry-catch文も式になって欲しいな。ついでに多値代入も。
764デフォルトの名無しさん:2006/01/07(土) 04:52:58
ここまで出てないのが不思議だが、 ダウンキャスト禁止。
765デフォルトの名無しさん:2006/01/07(土) 08:14:24
>>764
dynamic_cast もダメなの?
766デフォルトの名無しさん:2006/01/07(土) 11:37:39
当然だろ。
767デフォルトの名無しさん:2006/01/07(土) 11:42:59
変数名も、型情報として扱うってのはどうだ。
つまり、型は直接使えず、型のインスタンスを使う、みたいな。

何が嬉しいって、変数名はそれが何であるかを表してる。

int sec = hoge();

int hoge() {

 return millisec;
}

なんてのを防止できる。
768デフォルトの名無しさん:2006/01/07(土) 12:12:38
> 変数名も、型情報として扱う
名前だけじゃなくて、型にDbCの制約みたいなファセットを設けられるといいな。
null可否も含めて。
型一貫性矛盾はもちろんコンパイルエラー。
ファセットは静的チェックできる物はコンパイル時チェックするし、
そうでないのはキャスト箇所で動的チェック。

Date deadline:<never null, must isWeekday()> = new Date(…);
769デフォルトの名無しさん:2006/01/07(土) 12:23:38
ここに書き込んでる奴らはまずAdaでそれなりの規模のプログラムが書ける様になってから来い
770デフォルトの名無しさん:2006/01/07(土) 18:07:42
>>769

自然数 N が与えられたとき、
1 から N までの数字を N 個並べる組み合わせをすべて
列挙するプログラムは Ada で書くとどうなりますか?

例えば N = 3 のとき
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
となるようにです。
よろしくおながいします。
771デフォルトの名無しさん:2006/01/07(土) 19:03:48
>>770
http://pc8.2ch.net/test/read.cgi/tech/1010492940/

他のスレにも同じようなコト書いて無いか?
772デフォルトの名無しさん:2006/01/07(土) 19:04:54
訂正というか番号付けわすれ
http://pc8.2ch.net/test/read.cgi/tech/1010492940/575
773デフォルトの名無しさん:2006/01/07(土) 20:50:46
http://pc8.2ch.net/test/read.cgi/tech/1073673931/274
ここにもあるぞ

>766
無効だったら例外吐くんだからいいじゃん。
774デフォルトの名無しさん:2006/01/07(土) 20:54:47
>>773
解ってないな。
ダウンキャストが必要になるって事は設計に穴があるって事だ。

だいたい、自分でキャストしておいて実行したらそこで例外発生って事は、それ自体バグだろ。
775デフォルトの名無しさん:2006/01/07(土) 21:15:02
776デフォルトの名無しさん:2006/01/07(土) 21:20:17
777デフォルトの名無しさん:2006/01/07(土) 22:14:34
だから>>769にAdaで書いてみろって言ってんだろ
778デフォルトの名無しさん:2006/01/08(日) 16:54:50
>>774
解ってないな。
ダウンキャストが必要 イコール 設計に穴、という
短絡思考しかできないんだろ。つまりお前の脳味噌に穴が空いているってことだ。
779デフォルトの名無しさん:2006/01/09(月) 02:30:39
> ダウンキャストが必要 イコール 設計に穴、という短絡思考

お前の脳が蜂の巣でないなら、短絡思考でないことを示せよ。
780デフォルトの名無しさん:2006/01/09(月) 02:34:25
gotoがある イコール 設計に穴
781デフォルトの名無しさん:2006/01/09(月) 04:08:48
やっぱ蜂の巣か。
782デフォルトの名無しさん:2006/01/09(月) 08:20:11
1時間半しか待てんのか。
783デフォルトの名無しさん:2006/01/09(月) 08:38:57
手抜きと省略は違う罠
784773:2006/01/09(月) 14:09:24
>>774
> だいたい、自分でキャストしておいて実行したらそこで例外発生って事は、それ自体バグだろ。
バグなら例外吐くんだし、例外が検知されなければバグは見当たらないってことでしょ?
バグの出にくい言語ってのは、バグを検知しやすいという側面もあるでしょ?

何も否定されて無いように思うんだけど。
785デフォルトの名無しさん:2006/01/09(月) 14:56:28
>例外が検知されなければバグは見当たらないってことでしょ?
おいおい。基本が解ってないな。

「テストは、バグの存在は証明できるが、バグの非存在は証明出来ない。」
常識ですよ。

だいたい、ダウンキャストに失敗したら例外なんて、今当たり前に普及してるだろ。
そうなるまえに、そんなバグを仕込めないようにすると言ってるの。
786デフォルトの名無しさん:2006/01/09(月) 21:40:04
>>764 >>774 >>778 >>784

オブジェクト指向を止めたら?
787デフォルトの名無しさん:2006/01/09(月) 22:07:35
>>784
> バグの出にくい言語ってのは、バグを検知しやすいと
> いう側面もあるでしょ?

バグの出にくい言語と、バグを (実行時に) 検知し易い
言語 (と言うか、たぶん環境) は、全然違う概念だぞ。

今はまだ一生懸命バグを見つけてつぶして出荷している
のが現状だから、バグを検知し易いシステムと言うのも
今はまだ重要なんだけど、本当はバグを混入できないよ
うな言語や環境があれば面倒なテストなんかせずに出荷
できるでしょ? ここは、そういう夢物語を語り合うス
レだよ。
788デフォルトの名無しさん:2006/01/09(月) 22:29:42
ダウンキャストについては、エラー出さずに実行される方が恐い。
789デフォルトの名無しさん:2006/01/09(月) 22:30:27
いや、どんなけ言語仕様がよくてもテストは必要だろ。
790デフォルトの名無しさん:2006/01/09(月) 23:20:12
>>786 ←こいつホームラン級のバカだな
791デフォルトの名無しさん:2006/01/09(月) 23:21:55
>>785
> 「テストは、バグの存在は証明できるが、バグの非存在は証明出来ない。」
知ってるから”見当たらない”という単語を使ったんだが。

> そうなるまえに、そんなバグを仕込めないようにすると言ってるの。
システム記述言語の側面を捨てるということなら、キャスト全部禁止(アップキャストは暗黙の変換)ということで同意できる。

>>787
どの時点のバグの話をしてるの?
要求
分析
設計
コーディング
どこから?
上流設計より上は言語の範疇じゃないように思うんだけど。
792デフォルトの名無しさん:2006/01/09(月) 23:25:30
>>789
そりゃそうだ。だが、いくらテストしてもバグは残る。
なら入らなくて良いバグは最初から入らない方が良いに決まってる。
793デフォルトの名無しさん:2006/01/09(月) 23:27:12
>>791
>システム記述言語の側面を捨てるということなら、
kwsk
794デフォルトの名無しさん:2006/01/09(月) 23:44:48
現状の静的言語を使ってまともに開発してて残るのは、

> 設計
この辺
> コーディング

に起因するバグがほとんど。ここをどうにか汁。
795デフォルトの名無しさん:2006/01/10(火) 00:03:05
>>789
もちろんバグの混入はコーディング時だけじゃないから
全てのテストが不要になるわけじゃない。

でも、(夢物語だが) 言語仕様がきちんとしてれば、例
えばコーディングミスにかかわるテストは不要になるだ
ろ。願わくば、上流工程でもすばらしいツールが開発さ
れてテストがどんどん不要になればいいんだが…。

>>791
> 知ってるから”見当たらない”という単語を使った

言い訳なのか、話の流れが読めてないのか良くわからん
が、とにかく見苦しい。

> どの時点のバグの話をしてるの?

普通にスレを読んでりゃ、コーディング + 設計少々
ぐらいはわかりそうなもんだが…。
796デフォルトの名無しさん:2006/01/10(火) 00:05:07
>>793
バイナリファイルを扱うときに構造体にキャストするとか、そんな感じじゃね?
ローレベルなの書いてるとキャスト無いとつらいからなあ
797デフォルトの名無しさん:2006/01/10(火) 00:44:50
設計段階で既にBUGってるシステムを検知出来なきゃ、無駄な事さ♪
798デフォルトの名無しさん:2006/01/10(火) 06:44:16
>>795
> が、とにかく見苦しい。
もう一回 >>774,784,785 を読みなよ。

俺も言葉足らずのところがあって >774 の
> ダウンキャストが必要になるって事は設計に穴があるって事だ。
これを否定する気はないということを追加しておく。
ただ、それの必要なレイヤも存在するから、当時の俺の、例外を吐くから構わないという意見になる。

> 普通にスレを読んでりゃ、コーディング + 設計少々
> ぐらいはわかりそうなもんだが…。
アンタだと知ってれば聞かないよ。
799デフォルトの名無しさん:2006/01/10(火) 08:38:51
結局二人が「望んでいるもの」は
一致していたわけだ。
800デフォルトの名無しさん:2006/01/10(火) 13:14:39
>>797
それを検知できる言語仕様を考えよ
801デフォルトの名無しさん:2006/01/10(火) 13:32:12
100%バグと返せ、誤検出率を気にしなけりゃ完璧。
大体バグって言うのは人間共が自分の主観で決めるもので
コンピュータ側からしたら言われたとおりにしているだけ
言った事と思ってたことが違うのを自動的に検出しろっていうのは原理的に不可能だ

バグの検出は結局「思ってた事」を知ってるプログラマにしかできない。
まあ、可読性でも上げとけってこった。

一方で何故バグが生じるかと言えばその言語で可能な操作が多すぎる為だ
その性でプログラマが意図と異なる操作を指示してしまう危険が増える
バグの発生を減らしたきゃ自由度の低い言語を使えって事

バグ排除以外の言語の能力を全て無視すりゃ
究極形は>>2で」結論が出とる
802デフォルトの名無しさん:2006/01/10(火) 14:03:23
プログラマ側でやりたいことは、プログラム上では数学的処理に変換されているけど、ここにバグ検知の見解の限界があると思う
それなら、コードに対して強力なタグ付けを行って、コンパイラ側にプログラマの意図を類推しやすい形でコードを書いてあげられれば、ミスの汲み出しがしやすくなると思うんだけど…
803デフォルトの名無しさん:2006/01/10(火) 14:18:40
自然言語->論理式->ロジックプログラミング
という流れにポイントを絞る時期がきているのではないか。
これなら焦点が合わせやすい。
804デフォルトの名無しさん:2006/01/10(火) 14:26:51
> 言った事と思ってたことが違うのを自動的に検出しろっていうのは原理的に不可能だ

その通り。
だが、言ったことの中の矛盾は検出できる。
それが、バグを出にくくする言語仕様ということ。

ついでにいうと、思ってる事を正確に沢山言わせた方が検出しやすい。
だから、動的言語より静的言語の方がステップが増える傾向がある。


もちろんそれだけじゃなくて
> まあ、可読性でも上げとけってこった。
こういうようなのも重要だけど。
805デフォルトの名無しさん:2006/01/10(火) 14:29:41
> それなら、コードに対して強力なタグ付けを行って

プログラミングではプログラマの意図について名前を使う。
>>767-768 が、その具体案ではないか。
806デフォルトの名無しさん:2006/01/10(火) 14:59:38
実行中のメモリやデータ構造が見える開発環境。
807デフォルトの名無しさん:2006/01/10(火) 15:10:06
>言ったことの中の矛盾は検出できる

局所的な矛盾なら検出できる。そしてそれはどんな言語でも文法チェックと言う形で検出する。
だがグローバルな矛盾の検出は全ての入力に対する試験が必要になるので計算量的に不可能。
808デフォルトの名無しさん:2006/01/10(火) 15:16:54
具体的に何を言ってるのかよくわからん。
グローバルに全然別に開発された部分同士で、
型の整合のチェックがなされて矛盾が検出される訳だが。
809デフォルトの名無しさん:2006/01/10(火) 15:24:46
いわゆる実行時エラーの類のこと
810デフォルトの名無しさん:2006/01/10(火) 15:25:18
というか、局所的な矛盾なら検出できる文法というのを披露していただきたい。
811デフォルトの名無しさん:2006/01/10(火) 15:26:54
おまいはコンパイラに怒られたことがないのか?
812デフォルトの名無しさん:2006/01/10(火) 15:28:18
>>809
ますます意味が分からん。
文法チェックなら、コンパイル時に行えるわけだが。
そして、実行時にエラーとして検出できる矛盾とはいかなるものか。
813デフォルトの名無しさん:2006/01/10(火) 15:30:34
>>811
名前間違えとかその手のことか。
それなら、局所もグローバルも関係ないだろうよ。
814デフォルトの名無しさん:2006/01/10(火) 15:32:08
開放したメモリを弄るのは明らかに矛盾だろ?
815デフォルトの名無しさん:2006/01/10(火) 15:38:42
なるほど。しかしそれは型情報があればグローバルも局所もないな。
というか、いまどきGC前提だろ。
816デフォルトの名無しさん:2006/01/10(火) 15:45:18
いや、局所とかグローバルといっても変数の話をしてるわけじゃないから
文単位での矛盾か文の集合体としての矛盾かというだけ
それに、GCは開放し忘れを防ぐだけで開放してしまった物を弄ることには何の影響もないぞ
817デフォルトの名無しさん:2006/01/10(火) 15:48:18
おいおい、まだ弄れる物を解放するGCなんて怖くて使えんぞw
818デフォルトの名無しさん:2006/01/10(火) 15:52:49
ふむ、今時はメモリの開放は全てGC任せが前提なのか
819デフォルトの名無しさん:2006/01/10(火) 22:30:34
>>816
GC 使うならそうでないとあまりありがたくないだろ。
820819:2006/01/10(火) 22:31:26
すまん間違えた >>816 じゃなくて、>>818 だった。
821デフォルトの名無しさん:2006/01/10(火) 23:03:33
プログラムは書いた通りに動いてるだけ
822デフォルトの名無しさん:2006/01/10(火) 23:07:57
それをバグとするか仕様と考えるかは使う方の受け止め方次第

昔からのエンジニアはプログラムには元々バグがあるものだと
織り込み済みでそれを回避した使い方を考えて使うもの

最近の風潮(バグ=罪悪説)は素人が参加しだしたために広まったもの
823デフォルトの名無しさん:2006/01/10(火) 23:15:26
「バグではありません。仕様です」つう釈明を流行らせたところもあるねw
昔では考えられない釈明だけど。
そしてユーザーは「回避した使い方を考えて使う」わけだ
824デフォルトの名無しさん:2006/01/10(火) 23:18:29
馬鹿電波が紛れ込んできたな
825デフォルトの名無しさん:2006/01/11(水) 00:01:36
>>824
俺はこのスレの初めから最後までバカしかいないと思ってる。
826デフォルトの名無しさん:2006/01/11(水) 00:39:27
バカの出にくい言語仕様を考える。
827デフォルトの名無しさん:2006/01/11(水) 00:43:21
それよりも、バカなことをしたくならない言語仕様を考えてくれ。
828デフォルトの名無しさん:2006/01/11(水) 01:38:48
>>767-768は、膨らませて練り上げると、いい機能になりそうなんだが、どうだろう。

広い範囲での整合性のチェックといったら、結局、
型情報のチェックしかない。(ほかにあったらあげて欲しい)

なら、型情報をリッチにしていろいろチェックできるというのは、筋が通ってると思うのだが。
829デフォルトの名無しさん:2006/01/11(水) 01:43:08
つtypedef
830デフォルトの名無しさん:2006/01/11(水) 01:47:29
もちろんそれもいいんだけどね。もっとリッチに行こうぜ。
831デフォルトの名無しさん:2006/01/11(水) 01:55:50
つstruct, class
832デフォルトの名無しさん:2006/01/11(水) 02:02:15
強制ハンガリアンかよ。
833デフォルトの名無しさん:2006/01/11(水) 02:05:16
error 10 行 : i はハンガリアン表記ではありません .
error 11 行 : j はハンガリアン表記ではありません .
error 12 行 : k はハンガリアン表記ではありません .
834デフォルトの名無しさん:2006/01/11(水) 02:13:34
つまり、木は森に
エラーは大量のエラーに
バグは大量のバグに隠せと言うことだな
うむ、実に奥が深い
835デフォルトの名無しさん:2006/01/11(水) 02:37:04
反ガリ案は違うと思うが…
836デフォルトの名無しさん:2006/01/11(水) 07:19:29
概出かもしれんが次元解析してくれるとうれしい
837デフォルトの名無しさん:2006/01/11(水) 08:37:25
変数に値をセットしたあと、その変数を参照することなく、
更に値をセットしうるときや、関数を抜けちゃいうるようなとき、
コンパイルエラーになるってのはどうだ。
838デフォルトの名無しさん:2006/01/11(水) 11:05:21
賢いIDEなら、コーディング段階でそれぐらい出来そうだな。
839デフォルトの名無しさん:2006/01/11(水) 11:17:10
>>837
そんなWARNINGを出すコンパイラは普通にある希ガス
840デフォルトの名無しさん:2006/01/11(水) 11:19:29
-Wallをつけないでコンパイルする奴は馬鹿。
841デフォルトの名無しさん:2006/01/11(水) 11:35:04
>>836
それって型推論とか違うのかな。よくわかってないけど。
あと、>>767-768みたいに、同じdoubleでも、ちゃんと型作って、さらに型同士の関係を定義しておくと。

ただ、金融の一部を除いて、業務のシステムではあんまり出番がなさそうな…。
842デフォルトの名無しさん:2006/01/11(水) 12:28:45
>>841
角度をラジアンに変換するときに
rad = Θ * PI / 180;
見たいな計算をする訳だけど、
うっかり
rad = Θ * 180 / PI;
と書くと次元エラーを警告
843デフォルトの名無しさん:2006/01/11(水) 12:29:11
ハンガリばかり連呼しているバカは一生コーダやってろよ。お前らは研究者に向いていない。
844デフォルトの名無しさん:2006/01/11(水) 13:07:34
>>842
だからそれ、型チェックでしょ
180の型が度で。
845デフォルトの名無しさん:2006/01/11(水) 13:25:47
>>842
次元解析でそれがエラーになるのはおかしい。
radian=degree*定数。
>>844の言ってることもずれてる。
846デフォルトの名無しさん:2006/01/11(水) 14:17:51
だから、ここでのPIの型をradにしろって話だろ
847デフォルトの名無しさん:2006/01/11(水) 21:15:16
俺はバグが見つけやすい言語であればいいじゃんと思ってたんだが
実行前に見つけるの前提? ってことはスクリプト系はここではスレ違いってことでいい?
848デフォルトの名無しさん:2006/01/11(水) 22:14:28
「バグの出にくい」と逝っている以上は
実行中に見つかるのは手遅れだろ?
849デフォルトの名無しさん:2006/01/11(水) 22:28:33
こうですか?わかりません(><)
class rad{
double operater/(rad);
rad operater*(rad);
rad operater+(rad);
rad operater-(rad);
}
850デフォルトの名無しさん:2006/01/12(木) 00:31:24
>class rad{
いいと思います。(radの掛け算はないと思うし、割り算はdoubleになると思うけど)
でも単位ごとにクラスができてたら、言語自体が収集つかなくなってしまいます。
実装レベルではπをdoubleとしながらも、コンパイラに「πはradianだよ」という
情報を与えてエラーにできないでしょうか?
851デフォルトの名無しさん:2006/01/12(木) 00:46:21
だからclass定義するんじゃねえか馬鹿
852デフォルトの名無しさん:2006/01/12(木) 05:02:12
>>850
> でも単位ごとにクラスができてたら、言語自体が収集つかなくなってしまいます
はぁぁぁぁ?????
853デフォルトの名無しさん:2006/01/12(木) 05:41:44
radrad operater*(rad);
854デフォルトの名無しさん:2006/01/12(木) 05:45:37
double sin(rad);
double cos(rad);
double exp(rad);
とか定義しておかないといけない気が巣
855デフォルトの名無しさん:2006/01/12(木) 08:48:51
>>851
新しい言語仕様を考えるスレで、なぜ既存言語仕様の話を?

>>852
もっとラジカルに型をバンバン楽に作らせろって事だと。

typedef double radian;
typedef double degree;
const <radian / digree> PI = およそ3 ;


double rad = Θ * PI / 180; //コンパイルエラー
radian rad = Θ * PI / 180; //コンパイルエラー
radian rad = Θ * PI / (digree)180; //OK.

double rad = Θ * 180 / PI; //コンパイルエラー
radian rad = Θ * (digree)180 / PI; //コンパイルエラー

こんな感じ。
856デフォルトの名無しさん:2006/01/12(木) 08:57:36
あ、なんで 
const <radian/digree> PI なんだ。 
const degree PIでよか。
857デフォルトの名無しさん:2006/01/12(木) 11:03:07
まとめ
結局C++もまともに使えていない馬鹿が
俺がバグを出すのは俺のせいじゃない言語が悪いんだ
という妄想で暴れてるスレ
858デフォルトの名無しさん:2006/01/12(木) 11:56:35
世の中の95%のPGがC++をまともに使えない件について

で、いちいちclassつくらんで次元解析する方法よろ
859デフォルトの名無しさん:2006/01/12(木) 12:31:42
言語仕様を考えるスレなんだから、C++ とかの既存の言語でどうするかはスレ違いだよな

要するに次元は型情報で、次元解析は型検査なんだから
次元を何らかの形で記述できる文法にすれば十分可能な希ガス

double とか int とかの既存の型に次元情報を追加する形になるのかな

dimdecl m; // 単位次元の宣言
dimdecl kg;
dimdecl s;
dimdef N = kg * m / (s * s);

double<kg> mass = 5.656 kg;
double<m/s/s> acc = 7.878 m/s/s;
double<N> f = mass * acc;

Google電卓が参考になるかも
860デフォルトの名無しさん:2006/01/12(木) 12:47:59
結局、前の方でも言われているけど
「強力な型チェック機能」が重要になるっていうのが一つの結論になるのかな?

個人的意見として、Javaみたいな堅苦しくって仰々しい言語になると返って使いすらいので
Lispやrubyみたいな手に馴染む感じを失わない文応でもあって欲しいんだけど
861850:2006/01/12(木) 12:48:40
>>文応
文法…orz
862デフォルトの名無しさん:2006/01/12(木) 13:01:25
「総称」などの概念は、生まれた経緯(理由)は違うものの
よりバグの出にくい言語仕様って言うことができますよね?
(↑の場合は型キャストのミスというバグからの開放)
863デフォルトの名無しさん:2006/01/12(木) 13:10:46
>>859
それやりだすと補助単位が面倒だから補助単位は言語仕様に盛り込めないかね。
後は単位変換とか。
dimdecl g;
dimsubunit k = 1000;
double<g> mass = 5.656 <k>g;

dimdecl m;
dimdecl ft = 0.3048 m;
double<m> height = 10000 ft;
864デフォルトの名無しさん:2006/01/12(木) 13:27:40
確かにGenericプログラミングとかパラメタライズトクラスとか近いな、というか、同じなのか?
たしかGenericプログラミングスレがあった気がするが
865デフォルトの名無しさん:2006/01/12(木) 17:14:43
お前ら、ジェネリックとかアスペクト、アジャックスとかetc..のしょうもない言葉に釣られすぎ。
もっと骨のある奴はいないのか。
866デフォルトの名無しさん:2006/01/12(木) 17:16:43
>>865
禿同
カルト的でマジキモイ
867デフォルトの名無しさん:2006/01/12(木) 18:50:48
LISP クロージャ 無名関数 構造体ベース志向
868デフォルトの名無しさん:2006/01/12(木) 18:56:19
土方を骨のある奴とは、モノは言い様だな
869デフォルトの名無しさん:2006/01/12(木) 19:07:56
>>868
このスレは研究者のためのスレだけど、コーダには現場の意見を言ってもらいたい。
言語という具体的な道具を考える段階では、机上だけで考えても仕方がないのだから。
870デフォルトの名無しさん:2006/01/12(木) 19:08:54
逆に言うと、コーダは机上の話には口を出すな、という事でもある。
871デフォルトの名無しさん:2006/01/12(木) 19:09:24
JavaScriptのように文字列を関数に出来れば速くならないか?
872デフォルトの名無しさん:2006/01/12(木) 19:55:43
トレース出力にコードとデータが混在していればクロスリファレンスしたくなくなる デバッグに役立つじゃん
873デフォルトの名無しさん:2006/01/12(木) 20:18:35
コーダーの立場でいえば、ライブラリや情報やIDEも考慮して、一番早くできればいい
バグがでないとしても、コーディング終わるのに他の100倍時間のかかる言語はいらない
874デフォルトの名無しさん:2006/01/12(木) 20:41:40
Perl6を2/100ヶ月で作れるんならお前の意見はもっともだ
875デフォルトの名無しさん:2006/01/12(木) 20:56:35
並列処理を記述するのにforkやpthreadを記述した時点で負けだと思う
876デフォルトの名無しさん:2006/01/12(木) 20:58:47
>>871
Java6あたりでコンパイラ起動、リフレクション、動的バイトコードロード駆使すれば出来る
877これで、厨度が計れるかも。:2006/01/12(木) 21:44:16
>>873
だったら、何倍までならいいの?
878デフォルトの名無しさん:2006/01/12(木) 21:52:28
ツリービューとかツリー構造のデータを記述するのに向いた言語って無い?
多くの人がここで躓くんだ
Perlベースのモジュールで見たって5−6種類はもうすでにあるんじゃないかなと思うぐらいすごい
そしてXML
879デフォルトの名無しさん:2006/01/12(木) 21:57:46
>>876
今のJavaでもテキストファイルに吐いて、javacでコンパイルして、クラスローダで読み込めばできるよ。
880デフォルトの名無しさん:2006/01/12(木) 22:18:26
ビジュアルプログラミング言語みたいなのはないのかな
マウスだけで全部プログラミングできてしまうようなやつ。
881デフォルトの名無しさん:2006/01/12(木) 22:21:17
>>877
上手く説明する自信ない すまん

コーディングオンリーで完成させる時間(バグでない言語)
コーディング+修正で完成させる時間(バグ出る言語)

この2つを比較して上の方の時間の方が短ければよい
882デフォルトの名無しさん:2006/01/12(木) 22:25:38
>>881
100倍で十分じゃん
883デフォルトの名無しさん:2006/01/12(木) 22:27:28
>>875
Work-Time C
884デフォルトの名無しさん:2006/01/12(木) 22:38:44
>>880>>637
て言うか、ビジュアルだからバグらないわけじゃないんだ
が、定期的にこの意見が出てくるな。

>>881
コーディングにかかる時間と、+修正 にかかる時間の大
体の比率もわからんのか?

まあ、完成までの時間しか考慮に入れていない時点で厨と
いうのはバレバレだがな。
885デフォルトの名無しさん:2006/01/12(木) 22:40:28
>>880
操作をマウスで行うのか表示を画像形式にするのか良くわかんない PAD図で表示するとか構文解析図を表示するとか
886デフォルトの名無しさん:2006/01/12(木) 22:46:06
>まあ、完成までの時間しか考慮に入れていない時点で厨と
>いうのはバレバレだがな。

他に何の時間を考慮しろと?
887デフォルトの名無しさん:2006/01/12(木) 22:56:09
>>1>>11 循環参照するポインタのリファレンスカウントがゼロにならないバグを組み込んだ
888デフォルトの名無しさん:2006/01/12(木) 22:58:36
Ver1完成させるまでにかかる時間が少ないといいね
Ver1からVer1.1完成させるまでの時間が少ないといいね
Ver1.1からVer1.3完成させるまでの時間が少ないといいね?

他に何の時間を考慮するんだ?
889デフォルトの名無しさん:2006/01/12(木) 23:01:30
Ver1からVer1.2に上がるまでの間に人が辞めてかないといいね
まず鬱になる これ基本
890デフォルトの名無しさん:2006/01/12(木) 23:27:02
MKSA<1,0,-2,0> 加速度[m/s^2]
こんな感じにすると単位同士の演算も簡単になりそうな気がします。
891デフォルトの名無しさん:2006/01/12(木) 23:40:38
>>886, >>888
「作ったら、ハイおしまい。」のアマチュアさんは、楽
でいいね。
892デフォルトの名無しさん:2006/01/12(木) 23:43:58
>>879
今のJavaじゃjavacが使えるかどうかやそもそもjavacでよいのかが分からない
893デフォルトの名無しさん:2006/01/12(木) 23:52:15
D言語マンセースレはここですか?
しょっちゅうインデックス外の配列にアクセスしてしまいArray Bounds Error起こしてしまうんですが何とかならないでしょうか?
894デフォルトの名無しさん:2006/01/13(金) 00:01:25
つiterator
895デフォルトの名無しさん:2006/01/13(金) 00:03:04
言語を進化させるより人間の脳を進化させた方が早い
896デフォルトの名無しさん:2006/01/13(金) 00:06:11
>>891
いやだからアマチュアさんにプロは何の時間を考慮するのか教えてくれと
897デフォルトの名無しさん:2006/01/13(金) 00:09:11
鶏を割くに焉ぞ牛刀を用いん >894
898デフォルトの名無しさん:2006/01/13(金) 00:09:20
作業時間 Χ(x) 眠る時間 f(x) とすると Χ(x)+f(x)=24時間を満たす最小の f(x) を得られる x が求められる公式がこのスレで欲しい
899デフォルトの名無しさん:2006/01/13(金) 00:31:43
900デフォルトの名無しさん:2006/01/13(金) 00:35:57
>>886
稼動後のメンテナンス
901デフォルトの名無しさん:2006/01/13(金) 00:38:27
>>893
配列を使わない。

>>896
売ってからのバグ対策とかは思いつかないの?
マジな話、バグ "0" になるならソフトによっては
100倍でも十分なケースもあるよ。
902デフォルトの名無しさん:2006/01/13(金) 00:38:38
この流れで関係なくね?それ。
それとも改修のこと?
903デフォルトの名無しさん:2006/01/13(金) 00:47:20
マニュアル作る時間じゃないのか?
904デフォルトの名無しさん:2006/01/13(金) 00:49:06
>>901-902
パッチ配布(M$ではサービスパックなどとぬかしておるが)に掛かる時間のことだな
905デフォルトの名無しさん:2006/01/13(金) 00:51:42
>>904
いまだにパッチの当たってないPCがわんさかあることを考えると、
時間は無限大とも言えるかも知れないですね。
906デフォルトの名無しさん:2006/01/13(金) 00:53:28
>>903
マニュアルにバグがあるケースも多いですね。
907デフォルトの名無しさん:2006/01/13(金) 00:54:23
ソフトの改変でセキュリティが弱くならない言語仕様を考えたくなる
908デフォルトの名無しさん:2006/01/13(金) 00:57:49
>>879
今のJavaじゃなくてもリフレクションや 動的バイトコード生成&ロードだったら 1.1 の頃からできるし。
909デフォルトの名無しさん:2006/01/13(金) 01:05:04
1.InputStreamでクラスファイルのバイナリを読む
2.ClassLoader#defineClass()にバイナリを渡してロード
3.Class#forName→Class#newInstance()→Class#getMethod→Method#invoke
って漢字か
910デフォルトの名無しさん:2006/01/13(金) 01:15:05
完成までの時間しか考慮にいれないのは当たり前の話だ

保守作業が発生したとき、保守作業の完成までの時間が少ないといい
バージョンアップが発生すれば、バージョンアップの完成までの時間が少ないといい

完成までのコーディングと保守のコーディングを何で分けて考えるの?
同じコーディングじゃん それで最終的に早い方がいいってだけじゃん?
911デフォルトの名無しさん:2006/01/13(金) 01:20:32
保守の発生回数が少ないのが一番良いね
912デフォルトの名無しさん:2006/01/13(金) 01:22:02
完成までを100として、保守が1でも1000回というのと、
保守も100だけど2〜3回で収束するというのとを比べると、
どっちがいいかっていう問題ですね。
913デフォルトの名無しさん:2006/01/13(金) 01:24:41
次スレタイトル

保守のしやすい言語仕様を考える
914デフォルトの名無しさん:2006/01/13(金) 01:26:00
ファームウェアで保守なんて考えたら罰が当たるよ
915デフォルトの名無しさん:2006/01/13(金) 10:11:56
開発速度が100倍になったら保守という作業は消滅する
って聞いた事がある
916デフォルトの名無しさん:2006/01/13(金) 12:31:05
だから、30歳過ぎて、社会の政治的な要因に太刀打ちできるような
立場になってからもデザインパターンみたいな一技術で重宝されるような
人物に対して「逃げ道だよな」って言ってるの。20代の奴がやりたくてもできないような
ところで自分をアピールする術を持ってないのかって。
中堅者のやることっていったら、20代の奴が仕事をしやすいように、いろいろと根回しすることだろ?
年齢重ねても、やることが20代の延長だったら会社に居る意味ねーよ。
スパゲティコードだとか、その辺は中堅社員が口出すことじゃねーって。
むしろ、20代の奴が気付いて、中堅社員に意見をUPして、それから中堅社員が根回しするのが理想。
要は、いい歳こいて低レベルな話してんじゃねーよって。もっと抽象的になれってことだ。
917デフォルトの名無しさん:2006/01/13(金) 14:06:04
狂牛病を直すソフトウェアとか
鶏インフルエンザを予防するのとか
918デフォルトの名無しさん:2006/01/13(金) 14:10:50
高齢化社会に備えて自宅で園芸をするための言語仕様とか考えといたほうがいいかも
919デフォルトの名無しさん:2006/01/13(金) 14:15:41
路上駐車を防ぐ言語もいる
非常に重要 交通の妨げになる
920デフォルトの名無しさん:2006/01/13(金) 21:19:11
女に縁のなかった俺がモテまくりでウハウハな言語キボンヌ
921デフォルトの名無しさん:2006/01/13(金) 21:32:35
だから、30歳過ぎて、狂牛病に太刀打ちできるような
立場になってからも鶏インフルエンザみたいな一予防で重宝されるような
高齢化社会に備えて「自宅で園芸をするための言語仕様とか考えといたほうがいいかも」って言ってるの。路上駐車の奴がやりたくてもできないような
ところで自分をアピールする術を持ってないのかって。
中堅者のやることっていったら、路上駐車の奴が交通の妨げをしやすいように、いろいろと根回しすることだろ?
年齢重ねても、やることが路上駐車の延長だったら会社に居る意味ねーよ。
防ぐ言語もいるだとか、その辺は非常に重要じゃねーって。
むしろ、路上駐車の奴が気付いて、女に縁のなかった俺がモテまくりで、それから中堅社員が根回しするのが理想。
要は、いい歳こいてウハウハな言語キボンヌじゃねーよって。もっと抽象的になれってことだ。
922デフォルトの名無しさん:2006/01/13(金) 23:42:56
枯れたライブラリが山盛りで、
自分でほとんどコーディング量が少なくて済めばバグも出にくい
923デフォルトの名無しさん:2006/01/14(土) 00:16:22
>>917-920
Javaならすべて実現できます。
924デフォルトの名無しさん:2006/01/14(土) 00:22:21
もうこのスレ削除していいでしょや?
バカしかいない。このバカ!クズ!
925デフォルトの名無しさん:2006/01/14(土) 00:26:57
まあ、コーディング量が少なければバグも少ないのはわ
かるが、たった2行でも日本語として??な書き込みし
かできない >>922 がいる限り、バグは無くならないで
あろう。
926デフォルトの名無しさん:2006/01/14(土) 00:28:02
コーディング量以前の問題だって早く気づけ、このバカ!クズ!
927デフォルトの名無しさん:2006/01/14(土) 00:29:54
人間が作るからバグができる。
つまりバグがある言語は作った人の血が通っている。って昔の偉い人が・・・・
928デフォルトの名無しさん:2006/01/14(土) 00:30:52
まぁ、あれだよ 2割8割。お前ら8割
929デフォルトの名無しさん:2006/01/14(土) 00:38:31
お前らはね、努力もせずにバグがでるーバグがでるーとか言ってるのね。
そして、自分のバカさ加減を言語とか、コーディングスタイルとか、スパゲッティコードのせいにしたりするわけ。
〜スタイルだの、〜指向だの、といろいろいいわけを考える訳ね。
もうこのバカ!クズ!
930デフォルトの名無しさん:2006/01/14(土) 00:44:16
山本インセンティブでどう?
931デフォルトの名無しさん:2006/01/14(土) 01:16:35
>>929
馬鹿って言うやつが馬鹿だってママが言ってたお
932デフォルトの名無しさん:2006/01/14(土) 02:25:13
>>914
でも最近は、ネットでファーム配信することも増えてきたよ。

>>915
意味不明?
933デフォルトの名無しさん:2006/01/14(土) 02:40:06
1000だったらバグの出にくいオパイうp
934デフォルトの名無しさん:2006/01/14(土) 05:48:37
まあ、コーディング量が少なければバグも少ないのはわ
かるが、たった2行でも日本語として??な書き込みし
かできない >>922 がいる限り、バグは無くならないで
あろう。
935デフォルトの名無しさん:2006/01/14(土) 09:22:11
おれもそう思った
936デフォルトの名無しさん:2006/01/14(土) 10:45:59
副詞ひとつでガタガタ言ってんなカス共
くやしかったら、まともなネタ振ってみろ
937デフォルトの名無しさん:2006/01/14(土) 12:03:14
>>936
お前なんか超スーパーめっちゃ
938デフォルトの名無しさん:2006/01/14(土) 14:43:06
>>922 が「副詞ひとつ」の問題とはとても思えない件について
939デフォルトの名無しさん:2006/01/14(土) 15:53:46
>>936
プログラムだったら、カンマ一つで何百万ドルか吹っ飛
んだ例もありますが?
て言うか、>>922 のどの副詞を修正したら >>922
まともな日本語なるんだ?
940デフォルトの名無しさん:2006/01/14(土) 21:37:40
ウチはスペースひとつで一億円ぶっ飛びましたが何か?
941デフォルトの名無しさん:2006/01/14(土) 22:11:16
ウチはバグ数千個でプロジェクトぶっ飛びましたが何か?
942デフォルトの名無しさん:2006/01/15(日) 00:53:04
害虫のバグ一つで今日のデートが吹っ飛びましたが何か。
943デフォルトの名無しさん:2006/01/15(日) 00:54:58
ウチはカウントダウン一回でロケットがぶっ飛びましたがなんか
944デフォルトの名無しさん:2006/01/15(日) 00:58:28
関数型言語は、マイナーながらそれなりに市民権を得つつある。
しかし、論理型言語や並列型言語がそうでないのは何故だろう。
945デフォルトの名無しさん:2006/01/15(日) 01:00:27
STLやらBoost.LambdaからC++ユーザを関数型へ染めたのだ、とデムパしてみるテス。
946デフォルトの名無しさん:2006/01/15(日) 01:09:12
味噌を作るための言語仕様はありますか?
947デフォルトの名無しさん:2006/01/15(日) 01:18:23
>>945
確かに、C++というメジャー言語が、多数のユーザに
関数型の考え方を見せ付けたってのはあるだろうね。
948デフォルトの名無しさん:2006/01/15(日) 01:38:15
味噌の地域性を表現する表象言語が必要になりました どんな文法がよろしいでしょうか 記号体系でも結構です
949デフォルトの名無しさん:2006/01/15(日) 01:45:04
なぜってね いつも食べているものじゃないと安全管理に対する意欲が沸かないでしょ
950デフォルトの名無しさん:2006/01/15(日) 02:01:07
>>948
成分表じゃダメか?
951デフォルトの名無しさん:2006/01/15(日) 03:01:36
なんか、低脳荒らしがゴミレス量産してるな。
952デフォルトの名無しさん:2006/01/15(日) 03:23:10
次スレはマ板だな
953915:2006/01/15(日) 09:27:22
>>932
「新規開発のほうが保守するより安上がりになる」という意味さ
954デフォルトの名無しさん:2006/01/15(日) 11:44:01
>>953
母体が 100倍以上あったら駄目ジャン。
つーか、テストの工数とか考えてないだろ。
955デフォルトの名無しさん:2006/01/15(日) 13:02:13
M$は数年毎にOSを新規開発してるからなぁ
ある意味脅威的だよなぁ
956デフォルトの名無しさん:2006/01/15(日) 13:08:53
新規開発じゃねぇだろ。単なる改造拡張。
957デフォルトの名無しさん:2006/01/15(日) 13:53:53
>>955
うわぁ頭悪いねキミ
958デフォルトの名無しさん:2006/01/15(日) 14:07:19
リッチな型情報を容易に使えること、というのが結論ということでよろしいか。
あと、馬鹿ネタ書いてる奴はマ板行け。
959デフォルトの名無しさん:2006/01/15(日) 14:11:54
>>864
-generic- 総称的プログラミング -programming-
http://pc5.2ch.net/test/read.cgi/tech/1079460996/
960デフォルトの名無しさん:2006/01/15(日) 14:20:08
関連?
型なし言語逝ってよし
http://piza.2ch.net/tech/kako/986/986355498.html
961デフォルトの名無しさん:2006/01/15(日) 14:35:02
>>943
並列型言語は、
プログラムの潜在的な並列性を完璧に検出・並列実行できるため、
逆に処理記述の粒度が細かくて、面倒というか、コードが長くなるらしい。
あと、関数型言語以上に発想というか考え方の違いが大きいとか。
いや、全然解ってないんだけど。
解ってる人ツッコミよろ
962訂正:2006/01/15(日) 14:35:31
>>944
並列型言語は、
プログラムの潜在的な並列性を完璧に検出・並列実行できるため、
逆に処理記述の粒度が細かくて、面倒というか、コードが長くなるらしい。
あと、関数型言語以上に発想というか考え方の違いが大きいとか。
いや、全然解ってないんだけど。
解ってる人ツッコミよろ
963デフォルトの名無しさん:2006/01/15(日) 15:27:34
豆腐を4ラインで製造する言語仕様を考える
964デフォルトの名無しさん:2006/01/15(日) 16:28:55
コンパイラ言語逝ってよし
965デフォルトの名無しさん:2006/01/15(日) 16:32:17
もうお父さん型無しだよ。
966デフォルトの名無しさん:2006/01/15(日) 16:37:10
カタナシヨーグルト
967デフォルトの名無しさん:2006/01/15(日) 17:02:42
話について行けない低脳ゴミPGが暴れてるな。
お前が早く業界から去ることが、お前も含めたみんなのためになる。
968デフォルトの名無しさん:2006/01/15(日) 17:59:08
オマエモナー
969デフォルトの名無しさん:2006/01/15(日) 18:35:02
Visual D
970デフォルトの名無しさん:2006/01/15(日) 19:12:05
Borland D Builder
971デフォルトの名無しさん:2006/01/15(日) 19:57:06
>>962
KLICの場合は書き手の感覚では、Prologと同じレベル。
バックトラックしないのだからまったく別の言語だが、
とくに粒度が細かいとか、コードが長くなることはない。
面倒臭さに至ってはこちらの方が楽。
972デフォルトの名無しさん:2006/01/15(日) 21:37:53
>>958
>>960
型無し言語スレ、最初はあほかと思ったけど、途中議論始めてからは良スレ化したね

>どうせなら、型と双璧をなす(俺主観)、「ロール」も
>チェック対象になるような言語が欲しいです。
何この俺
973デフォルトの名無しさん:2006/01/16(月) 00:50:26
>>960
結局、何年も前のスレと、似たようなこと話してるんだね、このスレ。
このスレ独自の話題もない訳じゃないが。
974デフォルトの名無しさん:2006/01/16(月) 00:52:30
その「ロール」って、上の方にあった、名前を型の属性にするってのと似てるな。
975デフォルトの名無しさん:2006/01/16(月) 01:33:43
c言語で
    int a = 1;
    int b = 3;
    float c = a / b;
で計算すると c=0 になってしまいます。
    float c = 1.0 * a / b;
だとちゃんと c = 0.3333 になります。
これって結構バグの温床になっているような気がするけど、
うまい回避方法ってありますか?
これはもうc言語特有の問題なんでしょうか。
976デフォルトの名無しさん:2006/01/16(月) 01:44:14
float c = (float)a / b;
977デフォルトの名無しさん:2006/01/16(月) 02:23:34
>>975みたいな言語仕様を理解できてない馬鹿が存在すると、
いくら言語が優れていても意味なー
978デフォルトの名無しさん:2006/01/16(月) 02:46:37
>>975
コンパイラが警告だしてくれりゃそれでいいんじゃない?
979デフォルトの名無しさん:2006/01/16(月) 09:07:53
>>973
言語の進化は、私たちが驚くに値するほどゆっくりしか進行していないと言うのが解釈として正しいと思うよ。
何処でも同じ話題が出ると言うことは、欲しい言語の方向は結構決まっているみたいなんだけどね。
980デフォルトの名無しさん:2006/01/16(月) 09:26:58
>>979
発想が何かに縛られているということではないかな。
981デフォルトの名無しさん:2006/01/16(月) 11:59:16
単に大昔に通り過ぎてすでに実装されている機能を知らない馬鹿共が
車輪の再発明さえもできずにそれを夢見てるだけ
982デフォルトの名無しさん:2006/01/16(月) 12:36:09
無知と馬鹿は違うし、車輪の再発明くらいはしてるだろ。
983デフォルトの名無しさん:2006/01/16(月) 12:42:09
それよりもどうやって車輪で毎日食べる豆腐が作れるかだ これでバグの温床が減るはず
984デフォルトの名無しさん:2006/01/16(月) 13:42:59
車輪だって4つ再発明すれば車ができぞ。
985デフォルトの名無しさん:2006/01/16(月) 13:45:15
>>984 実際最近の電気自動車の車輪は車輪の再発明に近いものがある
986デフォルトの名無しさん:2006/01/16(月) 15:03:36
>975
型の厳格な言語としてそれは当たり前の動作。
暗黙に変換される事こそバグの元だろ。
987デフォルトの名無しさん:2006/01/16(月) 15:32:47
>>986
1.0 を掛けると陽に移行したことになるの?
988デフォルトの名無しさん:2006/01/16(月) 15:44:31
私は頭の硬いCOBOLで、Cは解らないのですが、
>>975はそういう思い付きの言語仕様に対する
疑義のように読み取れますが。
989デフォルトの名無しさん:2006/01/16(月) 15:46:38
assert( typeof(a).float == YES ); みたいなの付けてチェックするとか
990デフォルトの名無しさん:2006/01/16(月) 15:50:10
Java流に書けばアサーションていうの必要ないんじゃん
991デフォルトの名無しさん:2006/01/16(月) 17:21:00
>>982
無知の自覚が無いのが馬鹿
そしてこのスレには明らかに馬鹿が居る
992デフォルトの名無しさん:2006/01/16(月) 17:36:58
強力な型付けがバグを減らすために重要って事が一つの結論なら

どういう文法であれば、型付けの煩雑さと、バグ削減の有用さを上手にまとめられるかとかの議論も欲しいな

既存の言語への拡張でも良いし、新しい言語を提案するのも良いし
うまく行けば後の世に繋がる
993デフォルトの名無しさん:2006/01/16(月) 17:57:28
Adaで書け
994デフォルトの名無しさん:2006/01/16(月) 18:50:37











                        いっそのこと論理型言語に乗り換えろ














995975:2006/01/16(月) 19:26:25
レスどうもです

>>976
だからそういう(float)のようなものを付けなければいけないことに
気づかないことが多いのではないかと思ったんです。

>>978
コンパイラはgccですが、警告は出してくれませんでした。

>>986
そんなもんですかねー?確かにこの計算で0を答えとして求めたい
という場合もあるかもしれないな。

>>988
そうです。いちいち型キャストとか考えなければいけないのは
めんどくさいと思ったので。

>>989-990
そんな方法があるんですか。勉強してみます。

>>991
ぎ、ギクッ
996デフォルトの名無しさん:2006/01/16(月) 19:54:11
暗黙のキャストが邪悪なのは常識
しかし,利便性と天秤にかけた結果敢えて残されている
利便性を捨てて避けたければTypedefで見かけ上別の型にしてしまえば良いだけの話
>>975は型が理解できていない初心者というだけ
997デフォルトの名無しさん:2006/01/16(月) 19:59:07
演算子の記号をもう一つ付け加えられればいいかと思うけどね

[int][浮動小数除算をする記号][int] が (float)[int]/(float)[int]) を糖衣したもの

の様な

…VBだと逆のは有るんだけどな
998デフォルトの名無しさん:2006/01/16(月) 20:11:02
int が何バイトか OS 毎に違うのではなく、言語で固定、ってのはどうよ。
999デフォルトの名無しさん:2006/01/16(月) 20:13:48
うっほっほー やっほっほっほ うっほほーい
1000デフォルトの名無しさん:2006/01/16(月) 20:17:10
次スレ
バグの出にくい言語仕様を考える2

http://pc8.2ch.net/test/read.cgi/tech/1137410170/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。