主要15言語をコードで比較|Hello WorldとFizzBuzzで見るプログラミング言語の違い

「どの言語がやさしいの?」「書き方ってどう違うの?」
そんな疑問にこたえるべく、いろんな言語で「Hello World」と「FizzBuzz」を書いてみました。

見比べてみると、文法のクセや書きやすさ、気持ちいいポイントまで見えてきます。

まずは「各言語で Hello World」比較&コメントからどうぞ!


目次

“Hello World” のコードを15言語で比較してみる。

“Hello World”を、主要のプログラミング言語で比較。

▶ Hello World(全言語比較)

Python

print("Hello, World!")

→ シンプルで読みやすく、初学者にもやさしい構文。

JavaScript

console.log("Hello, World!");

→ ブラウザで即実行可能。Web開発の基本形。

TypeScript

console.log("Hello, World!");

→ JavaScriptと同様だが型安全に対応。

PHP

<?php echo "Hello, World!"; ?>

→ サーバーサイドでの出力。HTMLと併用されることが多い。

Java

public class Main {
  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}

→ 毎回 main メソッドが必要で少し冗長。

C

#include 
int main() {
  printf("Hello, World!");
  return 0;
}

→ 構造はシンプル。コンパイルが必要。

C++

#include 
int main() {
  std::cout << "Hello, World!";
  return 0;
}

→ Cより柔らかい文法。名前空間の使用が特徴。

C

using System;
class Program {
  static void Main() {
    Console.WriteLine("Hello, World!");
  }
}

→ .NET環境で使われる。GUIにも強い。

Swift

print("Hello, World!")

→ iOS/macOS開発で使われる、現代的で安全性の高い構文。

Kotlin

fun main() {
  println("Hello, World!")
}

→ Javaより簡潔で、Androidアプリ開発に最適。

Go

package main
import "fmt"
func main() {
  fmt.Println("Hello, World!")
}

→ 並列処理が得意なシンプル言語。

Rust

fn main() {
  println!("Hello, World!");
}

→ 安全性とスピードを兼ね備えたモダン言語。

SQL

SELECT "Hello, World!";

→ データベースから文字列を返す形式。

VBA

Sub HelloWorld()
  MsgBox "Hello, World!"
End Sub

→ Excel等のOffice製品内で自動化スクリプトとして使える。

GAS

function helloWorld() {
  Logger.log("Hello, World!");
}

→ Googleスプレッドシートなどで使えるJavaScript風スクリプト。

各言語で FizzBuzz(全言語比較)問題を解いてみる

FizzBuzz問題とは?

1から順に数を数え上げていき、3の倍数なら「Fizz」、5の倍数なら「Buzz」、両方の倍数(15の倍数)なら「Fizz Buzz」、いずれでもなければその数を出力する問題。

Python

for i in range(1, 101):
    if i % 3 == 0 and i % 5 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

→ 読みやすい構文で、インデントがすべてを決める。

JavaScript

for (let i = 1; i <= 100; i++) {
  if (i % 3 === 0 && i % 5 === 0) {
    console.log("FizzBuzz");
  } else if (i % 3 === 0) {
    console.log("Fizz");
  } else if (i % 5 === 0) {
    console.log("Buzz");
  } else {
    console.log(i);
  }
}

→ 括弧と波かっこが特徴的。非同期処理とも相性が良い。

TypeScript

for (let i: number = 1; i <= 100; i++) {
  if (i % 3 === 0 && i % 5 === 0) {
    console.log("FizzBuzz");
  } else if (i % 3 === 0) {
    console.log("Fizz");
  } else if (i % 5 === 0) {
    console.log("Buzz");
  } else {
    console.log(i);
  }
}

→ JavaScriptに型を加えた構文。補完や型安全性が強化されている。

PHP

→ Web寄り言語だが、CLIスクリプトでも使える。

Java

public class Main {
  public static void main(String[] args) {
    for (int i = 1; i <= 100; i++) {
      if (i % 3 == 0 && i % 5 == 0)
        System.out.println("FizzBuzz");
      else if (i % 3 == 0)
        System.out.println("Fizz");
      else if (i % 5 == 0)
        System.out.println("Buzz");
      else
        System.out.println(i);
    }
  }
}

→ 構造が厳格。クラス定義とmain関数が必須。

C

#include 
int main() {
  for (int i = 1; i <= 100; i++) {
    if (i % 3 == 0 && i % 5 == 0)
      printf("FizzBuzz\n");
    else if (i % 3 == 0)
      printf("Fizz\n");
    else if (i % 5 == 0)
      printf("Buzz\n");
    else
      printf("%d\n", i);
  }
  return 0;
}

→ C言語らしく、標準出力にprintfを使う。

C++

#include 
int main() {
  for (int i = 1; i <= 100; i++) {
    if (i % 3 == 0 && i % 5 == 0)
      std::cout << "FizzBuzz\n";
    else if (i % 3 == 0)
      std::cout << "Fizz\n";
    else if (i % 5 == 0)
      std::cout << "Buzz\n";
    else
      std::cout << i << "\n";
  }
  return 0;
}

