プログラミング初心者が身につけるべき言語はjavaでもなくrubyでもなく、国語だ!

f:id:hrmch-ioii:20180522231418j:plain

@nabeemichi

プログラミング言語について、どれがいいとか、どの言語がイケてるとか話題になることがありますが、

言語なんて所詮コミュニケーションを取るためのツールでございますので、どの言語だっていいんです。意思疎通ができればなんでもいいのです。

初心者は、Javaやるべきだ!とか、rubyがいい!とかは、重要ではないのです。

重要なのは、言語を利用してコンピュータとプログラミングした人、プログラミングを読んでる人が意思疎通できる状態をつくれるかどうか?ってことなのです。

そのためには重要なのが国語なんです。この国語ができないエンジニアが多すぎて、トンチンカンな実装で、何がしたいのか理解できない状態のアプリなんてザラにみますから、今回は国語の重要性について語ることにします。

プログラム組んでアプリつくるってのはものすごい考えることが多いんです

そもそも何を解決したいのか?

から始まって、どんな機能を作って、その機能を実現するためにはどんなロジック組むべきなのか?

まで考える必要があるんです。

SIerとかベンチャーだけど役割で仕事が割り振られる会社で働きたいなら何も考えなくても、仕様書の通りにプログラミング組めればいいという仕事があるらしいですが。それってわざわざプログラミング勉強してまでやりたい? 言われたことやればいい的な、人間がやる必要あるんですかね?っていう仕事をやるためにプログラミング勉強してもAIに仕事奪われそうだということに気づいてしまうのです。 こういう仕事がしたい人は、さっさと言語の仕様を理解するだけでいいので、国語なんて勉強しなくていいんですが、

スタートアップとか、自分でアプリ作りたいってなら国語勉強しないと厳しい。

考えるという過程がめちゃめちゃあるのがアプリ開発であって、開発者は全部やるんです。

だって、考えるベースって日本語ですよね?日本人なら。

帰国子女みたいに英語ペラペラでも、ベースとなる言語で考えるわけですので結局は母国の言葉になるのでやっぱり国語となるのです。

考えるベースの言語がそもそもちゃんとできないとプログラミング言語なんて勉強しても役に立たないというか、使い所がないんじゃやなか!?

プログラミング言語も所詮は言語なんです

言語は、読む時に作者が何を意図して書いているのかを考えながら読むものだと小学校のときの先生が言っていたような気がします。

だから国語のテストでは、「筆者の伝えたかったことを述べなさい」とか問われてきたのです。 (実は国語がめっちゃ苦手だったので国語のテストはあまり覚えてないのですが、確かこんな質問を見た気がします)

プログラミング言語も所詮は言語なので、プログラミングを書いた人が何を意図して、何をしたいのか?を考えながら読むことは多々あります。 (プログラミングは書くよりも読む量の方が実は多い)

プログラミングした人の意図を考えずに、プログラミングをしても間違った使い方や、意図しないことに巻き込まれます。

例えば不具合の修正がバージョンアップで当たった場合に、関係ないだろうと思ってたところが使い方間違ってたからエラーになる。

なんてことは普通に目撃します。意図を理解しないで利用していた人は、文句を言ってたりしますが、それはちゃんと理解して意図を理解してないのが悪い。


プログラミングの意図を理解するってことは、プログラミング言語という文字を読んで、理解して、筆者の考えを推測して、その推測をロジカルに説明できるようにして意図を汲み取らないといけないわけです。これって普通に国語なわけですよね!?

言語は書いて意図を読む人に理解してもらわないと言語じゃない

1人しか理解できない言葉は言語ではなくて、理解できる人がいないと言語としての役割を果たせない。

言語は意思を伝えるための道具なのですから。


コンピュータに理解してもらうのはもちろんなのですが、

一度書いた言語っていうのは、誰かに読まれるわけです。

不具合があった場合に原因を特定するためであったり、機能追加する為に他の人が読んだりするわけ。

ということは、やっぱりプログラミング言語という言葉を使って、人に読んでもらい、自分の実現したいことを理解してもらう必要があるわけです。

文章をプログラミング言語という文字で書いて、読んでもらい、意図を読み取ってもらう。

これも普通に考えて国語力が必要ってことになります。


ですから、国語苦手だなって思ったり、不具合出しまくるプログラマは国語をやりましょう。

意図が理解できないから不具合多いし、国語できないのに他の言語やっても意味ないっすから。