見出し画像

C言語 何が大変だったか?

C言語は、たしか6番目に習った言語だと思います。
Fortran、Cobol、アセンブラ、Basic、PascalそしてC言語です。
8ビットPCが全盛時代、パソコンでC言語を使っていた人はほんの少しだと思います。(殆どの人はN-BASICやF-BASICなどを使っていて、BASIC以外の言語を使用するかクロスアセンブルなどをする人がCP/MやFLEXを使用してただけです)
(C言語といえば、UNIX。UNIXといえばPDP。就職した会社で自動機のメンテ担当になったときの制御コンピュータがPDP-7だったときは感激しました。御用済みになったら、PDP-7貰えないかな?なんって思ったものです。  独立したときにUNIBOXを買いました。)

私はC言語の前にPascalを使っていたので、Cを学習するのそれほど大変ではありませんでした。 当時のPascalは文字列の扱いが大変面倒だったので、C言語のNullでターミネートされるだけのバイト列の配列及びそれを示すだけのポインタと言う、現在では原始的かつバグの巣窟と揶揄される文字列操作でしたが、すごく気に入ってました。(現在ではFPCの文字列はヘルパタイプを使用することによって、文字列をオブジェクト的に扱えるので、GUI系のデスクトップアプリ作成はLazarusを使っています。)
それにアセンブラを使っている人にとっては、C言語のポインタは便利な機能であり、難解なものではなかったです。

では、Cを使うにあたって、何が大変だったかって?

それは、業務でC言語を使うことを提案しても、ほとんど相手にされなかったことです。 

私がC言語に取り組んだときには、組込みシステムの開発にアセンブラが全盛だった頃です。 C言語自体が知られていない… その後高級アセンブラとしてのC言語の認識がある程度広まってきていても、組込みシステムにC言語を採用することについて躊躇している企業の方が多かったです。

8bit CPUでC言語を使った人は少ないかもしれません。最初は6809用のIntrol-Cからはじめました。 後になってZ80系のLSI Cなども使用しました。

各社のC言語コンパイラも当初は酷いものでした、正しいC言語のソースを書いても複雑になると文法エラーになったり、書き方によって生成されるアセンブラソースが間違っていて、CPUが暴走したりしたのです。ですから当時はデバッグというとCコンパイラがコンパイルを間違えないようなソースに書き換えたり、コンパイルされたアセンブラソースの確認、さらにはICEなどで機械語レベルでデバッグする必要がありました。 そういう状況ですから開発現場サイドでC言語は使えない!と言う評価がされていましたので、こちらでC言語を使う案件を提案しても却下される方が多かったです。

それでも、懇意にさせていただいた2社からは、私がそれほど薦めるなら任せるから使って見てくれと言われて、2件のシステムを6809を使って完成させました。1件は工作機械、もう1件は通信関連システムです。どちらもアセンブラに比べればコード数も短く、わかりやすいソースコードになりました。組込み系でも16bitCPUが増えてくると段々とC言語の開発案件が増えていきました。

8ビットの頃は高級アセンブラと言われるくらいで、C言語を使う機会は組込み系以外はあまりあリませんでした。 PCアプリの開発においては致命的な問題がありました。 BASICでは当たり前の、グラフィック、それに浮動小数点数演算ができないなどです。結局BASICの実行速度が極端に遅いと言われても、C言語で書き直すケースはありませんでした。
(某大学の研究室からFM-8のF-BASICで作成されている実験データの処理アプリの速度を速くしてほしいという依頼がありました。 検査データが多いときは計算処理に2〜3時間程度かかるため担当者の帰りが深夜になってしまうとのことでした。 その時はF-BASICのアプリをPascalで書き換えたところ、F-BASICの処理よりも数倍速くなりました。 C言語で浮動小数点数が扱えて、グラフィック表示ができるアプリが書けるようになったのはずっと後のことでした。)

最近はC言語を使う機会は減りました。 Linuxのデバイスドライバを作成するくらいでしょうか。

余談ですが、こんな話もありました。

情報専門学校で講師をしていたときの先生の話です。
新幹線でC言語の入門書を読んでいたとき冷たい視線を感じたそうです。
彼の場合は「はじめてのC」初版だったみたいですが、似たような体験をした人って多かったのでは? 
私は「プログラミング言語C」の初版でC言語を覚えましたので、そんな経験はありませんでした。それに新幹線に乗っているときに書籍を読むと酔うので、音楽を聞いているときがほとんどです。






この記事が気に入ったらサポートをしてみませんか?