読者です 読者をやめる 読者になる 読者になる

望月いちろうのREADME.md

書き溜めておいた技術記事や旅行記のバックアップです。

プログラミング未経験者が最初に始めるべきプログラミング言語ランキング

最近はプログラミングを始めたいという方が増えているように思います。

しかし、1つ問題があります。それはプログラミング言語が非常に多くの種類が存在するということです。

プログラミングについてほとんど知識のない状態で、どの言語から始めたらいいのか、全く見当がつかない人も多いと思います。

そこで今回はプログラミング未経験者向けに最初に始めるべきプログラミング言語ランキングを製作しました。

熟達者の方からは突っ込みどころがあるかもしれませんが、ご勘弁下さい

最新版・プログラミング言語ランキング

  1. Ruby
  2. Python
  3. JavaScript
  4. PHP
  5. Java
  6. C#
  7. Swift
  8. Go
  9. VB (VB.NET)
  10. C

1.Ruby

オブジェクト指向スクリプト言語 Ruby

僕が一番にオススメするプログラミング言語はRubyです。

日本生まれのプログラミング言語

Rubyは日本人の まつもとゆきひろ さんが開発した日本生まれのプログラミング言語です。ほかの多くのプログラミング言語はアメリカを中心とした海外で開発されている中で、日本生まれの言語が世界中で使用されているのは、本当に嬉しいことですよね。

twitter.com

楽しくプログラミングができる

Rubyの特徴・コンセプトは「楽しくプログラミング」が出来ること、少なからぬ人がプログラミングで挫折しているようですが、やはりある程度形になるものが作れるようになるまでは単調で退屈に感じてしまうことが多いのでしょう。

以下はWikipediaからの引用です。

開発者のまつもとゆきひろは、「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (enjoy programming)」と述べている。

つまり、Rubyを使えば、他のプログラミング言語に比べて挫折率を低くする効果があるのかもしれませんね。

たとえば一昔前はプログラミング初心者に一番最初に教えるべきとされていたC言語があります。(これは最後の方に再び紹介します)

この言語で

Hello World

という文字を表示するのに、どの程度の手間がかかるか見てみましょう

#include <stdio.h>

   int main(int argc, char** argv){
   print("Hello World");
   return 0;
}

初心者の方は、#include? stdioって何? argc ? ??return 0??

と不思議に思うこと必至でしょう。これについて詳しく説明しようとするとC言語やOSの仕組みについて、結構面倒で長い説明をする必要があります。

ここで引っかかってしまうと、初心者にありがちな挫折のタネになってしまうわけですね。

しかしRubyではたった一行です

print "Hello World"

直感的ですね! まるで英語そのもののようです。

この簡潔さがRubyの一番の魅力です。

多くのITベンチャーに採用されている

楽しくプログラミングが出来るだけではありません。Rubyはその生産性の高さが評価され、多くの有名IT企業に採用されています。

国内
  • Wantedly - 国内最大のベンチャー向け求人サービス
  • クックパッド - 国内最大のレシピ投稿サイト
  • クラウドワークス - 国内最大級のクラウドソーシングサイト
  • freee - 国内最大級のクラウド会計サービス
海外
  • Airbnb - 世界最大の民泊プラットホーム
  • GitHub - 世界最大のソースコード管理サービス
  • Square - Twitterの創業者がはじめたFintechサービス

今はScalaに置き換えられてしまいましたが、

かつてはTwitterもRuby on Railsを利用していました。

これだけの実績がある言語ですので安心して利用できますね。

Rubyを始めるには?

Rubyを始めるにはPCが1台あれば大丈夫です。お金はいらないかって?

オンライン上には無料で利用できる学習サービスがあります。

最初はドットインストールの動画教材を利用するといいでしょう。

http://dotinstall.com/lessons/basic_ruby_v3

そして環境構築は面倒なのでとりあえず以下のサービスを使えば大丈夫だとおもいます。

Web-based online coding environment | paiza.IO

2.Python

www.python.org

次にオススメなのはPythonです。Pythonは英語でガラガラヘビと言う意味です。

極めてシンプルなプログラミング言語

