「プログラム言語」に関しては、おすすめ、人気、学ぶべきもの、どれがイケているかの順位付け議論が盛んに行われていて、新人プログラマはどの言語を学べばいいか、迷ってしまい、結局モチベーションが上がらないことも多いと思います。
どのプログラミング言語を勉強するかを順位づけする前に、そもそもプログラミング言語とは何かを考えるのはどうでしょうか?
はじめに(参考記事)
おすすめのプログラミング言語を紹介する記事
人気のプログラミング言語を紹介する記事
学ぶべきプログラミング言語を紹介する記事
どれがイケてるかに関するポエム記事
プログラミング言語とは
「プログラミング言語」を、プログラミング言語で書かれたコードと混同していませんか?
wikipediaには
コンピュータプログラムを記述するための形式言語である
と記載されていますが、
コンピュータ・プログラミング言語の設計は「言語仕様」として示され、実装は「言語処理系」と呼ばれる。
とも記載されています。
狭義のプログラミング言語と広義のプログラミング言語を混同していると、プログラミング言語の違いが分かりにくくなります。「プログラミング言語」が示すものは、範囲によって、次の4段階に分かれると思います。
level1: 言語仕様
level2: 言語仕様 + 言語処理系
level3: 言語仕様 + 言語処理系 + ライブラリ管理/ライブラリ
level4: 言語仕様 + 言語処理系 + ライブラリ管理/ライブラリ + 開発環境/開発コミュニティ
wikipediaでは、level2までを「プログラミング言語」としていますが、紹介した記事では、level1~level4が混じっていることに注意しましょう。「プログラミング言語」でlevel1のみを想像した人は、上記の記事を読んでも消化不良になると思います。
各範囲を意識すると順位付けはどうなるのか?
おすすめ、人気、学ぶべきもの、どれがイケているかではなく、プログラム言語を評価する目的からlevel1~level4のどの観点を重視して評価すべきかをまず決めましょう。
ざっくりと、下記のような感じになると思います。
人気(シェア) ⇒ level4
人気(学術的な議論) ⇒ level1
業務(チーム開発)で使用する ⇒ level4
特化したものが必要 ⇒ level3
みたいになると思います。(もちろん、一意に決まるわけではないですが)
なお、初学者の目的(プログラミングを理解する)はlevel1~level4のどの観点でを重視して評価すべきでしょうか?
私の個人の意見では、すでに作成物までを具体的に見据えてプログラミングを勉強する場合を除けば、level2が妥当だと思います。(level3以降の理解は1年程度の学習が必要だと考えます)
その際に最初に紹介した記事の内容が参考になりますか?
学習曲線について
文科省のPythonはPythonじゃねぇの参照記事に下記の記載がありました。
プログラミング言語は「Python」を採用しているが、多くの学校現場で使われている「JavaScript」や「VBA」「Swift」「ドリトル」などの言語で記述した場合の資料も順次公表する。
上記の記載で違和感があったのは、これらのプログラミング言語の違いは、level2以降の観点で顕著になると思うのですが、level1の観点の教育で複数のプログラム言語の書き方の違いだけをピックアップして、意味があるのでしょうか?
個人的には、教育では導入時にlevel1からlevel4までの観点の違いがあることを明記したうえでプログラミング言語の違いを説明してほしいのですが、あまりそのような議論を見たことがありません。
なお、level3以降の観点でプログラミング言語を理解している人にとっては、「プログラマーは新しい言語を毎年1つは習得するべきだ」というのが腑に落ちるのだと思います。
プログラミング言語の議論について
プログラミング言語を説明する際には、下記のようなものはどうでしょうか?
・チーム開発で使用したいか?(Level4)
・今ある特定の目的のものが達成できるか?(Level3)
・50年前の過去に持ち帰って広めたい言語は何か?(Level2)
・300年後にタイムトラベルで送り出す人に薦めたい言語は何か?(Level1)
いかがでしたか?
私は、50年前には「go」を持ち帰り、300年後にトラベルするために「ruby」を勉強したい凡人です。
※本記事は「タグ説明」タグを付与した記事です。
https://qiita.com/j5c8k6m8/items/2359627ff8c3778d95f6