Ruby、PHP、Python、JavaScriptの特徴とコードを比較してみた(言語選定と言語チェンジのための参考資料)

# この記事の概要
代表的なプログラミング言語```Ruby、PHP、Python```といったWeb開発などで使われる
人気のバックエンドの言語をそれぞれ比較した記事です。

後フロントエンド言語の```JavaScript```も比較していきます。

初学者でどの言語をやればいいのかわからない時、
言語を変える時の参考になると幸いです。

# Webの仕組み
クライアントとサーバーの関係とリクエストとレスポンスの関係がわかれば
今回は大丈夫です。

https://qiita.com/Hashimoto-Noriaki/items/c5c9eb26565b01150556

***サーバー側で処理をするのがRuby、PHP、Python***で
***クライアントのようなブラウザを操作するのがJavaScript***です。


## Ruby
Rubyは初学者向きのプログラミング言語で、
プログラミングスクールでよく使われる言語です。
***Webアプリケーションの開発で使用されるサーバーサイド言語***です。

フレームワークの代表的なのが***Rubyon rails***です。
他にもSinatra、HANAMIなどがありますが、Railsが今は1番使われています。

#### Rubyで開発された代表的なサービス
1. Twitter
2. 食べログ
3. 価格.com
4. Hulu
5. クックパッド 

## PHP
PHPは初心者向きのサーバーサイドのプログラミング言語です。
***Webアプリケーションの開発で使用されるサーバーサイド言語***です。

フレームワークでは***Laravel***が1番人気で他にSymfony、CakePHPなどがあります。


#### PHPで開発された代表的なサービス
1. Facebook
2. Slack
3. ぐるなび
4. Wikipedia
5. WordPress


## Pythonの特徴
特徴は以下の４点です。

1. Pythonはコードは比較的に簡単です。
2. ***機械学習（人工知能）、WEBアプリ、データ解析、分析ツールなどの開発に強い言語***です。
3. ***将来性のある言語ランキングが1位と2位の常連***です。
4. ***Django***、Flask、bottleなどのフレームワークがありますが、***Djangoが1番人気***です。


### Pythonで開発された代表的なサービス
1. Youtube
2. Instagram
3. Dropbox
4. Evernote
5. Google

## pythonの仕事の注意点
エンジニアの人材派遣のエージェントの方とお話しをした時に、
***Pythonを扱うお仕事は経験が浅いエンジニアには難易度が高い***傾向みたいです。
***未経験者や経験が浅いエンジニアはRubyやPHPなどで現場経験を積んで***から
***pythonで開発をした方がいいみたい***です。


## JavaScript
特徴は以下の４点です。
1.***JavaScriptは世の中のWebサービスでは95%以上採用***されています。
2.***Ruby、PHP、Pythonのようなサーバーサイド言語ではなくブラウザのような見た目の動きのあるプログラミング言語***です。
3.***将来性のある言語ランキングが1位と2位の常連***です。
4.***React***、***Vue.js***、***Angular***などのフレームワークがあります。




# コードを比較

### 簡単な文字列を出力

⚫︎***Ruby***
```rb
puts "Hello"
```

⚫︎ ***PHP***
```php
<?php//開始タグ
echo "Hello";//
?>　　　　
```
***開始タグと終了タグ***があり形は　```<?php　　~ ?>```です。
終了タグは書いても書かなくても大丈夫ですが、
開始タグ以降のコードはPHPの扱いになります。


⚫︎***Python***
```py
print ("Hello")
```

⚫︎***JavaScript***
```js
console.log("Hello");
```

### コメントの書き方

⚫︎***Ruby***

```rb
puts "Hello" #コメント
```

⚫︎***PHP***

```php
<?php  //コメント1
echo "Hello"; //コメント2
?>
```

⚫︎***Python***
```py
#コメント
print ("Hello")
#コメント
```

⚫︎***JavaScript***

```js
//コメント
console.log("Hello");
```

### 変数

⚫︎***Ruby***

```rb
number = 100
puts number
```
***100と出力***されます。

```rb
language= "Ruby"
puts language
```
***Rubyと出力***されます。

⚫︎***PHP***
PHPの変数では```変数の先頭に$をつけます。```
```php
<?php
$tmp = 100;
echo $tmp;
?>
```
***100と出力***されます。

```php
<?php
$language = "PHP";
echo $language;
?>
```
***PHPと出力***されます。

⚫︎***Python***

```py
tmp = 100
print(tmp)
```
***100と出力***されます。

```py
language = "Python"
print (language)
```
***Pythonと出力***されます。


⚫︎***JavaScript***

```js
const number = 100;

console.log(number);
```
***100と出力***されます。

```js
const language = "JavaScript";

console.log(language);
```
***JavaScriptと出力***されます。


### 条件分岐

⚫︎***Ruby***

```rb
score  = 100

if(score >= 70) 
    #70点以上
    puts "よくできました"
elsif (score >= 50) 
    #50~69点
     puts "残念"
 else 
    #49点以下
     puts "再テスト"
end
```
ここではscoreが100点なので、***よくできましたと出力***されます。


⚫︎***PHP***

```php
<?php
// Your code here!
$score = 100;

if($score >= 70) {
    //70点以上
    echo "よくできました";
} elseif ($score >= 50) {
    //50~69点
    echo "残念";
} else {
    //49点以下
    echo "再テスト";
}
?>
```
ここではscoreが100点なので、***よくできましたと出力***されます。


⚫︎***Python***

```py
score = 100;

if score >= 70:
    #70点以上
    print ("よくできました")
elif score >= 50:
    #50~69点
    print ("残念")
else:
    #49点以下
    print ("再テスト")
```
ここではscoreが100点なので、***よくできましたと出力***されます。


⚫︎***JavaScript***

```js
const score  = 100;

if(score >= 70) {
    //70点以上
    console.log ("よくできました");
} else if (score >= 50) {
    //50~69点
     console.log("残念");
} else {
    //49点以下
     console.log("再テスト");
}
```
ここではscoreが100点なので、***よくできましたと出力***されます。

### 配列

⚫︎***Ruby***
1. ***配列***で表すと

```rb
animal = ["犬","猫","猿"];
 puts animal[0]
```
2.***連想配列***で表すと

```rb
animal = {"ani1" =>"犬","ani2"=>"猫","ani3"=>"猿"}
puts  animal["ani1"]
```
これで***犬と出力***されます。

⚫︎***PHP***

1. ***配列***で表すと
```php
<?php
$animal = ["犬","猫","猿"];
echo $animal[0]
?>
```
これで***犬と出力***されます。

2.***連想配列***で表すと

```php
<?php
$animal = ["ani1" =>"犬","ani2"=>"猫","ani3"=>"猿"];
echo $animal["ani1"];
?>
```
これで***犬と出力***されます。


⚫︎***python***

1.***配列***で表すと

```py
animal = ["犬","猫","猿"];
print (animal[0])
```
これで***犬と出力***されます。

2.***連想配列***で表すと
```py
animal = {"ani1":"犬","ani2":"猫","ani3":"猿"}
print (animal["ani1"])
```
これで***犬と出力***されます。

⚫︎***JavaScript***
1. ***配列***で表すと

```js
const animal = ["犬","猫","猿"];
console.log (animal[0]);
```
これで***犬と出力***されます。

2.***連想配列***で表すと

```js
let animal = {ani1:"犬",ani2:"猫",ani3:"猿"};
console.log(animal.ani1);
```
または
```js
let animal = {ani1:"犬",ani2:"猫",ani3:"猿"};
console.log(animal['ani1']);
```
これで***犬と出力***されます。


# 環境構築をしなくてもコードが書ける
こちらのサイトなら色々な言語を環境構築無しで書けます。

https://paiza.io/ja




### 参考動画
せお丸さんというYoutuberの方がもっと深いところまで動画で解説しているので
ぜひ参考にしてください。

⚫︎Ruby
https://www.youtube.com/watch?v=8NI57SrDiVw

⚫︎PHP
https://www.youtube.com/watch?v=J_pASVQXElA

⚫︎Python
https://www.youtube.com/watch?v=CPpRu_AJrW8


⚫︎JavaScript
JavaScriptはせお丸さんのチャンネルではなさそうでした。汗


### 参考資料
https://paiza.hatenablog.com/entry/2019/12/27/Python%E3%83%BBRuby%E3%83%BBPHP%E3%81%AE%E4%BA%BA%E6%B0%97Web%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E6%AF%94%E8%BC%83%EF%BC%86%E5%AD%A6%E7%BF%92%E3%82%B5%E3%82%A4%E3%83%88

# 最後に
この記事は簡単なコードのみでしたが、言語の比較はできたと思います。
コードを比較してもらえれば言語チェンジは難易度は高くはないみたいです。
先輩エンジニアからのアドバイスで***１つ言語を極めれば言語チェンジは簡単***みたいです。
***実際エンジニアがずっと同じ言語を使い続けることはない***みたいです。
***なので言語をスライドして考えると新しい言語は習得しやすい***と思います。