- 1 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 12:18:31 ]
- Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:ja.wikipedia.org/wiki/Objective-C より) 前スレ pc11.2ch.net/test/read.cgi/tech/1106983092/ 前々スレ pc5.2ch.net/tech/kako/990/990574267.html
- 445 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:30:36 ]
- >>443
あんまりまともなプログラムを書いた事のない俺が思う程度だけど、 他言語をちょっと囓っている+英語の情報も読んでいけるのならアリだと思う。 ただ、全く分からない人がいきなりObjective-Cからだと ・最近は増えてきたものの日本語の情報(Web&書籍)が少なめ。 ・AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり。 この辺でちと大変かも。 基本的には意欲だと思う。逆に言えば意欲が弱いとJavaだろうがC言語だろうがPHPだろうが関係なくだめだと思う。 ベストな環境はリアルでもメールでも掲示板でもいいけど疑問に答えて教えてもらえるような人間がいると覚えは早いと思う。
- 446 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:40:36 ]
- >>444
サンクス 各言語の違いが全くわからないのでググって検討してみます C#よりC++の方がいいんですね >>445 サンクス 意欲・・・きっかけがそもそもiPhoneという厨な理由だからどこまでいけるか わかりませんが・・・ >AppleのドキュメントもC言語の基礎知識とかを前提にしている感あり やっぱりC関連から入った方がいいのかもしれませんね
- 447 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:51:48 ]
- >>446
そういう動機であれば最初はRuby on RailsとかでWebアプリを作成してiPhoneから利用すれば簡単だと思う。 そういう資料はネット上に沢山転がってるからググって見るといいよ。 ある程度プログラミングに自信が付いてからObjective-Cに移行すればスムーズに学習できそう。 こういう順番でやれば、サーバーサイドとクライアントサイドの両方の知識が得られる。 両方の視点でプログラミングできればiPhoneに負荷をかけないプログラムを作成するノウハウも見つけられると思う。
- 448 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:22:14 ]
- >>447
ありがとう。なんて親切なんだ(つД`)・゚・ Ruby on Railsを調べてみます
- 449 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:46:27 ]
- ObjCの前にCはやっといた方が良いけど、C++は覚えなくてOK.
(C++専用のライブラリを使いたいのでもなければ) C#はiPhoneでの開発には全く不要。 iPhone用プログラムならまずWebアプリから作ってみるというのには賛成。 PHPでベタ書きか、Python + DjangoかRurby + Railsあたりがおすすめ。
- 450 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 18:58:24 ]
- >>449
dクス。感涙で前が見えない。゚(゚´Д`゚)゜。 うーむ、C++でもC#でもなく初代Cがいいのか・・・ iPhone用ゲームの開発が主目的なんですが、やはりWebアプリから学んでいったほうが いいんですかね?
- 451 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:21:49 ]
- 明確にiPhone開発がしたいならObjCから始めるべきだと思う.
モチベーションは全てに優先するよ.
- 452 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:32:08 ]
- うむ、iPhone Application Tutorialからど〜ぞ。
- 453 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:03:11 ]
- 皆さんありがとう
明日Amazonから萩原本が届くのでとりあえず読んでみます(`・ω・´)
- 454 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:33:13 ]
- まてまて、荻原本はプログラミング初学者には敷居が高いぞ。
他言語でokなので、何かしらの入門本を読んでからの方が良いと思われ。
- 455 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:43:01 ]
- 初めてで萩原本読むくらいなら、
英和辞書片手にヒレガス本第3版読んだ方が良さそうだな。 平易な文体だから高校生以上なら辞書なしでも 大体のフィーリングは掴めると思うし、スクリーンショットや挿し絵も多いしな。
- 456 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:46:52 ]
- >>454>>455
Σ (゚Д゚;) そ、そうなのか・・・ では上で教えてもらったCとか、Ruby on Railsとかの入門書から挑戦してみます ヒレガス本第3版というのも見てみます(洋書は気おくれしそうですが・・・) ありがとう ってか皆さん滅茶苦茶お詳しいっすね・・・(;´Д`)
- 457 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:50:31 ]
- 個人的な趣味としてRubyと Railsを押すけど、webアプリを作って外部に公開する場合レンサバ借りるときにいろいろ困ることがあるよ。
英語が得意なら海外でRails向けのホスティングサービスがあるけどね。 iPhoneアプリを作りたい位だからLeopardユーザだと思うけど、 TextMateってテキストエディタをDLしてきて p "Hello World" って書いて拡張子を rb 保存して Command+Rをするだけで実行できて楽だと思う。 ってスレ違いになるからこのくらいにしておく。 その心意気はすばらしいけど、荻原本はまったくもってプログラミング初心者が読む本じゃないよ。
- 458 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:25:47 ]
- でもObjective-Cの仕様なんてCに毛が生えたようなもんだし、
Objective-Cの書籍として荻原本はベストな選択の一つなのは間違いない。 強いて言うなら、Cの入門書とCocoaフレームワークやInterface Builderに ついての本を一冊ずつ買っとくといいと思う。
- 459 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 22:16:38 ]
- >>457
>>458 アドバイスサンクス 道は一本じゃなさそうなのでいろいろ齧ってみます しかしプログラムの道は高く険しいなぁ・・・
- 460 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:21:38 ]
- >>459
あと、iPhone プログラムを突然はじめるより、いちど OS X 用の小さいプログラムを書いてから iPhone にいったほうがわかりやすいかもしれない。 大体構造いっしょだし、OS X 用プログラムの書き方のほうがネットに沢山ころがってます。
- 461 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:25:19 ]
- >うーむ、C++でもC#でもなく初代Cがいいのか・・・
Obj-C は C++ と同時期に(80年代) C から派生した言語なので、まあ並列だよ。 べつに C++ を勉強したから Obj-C がわかりやすいとかその逆ということではないです。 両方ともオブジェクト指向だけど、毛色が360度違います。 C# は Java のクローンだよね。Java 自体が C, Obj-C, C++ を参考に開発されたものだし。
- 462 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:49:02 ]
- C#、特にC# 3.0はJavaより強力な言語になってるよ。
ただ実質的に実行環境や開発環境がWindowsに限られるのが難。(Monoもあるけど) MS製の環境にどっぷり浸かるならば良いとは思う。VS.Netも強力だし。 ただiPhoneの開発には使えないし、応用できるテクもおそらく無いw
- 463 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:53:15 ]
- 勘違いさんいらっしゃーい >>462
はいさようなら。
- 464 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:55:19 ]
- >>460
>>461 >>462 俺みたいなクレクレ厨にここまで親切にアドバイスしてくれるなんて・・・ みんな優しいな。゚(゚´Д`゚)゜。 よその板なら「ググれやカス」で終わっても不思議じゃないのに・・・ ありがとう、このご恩は忘れませぬ ノシ Windowsのゲーム作りならC#がいい、って聞いたことあるので いつかC#も触ってみます
- 465 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:58:27 ]
- >>464
>このご恩は忘れませぬ 検討を祈る。成功したら後輩に優しくな!
- 466 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:59:10 ]
- 自作er乙
- 467 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:14:15 ]
- iPhoneアプリに関しては正式に配布できるような形のプログラムのTipsとかは現時点ではNDAがあるからないに等しい。
Appleのサンプルプログラムくらいしかソースも読めない。 Objective-Cをやるなら >>460が言うようにMacアプリからやった方が現時点ではいいだろうね。
- 468 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:19:01 ]
- Mac用だけどObjective-Cの入門記事です。
journal.mycom.co.jp/column/objc/index.html
- 469 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 13:36:38 ]
- Objective-CってVisitor Patternが使えないの?
- 470 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:39:27 ]
- え?
- 471 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:03:20 ]
- そもそも visitor pattern なんて使わないだろ
- 472 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 19:03:52 ]
- Visitor Patternを使うのに、何か問題でも?
- 473 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:49:15 ]
- Visitor Patternといえば木構造の処理系作成に使ったことがある。
でも、Objective-Cはメソッドオーバーロード出来ないから特殊な方法でやった。 普通の意味でならVisitor Patternが使えないのは本当。
- 474 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 21:05:42 ]
- Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ?
オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。 単純に複数の名前のメソッドを使い分けるだけでは?
- 475 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:08:31 ]
- >単純に複数の名前のメソッドを使い分けるだけでは?
そんなメンテナンス性の悪いコーディングしてどうする
- 476 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:41:48 ]
- ようするに
void action(A obj) void action(B obj) と定義されていたものが、 void actionWithA(id obj) void actionWithB(id obj) となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?
- 477 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:55:39 ]
- 今帰宅
萩原本届いてた ちょっと読んでみた (´;ω;`) ・・・。 やっぱりCの入門書から読みます >>467>>468 ありがとう 心折れかけたけど地道に頑張ります
- 478 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:13:32 ]
- >>477
まあプログラミングにも王道は無しだよ。あなたの今のように謙虚な気持ちを忘れなければきっとできるようになります。 あと、C のポインタのあたり、文字列操作の細かい話は あまり勉強しなくても大丈夫なので読み飛ばしてください。
- 479 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:23:20 ]
- おいおい、ポインタはいるだろ。
Cocoaだって最近のAPIはNSError **が大量にあるだろ。
- 480 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:26:42 ]
- ポインタってみんなどういうところでつまづくの?
「変数を入れてるメモリエリアのアドレスを渡す。」 それ以上になにか必要か?
- 481 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:32:40 ]
- 478 ですが、全然いらないというつもりはないんだけど。
>>480 さんの言ったことを言いたかったです。言葉が足りませんでした。 & と * はわかっておいたほうがいいけど、Objective-C ではそれで充分だよね。 malloc / free は要らないし、ポインタ演算 (足し算引き算) は要らないでしょ。 あと、配列は知らなくてもいいし、配列とポインタの等価性も要らないし、 文字列が char* 配列だということも知らなくてなんとかなるのでは。
- 482 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 23:56:38 ]
- >>476
>ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね? それで多重継承や多重ディスパッチを出来ると強弁するならご勝手にw
- 483 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:01:28 ]
- >>480
>配列とポインタの等価性 エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。>>481はわかっていない。
- 484 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:13:51 ]
- >>482
Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ... visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 とわからない言葉をならべてみる
- 485 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:15:10 ]
- >エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。
いやまあ、Objective C スレとしては、そのへんでひっかかろうがひっかかるまいが Objective C では必要ないよというので充分なのでは。
- 486 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:19:14 ]
- こういうスレで嘘は良くないのではないかい?
- 487 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:34:22 ]
- 世の中には平気で嘘をつける人がいる。
嘘を指摘されるとそういうものは必要ないと言いだす。 そういう無反省な態度は無自覚に行われるから本人は嘘を良くないとは考えていない。
- 488 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 00:41:12 ]
- >>484
>visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 ほんと馬鹿。逝ってよし。
- 489 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:09:23 ]
- 481 ですが、嘘を付いてすいませんでした。
折角なので配列とポインタがどんなふうに違うかわかりやすく教えてください ...
- 490 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:18:07 ]
- www.cocoadev.com/index.pl?VisitorPattern
でも同じような議論になってる
- 491 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:48:48 ]
- >>364でも同じような議論になってる
嘘つきはお断り
- 492 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:52:06 ]
- >>489
C FAQ
- 493 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 03:46:16 ]
- >>489
ぐぐれカス
- 494 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 05:46:43 ]
- >>483
たしかにそうだ なんとなく分かってるつもりでも 間違って覚えてるケースが結構ある 正しい理解が必要
- 495 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 06:28:26 ]
- 嘘つき語録
>>474 Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ? オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。 単純に複数の名前のメソッドを使い分けるだけでは? >>476 ようするに void action(A obj) void action(B obj) と定義されていたものが、 void actionWithA(id obj) void actionWithB(id obj) となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね? >>478 @C のポインタのあたり、A文字列操作の細かい話はあまり勉強しなくても大丈夫なので読み飛ばしてください。 >>481 Bmalloc / free は要らないし、Cポインタ演算 (足し算引き算) は要らないでしょ。 あと、D配列は知らなくてもいいし、E配列とポインタの等価性も要らないし、 F文字列が char* 配列だということも知らなくてなんとかなるのでは。 >>484 Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ... visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。 とわからない言葉をならべてみる
- 496 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 07:42:09 ]
- 他はしらんが、C における文字列操作の細かい話は勉強しなくてもいいのは本当では?strstr とか知っててもしかたないよね。NSString でいいんじゃね?
- 497 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:19:11 ]
- いろいろな言語の文字列操作関数の比較表
Ruby, Python, JavaScript, Perl, C++ 0xcc.net/blog/archives/000137.html Ruby, PHP, Objective-C d.hatena.ne.jp/hetima/20061025/1161773698 意外とObjective-Cも健闘してる希ガス。 実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。 テキストエディタの作成のところでもNSStringを使ってる。 第1回:iPod touchにアプリケーションがインストールできる不思議 www.thinkit.co.jp/free/article/0711/9/1/ 第2回:iPod touchの自作アプリケーションが作れる&動かせる! www.thinkit.co.jp/free/article/0711/9/2/ 第3回:iPod touchで動作するテキストエディタはこう作る! www.thinkit.co.jp/free/article/0711/9/3/ 第4回:夢のオフラインRSSリーダを作ろう! www.thinkit.co.jp/free/article/0711/9/4/
- 498 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:27:53 ]
- 実際のHello Worldプログラムを紹介する。(その1)
// hello.m #import <UIKit/UIKit.h> #import "HelloApplication.h" int main(int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; return UIApplicationMain(argc, argv, [HelloApplication class]); }
- 499 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:28:40 ]
- >>497
>実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。 >テキストエディタの作成のところでもNSStringを使ってる。 べつに NSString の使い方を示すのなら 「実際に」iPhone じゃなくて「実際に」Mac / GnuStep でいいのでは...
- 500 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:28:56 ]
- (その2)
// HelloApplication.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import <UIKit/UIApplication.h> #import <UIKit/UIPushButton.h> #import <UIKit/UITableCell.h> #import <UIKit/UIImageAndTextTableCell.h> @interface HelloApplication : UIApplication { UIImageAndTextTableCell *pbCell; UITableCell *buttonCell; } @end
- 501 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:31:14 ]
- (その3)
// HelloApplication.m #import <CoreFoundation/CoreFoundation.h> #import <Foundation/Foundation.h> #import <UIKit/CDStructures.h> #import <UIKit/UIPushButton.h> #import <UIKit/UIThreePartButton.h> #import <UIKit/UINavigationBar.h> #import <UIKit/UIWindow.h> #import <UIKit/UIView-Hierarchy.h> #import <UIKit/UIHardware.h> #import <UIKit/UITable.h> #import <UIKit/UITableCell.h> #import <UIKit/UITableColumn.h> #import "HelloApplication.h" @implementation HelloApplication - (int) numberOfRowsInTable: (UITable *)table { return 2; } - (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col { return row ? buttonCell : pbCell; }
- 502 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:33:15 ]
- (その4)
- (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col reusing: (BOOL) reusing { return pbCell; } - (void) applicationDidFinishLaunching: (id) unused { UIWindow *window; BOOL i = TRUE; window = [[UIWindow alloc] initWithContentRect: [UIHardware fullScreenApplicationContentRect]]; pbCell = [[UIImageAndTextTableCell alloc] init]; [pbCell setTitle: [NSString stringWithFormat:@"Hello World!"]]; UIPushButton *button = [[UIThreePartButton alloc] initWithTitle: @"Touch Me"]; buttonCell = [[UITableCell alloc] init]; [buttonCell addSubview: button]; [button sizeToFit]; UITable *table = [[UITable alloc] initWithFrame: CGRectMake(0.0f, 48.0f, 320.0f, 480.0f - 16.0f - 32.0f)]; UITableColumn *col = [[UITableColumn alloc] initWithTitle: @"HelloApp" identifier: @"hello" width: 320.0f];
- 503 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 09:33:47 ]
- (その5)
[window orderFront: self]; [window makeKey: self]; [window _setHidden: NO]; [table addTableColumn: col]; [table setDataSource: self]; [table setDelegate: self]; [table reloadData]; UINavigationBar *nav = [[UINavigationBar alloc] initWithFrame: CGRectMake( 0.0f, 0.0f, 320.0f, 48.0f)]; [nav showButtonsWithLeftTitle: @"Foo" rightTitle: @"Bar" leftBack: YES]; [nav setBarStyle: 0]; struct CGRect rect = [UIHardware fullScreenApplicationContentRect]; rect.origin.x = rect.origin.y = 0.0f; UIView *mainView; mainView = [[UIView alloc] initWithFrame: rect]; [mainView addSubview: nav]; [mainView addSubview: table]; [window setContentView: mainView]; } @end
- 504 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 10:10:59 ]
- 勘違いさんいらっしゃーい >>499
はいさようなら。
- 505 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:04:42 ]
- POCはMacじゃ使えないんですか?
- 506 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:23:12 ]
- めずらしく伸びてると思ったらもう夏休みなんだな…
小中学生ばっかりか
- 507 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:25:50 ]
- Objective-Cは、文字列を`char *'型にするか、NSStringオブジェクトにするか選択できるハイブリッド型であるということが特徴です。
これがObjective-CのほうがSmalltalkより高速な理由です。 別な観点から言えば、 Objective-Cプログラムのすべての要素がオブジェクトで表現されていたとしたら、おそらくSmalltalkと同程度の速度であり、 Smalltalkが行なえる基本クラスへの最適化がないことで苦戦するでしょう。 つまり、文字列操作の細かい話は勉強しなくてもいいと言っている人はObjective-Cのメリットを全く理解していないんです。
- 508 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:27:01 ]
- >>506
ボクが小学生だからってバカにするオマエがバカ!
- 509 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:33:53 ]
- >>505
PoweMacのみ。IntelMacでは動かない。EtoileはIntelMacでも動くよ。
- 510 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:47:16 ]
- >>507
ええと、一応聞いておくけど、本気でそう思っているのか ? おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?
- 511 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:02:20 ]
- >おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?
逆に質問しよう。なぜ、最適化という問題を持ち出したかと言えばオブジェクトのオーバーヘッドを理解しているからじゃないのか? 自分で最適化しないでも、問題を理解していれば、そういった処理を注意深く扱うようになる。それで速度的な問題を回避できるようになる。
- 512 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:12:05 ]
- 近頃の人ってsprintfとか使わんの?
- 513 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 13:48:32 ]
- 「文字列操作ルーチンを自分で書いて最適化できるのか ? 」って極端すぎるだろw
よっぽど悔しかったのかw
- 514 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:11:34 ]
- >>512
sprintfなんて使ってるやつはばかです
- 515 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:25:30 ]
- >>514
理路整然とした理由も述べないで否定するだけなら小学生でもできる。 まさか小学生じゃないよな? sprintfとNSStringでの文字列操作の用例を挙げて比較したうえで なぜsprintfを使うのがばかなのか述べてくれないかなぁ。 これは非常に興味深いテーマだ、>>514、君の意見が聞きたい。
- 516 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:37:03 ]
- sprintfのmanくらい読んでから質問してください
- 517 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 14:48:23 ]
- snprintfだろう常考
- 518 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:20:33 ]
- クズばっかだな
- 519 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:33:50 ]
- snprintf!!
wwww 現場を知らない廚はコレだから困る。
- 520 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 15:37:21 ]
- >>514の言い分けマダー?(゜∀゜)
- 521 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 16:30:50 ]
- わけけ?
- 522 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 16:52:33 ]
- >507
一行目は同感だけど、最終行は同意できない。 いまさら自力で文字列”操作”をする人はいないでしょ。 使うとしたら簡易パーサぐらいだろうけど、 それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。 それともこの程度のことも”操作”に入る? NSLogは改行されるし、妙な出力が追加されるんで、fprintfを使うことは多いよね。 >>516 +[NSString stringWithFormat:format, ...] がsprintf相当だね。
- 523 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:07:54 ]
- >一行目は同感だけど、最終行は同意できない。
結局、全く理解してないことを指摘されて図星だったのかw まともな反論も出来ないチンカスw
- 524 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:39:14 ]
- >いまさら自力で文字列”操作”をする人はいないでしょ。
>使うとしたら簡易パーサぐらいだろうけど、 >それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。 で、NSStringを使う利点まだぁ?チンチン その程度でC言語の文字列操作の細かい話は勉強しなくてもいい理由だって主張してるの?
- 525 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 17:56:20 ]
- 佐藤藍子 「NSStringさえあればもうNSStringC言語の文字列操作の細かい話は勉強しなくてもいいと思ってました」
- 526 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 18:27:42 ]
- ごめん。
人違いだわ、それ。 おれ、>522が初発言ね。 >NSStringを使う利点まだぁ? 楽だから。 べつにお勉強の為に文字列を操作するのは止めないけど、 お勉強以外であえて泥沼を選ぶ意図が俺には分からないね。
- 527 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 18:40:21 ]
- >>526
「>>514じゃないけど」ぐらいことわってから書くぐらいしろよ。 間違われても仕方ないだろ。 まぎらわしいぞw
- 528 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 19:02:20 ]
- ごめん。
ID無いの忘れてたんだよ。
- 529 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:14:12 ]
- 外人さんがつくった Cocoa ソフトで日本語環境でつかうと
おかしくなるのがあって、ソースみて原因追及してみたら 内部でアルファベットだけと仮定して char* で操作してるところのせい だったというのがあるので、char* のほうが速いかもしれませんが、 非日本人が使うかもしれないというのを考えて、 ShiftJIS / MacJapanese とかエンコーディングを仮定して char* を操作するプログラムを書くのではなくて、 NSString (か他の国際化文字列ライブラリ)をつかって書くようにして おいてくださると多分世界のどこかで誰かが助かります。
- 530 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:19:21 ]
- 文字を右から左に書く言語も考慮して作れということか?
- 531 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:31:05 ]
- NSString (とかほかの国際化文字ライブラリ) をつかっておくと、
自分で考えなくても自動的にある程度は考慮されたことになるというのが利点。 Mail.app にイスラエル人の知り合いからメールがきて、 名前欄がちゃんとヘブライ語になってたので感心しました。 まあきっと外人さんには名前欄に漢字が出る時点でびっくりなんだろうけど。 海外製のフリーウェアシェアウェアでも Cocoa なら大抵は 日本語問題なくつかえるのは一貫して NSString つかってあるからで、 (というと言い過ぎだと思いますが、) 昔の Carbon のころはそうではなかったです。 メニューバーとかよく化けてたでしょ。
- 532 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 01:39:10 ]
- >>529
君のまだ知らない世界にはユニコードっていうものがあってな
- 533 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:09:08 ]
- >>532
個人が作るソフトにはUTF-8なcharとかwchar_tを使わずに US-ASCIIかISO-8859-1前提でcharを使ってるのがままあるよ。 作者がUnicodeにする必要を感じてないから仕方ない。 Mac用のソフトだと素直にCocoaで作ればそんなことにはなりづらいけどね。
- 534 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:14:19 ]
- アホにわざわざ説明してやらんでも
- 535 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:16:53 ]
- >>522
>それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。 その辺に落ちてるのほとんどchar*になってるだろw NSString使わない方が良いみたいに読めてしまうw
- 536 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:18:38 ]
- UTF-8NとUTF-8はちと違うし、UTF-16にもUTF-16Nがあるんだよな。
- 537 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:27:05 ]
- >>535
>それともこの程度のことも”操作”に入る? も読んでね。 文字列を渡したり、もらったりも文字列操作に入れちゃうのか?
- 538 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 04:08:53 ]
- >>537
てかさぁ、ライブラリでパターンマッチングやバックトラッキング用のクラスを用意してその上に高級パーサとか正規表現ライブラリを構築してる例なんてあるの? なかったらどのみちchar*を使うんだから勉強せざるを得ないんじゃないのか?
- 539 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:30:58 ]
- char *は使うよ。
でも、文字列は操作しないよ。
- 540 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 05:39:33 ]
- 正規表現ならOgreKitがある
- 541 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 08:36:55 ]
- パーザをlex&yaccで作成するときにはまともなCの知識が必要だ。
上で言ってるObjective-Cの知識だけじゃどうにもならん場合はある。
- 542 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 09:02:36 ]
- そこまでする人間がまともなCの知識を持ってないというのも考えにくいような。
ちょっと凝ったことをするにはCで直に、あるいはObjCのラッパを書くことになるし Objective-Cだけで開発するには限界があるのは同意。
- 543 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:04:26 ]
- ここで正規表現とか持ち出す奴っていったい何なの?
データベース使うJavaの人?BSDとかでスクリプト書いてる人? 文字列検索と文字列操作を美しく勘違いしてないかいw?
- 544 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:19:48 ]
- C言語の正規表現を使うにはregex.hをimportしてregcomp, regexec, regfree関数を利用する。
int regcomp(regex_t *preg, const char *regex, int cflags) 正規表現のコンパイルを行なう。コンパイル成功時には0を返す。 int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags); 正規表現による検索を実行する。 void regfree(regex_t *preg) 正規表現パターンバッファを解放する。
- 545 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 10:28:06 ]
- >>544
通りすがりだが横から質問させて。 で?そのregcomp,regxec,regfree関数ってどういう時に使うの? sprintfとかscanfとか上の方で出てたNSStringの文字列操作と置き換えられるものなのかな? 教えてエロい人!
|

|