いろんなプログラミング言語30種類の特徴とコードを比較してみた

# この記事を書くきっかけ
いろいろなプログラミング言語の特徴を一覧で見たいと思い、記事を作成しました。名前は聞いたことがあるけど、どんな言語か全くわからないときに、その特徴をざっくりと捉えられるようにしました。自分の知っている言語と他の言語を比較できるように、統一感のある構成にしたつもりです。暇なときに見てみてください。

# この記事の構成
知名度の高いプログラミング言語を３０種類用意しました。
- プログラミング言語の名前
- 特徴
- 主に利用される場面
- プログラムのタスク
    - "Hello, World!" を出力するプログラム
    - 1から10までの数字をループで表示するプログラム
    - 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
- リンク

これらを一覧で記載しています。

### 1. Python
- 特徴: シンプルで読みやすい文法
- 主に利用される場面: Web開発、データ解析、機械学習、スクリプト作成
```python
# "Hello, World!" を出力するプログラム
print("Hello, World!")

# 1から10までの数字をループで表示するプログラム
for i in range(1, 11):
    print(i)

# 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
def add(a, b):
    return a + b

print(add(5, 3))

```

https://www.python.org/

https://www.python.jp/


### 2. JavaScript
- 特徴: ウェブブラウザでの動的な動作をサポート
- 主に利用される場面: ウェブ開発、フロントエンド開発、サーバーサイド開発（Node.js）
```javascript
// "Hello, World!" を出力するプログラム
console.log("Hello, World!");

// 1から10までの数字をループで表示するプログラム
for (let i = 1; i <= 10; i++) {
    console.log(i);
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
function add(a, b) {
    return a + b;
}

console.log(add(5, 3));

```

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference

### 3. Java
- 特徴: オブジェクト指向であり、プラットフォームに依存しない
- 主に利用される場面: エンタープライズアプリケーション、Androidアプリケーション開発
```java
// "Hello, World!" を出力するプログラム
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

// 1から10までの数字をループで表示するプログラム
public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);
        }
    }
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
public class Main {
    public static void main(String[] args) {
        System.out.println(add(5, 3));
    }

    public static int add(int a, int b) {
        return a + b;
    }
}

```
https://www.java.com/ja/

https://www.oracle.com/jp/java/

### 4. C++
- 特徴: 高性能でハードウェアへの直接アクセスが可能
- 主に利用される場面: システムプログラミング、ゲーム開発、リアルタイム処理
```c++
// "Hello, World!" を出力するプログラム
#include <iostream>
int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

// 1から10までの数字をループで表示するプログラム
#include <iostream>
int main() {
    for (int i = 1; i <= 10; ++i) {
        std::cout << i << std::endl;
    }
    return 0;
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
#include <iostream>
int add(int a, int b) {
    return a + b;
}

int main() {
    std::cout << add(5, 3) << std::endl;
    return 0;
}

```

https://isocpp.org/

https://cplusplus.com/

### 5. C#
- 特徴: Microsoftによって開発され、.NETフレームワークと密接に統合
- 主に利用される場面: Windowsアプリケーション開発、Webアプリケーション開発（ASP.NET）
```c#
// "Hello, World!" を出力するプログラム
using System;
class Program {
    static void Main() {
        Console.WriteLine("Hello, World!");
    }
}

// 1から10までの数字をループで表示するプログラム
using System;
class Program {
    static void Main() {
        for (int i = 1; i <= 10; i++) {
            Console.WriteLine(i);
        }
    }
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
using System;
class Program {
    static void Main() {
        Console.WriteLine(Add(5, 3));
    }

    static int Add(int a, int b) {
        return a + b;
    }
}

```

https://learn.microsoft.com/ja-jp/dotnet/csharp/

https://dotnet.microsoft.com/ja-jp/languages/csharp

### 6. PHP
- 特徴: サーバーサイドスクリプトとして主にウェブ開発に使用
- 主に利用される場面: ウェブ開発（特に動的なウェブサイト）
```php
// "Hello, World!" を出力するプログラム
<?php
echo "Hello, World!";
?>

// 1から10までの数字をループで表示するプログラム
<?php
for ($i = 1; $i <= 10; $i++) {
    echo $i . "\n";
}
?>

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
<?php
function add($a, $b) {
    return $a + $b;
}

echo add(5, 3);
?>

```

https://www.php.net/manual/ja/index.php

### 7. Swift
- 特徴: Appleのプラットフォーム向けに設計されたプログラミング言語
- 主に利用される場面: iOSアプリケーション開発、macOSアプリケーション開発
```swift
// "Hello, World!" を出力するプログラム
print("Hello, World!")

// 1から10までの数字をループで表示するプログラム
for i in 1...10 {
    print(i)
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
func add(a: Int, b: Int) -> Int {
    return a + b
}

print(add(a: 5, b: 3))

```
https://developer.apple.com/jp/swift/

