アカウント名:
パスワード:
人気の問題というより、Objective Cの解説書がそんなに出回っていないのが原因じゃないかな。他の言語と違うところが結構多いから、いろいろ調べないとすぐには使えないしね。
#たとえばJavaプログラマにC#のコード見せればある程度は理解する#でもC++プログラマにObjective Cのコード見せても最初は混乱すると思うんだ
だから「人気急上昇中」じゃなくて「困ってる人の割合が急上昇中」のほうが正しそうな気がするんだけど。
いや, Objective Cの理解を妨げる最大のポイントは動的オブジェクト指向ってとこじゃないかな. 最近ならRubyとかで身近になってきましたが, 主流のC++やJavaだと静的オブジェクト指向なので, プログラムの思想レベルで異なる言語を取り扱うのは文法の差異よりも敷居が高いと思います.
昔、NEXTSTEP用ワープロソフトの開発をしてました。たしかにObjective-Cは動的オブジェクト指向ではありますが、その分、ランタイムで行う処理が増え動作が遅くなるため、なんでもかんでもObjectクラスにすればよいというわけではなかったです。その後、Objective-C→Javaときましたが概念的には殆どおなじだったのですんなり理解できました。interfaceと@protocolって同じ、とか。#Javaは表記はC++、概念はObjective-Cだと思っている。
C++プログラマにとって、Objective-Cとの違いは、ファイル構成と[]くらいでしょう。
かなり違うけどな。[]で書く部分、つまり、オブジェクト指向で書く部分はC++よりもJavaの方が近い。C++プログラマがJavaを使えるようになるためには、それなりにJavaを勉強しなくてはいけない。それと同じ。それでいて、自前でメモリ管理を要求されるので、Javaしかできない人には辛そう。
まあ、C++でピュアなオブジェクト指向プログラミングをしている人は困らんでしょうけど、普通はそうじゃないし、だからこそ、C++プログラマにとっては、落とし穴が満載。
Objective-Cを分かっていないね。古い知識で止まっている?
10年前の知識で止まっているかな。その頃の本しか持ってないし、OS XもJaguar止まりだったのですが、retain、releaseを送ることやNSAutoReleasePoolを使うこと以外にオブジェクトの解放で、今は何かあるんですか?ああ、そうですか。Objective-C 2.0ではGCがあるんですね。失礼しました。
オブジェクト指向プログラミングをやるという前提であれば、C++プログラマがObjective-Cを使うのにそれほど困ることはないと思いますが、やってないのが現実ですよ。「ピュア」と言う言葉が混乱を招いたようですが、たとえば、多態性に関して、使わなくていい多態性を回避する方向にあるのが、C++。放っておいても、多態性が使われているObjective-C。スタイルが違うんですよ。
Windowsプログラミングでは、MFCもATLもSTLも使わない?
そういうものを使えばオブジェクト指向のプログラミングなの?
C++で使うべき多態性と使わなくていい多態性の違いとは?
例えば、テンプレートで代用可能な多態性とか。
あとは、C++だと、基底クラスに仮想関数を書いておかないと、基底クラスの型で受け取ったものはキャストしない限り、派生クラスのものとして機能しないけど、Objective-Cは、基底クラス(スーパークラス)に書いておかなくても、同じメソッド名を持つクラスの型が指定してあれば、コンパイルは通るし、実行時には指定した型としてではなく、本来の型のものとして実行される。
C++では、基底クラスに余計なことを書かなくても済むよう、キャストで対応した方が良い場合がそれなりにあると思うけど、それは多態性を回避する方向だよね。
>まあ、C++でピュアなオブジェクト指向プログラミングをしている人は困らんでしょうけど、
pure OOP ってそもそもどんなだ? と思考の彼方に飛ぶことしばし……# "Rees RE: OO" でも読み直してくるか
素直に考えれば、急上昇したのは困ってる人の割合ですよね。悩まず使える人はgoogle教授に聞いたりしないもの!
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
人気とは違う気がする (スコア:2, すばらしい洞察)
人気の問題というより、Objective Cの解説書がそんなに出回っていないのが原因じゃないかな。
他の言語と違うところが結構多いから、いろいろ調べないとすぐには使えないしね。
#たとえばJavaプログラマにC#のコード見せればある程度は理解する
#でもC++プログラマにObjective Cのコード見せても最初は混乱すると思うんだ
だから「人気急上昇中」じゃなくて「困ってる人の割合が急上昇中」のほうが正しそうな気がするんだけど。
Re:人気とは違う気がする (スコア:1)
いや, Objective Cの理解を妨げる最大のポイントは動的オブジェクト指向ってとこじゃないかな. 最近ならRubyとかで身近になってきましたが, 主流のC++やJavaだと静的オブジェクト指向なので, プログラムの思想レベルで異なる言語を取り扱うのは文法の差異よりも敷居が高いと思います.
Re:人気とは違う気がする (スコア:1)
昔、NEXTSTEP用ワープロソフトの開発をしてました。
たしかにObjective-Cは動的オブジェクト指向ではありますが、その分、ランタイムで行う処理が増え動作が遅くなるため、なんでもかんでもObjectクラスにすればよいというわけではなかったです。
その後、Objective-C→Javaときましたが概念的には殆どおなじだったのですんなり理解できました。interfaceと@protocolって同じ、とか。
#Javaは表記はC++、概念はObjective-Cだと思っている。
Re:人気とは違う気がする (スコア:1)
JavaとObjective-C。言語の歴史なんかどうでもいいからソースも忘れちゃったですけども。
Re: (スコア:0)
もっとも「シェア」と同じで、瞬間的な数と絶対的な数の違いはあるでしょうが。
C++プログラマにとって、Objective-Cとの違いは、ファイル構成と[]くらいでしょう。
「C#なら理解できて、Objective-Cだと理解できない」としたら、
C#も理解できているかどうか怪しいなぁ。
にわかプログラマにとって、C#はJavaより3倍難しい :-p
Re: (スコア:0)
かなり違うけどな。[]で書く部分、つまり、オブジェクト指向で書く部分はC++よりもJavaの方が近い。C++プログラマがJavaを使えるようになるためには、それなりにJavaを勉強しなくてはいけない。それと同じ。それでいて、自前でメモリ管理を要求されるので、Javaしかできない人には辛そう。
まあ、C++でピュアなオブジェクト指向プログラミングをしている人は困らんでしょうけど、普通はそうじゃないし、だからこそ、C++プログラマにとっては、落とし穴が満載。
Re:人気とは違う気がする (スコア:1, 興味深い)
Objective-Cを分かっていないね。古い知識で止まっている?
少なくとも、「[]で書く部分」のシンタックスは、Smalltalkとほとんど同じで、
メジャーな言語ではLISPの次くらいに簡単。話にならんよね?
C++から違和感があるとしたら、型をいちいち()でくくったり、@が出てくることくらいか?
考え方やプログラミングモデルは、メジャーなオブジェクト指向言語と遜色ない。
Smalktalkと違って、ブロックとかないんだし、
C++やJavaとの違いは型がないことくらいでしょう。
LINQなんか比べたら、ずっと簡単だし、違和感がない。
複雑な多重継承なんてしない分、C++よりずっと楽。
「指定イニシャライザ」なんて覚えたら、「なんでC++にないだ!」と思うでしょうね(^_^)
>C++でピュアなオブジェクト指向プログラミングをしている人は困らんでしょうけど、普通はそうじゃないし、
「C++=ベターC」ならば、
C++→Objective-Cの差分と、java→C#の差分とでは、明らかにC++→Objective-Cの差分のほうが大きいわけで、それは論外でしょう。awk→rubyくらいの違いがあるよ :-p
「ピュア」かどうかは知らんが、オブジェクト指向プログラミング言語として理解している前提でしょう。
Re: (スコア:0)
10年前の知識で止まっているかな。その頃の本しか持ってないし、OS XもJaguar止まりだったのですが、retain、releaseを送ることやNSAutoReleasePoolを使うこと以外にオブジェクトの解放で、今は何かあるんですか?ああ、そうですか。Objective-C 2.0ではGCがあるんですね。失礼しました。
オブジェクト指向プログラミングをやるという前提であれば、C++プログラマがObjective-Cを使うのにそれほど困ることはないと思いますが、やってないのが現実ですよ。「ピュア」と言う言葉が混乱を招いたようですが、たとえば、多態性に関して、使わなくていい多態性を回避する方向にあるのが、C++。放っておいても、多態性が使われているObjective-C。スタイルが違うんですよ。
Re: (スコア:0)
>使わなくていい多態性
理解不能。
Windowsプログラミングでは、MFCもATLもSTLも使わない?
C++で使うべき多態性と使わなくていい多態性の違いとは?
Re: (スコア:0)
そういうものを使えばオブジェクト指向のプログラミングなの?
例えば、テンプレートで代用可能な多態性とか。
あとは、C++だと、基底クラスに仮想関数を書いておかないと、基底クラスの型で受け取ったものはキャストしない限り、派生クラスのものとして機能しないけど、Objective-Cは、基底クラス(スーパークラス)に書いておかなくても、同じメソッド名を持つクラスの型が指定してあれば、コンパイルは通るし、実行時には指定した型としてではなく、本来の型のものとして実行される。
C++では、基底クラスに余計なことを書かなくても済むよう、キャストで対応した方が良い場合がそれなりにあると思うけど、それは多態性を回避する方向だよね。
Re: (スコア:0)
言語的にはGCが定義されていますが、今流行となっているiPhone,iPadでは利用できず、相変わらずretain/releaseな日々です。
分かれば使いやすいのですが、APIに渡す際に retain されるのかどうかが分かりづらく、個人的には何とかして欲しいところです。
Re: (スコア:0)
>まあ、C++でピュアなオブジェクト指向プログラミングをしている人は困らんでしょうけど、
pure OOP ってそもそもどんなだ? と思考の彼方に飛ぶことしばし……
# "Rees RE: OO" でも読み直してくるか
Re: (スコア:0)
素直に考えれば、急上昇したのは困ってる人の割合ですよね。
悩まず使える人はgoogle教授に聞いたりしないもの!
Re: (スコア:0)
このランキングは、検索した数じゃないよ。
検索でヒットする数だよ。
そりゃ公開されている掲示板などで質問されている数も含まれているけどね。
勘違いしている人が多いみたいで、スラドの質の低下に鬱。