光通信の基礎から応用までを紹介する本連載。第4回は、さらに基本に立ち返って「Lチカ」を話題として取り上げる。C言語プログラミングの基礎の基礎“Hello, World”との共通点とは。
本連載は、光通信の空間伝送をテーマとしているわけですが、前回は基本に立ち返って光の送受信の基本である発光と受光についてお話しました。
今回は、さらに基本に立ち返ると言っては何ですが、LED(Light Emitting Diode:発光ダイオード)を点滅させる「Lチカ」を話題にしたいと思います。
筆者の記事は主に組み込み技術者に向けて書いているのですが、なぜまた「Lチカ」を話題にしなければならないのかと疑問をもつ読者もいらっしゃるでしょう。
少し話は長くなるのですがお付き合いください。坂井弘亮氏という方の著書の一つに「ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ」なるものがあります(図1)。坂井氏がこの本を書こうとした動機は“不満”なんですね。400ページを超える書籍ですから、どれほどの“不満”があったのか。かなり熱いエモーションがあったのだと思います。
それで坂井氏は何に対して“不満”があったかというと、とある演習でのことでした。坂井氏はそこで講師をしており、応募者の中から参加者を選考するのですが、その際に“Hello, World”の説明を求める課題を出したそうです。しかし、その課題の意味をくみ取って解答した応募者はほとんどいなかったとか。設問の作り方に課題はあったかもしれませんが、そのことを含めてこの事態に“不満”があった坂井氏が、模範解答として書き上げたのがこの400ページを超える書籍になります。
次に、坂井氏の書籍とLチカにどのような関連があるかを説明しなければならないですね。同氏のいわゆる“Hello, World”本は、応募者にソフトウェアの低いレイヤーから高いレイヤーまでを熟知しているかを確かめる課題をテーマにしていました。ソフトウェアでいえばドライバーレベル、OSレベル、言語処理レベルなど、これらのコンポーネントの働き、そしてコンポーネント間のやりとりなどを応募用紙に書いていればおそらく同氏のお目にかなう解答になったのではないでしょうか。
ちなみに“Hello, World”は、C言語のバイブルと呼ばれる「プログラミング言語C 第2版 ANSI規格準拠」(B.W.カーニハン/D.M.リッチー著、石田晴久訳)で、最初に出されるプログラムの例題において印字を求められる言葉として知られています(正しくは“hello, world”)。現在も、プログラミング初学者が最初に書いてみるコードかもしれません(リスト1)。
#include <stdio.h>
main()
{
printf("hello, world\n");
}
初版の出版が1978年であり、実はANSIに準拠してないコードなので、今となっては突っ込みどころ満載です。皆さんの普段使いのCコンパイラでコンパイルできるか試してみてください。コンパイラが教えてくれる警告を眺めてみるときっと必ず気付きがあるはずです。
Copyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク