LoginSignup
1
0
100万人に伝えたい!失敗を乗り超えた話を共有しよう

デバッグモードでしか動かないプログラム。静的検査。

Last updated at Posted at 2023-07-29

100万人に伝えたい!失敗を乗り超えた話を共有しよう

参加投稿です。技術士(情報工学)、工学博士 小川清です。

<この記事は書きかけです。順次追記します。>
This article is not completed. I will add some words in order.

デバッグモードでしか動かないプログラム。

計算終わるのに3年かかる。失敗から学ばない私。

で書いた、OBJのシンタックスチェッカは、実は、デバッグモードでしか動かない。 

最初は、Small C Compilerを写経した。
次にPascalで書かれたコンパイラをC言語に移植した。 

YaccとLexで書いたコンパイラも動かしてみた。 

OBJのシンタックスチェッカを造った。 
コンパイラのデバッグモードだと動く。 
リリースモードだと暴走する。 

OBJは、LISPで書かれた言語。LISPが使えれば、シンタックスチェッカもLISPで作れたはず。

原因は推測できた。Pascalには範囲指定機能がある。C言語には範囲指定機能がなく、どこかで配列が溢れているのだろう。 

MISRA Cに取り組んだ後では、静的検査すれば分かる。 

C言語教育はCコンパイラの写経で

写経だけでは十分ではない点が一つみつかった。MISRA Cに取り組み、すぐに解決策も見つかった。

MISRA C

Cコンパイラを書いた経験は、Cのコーディング標準の創り方、運用の仕方、展開方法には役立った。 

そして、MISRA C用のツールで、範囲検査機能を知った。なんだ、この機能使えば、リリースモードでも動くようにできたんだ。

3つの失敗を重ねるなかで、得た経験で役立った最初の成果かもしれない。 

MISRA C まとめ #include

MISRA C 2012 -組み込みプログラミングの高信頼性ガイド

まとめに代えて 

コンパイラを描き始めて、プログラミング言語のそれぞれの制約にぶつかった。 

コンパイラを書いた経験にもとづき、MISRA Cに取り組んで、すぐに問題は解決した。

今まで書いてよかった技術書を紹介しよう!

C++/C コンパイルエラーを記録するとよい理由7つ

C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識

[C][C++]の国際規格案の例題をコンパイルするときの課題7つ。

関連資料

夜勤明けで免許更新で眼鏡付きになった。69歳のゴールド免許

計算終わるのに3年かかる 失敗から学ばない私

デバッグモードでしか動かないプログラム。静的検査。

FAXが送れない。「Microsoft Exchange活用ガイド」技術評論社。裏話。

索引体系化に失敗。統計を取ろう。

失敗してもめげないプログラマになるには。仮説(174)

失敗の記録:文字列処理スクリプトの場合

QC検定に落ち「たか」らかける記事。20,000人の方に読んでいただけ「たか」ら書ける記事。「たかたか」分析の勧め。

作業診断(process assessment)を成功させる5つの鍵。失敗する5つの罠 。仮説(50)

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.

文書履歴(document history)

ver. 0.01 初稿  20230729

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0