シンタックス
日本語 | 文法 |
英語 | syntax |
ふりがな | しんたっくす |
フリガナ | シンタックス |
プログラムの「文法」。
通常は「シンタックス」と対にして使用し、「プログラムはシンタックス上~だが、セマンティクスとしては~だ」といった使い方をする。
プログラムは「言語」であるため、様々な機能を持つ予約語や記号の組み合わせによって作られる。
これら予約語や記号には文法上の機能が決められている。たとえばprotectedメソッドは「サブクラスか、同パッケージのクラスからのみ呼び出せる」という「文法上の機能(シンタックス)」が存在する。
これはあくまで機能であり、プログラマーがその機能をどう使おうが構わない。機能は機能でしかないのである。
だが、実際にはこの機能は「意味(セマンティクス)」を持つ。
protectedメソッドはpublicメソッドに比べて「他のパッケージのクラスからは呼び出せない」という制約があり、privateメソッドに比べて「サブクラスから呼び出せる」という自由度がある。また、abstractメソッドに比べて「オーバーライドしなくてもよい」ということも言える。
以上の関係から考えて、メソッドをprotectedにする意味とは何か? を考えた場合、その結論は「サブクラスから呼び出せるようにする」という「意味(セマンティクス)」を読み取ることができる。
つまり、あなたが「このメソッドをサブクラスから呼んでもらいたい」と考えるなら、それをprotectedメソッドにすることで表現することができる。また、protectedメソッドを見たら「サブクラスから呼んで欲しいのかな?」と解釈することができるというわけである。
このように、無機質なシンタックスは、有機的なセマンティクスを内包している。
そして、「デザインパターン」のように「セマンティクスを表現するための、シンタックスのイディオム」が存在しており、このイディオムを踏まえて、J2SEを含めて多くのプログラムが作られている。
そのため、プログラムの学習時には、単に文法の意味(シンタックス)のみを追わず、それらが表現することのできる意味(セマンティクス)も学ぶようにすること。
通常は「シンタックス」と対にして使用し、「プログラムはシンタックス上~だが、セマンティクスとしては~だ」といった使い方をする。
プログラムは「言語」であるため、様々な機能を持つ予約語や記号の組み合わせによって作られる。
これら予約語や記号には文法上の機能が決められている。たとえばprotectedメソッドは「サブクラスか、同パッケージのクラスからのみ呼び出せる」という「文法上の機能(シンタックス)」が存在する。
これはあくまで機能であり、プログラマーがその機能をどう使おうが構わない。機能は機能でしかないのである。
だが、実際にはこの機能は「意味(セマンティクス)」を持つ。
protectedメソッドはpublicメソッドに比べて「他のパッケージのクラスからは呼び出せない」という制約があり、privateメソッドに比べて「サブクラスから呼び出せる」という自由度がある。また、abstractメソッドに比べて「オーバーライドしなくてもよい」ということも言える。
以上の関係から考えて、メソッドをprotectedにする意味とは何か? を考えた場合、その結論は「サブクラスから呼び出せるようにする」という「意味(セマンティクス)」を読み取ることができる。
つまり、あなたが「このメソッドをサブクラスから呼んでもらいたい」と考えるなら、それをprotectedメソッドにすることで表現することができる。また、protectedメソッドを見たら「サブクラスから呼んで欲しいのかな?」と解釈することができるというわけである。
このように、無機質なシンタックスは、有機的なセマンティクスを内包している。
そして、「デザインパターン」のように「セマンティクスを表現するための、シンタックスのイディオム」が存在しており、このイディオムを踏まえて、J2SEを含めて多くのプログラムが作られている。
そのため、プログラムの学習時には、単に文法の意味(シンタックス)のみを追わず、それらが表現することのできる意味(セマンティクス)も学ぶようにすること。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
}
/**
* たとえばこのprotectedメソッド。
* protectedメソッドは、文法的(シンタックス)には
* 「他パッケージから呼ばれない」といったものですが、
* privateメソッドやpublicメソッド、abstractメソッドではない
* ことを考えると「サブクラスから呼んで欲しい」
* ということが読み取れます。これが「protectedメソッド」に
* していることに「意味(セマンティクス)」を持たせる、
* ということです。
*/
protected void method()
{
}
}
public class Sample
{
public static void main( String[] args )
{
}
/**
* たとえばこのprotectedメソッド。
* protectedメソッドは、文法的(シンタックス)には
* 「他パッケージから呼ばれない」といったものですが、
* privateメソッドやpublicメソッド、abstractメソッドではない
* ことを考えると「サブクラスから呼んで欲しい」
* ということが読み取れます。これが「protectedメソッド」に
* していることに「意味(セマンティクス)」を持たせる、
* ということです。
*/
protected void method()
{
}
}
// Sample.java public class Sample { public static void main( String[] args ) { } /** * たとえばこのprotectedメソッド。 * protectedメソッドは、文法的(シンタックス)には * 「他パッケージから呼ばれない」といったものですが、 * privateメソッドやpublicメソッド、abstractメソッドではない * ことを考えると「サブクラスから呼んで欲しい」 * ということが読み取れます。これが「protectedメソッド」に * していることに「意味(セマンティクス)」を持たせる、 * ということです。 */ protected void method() { } }