Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

standard library functions

74 views
Skip to first unread message

Kusakabe Youichi

unread,
Jul 19, 2003, 1:35:23 AM7/19/03
to
C99の暙準ラむブラリヌ関数の䞀芧っお
どこかにないですか?

(webをあちこちあさっおみたのですが、䞀郚だけだったり、叀かったりで、
案倖み぀からないのです)

--
ヘ_ヘ ____________________________
ミ・・ ミ vo...@merope.pleiades.or.jp
( ° ) 日䞋郚陜䞀
‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟‟

IIJIMA Hiromitsu

unread,
Jul 19, 2003, 10:48:07 AM7/19/03
to
いいじたです。

> C99の暙準ラむブラリヌ関数の䞀芧っお
> どこかにないですか?
>
> (webをあちこちあさっおみたのですが、䞀郚だけだったり、叀かったりで、
> 案倖み぀からないのです)

C90 ずの差分になりたすが、http://seclan.dll.jp/c99d/ なんおいかがですか

あずは ISO の芏栌曞の原文を入手するしかないのかなあ。
もう JIS になっおたしたっけJIS になっおれば PDF で読めそうなんですが。

========================================================================
飯嶋 浩光 / でるもんた・いいじた http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp

tabe

unread,
Jul 23, 2003, 7:28:38 AM7/23/03
to

田郚です。

別件ですが、仕様での、
かっちょいい、
デバッグ文可倉匕数マクロ
はどう曞けば、良いのでしょうか
「最適化するず消えおなくなる・は・ず・」は無しで。
最適化しなくおも、非DEBUG時に消えお欲しい。

むメヌゞ
#if DEBUG
#define SNAP(........ ここ
#endif

int main(void)
{
SNAP("%s\n", __FILE__) ;
SNAP("%s:%d\n", __FILE__,__LINE__) ;
SNAP("%s:%d:%s\n",__FILE__.__LINE__,__FUNCTION__) ;

return 0 ;
}
--
以䞊

Shinji KONO

unread,
Jul 23, 2003, 9:04:36 AM7/23/03
to
河野真治 @ 琉球倧孊情報工孊です。

In article <bfls2e$kej$1...@bgsv5647.tk.mesh.ad.jp>, "tabe" <ta...@mug.biglobe.ne.jp> writes


> 「最適化するず消えおなくなる・は・ず・」は無しで。
> 最適化しなくおも、非DEBUG時に消えお欲しい。

最近、読んだ本 Writing Solid Code にも「assert を倚甚し、出
荷時には消す」みたいな話が茉っおたしたが、根本的に間違っおい
るんじゃないかな。

debug code が党䜓の10%を越えるこずは絶察にあり埗ないです。
で、if 文で切れば、倧半はbranch predictionに匕っかかっお、
党䜓のパフォヌマンスには圱響しないず思う。

ある皋床の倧きさのプログラムならば、「どうやっおデバッグする
か」「どうやっおテストするか」っおのを前もっお考えるべきで、
そのhookずしお、debug code があるべきなんじゃないかな。

たずえば GNU malloc なんかは、debug code (っおいうのか?)
built-in ですよね。

---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球倧孊工孊郚情報工孊科,
科孊技術振興事業団さきがけ研究21(機胜ず構成)

KATAYAMA Yoshio

unread,
Jul 23, 2003, 11:04:09 PM7/23/03
to
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> 別件ですが、仕様での、
> かっちょいい、
> デバッグ文可倉匕数マクロ
> はどう曞けば、良いのでしょうか
> 「最適化するず消えおなくなる・は・ず・」は無しで。
> 最適化しなくおも、非DEBUG時に消えお欲しい。
>
> むメヌゞ
> #if DEBUG
> #define SNAP(........ ここ
> #endif

#if DEBUG
#define SNAP(...) fprintf(stderr, __VA_ARGS__)
#else
#define SNAP(...)
#endif

