大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Cを教えています。

株式会社クローバーフィールドの経営理念
著者:高木信尚
公開日:2015/12/12
最終更新日:2017/12/27
カテゴリー:雑記
タグ:

こんにちは、高木です。

「毎朝7時に投稿しています」といった翌日に投稿時間が遅れてしまいました。
こういうこともたまにはあります。

現在、クローバーフィールドの社内では若手の技術者にCのプログラミングを教えています。
なぜCを選んだかというと、本気でプログラミングの技術を磨くためには、開発ツールの便利な機能に頼らない方がいいと考えたからです。

本当はJavaやC#をやりたい場合でも、Cはやっておいて損はありません。
JavaもC#も、その文法はCをもとにしていますので、Cで学んだことはほぼそのまま活かすことができます。
これまでいろいろの技術者を見てきた印象でいうと、きちんとCが使いこなせる技術者は他の言語を習得するのも早いのです。
Cプログラマーはつぶしが効くといってもよいでしょう。

現在社内で実践している教え方は、決して技術者を甘やかしません。
彼らはプログラミング経験がまったくないわけではありませんので、基礎力を底上げするためにあえて難度を上げることにしたのです。

具体的なやり方を書いていきます。

まず、Visual StudioやEclipseなどの統合開発環境は一切使いません。
テキストエディタとコマンドプロンプト、そしてコンパイラとしてGCC(MinGW-w64)を使っています。
環境変数PATHの設定からやらせています。

使用を許可した関数は2つ。
getcharとputcharだけです。

これら2つの関数を使って、標準入力からの1文字入力と標準出力への1文字出力からスタートします。
そして、文字列の出力、文字列のコピーと続きます。
昨日は整数値の出力をやりました。

このあたりのプログラミングをやっていると、プログラミング言語以前の基礎力がかなりものをいいます。
基礎学力といってもいいでしょう。

数値の入出力ができないと、これからいろいろなことをやっていく上で結果の表示ができなかったりして支障が出てきます。
この部分はしっかりやっておきたいところです。

今後は浮動小数点数の出力もやらないといけませんね。
1の近傍の値しか扱わないのであれば指数表現とか必要ないですが、一般的には指数を扱わないといけなくなります。
そのためには、常用対数を使って指数を求めないといけません。

けれどもlog10関数は使ってはいけないルールなのです。
10で割れるところまでどんどん割っていって指数を求めるといったマヌケな方法もありますが、ここはやはりテイラー展開で対数関数を実装すべきでしょうね。
まあ、対数関数が実装できたところで、それをどう適用すればいいかはまた別問題ですが……。

ありがちなCプログラミングの学習では、最初に#includeを「おまじない」として教えてしまうことが多いのですが、学習者が本当に渇望するまで#includeは教えないつもりです。
必要に迫られてから習得したものは、(「おまじない」ではなく)ほぼ完全にその意味を理解してくれることでしょう。

    前の記事 :
    上に戻る