https://www.swift.org/documentation/

### 8. Ruby
- 特徴: シンプルかつ柔軟で直感的な文法
- 主に利用される場面: ウェブ開発（Ruby on Rails）
```ruby
# "Hello, World!" を出力するプログラム
puts "Hello, World!"

# 1から10までの数字をループで表示するプログラム
(1..10).each { |i| puts i }

# 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
def add(a, b)
  a + b
end

puts add(5, 3)

```

https://www.ruby-lang.org/ja/

### 9. TypeScript
- 特徴: JavaScriptに型システムを追加した言語
- 主に利用される場面: 大規模なJavaScriptアプリケーション開発
```typescript
// "Hello, World!" を出力するプログラム
console.log("Hello, World!");

// 1から10までの数字をループで表示するプログラム
for (let i = 1; i <= 10; i++) {
    console.log(i);
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
function add(a: number, b: number): number {
    return a + b;
}

console.log(add(5, 3));

```
https://typescriptbook.jp/

https://typescript-jp.gitbook.io/deep-dive

https://www.typescriptlang.org/ja/docs/

### 10. Go
- 特徴: シンプルで効率的な並行処理をサポート
- 主に利用される場面: サーバーサイド開発、クラウドサービス
```go
// "Hello, World!" を出力するプログラム
package main
import "fmt"
func main() {
    fmt.Println("Hello, World!")
}

// 1から10までの数字をループで表示するプログラム
package main
import "fmt"
func main() {
    for i := 1; i <= 10; i++ {
        fmt.Println(i)
    }
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
package main
import "fmt"
func add(a int, b int) int {
    return a + b
}
func main() {
    fmt.Println(add(5, 3))
}

```

https://go.dev/doc/

http://go.shibu.jp/

### 11. R
- 特徴: 統計解析やデータ分析に特化
- 主に利用される場面: データサイエンス、統計解析
```r
# "Hello, World!" を出力するプログラム
print("Hello, World!")

# 1から10までの数字をループで表示するプログラム
for (i in 1:10) {
    print(i)
}

# 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
add <- function(a, b) {
    return(a + b)
}

print(add(5, 3))

```

https://www.stat.go.jp/teacher/r.html

https://statistics.co.jp/reference/software_R/free_software-R.htm

### 12. Kotlin
- 特徴: Javaと互換性があり、Android開発で広く使われる
- 主に利用される場面: Androidアプリケーション開発
```kotlin
// "Hello, World!" を出力するプログラム
fun main() {
    println("Hello, World!")
}

// 1から10までの数字をループで表示するプログラム
fun main() {
    for (i in 1..10) {
        println(i)
    }
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
fun add(a: Int, b: Int): Int {
    return a + b
}

fun main() {
    println(add(5, 3))
}

```

https://kotlinlang.org/

### 13. Rust
- 特徴: 安全性と速度を重視したシステムプログラミング言語
- 主に利用される場面: システムプログラミング、ゲーム開発、Webアセンブリ
```rust
// "Hello, World!" を出力するプログラム
fn main() {
    println!("Hello, World!");
}

// 1から10までの数字をループで表示するプログラム
fn main() {
    for i in 1..=10 {
        println!("{}", i);
    }
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    println!("{}", add(5, 3));
}

```
https://rust.double11.com/ja-jp

https://www.rust-lang.org/ja

### 14. MATLAB
- 特徴: 数値解析や行列計算に特化
- 主に利用される場面: 科学技術計算、エンジニアリング、シミュレーション
```matlab
% "Hello, World!" を出力するプログラム
disp('Hello, World!')

% 1から10までの数字をループで表示するプログラム
for i = 1:10
    disp(i)
end

% 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
function result = add(a, b)
    result = a + b;
end

disp(add(5, 3))

```

https://jp.mathworks.com/products/matlab.html?s_tid=hp_products_matlab


### 15. Perl
- 特徴: テキスト処理に強い
- 主に利用される場面: テキスト処理、システム管理スクリプト
```perl
# "Hello, World!" を出力するプログラム
print "Hello, World!\n";

# 1から10までの数字をループで表示するプログラム
for my $i (1..10) {
    print "$i\n";
}

# 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
sub add {
    my ($a, $b) = @_;
    return $a + $b;
}

print add(5, 3), "\n";

```

https://www.perl.org/

