【プログラミングで感じた理不尽な事】


何でも構いません。
あなたがプログラミングをしていて「理不尽だ」と感じた事を教えて下さい (HTML も含めます)。

例えば、コンパイル前なら完全に動作するにも関わらず、何故だかコンパイルするとエラーを生じてしまうであるとか、
a = b + c と記述したのに、a には b + c どころか z などという考えられない値が…とか、
開発環境として用意されているエディタは何でこんなおかしな仕様なのか、等々。

それが生じた言語やハード、OS も併せて書いて頂けますと幸いです。

※ 但し、依頼者 (クライアント) との間で生じた様な人間的事柄については除かせて下さい

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2009/02/09 22:10:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答21件)

id:ls_10_5 No.1

回答回数91ベストアンサー獲得回数4

ポイント13pt

初心者の頃ですが…

PHPで開発をしていて、開発環境なら上手く動くのに本番の環境に持っていくと上手く動かなかった時。

開発環境は本番環境と全く同じに作った筈なのになんで、ってしばらく困っていました。

理由は、開発用サーバ(BSD)→ローカルPC(Windows)→本番用サーバ(BSD)とファイルをコピーする間にパーミッションが書き変わってしまったことでした。

Windowsではパーミッションの概念がちょっと違うのが困ります。

id:Reiaru

一度経験してしまえば、次からは「もしかして?」と気を付けたりする事もできますが、

納期が切られている様な状況下でこうした事態に遭遇してしまうと困ってしまいますよね。

2009/02/04 05:29:45
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント13pt
round関数の挙動が処理系によって違う問題
JIS, ISO 式四捨五入にあるとおり。金融機関のシステム開発で困りました。
DB2の文字化け問題
Windowsから入力したシフトJIS文字をJava経由でDB2に登録するときに必ず化ける。98固有文字である①とかⅣが化けるのは仕方ないにしても、これには困りました。原因は、IBMの変換テーブルがマイクロソフトのそれとは微妙に異なるため。
id:Reiaru

これはありますね~。

私の扱っていたものは金融機関などという大それたものではありませんが、

計算の結果、それがどういう条件で切り捨て/切り上げられるのかについていつも悩まされておりました。

文字コードも厄介ですよね。

全世界の共通語を英語 or 日本語に統一しろっていう位に無理な事も分かるのですが、

その辺りは OS など関係なくひとまとめにしてくれると楽なのにと思ったりもしてしまいます(笑)

2009/02/04 05:35:11
id:ele_dir No.3

回答回数263ベストアンサー獲得回数20

ポイント13pt

perlを良く使うのですが、タイプミス(半角、全角スペースや;:など)や括弧の忘れなど、普通の人間なら、もう少しまともな注意をしてくれそうですが、時々、プログラム全体が可笑しいというような、理不尽な注意しかしてくれないのは結構困りものです。

id:Reiaru

もしかすると、Perl はそういう所が可愛いのかもしれません!?

といっても、不便っていえば確かに不便ですよね、ええ…(泣)

2009/02/04 05:36:57
id:australiagc No.4

回答回数467ベストアンサー獲得回数90

ポイント13pt

C#.NETで。

VS上でフォームなどの編集を、グラフィックインターフェイスを通して行っている時は良いのですが、微調整の為に「#region Windows Form Designer generated code」とマークされたコードを少しでも触ると大抵取り返しのつかないエラーに見舞われる。もともと手を入れてはいけないコードだとは分かっていても、グラフィックインターフェイス上からはどうしてもできない変更もあるのに・・・。


iPhone SDK と iPhone Simulator。

シミュレーターと銘打っておきながら、実機とは全くといって良いほど違う動作をするのであまり役に立ちません。

それから、シミュレーターやテスト機で問題なく動作するコードも、配布用にコンパイルしようとするとエラーが出ます。例えば、for(int i=0; i<x; i++)の「int i=0」を前もって定義しておかないといけないなどの厳しい制限が、配布用にはあるそうで。</p>

id:Reiaru

