Objective-C勉強中

勉強ってほどでもないですが、Mac買ったのとオブジェクト指向に慣れたい気持ちから、詳解 Objective-C 2.0を読んでいます。
実際には大体読んで概要わかったので、一旦中断しても良いかなと思っているところではありますが。


Objective-Cはご存知Macの開発を行う際の、いわばMac開発の標準言語として用いられている言語で、名前から推測出来るとおりC言語にオブジェクト指向の機能(機構?)を追加したものです。
C++と似たような立ち位置ではありますが、C++よりもObjective-Cの方がSmalltalkの影響を強く受けており、よりオブジェクト指向っぽくなっております。
C++はどちらかというと、Cに対しての機能拡張の末、結果的にオブジェクト指向言語っぽくなったものらしいという話を聞いたことがあるので、そもそもの思想が違うっぽいです。

そんなObjective-Cですが、面白いところも多いのですが、個人的にはどうしても納得がいかないことも多々、、

たとえばメソッドの呼び出し、Objective-Cでは[]で括るのですが、
返り値に対して重ねてメソッドを何回か実行したい場合、[[[obj1 method1] method2] method3]みたいに何回も入れ子にしてやらないといけない。
なんかこのスタイルは納得出来ん。
まぁPythonのインデントと一緒で慣れなんだろうとは思いますが。

あとはメモリ管理の方法も結構慣れが必要だなーと感じました。
リファレンスカウントを自分でretainしたりreleaseしたりするってのは正直結構な手間なんじゃないかと。。
2.0からはGCを実装しているようなので、なんちゃってプログラマ的にはGCゴリッと使うのが一番楽なんでしょうけども。

ただそれ意外は動的なメソッドの解決が出来たりとか、非常に楽しくプログラミングが出来そうなので、
つまらないことにとらわれていないで積極的にCocoaアプリでも作ってみたい。が、ネタはない(^^)サーセン

とりあえず今回はJavaとかC++以外のオブジェクト指向言語の本が読みたかっただけなので、一応目的は達成とします。
せっかくMac買ったのでMacっぽいものに触れたかっただけとも言えますが。

脱MEL以降、やっとオブジェクト指向な言語を普段使い出来るようになったわけですが、
書いてる内容がMEL書いてたときとあまり変わっていない状況を見ると非常にげんなりしてしまうわけです。
オブジェクト指向は開発を楽にするために非常に便利な考え方、及びツールだと思っています。
なのでもうちょい積極的にオブジェクト指向な開発手法に関して学んでいかんとなと思っている次第です。
とりあえずMayaの場合、Pymel使うのが良いのかななんて思ってますが、どうなんでしょうか実際。
一旦自分でアレもどきを作ってみたいとも思っているので、その後でも良いかななんて思っています。
まぁあそこまでのものは作れないので簡単なところから理解していけたら良いんですが。

オブジェクト指向やるならこれぞ!って本とかあれば是非教えて欲しいです。
やっぱりデザインパターン系なんでしょうか。
これは一応持ってます。
最初、使いどころがわからねー!って思って、イテレータとシングルトンぐらいしか使い出を想像できませんでしたが、最近再度読み直してると多々便利そうなのもあるので、そういうところからはじめます。
全部を熟知する必要なんてないよね多分。もちろん知ってるに越したことは無いだろうけど、どういうのが便利かは実際アプリケーションの種類にもよるだろうし、実用的なところから。

まだまだ勉強せねば。

 
~追伸~
先日chiyamaさんに、「taiさん、やんなきゃって書いてそれ以降投げっぱなしなこと多いですよねwww」っていわれました。
すみません、それでいいと思ってました。書いたことはやんなきゃダメですかね。
まぁ、そこはやりません今後も。
ここはあくまでもメモの場所なので誰かを意識して書くことを極力排除していきますww
なので役に立たない情報を量産していきますがよろしくおねがいします(ぇー

「Objective-C勉強中」への5件のフィードバック

  1. 人にはそれぞれ向いた学び方があるものだと思いますが,自分の場合,知識を勉強するよりも実際に何か書いてみた方が理解が早かったように感じます.

    数学なんかもそうなんですが,概念が抽象化,若しくは一般化されている知識って,実際にそれが役立つシチュエーションにならないと本当に理解した気がしないんですよね.オブジェクト指向なんてまさにこの典型みたいなものです.

    個人的な経験から言えば,MELで書けるレベルのコードだと,いくらPython等の言語を使って書いても恩恵が少ないように思います.もう少し大きめのプログラム,それもstandaloneな物を書いてみると,一気に理解が進むんじゃないかな.

  2. > [[[obj1 method1] method2] method3]
    へえ~、メソッドと引数の順番は逆ですがLispみたいですねー。Lispでは関数の呼び出しとリストの形式を同じにして抽象度をあげている(関数呼び出しと思いたいときは関数呼び出し、リストだと思いたいときはリスト)のでObjective-Cもそんな感じなのかもしれません。

  3. 自分のことを棚に上げてエラそうなこと言ってすいませんwww 全然いいですよー。

    ただ、ググって memlog に辿り着いて期待に胸を膨らませて読んで、肝心なところになって”続く!!”となったときの寸止め感はお察しくださいwwww

  4. >ますおさん
    おっしゃるとおりです。ただ体系的に基礎から、という意味では最初僕はCに挑戦したのですが、全く意味が分からずひとつも身につきませんでした。
    実際JavascriptであるとかMELであるとか、直接効果が実感出来るものがやはり一番勉強になりましたし、伸びた気がします。
    今回もまた然り、とは思うのですが、某プロジェクト向けに2000行程度の、僕にしてはかなり大きめのツールを書いた時にあれこれ知識不足を実感しまして。最後の方は随分良くなってきてたのですが、なんとも。。

    なのでオブジェクト指向に関しては、今は知識が必要な時だなーと思って、あれこれ違った視点から勉強してます。
    実際に何か作ってみるのが良いとは思うんですが、何が良いですかね。うーむ、、

    Mayaのプラグインとかは、ほとんどAPI使ってばっかりになるので、オブジェクト指向の練習というとまた違う気もして、、

    ちょっとネタを考えないと、、

    アドバイスありがとうございます(・・)ノシ

    >hohehohe2さん
    Lispでは確かにすべてがS式ということなので抽象度があげられているんですが、これはただ単にメソッド実行のための書式なんじゃないかと思います。
    確かにメソッドの呼び出しとしては見た目分かりやすいかもしれないですが、うーん、、
    僕にはやはりこれの利点がわかりません。
    慣れだとは思うんですが、何事も。

    というわけで、hohehohe2さんの次の勉強はObjective-CでiPhoneアプリということでどうでしょうか!

    iPhoneアプリか、、standaloneの練習に丁度いい、かも?でもワタシiPhoneモッテナーイorz

    んー、、、何か良い題材。
    正直いわゆる問題集みたいなの解くのもアレなので、実用的でテンション上がるものを作りたいです。やるならば。

    うーん。

  5. >chiyamaさん
    やっぱりあおってるじゃないですかw
    んー、、やっぱり半端な情報は乗せないようにしますか。
    折を見て全部消します(ぇーーーーー

    まぁそんなわけないですがww

    全部答え導き出せたら良いんですけどねー。そこが今の僕の限界というか。。。
    本当に本当にすみませんそこは。
    今後頑張ります。

コメントを残す

メールアドレスが公開されることはありません。