はじめに
技術の進化を肌で感じながらも、「その技術って実際どういう意味があるの?」 とずっとモヤモヤしていませんか?そんな疑問を解決するために、今回はプログラミング言語と自然言語の違いを整理してみました!
「え、まさか自分が自然言語の感覚でプログラミング言語を理解してた!?」 という発見が私にはありました。これからプログラミングを学ぶ人や、技術広報、エンジニア採用に携わる人には絶対に知ってほしい、そんな内容です!
自然言語とプログラミング言語の違い
項目 | 自然言語 | プログラミング言語 |
---|---|---|
言語の例 | 日本語・英語・ドイツ語など | JavaScript・PHP・Swiftなど |
伝える相手 | 人間 | コンピュータ |
言語の目的 | 情報や感情、考えを伝える | 正確な命令を与える |
ニュアンス | 曖昧でも文脈で理解される | 厳密な文法ルールに従う |
表現方法 | 話す・書く・聞く・読む | コード(プログラムとして書く) |
学校で習った「英語」や「ドイツ語」など、 人間へ話しかける時に使われる言葉は「自然言語」 と呼ばれています。それに対して「JavaScript」や「PHP」など、 コンピュータに話しかける言語は「プログラミング言語」 と呼ばれています。
「画面に ‘Hello, world!’ と表示してね」と伝えたい時、相手が日本人なら「画面に ‘Hello, world!’ と表示してくれませんか?」と日本語(自然言語)で伝えます。
一方でコンピュータに「画面に ‘Hello, world!’ と表示してね」と伝えたい時は、例えばJavaScript(プログラミング言語)で以下のようなコードを書きます。
console.log("Hello, world!");
正しく動いてもらうための命令を出す
日本語や英語など 自然言語の目的は情報や感情、考えを伝えること です。例えばアメリカ留学中に現地の人に、I go school. というと「ああ、学校に行くのね」と何となく相手に意味は伝わりますよ。
でもプログラミング言語では、ほんの少しの間違いでもエラーになります。それは プログラミング言語の目的は「命令」 だからです。そのためプログラミング言語を扱う際にはルールを厳守する必要があります。
自然言語とプログラミング言語の違いを整理するとこんな感じです。
- 自然言語= 「伝えたい気持ちに合わせていろんな方法を使う」
- プログラミング言語= 「コンピュータに間違いなく伝えるためにコードを書く」
TOEICのようなマークシート形式のテストに似ていますね。 I go school. だと不正解(0点)、I go to school. だと正解(5点)みたいな感じのイメージです。正しいか、正しくないかで判断されます。
正しさを判断するために、表現方法は限定的
目的の違いから表現方法の豊富さにも差異があります。自然言語(英語や日本語)は表現方法が豊富です。使う場面や媒体が自由で、表現も感情やニュアンスを乗せられます。
- 話す(会話、スピーチ)
- 書く(手紙、小説、メール)
- 聞く(ラジオ、会話を聞く)
- 読む(本、記事)
一方でプログラミング言語は基本的には「コードを書く」ことがメイン。コンピュータに正確に命令すること」が目的なので、表現が正しいかどうか判断できないときにエラーが発生します。
- 決められた場所で(テキストエディタなどで)
- 決められた方法で(基本はテキストを用いて)
- 決められたルールで(厳密な文法のルールに則って)
というように、プログラミング言語には厳密なルールがあります。
これもTOEICのようなテストと似ていますね。不正解(0点)、正解(5点)で、マークシートの記入欄がズレていても情状酌量の余地は一切ありません。
まとめ
項目 | 自然言語 | プログラミング言語 |
---|---|---|
言語の例 | 日本語・英語・ドイツ語など | JavaScript・PHP・Swiftなど |
伝える相手 | 人間 | コンピュータ |
言語の目的 | 情報や感情、考えを伝える | 正確な命令を与える |
ニュアンス | 曖昧でもOK(文脈で理解される) | 命令が全て(ルール厳守) |
表現方法 | 話す・書く・聞く・読む | コード(プログラムとして書く) |
改めて自然言語の特徴を踏まえて、プログラミング言語の原則はこんな感じです。
- プログラミング言語はコンピュータに対して期待される動作を指示するための手段。
- コンピュータに指示を出しているので、英語(自然言語)を理解できないのは当然。
- 正確な指示を伝えるのが目的のため、基本的にはルール厳守で表現方法も限定的。
例えばこの前提を理解していると、コンピュータが人間の言語を理解し、解釈し、生成するための技術である自然言語処理(NLP、Natural Language Processing) の優れた点を技術の歴史から理解できたりします。
ということで技術広報を始めて1年目の人にまず最初に知ってほしい、自然言語とプログラミング言語の違いでした!