→ Cに比べて出力が柔らかくなる(coutの使用)。

C

using System;
class Program {
  static void Main() {
    for (int i = 1; i <= 100; i++) {
      if (i % 3 == 0 && i % 5 == 0)
        Console.WriteLine("FizzBuzz");
      else if (i % 3 == 0)
        Console.WriteLine("Fizz");
      else if (i % 5 == 0)
        Console.WriteLine("Buzz");
      else
        Console.WriteLine(i);
    }
  }
}

→ Visual Studioなどと組み合わせやすいモダンな文法。

Swift

for i in 1...100 {
  if i % 3 == 0 && i % 5 == 0 {
    print("FizzBuzz")
  } else if i % 3 == 0 {
    print("Fizz")
  } else if i % 5 == 0 {
    print("Buzz")
  } else {
    print(i)
  }
}

→ スマートな構文。可読性も高い。

Kotlin

fun main() {
  for (i in 1..100) {
    when {
      i % 3 == 0 && i % 5 == 0 -> println("FizzBuzz")
      i % 3 == 0 -> println("Fizz")
      i % 5 == 0 -> println("Buzz")
      else -> println(i)
    }
  }
}

→ when式で条件分岐が簡潔に書ける。

Go

package main
import "fmt"
func main() {
  for i := 1; i <= 100; i++ {
    if i%3 == 0 && i%5 == 0 {
      fmt.Println("FizzBuzz")
    } else if i%3 == 0 {
      fmt.Println("Fizz")
    } else if i%5 == 0 {
      fmt.Println("Buzz")
    } else {
      fmt.Println(i)
    }
  }
}

→ 明快な構文。Goroutineを使わなくても高速。

Rust

fn main() {
  for i in 1..=100 {
    if i % 3 == 0 && i % 5 == 0 {
      println!("FizzBuzz");
    } else if i % 3 == 0 {
      println!("Fizz");
    } else if i % 5 == 0 {
      println!("Buzz");
    } else {
      println!("{}", i);
    }
  }
}

→ 安全性の高さとスピードを兼ね備えた構文。

各言語での「Hello World」補足付き比較

言語コード例一言コメント
Pythonprint("Hello World")→ 世界一シンプル!そのまま書けば出る。安心感の塊。
JavaScriptconsole.log("Hello World");→ ブラウザ開いてF12、そこから世界が始まる。
TypeScriptconsole.log("Hello World"); // +型定義もできるよ→ JSと同じ見た目。だけど“裏では守ってくれる”存在。
PHP<?php echo "Hello World"; ?>→ HTMLの中から「こんにちは!」してくるスタイル。
Javapublic class Main { public static void main(String[] args) { System.out.println("Hello World"); }}→ 最初は「長っ!」ってなる。けどこれが企業系の基本形。
C#include <stdio.h>\nint main() { printf("Hello World"); return 0; }→ まさに“コンピュータに話しかけてる”感がある。
C++#include <iostream>\nint main() { std::cout << "Hello World"; return 0; }<< がちょっとオシャレに感じる。
C#using System;\nclass Program { static void Main() { Console.WriteLine("Hello World"); }}→ Javaっぽいけど、もうちょっとスリムで洗練された感じ。
Swiftprint("Hello World")→ Pythonに似た美しさ。iPhoneアプリの入口もこれ。
Kotlinfun main() { println("Hello World") }→ Javaより断然短い。Androidの未来感ある。
Gopackage main\nimport "fmt"\nfunc main() { fmt.Println("Hello World") }→ シンプルだけど“自立したファイル感”がある。
Rustfn main() { println!("Hello World"); }!はマクロ。やること多いけど、通ると安心。
SQLSELECT 'Hello World';→ これは“誰かに聞きにいく”感がある。コードというより質問。
VBASub Hello()\nMsgBox "Hello World"\nEnd Sub→ Excelから「こんにちは!」って喋るの、ちょっとカワイイ。
GASfunction hello() {\n Logger.log("Hello World");\n}→ スプレッドシートと会話できるGoogleの使者。

👀 見比べると、個性が際立つのが面白いですね!

  • Python / Swift:スッキリ美しい
  • C / Java / C++:構造重視で「入口」が多い
  • SQL / VBA / GAS:目的がハッキリしてる
  • Rust:やさしくないけど、実は思いやりの塊

まとめ

これから学びたい言語を選ぶヒントや、気になる言語の雰囲気をつかむ入り口になればうれしいです。

記事について

当サイトは、主に自分用の備忘録として情報をまとめています。個別の質問にはお答えできません。
紹介するコードや設定をご参考の際は、ご自身の責任においてご利用ください。編集や実行によるいかなる損害・不具合についても、当サイトは責任を負いかねます。
必ず事前にバックアップを取り、安全に作業を行ってください。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次