ここから本文です

学習すべきプログラミング言語を教えてください。 今年の春から東京大学の理...

hfu********さん

2019/3/1322:27:14

学習すべきプログラミング言語を教えてください。


今年の春から東京大学の理科一類に進学するものです。
自分は工学系に進む予定なのですが、最初の二年は教養課程で基礎的な理学をやるだけ、、、。

なので、以前から興味のあったプログラミングをぼちぼち独学しようと思ってます。

実は中学生の頃にjavaは一応かじった(おそらく多くのプログラミング言語に見られるであろう基本的な構文を学び、その後、オブジェクト指向の表面を擦りとったあたりで勉強をやめてしまったので、本当に"かじった"だけ)のですが、正直あれで何ができるのかはよくわからない状態です。

将来的には、情報工学ではなく、航空宇宙やその他ロボット工学などを専攻する予定です。機械の単純な制御のみならず、搭載されるAIなどにも当然プログラミングは必須なわけですが、こういったことを対象とした場合、どの言語を学んでおくのがベストでしょうか?尤も、単一の言語で処理しきれるとは思っていませんので、その場合は、学習すべき順序などもご教授いただけると幸いです。

閲覧数:
339
回答数:
9
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

d_2********さん

2019/3/2001:04:48

航空宇宙やその他ロボット工学などを専攻予定とのことで、プログラミング環境はC言語、C++、C#などでマイコンの制御を行っているソフトウェア開発環境が多いです。
例えばPICマイコンなどのワンチップマイコンはC言語系で、Arduinoなどのボードタイプの開発環境もC言語系を使用しています。
しかしながら組み込みコンピュータになってくるとJAVAが多く使われている分野も多く見受けられます。
IoT関係のプログラミングであればJavascript、php、Rubyなどでwebサービスから様々なサービスを行う制御ソフト・ハードを設計することになるでしょう。
ちなみにiOSはObjective-Cです。
理工学系の解析をしたいのであればPythonを解析ツールとして利用したり、デスクトップアプリケーションやwebアプリケーションを使用したツールの開発もできます。

つまり、やりたいことを細かく絞り込むとおのずと進みたい分野が見えてくるので、そこでどんな言語が必要になるか決まっていきます。
あなたの未来は明るいと思いますので、無理せずにプログラム言語を楽しんでみて、それから本格的に絞り込んでいってはいかがでしょうか。

質問した人からのコメント

2019/3/20 06:31:03

様々な具体例をあげてくださりありがとうございます。
他の方も、大変参考になりました。

ベストアンサー以外の回答

1〜5件/8件中

並び替え:回答日時の
新しい順
|古い順

dai********さん

2019/3/1611:44:02

私は自論ですが英語が大事だと思っています。

どんなプログラミング言語も英語が基本だと思います。

英語が判れば大方のプログラミング言語を理解できる基礎になります。

nee********さん

2019/3/1522:25:46

Windowsを使っているならば無条件にBATファイルを覚えてください。

東大だとMacを強制で購入させている可能性があります。この場合はbashを覚えてください。

どちらもシェルスクリプトというコンピュータユーザ用の簡易言語です。
知っていて当然の常識となります。

東大となると頭デッカチになる不安があります。
泥臭いパソコン全体の動きを勉強してください。
シェルスクリプトはOS標準のプログラムをパズルのように組み合わせて新しい命令作成を目的としているから全体が見えやすいです。

----------------------

その上で業務用言語であればC言語かと思います。
本当は機械語が良いのですが敷居が高い。
またオブジェクト指向は非常に危険概念なので安易に勉強するのは薦めないですね。
東大というとオブジェクト指向の御大が居たと思うので不安を感じますね。

オブジェクト指向は痒い所に手が届く魅力もあるのですが、コンパイラ系の場合、クラスの概念はコンピュータウィルスに無防備などの毀誉褒貶があります。
こういう長所短所を理解して学ぶぶんには良いのですがね。ちょっと無理でしょう。

実際、仕事仲間のところに東大卒のエンジニアがきて、オブジェクト指向でしかプログラムを組めなくて問題を起こしたと聞きました。
東大卒いわく、オブジェクト指向を使わないレガシーなプログラム方式だとコードがスパゲティになってまとなものが作れないと真っ赤になって怒ったとのこと・・・
きちんと仕様設計をしていないというのが真相です。

abi********さん

2019/3/1420:17:29

東大のような一流大学で、最終的に学ぶプログラミングは、一般でのプログラミングとは、全く異なります。
最初の二年間の教養課程では、一般のほうのプログラミングでしょうが、物理学部とか、工学部での学習段階では、かなり違って行きます。
企業用のビジネス用システムと言うよりも、研究部門での情報処理になるからです。