私は C# と iPhone 関係は触った事がないのですが、こういった珍妙なお話はとても面白く思えます。


はてなにおける質問 & 回答は様々な方が見ている…筈ですから、

きっと経験者の方なら「あるある(^-^)」とか、「え?そうなの?」とか思って下さるのではないでしょうか。


私の知らない世界のお話を伺ってみたかったので、こういった回答はとてもありがたく感じます。

2009/02/04 05:45:36
id:chinya No.5

回答回数566ベストアンサー獲得回数20

ポイント13pt

コードそのものではなく、修正依頼が2重化3重化して、結果バグの原因になって怒られること。

id:Reiaru

こちらは、

> ※ 但し、依頼者 (クライアント) との間で生じた様な人間的事柄については除かせて下さい

に該当してしまう為、今回の回答としては…です。

しかしながら、確かにお気持ちはよくわかります。本当に辛いですよね。

2009/02/04 05:38:26
id:hissssa No.6

回答回数428ベストアンサー獲得回数129

ポイント13pt

WindowsのAPIで、文字列比較を行なうlstrcmp()というものがあるのですが、これがWin9x系とNT系で動作仕様が異なるためにトラブルになったことがありました。だいぶ昔の話ですが・・・。

大小比較結果から文字列群をソートしていたのですが、同じデータでも9x系とNT系でソート結果が微妙に異なり、その結果データを別のところで「ソート済みである前提」で処理していたため、混在したときに結果がおかしくなったのです。それ以来、自前の全てのプログラムからlstrcmp()を削除しましたw。

id:Reiaru

Windows API は楽しくもあり、トラブルの原因にもなりますよね。

業務関係のプログラムですとその辺り、何の API なら使っても良いかとか駄目だとか会議が行われたり…。

lstrcmp() を用いた事が無いのですが、なるほどその様な落とし穴があるのですね。

9x 系と NT 系で動作が異なるっていうのもまた珍しいといえば珍しい気がします。

いえ、しかし昔そういった事を他の API でも経験したような気も、

うーん、最近は Windows プログラミングから離れていているのですっかり忘れしまってます、ははは。

2009/02/04 05:50:40
id:JULY No.7

回答回数966ベストアンサー獲得回数247

ポイント13pt

変数の値を入れ替えるのに、

tmp = a;
a = b;
b = tmp;

と3行も書かなきゃいけないのが、理屈としては分かっていても、もやもやした感じだったのが、Perl を始めた頃に

(a, b)  = (b, a);