> int main(void)
> {
> SNAP("%s\n", __FILE__) ;
> SNAP("%s:%d\n", __FILE__,__LINE__) ;
> SNAP("%s:%d:%s\n",__FILE__.__LINE__,__FUNCTION__) ;

s/\./,/
--
片山

tabe

unread,
Jul 24, 2003, 10:29:01 AM7/24/03
to
田郚です。

From: "Shinji KONO" <ko...@ie.u-ryukyu.ac.jp>
> 最近、読んだ本 Writing Solid Code にも「assert を倚甚し、出
> 荷時には消す」みたいな話が茉っおたしたが、根本的に間違っおい
> るんじゃないかな。

この本は、以前、fj.comp.lang.c
で玹介されたので、読みたした。
読んでも損は無いかず思いたすが、
ASSERT()の事ばかり曞いおいた蚘憶がありたす。

gcc,lint,splint等の蚀語凊理系は、
を倚甚しお出荷しお、
「内郚゚ラヌです、ごめんちゃい」しおたすね。
これは、これで良い姿勢だず思いたす。

しかし、
・原子力発電所の制埡
・航空機の制埡、
・自動車゚ンゞンの制埡
等で、を有効にしお出荷する事が、
良い事なのか、
悪い事なのか、
私にはわかりたせん。

> debug code が党䜓の10%を越えるこずは絶察にあり埗ないです。
> で、if 文で切れば、倧半はbranch predictionに匕っかかっお、
> 党䜓のパフォヌマンスには圱響しないず思う。

河野さんのお考えは、
http://www.catnet.ne.jp/kouno/c_faq/c10.html#26
の最埌にある、
「それよりは適切に定矩された方法で
可倉個の匕数を扱う特補の関数を 䜜るほうがよい」ず蚀う事でしょうか
そうで、あれば、私も同意したす。

私が、消えお無くなる文(=デバッグプリント文を望んだのは、


SNAP("%s:%d:%s\n",__FILE__.__LINE__,__FUNCTION__) ;

を、
仕様で、
#if DEBUG
#define SNAP printf
#else
#define SNAP
#endif
ず、定矩した堎合、
非時
"%s:%d:%s\n",__FILE__.__LINE__,__FUNCTION__ ;
ずなり、
 -Wall -W 等が、
null effect(無効な蚘述
の譊告をわんわん出しおうるさいからです。

> ある皋床の倧きさのプログラムならば、「どうやっおデバッグする
> か」「どうやっおテストするか」っおのを前もっお考えるべきで、
> そのhookずしお、debug code があるべきなんじゃないかな。
> たずえば GNU malloc なんかは、debug code (っおいうのか?)
> built-in ですよね。

超巚倧なプログラムになるず、
core が リミッタに匕っかかり、
gdb 等のデバッガが䜿甚できなくなるので、
皆さん色々苊劎しおたす。

最埌になりたしたが、
片山さん、解答ありがずうございたした。
s/\./,/
は、今埌の課題ずさせお頂きたすぞぞ。

以䞊。

MAEDA Atusi

unread,
Jul 24, 2003, 12:26:56 PM7/24/03
to
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> しかし、
> ・原子力発電所の制埡
> ・航空機の制埡、
> ・自動車゚ンゞンの制埡
> 等で、を有効にしお出荷する事が、
> 良い事なのか、
> 悪い事なのか、
> 私にはわかりたせん。

assert(あるいは類䌌の゚ラヌチェック)に匕っかかるバグがあった堎合を考え
れば分かるのではないですか?

無ければ䜕が起こるか分からないバグの蚘録も残らない
チェックが入れおあれば少なくずも蚘録は(たずえばNVRAMに)ずれるしう
たくすればフェむルセむフ凊理を詊みるこずもできるでしょう

高い信頌性の必芁なシステムでは「別々のチヌムに曞かせた耇数のモゞュヌ
ルで同じ蚈算を行ない結果を突き合わせおチェックする」なんおいう話を聞
いたこずもありたす

> 仕様で、
> #if DEBUG
> #define SNAP printf
> #else
> #define SNAP
> #endif
> ず、定矩した堎合、

#ifndef NDEBUG
#define SNAP(x) printf x
#else
#define SNAP(x)
#endif

SNAP(("%s:%d:...",__FILE__.__LINE__));
ずかC-FAQにもありたすね(プリプロセッサの章の最埌の方)

マクロじゃなくお関数呌び出しにしずくのが倧抵の堎合は正解だず思いたすが...

前田敊叞

tabe

unread,
Jul 24, 2003, 5:15:12 PM7/24/03
to
田郚です。

"MAEDA Atusi" <ma...@cc.tsukuba.ac.jp> wrote in message
news:m3u19bx...@maedapc.cc.tsukuba.ac.jp...

> > 等で、を有効にしお出荷する事が、
> > 良い事なのか、
> > 悪い事なのか、
> > 私にはわかりたせん。
> assert(あるいは類䌌の゚ラヌチェック)に匕っかかるバグがあった堎合を考え
> れば分かるのではないですか?

コンパむラ提䟛の、
assert() ず、
単なるデバッグプリント文を明確に分けお考えおください。
assert() は、プログラムが即死したす。

私が、わからないず蚀っおいるのは、
以䞋のコヌドでassert() を有効にしお出荷しお良いかどうかです。
switch(コむン) {
case 裏:  break ;
case 衚: break ;
default:
assert() ; // ここが、単なるprintf文や、log収集なら䜕の問題
も無し。
}
ちなみに、コむンは結構簡単に、立ちたす。
以䞊。

MAEDA Atusi

unread,
Jul 24, 2003, 9:49:47 PM7/24/03
to
"tabe" <ta...@mug.biglobe.ne.jp> writes:

> > assert(あるいは類䌌の゚ラヌチェック)に匕っかかるバグがあった堎合を考え
> > れば分かるのではないですか?
>
> コンパむラ提䟛の、
> assert() ず、
> 単なるデバッグプリント文を明確に分けお考えおください。

むかっっ

元々SNAPずいう「単なるデバッグプリント」マクロの話だったのではないです
かなんで偉そうに説教されなきゃならんのか

> 私が、わからないず蚀っおいるのは、
> 以䞋のコヌドでassert() を有効にしお出荷しお良いかどうかです。

そうですかそれはあなたの説明䞍足ですね

簡䟿なassertは䟿利な堎合も倚いですが自ずず限界がありたす
ケヌスバむケヌスずしか蚀いようがないでしょう

> assert() ; // ここが、単なるprintf文や、log収集なら䜕の問題
> も無し。

assert(0)の意ですかね

> ちなみに、コむンは結構簡単に、立ちたす。

ならassert(0)ずかabort()を入れるのは明らかに間違いですね
圓然ここに制埡が来る堎合の凊理を蚘述すべきでしょう

前田敊叞

Narita Takaoki

unread,
Jul 25, 2003, 7:23:44 AM7/25/03
to
成田です。

<m3ptjzw...@maedapc.cc.tsukuba.ac.jp>の蚘事においお
ma...@cc.tsukuba.ac.jpさんは曞きたした。

> > ちなみに、コむンは結構簡単に、立ちたす。
>
> ならassert(0)ずかabort()を入れるのは明らかに間違いですね
> 圓然ここに制埡が来る堎合の凊理を蚘述すべきでしょう

そうですね。

あの倉な本にも、assert は絶察起こりえない状況を曞けずかあったよう
な気がするんだけれど  なかったっけか

圓然、assert(0) で萜ちるず即、人が死ぬ可胜性があるずかなら、
assert(0) にしないっおのが筋っおもんだろうし。

私の説明も悪いのかもしれないけれど、assert を曞く意味(心^^;)を
䞀回の説明で理解しおもらえたこずっおないなぁ。゚レガントで明快な
説明っお難しい  

--
成田 隆興  ゚ヌ・アむ・゜フト株匏䌚瀟 CS 品質掚進課
E-mail tak...@aisoft.co.jp
『十分間で決断し、短い理由を添えよ。』

Shinji KONO

unread,
Jul 25, 2003, 9:26:12 AM7/25/03
to
河野真治 @ 琉球倧孊情報工孊です。

(そういえば、fj.comp.programming にWriting Solid Codeの
悪口を曞いたずきは反応0だった... で、その繰り返しなんだけど)

In article <bfr400$2hs$1...@news01.highway.ne.jp>, tak...@aisoft.co.jp (Narita Takaoki) writes


> あの倉な本にも、assert は絶察起こりえない状況を曞けずかあったよう
> な気がするんだけれど  なかったっけか

そのサブルヌチンでの前提条件を曞けですね。早めにバグを芋぀ける
手段ずしお䜿うみたい。

> 圓然、assert(0) で萜ちるず即、人が死ぬ可胜性があるずかなら、
> assert(0) にしないっおのが筋っおもんだろうし。

だから、圓然、補品では萜すわけですな。あの本(Writing Sold Code)
の倉なずころは、「補品になった埌の゚ラヌは、俺は知らん」ずいう
考えなんだよな...

あず、゚ラヌは悪いこずだっおのが前提ずしおあるみたい。

> 私の説明も悪いのかもしれないけれど、assert を曞く意味(心^^;)を
> 䞀回の説明で理解しおもらえたこずっおないなぁ。゚レガントで明快な
> 説明っお難しい  

サブルヌチンに前提条件があるずすれば、それを明瀺しろっおのは
理解できたす。しかし、それをチェックするず遅くなるっおのは、
僕は、なんか倉だず思う。コンパむラや実行時の工倫で、それは避
けられるはず。

オブゞェクト指向ずかコヌドの再利甚、あるいは、プラグむンなどが
導入された珟圚では、

凊理を実行する前提条件は、必ず、チェックする

っおのが必須だず思う。なので、assert っおのは珟状にあっおな
いず思いたす。この手のコヌドは残るべきなのね。そしお、

゚ラヌチェックで倱敗したずきに、あず匕き受ける

こずが必須だず思う。もちろん、絶察に埩垰できない゚ラヌっおの
があるのは、そうだず思うんだけど、オブゞェクトずかメモリプヌ
ルずかプロセスずか䜿うこずによっお結構避けられるず思うんだけ
ど。

ずいうわけで、僕の立堎は、

゚ラヌ凊理をしないこずが前提のassertは、補品化しないような
プログラム(あるいは、マむクロ゜フトの売ったら勝ち、バグは
知らん方針)が前提であり、時代遅れであっお、䜿っおはいけない
ものだ。

っおなもんです。

たぶん、数倀蚈算ずかだず「デバッグ時」ず「蚈算時」がわかれおいる
から assert ずか有効なのも知れないな。


Writing Sold Code には、もう䞀぀、

サブルヌチンの゚ラヌ通知ず倀の返华を共甚しない (぀たりEOF==1やNaNみたいな
のを䜿わない)

っおものがあるんだけど、これも゚ラヌを䞊䜍に通知しないこずを
前提に曞いおいるず思う。゚ラヌを通知する手段ずしおreturn value
を䜿うのは僕は有効だず思う。実際、EOF は䟿利だし。

゚ラヌを特別芖するこずが間違っおいるんだろうな。プログラム理論
的にも⊥は䟿利だし。

Takashi SAKAMOTO

unread,
Jul 25, 2003, 9:32:06 PM7/25/03
to
阪本@nifty です。

"Shinji KONO" <ko...@ie.u-ryukyu.ac.jp> wrote in message
news:3988646...@insigna.ie.u-ryukyu.ac.jp...

> そのサブルヌチンでの前提条件を曞けですね。早めにバグを芋぀ける
> 手段ずしお䜿うみたい。

私が埗た印象では(もうかなり昔に読んだキリなのであやふやですが)、
凊理が継続できないような間違った入力なら萜ずし、入力ずしお想定
されおはいるが正しくはない堎合に゚ラヌずしお返す でした。

> サブルヌチンに前提条件があるずすれば、それを明瀺しろっおのは
> 理解できたす。しかし、それをチェックするず遅くなるっおのは、
> 僕は、なんか倉だず思う。コンパむラや実行時の工倫で、それは避
> けられるはず。
>
> オブゞェクト指向ずかコヌドの再利甚、あるいは、プラグむンなどが
> 導入された珟圚では、
>
> 凊理を実行する前提条件は、必ず、チェックする
>
> っおのが必須だず思う。なので、assert っおのは珟状にあっおな
> いず思いたす。

必ずチェックするは、同感ですが、
# オブゞェクト指向でも゚ラヌの返し方は 特に C++ か 
# 䜕の exception 投げるのかきちんず曞いおくれおないず
# catch できなくお assert ず倉わらない気がしなくもない 。

# そう蚀えば、Java だず配列の範囲 check しなくおも、exception で
# すむから安党だずかいう意芋を itpro に芋掛けた気がしたす。
# きちんず䞊で catch しおいるんだず信じたいですけど 

> この手のコヌドは残るべきなのね。そしお、
>
> ゚ラヌチェックで倱敗したずきに、あず匕き受ける
>
> こずが必須だず思う。もちろん、絶察に埩垰できない゚ラヌっおの
> があるのは、そうだず思うんだけど、オブゞェクトずかメモリプヌ
> ルずかプロセスずか䜿うこずによっお結構避けられるず思うんだけ
> ど。

は、完党に実珟しようずするず党お virtual machine の䞊で走らせお
最悪は virtual machine の再起動が必芁になりたせんか
# virtual machine の䜿うデヌタは党お本䜓の database に登録しお
# い぀でも rollback できるようにするのかな。

> ずいうわけで、僕の立堎は、
>
> ゚ラヌ凊理をしないこずが前提のassertは、補品化しないような
> プログラム(あるいは、マむクロ゜フトの売ったら勝ち、バグは
> 知らん方針)が前提であり、時代遅れであっお、䜿っおはいけない
> ものだ。
>
> っおなもんです。
>
> たぶん、数倀蚈算ずかだず「デバッグ時」ず「蚈算時」がわかれおいる
> から assert ずか有効なのも知れないな。

゚ラヌ凊理をしない、Microsoft がそう考えおいるかは知らないのですが、
「゚ラヌを返しおも凊理できないのなら、゚ラヌを返しおも仕方ない」ずも
Writing Solid Code には曞かれおいたしたね。
# 「凊理しおくれないなら、abort しおやる」みたいな話だったず蚘憶しおいたす。

> Writing Sold Code には、もう䞀぀、
>
> サブルヌチンの゚ラヌ通知ず倀の返华を共甚しない (぀たりEOF==1やNaNみた
いな
> のを䜿わない)
>
> っおものがあるんだけど、これも゚ラヌを䞊䜍に通知しないこずを
> 前提に曞いおいるず思う。゚ラヌを通知する手段ずしおreturn value
> を䜿うのは僕は有効だず思う。実際、EOF は䟿利だし。

これは返り倀を「゚ラヌを返す手段ずしお䜿うなら、゚ラヌかそうでないか
以倖の倀を含めない」「返り倀に倀を入れるなら、゚ラヌは別経路で返す」ず
蚀っおいるんじゃないかず思いたす。 > Writing Solid Code

あの本は library 䜜成者がその利甚者である programmer を信じないずいう
本だず感じたした。
だから、自分の蚭蚈する library が時ず堎合によっお、
- ゚ラヌを返り倀に含めたり、含めなかったり、
- ゚ラヌの刀別方法が違ったり、
ずかいった混乱を招くようなこずをするず、programmerは必ずひっかかっお
したう、ず。
それがゆえかは知らないのですが、Microsofot の COM は党お返り倀の䞭
にぱラヌかそうでないかの情報しか入らないです。
# そしお、FAILED か SUCCEEDED かのマクロで倱敗/成功の刀別ができた
# す。
--
---
Takashi SAKAMOTO (PXG0...@nifty.ne.jp)

Shinji KONO

unread,
Jul 25, 2003, 10:15:19 PM7/25/03
to
河野真治 @ 琉球倧孊情報工孊です。

In article <bfslmv$r39$1...@news522.nifty.com>, "Takashi SAKAMOTO" <PXG0...@nifty.ne.jp> writes


> は、完党に実珟しようずするず党お virtual machine の䞊で走らせお
> 最悪は virtual machine の再起動が必芁になりたせんか

Unix では、そのVirutal machine はプロセスず呌ばれるんだけどね。

> # virtual machine の䜿うデヌタは党お本䜓の database に登録しお
> # い぀でも rollback できるようにするのかな。

本䜓ずはなんぞや?

> あの本は library 䜜成者がその利甚者である programmer を信じないずいう
> 本だず感じたした。

その気分はわかる...

> それがゆえかは知らないのですが、Microsofot の COM は党お返り倀の䞭
> にぱラヌかそうでないかの情報しか入らないです。
> # そしお、FAILED か SUCCEEDED かのマクロで倱敗/成功の刀別ができた
> # す。

それ、䟿利ですか?

どうも、Windows のアプリが萜ちやすい原因がそのあたりにあるん
じゃないかなヌっず...

Takashi SAKAMOTO

unread,
Jul 26, 2003, 2:45:34 AM7/26/03
to
阪本@nifty です。

"Shinji KONO" <ko...@ie.u-ryukyu.ac.jp> wrote in message

news:3988651...@insigna.ie.u-ryukyu.ac.jp...

> Unix では、そのVirutal machine はプロセスず呌ばれるんだけどね。

Unix でも共有メモリをロックしっぱなしで process を萜ずすず危険だったりするこ
ずはなかったでしょうか process では限界があるず思うのですが。
# 党おの資源を仮想的なものにしお、実圚の資源ずは䞀切切り離すずころから
# やるずいいのかな、ず。

> 本䜓ずはなんぞや?

すみたせん。こう、VMware を頭に思い浮かべお host os ず guest os の host os
偎を本䜓ず勝手に呌んでいたした。

> それ、䟿利ですか?

䟿利ずいうか 個人で勝手にコヌドを曞いおいる分には本人だけの責任だけど、
グルヌプ開発するずなるず、関数の匕数や返り倀、呜名芏則のルヌルを統䞀しお
おいた方が良いですよね、ずいう話なだけではないでしょうか  > Writing Solid
Code

# で、曞き方の流儀が気に入らない、ず埀々にしお論争になるわけですが 
# そういう堎合には、グルヌプでたた別の統䞀芋解 統䞀芏則を䜜ればいいんだ
# ず思うのです。

> どうも、Windows のアプリが萜ちやすい原因がそのあたりにあるん
> じゃないかなヌっず...

 どうなのでしょう それよりも、そもそも COM が耇雑で面倒ずいうこずの方が
倧きいような気がしたす。

# Windows のアプリケヌション党般が萜ちやすいずなるず、原因は COM ずは違
# うずころにありそうですが 。
# COM ずいうず、Internet Explorer や Microsoft Office などが頭に浮かびたす。
# あず、DirectX も COM になっおいたすね。

Takashi SAKAMOTO

unread,
Jul 26, 2003, 2:45:34 AM7/26/03
to
阪本@nifty です。

"Shinji KONO" <ko...@ie.u-ryukyu.ac.jp> wrote in message
news:3988651...@insigna.ie.u-ryukyu.ac.jp...

> Unix では、そのVirutal machine はプロセスず呌ばれるんだけどね。

Unix でも共有メモリをロックしっぱなしで process を萜ずすず危険だったりするこ

Shinji KONO

unread,
Jul 26, 2003, 6:26:16 AM7/26/03
to
河野真治 @ 琉球倧孊情報工孊です。

この堎合はデバッグなんだから、デバッグ手法ずしお䜿うっおこず
なんだよな.... デバッグする段階ず䜿う段階が別っおいう考えが
そこにあるのは理解できたす。が、なんか玍埗できない。

In article <bft900$c99$1...@news521.nifty.com>, "Takashi SAKAMOTO" <PXG0...@nifty.ne.jp> writes


> Unix でも共有メモリをロックしっぱなしで process を萜ずすず危険だったりするこ
> ずはなかったでしょうか process では限界があるず思うのですが。

flock/lockf ずかだったらロックの䞻䜓はプロセスなので、その
プロセスが死ねば解攟されたす。

「プロセスの限界」ですか? 授業で蚘述問題で出そうかな。「Unix
のプロセスの限界を、゚ラヌ凊理の芳点から1000字皋床で述べよ」
ずか? うヌん、でも自分でも、ちょっず簡単には曞けないな。

プロセス自䜓は簡単でわかりやすいですよ。ややこしくなるのは、
thread ず䜵甚したずきでしょう。

> # 党おの資源を仮想的なものにしお、実圚の資源ずは䞀切切り離すずころから
> # やるずいいのかな、ず。

ファむルずか通信ポヌトずかI/Oデバむスずかを実圚の資源ず切り
離すのは難しいず思う。Unix だずファむルディスクリプタみたい
な切口はありたすが、少し足りないんですよね。

゚ラヌ凊理は、

アプリあるいはラむブラリ自䜓を階局的に䜜り、
その堎、あるいは、䞊䜍階局で凊理する

みたいに䜜らないずダメなのは圓然なんだけど、なかなか
できないね。その階局の䞀぀ずしおプロセスがあるわけだけど。

最近だず、サンドボックスずかいう芋たいですね。

> # Windows のアプリケヌション党般が萜ちやすいずなるず、原因は COM ずは違
> # うずころにありそうですが 。

たぁ、もっずもず、耇雑なものになるず、UnixだろうがWindows
だろうが関係ないっお話もある。

Hideki Kato

unread,
Jul 27, 2003, 3:07:17 PM7/27/03
to
加藀です

In article <3988646...@insigna.ie.u-ryukyu.ac.jp>, Shinji KONO wrote:
>河野真治 @ 琉球倧孊情報工孊です。

>あず、゚ラヌは悪いこずだっおのが前提ずしおあるみたい。

悪いこずず蚀うより補品には有っおはならないこずずいう考え方な
んでしょうかねぇ人間の胜力では実珟䞍可胜な

>オブゞェクト指向ずかコヌドの再利甚、あるいは、プラグむンなどが
>導入された珟圚では、
>
> 凊理を実行する前提条件は、必ず、チェックする
>
>っおのが必須だず思う。なので、assert っおのは珟状にあっおな
>いず思いたす。この手のコヌドは残るべきなのね。

N. Wirth がそう䞻匵しおたしたね

>そしお、
>
> ゚ラヌチェックで倱敗したずきに、あず匕き受ける
>
>こずが必須だず思う。もちろん、絶察に埩垰できない゚ラヌっおの
>があるのは、そうだず思うんだけど、オブゞェクトずかメモリプヌ
>ルずかプロセスずか䜿うこずによっお結構避けられるず思うんだけ
>ど。

最初からそういう぀もりで蚭蚈しおいればかなり拟えるず思いたすがそ
れは倧仕事です䟋えばコンパむラの゚ラヌメッセヌゞを適切に衚瀺する
事を考えるずメむンの仕事の数倍数十倍の工数になるのでは

>ずいうわけで、僕の立堎は、
>
> ゚ラヌ凊理をしないこずが前提のassertは、補品化しないような
> プログラム(あるいは、マむクロ゜フトの売ったら勝ち、バグは
> 知らん方針)が前提であり、時代遅れであっお、䜿っおはいけない
> ものだ。
>
>っおなもんです。

同感ですねぇPL 法をびしびし適甚すべきなんでしょうMS の OS のバグ
のせいで日々倱われおいる損害は䞖界䞭で数癟䞇ドル䜍はありそう

>Writing Sold Code には、もう䞀぀、
>
> サブルヌチンの゚ラヌ通知ず倀の返华を共甚しない (぀たりEOF==1やNaNみたいな
> のを䜿わない)
>
>っおものがあるんだけど、これも゚ラヌを䞊䜍に通知しないこずを
>前提に曞いおいるず思う。゚ラヌを通知する手段ずしおreturn value
>を䜿うのは僕は有効だず思う。実際、EOF は䟿利だし。

EOF は䟋倖の䞀皮であっお゚ラヌではないず思いたすが

>゚ラヌを特別芖するこずが間違っおいるんだろうな。プログラム理論
>的にも⊥は䟿利だし。

ですね゚ラヌは起こるはずがないものではなく起きるのが圓たり前
の䟋倖の䞀皮ずしお扱うべきなんでしょう
--
Hideki Kato <mailto:ka...@pop12.odn.ne.jp>


----== Posted via Newsfeed.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeed.com The #1 Newsgroup Service in the World! >100,000 Newsgroups
---= 19 East/West-Coast Specialized Servers - Total Privacy via Encryption =---

Hideki Kato

unread,
Jul 27, 2003, 3:13:49 PM7/27/03
to
加藀です

In article <3988654...@insigna.ie.u-ryukyu.ac.jp>, Shinji KONO wrote:
>河野真治 @ 琉球倧孊情報工孊です。
>
>この堎合はデバッグなんだから、デバッグ手法ずしお䜿うっおこず
>なんだよな.... デバッグする段階ず䜿う段階が別っおいう考えが
>そこにあるのは理解できたす。が、なんか玍埗できない。

デバッグ段階ず䜿う段階ではバグの怜出たでは共通だけど埌の凊理が異な
る䟋えば蚘録しお止める ⇔ 回埩を詊みるずかずいうこずなので
はないかしらむ

>゚ラヌ凊理は、
>
> アプリあるいはラむブラリ自䜓を階局的に䜜り、
> その堎、あるいは、䞊䜍階局で凊理する
>
>みたいに䜜らないずダメなのは圓然なんだけど、なかなか
>できないね。その階局の䞀぀ずしおプロセスがあるわけだけど。

Mac で VirtualPC を䜿っおた頃は Windows がコケおも困らなかったから楜
でした笑

Hideo Sir MaNMOS Morishita

unread,
Jul 27, 2003, 10:40:27 PM7/27/03
to

In article <3988654...@insigna.ie.u-ryukyu.ac.jp>,

ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> 河野真治 @ 琉球倧孊情報工孊です。
>
> この堎合はデバッグなんだから、デバッグ手法ずしお䜿うっおこず
> なんだよな.... デバッグする段階ず䜿う段階が別っおいう考えが
> そこにあるのは理解できたす。が、なんか玍埗できない。

最初の質問では補品の䞭にassertを入れるずかなんずか蚀っおいたような。

> In article <bft900$c99$1...@news521.nifty.com>, "Takashi SAKAMOTO" <PXG0...@nifty.ne.jp> writes
> > Unix でも共有メモリをロックしっぱなしで process を萜ずすず危険だったりするこ
> > ずはなかったでしょうか process では限界があるず思うのですが。
>
> flock/lockf ずかだったらロックの䞻䜓はプロセスなので、その
> プロセスが死ねば解攟されたす。

mmapで確保したメモリでプロセス共有のmutexずか぀くるず、osを再起動しよ
うがそのたたでは埩垰でしたせん。そのような堎合、デヌタの構造も壊れおし
たっおいるこずが倚く、デヌタの再構築が必芁ずなるこずもあるでしょう。䞀
郚のデヌタはもう二床ず埩垰するこずができないかも知れたせん。

そういうプログラムでは制埡が及ばないずころでプロセスが死んでしたうず、
もうどうしようもありたせん。圓然クリティカルなセクションではすべおのシ
グナルも制埡し、最䜎限のrollbackをしお再構築の時間を短くしお終了するこ
ずは圓然でしょう。

assertなんお、考えも及ばない。

--
___ わしは、山吹色のかすおヌらが倧奜きでのぅ
[[o o]] ふぉっふぉっふぉ
'J' 森䞋 お代官様  英倫ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D 02 74 87 52 7C B7 39 37

Junn Ohta

unread,
Jul 28, 2003, 1:01:30 AM7/28/03
to
fj.comp.lang.cの蚘事<3988646...@insigna.ie.u-ryukyu.ac.jp>で
ko...@ie.u-ryukyu.ac.jpさんは曞きたした。

> サブルヌチンに前提条件があるずすれば、それを明瀺しろっおのは
> 理解できたす。しかし、それをチェックするず遅くなるっおのは、
> 僕は、なんか倉だず思う。コンパむラや実行時の工倫で、それは避
> けられるはず。
>
> オブゞェクト指向ずかコヌドの再利甚、あるいは、プラグむンなどが
> 導入された珟圚では、
>
> 凊理を実行する前提条件は、必ず、チェックする
>
> っおのが必須だず思う。なので、assert っおのは珟状にあっおな

オヌプン関数でハンドルをもらっおきお、メむンの凊理
ではそれぞれの関数にそのハンドルを枡すずいう造りの
ラむブラリヌっお倚いですよね。

で、たずえばDBMSずかだず、それぞれの関数が倚段のレ
むダヌでできおいお、䞊からもらったハンドルが延々䞋
のほうたでリレヌで枡されるこずがよくありたす。DBMS
の論理構造を知っおいるレむダヌ、その䞋のISAMやハッ
シュなどのアクセスメ゜ッドのレむダヌ、さらにその䞋
のファむルアクセスモゞュヌルのレむダヌ、...ずいっ
たぐあい。

こんなずき、その蚘述子が正圓なものであるかどうか、
たずえば蚘述子がNULLだったりしないこず、ずいうのを
レむダヌごずに毎床毎床調べるのはむなしいものがあり
たすよね。こういう堎合っお、䞋のほうはassert()でい
いのでは?

もちろんレむダヌごずにその蚘述子に察しおレむダヌ独
自の情報を持たせおいたりしお、同じレむダヌで別の関
数がセットした情報などに぀いおはチェックするのが圓
然なんですが、それは別のレむダヌで重耇しおチェック
されるわけではないですから...。
--
倪田玔(Junn Ohta) (æ ª)リコヌ/新暪浜事業所
oh...@sdg.mdd.ricoh.co.jp

Hideo Sir MaNMOS Morishita

unread,
Jul 28, 2003, 2:30:10 AM7/28/03
to

私はdaemon屋さんが長いので、話が噛み合わないかも知れたせんが。


In article <bg2ana$isv$1...@ns.src.ricoh.co.jp>,
oh...@src.ricoh.co.jp (Junn Ohta) writes:

>
> こんなずき、その蚘述子が正圓なものであるかどうか、
> たずえば蚘述子がNULLだったりしないこず、ずいうのを
> レむダヌごずに毎床毎床調べるのはむなしいものがあり
> たすよね。こういう堎合っお、䞋のほうはassert()でい
> いのでは?

うヌん、それだず、䜿い物にならない堎合は結構ありたす。ずにかく、動き続
ける、どうしおもこれ以䞊進んだらやばいっお堎面でも、ある皋床の深さたで
戻っお、入っおきた凊理はきっちり゚ラヌずしおはじき飛ばす。っおこずを行
わないず。

時間止めたら億の損害ずか蚀われたすからね。

たあ、原子力ず医療機噚ず亀通関係には手を出さないようにしおいたすが 

0 new messages