高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

プログラミングに必要な「言語」は

最近、渋谷のTECH PLAYで毎月行われている、シニアプログラミングもくもく会にちょくちょく出ています。

シニア中心ということではありますが割と若い人も来ていたりしますが、どちらかというとプロのプログラマ というよりホビープログラマ・これからプログラミングをはじめよう という人が多く、わたしでも気後れすることなく参加できる場です。

techplay.jp

ほかのIT勉強会と違ってわたしも背伸びすることなく話ができる場で、なんというかふらっとステーション・とつかで技術的な物事にとても興味がある人と話しているような気分。

場所が場所なのと時間が時間なので、懇親会終わって帰るとなると終バスがあるかないかという場所ですが、それでも月一こういう場所に行けるというのはとてもいい気分転換になります。

プログラミングを学ぶ際にまず身につけるべき「言語」は何か

さて、4月のプログラミングもくもく会で話題に上がったものとして、「プログラミングを学ぶ際にまず身につけるべき「言語」は何か」というものがありました。

これについては時々他所でも話題になるのですが、ブログに書く機会はなかったのでいちおうまとめとして。

さて、プログラミングに最も必要な言語は。こう聞かれたとき、わたしは「母国語(日本語)」と答えています。

なぜかというと。

  • プログラミングの手順について考えるとき、大抵の人は母国語でまず考えるから。
  • 母国語の語彙が貧弱だと、検索ができないから。
  • ネットや現実の近しい人に意見を伝えるとき、たいていの場合それには母国語を使うから。

仮に、英語が堪能で日本語より英語で思考する、周りの人も英語圏の人が多い というのなら、もちろんそれでもいいのですが、そうでないのならたいていの場合、まずは日本語から覚えておくべきなのではないかな と、思います。

プログラミングの手順について考えるとき、大抵の人は母国語でまず考えるから。

プログラミングとは、コンピュータに「これからなにをするべきか、何かあったときにはどうするのか」を教える作業です。

そもそもその作業が自分で理解できていなければいけないわけで。そのとき一番中心になるのは母国語ではないかと思います。

結局日本語で構築したアルゴリズムを、それぞれのプログラム言語に翻訳していくことになるわけで。まずは母国語の理解が一番重要になるのかなと。

母国語の語彙が貧弱だと、検索ができないから

英語がよほど堪能で、夢も英語で見る みたいな人ならともかく、そうでない人は、まず何かを調べるときには母国語(日本語)からはじめるのではないかな と思います。

そういうときに語彙が貧弱だと、うまく検索ができない。

プログラミングという作業において、Web検索というのは必ず発生する作業です。

それぞれの言語について全てが記された書籍というのは存在しないし、情報は刻々と変化します。

よって、どうしてもどこかでWebの情報を探さなければいけない時が来る。

これはプログラミングに限った話ではないかもしれませんが、Web検索というのは、語彙力がないとろくに目的の内容にたどり着けません。

目的のものの正式名称はもちろん、何がしたいか、何に困っているのかを文章化したしないと、探すことができません。

プログラミングの情報は英語の方が多いため、最終的に英語で検索をする機会も出てくるでしょう。でもそのときも、まずは母国語で事象を説明できないと、どうしようもないんじゃないかなと。

ネットや現実の近しい人に意見を伝えるとき、たいていの場合それには母国語を使うから。

プログラミングというのは、ひとりで何でもやるわけではありません。

会社であれば同僚だったり、個人であってもWeb上や近所の知り合いだったり、いろいろな人と情報交換をしたり、作業分担をする必要が生じてくる。

そのとき使う言語は、たいていの場合母国語じゃないでしょうか。

また、今のプログラミング言語において、すべてにおいて一からプログラムを書いていくことはそうそうないでしょう。

どこかで既存のモジュールやライブラリを使ったり、自分でモジュールを作って公開したりすることもあると思います。

そんなとき相手の意見をちゃんとくみ取ったり、わかりやすい説明を書くためにも、母国語力が必要。

