Scribble at 2023-08-11 15:09:52 Last modified: 2023-08-12 17:36:43

添付画像

Cプログラマの人口が多いので、情報の入手が簡単ですし、サンプルソースも豊富なので、学習しやすいのです。業務用の開発でも、広く使われているので就職や転職にも有利です。

C言語

よく C 言語の入門サイトなどでは、C の特徴なりアドバンテージとして上に引用している文章のようなことが書かれている。もちろん、一部は事実であろう。Cプログラマの人口は「多い」とは思う。しかし、たとえばウェブ制作会社でシステム開発に従事している人間が、取引関係の相手として C 言語を業務で書いているプログラマに会う機会は殆どないと思う。したがって、情報の入手は非常に難しい。オンラインではどうだろうか。C 言語を学ぶにあたって「定番」と言えるようなサイトはあるだろうか。もちろん、ない。理由は簡単だ。PHP なら公式サイトに全てのドキュメントがあるし、Rust もそうだし、ECMAScript だって言語仕様が公開されている。これに対して、C 言語は言語仕様が ANSI の知財として販売されているだけだ。つまり、無償で参照できるスタンダードな C 言語の文書は、実はオンラインに全く存在しない(もちろん、z-library や Library Genesis のような海賊サイトは別だ)。したがって、C 言語について書かれている大半のウェブ・コンテンツは、C 言語についてどういう職務経歴があるのかもわからないようなコピペ・ライターや WELQ バイトが書いている可能性があり、実際に9割くらいのサイトは箸にも棒にもかからないような新卒レベルの実績や能力しか無い半端者が備忘録代わりに公開しているだけの、それこそチラシの裏に書いているような走り書き程度の「自称ドキュメント」だ。

要するに、C 言語のまともなオンライン・リソースなんてないのである。だから、いまだに続々と C 言語の入門書が発売されたり、『日経ソフトウェア』や『Interface』は、毎年のように3月頃になると C 言語の入門記事だとか、どの IDE を使うのがいいかなどというコピペ記事を掲載するわけである。氏素性のわかる人物に記事や書籍の原稿を書いてもらうしか内容を担保できないからこそ、そういうことが延々と繰り返される。このような実態こそ、オンラインのリソースに信用できるものがない証拠だ。よって、上のようなサイトも同様である。この程度の内容なら、C 言語でプログラムを1行すら書いたこともない中学生ですら書ける。

そして、内容が貧弱であるくらいならともかく、そればかりか内容が間違っているとなると、更に困ったことになる。さきほど冒頭では C 言語のプログラマが「多い」という点について触れた。これは正しい。しかし、その次は明らかに嘘だと思う。つまり、サンプルソースが豊富なので学習しやすいという点である。まず最初に「サンプルソース」とは何のことを言っているのだろうか。C で書かれたプログラムやソフトウェアのソースコードという意味であれば、確かに GitHub を始めとして大量のソースコードを眺めることはできるだろう。しかし、いったいそれらが「何のサンプルになっているのか」を、素人や初心者がどうやって同定したり理解するというのだろうか。そして更に、ソースコードが大量に無償でアクセスできるからといって、「学習しやすい」と言えるわけではない。なぜなら、code reading というものは一つの技法であり、素人や初心者が Linux や Apache のソースコードをいきなりアーカイブから展開してテキスト・エディタで開いたところで、学習どころか「読める」ものではないからだ。

どうしてこんな現実的でないことをあれこれと書いてしまうのか。答えは簡単である。こういう文章を書いてしまう人というのは、実際に C 言語を他人に教えた経験がないのだ。僕らのように補習塾だとか FAX と電話を使った子供用の学習サービスだとか、あるいは大学院で後輩の修士課程の学生を指導するとか、かなりバラエティのある指導経験があったり、また企業でも社内研修を20年近くにわたって実施してきているという経験がある人間から言わせてもらえば、大半の大学教員ですらものを教える素人にほかならない。よって、オンラインで数十ページの解説を書いているていどで何事かを為したと錯覚しているような手合が簡単にできることではないという、教育や指導というものの現実が分かっていないのである。

では最後に、就職や転職に有利と言えるかどうかについては、確かにシャープの家電開発部署から NEC の家電開発部署へ転職するなら、C 言語を使えるかどうかは重要な条件になるだろう。しかし、広告代理店案件としてウェブ・アプリケーションの開発に従事するベンダーに転職するにあたって、C 言語が書けるという技量は、はっきり言って有利な点など一つもない。なぜなら C で開発する案件なんて一つもないからだ。C で書けるなら PHP も書けるようになるとは思うが、明日からフォームを開発せよと言われて出来るとは思えないし、C 言語のプログラマの半分以上は、おそらくウェブ・アプリケーションを開発する際のセキュリティ要件を殆ど知らないと思う。通信機器の組み込みをやっているならともかく、アイロンに組み込む基盤を開発してきた人物が XSS 対策のコードを書けるとは思わない(し、そもそも XSS 対策をしなくてはいけないという背景知識そのものが無いと思う)。

なお、組み込み系の業界に C 言語での開発実績が数多くあるのは(惰性という理由でも)事実であって、また組み込みの業界に多くの優秀な技術者がいるであろうという一般的な想定も妥当であろう。それを否定するつもりはない。ただ、オンラインで読める範囲のリソースで判断すると、ともかく C 言語に限らず解説の類は散漫で、継続性がなくて、体系性もない。要するに、C 言語について何か書いておこうかなというていどの気軽な落書きが膨大に積み上げられているだけであって、こんなものは「知識」とは言えない。単独で MISRA-C と同等の文書を書けとまでは言わないし、日本の技術者個人にそれを求める意味もないが(平林さん級のエンジニアに、日本ではお馴染みのクズみたいな案件から自由になれる待遇を保証すれば可能かもしれない)、組み込みエンジニアの矜持みたいなものがあるなら、「とほほのC言語入門」の最低でも10倍ていどの分量と質を備えるコンテンツくらいは公開してほしいという気がする。5年もあれば、こんなもんまともな技量のエンジニアなら可能だろう。それをしないのだから、僕らみたいなやろうと思えばできる人間に「オンラインに C 言語のまともなリソースは殆どない」と断定される恥を甘んじて受け入れなくてはいけない。まぁ、これを恥とも思っていないからこそインド人や中国人のイージーな MOOC とかに日本は負けるんだけどね。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook