Javaでインスタンスを生成するとき、
Java
1Televison tv = new Television();
のように書くのは何故でしょうか?
たとえばPHPであれば
php
1$tv = new Television();
です。
PHPの書き方のほうがシンプルで分かりやすいと思うのですが、どういう意味・思想があって、Javaではあのような書き方をすることになっているのでしょうか?
もっと言えば、PHPerな素人の私から見ると、変数に「$」がつかないのも気持ち悪いというか、視認性に劣る気がします。
しかし世間的にはJavaのほうがいろいろと優れているという言説のほうが一般的です。
これらのPHPとの違いはなぜ・どのような理由で存在するのか、何が利点なのかを知りたくて質問させていただきました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
JavaはPHPと違いコンパイル言語で、静的型付けなので、型を指定(宣言)する必要があります。
そうすることにより、コンパイル時に厳密にチェックされます。
必ずというわけではありませんが、コンパイル言語は静的型付けの場合が多いです。厳密に型を指定してある方がコンパイルも楽ですし。
PHPの書き方のほうがシンプルで分かりやすいと思うのですが
とありますが、私はどちらかというとPHPの方が苦手です。
PHPは型宣言をしないので、$tv
がTelevision
クラス、或いはそれを継承したクラスである保証が一切ありません。
しかし、Javaの場合は、一度Television
型と決めたら、それ以外の値を入れることができませんし、Television
クラス、或いはその親クラスに宣言されたメソッドしか呼べません(呼ぼうとするとコンパイルの時点でエラーになります)。
私はJavaの様な静的型付けの方が安心感などがありますが、煩わしい、面倒くさいと思う方も当然います。
静的型付けに慣れ親しんだ人と、動的型付けに慣れ親しんだ人の違い、つまり「好み」であって、どちらかが優れているというわけではありません。
$
の有無ですが、PHPの様に変数の先頭に何かしらの決まり文句(PHPの場合は$
)を入れるという方が特殊なケースかと思われます。
可読性についてですが、Javaの基本的な規約(クラス名の最初は大文字、変数名の最初は小文字、定数名は全て大文字、など)にのっとって記述してあるならば、変数を他のものと見間違えたり、他のものを変数と見間違えたりすることは、滅多にありません。
私はプログラミングの勉強はJavaから入った後にJavaScriptやPHPだったので、最初は動的型付けが取っ付きづらく苦労しましたが、今はどちらもある程度いけます。慣れです。
やっぱJavaはダメだな、と思われるならそれまでですが、もし興味がお有りなら頑張って下さい。
苦手な言語を頑張ろうと、得意不得意、好き嫌いが無くなるわけではありませんが、慣れてしまえば使えるようにはなります。
投稿2015/08/28 11:11
総合スコア1156
0
どの言語がどの言語に対して劣っているとか、優れているとかは基本的にありません。
Javaが得意な分野もあればPHPが得意な分野も有ります。
一般的に大規模なWebアプリケーションを組む場合、PHPよりJavaが良いという話は私も聞きます。
また、PHPはWebアプリケーションしか作ることができません。
それをもってJavaのほうが優れているというわけではありません。
というのも逆を言えば、小規模から中規模のWebアプリケーションを組みやすいWebに特化した言語だからです。Javaが優れていなら、新しいページがPHPで作られることは無いでしょうけど、実際はWebの分野では最も一般的な言語の一つであり続けています。
また、PHPの魅力の一つとして、記述が簡単なため学びやすいというのがあると思います。そのせいで、高度なことができないと思われていたふしが有りますが、バージョンアップによっていろいろな機能が追加されています。PHPが劣っていると考えている人の一部には古いPHPを指して劣っていると言っている人もあるかもしれません。
PHPに比べ、Javaは簡潔が記述より明確な記述をする傾向がある言語だと思います。これは、大規模なアプリケーションだと明確にしないと間違いが起こりやすいことに起因していると思います。大規模なアプリケーションを混乱なく記述するためにJavaはいろいろな工夫をしています。
Javaを学んでいくと”面倒臭いなあ”という記述に度々合うことになると思います。しかし、Javaである程度大規模な開発をした後、PHPで書くと逆に”わかりづらいなあ”と思うこともあると思います。
また、変数の型がはっきりしているとコンパイルによって、実行速度がに格段に向上します。そのため、Javaでは変数を定義するときには型を指定します。変数に$を使うのはPerlとPHPくらい(?)なので、慣れの問題だと思います。
PHPの次にJavaを学ぼうとしているところ素晴らしいとおもいます。
投稿2015/08/28 10:35
総合スコア2883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/28 18:01
2015/08/29 04:03
0
ベストアンサー
私には逆に、なんの型の指定もなく入れられる言語の方が怖いです。
Javaでわかるのは、少なくともtvに入っているものはTelevisionかTelevisionを継承したオブジェクトです。
その後の代入でPhoneクラスがtvにぶちこまれることはありません。
PHP
1$tv = new Television(); 2$tv = new Phone();
これが可能であるほうが、Javaエンジニアには怖いのです。
「$」がないと気持ち悪いという気持ちは、あながち間違いではないです。
shellスクリプトなんかも$がないとダメですしね。
じゃあ、Javaは変数がわかりにくいの?って言うと、別にそんなこともないんです。
「規約に沿って書く」という前提が守られていれば、それほど読みにくいソースにはなりません。
PHPの優位性は、導入のしやすさ、保守の簡単さだと思います。
少なくとも、「ちょっと修正したから、サーバーに上げよう」と思うのはPHPで
Javaは「ある程度修正がまとまったらリリースしよう…」になります。
それぞれの言語は一長一短ですし、だからこそ言語戦争は今も絶えず起こっているのだと思います。
投稿2015/08/28 10:13
編集2015/08/28 11:22総合スコア856
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/28 11:57
0
型宣言てヤツです。PHP は変数に型がない(ワケではないが…)ので
それが省略できるだけで、普通は必要です。
例えば int foo;
と整数型で宣言した変数 foo に文字列を入れようとするとエラーになります。
PHP はこれがごちゃまぜになってもエラーにならないので、
コードが解りにくくなると言われています。
投稿2015/08/28 09:34
総合スコア150
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/28 09:49
2015/08/28 10:24
2015/08/28 11:50
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/28 13:10