[東大で最終的に学ぶプログラミング]
ちなみに私は、東大レベルではありません。
家庭の事情等で、一流への進学は、あきらめて、そこそこの学歴です。
しかし、子供の頃から物造りが好きであったので、なんとか、研究部門には、就職しました。
一応、高周波アナログの部門で、特許をいくつか持っていて、ノウハウがあるので、大手家電メーカーから、開発依頼をいただいていました。
また、私自身は、質問者さんと違って、一流ではありませんが、上記の研究の流れで、一流大学の教授と、共同開発は、ちょくちょく行っていました。
いくつかの大学の教授に、自分の所属する会社の顧問になってもらい、研究が行き詰ったときにアドバイスをもらっていました。
よって、一応、いくつかの一流大学に通っていましたが、学生としてではなく、社会人として共同開発のアドバイスを受けると言う形での学習になります。
その際に、論文の添付資料(参考文献)で、プログラミングに関するものは、全てFORTRANで書かれています。
ちなみに、一般での情報処理の世界(企業用のビジネス用システム)では、FORTRANは、古くて既に存在しないプログラミング言語です。
しかし、研究部門での情報処理では、FORTRANが、現役バリバリです。
また、一般での情報処理の世界(企業用のビジネス用システム)では、高度な数学は使いません。
例えば、銀行のシステムでは、お金に関する計算をする程度です。
これに対して、研究部門での情報処理では、むしろ数学が中心です。
数学の流儀では解が求まらない計算を、情報処理で解を求めます。
スーパーコンピューターを使って計算します。
しかし、スーパーコンピューターは、高価なので、ワークステーション(パソコンよりもマシンスペックが上のコンピューター)を複数台並列接続して計算することもあります。
数学を中心とした情報処理で有名なのは、天気予報の計算です。
また、原子力の物理計算も、数学を中心とした情報処理です。
また、建築でのビルへ流れる風の計算も、数学を中心とした情報処理です。
また、電磁界のポテンシャルの計算も、数学を中心とした情報処理です。
私は、高周波アナログが専門でしたので、電磁界の計算で使っていました。
おそらく、質問者さんの目的にしている航空宇宙では、数学を中心とした情報処理をよく使うと思います。
ロボット制御のほうが、一般の情報処理のほうです。
ロボット制御でも、そこそこに物理計算は行いますが、スーパーコンピューターで物理計算をする機会は少ないと思います。
数学を中心にした情報処理だけが、研究部門ではないので、最初の二年間の教養課程のほうも、十分に勉強して下さい。
東大卒の人達も、数学を中心にした情報処理だけではなく、企業向けのビジネスシステムで活躍している人達も沢山いますので。
自分は、二十代と三十代では、高周波アナログでの研究開発をしていましたが、四十代以降は、企業向けビジネスシステムの開発をしています。



[研究部門でFORTRANが使われている理由]
FORTRANは、科学技術計算が専門なので、研究部門ではFORTRANが望ましいです。
例えば、論文の参照資料で、FORTRAN以外のプログラミング言語で、OSのAPI を使ったプリンター出力のコードが書かれていたら困ります。
そのOSを使っていない研究者が見たら、「そのコードは、どう言う意味だ」と謎になります。
よって、研究部門では、純粋に科学技術計算のコードだけが書けるFORTRANが、都合がよいのです。


[研究部門でも、実用では、FORTRANを使わないこともある]
前述の通り、FORTRANは、純粋に科学技術計算のコードだけが書けるので、研究部門に適しています。
しかし、逆に言えば、科学技術計算しか行えないので、実用化するには、無理があります。
計算結果をグラフ化したり、プリンター出力したり、データベースでデータ管理をしたり、インターネット経由で機能をエクスポート(機能の外部公開)をしたい場合は、別のプログラミング言語に移植します。
私は、FORTRANの計算処理を、C++に移植していました。
C++では、演算子多重定義と言う機能があって、+、-、*、/などの演算子記号を、自分が定義した処理に置き換えられます。
よって、C++で、FORTRAN風の計算が行えるように、カスタマイズすることが可能です。
ただし、C++では、応用機能が難しので、あまり勧められません(ただし、別の分野では、C++がおすすめで、それは後述します)。
実用での展開では、Javaか、C#か、Pythonか、Rubyあたりが人気があるようです。
私は、C++以外では、C#を使うようになりました。
C#は、C++に比べて制限がありますが、一応、演算子多重定義が使えます。
また、C#は、C言語やC++と連携するインターフェイス(仲介技術)を持っています。
また、クラウドコンピューティング(SaaSと言う、サーバーから機能を公開するタイプのクラウドコンピューティング)では、C#が主要になります。



