あるシステム技術者からのメッセージ

 一つ前のブログ#439『学校推薦で合格した者たちは4月まで猛勉強』に制御系のコンピュータ技術者からコメントを戴いた。C言語の評価について、わたしは"old fashion"としたが、(制御系技術者にとって)プログラミングの基本概念を学ぶために古くても重要性はあるという指摘を戴いた。実際に仕事をしている社会人からのメッセージは高校生にたいへん参考になる。なぜ、プログラミング言語について見解の相違がでてくるのかを考える材料としてもいい。そういうわけで、そのまま引用させてもらった。以下、コメント原文

はじめまして。以前、検索で引っかかってからたまに拝見させて頂いています。当方、某メーカーでSEをしている者です。

本日の文中でC言語はもはや古いと書かれておりますが、確かに業務系分野では現在はC++や.NET、JAVAなどのオブジェクト指向や更にそれを発展させたアスペクティブ指向などが主流となってきています。

しかし、日本が得意とする組込制御系分野(例えば、携帯電話開発からはじまり、カーナビゲーション開発や車のエンジン制御など、ハードウェアと密接に関連するソフトウェア制御)などはパフォーマンス的観点からも未だにC言語やアセンブラでの開発が主流です(最近はC++で組まれているものも増えてはきていますけど、C言語は全ての言語の基礎とも言える言語なので、特にポインタやメモリの概念などを理解する上ではC言語は避けて通れないと思います)。

携帯電話の通信制御などで使用する暗号系アルゴリズムや、音声認識、画像処理エンジンなども、例えばイスラエルの企業などがC言語(+アセンブラ)でゴリゴリ組んで、それをライブラリとして日本企業に提供しているケースもあります。auのプラットフォームであるKCP+もC言語で組まれてます(ドコモのsymbianはC++ですね)。

学生さんに勉強を勧めるならば言語依存の勉強ではなく、アルゴリズムや論理学などを中心に勉強させた方が汎用性や応用力をつけるといった点からもよろしいかと思います
by 組込制御技術者 (2008-12-14 03:41)  

【わたしの返信】(原文に加筆修正した)
 実務をやっている技術者の方からのコメント、たいへん参考になります。
 組込制御技術者であるとのこと、私が関係してきた会計情報系や業務系のシステムとはまた世界が違うようです。私自身は別業種の会計情報諸システム(業務システムとの統合システム)の外部設計や実務設計を83年と84年に2度経験しています。
 プログラミングは外部設計のための必要知識のひとつだったので3種類やってみたことがあるのみで、制御系のもちろん機器開発経験はありません。しかし、5年間マイクロ波計測器の社内講習に出席していたので、マイクロ波計測器のコントローラーにはすこしだけ知識があります。30年ほど前の輸入商社時代に技術部でマイクロ波計測器のマルチコントローラを開発していたのを思い出しました。仰るとおり開発担当者はアッセンブラで“ゴリゴリ”組んでいました。1993年に縁があって資本参加交渉後出向した会社が、検査機器と数十台のパソコンをつなぐためのマルチコントローラをアッセンブラで開発中でした。保守に問題が生じるので、開発言語をC言語へ切り替えたことがあります。英国人の暗号技術者からCが古いという話しを聞いたのは、1997年のことです。
 「学生さんに勉強を勧めるならば言語依存の勉強ではなく、アルゴリズムや論理学を中心に勉強をさせたほうが汎用性や応用力をつけるといった点からもよろしいかと思います」とのご意見はその通りだと思います。
 古い言語ほど、プログラミングの基礎概念を理解するためには有効でしょう。そういう意味でC++よりもCの方がメモリーやポインタなどのプログラミングの基礎概念を理解しやすいのかもしれません。わたしも最初に学んだ言語は科学技術計算用キャリキュレータHP97の逆ポーランド記法のものやダイレクトアドレッシングのオフコン用のものでした。1978~80年頃のことです。こうした原始的な言語を一つやっておけばOSが何を制御しているかまで見当がつきます。そういう意味でもC言語を学ぶ重要性はあるのでしょう。これからシステムエンジニアになろうとしている者たちがどういう言語からはじめるのがよいかはいくつか議論がありそうです。アルゴリズムの勉強を優先すべきで、C言語から始める意味は大きいというのがコメントを寄せてくださった組込制御系技術者の方のご意見、C++からでいいではないかというのが私の意見です。

 特定の言語をマスターして、腕のよいプログラマーのプログラムを真似てみることもアルゴリズムの勉強になります。しかし、やはり基本になっている、確率、統計学、記号論理学、回路などの勉強も重要です。ここに、"How Computers Work"という本がありますが、パソコンがどのように動くのか、ハードとソフトの両面にわたって、各デバイスの動きまでカラーのきれいなイラストで詳細に説明してあります。残念ながら翻訳が出ていません。幅広く学んでおくと、実際の仕事のレベルが違ってくるはずです。経験上、そう言えます。
 おそらく先端的な仕事になればなるほどコンピュータのハード、ソフト、アプリケーション分野の専門知識の必要性が増すのでしょうね。コメントをくれた組込制御系技術者の方もそう言っているように私には聞こえました。
B君にはあなたの意見を伝えます。ありがとうございました。

 2008年12月14日 ebisu-blog#440
  総閲覧数:55,745/384 days(12月14日15時00分)