プログラミングに必要なのは英語?

プログラミングには英語が必要 とはよく言われます。

なんだかんだ英語を話すプログラマの割合はとても多く、プログラミングの情報をしっかり読み解くためには英語が必要。

とはいえ、それに必要なのは、完全に読解できるレベルではありません。

別に単語が拾い読みできるレベルでも良いし、それこそ翻訳ソフトに投げてもいい(もちろん「どこを翻訳すればいいか」を把握するためには、そこそこの英語力が必要にはなるのですが)。

正直わたしも英語圏の人や英語で作成されているGithubリポジトリの情報を読んだり、時々Issueに投稿したりもしていますが、翻訳ソフトに頼っているだけでもまあなんとかなる(とりあえず翻訳が正しいのか、誤解を招く表現になってないかを把握する程度の、最低限の英語力は必要ですが)。

もちろん英語はあったほうがいいです。でも、なくてもいいです。

英語を見て「ああっ、なんかよくわかんないからダメ!」とか言わない程度の知識と心構えがあれば、とりあえず何とかなる。

それよりもまず大事なのは母国語 ということで、わたしは母国語こそ大事 といっています。

最先端を行く人は、英語がしっかりできた方がいいかもしれない が…

チームの最先端を行く人なら、英語が確かにしっかりできた方がいいでしょう。周りの人より多くの英語文献を読むでしょうし、英語で情報発信をする機会もあるでしょう。

でも、そんな人もひとりだけでできることには限界がある。

チームメンバーの助けを借りたり、誰か近しい人の助けを借りることもあるでしょう。

そんなとき「自分が何に困っていて、何をどう手伝ってほしいのか」を伝えるにも、手を差し伸べてくれた人に意見を正しく伝えるためにも、ちゃんと母国語(というより、母国語にかかわらず、国語)力を持っておく必要があると思います。

そんなときでも母国語力と英語力と、どっちが重要?というのなら、母国語力の方が重要じゃないかと思います。もちろん比較的にでしょうが。

えっ、他の言語は二の次?

こんなことを言ってると「えっ、他の言語は二の次なの?」と言われそうです。

ハイ、二の次です。プログラミング言語なんてそのときそのときによって使える言語、使えない言語が変わってきます。アルゴリズムがしっかり理解できていれば、それで十分あとは辞書を読みながらでも、開発環境のインテリセンスに頼りながらでも、書ければいいのですから。

英語ができなくても、数学ができなくても

そして、もう一つ言いたいのは、英語力が無いからといって、あるいは、数学力がないからといって、プログラミングをあきらめてほしくない ということ。

英語力に並んで、プログラミングには数学力が必要だと、よく言われます。

でも、数学力がまったくないわたしでも、プログラミングできるんです*1

むしろ今は、そのくらいでもプログラミングを志す人こそが必要だと思っています。

数学力も英語力も技術力も高く、プロジェクトの中心人物になれるような人は、いくらでもいる。

ただ、今必要なのは、そういう人たちと、そこまでスキルの無い人たちの間を取り持つ人だと思っています。

たとえば、ふらっとステーション・とつかをはじめとする、地域のコミュニティ。プログラミングどころかパソコンの基本的な利用すら難しい人だってたくさんいます。

そういう人と、プログラミングが十分にできる人の間に立って、お互いの通訳をする人が必要なのだと思います。

そのためには、プログラミングが十分にできる必要はない。でも、プログラミングを含めて全てのテクノロジーにそれなりの理解が必要になる。

地域コミュニティに関わり、IT勉強会などの技術系コミュニティとも関わり、多くの人と話していると、特にそのような人の存在の必要性を感じます。

だからこそ、英語が苦手だとか、算数や数学が苦手だとか、大人になってそれに気がついたとか思っても、プログラミングを諦めないでほしいですね。

*1:小5の算数から危なかった、小6算数レベルの入社試験で試験官を唖然とさせる点数をとったことがある というのは、割とちょくちょくネタにしています