SSブログ

#440 あるシステム技術者からのメッセージ [57. 塾長の教育論]

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

 一つ前のブログ#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分
nice!(0)  コメント(4)  トラックバック(0) 

nice! 0

コメント 4

hattori

古い記事にコメントするのはどうかと思ったのですが、気になったのでコメントさせて頂きます。

私の意見ですが、どのプログラム言語から始めたらいいかという問いに対しては、プログラミングで何をしたいか?例えば自動車の自動運転やモノのインターネットといった制御・計測・組込み系をやりたいのか、スパコンを使って色んな予測を可視化(シミュレーション分野)したいのか、ebisuさんがやってこられた経営情報システム、業務システム、ワークフロー系の企業のシステムなのか、AIを使ってデータサイエンスをやりたいのか、スマートフォンやタブレット端末のアプリを開発したいのか等、私も様々な方から質問を受けるのですが、作りたいもので薦めるプログラム言語を変えています。

私個人はCから始めて、Java、Visual Basic、PL/SQL、Perl、シェルプログラミング全般、C++、python,Javascript
とやってきて(データベースやUNIX、Linux系の仕事が多かったのが理由です)、最近はR、Rust、Go言語に興味があります。

皆さん共通して言えることは高校卒業まではプログラム言語に依存することよりも、プログラミングをする上での基礎(英語、数学、物理、国語(特に小論文や現代文)、の力を伸ばしていくのが宜しいのではないかと思います。

by hattori (2020-12-19 17:17) 

ebisu

hattoriさん

ご意見ありがとうございます。全面的に賛成です。
経営情報系も統計計算が必要ですから、C言語からやるというのは賛成です。Cやれたら、他の言語はなんとかなります。
1984年に開発済みの25ゲージ、5群のレーダチャートと総合偏差値評価の経営分析システムをDECのミニコンでやりたくて、子会社で導入に失敗して使われなかったマシンを使わせて欲しいと経理担当役員へ話しましたが、無理でした。出向役員でシステム部門へ押しがきかなかった。
そのご、90年代にはいるとEXCELでやれるような環境になったので、そちらへ乗せ換えました。

1997年ころ、仕事で外人の暗号技術者二人と話をしたのですが、その時にC言語は"old fashion"、時代はすでにC++だと、そうかと思いました。
UNIX系のマシンはとこの言語は相性がいい。

高校卒業までは「プログラム言語に依存することよりも、プログラミングをする上での基礎(英語、数学、物理、国語(特に小論文や現代文)、の力を伸ばしていくのが宜しいのではないかと思います。」というご意見、これも賛成です。
尖端のプログラミングをするには関連する本をたくさん読まなければなりませんから、英語と数学は必須です。ハードについて知りたくなれば、高校物理も必須科目です。そして国語は全部の科目を支える土台です。一番大事かな。

古い記事への投稿、ありがとうございます。 m(_ _)m
by ebisu (2020-12-19 18:45) 

H20

現在は経営情報系も基幹系もプログラミング言語はJavaが大半ですね。ビジネスロジックが豊富、J2EE用のアプリケーションサーバーが豊富、コネクションの自動管理、メモリの自動管理をしてくれ、ブラウザベース(Webアプリケーション)で動くので、ここ10年くらいは業務系、基幹系でC++を使うことは非常に少なくなりましたね。近年はRubyという日本で開発されたプログラミング言語が世界に広まり、業務系(RubyもRailフレームワークという機能にビジネスロジックが入っていて、アプリケーションサーバー製品が豊富)のソフトを作っています。
by H20 (2021-01-11 20:53) 

ebisu

H20さん

貴重なご意見ありがとう。
時代は激しく動いていますね。クラウドの時代ですから経営情報系もJavaですか。C++に似ているようですね。数値プログラミングも問題なしだ。
ソフト開発環境はどんどん進化しているようです。
by ebisu (2021-01-11 22:44) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0