日本語基礎文法最速マスター

2010年02月27日


能書き

基礎文法最速マスター」というプログラミング言語の仕様解説記事が流行っているらしい。例えば、「Perl基礎文法最速マスター」・「Python基礎文法最速マスター」・「Ruby基礎文法最速マスター」といったものがあるらしい。なお、『ネットサービス研究室』というところに「プログラミング基礎文法最速マスターまとめ」という記事がある。

ここでいう「文法」とは、もちろん「プログラミング言語」の文法のことだ。だが、言語学者としては「自然言語」の文法の仕様解説記事を見てみたい。

プログラミング言語の最速マスターを色々見ていると、プログラミングの初心者にとっては、全く最速でマスターできるようなものだとは到底思えない。全くの初心者が最速マスターを見たら、きっと意味不明な文字列のオンパレードで何を書いているのか分からなくなると思われる。

だが、Perl基礎文法最速マスターの冒頭に

他の言語をある程度知っている人はこれを読めばPerlの基礎をマスターしてPerlを書くことができるようになっています。

と書いてあるように、最速マスターシリーズは他の言語をある程度知っていることが前提になる。要するに、前提知識がある人にとっては、真に最速マスターなのだ。1つ目の外国語の勉強より、2つ目の外国語の勉強の方が楽というのと同じ感じだ。

となると、自然言語についても、何か別の自然言語についてよく知っている人にとっては、最速マスターに近づけそうなものを書けばいいことになる。

とりあえず、「日本語基礎文法最速マスター」でも書いてみようかなと考えていたら、『kwatchの日記』というところで既に「日本語基礎文法最速マスター」が書かれていた。ただ、kwatchの日記の「日本語基礎文法最速マスター」は、日本語の作文技術に偏っているし、他のプログラミング言語の最速マスターと書き方の構造が違っている。なので、もうちょっと他の最速マスターに似せて、日本語文法の全体像を解説できるような「日本語基礎文法最速マスター」を書きたい。なので、この記事は二番煎じというわけではない。

なお、言語学的にそれほど正確な内容ではないので注意されたし。

プログラミング言語と自然言語の用語対照

  • コンパイラ = 聞く人・読む人
  • ソース = 発音された音声・書かれた文字
  • プログラマ = 話す人・書く人
  • 変数 = 単語
  • 変数の型 = 品詞
  • 引数 = 補部・修飾部
  • 関数 = 主要部

日本語とは

主に地球上の日本という国家で使用される言語。利用者は1億人強。日常会話などライトな目的から、研究論文などハードな目的にも使用可能。

琉球諸語以外に類縁言語は存在しないが、朝鮮語と似ている面がある。語彙は、中国語の影響が大きい。

Hello World

日本語の入出力には、通常、音声を使用する。音声は他の自然言語と同様に、肺から空気を送り、口腔内で阻害などをすることで発することができる。国際音声記号 (IPA)で表記すると、以下の通り。

[kon.ni.ʨi.wa.se.kai]

また、音声を使用するかわりに文字を使用することも可能である。

こんにちは、世界。

ソースファイル

音声によるソース

音声を使用する場合は、他の自然言語とそれほど変わらない。

音の基本ユニット

まずは母音から。オーソドックスな5母音体系。/a/, /i/, /u/, /e/, /o/の5つ。ただし、/u/は唇をそれほど丸めない。

子音は14通り。/p/, /b/, /k/, /g/, /t/, /d/, /s/, /z/, /h/, /n/, /m/, /r/, /j/, /w/。

音の組み合わせ

日本語では、子音1つの後に母音1つを組み合わせることで1つのユニットを作る。このユニットをモーラと呼ぶ。なので、基本的に子母・子母・子母・子母・子母・・・というパターンが続く。ただし、子音は省略できる。母音は省略付加。

また、撥音・拗音・促音などの特殊な組み合わせもあり、これらは子音1つの後に母音1つという基本パターンには当てはまらない。

文字によるソース

文字を使用する場合は、他の自然言語と違って、さまざまな形式で表記することができる。日本語には、漢字・ひらがな・カタカナという3つの体系の文字があり、これらの組み合わせでソースファイルを書く。ひらがなだけ、あるいはカタカナだけでも、問題なくコンパイルできる。例えば、

ろんどんは、きりがおおい。
ロンドンハ、キリガオオイ。

は、同じように解釈される。