### 16. Scala
- 特徴: オブジェクト指向と関数型プログラミングの両方をサポート
- 主に利用される場面: 分散コンピューティング（Apache Spark）、ウェブ開発
```scala
// "Hello, World!" を出力するプログラム
object Main extends App {
    println("Hello, World!")
}

// 1から10までの数字をループで表示するプログラム
object Main extends App {
    for (i <- 1 to 10) {
        println(i)
    }
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
object Main extends App {
    def add(a: Int, b: Int): Int = {
        a + b
    }

    println(add(5, 3))
}

```

https://docs.scala-lang.org/ja/

### 17. Lua
- 特徴: 軽量で組み込みスクリプト言語として使われる
- 主に利用される場面: ゲーム開発、組み込みシステム
```lua
-- "Hello, World!" を出力するプログラム
print("Hello, World!")

-- 1から10までの数字をループで表示するプログラム
for i = 1, 10 do
    print(i)
end

-- 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
function add(a, b)
    return a + b
end

print(add(5, 3))

```

https://www.lua.org/

### 18. Haskell
- 特徴: 純粋な関数型プログラミング言語
主に利用される場面: 学術研究、関数型プログラミング教育
```haskell
-- "Hello, World!" を出力するプログラム
main = putStrLn "Hello, World!"

-- 1から10までの数字をループで表示するプログラム
main = mapM_ print [1..10]

-- 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
add :: Int -> Int -> Int
add a b = a + b

main = print (add 5 3)

```

https://www.haskell.org/

https://haskell.jp/

### 19. Objective-C
- 特徴: C言語にオブジェクト指向機能を追加した言語
- 主に利用される場面: iOSアプリケーション開発
```objc
// "Hello, World!" を出力するプログラム
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Hello, World!");
    }
    return 0;
}

// 1から10までの数字をループで表示するプログラム
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        for (int i = 1; i <= 10; i++) {
            NSLog(@"%d", i);
        }
    }
    return 0;
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
#import <Foundation/Foundation.h>
int add(int a, int b) {
    return a + b;
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"%d", add(5, 3));
    }
    return 0;
}

```

https://developer.apple.com/documentation/objectivec

### 20. SQL
- 特徴: データベースの操作言語
- 主に利用される場面: データベース管理、データクエリ

**PostgreSQL用のSQLコード**
```sql
-- "Hello, World!" を出力するプログラム
SELECT 'Hello, World!';

-- 1から10までの数字をループで表示するプログラム
-- ※postgreSQL
CREATE FUNCTION gen_seq_between(start_num INT, end_num INT)
RETURNS SETOF INT AS '
  DECLARE
    current_num INT;
  BEGIN
    current_num := start_num;
    WHILE current_num <= end_num LOOP
      RETURN NEXT current_num;
      current_num := current_num + 1;
    END LOOP;
  END;
' LANGUAGE plpgsql;

SELECT gen_seq_between(1, 10);

-- 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
CREATE FUNCTION add (IN x int, IN y int, OUT sum int) AS
  'SELECT x + y'
LANGUAGE SQL;

SELECT add(1, 2);

```

### 21. Visual Basic
- 特徴: 簡単に学べる構文、RAD（Rapid Application Development）をサポート
- 主に利用される場面: Windowsアプリケーション開発
```visualbasic
' "Hello, World!" を出力するプログラム
Module HelloWorld
    Sub Main()
        Console.WriteLine("Hello, World!")
    End Sub
End Module

' 1から10までの数字をループで表示するプログラム
Module LoopExample
    Sub Main()
        For i As Integer = 1 To 10
            Console.WriteLine(i)
        Next
    End Sub
End Module

' 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
Module FunctionExample
    Sub Main()
        Console.WriteLine(Add(5, 3))
    End Sub

    Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Module

```

https://learn.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/

### 22. Dart
- 特徴: フロントエンド開発向けに設計され、Flutterフレームワークで使用
- 主に利用される場面: モバイルアプリケーション開発（Flutter）
```dart
// "Hello, World!" を出力するプログラム
void main() {
  print('Hello, World!');
}

// 1から10までの数字をループで表示するプログラム
void main() {
  for (var i = 1; i <= 10; i++) {
    print(i);
  }
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
int add(int a, int b) {
  return a + b;
}

void main() {
  print(add(5, 3));
}

```

https://dart.dev/

### 23. Julia
- 特徴: 高性能な数値計算とデータ解析に特化
- 主に利用される場面: データサイエンス、数値解析
```julia
# "Hello, World!" を出力するプログラム
println("Hello, World!")

# 1から10までの数字をループで表示するプログラム
for i in 1:10
    println(i)
end

# 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
function add(a, b)
    return a + b
end

println(add(5, 3))

```

https://julialang.org/