[ロボット制御の場合]
ロボット制御や家電制御では、C言語、C++、シーケンス制御が重要になります。
詳しくは、下記の質問に回答します。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q122048462...



[クラウドコンピューティングでは、C#とJavaが重要]
クラウドコンピューティングは、2010年あたりから広く普及し始めました。
(クラウドコンピューティング自体は、もっと前から存在しますが、特に普及が目立ち出したのは、2010年以降)
しかし、2010年あたりから普及したのは、「サーバーの運用管理の専門知識がなくても、クラウドコンピューティングの運営会社と契約すれば、サーバの運用が可能です」と言うタイプです。
これに対して、サーバーから様々な機能(サービス)を提供して行くタイプをSaaSと言います。
このSaaSのタイプのクラウドコンピューティングは、これから普及して行く見込みです。
正確には、大手企業を対象にしたビジネス用のシステムでは、既に普及しています。
一般向けのものが、これから普及する見込みです。
また、ライバルどうしのMicrosoft と Linux が手を組んだので、C++の制御系をインターネット系で使えるようにするようです。
特に、クラウドコンピューティング(SaaS)で。
詳しくは、下記の質問で書いた回答を参照して下さい。
うまく成功するのであれば、質問者さんが目標にしているロボット制御系で、大きく関係して行きます。

「C言語って学ぶ意味があるんでしょうか? 」
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q112048569...

この動きは、Microsoft と同時期に、Hewlett-Packard(略称: HP)も動いています。
HPは、電子計測器での世界のトップメーカーです。
また、ワークステーション(パソコンよりもマシンスペックが上のコンピューター)の製造でも、トップクラスです。
そのHP のクラウドコンピューティング(SaaS)は、HP-UXと言うUNIX を使っていました。
これをLinux に変更しました。
HP は、電子計測器とワークステーションを扱っているので、工場での産業用ロボットの制御でも、重要な立場です。
HP と Microsoft と Linux とが手を組んだことが成功すれば、クラウドコンピューティング(SaaS)によるサーバ機を中心にして、電子計測器、IoT機器、VR系製品などが制御される方向性になります。



------------
前述の「ロボット制御の場合」の参勝先が、ないようです。
よって、こちらに、その回答内容を記述します。
質問内容は、確か、以下の通りです。



[類似質問での質問内容]
制御工学は、使われているのでしょうか。
C言語やPython 等によるプログラミングのほうが、活発だと思います。



[類似質問で書く予定であった回答内容]
大きな機器の制御では、C言語による組み込み系制御は無理で、シーケンス制御になります。
よって、シーケンス制御を含めた制御工学は、重要な立場です。
ただし、需要的な面では、質問者さんの言われる通り、C言語による組み込み系制御が重要になります。
また、C言語による組み込み制御用プログラムを、様々なシステムで展開して行くJava、C#、Python 等も重要になります。今後の需要的な面では。
以下に説明します。



[大きな機械の制御は、C言語の組み込み系制御ではなく、シーケンス制御で行なうことについて]
産業用ロボットや工業機械などの大きな機械を制御するには、C言語による組み込み系制御は無理です。
シンケンサーを使った制御工学になります。
C言語の組み込み系制御に使われる電子部品では、パワーのある制御を行うと、壊れてしまいます。
シーケンサーが必要です。
大きいと言いましても、アクチュエータを使った中規模な機械も、一般にはシーケンス制御になります。



[C言語の組み込み系制御と、シーケンス制御との連携]
産業用ロボットは、大型機械なので、シーケンス制御だと前述しました。
しかし、実際は、C言語の組み込み系制御と、シーケンス制御とを組み合わせて連携させている場合が多いです。
パソコンのような操作画面部は、C言語の組み込み系制御です。
そして、実際に機械を動かす部分は、シーケンス制御です。



[本来は、シーケンス制御が適しているが、C言語の組み込み系制御が使われている場合]
車の中には、アクチュエータを使った類の機器が使われています。
換気用のフタを開け閉めするアクチュエータの ---

(続く)

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

wak********さん

2019/3/1417:46:26

興味とかではなく、楽しくなくてもやる気があるならだけど、航空宇宙・ロボット等に繋がる学習としてはMATLABでいいんじゃね?
学部に進学しないと数学的基礎(s領域とか)が全然追いつかないので、教養時代にはMATLABに記述できる内容自体が無いと思うけど

旧帝大クラスならプログラムミングで実装する以前の理論の方が遥かに大事だと思うけど。。。

cra********さん

2019/3/1407:41:50

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる