プログラミング言語は何を勉強すべき(学ぶべき)か?

コンピュータも一般化して、プログラミング言語も進化しました。
今からプログラミングしたい、作ってみたいんだけど・・・
プログラミング言語もたくさんあって、何を学んだらよいか? 悩むところです。
パソコンがあれば、無料のソフトウェアをダウンロードして、
プログラミングを体験することができます。

プログラミング言語の選択条件と推奨言語

単純にプログラミングを学びたいなら、正直な話、どんなプログラミング言語でもいいんですが、
基本的には、
1)安定している。(プログラムが正しいのに誤動作するのは最悪)
2)進化している。(バグの修正やセキュリティ問題が早く解決される)

言語を選ぶべきです。

わたしの推奨言語は、

  • プログラミング言語を学習したい。最先端技術を活用したい。→ Python
  • WindowsでGUIを活用したプログラミングをしたい、→ C#またはVB

人気のプログラミング言語は?

オープンソースなら開発者が多いこと、企業が作っている場合も、開発パワー(投資)が大きいところ。
ということは、人気がある(開発者が多分多い)プログラミング言語がよいです。
TIOBEが発表している。プログラム言語のランキング(2020年2月)によると以下のようになっていて、
ベスト10は、ほとんど変わっていません。

TIOBE 2021年2月のプログラミング言語ランキング

主なプログラミング言語の特徴と参考書

主な言語の特徴とわたしが個人的におすすめする参考書を示します。
プログラミング言語の学習では、参考書を手元においてプログラムを作ってみることをお勧めします。
Googleで検索すればいいじゃない?という疑問もあると思いますが、そもそも検索するキーワードがわからないことがあります。
そんな時は、参考書をパラパラとめくったり、索引をチェックすることで、早く回答にたどり着くことができます。
ここでお金をケチってはいけません。

1)C

Linuxでは、gccが有名です。テキストエディタでプログラムを書き、gccでコンパイル(翻訳)すると実行形式のオブジェクト(プログラム)を出力します。そのプログラムを呼び出すことで、プログラムを実行することができます。また、組み込み機器の開発などプロにも使われています。
オブジェクトを出力することで、実行時のメモリが小さい、実行速度が早いなどの特徴があります。
また、ポインタの概念が特徴的で*ptrのような間接参照ができます。
ポインタの概念は難しいですが、実際のメモリ上でどんな数値があるか、イメージできるようにしましょう。
ポインタが実空間になかった場合は、実行時にアドレス指定の例外が発生します。
gcc以外にも様々なコンパイラ(翻訳装置)があり、動作するデバイスにあわせた環境が必要です。

Cは、古典的な手続き型言語であり、基本的な言語は比較的単純です。ループ処理や簡単な計算などアルゴリズムを勉強するにはよい言語ですが、コンパイルが面倒なことや、ポインタを誤って使うとプログラムエラーになってしまうなど、初心者には不親切とも言えます。
Linuxや組み込み機器の制御プログラムの開発では必要な言語ですが、Windowsを使う初心者では、必ずしも勉強する必要はないと思います。

推奨書籍:
C/C++逆引き大全 560の極意 増田智明著
C言語による標準アルゴリズム事典 奥村晴彦著

2)Java

Javaはオブジェクト指向言語としてサン・マイクロシステムズ社が1996年に開発した言語です。
言語としての特徴は、オブジェクト指向、マルチスレッド、ガベージコレクション、コンポーネント指向、分散コンピューティングなどマルチプラットフォームで当時の最先端の技術をてんこ盛りにした言語です。基本的にクラスやメソッドなどオブジェクト指向のための手続きが必要であり、ソースコードは長くなりますが、手続きを定義することで完全性が担保され、予想外の動作は少ないため、業務システムなどの開発で利用されています。また、Eclipseなどの統合開発環境を利用することで、効率的に作業を進めることができます。クラスやクラス継承などオブジェクト指向による設計技術が必要で、これらの設計ができないひとが開発すると超巨大で冗長なプログラムになるリスクがあります。また、ガベージコレクション(使われなくなったメモリの開放処理)の発生タイミングがわかりずらく、大規模なプロジェクトでシビアなリアルタイム性が必要な場合、数秒間のシステム停止など問題が顕著化する可能性があります。

Javaはとてもメジャーな言語で、プロを目指す人は勉強すれば、役立つと思います。ただし、オブジェクト指向などの設計は、かなり難易度が高く、プロ同士でも意見が衝突するケースもあります。Cと比較するとメモリの獲得や開放は隠蔽され、これらのコスト(実行性能やメモリ資源)がわかりずらい欠点もあります。プログラム初心者は、必ずしも学習の必要はないかと思います。

推奨書籍:
スッキリわかるJava入門 中山清喬ほか著
最新Java逆引き大全550の極意 高橋和也ほか著

3)Python

Pythonは、インタープリタ型(コンパイル不要)のプログラミング言語です。インデント(字下げ)によって実行単位を規定(オフサイドルール)するため、可読性を高め、ソースコードの量を少なくすることができます。オブジェクト指向の言語ですが、クラスを定義しなくとも動作させることが可能です。
Python2とPython3があり、これらの仕様が異なるためこれからPythonを使う場合は、必ず、「Python3」を使うべきです。
また、クローリングのためのhtml解析ライブラリ深層学習のAI関連ライブラリなどが充実しており、わたしの一番よく使っている、おすすめの言語です。

Googleのアカウントをもっていれば、「Colaboratory」というブラウザからGoogleクラウドを利用してPythonを記述して実行できるサービスを無料で使用できます。

Pythonは初心者から研究者まで幅広いひとに使われており、ライブラリも充実し、実用性も非常に高いため、勉強すべき言語だと思います。

推奨書籍:
入門 Python 3 第2版 Bill Lubanovic (著), 鈴木 駿 (監修), 長尾 高弘 (翻訳)
Pythonプログラミング逆引き大全 400の極意 金城俊哉(著)

5)C#、6)Visual Basic

マイクロソフトのVisual Studioファミリーに含まれている。統合開発環境、高機能エディタやデバッガが商用利用でなければ無償で使えます。
Visual Studioは、非常に強力な統合開発環境で、Windowsアプリケーション(GUI)を開発することができます。

推奨書籍:
Visual C# 2019逆引き大全 500の極意 増田智明(著)
Visual Basic 2015逆引き大全 520の極意 増田智明(著)

番外)VBA,SQL,PHP

また、ExcelではVBAと呼ばれるマクロ機能があり、Excelセルなどの自動化ができます。

推奨書籍:
Excel マクロ&VBA [実践ビジネス入門講座]【完全版】 国本温子(著)

これ以外のプログラミング言語としては、データベースアクセスのSQL、データベースの検索結果をWebで活用するPHPは知っていて損はないでしょう。これまで紹介したプログラミング言語についての解説は、今後、解説したいと思います。

プログラミング言語は何を勉強すべき(学ぶべき)か?” に対して3件のコメントがあります。

  1. bursa escort より:

    Hi there, I desire to subscribe for this weblog to obtain most up-to-date updates, therefore where can i do it please help out. Isabel Jeth Hodosh

    1. nitc-manager より:

      Update information is not disclosed. I’m sorry.

  2. I think it is a fluent sharing, I will recommend your site to my friends Noami Lewiss Kalli

コメントは受け付けていません。