[PR] 迷惑メール トップページプロ3ゼミJavaJava入門講座一学期単位1 →1時間目

1時間目 Javaについて(規則及び主義)

1−1−1.プログラムとは

 私たちが普段使っているパソコンや知らない間に利用している会社のサーバや銀行のサーバ等には、ハードウ ェアだけではなく必ずソフトウェアが存在します。

 ソフトウェアとは、プログラムの手順や処理を表します。
私たちが普段利用するソフトウェアには、ブラウザ等が思いつくかもしれませんが、ブラウザ等の特定のソフト ウェアをアプリケーションと呼びます。
ソフトウェアやアプリケーションは、プログラム言語で書かれており代表的な一つにJavaがあります。
Javaのようにプログラム言語を使いソフトウェアを作成すれば、その指示通りにハードウェア(パソコン等)が 動作します。

 プログラムを作成する場合にはルール及び規則(プログラミング規則及びJava主義を参考に!)があります。
ルール又は規則をこれから学んでいく事により、自由自在にハードウェアを操る事ができるで頑張りましょう。

1−1−2.Javaとは

 Javaとは、プログラム言語の一種と紹介しましたが、Javaとはどういうものか誕生した経緯、特徴を説明し ます。

 Javaはもともと家電製品向けのプログラミング言語として開発され誕生した言語です(1991年頃)。
家電製品は数多くの種類が存在しメーカごとに独自規格が多くそれぞれ開発する必要がありました。
そこでJavaは、家電のプラットフォームに依存しないプログラミング言語を開発しましたが、成功したとはい えません(厳密に言うとそのころの名前はJavaという名前では有りません)。
成功できていなかったJavaですがインターネットが流行(1995年頃)したのをきっかけに「プラットフォーム に依存しない」という利点を生かし注目され始め急成長しました。

 Javaは、昔から現在まで使われているC++やCなどのプログラミング言語を参考に作られている事もあ りC++やCなどと似た文法が多く、プログラミングの入門として最適な言語です。
Javaを取得後にC++やCを勉強すればJava取得時より楽にプログラミング言語を取得できるようになります。

 Javaの特徴を以下に列挙します。
1.プラットフォームに依存しない(移植が容易)。
2.オブジェクト指向である。
3.ポインタが無い。

 Javaの特徴をこのように説明するのは間違ってはいないのですが、ベテランの開発者からは色々と苦言があ るかもしれません(上記の3つは、一般的にJavaの特徴を述べるときによく言われる事です)。
苦言の理由として、1はJVMがインストールされている事が前提である事やJavaのバージョンによっては新機能 に対応していないなどを気をつけなければならないからです。
移植とは、他のマシン(WindowsからMacなど)へソフトウェアが移動したときに、従来のマシン同様に動作 する事や動作できるようにする事です。

 2は、完全なオブジェクト指向かと言われれば専門家の方に違うと言われる事でしょう。
オブジェクト指向は、単位6 1時間目 オブジェクト指向とJavaの クラスで説明します。
私の場合は、プログラミング言語である以上仕方無い事だと割り切っています。
オブジェクト指向に完全に対応していなければ、劣っているように思われるかもしれませんが、プログラミン グ言語として劣るという事はなく、完全に対応していない方がプログラミングが楽な面もあると思います。

 3は、私から言わせるとJavaはポインタと言う用語が無いだけであり、ポインタしか無いとも言えるのです。
C++やCなどでポインタを理解したプログラマなどはJavaを習っていくうちにポインタがあると気が付くのです。
そこで、Java入門講座は、Javaにはポインタ云々を飛び越してポインタをC++を使い参考程度に補足します。
Javaには、ポインタに替わって参照と言う言葉が出てきますが、まさしくそれがポインタに関連する部分です。
そのため、Javaでポインタを覚えると言うのも的を外れている事は無いと思っています。

 私が最初に習った言語と言うのは、ポインタが使えるCでした。
その時に、習ったポインタはJavaでも役に立っています。
その思いがあり、プログラミングを学ぶ上で最初にJavaを学ぶ際にポインタを教えたいと言う経緯があります。

1−1−3.プログラミング規則及びJava主義

 Javaには、守るべきルールがあり、プログラミング規則とJava主義があります。
プログラミング規則は、Javaを作成する上で最低限守らなければいけない規則で規則に反するものはコンパイル エラー(詳細は後程説明します)というエラーです(今後コンパイルエラーという用語が出てきた場合はプログ ラミング規則に反していると思って下さい)。

 Java主義は、プログラム的には(プログラミング規則上は)規則(制限)されていない事でも、Javaプログラ ムではこのような書き方の方が望ましいという考え方(主張)です。
Java主義に反せずプログラムを書けば、オブジェクト指向やJavaプログラムとしては綺麗なソースで書かれてい る事だと思ってください。
また、他のプログラマなどのプログラムを見る人が理解しやすく見やすいという意味です。
「綺麗なソース」という表現を使っていますが、この表現は一般的に使われており良いソースの事やプログラム 全体が良いプログラムの事を表しています。

 プログラミング規則及びJava主義を日常生活に当てはめる事ができます。
