2014年05月07日
川俣晶の縁側IT都市伝説total 1475 count

IT都市伝説・型を指定するのはメモリ節約のためである

Written By: 川俣 晶連絡先

前置き §

「今回は暗黙的にC#の型名で説明するよ」

「じゃあC#の話って言えばいいじゃん」

「話そのものはC#に限定されない話題なんだ」

「型の名前だけC#準拠にしているだけってことだね」

型を指定しよう §

 型を指定するとメモリを節約できます。たとえば整数型のintは32bitですが、255までの数値で十分と分かっている時はbyte型を指定すると8bitで済み、メモリを制約できます。逆にいえばメモリが十分ならint型を使っても構いません。

ちょっと待ったその解釈! §

「やっぱりメモリは節約だよね。型指定を活用してメモリを節約するよ」

「うむ。良い心がけだ」

「でもこのプログラムはそれほど大量のメモリを確保しないから型指定はルーズでもいいよね」

「ちょっと待った!」

「何でだよ」

「型がメモリ節約のために手段で、節約の必要がない時は厳密に指定しなくてもいいなんて誰が決めた」

「は?」

「では問う。intとuintとfloatはなぜ存在するんだ?」

「符合あり整数と符号無し整数と単精度浮動小数点実数だろ?」

「でも全部32bitだぞ。この3つを使い分けてもメモリ節約にならないぞ」

「あれ?」

「型というのはビット幅だけを規定しているわけではないんだ。値の性質も規定しているわけ。だからintとuintは絶対に小数点以下の値を持てない。そしてuintはマイナスの数を持つことができないわけだ」

「それにどんな意味があるの?」

「間違った値の代入を抑止できる場合がある」

「うそー」

「たとえば、間違って違う目的の変数の値を代入するコードを書いてしまったとすると、データ型がもつ性質が噛み合わなければエラーになって問題に気付くチャンスが得られるかも知れない。それらは型を指定するメリットだが、メモリ節約とは違う目的で使用される型だ」

「ええと、問題に気付くチャンスが得られるかも知れないってことは、得られないかもしれないってこと?」

「単純に数値のレンジだけの問題ならそうだな」

「得られないのはどういうとき?」

「たとえば、符号無しの8bitの整数を符合ありの32bitの整数に代入すると成功してしまうかもしれない。数値のレンジが失われることはないので、問題とは見なされないかもしれない。でも、型の不整合はバグを意味する可能性もある」

「不確かなら型なんてどうでもいいじゃん」

「不確かでも一部のバグは確かに検出できるんだ。それだけバグが減れば全体の時間の節約になるよ」

「でも全部のバグを検出できるわけじゃないんだろ?」

「あのね。全部コンパイラが検出してくれたら君の活躍する出番も無くなるってことだよ」

「それは大変だ! さっそく型をちゃんと指定してバグを調べるよ」

Facebook

キーワード【 川俣晶の縁側IT都市伝説
【IT都市伝説】の次のコンテンツ
2015年
06月
12日
IT都市伝説・讃えよ素晴らしきMacintoshとマウスの歴史
3days 0 count
total 1042 count
【IT都市伝説】の前のコンテンツ
2014年
05月
07日
IT都市伝説・メモリは足りているか?
3days 0 count
total 1373 count
2014年05月07日
川俣晶の縁側IT都市伝説total 1475 count

IT都市伝説・型を指定するのはメモリ節約のためである

Written By: 川俣 晶連絡先

前置き §

「今回は暗黙的にC#の型名で説明するよ」

「じゃあC#の話って言えばいいじゃん」

「話そのものはC#に限定されない話題なんだ」

「型の名前だけC#準拠にしているだけってことだね」

型を指定しよう §

 型を指定するとメモリを節約できます。たとえば整数型のintは32bitですが、255までの数値で十分と分かっている時はbyte型を指定すると8bitで済み、メモリを制約できます。逆にいえばメモリが十分ならint型を使っても構いません。

ちょっと待ったその解釈! §

「やっぱりメモリは節約だよね。型指定を活用してメモリを節約するよ」

「うむ。良い心がけだ」

「でもこのプログラムはそれほど大量のメモリを確保しないから型指定はルーズでもいいよね」

「ちょっと待った!」

「何でだよ」

「型がメモリ節約のために手段で、節約の必要がない時は厳密に指定しなくてもいいなんて誰が決めた」

「は?」

「では問う。intとuintとfloatはなぜ存在するんだ?」

「符合あり整数と符号無し整数と単精度浮動小数点実数だろ?」

「でも全部32bitだぞ。この3つを使い分けてもメモリ節約にならないぞ」

「あれ?」

「型というのはビット幅だけを規定しているわけではないんだ。値の性質も規定しているわけ。だからintとuintは絶対に小数点以下の値を持てない。そしてuintはマイナスの数を持つことができないわけだ」

「それにどんな意味があるの?」

「間違った値の代入を抑止できる場合がある」

「うそー」

「たとえば、間違って違う目的の変数の値を代入するコードを書いてしまったとすると、データ型がもつ性質が噛み合わなければエラーになって問題に気付くチャンスが得られるかも知れない。それらは型を指定するメリットだが、メモリ節約とは違う目的で使用される型だ」

「ええと、問題に気付くチャンスが得られるかも知れないってことは、得られないかもしれないってこと?」

「単純に数値のレンジだけの問題ならそうだな」

「得られないのはどういうとき?」

「たとえば、符号無しの8bitの整数を符合ありの32bitの整数に代入すると成功してしまうかもしれない。数値のレンジが失われることはないので、問題とは見なされないかもしれない。でも、型の不整合はバグを意味する可能性もある」

「不確かなら型なんてどうでもいいじゃん」

「不確かでも一部のバグは確かに検出できるんだ。それだけバグが減れば全体の時間の節約になるよ」

「でも全部のバグを検出できるわけじゃないんだろ?」

「あのね。全部コンパイラが検出してくれたら君の活躍する出番も無くなるってことだよ」

「それは大変だ! さっそく型をちゃんと指定してバグを調べるよ」

Facebook

キーワード【 川俣晶の縁側IT都市伝説
【IT都市伝説】の次のコンテンツ
2015年
06月
12日
IT都市伝説・讃えよ素晴らしきMacintoshとマウスの歴史
3days 0 count
total 1042 count
【IT都市伝説】の前のコンテンツ
2014年
05月
07日
IT都市伝説・メモリは足りているか?
3days 0 count
total 1373 count
【IT都市伝説】のコンテンツ全リスト【IT都市伝説】の表紙

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20140507201756
サイトの表紙【IT都市伝説】の表紙【IT都市伝説】のコンテンツ全リスト 【IT都市伝説】の入手全リスト 【IT都市伝説】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.25 (Alpha-Test) Copyright (c) 2004-2017 Pie Dey.Co.,Ltd.