CODE Polyglot / 入門

入門 — 10言語で同じプログラムを書いてみる

プログラミングを始めたばかりの人向けに、同じ小さなプログラムを PHP・Python・Go・JavaScript・Java・C#・Rust・Ruby・Kotlin・Swift の10言語で並べました。 載せているプログラムは、どれもそのまま保存して動かせます。毎朝、実際に動かして、画面に出る答えが正しいことを確かめています。

  1. 第1回 Hello World — 名前を受け取ってあいさつするプログラムに名前を渡すと「こんにちは、◯◯さん!」と表示します。名前を渡さなければ「ゲストさん」にします。どの言語でも最初に書く、いちばん小さなプログラムです。
  2. 第2回 四則演算 — 足し算・引き算・掛け算・割り算2つの整数を受け取って、足し算・引き算・掛け算・割り算と、割り算の商と余りを出します。同じ「7 ÷ 2」でも、言語によって 3.5 になったり 3 になったりします。
  3. 第3回 FizzBuzz — 条件分岐と繰り返し1 から n までの数を順に出し、3の倍数は Fizz、5の倍数は Buzz、両方の倍数は FizzBuzz と出します。条件分岐(if)と繰り返し(for)の練習によく使われる問題です。
  4. 第4回 文字数を数える — 同じ文字列でも、数え方で答えが変わる受け取った文字列の「文字数」と「バイト数(UTF-8)」を出します。「𠮷」や絵文字を、2文字と数える言語・1文字と数える言語・4と数える言語があります。
  5. 第5回 並べ替え — 文字の順番は、言語の既定で変わる受け取った言葉を並べ替えて、1行に1つずつ出します。この回では「文字コードの順」を正解にしています。C# の既定の並べ替えや、「𠮷」のような文字では、言語によって順番が変わります。
  6. 第6回 合計と平均 — 0.1 を10回足しても 1 にならない受け取った数の合計と平均を出します。平均は小数第2位まで(四捨五入)。0.1 を10回足すと、10言語のうち9言語が 0.9999999999999999 と表示しました。
  7. 第7回 入力チェック — 郵便番号の形を確かめる受け取った文字列が郵便番号の形(半角の数字3桁・ハイフン・4桁、またはハイフンなし7桁)かを確かめます。全角の「123」を数字として通してしまう言語があります。
  8. 第8回 日付 — 曜日・何日後・月末を求める日付と日数を受け取って、その日の曜日、何日後の日付、その月の最終日を出します。月の番号の数え方、タイムゾーン、存在しない日付の扱いで、言語ごとにつまずき方が違います。
  9. 第9回 入力をそろえる — 全角の英数字を半角にする受け取った文字列の、全角の英数字・記号と全角スペースを半角に直し、前後の空白を取り除きます。問い合わせフォームで「123-4567」を「123-4567」にそろえる処理です。
  10. 第10回 単語を数える — 辞書(連想配列)と、出てきた順受け取った単語がそれぞれ何回出てきたかを、はじめて出てきた順に出します。辞書(連想配列・map)は、言語によって「取り出す順番」の決まりが違います。
  11. 第11回 数として読む — 入力が整数かを確かめる受け取った文字列が整数なら2倍にして出し、整数でなければ「整数ではありません」と出します。「数に直す」関数が何を整数とみなすかは、言語によって驚くほど違います。
  12. 第12回 CSV を読む — 名前と点数の表を合計する標準入力から CSV(カンマ区切りの表)を読んで、1人ずつの点数と合計を出します。カンマを「,」で区切るだけでは読めない CSV が、実際にはよくあります。
  13. 第13回 数を見やすく — 3桁区切りと小数第2位の四捨五入受け取った数を、小数第2位までに四捨五入して、3桁ごとにカンマを入れて出します。「1.005」が「1.00」になる、「-0.001」が「-0.00」になる、18桁の数の終わりが変わる、といったずれが、言語と関数によって起きます。
  14. 第14回 文字列を区切る — カンマで分けて、空の項目も数える「東京,大阪,名古屋」のような文字列をカンマで区切って、項目の数と中身を出します。区切る関数(split)が、空の項目、とくに最後の空の項目をどう扱うかは、言語によって違います。
  15. 第15回 先頭だけ出す — プレビューのために文字数で切る文字列の先頭から決まった文字数だけを出し、残りがあれば「…」を付けます。問い合わせの一覧で本文の先頭だけを見せる処理です。絵文字や「𠮷」のような文字の途中で切ってしまう言語があります。
  16. 第16回 メールアドレスの形を確かめる — 正規表現の ^ と $ と \w受け取った文字列が、メールアドレスの形かを確かめます。問い合わせフォームの入力チェックです。正規表現の「^」「$」「\w」の意味が言語によって少しずつ違い、改行や日本語を通してしまうことがあります。

実行環境の作り方

自分のパソコン(Mac・Windows)に言語を入れて、第1回の Hello World を動かすまでの手順です。