C言語診断本
関数を丸ごと(囲って)();呼び出して初期化に使うとか、数年前までネット上のサンプルでも見られなかったJavaScriptの書き方がC言語では当たり前に使われていて、歴史の勉強みたいで結構面白い。
Folderオブジェクトの中のファイルに対してfor文で回したいとか、WScript.Networkでドライブのコレクションをforで回したいとか、そういうときはオブジェクトをわざわざEnumで列挙しないといけなかったのが、C言語の構造体でシンプルなenumがあるのを見て歴史を感じた。
あと、型キャストでビットが削れて元の状態が想像もできない値が出力されたりとか、文字列型は存在しなくてつまりcharの配列だからその参照渡しならぬポインタをそのまたポインタしてポインタのポインタのえとえと***とかなると、頭で数字をこねくり回して記述する面倒がいかにスクリプト言語でマスクされているのかに驚く。
変数の定義はJavaScriptならどこでもできるけど、Cでは{}で囲むブロックの先頭でしかできないというのは「おーっ」って思ったり。
でも、ここでわざわざmemset()してるのは何のためなんだ?とか、数行でできるような文字列をsubstringする関数すら標準でないのはなんで?っていう、C言語なるもの自体に対する疑問のような質問を人にぶつけると、それは構造体で定義しといてやったほうが速いものだから云々とサンプルを見せて説明してくれて、もう今日は「アッー!」ってなった。
C言語はどういう風に書かれるのが常識的で、どう書くのがセキュアだっていうポイントはネットを漁ってもあまり見えてこない。記法が似ているだけに、シンプルなサンプルはすぐ理解できた気になってしまってよくない。だめな書き方で、こうなってしまうからいけない、こう書くのが流儀なのだっていうのを知らなければならないと、今日も帰りにジュンク堂へ寄った。
Folderオブジェクトの中のファイルに対してfor文で回したいとか、WScript.Networkでドライブのコレクションをforで回したいとか、そういうときはオブジェクトをわざわざEnumで列挙しないといけなかったのが、C言語の構造体でシンプルなenumがあるのを見て歴史を感じた。
あと、型キャストでビットが削れて元の状態が想像もできない値が出力されたりとか、文字列型は存在しなくてつまりcharの配列だからその参照渡しならぬポインタをそのまたポインタしてポインタのポインタのえとえと***とかなると、頭で数字をこねくり回して記述する面倒がいかにスクリプト言語でマスクされているのかに驚く。
変数の定義はJavaScriptならどこでもできるけど、Cでは{}で囲むブロックの先頭でしかできないというのは「おーっ」って思ったり。
でも、ここでわざわざmemset()してるのは何のためなんだ?とか、数行でできるような文字列をsubstringする関数すら標準でないのはなんで?っていう、C言語なるもの自体に対する疑問のような質問を人にぶつけると、それは構造体で定義しといてやったほうが速いものだから云々とサンプルを見せて説明してくれて、もう今日は「アッー!」ってなった。
C言語はどういう風に書かれるのが常識的で、どう書くのがセキュアだっていうポイントはネットを漁ってもあまり見えてこない。記法が似ているだけに、シンプルなサンプルはすぐ理解できた気になってしまってよくない。だめな書き方で、こうなってしまうからいけない、こう書くのが流儀なのだっていうのを知らなければならないと、今日も帰りにジュンク堂へ寄った。