スタックも知らないのにそこそこの経験2010年05月18日 05時58分38秒

あるプログラミングを外部に頼みました。

組込みでμITRONのタスクから使用する汎用的な処理をするプログラムなので組込み経験を問わない条件でした。 ターゲット環境には依存しないのでgccなどでも構わない条件で開発を依頼しました。 要はLinuxでもCygwinでも何でもいいので関数が動作すれば良いという条件。

gccで動くような関数を作る場合でも組込み環境での利用を考えるためには以下の留意が必要です。

  • スタック領域は無尽蔵ではないので、関数スコープ内で大きな領域を確保するコードは書いてはいけない。なので、あらかじめどの程度のサイズが上限かを確認することが必要。
  • 大きめの領域はstatic領域を使うこと
  • static領域はスタートアップルーチンでの初期化ではなく、独自の初期化関数で初期化しなければならない場合があること。
  • static領域は特定のセクションに配置されることを前提にスタックと同様にサイズ制限を考慮する必要あり。
  • ヒープ領域が使えるとは限らない(今回の依頼では使用を禁止)

要は上記を伝えるために「スタック」という言葉を使って説明したわけですが、「スタックって何?」ってな感じの反応をするわけです。 関数スコープ内で定義する自動変数がスタック領域に確保されることくらい把握しておいて欲しい。その会話が出来ないのはプロのCプログラマのスキルに達していないということです。そんな知識じゃ「そこそこ」とは言わないです。

ということで残念な話ですが、プロのプログラマとして実力があるかどうかを確かめるキーワードを事前に確認する必要はあるでしょう。 知ってて当たり前だと思い込んだらいけないということです。

ヘタすると「処理系」という言葉やら「処理系の違いによるchar型の解釈の違い」なども知らないことが多いですからね。困ったものです。

2070年1月1日って何?2010年05月18日 23時59分20秒

昨日アマゾンに注文した品物が届きました。 宅急便の伝票の日付は2070年1月1日。

?????