分かりやすい、丁寧な記事を心がけています。
プログラミング学習の画像

プログラミング言語の特性を理解する!!主要プログラミング言語5選!!

  • 2019年1月14日
  • 開発
  • 1040view

プログラミング言語の特性理解って必要?

言語の画像です。

今回はプログラミング言語のそれぞれの特性について言及していきます。
システムエンジニアでも意外と特性を知らずに開発している人って多いんです!
かくいう私も、1年くらい前まで特に何も考えずに開発していました。笑

こんなことを言うと、
「開発者なのに特性を知らないなんてダメエンジニアじゃん!」
とおっしゃられる方も多そうですので簡単に説明しておきます。

特性を理解していなくても開発者にはなれる。

いきなり衝撃的なことを言っている感じがしますが、これは事実です。
理解していなくても私は開発者として仕事を出来ていました。

特性を知らない開発者が多い理由はPG(プログラマ)として、言われた要件での開発をする場面が多いからです。
先にPM(プロジェクトマネージャ)等が開発言語や FW(フレームワーク)の選定をするので、ただ開発するだけなら、あまり特性とか考える必要が無いんです。

端的に言うと、特性を考える必要があるのはPMくらいで、単純にPGとして生活するならあまり問題にならないんです。

ただし、「ゆくゆくはPMになりたい!」「0 → 1の開発をしたい!」という方は言語選定のために特性を理解しておくべきです。
また、これから学習しようと思っている方も、自分が作りたいシステムに向いている言語等を考えることが大切です。学習を始める際の指標になるので理解しておきましょう!

半年前、PMになって死に物狂いで学習した私のようにならないで下さい。笑

プログラミング言語の特性は理解しておくと良い。

AI画像です。

さて、特性を理解すべき理由は上記しましたが、「向き・不向き」が言語によってあるからです。

ちゃんと特性を理解してから開発をし始めないと、たまたま上手くハマった時は良いですが、ダメだった時に後悔する可能性があります。

まずは、きちんとそれぞれの言語の良さを明確に理解しておくことが大切です。

そうすれば単純に開発をする時でも、
「この言語の強みは〇〇だから、コードの書き方は△△にしておこう」
などというように、最適解を考えて開発が出来るようになります。

PMとしてや0→1の開発時にも、
「このシステムは□□だから、〇〇の強みがある、この言語にしよう」
など、自信を持って言語選定が出来るようになります。

主要な5言語の特性

HelloWorldの画像です。

さて、それでは大きく分けて、
「Java、C#、PHP、Ruby、Python」
の5つの言語について特性を見て行きましょう!

Java

さて、まず1つ目はJavaです。
エンジニアで無くても名前くらいは聞いたことがある方が多いかと思います。
Google三大言語の1つで、WebアプリやAndroidアプリなどで活用されている言語です。

Javaの長所

  1. 汎用性が高く、特定のOSやマイクロプロセッサに依存しない。
  2. 「オブジェクト指向」である。
  3. 実行速度の速さと安定性。

大きく分けて私が考える長所は上の3つ。それぞれ、少しだけ説明を付け加えます。

①「JVM(Java仮想マシン)」で動作するため、PCのOSを上げても 、特に手を加えることなく作成したプログラムを動かすことができます。

②「オブジェクト指向」を簡単に説明すると、一つ一つの部品ごとにプログラムを書くようなイメージです。つまり、新たに機能を付け加えようと思った時に、以前使った部品を使って付け加えることが出来るという拡張性の高さがあります。

③これはJavaがコンパイラ型の言語であるためです。
コンパイラ型言語とは、プログラム完成後に処理形式の変換を行い、変換したプログラムを実行して動かすタイプの言語だと思ってください。つまり、処理形式の変換をしながら実行していく言語に比べて、先に変換を行なっているので必然的に実行速度は早くなり、安定します。

Javaの短所

  1. 習得難易度が高い。
  2. 小さなプログラムでは余計なコストがかかる。

大きく分けて私が考える短所は上の2つ。こちらも、少しだけ説明を付け加えます。

①初学者には非常にとっつきにくい言語です。標準のライブラリが豊富なため、実現可能な要件は多いですが、その分学習範囲も広くなります。また、オブジェクト化指向での開発のため、部品化を意識して、拡張性の高い設計をする事が重要です。この部品化を意識して設計する事は影響の範囲等も考えながら開発しなければならないため、非常に難しくなります。

