スタックも知らないのにそこそこの経験 ― 2010年05月18日 05時58分38秒
あるプログラミングを外部に頼みました。
組込みでμITRONのタスクから使用する汎用的な処理をするプログラムなので組込み経験を問わない条件でした。 ターゲット環境には依存しないのでgccなどでも構わない条件で開発を依頼しました。 要はLinuxでもCygwinでも何でもいいので関数が動作すれば良いという条件。
gccで動くような関数を作る場合でも組込み環境での利用を考えるためには以下の留意が必要です。
- スタック領域は無尽蔵ではないので、関数スコープ内で大きな領域を確保するコードは書いてはいけない。なので、あらかじめどの程度のサイズが上限かを確認することが必要。
- 大きめの領域はstatic領域を使うこと
- static領域はスタートアップルーチンでの初期化ではなく、独自の初期化関数で初期化しなければならない場合があること。
- static領域は特定のセクションに配置されることを前提にスタックと同様にサイズ制限を考慮する必要あり。
- ヒープ領域が使えるとは限らない(今回の依頼では使用を禁止)
要は上記を伝えるために「スタック」という言葉を使って説明したわけですが、「スタックって何?」ってな感じの反応をするわけです。 関数スコープ内で定義する自動変数がスタック領域に確保されることくらい把握しておいて欲しい。その会話が出来ないのはプロのCプログラマのスキルに達していないということです。そんな知識じゃ「そこそこ」とは言わないです。
ということで残念な話ですが、プロのプログラマとして実力があるかどうかを確かめるキーワードを事前に確認する必要はあるでしょう。 知ってて当たり前だと思い込んだらいけないということです。
ヘタすると「処理系」という言葉やら「処理系の違いによるchar型の解釈の違い」なども知らないことが多いですからね。困ったものです。
コメント
トラックバック
このエントリのトラックバックURL: http://kumikomi.asablo.jp/blog/2010/05/18/5093398/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。