Pythonは極めてシンプルなプログラミング言語です。言語の仕様は必要最低限です。

たとえばHello Worldを表示するにはたった一文で済みます。

print("Hello World")

しかし、その一方で非常に多くのことができる言語でもあります。それは簡単な計算から複雑な数値計算、そして最近流行のディープラーニングのような機械学習、さらにいえば人工知能の開発にも使われる言語なのです。

読みやすく可読性が高い

Pythonの特徴は、たとえ、他人が書いたコードであっても非常に読みやすいことです。これはPythonの設計段階でできるだけコードのルールに制約を課すことで成し遂げられたことです。

特にPythonではインデント、つまり、ソースコードのスペースの幅が大きな意味をもつことが特徴的です。

たとえば以下のPythonのコードを見てみましょう

def test():
print("Hello World")

test()

しかしこれは動作しません

なぜなら、Pythonでは関数の中身は必ず以下のように字下げをしなければいけないからです.

def test():
     print("Hello World")

test()

一方Rubyではこのように関数の中身を同じ列に置いても動作します。

def test()

print "Hello World"

end



test()

このような構文の厳密さと単純さがPythonの特徴です。

ほとんどすべてのことができる

Pythonのエコシステムの中には本当にいろいろな機能が備わっています。

その中には最近話題のディープラーニング用のフレームワークであるTensorflowやChainerも含まれます。

つまり、Pythonをマスターすれば人工知能を操ることも可能なのです!(これは言い過ぎか)

Pythonを採用している企業

Pythonは非常に優れた言語ですので、特に海外のIT企業で重点的に利用されていることが多いです。

  • Google - 特に初期の検索エンジンはPythonで動作していた
  • Dropbox - ほぼ全面的にPythonを利用
  • Pinterest
  • YouTube

Pythonを始めるには?

オンライン上には無料で利用できる学習サービスがあります。

最初はドットインストールの動画教材を利用するといいでしょう。

http://dotinstall.com/lessons/basic_ruby_v3

環境構築は面倒なので以下のサービスを利用することをおすすめします。

https://paiza.io

3.JavaScript

JavaScriptはWeb開発を行うならば必ず利用しなければいけない言語です。

たとえば、ブラウザで何か動きを表現するには、通常はJavaScriptを使用します。

FacebookやTwitterはJavaScriptを駆使して作られたWebサービスの一つです。(サーバーサイドは別の言語で実装)

最近ではブラウザに限らず、サーバーサイドやスマートフォン上で動作するようなフレームワークまで登場しています。

つまり、JavaScriptをマスターすれば、ほとんどすべてのプラットホーム上での開発が可能になるのですね。

始めるのは簡単

JavaScriptの基本的な文法は非常にシンプルです。

しかし、1つ問題があり、JavaScriptの仕様が統一されていない問題があります。

つまり、古いバージョンと新しいバージョンが混在していて、互換性が取れていないということです。

そのため、初学者が一定以上のレベルに上がろうとするには、少し困難な言語であるのも事実です。

非常に多彩なライブラリ・フレームワークの存在

JavaScriptには非常に多くのライブラリが存在しています。

全容を把握することは非常に難しいのですが、特に初学者向けのブラウザ用フレームワークとして

jQueryを紹介しておきます。

jQueryは非常にシンプルな記法で、さまざまなアニメーションや効果を実装できるため、人気のあるフレームワークです。

もう少し、上級者向けのフレームワークとして、ReactやAngularJSもあります。こちらはやや学習コストは高いですが、非常に保守性の高いブラウザアプリケーションを記述することができます。

ほかに中級者向けのRiot.jsなどもありますが、とりあえず、生のJavaScriptがある程度できるようになってから手をだすといいでしょう。

4.PHP

PHP: Hypertext Preprocessor

PHPは特にWebアプリケーションに特化したプログラミング言語です。

いや、厳密にはプログラミング言語と呼ぶのは不適切かもしれません。なにしろPHPの開発者自身がプログラミング言語ではなく、ツールに過ぎないといっているのですから。