②これもオブジェクト指向が故の短所ですが、再利用したり拡張したりをする必要のない小さなプログラムを組む上では、逆に余計なコストがかかることになります。システムの規模等も考えないと痛い目に合うことになります。

Javaを使用した代表的なシステム
  • Twitter
  • Evernote
  • MINECRAFT

C#

2つ目はC#です。
これもとても有名な言語ですね。
こちらもGoogle三大言語の1つで、アプリケーション作成に活用されている言語です。

C#の長所

  1. C#だけで数種類のプラットフォーム向けのアプリが作成可能。
  2. 「オブジェクト指向」である。
  3. 安定性/信頼性が高い。

大きく分けて私が考える長所は上の3つ。これも、少しだけ説明を付け加えます。

①C#はXamarin(ザマリン)に対応したことで、Windowsアプリだけでなく、iOSアプリやAndroidアプリの開発も行うことができます。一言語を覚えるだけで網羅的に複数のアプリを作ることができるのは大きな利点です。

②これはJava同様の利点です。

③元々C#はC/C++言語およびJavaから文法を踏襲して機能を高めた言語です。信頼性も高く、かつ安定した稼働を行うことができます。

C#の短所

  1. 開発環境の使用感に偏りがある。
  2. 小さなプログラムでは余計なコストがかかる。

大きく分けて私が考える短所は上の2つ。少しだけ説明を付け加えます。

①一般的に、C#での開発環境として使われるのは「Visual Studio」ですが、元々Windowsが作った言語のため、この開発環境がWindowsでしか使用できませんでした。最近ではMacやLinuxでの開発も行うことができるようになりましたが、如何せん Windows特化型の開発環境といえます。

②これもJavaと同様の短所です。

C#を使用したシステム
  • マイクロソフトの公式サイト
  • Skypeの公式サイト
  • 検索エンジンの「Bing」

PHP

3つ目はPHPを見ていきます。これも非常に有名な言語ですね。
初学者の多くが初めて触れる言語として多いのがPHPです。

PHPの長所

  1. 未経験の方でも使い始めやすい。
  2. 動作確認が容易。
  3. 有名なCMSで利用されている。

PHPについて私が考える長所は上の3つ。これも、少しだけ説明を付け加えます。

①XAMPPなどのツールがあり、比較的簡単にPHPの学習はしやすいです。Java等のコンパイル型言語と比べてPHPはウェブ開発に特化しているスプリクト型言語なのでシンプルな構文で書くことができます。また、純粋にPHPは開発言語として使われているケースが多いので、比較的検索にヒットしやすいという理由もあります。

②上記しましたが、スクリプト型言語のため動作確認をしながらの開発ができるという利点もあります。正しく動作するかどうかを1つずつ確認しながら進めることができます。これも未経験の方でも開発しやすい理由の一つです。

③WordPressなどの有名なCMSで利用されているため、学習すればWordPressのカスタマイズ等もできるようになります。実際に作りを見ると初学者にとっては複雑な作りをしているような感じがすると思いますが、ある程度学習すると、そこまで難しくは無いです。ゆくゆくはブログやサイト等でエラーが出た時などに自分で修正することができるようになります。

PHPの短所

  1. 自由が効きすぎる
  2. Webアプリしか作れない

私が考える短所は上の2つ。こちらも説明を付け加えます。

①自由が効くというと、「凄く良いじゃん!!」と考える方もいると思いますが、これが意外と厄介なんです。何故かというと、開発は基本的に一人で行われるものではありません(個人開発は別です)。その時に、あらゆる人が思い思いに好きな書き方をすると、コードが荒れます。結果的に、拡張性が低く、修正のしにくいシステムが出来上がることになってしまう可能性が高くなります。
(もちろん一般的には会社ごとに明確にコーディング規約等を設けている場合がほとんどですが…)

②これも大きな欠点です。androidアプリが作りたい!iOSのアプリが作りたい!と思っても、PHPでは開発することが出来ません。もしあなたがやりたいことが、ゆくゆくはこれらのアプリに派生していくというならPHPではなく別の言語を使用する必要があります。学習するときにも一つの指標として考えておきましょう!

PHPを使用したシステム
  • WordPress
  • facebook
  • Yahoo!

Ruby

4つ目はRubyを見ていきます。これも初学者には非常に有名な言語ですね。

Rubyの長所

  1. 「オブジェクト指向」である。
  2. 動作確認が容易。
  3. 汎用性、構文に自由度がある。

