FIREを目指す理系院卒のブログ

FIRE(経済的自立と早期退職)を目指す理系院卒のるーてくです。

大学生がプログラミングを始めるならどの言語がオススメ?

最近だと文系の大学でもプログラミングを学ぶことがあると思います。

将来的に文系でもエンジニアを目指したいという方、理系だけどプログラミングはあまり使わないという方、いろいろいらっしゃると思います。

今回は、どんなプログラミング言語を学ぶと良いか、ということをテーマにお話したいと思います。

 

ということで、みなさんおはにちわ、るーてくです。

僕は情報系の大学院出身です(工学修士

プログラミング言語って色々あるので、最初にどれを勉強したらいいか迷う人もいると思います。「最初に何したらいいの?」と迷っている方の参考になれば幸いです。

 

この記事の内容は個人の見解です。参考にする場合は自己責任でお願いします。

この記事には、特定の企業や団体・個人を批判する目的は一切ありません。

 

 

そもそもプログラミングって?

プログラミングは、計算機に任意の命令を実行させるための一連の作業です。

「写真をカッコイイ感じに加工して!」とか「英語の書類日本語に翻訳して!」とか「部屋の温度丁度いい感じになったらエアコンの風弱くして!」とか「お金の計算して!」とか「自動運転して!」とか、色々な命令を機械に実行してもらうためにプログラミングが必要です。

ただ、機械にはこのようなアバウトな命令は理解できないので、機械に理解できる形で命令する必要があります。

このために存在するのがプログラミングという作業なわけです。

 

プログラミング言語とは?

プログラミング言語には数多くの種類があります。

そもそも、計算機は機械語マシン語)しか理解できません。

機械語は0と1の羅列であり、人間は機械語を容易には理解できません。

極稀に、機械語をそのまま読むことが出来る天才がいますが、人類は「天才でなくても、誰でもプログラミングが出来るように」プログラミング言語を開発していきました。

 

すなわち、プログラミング言語というのは、「人間が理解できる方法で命令文を書き、計算機の理解できる形に自動翻訳し、実行する一連の仕組み」のことを言います。

 

プログラミング言語の違いとは?

プログラミング言語には様々な種類があるのは周知のとおりです。

まず、これらは高級言語と低級言語に分類できます。

 

高級言語は、人間が理解しやすい言語のことで、C言語JavaPythonなどが代表例です。人間にとっては非常にわかりやすく命令文を書くことができるため、現在は主流となっていますが、その反面、機械語への自動翻訳作業に計算時間がかかってしまうといったデメリットがあります。

 

低級言語というのは、計算機が理解しやすい言語のことで、機械語そのものや、アセンブリ言語のことを指します。このような低級言語は、人間にとっては理解が難しいため、命令文を書くためには計算機への深い理解が必要ですが、自動翻訳作業にほとんど計算時間がかからないため、実行効率の良いプログラムを書くことができます。

 

要約すると、人間に理解がしやすい言語は、計算速度が遅くなります。逆に、機械が理解しやすい言語は、計算速度が速くなります。

最近では、計算機の性能が飛躍的に向上し、プログラムの実行効率よりも、プログラムの開発効率を重視する考えが主流となったため、プログラミング言語と言えば高級言語を指すようになってきていますが、低級言語によるプログラミングも一部の組み込みプログラミングなどの分野では今でも活用されています。

 

大学生にオススメのプログラミング言語は?

まず、高級言語をオススメします。

低級言語はハードウェア設計や組み込みプログラミングなどの分野では非常に重要ですが、習得するためには年単位の大変な勉強量が必要です。

高級言語の場合は、「とりあえずなんかアプリ作ったよ」ってレベルになるまで1週間もかからないことだってありえます。

ですので、まずは高級言語を学び、その上で必要であれば低級言語を学ぶという順番をオススメします。

 

その上で、大学生にオススメの高級言語を以下に記載します。特に順位はありませんので、お好みで選んでみてくださいね。

 

