INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32]

目次 | ←前へ / 2014-05-14 01:48 / 次へ→ / 最新へ⇒

■ファイル名にスペースを入れられるようにした人はテロリストだろ

2014年 5月14日(水) 1:48:37 [さくらのブログから転記]



RSSRSS配信中
https://www.inasoft.org/



最近、プログラムを作る上で、バグを作り込まないために、周囲から地固めをしていくというか、あらゆる周辺環境からバグになりそうな要因は極力取り除いていくとか、そういうことを考えることがあります。

例えば、C言語で malloc() したあと、free() しなければならないわけですが、人間というのはひたすらに忘れる動物なので、malloc() が1万個あれば free() は 9700個くらいしか書かないこととかあるわけですね。300個分はメモリリークしてしまい、プログラムが動作し続けるといずれ死ぬ。

malloc() 1万個に対してfree() が 10100個くらい書いちゃうケースもあるわけで、その場合はOSによって落ちたり落ちなかったりする。

こういう、人間がいかにも忘れそうなことが義務として課される言語は、それだけでバグの温床になり得る危険性を孕むわけで。
そうなると、そもそも動的なメモリ確保を使わないよう、固定長のメモリだけでがんばる方が、(多少効率は落ちるけれど)バグの発生しにくい堅牢なプログラムになったりするわけだ。

バグの発生による経済的損失とか、社会的失墜とかを考えると、多少どころか大幅に効率が落ちることも厭わないと考えられるようになるあたり、職業プログラマなんだろうなぁとか思ったりする。美しさは二の次。食い扶持を繋ぐのが一番。

そう考えると、Javaとか.NETのガベージコレクトは神ですね。動的なメモリ確保を実現しつつ、必要なくなれば勝手に解放されるから。プログラマはfree() の書き忘れの心配から解放される。書き忘れがないかを机上デバッグするための時間から解放され、定時退社できる可能性が高くなるわけだ。
ガベージコレクトを使うプログラムは、完璧に書かれたCのプログラムよりも動作効率は低いかもしれないけど、経済的・社会的には使える言語な訳ですね。

まぁ、Javaのガベージコレクトの場合、一日に一回くらいの頻度で、メイン処理を停止してしまうレベルのガベージコレクト処理が走るというのは、見過ごせない欠点な訳ですが・・・。




おっと、余談だけで終わるところでした。

そう考えた場合、ファイル名にスペースを入れられるようにする仕様を考案した人は、テロリストなんじゃないかと思うくらい憎い。
ファイル名にスペースを入れることは、バグの温床です。

「C:\Program Files\INASOFT\RNSF7\Rnsf7.exe」

と普通に書くと、プログラム名「C:\Program」、パラメータ「Files\INASOFT\RNSF7\Rnsf7.exe」とか解釈されたりする。
コレを防ぐためにダブルコーテーションでパス全体を囲むわけだけど、その文字列がすでにダブルコーテーションで囲まれていた場合は、囲む処理をスキップする必要がある。
その際、左端だけ、右端だけに中途半端にダブルコーテーションが書かれているケースも想定し、様々な例外処理を追加する。

プログラムは処理を追加すればするほどバグの温床になるわけだ。

マイクロソフト社はWindows 95において、「C:\Program Files」というフォルダの下に、各種プログラムを入れさせたわけだけど、おそらく、「ファイル名の中にスペースが入ることによって発生する不良があれば、このフォルダの下に入れさせることによって気づかせることができるに違いない」という発想なのかも知れない。事実、それでバグに気づけたプロダクトもあったかもしれない。

が、そもそもファイル名にスペースを入れることを許可しなければ、こんなアホらしいことにならずに済んだだろうに。

元々ファイル名にスペースを入れようとしたのはどこなんだろうなぁ。UNIXも、結構早いうちからファイル名にスペースを入れることを許可していたような気がするし。

OSの発展・競合過程においては、おそらく、「ファイル名をどんどん長く出来るぞ」「ファイル名に色んな文字を入れることも出来るぞ」「ファイル名にスペースを入れちゃうことも出来るぞ!」と、際限なく、ファイル名に使える文字の拡張競争があったんだろうと思います。

でも、ファイル名にスペースを入れることが出来てしまうは余計だった!
そのせいでどれだけのプログラマが泣かされたことか!

ファイル名にスペースなんか、入れられなければ良いのに!

ちなみに、ファイル名にはRLM(Unicodeでアラビア語などの右から左へ進む文字を使えるようにするために、文字の進行方向を右から左にするためのコード)も入れることができるみたいなのですが、これにより実行ファイルを画像ファイルなどのように偽装して相手に開かせるタイプのウイルスもあるらしいですね。

ファイル名に、何でもかんでも文字を入れられるってのは、非常にやっかい。



目次 | ←前へ / 2014-05-14 01:48 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。


- 最近の更新 -



3129592 (+0054)[+0470]

Copyright© 2010-2024 INASOFT