実際PHPはたまに見せる不可解な挙動と、作者自身が自嘲する醜い言語仕様により、しばしば嫌悪と嘲笑の対象となります。

しかし、PHPを侮るべきではありません。実際、PHPは世界で最も影響力のあるSNSであるFacebookや、最も人気のあるブログCMSであるWordPress、インターネット百科事典のWikipediaなどで利用され、大いな実績を上げているからです。

ある意味、言語仕様の美しさを犠牲にして、徹底的に実用に徹することによって成功を収めたともいえる言語です。

当然日本でもWeb業界で広く採用されており、それゆえに非常に需要のある言語であります。

非常に習得が用意

PHPの一番の特徴は初学者であっても非常に簡単に習得できるということです。

PHPは極めてシンプルな文法と柔軟な、あるいはルーズな言語仕様によって、初心者がなんとなく書いても、とりあえず動くものを作ることができます。

これは後々になってコードを改修する際に問題になることがあり、ある意味欠点とも言える特徴ですが、実際にビジネスの観点から見ると、保守性など二の次にして、とにかく早くリリースが求められることがあります。

このような場合にPHPがよく用いられるのです。

HTMLファイルに埋め込むことができる

PHPが普及した一番の理由はHTMLファイルにコードをそのまま埋め込むことができることです。

<?php $name = "hoge" ?>

<p>
<?php echo $name; ?>
</p>

これは実際には

<p>
hoge
</p>

と出力されます。

とても直感的ですね。

初心者であってもなんとなくわかりそうな構造です。

採用実績

  • Facebook
  • Wikipedia
  • WordPress
  • Slack
  • WordPress

5.Java

java.com: あなたとJava

Javaはオブジェクト志向言語としては最も普及している言語です。 その特徴は、仮想マシン上で動作するということで、これによって、一度コードを書けば どのプラットフォーム上でも動作させることが可能です。

オブジェクト指向についてはここでは詳しくは説明しませんが、複雑な構造を簡単に扱うための仕組みです。

静的型付きコンパイル言語

新しい用語が出てきました。静的型付き・そしてコンパイルとはなんでしょうか。実はいままで紹介した4つの言語には無い性質です。

一番シンプルなJavaのプログラムを見てみます。

import java.lang.System;



class Test {

  public static void main(String args[]){

    String text = "Hello World";

    System.out.println(text);

  }

}

コンパイルとは?

コンパイルとは、ソースコードを実行する前処理が必要だということです。 試しにこのソースコードをコンパイルします。

javac test.java

すると同一ディレクトリ内にjar拡張子がついたファイルが作成されます。

このclass拡張子が付いたファイルが付属するのが実行ファイルです。

これを実際に実行します。

java Test

すると以下のように値が出力されます。

Hello World

このようにjavaのコードは実行前にコンパイルと呼ばれる処理が必要です。

静的型付き言語とは?

javaのファイルで変数を宣言するときに

String text = "Hello World";

と変数の前にStringと言う文字を配置する必要があります。

もしこれを取り去った場合は、

test.java:5: エラー: シンボルを見つけられません

    text = "Hello World";

    ^

  シンボル:   変数 text

  場所: クラス Test

といったエラーが発生します。

今度はIntと別の型を宣言することにしてみます。

するとまたエラーが発生します。

test.java:5: エラー: シンボルを見つけられません
    Int text = "Hello World"
;
    ^
  シンボル:   クラス Int
  場所: クラス Test
エラー1

これは数を表す型であり、文字である"Hello World"を中に入れるのには使えないからです。

つまり、変数を宣言する場合、その変数の中身である型を宣言して、かつその型は実際に中に入れる変数と合ったものでなければいけません。

これは非常に面倒に思えますが、実は大規模なプログラムを書くときにはバグをおこしにくく、とても安全で便利な機能です。実際に銀行を筆頭に、社会のインフラを支えるプログラムはJavaで動いていることが多いです。

仮装マシン上で動作する。

Javaは直接コンピュータ上で動いているわけではなく、あくまで仮想マシン上で動作しているプログラミング言語です。これによって、様々なプラットフォーム上で、互換性を気にすることなく動作させることができますが、一方で仮想マシンの起動に時間がかかることや、メモリの使用量が多くなるという欠点もあります。

