DIコンテナなんていらない

DIコンテナなんていらない。PHPのようなスクリプト言語では。


JavaでDIコンテナが必要なのは、Javaコンパイル型言語であり、かつ記述が長ったらしいという特徴があるからだ。そのため、頻繁に変更したい部分をXMLファイルに外だしする必要がある。


しかしPHPのようなスクリプト言語では、コンパイルの必要がないし、コードも簡潔に書ける。わざわざXMLファイルを用意する必要はなく、PHPファイルを設定ファイルに使えばいい。

続きを読む

クラス、インターフェース、型チェックの有無

odz氏のコメントより:

Java の interface を型付けを行うための機能だと見れば、静的な型チェックの有無は重要じゃないでしょうか。静的型付けを行わないなら、Java の interface は marker interface 以外の意味を持ちませんから。

2文目についてですが、そんなことはないと思いますよ。

続きを読む

『例えばInterfaceなどというものはJava以前には,まず存在しなかった』の意味は何なのか

ありえねえだろ。

例えばInterfaceなどというものはJava以前には,まず存在しなかった.

「難しい言語」の補足 - カレーなる辛口Javaな転職日記

と言っておきながら、

そもそも私は「Java(の開発者)がインターフェース(の概念及び機能)を一から発明した」とか「Javaの開発者がインターフェース(のアイデアも実装も)をすべて実現した」とか「それ以前にはインターフェースは(その類似機能も含めて)全く存在しなかった」などとは言っていませんよ.

元ネタ != 発明 - カレーなる辛口Javaな転職日記

これですよ。じゃあinterfaceの何がJava以前に存在しなかったと言いたかったのか。まったくもって分からん。これがはっきりしないと、話にならん。


釣りか?壮大な釣りなのか?

続きを読む

プロトコルとインターフェースの比較

http://d.hatena.ne.jp/carver/20071202#p1

やっぱり両方を使っている人の意見は参考になる。
ただ、ここで指摘されている「interfaceとprotocolの違い」は、正確には「JavaObjective-Cの違い」ではないだろうか。また指摘されている違いは、「interfaceとprotocolの本質的な違い」と言えるだろうか。


以下、詳細。

続きを読む

Interface != Protocolという話

この方はちゃんとJavaObjective-Cの両方を使っているようだ。だから言っていることにも頷ける。

そういう意味で、ProtocolとInterfaceは両方を使ってるプログラマとして「違う」と言わざるを得ない。ProtocolはObjective-Cという言語上は脇役で便宜上必要となった存在っぽいけど、Interfaceは「便宜上」ではなく言語としての思想にまで関連して導入されている感じがする。InterfaceはProtocolの考え方を主役にまで格上げした存在と言ったらいいのかな。
私はそういう点での違いを感じています。両方を使っているプログラマとしての率直な感想です。

http://d.hatena.ne.jp/t_yano/20071202/1196601869

これはまあ言っていることは分かる。ただ何が違うのかを明示してないのがちょっと残念。この文章ではたぶん「(言語における)重要度が違う」「立場が違う」と主張しているんだと思うんだけど、今問題なのは「機能が同じかどうか」たよね?「機能は同じだけど重要度が違う」ということなら納得。誰も文句はないと思う。もし「機能は同じだけど重要度が違うから違う機能」とか言い出したら、「機能は同じだけど目的が違うから違う機能」と言い放ったBlackなJava屋さんの同類。

Objective-CのProtocolというのはある意味「おまけ」なんですよね。リモート通信のために作り出された機構というか、必要悪というか、「ほんとうはこんなもの動的なObjective-Cにはないのが理想なんだけど仕方がない」という雰囲気が漂っているというか。Objective-Cの言語仕様の中心に位置していないというか。

http://d.hatena.ne.jp/t_yano/20071202/1196601869

Objective-Cをちゃんと使っていることがわかる文章。まったくその通りで、分散オブジェクトの導入がなければprotocolも実装されなかったと思う。Objective-Cのprotocolは、機能としては違えど目的はCORBAと同じなんだろう。


やっぱり使っている人の意見はいいね。ちゃんと的を得ている。使いもせず、資料を調べもせず、「違う機能だ」と言い張ってる某氏とはえらい違いだ。


で、JavaのinterfaceとObjective-Cのprotocolは、機能として何がどう違うの−?

JavaのinterfaceはObjective-Cがネタ元だとGosling自身が認めている件

Javaのinterfaceの起源が何なのかが話題(あるいは騒動)になっている。

  • 世界最初の Interface を考案したのは Java ?

http://d.hatena.ne.jp/minekoa/20071125/1195991187

  • 世界最初のXXXを考案したのは誰か?

http://d.hatena.ne.jp/JavaBlack/20071125/

http://d.hatena.ne.jp/sumim/20071126/p1


結論からいうと、Javaのinterfaceは、Objective-Cのprotocolがネタ元である。

続きを読む