Python

利点:非常に理解しやすい、ライブラリが充実している

欠点:実行速度が遅い、動的型付けのためラクだが配慮が必要

 

Pythonは現在非常に人気のプログラミング言語です。

人工知能関連のライブラリが充実しているので、機械学習を学びたいのであればPython一択という状況が続いています。

実行速度が遅いという欠点があるのですが、ライブラリが本当に豊富なので、高速に処理するコツもたくさんあります。動的型付けについてはここでは説明を割愛しますが、Pythonでプログラミングする上ではいくつか注意事項があるということです。

非常に理解しやすく、使っている人が多いので、色々なライブラリが開発されていて、基本的には何でもできます。ゲーム開発やスマホアプリ開発もできるので、プログラミング初心者にはオススメの言語です。

ただし、実際に本格的にゲーム開発やスマホアプリ開発をしていくと、Pythonだと不便な部分も出てくるかもしれません。その際には、別の言語を学ぶ必要があるでしょう。

 

補足:ライブラリとは

ライブラリというのは、どこかのすごい人達が無料配布(場合によっては有料配布)してくれているプログラム集みたいなものです。ライブラリがあれば、その部分については自分でプログラムを書く必要が無くなるので、すごく時間と労力を短縮できます。

ただし、「この処理にはこのライブラリを使ったらいいな」という勘を身に着ける必要はあるので、どちらにせよ勉強は必要です。また、ライブラリによっては商用利用不可とか色々制約があったりする場合もあるので注意が必要です。

 

 

C言語C++

利点:高級言語の中では機械語に近く(?)実行速度が速い。コンピュータの仕組みを深く学ぶことが出来る。習得している人が多い。

欠点:高級言語の中では理解が難しい。現在では、アプリ開発やゲーム開発には不向き。

 

C言語は古くから人気のプログラミング言語です。

大体何でもできることや、実行速度が速いことから、今でも人気のプログラミング言語です。

ただ、ポインタの概念は初心者にはやや難しく、とっつきにくいプログラミング言語です。

「ゲーム作りたい!」とか「スマホアプリ作りたい!」となったときには、ありえないぐらい大変な勉強量が必要です。

この点、Pythonであればライブラリが多数ありますので、作業量・勉強量を大幅に短縮することができます。

このため、C言語は「コンピュータの仕組みを学びたい」とか「プログラミングを深く理解したい」という人にオススメで、多くの情報系の学部では必修科目になっているのではないかなと思います。

その上で、改良版のC++はゲーム開発にも使えるような改良が加えられていて、C言語の殆どの仕様を内包しているので、いきなりC++を学んでも良いかもしれません。

 

Java

利点:比較的理解しやすい。使っている人や企業が多く、就職後に役に立つ可能性が高い。基本的にはなんでも出来る。アプリ開発やゲーム開発も可能。

欠点:開発環境を整えるのがややめんどくさい。様々な環境で動作するように作られているために、効率的・高速に動作するプログラムを作るのは難しい。

 

PythonC言語のいいとこ取りのようなプログラミング言語です。

理解しやすく、汎用性の高い言語で、今でもシステム開発の分野では一般的に使われている言語ですので、一通り勉強して損はないと思います。

Javaで作ったプログラムの実行速度は、C言語C++で作ったプログラムより遅いです(Pythonよりは速い)

もし、実行速度が問題になるような、大量の計算を高速で行わなければならないようなプログラムを作る場合には、Javaは不向きだと思いますが、ライブラリを用いることで高速化を図ることも可能です。

 

Visual Basic

利点:Windowsアプリケーションの開発に特化している。比較的理解しやすい。最近のバージョンでは改良が施され、比較的実行速度が速い。システム開発の分野では主流言語の一つで、就職後に役に立つ可能性が高い。

欠点:Windows環境以外で動作するアプリケーションの開発には不向き。開発環境を整えるのがめんどくさい。

 

C#

