「どの言語がやさしいの?」「書き方ってどう違うの?」
そんな疑問にこたえるべく、いろんな言語で「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」補足付き比較
言語 | コード例 | 一言コメント |
---|---|---|
Python | print("Hello World") | → 世界一シンプル!そのまま書けば出る。安心感の塊。 |
JavaScript | console.log("Hello World"); | → ブラウザ開いてF12、そこから世界が始まる。 |
TypeScript | console.log("Hello World"); // +型定義もできるよ | → JSと同じ見た目。だけど“裏では守ってくれる”存在。 |
PHP | <?php echo "Hello World"; ?> | → HTMLの中から「こんにちは!」してくるスタイル。 |
Java | public 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っぽいけど、もうちょっとスリムで洗練された感じ。 |
Swift | print("Hello World") | → Pythonに似た美しさ。iPhoneアプリの入口もこれ。 |
Kotlin | fun main() { println("Hello World") } | → Javaより断然短い。Androidの未来感ある。 |
Go | package main\nimport "fmt"\nfunc main() { fmt.Println("Hello World") } | → シンプルだけど“自立したファイル感”がある。 |
Rust | fn main() { println!("Hello World"); } | → ! はマクロ。やること多いけど、通ると安心。 |
SQL | SELECT 'Hello World'; | → これは“誰かに聞きにいく”感がある。コードというより質問。 |
VBA | Sub Hello()\nMsgBox "Hello World"\nEnd Sub | → Excelから「こんにちは!」って喋るの、ちょっとカワイイ。 |
GAS | function hello() {\n Logger.log("Hello World");\n} | → スプレッドシートと会話できるGoogleの使者。 |
👀 見比べると、個性が際立つのが面白いですね!
- Python / Swift:スッキリ美しい
- C / Java / C++:構造重視で「入口」が多い
- SQL / VBA / GAS:目的がハッキリしてる
- Rust:やさしくないけど、実は思いやりの塊
まとめ
これから学びたい言語を選ぶヒントや、気になる言語の雰囲気をつかむ入り口になればうれしいです。
コメント