ただし、通常、日本語のソースファイルは、漢字とひらがなを中心として、場合によってカタカナを交えて表記される。こうした方が、コンパイルの効率が上がる。

ロンドンは、霧が多い。

また、ソースファイルにはローマ字を用いることもできるが、めったに使用されない。

Rondon-wa kiri-ga ooi.

文法チェック

完全無欠な文法チェッカーは存在しない。しかし、他の自然言語と同じくコンパイラが優秀なので、文法が多少間違っていても、コンパイルは通ることが多い。

例えば、

太郎は花子をプレゼントを渡した。

という文は文法的に誤っている。しかし、通常コンパイラは、以下のような文法的に正しい文として解釈してくれる。

太郎は花子にプレゼントを渡した。

コメント

プログラミング言語と違ってコメントというものはない。

変数の宣言

変数は自由に宣言することができない。しかし、日本語には豊富な変数が既に用意されているので、プログラマは新たに変数を宣言する必要はない。もし、プログラマが勝手に変数を宣言した場合、コンパイルエラーが発生する。

例えば、「えなす」というのは日本語に存在しない変数だが、これを勝手に宣言した場合、コンパイルエラーが起こるだろう。

ねえねえ、今度、頭をえなすのだけれども、えなす方法知っているかな。えなすのが初めてだから、誰かえなすのが好きな人を探しているんだ。

日本語の変数は半分くらいが、中国語由来である。例えば、「簡単」という変数は中国語由来である。また、「ペン」のように英語由来の変数もある。

変数の型

他の自然言語と同じように、名詞型・動詞型・副詞型などの型がある。

動詞型は文中に表れる位置によって表記の形式が変わる(活用)。「走る」という動詞型オブジェクトは、肯定コンテクストでは「走る」という形で用いられるが、否定コンテクストでは、「走ら(ない)」という形になる。

型変換は自動的に行われない。例えば、名詞型をそのまま動詞型にすることはできない。例えば「学習」という名詞型オブジェクトは、そのままで動詞型にすることはできない。型変換をしたい場合は、特殊な動詞型オブジェクト「する」の引数として名詞型オブジェクトを取ればよい。例えば、「学習する」という形式になる。

助詞の付与

変数間の関係を確定させるために、助詞というオペレータが用いられる。

例えば、「-が」は主語を表し、「-の」は修飾を示すオペレータである。

文脈から理解できる場合などでは、助詞は省略される。

引数の配置

日本語は、引数を関数の前に置く。いわゆる主要部後行型の言語である。例えば、

私は太郎を殴る。

という文だと、関数の「殴る」が一番最後で、「私は」と「太郎を」という引数が前に来る。引数同士の順序は割合と自由で、先ほどの例で言うと、

太郎を私は殴る。

としても良い。以下の例文のように、関数を前に持ってくることも不可能ではないが、普通はこういうソースは書かれない。

私は殴る、太郎を。

制御構造

2つの文に分けて記述することもできるし、1つの文にまとめることも可能。

順接構造

2つの文に分けるときは、「そして」などを使う。

太郎は花子が好きだ。そして、花子も太郎が好きだ。

あるいは「そして」などを使わずに、

太郎は花子が好きだ。花子も太郎が好きだ。

としてもOK。以下のように1つの文にまとめてもよい。

太郎は花子が好きで、花子も太郎が好きだ。

逆接構造

2つの文に分けるときは、「でも」・「しかし」などを使う。

太郎は花子が好きだ。でも、花子は次郎が好きだ。

1つの文にまとめたければ、以下のようにすればOK。

太郎は花子が好きだが、花子は次郎が好きだ。

モジュール

日本語のモジュールには、さまざまものが豊富に用意されている。地域に基づく有名なモジュールとして、関西弁というモジュールがある。また、女言葉というモジュールもある。

モジュールを手っ取り早くインポートするためには、そのモジュールが使われている地域で生活するのがよいだろう。

その他

ソースを書く人と他者の関係によって、ソースの書き方を変える場合がある。これを敬語法と呼ぶ。

山田さんがいらっしゃいましたよ。

というソースが書かれる。上記のソースは、通常は以下のように書く。

山田さんが来たよ。

ソースの書き方を変えなくても、コンパイルをちゃんと通る。しかし、その後、コンパイラがソースファイルを受け付けなくなる可能性がある。



Posted by green_idea at 21:21│Comments(0)TrackBack(0)言語学全般 | プログラミング |

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/green_idea/1117465

コメントする

名前
URL
 
  絵文字