6.C#

C# プログラミング ガイド

C#はJavaと同じオブジェクト指向の静的型付きコンパイル言語です。

using System;

class Test {
  public static void Main(){
     String text = "Hello World";
     Console.WriteLine(text);
  }
}

これはJavaにそっくりですし、その動作もほぼ同じです。

Windowsアプリを作成するのに向いている

C#はMicrosoft社が作成した言語です。つまり、Windows上で動くソフトを開発するときには、C#を使うのがベストなんですね。

ほかにもVisual BasicやC++で作成することも可能ですが、前者は機能の多い複雑なソフトを開発するには向いていませんし、後者は初心者には非常に難しい言語です。

つまり、Windows上で動くアプリを作成する場合はC#がベストなことが多いのですね。

お金を払えばAndroidやiPhoneアプリの製作もできる。

C#にはXamarinと呼ばれるフレームワークがあり、それを使えば、C#だけでAndroidとiPhoneで動くアプリを作成することも 可能です。

個人・趣味レベルの開発であれば無料ですが、商用利用をする場合は別途ライセンス契約を結ぶ必要があります。

本来であればAndroidにはJava、iPhoneにはSwiftと2つの言語を使い分ける必要があります。

これはたった1つの言語で済むというのは便利ですね。

7.Swift

developer.apple.com

Swiftは2014年にApple社が発表した新しい言語です。従来のObjective-Cは非常に難しい言語として知られており、Javaを利用しているAndroidに比べての開発者の少なさが問題になっていました。そこで登場したのがSwiftという新言語です。Swiftは他のモダンな言語から好影響を受けており、比較的初学者にもわかりやすい言語となっています。

モダンな型推論付き静的型付き言語

SwiftはJavaやC#と同じ静的型付き言語ですが、自動的に型をつけてくれる機能があります。この機能によって安全なプログラムをまるでPythonやRubyのようなスクリプト言語と同じように気軽に書くことができるのですね。

func test() -> Void{

   let str = "Hello World"

   print("\(str)")

}

test()

8.Go

The Go Programming Language

GoはGoogleが開発した型推論付きの静的型付け言語です。

その特徴は

シンプルかつ強力な型推論付き静的型付き言語

Go言語は2009年に登場した新しい言語にもかかわらず。その構造は非常にシンプルです。オブジェクト指向でも関数型でもありません。

また静的型付けではありますが、型推論の機能が充実しているため、スクリプト言語のような見た目をしています。

非常にシンプルでありながら、その処理能力は極めて優れています。数々のベンチマークから、Go言語は、最も大量の処理ができる言語の1つであると認められているのです。

最近ではJavaを利用しなければ開発ができなかったアンドロイド開発にもGo言語が利用できるようになりました。

もちろん、これは試験段階ですが、そのうちGo言語でも本格的にアンドロイド開発ができるようになるのですね。

9.VB(Visual Basic)

Visual Basic

Visual Basicは最も簡単なプログラミング言語の一つに数えられます。この言語の特徴はマイクロソフト社のオフィスシリーズ、特にエクセルと組み合わせて、さまざまな作業を自動化できることです。

特に企業に勤めておられて、日々エクセルを利用した作業に追われている型には全力でオススメできる言語です。

欠点をあげるならば、複雑な作業をするには不向きであることと、ウィンドウズ以外のOSではまず利用できないことです。

10.C

C言語はプログラミングの世界では最も基本的で、かつ重要な言語です。非常にシンプルかつ美しい文法を持ち、ソフトウェアの世界でも、最も重要な部分であるOSやプログラミング言語、Webサーバーなどを設計するのに利用されます。

PythonやRuby、PHPといったスクリプト言語も、その内部はC言語で構築されています。プログラミング言語でプログラミング言語を作るというのは、初心者の方にはおどろかれるかもしれませんが、そういうものなのです。

現代ではC言語だけで、何かを作るというのは滅多にはありませんが、その重要性ゆえに、プログラマーであれば、一度は触れておくべき言語でしょう。