0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者向けのプログラミング言語を考察した話

Last updated at Posted at 2023-12-26

背景

「初心者向けの言語はPythonだ!!」と、よく耳にする。 しかし、初心者にPythonを勉強してもらうと、変数型の意識が薄れてしまうことが多い。

関数オブジェクトを渡す関数にintを渡したり、doubleを渡す関数にstringを渡したり。。。

そこで、本当に初心者向けの言語は何かを考察してみる。

初心者向け言語の要素だと思うこと

  • 入力・出力が簡単 -> 多用するのでやたら長いと困る
  • 変数型に厳しい -> 初心者こそ変数の型は意識すべき
  • 環境構築が簡単 -> 実行環境が手軽に用意できる
  • Hello Worldがシンプルに記述できる -> ちょっとしたプログラムはシンプルに書ける
  • オブジェクト指向の勉強ができる -> 必要なときに簡単にクラスを使える

結論

早速の結論だが、個人的に最も初心者向けだと思ったのは、Kotlinである。
KotlinはIntelliJ IDEAをインストールすれば手軽に実行環境を用意することができる。

// 2整数の和を求める関数
fun add(v1: Int, v2: Int): Int {
    return v1 + v2
}

// はじめに実行される関数
fun main() {
    print("name: ")
    val name = readLine() // 入力
    println("Hello, $name!")

    val sum = add(2 , 3)
    println("2 + 3 = $sum")
}

自明な時は変数型を記述する必要はないが、IntelliJ IDEAでは自動で型を認識してくれるので、自然と型を意識できる。
image.png

他の言語はどうなんだい?

上述のプログラムと同等のものを他の言語でも記述して比較する。

C++

型はあるが、環境構築が大変。特にWindowsでは、環境変数を通すのが初心者には難しい。
PleiadesのサイトからEclipseをインストールすれば簡単に環境構築できそう。

あと入出力がちょっと特殊。

#include <iostream>
#include <string>

// 2整数の和を求める関数
// 関数は使用箇所より先に記述する
int add(int v1, int v2) {
    return v1 + v2;
}

// はじめに実行される関数
int main() {
    std::string name;
    std::cout << "name: ";
    std::cin >> name;
    std::cout << "Hello, " << name << "!" << std::endl;

    int sum = add(2, 3);
    std::cout << "2 + 3 = " << sum << std::endl;
    return 0;
}

Java

Javaはとにかく長い。main関数も出力も長すぎる。クラスを知らない初心者にとって意味不明な「呪文」がたくさんある。

import java.util.Scanner;

public class MyClass {
    // はじめに実行される関数
    public static void main(String[] args) {
        System.out.print("name: ");
        String name = new Scanner(System.in).nextLine();
        System.out.println("Hello, " + name + "!");

        int sum = add(2, 3);
        System.out.println("2 + 3 = " + sum);
    }

    // 2整数の和を求める関数
    private static int add(int v1, int v2) {
        return v1 + v2;
    }
}

Python

Microsoft Storeでインストールするだけで環境構築できる。

image.png

また、上述の通り型が無い。アノテーションで型を書くことを強制できれば初心者向けかもしれない。関数のオーバーロードができないので、型が曖昧になりやすい。

引数の型がint, float, np.arrayで動作可能にしたいときに、型を書いたり、条件分岐で処理を分けたりするのが大変。


# 先頭から順に実行される
name = input("name: ")
print(f"Hello, {name}!")


# 2整数の和を求める関数
# 「: int」は型指定 ※書かなくても実行可
def add(v1: int,  v2: int) -> int:
    return v1 + v2

# 変数に型を付けることもできる
sum: int = add(2, 3)
print(f"2 + 3 = {sum}")

その他

リクエストがあったら他の言語でも書きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?