### 24. Shell (Bashなど)
- 特徴: Unixシステム上でのシェルスクリプト言語
- 主に利用される場面: システム管理、スクリプト作成
```shell
# "Hello, World!" を出力するプログラム
echo "Hello, World!"

# 1から10までの数字をループで表示するプログラム
for i in {1..10}; do
    echo $i
done

# 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
add() {
    echo $(($1 + $2))
}

echo $(add 5 3)

```
https://qiita.com/zayarwinttun/items/0dae4cb66d8f4bd2a337

### 25. Groovy
- 特徴: Javaとの互換性が高く、簡潔な文法
- 主に利用される場面: ビルドスクリプト、テストスクリプト（Gradle）
```groovy
// "Hello, World!" を出力するプログラム
println 'Hello, World!'

// 1から10までの数字をループで表示するプログラム
for (int i = 1; i <= 10; i++) {
    println i
}

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
int add(int a, int b) {
    return a + b
}

println add(5, 3)

```

https://groovy-lang.org/

### 26. Fortran
- 特徴: 高性能な科学技術計算に特化
- 主に利用される場面: 科学技術計算、数値解析
```fortran
! "Hello, World!" を出力するプログラム
program HelloWorld
    print *, 'Hello, World!'
end program HelloWorld

! 1から10までの数字をループで表示するプログラム
program LoopExample
    integer :: i
    do i = 1, 10
        print *, i
    end do
end program LoopExample

! 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
program FunctionExample
    print *, add(5, 3)
contains
    integer function add(a, b)
        integer, intent(in) :: a, b
        add = a + b
    end function add
end program FunctionExample

```

https://www.nag-j.co.jp/fortran/

### 27. Lisp
- 特徴: シンボリック計算に強い、マクロシステム
- 主に利用される場面: AI研究、リスト操作
```lisp
;; "Hello, World!" を出力するプログラム
(print "Hello, World!")

;; 1から10までの数字をループで表示するプログラム
(loop for i from 1 to 10 do (print i))

;; 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
(defun add (a b)
    (+ a b))

(print (add 5 3))

```

https://lispuser.net/commonlisp/sbcl.html

### 28. F#
- 特徴: 関数型プログラミング言語
- 主に利用される場面: 金融、データ解析、並行プログラミング
```fsharp
// "Hello, World!" を出力するプログラム
printfn "Hello, World!"

// 1から10までの数字をループで表示するプログラム
for i in 1 .. 10 do
    printfn "%d" i

// 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
let add a b = a + b
printfn "%d" (add 5 3)

```

https://learn.microsoft.com/ja-jp/dotnet/fsharp/what-is-fsharp

### 29. Erlang
- 特徴: 並行処理に強い
- 主に利用される場面: 電話交換システム、チャットアプリケーション
```erlang
% "Hello, World!" を出力するプログラム
io:format("Hello, World!~n").

% 1から10までの数字をループで表示するプログラム
print_numbers(N) when N =< 10 ->
    io:format("~p~n", [N]),
    print_numbers(N + 1);
print_numbers(_) ->
    ok.

% 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
add(A, B) ->
    A + B.

% 使用例
io:format("~p~n", [add(5, 3)]).

```

https://www.erlang.org/

### 30. Elixir
- 特徴: 並行処理に強い、Erlangの上に構築
- 主に利用される場面: ウェブ開発、チャットアプリケーション
```elixir
# "Hello, World!" を出力するプログラム
IO.puts "Hello, World!"

# 1から10までの数字をループで表示するプログラム
for i <- 1..10 do
    IO.puts i
end

# 関数を使って2つの数値の合計を計算し、その結果を表示するプログラム
defmodule Math do
    def add(a, b) do
        a + b
    end
end

IO.puts Math.add(5, 3)

```

https://elixir-lang.jp/

# ざっくりグルーピング

**1. ウェブ開発向け**
- JavaScript
- PHP
- TypeScript
- Ruby
- Elixir

**2. モバイルアプリケーション開発向け**
- Swift
- Kotlin
- Dart


**3. システムプログラミング向け**
- C
- C++
- Rust
- Go


**4. データサイエンス・数値解析向け**
- Python
- R
- Julia
- MATLAB


**5. エンタープライズ・ビジネスアプリケーション向け**
- Java
- C#
- Scala
- Groovy


**6. 関数型プログラミング**
- Haskell
- F#
- Erlang


**7. 組み込み・システム管理**
- Shell 
- Perl
- Lua


**8. その他**
- Visual Basic
- Objective-C
- SQL
- Fortran
- Lisp

# まとめ
いろんなプログラミング言語を30種類を並べてみました。暇なときに眺めてみてください。