利点:ゲーム開発に向いている言語。比較的理解しやすい。Windowsアプリケーションの開発も可能。

欠点:C言語との直接的な互換性はない。Windows環境以外で動作するアプリケーションの開発には不向き。開発環境を整えるのがめんどくさい。

 

Visual BasicC#Windowsアプリケーション(フロントエンド)を作るのに便利なプログラミング言語です。

非常にわかりやすく、パズルのようにアプリケーションを作ることが出来る上に、システム開発の分野では主流言語の一つですので、学んでおいて損はありません。

ただし、スマホアプリや人工知能開発などには不向きです(できないわけじゃないですが、明らかに他のプログラミング言語のほうが効率的です)

C#は特にゲーム開発に特化しています。

 

JavaScript

利点:ウェブブラウザが動作する環境であれば動作する。開発環境を整えるのが簡単(Windowsのメモ帳でもプログラミングできる。)比較的理解しやすい。ウェブサイト制作では必須のプログラミング言語。ちょっとしたブラウザゲームの開発も可能。

欠点:環境によって動作が異なるので、厳密な動作が要求されるプログラムの開発には不向き。「方言」のような派生プログラミング言語や記述方法が多数あり、複雑化している。実行速度が非常に遅い。

JavaScriptの最大の特徴は、ウェブブラウザ上で動作するというところです。OSやデバイスの違いを問わず動作するため、非常に便利な言語です。

ちなみに、Javaとはぜんぜん違う言語です。

実行速度は非常に遅いので、高速で大量の計算を行うようなプログラムの開発には不向きです。また、OSやブラウザによっては細かな動作が異なることがあるので、注意が必要です。

JavaScriptは派生言語やバージョンによって「方言」のようなものがあったり、ライブラリが多数存在するため、自由度が高い反面、習得が難しい言語でもあります。

「ちょっとした便利ツールを今すぐ作りたい(配布したい)」といった場合に便利な言語です。目に見えてわかる成果がすぐ得られるという点で、初心者にオススメの言語です。

 

Excel VBA

利点:Excelが動作する環境であれば基本的には環境構築不要。比較的理解しやすい。仕事で「ちょっとした便利ツール」を作りたいときに非常に便利。Visual Basicとよく似た記述方法なので、本格的なツールを開発したいときにはVisual Basicに移行しやすい。

欠点:ちょっとしたアプリ(マクロ)を作るには便利だが、本格的なシステム開発には不向き。ゲーム開発や人工知能開発、スマホアプリ開発には全く不向き。基本的にはExcelが無いと動かない。

最後にちょっと変わり種を。実はExcelでもプログラミングができます。Excel VBAではExcel内のデータをうまいこと処理したりする簡単な計算ツールを作ることができます。

Excel上でしか動作しないのであまり発展性はありませんが、ちょっとした便利ツールを作るのにはオススメです。

 

まとめ 個人的なオススメはPython

前提として、学校や就職先からプログラミング言語について指定がある(必修である)場合には、それを勉強したほうがよいです。

その上で、初心者には、成果が目に見えてわかるアプリケーションが簡単に作れる言語、プログラムの仕組みがよく理解できる言語が望ましいと僕は考えています。

 

以下にざっくり要約しますと、

・初心者で、とりあえずプログラミングというのをやってみたい → PythonJavaScript

・プログラムや計算機の仕組みを学んでみたい → C言語アセンブリ言語

・本格的なゲーム開発がしたい → C#Java

人工知能開発がしたい → Python

競技プログラミングをやってみたい → C++

・ウェブサイト制作がしたい → JavaScript

・就職に役立てたい → Java

・自分で使うちょっとしたアプリが作りたい → PythonVisual BasicJavaScriptExcel VBA

・ウェブカメラや温度計などのIoTデバイスと連携したシステムを作りたい → PythonJava

となります(あくまでも個人の感想です)

色々みなさん事情があると思いますので、参考程度にしていただければ幸いです。それでは。