例えば、法が規則であれば、マナーが主義です。
税を納める事が規則であれば、ボランティアが主義と言えます。

 上記の例は、あくまで基準であって視点や立場が変れば主義が規則にも変わります。
例えば、地域で法律には書かれていないが条例で定められている場合は、一般的なマナーでも規則で守らなく てはいけません。

 まとめると、入門講座でプログラミング規則と書かれている場合は、コンパイルエラー、実行エラー又は文 法エラーを指している。
Java主義は、Javaの場合はこうするべきである事を示している(これから学ぶクラスで、クラス名は先頭の単 語が大文字などの事です)。
プログラミング規則は、Java特有と言うよりは、プログラミングの解釈の事を意味(プログラミングの規則) している為にCなどに対しての違いは少ないです。
他の言語との違いは、Java主義の方が特有で他の言語に対しJavaではこうすると良いと区別する場合は、Java 主義ではなく、Java規則とも言い換えることが出来ます。

1−1−4.Javaと他の言語を比較すると

 世界で一番多く使われている言語は、VB(Visual Basic)だそうです。
プログラミングは、プログラマだけではなく業務のちょっとしたプログラム又は趣味でプログラムを書く人も いる為、初心者でも扱いやすいVBを使うのでしょう。

 なぜVBの話をしたかというとJavaはC又はC++等と違い、色々な制約を持っている為です。
制約を設けるという事は、書き方(コード・スタイル)が統一され間違いも減ってきます。
その一つの機能として、ガベージコレクション(後で詳しく説明します)があります。
C及びC++は、この機能を自分自身で書かなくては実現できません。
優秀なプログラマ又は経験のあるプログラマなら問題は無いのですが、世界中で使っている人達は必ずしもそ うではありません。
そのため、Javaは初めから機能を標準で持つ事により生産性及び保守性を上げているのです。

 しかし、優秀なプログラマにとっては自分自身で記述をしたくてもそれができないため、困惑の原因にもな りました。
Javaは、プログラムの中でも制約のある言語だといいましたが、制約又はルールがあるからこそ生産性を上げる 事ができるのです。
特にJavaでは、デザインパターン又はフレームワークも数多く存在し生産性又は保守性を飛躍的に上げていま す。
デザインパターンとは、ある処理を記述する時のデザインをパターン化しそれを利用する事によりプログラ ムを記述するのです。
フレームワークも誤解を恐れないで言えば(よく使われる表現です)、制約又はルールです。
ルールを設ける事により、誰が見ても(ある程度経験があれば)処理の全体像が把握できるのです。
本Webは、Javaを批判するのではなく、その制約の中にこそプログラマの差が出る事をいいたかったのです。

 誤解を恐れない為にもいくつか例を挙げます。
例えば、野球にも当然ルールがありますよね、このルールはJavaも同じで決してこのルールがある為に野球の プレイがつまらない要因にはならないですよね。
又、ルールがあり制約が有る為に誰が投げても打っても同じではないのと一緒です。

 サッカーなどの他のスポーツから見ればそれが野球と言うルールに縛られているだけで、Javaの場合は、記 述と書き方にルールがあるだけでその内部ではプログラマの差によって大きく左右します。
当然、強い選手が居た方が能力を最大限に活用すればそれだけで良い試合になるのと同じです。

 戦いで使用する武器でCとJavaを比較すると、Cは基本的な剣、ピストルや大砲などの基本的な道具を使い戦 う事だと思ってください。
Cは、基本的な道具を使う事により柔軟な戦いができる一方、その人の腕で差が大きく開いてしまう戦い方なの です。

 一方Javaは、最新の武器が一定期間の間で送られてきます(Javaは、今もなお発展しており、フレームワー クも次々に新しく誕生している)。
最新の武器は自動制御などで、ある程度は機械が自動にやってくれます。
しかし、その分細かい制御が効きかない為その状況におおじて武器を切り替えないといけなく、基本的な武器 に比べて武器の種類も多く取得にもそれなりに時間が掛かります。

 CとJavaを武器で説明しましたが、どちらの方に魅力を感じたでしょうか。
好みの問題もありまるが、プログラミングの仕様から機動性はCの方が高く、オブジェクト指向であるJavaは再 利用性やWebアプリケーションに向いてると言われており場合に応じて使い分けるのが一番の適切な対応かもし れません。

 武器の説明でもそうですが、当然Cプログラミングが得意であってもJavaプログラミングが優れているとは言 えずJavaにはJavaの勉強の仕方があります。
よって、Cを使う優秀なプログラマとJavaを使う優秀なプログラマはセンスが違うとも言えます。
本Webでは、Javaプログラミングに必要なセンスを身に付けられるので安心して講義を受けて下さい。


2時間目 Javaの設定に進む

単位1 Javaとプログラミングに戻る

トップページに戻る