英語とプログラミングの共通項
このnoteの主題とはちょっとズレるのですが、プログラミングやソフトウェア開発についてのどうでもよいウンチクはこれまで何度か語らせて頂きつつ、英語についてはまだ何もお話しさせて頂いていなかったように思います。
誠に勝手で申し訳ありませんが、今回は「英語」について、ちょっとばかり思う所を語らせていただけたらと思います。英語やプログラミングの学習についてという意味では内容もなく、とくに何も学ぶことはないと思いますので、その点は予めご了承頂ければ幸いです。
前振り
自分は「英語が出来る」と思っているか、というのは非常に重要な問いであります。答えは「『出来る』の基準は人それぞれ」、です。
テストで良い点を取って「出来る」ようになった、と達成感を感じるのもありでしょう。英語ネイティブと話して「出来る」ようになった、と感じるのもありでしょう。「出来る」という定義はひとそれぞれです。
これは何に対しても言えることなのですが、一般に、その道を突き詰めていけば行くほど、自分はなんて「出来ない」んだろう、と思い知るものです。
「上には上が居る」というのともちょっと違って、「上達すればするほど、その道の奥深さを知る」みたいなところでしょうか。「峠を超えて初めて山頂が見えてくる」というかなんというか。
なので、その道の「初学者」と「プロ」に、「あなたは上手ですか?YesかNoで」と訊くと、初学者はYesと答え、プロはNoと答えたりすることがあります。(ダニング=クルーガー効果という認知バイアス)
面白いですね。
自分はというと、あえて一言でいうと、出来ないわけじゃないけど出来るわけでもないというか、一応の不便はないくらいです、みたいなところかな、と。
これはプログラミングにも言えて、以前詳しく書いたのですが、自分は「エンジニア」と名乗った事は一度もなく、自分は単なる「プログラミングをする人」程度の「ユーザー」にすぎないといつも思っています。自分は基本、文系人間ですし。
英語もプログラミング言語も、どちらも期間だけはそこそこ長く使ってきて(自分がプログラミング言語を初めて学んだのは1999年頃、英語をガッツリやったのはその数年前)、しかも文系なのにも関わらず、両方使いながら特に違和感も感じないのは、全部に共通する点があるからでした。
文章を書く事、英語、プログラミングの共通項
共通項は、「単語」、「文法」、「論理(ロジック)」です。これが出来ればどれもある程度は出来ちゃいます。
日本語話者であれば、単語と文法はご存知でしょうから、論理的な文章構成さえ出来れば、まとまった量の文章を書くことが出来ますよね。逆に論理的でなければ、何を言いたいのかよく分からん、というまとまりの無い文章になってしまいます。
英語も同じく、単語と文法を理解して論理的に使うことができれば、なにも難しいことはないのです。日本語が使えるのであれば、英語が使えないわけがない、ということです。ただ覚えるのが面倒なだけで。
しかし、日本語と英語の違いというのは確かにあって、その一つは英語の方が、より論理的に明確で厳格だ、ということです。例えば、英語だと「主語」を明確にしなければなりません。必ず、「誰が」とか「何を」を意識しなければならないのです。色々と曖昧で通じてしまう日本語とは確実に異なる点です。
英語の場合、文法的により論理的だというのみならず、教育と環境でより論理的になります。
特にアメリカを例に挙げると、高校か遅くとも大学で初級の義務課程で教える基本クラスで「クリティカル・シンキング」を学びます。これ日本語では「批判的思考」ってちょっとニュアンスが違うのですが、「鵜呑みにしないで自分で分析して論理的に考える」みたいな感じと言えます。つまり、基本教育で論理的に考える訓練をさせられるのです。
さらに、環境的な要因として、アメリカは移民で成り立ってきて、今もそうなので、多種多様な慣習・風習・常識の人達の集まりで、「阿吽(アウン)の呼吸」なんかでは一切なにも通じません。ごくごく当たり前のことから確認して説明した上で論理的に話さないと、誤解されるだけでなく、ちょっと込み入った話しになると、まったく通じないことが多いのです(いわゆる「ローコンテクスト社会」)。
ホントかよって思われそうなので、他の方の話しも引用させていただくと、
なんですよ。これホント。
つまり、英語は日本語よりも文法的、教育的、環境的に、より論理的な言葉だ、と言えます。
さて、最後のプログラミングについてですが、これはぶっちゃけ、この論理的な英語をより厳格にさらに論理的にしただけ、と言えます。
いやホントに。
プログラミングには、「If」、「else」、「for」、やら、「loop」、「while」などなど色々と英単語が出てきます。それらをどういう構文で使うかが文法です。それらを組み合わせて論理的に構成するのがプログラミングというものです。少なくとも高級言語とよばれる大多数のプログラミング言語ではそうです。
プログラミングでは、論理的に間違いなく丁寧にカッチリ書かないと、プログラムが正しく動かないということになります。分かりやすい良い文章を書くのと基本、同じことです。
文章を書く際、まず、共通認識を打ち立て(背景を定義し)て話題を設定します。次に、問題提起なり主張なりをして、その根拠を述べていきます。
プログラミングでも、まず、何をするプログラムなのか(主張)を決め、定数やクラスなどの定義をずらっと書いて、実装でそれを使ってロジカルな文でデータ処理や問題解決をしていきます。
まったく同じなのです。実感として。
なので、極論を言えば、「論理的(ロジカル)な思考が上手い人」というのは、文章を書くのも、英語も、プログラミングも、同じ様に上達する、ということだと言えます。
余談ですが、そういう意味で、以前もチラッと書きましたが、「小学生の子供をプログラミング教室に通わせる、と言った昨今の風潮には賛同しません」ということです。「寧ろ、そんな時間があったら子供の頃から日本語・算数(数学)・英語(つまり読み書きそろばん)をしっかりとやらせておくべきだ、と言いたいです」と。「論理的な思考」の訓練さえ出来ていれば、後でどうにでもなります。
日本語でも、複雑な内容の事柄を正確に、誤解を受けないよう詳しく、なおかつ分かり易く簡潔に、そして筋が通るように書くのは意外に難しいものです。論理的な構成力が必要なのだと思います(「伝える」ためには読み手の立場に立って考える想像力も必要ですが)。
英語でも、当然ながらそれはまったく同様です。そして、プログラミングなんて、英語をつきつめて論理的に書いたものにすぎません(断言w)。(真面目に補足すると、プログラミングは突き詰めると英語と論理・数学)
なぜそう思ったかというと、このnoteを始めて、数年ぶりにまともな量の日本語の文章を書くようになったのですが、これ、自分のプログラミングのスタイルにそっくりだ、とふと思ったからです。
つまり、だいたいのアイデアをダーッとざっくり書いたあとに、さらに書きなぐっちゃ入れ替え差し替え、ダラダラと細かな点を弄る・・・という酷いスタイルというか癖。
私の文章の書き方を見れば、私がプログラミングでどんなコードを書いているか、分かる人にはバレバレなのかも知れません・・・。
おそろしや。
補足
英語にしろプログラミングにしろ、基本を学んだあと、より上達していくにはどうしたら良いか、というのも共通していて、「ひたすら使って慣れる」ことに尽きると思います。(どこで壁にぶつかるかは人それぞれかなと)
また、良い文章や良いプログラム、というのもポイントは同じで共通だと思います。それは、読者やユーザーという対象を理解して、その人達の必要性に合ったものを、(想像力を働かせて)分かりやすいように、使いやすいように、書く、作る、ということだと思います。(文系が得意な分野ですね)
日本語について補足させていただくと、日本語は情緒的で良い、というのは有名ですが、それだけではなく、論理的にも書けるし、自由にも書ける、おまけに表意文字で内容が分かりやすく凝縮される上に、カタカナで外国の概念をそのまま借用もできる、というハイパー便利で優れた言語なので、恐らく世界でも最強クラスの言語だと思っていたりします。
ただ、残念ながらというべきか、ITの分野のみならず、世界を見渡すと外交やビジネスにおいてもリンガフランカとしての英語が一強になりつつあります。(カサブランカではありません、そこのお爺さん。Lingua franca = 共通語、通商語の事であります)
この記事が気に入ったらサポートをしてみませんか?