Rubyの長所は大きくあげると上の3つ。これも説明を付け加えますね。

①これはJavaやC#と同様。

②③これもPHPと同様。

つまり、総じて言えることは、JavaやPHPの良いとこどりをしたのがRubyという言語です。

オブジェクト指向の良さを活かしつつ、コンパイル不要で動作確認ができる。
さらに自由度があって初学者でもコードが書きやすいという。
これだけ聞くと本当に良い言語です!

Rubyの短所

  1. 自由度が高すぎる。
  2. 実行速度が遅い。

短所はこの2つ。説明を入れます。

①はPHPと同様。

②はスクリプト型言語ならではで、実行速度がどうしても遅くなります。この点についてはPHPでも同様と言えます。
かの有名なTwitterはもともとRubyで作られていました。しかし、処理速度の問題でリアルタイム運用に耐えられなくなり、Javaに言語を変更しています。小規模システムであれば十分問題ありませんが、大規模システムとなるとRubyでの運用に耐えられなくなることも想定する必要があります。

システムの規模を考えた上でRubyを選択するのであれば、この言語ほど汎用性の高い言語は無いと言えます。

Rubyを使用したシステム
  • クックパッド
  • グノシー
  • クラウドワークス

Python

さて、ラストはPythonです!開発者なら知っている人も多いですかね。
完全初学者の方だとあまり聞いたことの無い言語かもしれません。

Pythonの長所

  1. 文法がシンプルかつ読みやすい。
  2. 専門的なライブラリが豊富にある。
  3. データ解析、機械学習に強い。

Rubyの長所はこの3つ。これも説明を入れます。

①これはPHPやRuby等と同様と言えます。

②これはPythonならではの強みです。他の言語にもライブラリは十分にありますが、専門的なライブラリが豊富にあるため、開発効率が格段に上がります。

ライブラリとは

汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。 ライブラリと呼ぶ時は、それ単体ではプログラムとして作動できない、つまり実行ファイルではない場合がある。 ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言える。

Wikipediaより引用

③データ解析等も上記したライブラリが関係してきます。さらには、現在機械学習といえばPythonとなっています。AIなどの機械学習系のシステムが構築したい!という場合には必然的にPythonを学習する必要があります。この辺りも、以下のようなライブラリがあり、これを活用することで比較的容易に開発を進められます。

  • 数値計算用ライブラリ → NumPy
  • 数式処理システム → SageMath
  • 記号計算ライブラリ → SymPy

Pythonの短所

  1. 日本語で解説しているサイトが少ない。
  2. 引数にSelfを入れる必要がある。

短所はこの2つでしょうか。説明を入れておきます。

①そもそも、欧米に比べると日本ではPython自体が広く普及している訳では無いため、技術的に困った時に調べてもなかなか目的の回答に行き着くことが難しいです。
英語のサイトでも問題なく読めるのであれば大丈夫ですが、そうで無い場合余計な時間がかかる可能性があることは視野に入れておく必要があります。

②これはPythonの制約なのですが、正直他の言語を知っている場合、非常に面倒臭いです。笑
他にもインデントが強制されるなどの、Pythonならではの制約があるので、慣れるまでは非常に書き辛いです。

Pythonを使用したシステム
  • Google
  • Facebook
  • Instagram
広告

ということで、5つの言語について特性を長所・短所に分けて説明しました。

言語選定で大切なことは、

  • システム要件に照らし合わせて問題ないか。

この一点につきます。
その上で、言語の特性を鑑みて、より良い言語はどれかを考えることが大切です。

日頃から色々な言語に触れて、特徴を理解しておくと良いですね!!

もちろん独学する方法もありますし、スクールに入ってより深いところまで学習する方法もあります。
現在開発者であれば、簡単に触れておくだけでも言語の概要は理解できると思いますが、初学者は言語を選定して、まずは1言語しっかり学習することから入る方が効率が良いと思います。

独学サイトは以下の記事にまとめてありますので、よろしければご覧ください。

関連記事

目次1 プログラミング学習の手引き2 プログラミング言語の選定2.1 フロントエンド言語2.2 サーバサイド言語2.3 データベース言語3 プログラミングする上での開発環境4 プログラ[…]

プログラミングをしている男性の画像です

:初学者におすすめの学習スクール

TECH CAMP
WebCampOnline
CodeCamp

以上。yukilaboでした!!

プログラミング学習の画像
興味を持ったら是非!!
広告