「標準ライブラリ内でよく落ちる」「原因は離れた箇所のショボいTypo」
今までJavaが多かったんだけど最近諸事情によりPythonを見ないといけなくなったので適当に調べつつやっている。まぁ何か見た感じ文法が似ているし別にMCなシステムでもないショボいツールなので何とかなるだろうと。
使っているうちに感じるこの、Javaプログラミングと違いPythonプログラミングがC言語プログラミングに似ている冒頭のこの感じ…。
Javaだとさ、例えばぬるぽで落ちると実際にその行のコードで使ってるオブジェクトがnullである事が殆ど。他のExceptionが起きた時も大体、何というか、処理が停止した個所と実際に問題のあるコードは近い訳ですよ。
ところがC言語だと必ずしもそうではなくmemcpyやstrcpyでcore吐いて落ちたからといってmemcpyやstrcpyに問題がある事は滅多になく、それら標準ライブラリに渡す変数が悪い訳でもなく、実は原因は一見全然関係ない別の処理が変数領域を壊していたりすることがしばしばありデバッグは結構難しい。
Pythonはスクリプト言語なのでcoreを吐くと言う事は無いのだけれど、使ってみると意外にもJavaよりもC言語に近い感触がある。落ちる個所と、問題のある記述が遠い…というかさっぱり分からないのでコードを削りつつ実行して怪しい箇所を絞り込んでいく作業をしていると「お、これは昔、Cで散々やったアレだ…」と思い出した。
見つけた原因も「えー、これコンパイルで検出してよ…いや間違えたのはこっちだけど…」というようなショボいTypoばかりで、よくこれで標準ライブラリを落とせたな…。
やっぱ冗長とは言われつつもJavaの方がデバッグは楽ですよ。コーディングが楽な方が良いかデバッグが楽な方が良いか、切羽詰まる感じはどちらかは、明らか。
ちなみにC++だとショボいTypoで全然関係無さげなSTLやヘッダが山ほどコンパイルエラーを起こすのでアレも嫌いだが。
今までJavaが多かったんだけど最近諸事情によりPythonを見ないといけなくなったので適当に調べつつやっている。まぁ何か見た感じ文法が似ているし別にMCなシステムでもないショボいツールなので何とかなるだろうと。
使っているうちに感じるこの、Javaプログラミングと違いPythonプログラミングがC言語プログラミングに似ている冒頭のこの感じ…。
Javaだとさ、例えばぬるぽで落ちると実際にその行のコードで使ってるオブジェクトがnullである事が殆ど。他のExceptionが起きた時も大体、何というか、処理が停止した個所と実際に問題のあるコードは近い訳ですよ。
ところがC言語だと必ずしもそうではなくmemcpyやstrcpyでcore吐いて落ちたからといってmemcpyやstrcpyに問題がある事は滅多になく、それら標準ライブラリに渡す変数が悪い訳でもなく、実は原因は一見全然関係ない別の処理が変数領域を壊していたりすることがしばしばありデバッグは結構難しい。
Pythonはスクリプト言語なのでcoreを吐くと言う事は無いのだけれど、使ってみると意外にもJavaよりもC言語に近い感触がある。落ちる個所と、問題のある記述が遠い…というかさっぱり分からないのでコードを削りつつ実行して怪しい箇所を絞り込んでいく作業をしていると「お、これは昔、Cで散々やったアレだ…」と思い出した。
見つけた原因も「えー、これコンパイルで検出してよ…いや間違えたのはこっちだけど…」というようなショボいTypoばかりで、よくこれで標準ライブラリを落とせたな…。
やっぱ冗長とは言われつつもJavaの方がデバッグは楽ですよ。コーディングが楽な方が良いかデバッグが楽な方が良いか、切羽詰まる感じはどちらかは、明らか。
ちなみにC++だとショボいTypoで全然関係無さげなSTLやヘッダが山ほどコンパイルエラーを起こすのでアレも嫌いだが。