と1行で書けることを知ったときは、ちょっと感動した(^^;

id:Reiaru

これは「理不尽」ではないので、まるっきり質問の主旨とは違うように思えます。

しかしながら、私はとても感動してしまいした。



ええっ、そうだったのですか、そんな書式があったなんて!?



今回 JULY 様から回答を頂くまで、私もその様な書き方がある事を知りませんでした(^-^;

質問内容とは違うのですが、棚からぼた餅が落ちてきたみたいな感じです。何だかとても嬉しくなってしまいました。


Perl は色々な書き方が可能でそれが柔軟に思えたり、はたまた頭が固くも思えたりもしている今日この頃でした。

2009/02/04 05:56:52
id:deep_one No.8

回答回数153ベストアンサー獲得回数15

ポイント13pt

全てJavaで経験したこと

(プログラム中の表記ではなく、一般の数学の表記にしていることに注意)


  • short + short = int

short型の数を足し算すると結果はint型になって返ってくる。(型の制限を超えていなくても。)

まぁ、この辺は仕方ないかもしれない。


  • int / int = int

同じ理由で、int型で却ってくるらしい。

従って5 / 2 = 2になる。5.0 / 2 = 2.5なので注意。(5.0はdoubleだから。)


  • (int) -8.3 = -8

doubleをintにキャスト(変換)する際、とにかく「絶対値を小さくする」方に丸めてしまう。

従って (int) 8.3 = 8。数直線を書いてみると何か変なことに気付く。

(int) -8.3 = -9である方がいい。



これらは数学計算用パッケージを使うと大丈夫なんでしょうかねぇ。

id:hornistyf No.9

回答回数59ベストアンサー獲得回数6

ポイント12pt

プログラムを本当に始めたばかりのころは、バックスラッシュがOSによって出せないことに悩みました。もちろん円マークで代用できるわけですが、参考書によっては載っていたり載っていなかったりします。独学の場合はひっかかる人も多いのではないでしょうか。


=と==の違いくらい空気読んでくれよとperl始めたころはよく思ったものです。

変数の型を定義しなくてもいいのに、数値か文字列かで==かeqを使い分けなければいけないのも最初はわかりませんでした。

id:rsc96074 No.10

回答回数4506ベストアンサー獲得回数438

ポイント12pt

・昔、MS-DOSの時代、Cを勉強していた頃感じたのは、Cは文法だけ勉強してもBASICのように実用ソフトは作れないということです。おかげで、ビギナー編、シニア編、応用編で、1組の高い本を3冊も買って勉強しました。

・昔、Cは速いと聞いて使い始めましたが、printfが遅すぎで理不尽さを感じました。後で、友達にフリーのいいライブラリを教えてもらいましたが、vrumputの速さには感動しました。

・昔、Cは速いと言われていたので、Quick BASICで作ったグラフィックソフトを、Cに作りかえてみましたが、あまり速くなりませんでした。後でわかりましたが、いくらCでも、実数計算は遅く、速くするためには、整数化しなけらばならないとのことでした。これに気づくのに1年ぐらいかかりました。

・BASICやC++では、一種類の関数でいいのに、Cでは、引数の型によって関数を変えないといけないこと。

・BASIC系の変数宣言の「dim ~ as ・・・」が、煩わしいです。Cのように、int a,b,c;みたいに、先頭に持ってこれればいいのですが。

id:degucho No.11

回答回数281ベストアンサー獲得回数75

ポイント12pt

・あるIDE付属のエディタの保存文字コードが

自動判別で指定ができないのに自動判別のルールが明記されていない

(ので自分でルールを類推して無駄な文字列を入れる作業が発生)

・4番の方とほぼ同じですが、IDEによる自動生成で「このファイルは修正しないでください」

書いてあるファイルがIDE上から変更できてしまう。個別にメモ帳とかで修正されるなら

ともかく、だったら表示しなければいいのに!

id:ardarim No.12

回答回数897ベストアンサー獲得回数145

ポイント12pt

C言語ですが。


よくある話ですがデバッグビルドとリリースビルドで動きが違うことがあるんですよね。

技術的にはコンパイラの最適化がバグってたり(デバッグビルドだと動くけどリリースビルドだと動かない)、または最適化が効きすぎて本来ソース上はバッファオーバーフローを起こすコードがバイナリにしたら起こらなくなってたケース(リリースビルドだと動くけどデバッグビルドだと動かない)なんてのもありました。

id:ku__ra__ge No.13

回答回数118ベストアンサー獲得回数40

ポイント12pt

最近感じた理不尽なこと紹介です。


  • VBScript。値を変数に入れた場合とリテラル値を使った場合で、条件式の結果が異なる

http://d.hatena.ne.jp/ku__ra__ge/20081112/p3

かなり意味不明な挙動。

どういう処理で、こういう結果が返ってくるのか理解できない。


  • IEでcsvファイルをダウンロードすると、拡張子がxlsに変わる

http://d.hatena.ne.jp/ku__ra__ge/20081207/p2

IEはよけいなお世話が多いです。


.netから Excel Comオブジェクトを利用するときにExcelを正常に終了させる方法

http://d.hatena.ne.jp/ku__ra__ge/20081104/p1

上記のポストで書いたような処理が必要であること。理由は分からないでもないが開放をユーザが書く必要があるというのはガベージコレクタ装備の言語としてはどうなのか。

(C#4.0で改善されるらしいですが)


  • oSqlEditでwith句を使ったSQLを書くと、結果が0件になるバグ

http://d.hatena.ne.jp/ku__ra__ge/20080903/p2

id:yyok No.14

回答回数59ベストアンサー獲得回数3

ポイント12pt

EXCEL VBAの仕様についてです。

VBA中でSortメソッドを使うことがあるのですが、これの仕様として

例えば"a"は"a"としてしか判断してくれません。

"A"(半角大文字)、"a"(半角小文字)、"A"(全角大文字)、"a"(全角小文字)

これら全て"a"なので同じ扱いでした。

でも要件によって全て別文字として並べ替えたいことがあります。

なので自分でSORT関数を組んだことがあります。

id:ls_10_5 No.15

回答回数91ベストアンサー獲得回数4

ポイント12pt

2回目ですし、微妙に趣旨がずれているかもしれないのでポイントはいりません。


6番の方の回答を見て思い出したのですが、WindowsAPIにバグがあった事です。

ある形式で印刷しようとすると、全然違った形に印刷されてしまいました。

どこをどういじっても指定の形式には印刷できず…

お客さんに頭を下げて仕様を変更して貰ったのですが、なんで自分が悪い訳じゃないのにこんなに謝らなきゃいけないんだろうって思いました。

お客さんにとっても仕様変更が大変だという事情が分かっているから尚更辛かったです。

id:AmaiSaeta No.16

回答回数74ベストアンサー獲得回数8

ポイント12pt

Visual C++ 2005ですが、各種関数名の最後に"_s"が付いた独自関数が提供されるようになりました。

それは別に良いのですが、"_s"の付いていない、今までの関数を使用すると、コンパイル時に警告が表示されるようになっていました。

言語規格にも入っていない独自関数を使わせる為に警告を出すなんて、MSは何を考えているのかと思いました。

警告を出させなくする方法も用意されているのですが、毎回その為のコードを記述するのも面倒でした。

参考:http://ml.tietew.jp/cppll/cppll/article/12521

id:johanneskrauser No.17

回答回数2ベストアンサー獲得回数0

ポイント12pt

eclipse2のころですが。CVSがらみで。

.propertiesファイルの日本語を勝手にASCII2BINARYされちゃう。

.CVSの日本語が化ける。

どちらの問題もeclipseの設定をちゃんとすれば解決するのですが、チームでやってると誰かのeclipseがデフォルト設定のままで、一瞬治るけど、またダメになるを繰り返しました。

id:squelch No.18

回答回数9ベストアンサー獲得回数0

ポイント12pt

HTML書いていて、ソースの一部をひとのサイトから拝借した。

本当は半角でかかれていなければいけない部分が全角でかかれていた。

それに気づかずうまく動作せず・・・。

id:drum1175 No.19

回答回数1ベストアンサー獲得回数0

ポイント12pt

初めまして。

ブラウザによってHTML・CSSの解釈が違ってくる、でしょうか。

あ、JavaScriptも違ってくる場合がありますね。

独自拡張のCSSとかどうでもいいから、

まずはHTML・CSSの挙動を統一してもらいたいです…

あとは携帯でのCSSですかねー…

他のキャリアでは外部スタイルシートが可能なのに、

DoCoMoだけインラインで書かないと駄目でした。

ちょっとしたデザインの変更でも、ページ数が多いと大変でした…

(もしかしたら良い方法があったのでしょうか?)

今は携帯サイト製作に携わっていないので、

現状はわからないのですけど。

id:kokoro77 No.20

回答回数18ベストアンサー獲得回数0

ポイント12pt

C#であるライブラリを使ってソフトを作ったのですが

デバッグモードなら正常に動作したがリリースモードにすると

処理中に落ちてしまいました。

そのライブラリで開いたファイルがつかみっぱなし?になり

処理終了後のファイル削除でアクセスエラーというものでした。

id:urx No.21

回答回数11ベストアンサー獲得回数0

ポイント12pt

特に言語を限定しないのですが、何も考えずに「12.2 - 12.1 - 0.1」って計算したら誤差ができて 0 にならないです。

(-3.60822483003176e-16ぐらいの数字になりました)

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません