日本語プログラミング言語「プロデル」をPythonと比較してみた

## 日本語プログラミング言語 プロデル
日本語でプログラミングができるプロデルについてちょっと調べてみました
公式はこちら↓
https://rdr.utopiat.net

## 環境構築
環境についてはVSCodeの「**Dev Container**」を使って構築しました
詳しくはここを参照↓

https://qiita.com/imasaaki/items/354720e23c095b74a406#%E3%83%97%E3%83%AD%E3%83%87%E3%83%AB%E7%AC%91

使用した**Dockerfile**と**devcontainer.json**ファイルは↓

```dockerfile:Dockerfile
FROM mono

RUN \
apt-get update && \
apt-get install unzip wget -y && \
rm -rf /var/lib/apt/lists/*

RUN wget -O produire.zip https://rdr.utopiat.net/files/mono//produire-mono-1.6.965.zip \
&& unzip 'produire.zip' -d /usr/bin

```

```json:devcontainer.json
{
    "name": "Produire",
    "build": {
        "dockerfile": "Dockerfile",
        "context": "..",
    },

    "settings": {
        "terminal.integrated.shell.linux": "/bin/bash",
    },

    "extensions": [
        "utopiat.produirelang"
    ],
}
```

## プロデルの文法について
分かりやすいようにプロデルとPythonの2つで説明するよ

#### hello world
```プロデル:プロデル
メッセージは、「こんにちは 世界」
メッセージを表示する
```
```Python:Python
message = "hello world"
print(message)
```

#### for文
```プロデル:プロデル
3回、値にカウントしながら繰り返す
    「[値]回目です」を表示する
繰り返し終わり
```
```Python:Python
for value in range(3):
    print(f"{value}回目です")
```

#### if文
```プロデル:プロデル
得点は、80
もし得点が70より大きいなら
    「合格」を表示する
そうでなければ
    「不合格」を表示する
もし終わり
```
```Python:Python
score = 80
if score > 70:
    print("合格")
else:
    print("不合格")
```

#### 配列など
```プロデル:プロデル
一覧1は、｛100, 200, 300｝
一覧2は、｛太郎=70, 次郎=30, 花子=90｝
一覧3は、｛｛太郎＝70、次郎＝30、花子＝90｝、｛太郎＝40、次郎＝60、花子＝80｝｝
「出力1：[一覧1（１）]」を表示する
「出力2：[一覧2（「太郎」）]」を表示する
「出力3：[一覧3（２）（「花子」）]」を表示する
```
```Python:Python
list1 = [100, 200, 300]
list2 = {"taro": 70, "jiro": 30, "hanako": 90}
list3 = [{"taro": 70, "jiro": 30, "hanako": 90}, {"taro": 40, "jiro": 60, "hanako": 80}]
print(f"出力1：{list1[0]}")
print(f"出力2：{list2['taro']}")
print(f"出力3：{list3[1]['hanako']}")
```
```出力結果:出力結果
出力1：100
出力2：70
出力3：80
```

## ちょっと遊んでみる
アメリカの人口について記載されているjsonファイルから、人口だけを取得して標準出力するものを作りました
下記のtest.rdrというファイルを作成して実行しただけです

```rdr:test.rdr
// getでリクエスト
人口データ文字列は、HTTPで「https://datausa.io/api/data?drilldowns=Nation&measures=Population」を取得したもの

// JSON形式の文字列から辞書を作成
人口データは、JSON形式:人口データ文字列を読み取る

人口データ（「data」）を要素へそれぞれ繰り返す
    「[要素（「Year」）]年の[要素（「Nation」）]の人口は[要素（「Population」）]です」を表示する
繰り返し終わり

もし人口データ（「data」）（１）（「Year」）が2023でないなら
    「最新のデータは[人口データ（「data」）（１）（「Year」）]年となります」を表示する
もし終わり
```

<details><summary>今回使用したjsonファイル</summary><div>

```json
{
  "data": [
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2020,
      "Year": "2020",
      "Population": 326569308,
      "Slug Nation": "united-states"
    },
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2019,
      "Year": "2019",
      "Population": 324697795,
      "Slug Nation": "united-states"
    },
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2018,
      "Year": "2018",
      "Population": 322903030,
      "Slug Nation": "united-states"
    },
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2017,
      "Year": "2017",
      "Population": 321004407,
      "Slug Nation": "united-states"
    },
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2016,
      "Year": "2016",
      "Population": 318558162,
      "Slug Nation": "united-states"
    },
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2015,
      "Year": "2015",
      "Population": 316515021,
      "Slug Nation": "united-states"
    },
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2014,
      "Year": "2014",
      "Population": 314107084,
      "Slug Nation": "united-states"
    },
    {
      "ID Nation": "01000US",
      "Nation": "United States",
      "ID Year": 2013,
      "Year": "2013",
      "Population": 311536594,
      "Slug Nation": "united-states"
    }
  ],
  "source": [
    {
      "measures": [
        "Population"
      ],
      "annotations": {
        "source_name": "Census Bureau",
        "source_description": "The American Community Survey (ACS) is conducted by the US Census and sent to a portion of the population every year.",
        "dataset_name": "ACS 5-year Estimate",
        "dataset_link": "http://www.census.gov/programs-surveys/acs/",
        "table_id": "B01003",
        "topic": "Diversity",
        "subtopic": "Demographics"
      },
      "name": "acs_yg_total_population_5",
      "substitutions": []
    }
  ]
}
```
</div></details>

```shell:実行結果
$ mono /usr/bin/produire-mono/pconsole.exe test.rdr
----- test -----
2020年のUnited Statesの人口は326569308です
----- test -----
2019年のUnited Statesの人口は324697795です
----- test -----
2018年のUnited Statesの人口は322903030です
----- test -----
2017年のUnited Statesの人口は321004407です
----- test -----
2016年のUnited Statesの人口は318558162です
----- test -----
2015年のUnited Statesの人口は316515021です
----- test -----
2014年のUnited Statesの人口は314107084です
----- test -----
2013年のUnited Statesの人口は311536594です
----- test -----
最新のデータは2020年となります
```

## 所感
日本語プログラム言語は触れたことが無かったので、違和感しか無かったけど全く知識の無い方が初めて触る言語としたら直観的で分かりやすいかもしれないですね
小学生、中学生に対してのプログラミング教育などにはかなり向いているなという印象でした
**いいね、ストックありがとうございます**✨