Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
前スレ
Objective-C [ObjC part:8];
http://peace.2ch.net/test/read.cgi/tech/1356341803/
Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
Objective-C [ObjC part:4];
http://pc12.2ch.net/test/read.cgi/tech/1239721860/
Objective-C [ObjC part:3];
ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/
Objective-C
ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/
Objective-C
ttp://pc5.2ch.net/tech/kako/990/990574267.html
Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2014/11/01(土) 13:35:17.70ID:12FSUUrY
2014/11/03(月) 15:58:51.27ID:aNJ5eidf
>>22
完全上位互換性wたしかにアホな造語だな
ちょっと話盛っちゃったテヘッ
言いたかったのは、
C++はCの言語仕様を変えて(拡張)してOOP要素を追加
(つまり同じコードでもC言語とC++で意味が異なるところがある)
Objective-CはC+OOPで両者が内部的に独立だと言いたかった
完全上位互換性wたしかにアホな造語だな
ちょっと話盛っちゃったテヘッ
言いたかったのは、
C++はCの言語仕様を変えて(拡張)してOOP要素を追加
(つまり同じコードでもC言語とC++で意味が異なるところがある)
Objective-CはC+OOPで両者が内部的に独立だと言いたかった
2014/11/03(月) 16:00:54.01ID:eMtWYvPU
オブジェクトに対してメッセージセレクタからperformできるのってC++じゃ無理じゃないの?
Objective-Cにはsmalltalk由来のメソッド呼び出し機構があるけどC++でソレを実現するシステムって供給されてたっけ?
Objective-Cにはsmalltalk由来のメソッド呼び出し機構があるけどC++でソレを実現するシステムって供給されてたっけ?
2014/11/03(月) 16:03:27.39ID:bxypX2So
>>23
うん、くだらないぞ。C++の拡張であって純粋にCそのままでも使えるのになにを言っているのか
Objective-Cがとっても好きなのかもしれないが、おなじくObjective-Cが好きなのがお前と同じと見られる迷惑を考えてほしいw
うん、くだらないぞ。C++の拡張であって純粋にCそのままでも使えるのになにを言っているのか
Objective-Cがとっても好きなのかもしれないが、おなじくObjective-Cが好きなのがお前と同じと見られる迷惑を考えてほしいw
2014/11/03(月) 16:04:53.72ID:bxypX2So
2014/11/03(月) 16:07:34.94ID:aNJ5eidf
>>25
C++のクラスの中にCの関数って定義できたっけ?
C++のクラスの中にCの関数って定義できたっけ?
2014/11/03(月) 16:07:49.16ID:bxypX2So
(なんかとてもマジでアホらしくなったんですけどw)
2014/11/03(月) 16:08:49.67ID:aNJ5eidf
>>25
あなたもObjective-C好きなのか、それはすまなかった…。
あなたもObjective-C好きなのか、それはすまなかった…。
2014/11/03(月) 16:10:09.87ID:aNJ5eidf
>>28
そんなこと言わずに頼むよw
そんなこと言わずに頼むよw
2014/11/03(月) 16:10:46.79ID:bxypX2So
>>27
クラスの中になんで定義せなあかんねん
@implementation
の中に書けるから?クラスの中にあると思ってるの?
Objevtive-Cが好きならもっとObjevtive-Cの勉強をしなさいな
クラスの中になんで定義せなあかんねん
@implementation
の中に書けるから?クラスの中にあると思ってるの?
Objevtive-Cが好きならもっとObjevtive-Cの勉強をしなさいな
2014/11/03(月) 16:12:10.63ID:bxypX2So
>>30
いや、いいかげんもういいやw発狂しそうだからww
いや、いいかげんもういいやw発狂しそうだからww
2014/11/03(月) 16:13:20.15ID:aNJ5eidf
2014/11/03(月) 16:15:28.17ID:bxypX2So
(マジで言っているの?... もういいや)
2014/11/03(月) 16:27:58.86ID:goVpsTzK
予想通り発狂した ID:bxypX2So がスレ埋めてて笑ったw
最初の数レスだけからして基地外臭が漂ってたからな。
最初の数レスだけからして基地外臭が漂ってたからな。
2014/11/03(月) 16:29:25.64ID:eMtWYvPU
2014/11/03(月) 16:36:01.84ID:bxypX2So
2014/11/03(月) 16:40:51.63ID:aNJ5eidf
2014/11/03(月) 18:55:13.00ID:rWxTBzmZ
@Implementationの中に書くと前方宣言いらんのやで。豆。
2014/11/05(水) 19:33:36.62ID:WwM6K55L
>>39
どゆこと??
どゆこと??
2014/11/05(水) 20:19:08.13ID:12YCeqJI
関数プロトタイプをずらずら書かなくていいという事。
2014/11/05(水) 21:38:12.10ID:WwM6K55L
2014/11/06(木) 04:04:34.15ID:iVGs5M/e
44デフォルトの名無しさん
2014/11/06(木) 21:11:41.06ID:4Om1v5TR >>43
ただの関数なのでクラスメンバにはなり得ないのはわかる
Objective-Cの場合は、こういう風に普通にCの関数をクラスないに
何も考えずに書いちゃっても、しっかりクラスメンバとしてのメソッドと関数を
綺麗に分離できる文法体系になってるのが素晴らしいと思うんだけど
Objective-Cだけの話じゃないのかな
ただの関数なのでクラスメンバにはなり得ないのはわかる
Objective-Cの場合は、こういう風に普通にCの関数をクラスないに
何も考えずに書いちゃっても、しっかりクラスメンバとしてのメソッドと関数を
綺麗に分離できる文法体系になってるのが素晴らしいと思うんだけど
Objective-Cだけの話じゃないのかな
2014/11/07(金) 05:47:11.47ID:xhNEAT8L
void ClassA::FuncA( void ){
….
}
void FuncC( void ){
}
void ClassA::FuncB( void ){
}
….
}
void FuncC( void ){
}
void ClassA::FuncB( void ){
}
46デフォルトの名無しさん
2014/11/07(金) 07:50:28.25ID:NRYdimHv うむ
47デフォルトの名無しさん
2014/11/08(土) 07:39:56.00ID:p1cfQewS2014/11/08(土) 08:17:04.46ID:FLsnICPe
でもでもうるせーやつ。未熟極まりないのに自覚がないのは恥ずかしくないのか
2chで匿名だからか
2chで匿名だからか
2014/11/08(土) 08:30:45.39ID:p1cfQewS
>>48
…。
…。
2014/11/08(土) 11:45:42.73ID:p1cfQewS
しかしなんでこの言われようなんだろう
でもでもって、初レスだけど何か勘違いしてんのかな
結構、プログラミングスキル以前に人間性に難ありな人が多いのかねプログラマって
でもでもって、初レスだけど何か勘違いしてんのかな
結構、プログラミングスキル以前に人間性に難ありな人が多いのかねプログラマって
2014/11/08(土) 11:50:13.50ID:imGXi3N2
プログラマーとか関係ない
ここが2chだからでしょ
ここが2chだからでしょ
2014/11/08(土) 12:01:11.42ID:FLsnICPe
>>50
初レスって。うそくせーなあーw 本当に別人ならすまんかったな
だが、本当に上にいる「全く同じようなヤツ」と別人なら、このスレはお先真っ暗だなw
(別人でなんで「でも」から始まるのか??ああ、同じ思考・し好だからか…んなアホなっと思いたいw)
初レスって。うそくせーなあーw 本当に別人ならすまんかったな
だが、本当に上にいる「全く同じようなヤツ」と別人なら、このスレはお先真っ暗だなw
(別人でなんで「でも」から始まるのか??ああ、同じ思考・し好だからか…んなアホなっと思いたいw)
2014/11/08(土) 13:28:07.51ID:p1cfQewS
いやもういいっす
別に大した内容じゃないですし
別に大した内容じゃないですし
54デフォルトの名無しさん
2014/11/13(木) 08:03:27.53ID:TEV0paWH セレクタと関数ポインタの違いがよくわからないのですが、
どなたかおわかりになりますでしょうか?
どなたかおわかりになりますでしょうか?
2014/11/13(木) 08:06:46.99ID:1iY71Yqc
selfの有無じゃね
2014/11/13(木) 08:16:17.56ID:lmsym3p3
SEL はメソッドの名前でしょう。
メソッドは、クラスとセレクタとクラスorインスタンスのどちらであるかによって得られる。
Method class_getInstanceMethod(Class cls, SEL name)
Method class_getClassMethod(Class cls, SEL name)
そしてメソッドは実装である関数ポインタ、IMPを持っている。
メソッドは、クラスとセレクタとクラスorインスタンスのどちらであるかによって得られる。
Method class_getInstanceMethod(Class cls, SEL name)
Method class_getClassMethod(Class cls, SEL name)
そしてメソッドは実装である関数ポインタ、IMPを持っている。
2014/11/13(木) 12:31:08.08ID:Jx3Jj8A2
セレクタ: レシーバが、実行する関数実装の特定に用いる識別子
関数ポインタ: ある「ただひとつの」関数実装へのポインタ
セレクタは複数の関数実装に結びつきうる(ポリモーフィズム)が、関数ポインタはそうでない
セレクタに対応する関数実装のうち、ただひとつを特定したものがIMP。これがCの関数ポインタそのもの。
関数ポインタ: ある「ただひとつの」関数実装へのポインタ
セレクタは複数の関数実装に結びつきうる(ポリモーフィズム)が、関数ポインタはそうでない
セレクタに対応する関数実装のうち、ただひとつを特定したものがIMP。これがCの関数ポインタそのもの。
2014/11/13(木) 12:47:07.08ID:bBKFMYMs
メソッド呼び出しの仕組みが解れば違いも解るだろう。
2014/11/13(木) 12:48:05.58ID:dS9drdDA
message送っても別スレッドになる訳じゃない
60デフォルトの名無しさん
2014/11/13(木) 22:15:25.29ID:TEV0paWH みなさま、早速のレスをいただきありがとうございます。
メソッドには、セレクタという名前がついていて、IMPという関数ポインタも
同時に持っているということですね
>>57さんのレスで、セレクタはポリモーフィズムを持つとのことですが、
この意味は、例えば引数の型違いで定義されたオーバーロードされた
メソッドのセレクタは同じになるが、オーバーロードされているそれぞれの
メソッドのIMPはそれぞれ異なるアドレス値(関数ポインタ)を持つという
理解でよろしいでしょうか?
メソッドには、セレクタという名前がついていて、IMPという関数ポインタも
同時に持っているということですね
>>57さんのレスで、セレクタはポリモーフィズムを持つとのことですが、
この意味は、例えば引数の型違いで定義されたオーバーロードされた
メソッドのセレクタは同じになるが、オーバーロードされているそれぞれの
メソッドのIMPはそれぞれ異なるアドレス値(関数ポインタ)を持つという
理解でよろしいでしょうか?
2014/11/13(木) 23:46:43.15ID:P2x2UIfS
2014/11/14(金) 06:16:40.90ID:kMYuuo8x
2014/11/14(金) 08:01:02.15ID:DLTXyjTW
>>60
例えば、継承関係のないクラスAとB(どっちもNSObjectの直接のサブクラスとか)があって、どっちもdoSomethingメソッドを持ってるとする。
IMPはメソッドの実体を指してるから、AのdoSomethingとBのdoSomethingではIMPは異なるし、AのインスタンスをBのIMPに喰わせると誤動作する。
セレクタは"doSomething"というメソッド名そのものなので、同じセレクタを使ってAにメッセージを送ればAのメソッドが、Bに送ればBのメソッドが実行される。
例えば、継承関係のないクラスAとB(どっちもNSObjectの直接のサブクラスとか)があって、どっちもdoSomethingメソッドを持ってるとする。
IMPはメソッドの実体を指してるから、AのdoSomethingとBのdoSomethingではIMPは異なるし、AのインスタンスをBのIMPに喰わせると誤動作する。
セレクタは"doSomething"というメソッド名そのものなので、同じセレクタを使ってAにメッセージを送ればAのメソッドが、Bに送ればBのメソッドが実行される。
64デフォルトの名無しさん
2014/11/15(土) 07:45:53.26ID:Cmo7am1O2014/11/15(土) 12:19:59.41ID:atvcQtVA
>>61は>>60がオーバーロードとオーバーライドをごっちゃにしていると言っているけど、ごっちゃにはなってないと思う
で、オーバーロードが無いということだけど、例えばC++やJavaみたいに、
同じsomethingというメソッドで、引数がstd::stringか、intかで、
void something(std::string str);
void something(int num);
という風に同じ名前のメソッドを同じクラスで定義して、引数の型によって切り替えることはできないよ、ということ。
引数によって処理を変えたい場合は、With〜とかUsing〜とかつけて、セレクタを変えるのが、Objective-Cの作法。
- (void)somethingWithString:(NSString *)str;
- (void)somethingWithInteger:(NSInteger)num;
で、オーバーロードが無いということだけど、例えばC++やJavaみたいに、
同じsomethingというメソッドで、引数がstd::stringか、intかで、
void something(std::string str);
void something(int num);
という風に同じ名前のメソッドを同じクラスで定義して、引数の型によって切り替えることはできないよ、ということ。
引数によって処理を変えたい場合は、With〜とかUsing〜とかつけて、セレクタを変えるのが、Objective-Cの作法。
- (void)somethingWithString:(NSString *)str;
- (void)somethingWithInteger:(NSInteger)num;
2014/11/15(土) 12:23:50.50ID:lOoQn8Qz
>>64 の
>Objective-Cにはオーバーロードはないのですね
>Javaは勉強していたので、オーバーライドとオーバーロードの違いは
>理解していましたが、Objective-Cではないとは思いませんでした…
で終わっていることじゃ?何を改めてなのかイミフ
>Objective-Cにはオーバーロードはないのですね
>Javaは勉強していたので、オーバーライドとオーバーロードの違いは
>理解していましたが、Objective-Cではないとは思いませんでした…
で終わっていることじゃ?何を改めてなのかイミフ
2014/11/15(土) 12:26:57.21ID:lOoQn8Qz
2014/11/15(土) 12:29:54.67ID:atvcQtVA
>>66
悪い悪い、ようするに後半の引数の型によって処理をわけたいならObjective-Cではセレクタを変えろということを言いたかったんだけど
前振りでオーバーロードの説明を挟んだせいでくどくなっちゃった
そんなに怒るなよ
悪い悪い、ようするに後半の引数の型によって処理をわけたいならObjective-Cではセレクタを変えろということを言いたかったんだけど
前振りでオーバーロードの説明を挟んだせいでくどくなっちゃった
そんなに怒るなよ
2014/11/15(土) 12:33:58.59ID:lOoQn8Qz
なんで怒ることあるねん
読んでもなんで書いているのか意味分からないから意味分からないってだけだよ。怒られるような書いたの?w
オーバーロードが無いんだからそらそうだよな、ふーんってくらいだよ
読んでもなんで書いているのか意味分からないから意味分からないってだけだよ。怒られるような書いたの?w
オーバーロードが無いんだからそらそうだよな、ふーんってくらいだよ
70デフォルトの名無しさん
2014/11/15(土) 13:43:28.84ID:Cmo7am1O ありがとうございます
なんだか、私の書き方が悪く、いろいろとすみません
>>65
そうですね
私がなじみがあるのはそのように引数の型や数が違うオーバーロードですが、
Objective-Cでは同一セレクタでのオーバーロードは不可なのですね
確かにLCCでつないで〜With〜のようなメソッド名はCocoaではいろいろ見かけます
>>67
やはり型なのですか
もしかして、キャストだから実行時に解決されてオーバーロードという仕組みが
なかったりするのかなと思いましたが、キャストではないのですね
>>62さんのリンク読んでみると、(char *)型のmethod_typesというものも
あるようなので、それをみればオーバーロードの実装も出来るのではと
思いましたが、Objective-Cのポリシーなんでしょうかね…
なんだか、私の書き方が悪く、いろいろとすみません
>>65
そうですね
私がなじみがあるのはそのように引数の型や数が違うオーバーロードですが、
Objective-Cでは同一セレクタでのオーバーロードは不可なのですね
確かにLCCでつないで〜With〜のようなメソッド名はCocoaではいろいろ見かけます
>>67
やはり型なのですか
もしかして、キャストだから実行時に解決されてオーバーロードという仕組みが
なかったりするのかなと思いましたが、キャストではないのですね
>>62さんのリンク読んでみると、(char *)型のmethod_typesというものも
あるようなので、それをみればオーバーロードの実装も出来るのではと
思いましたが、Objective-Cのポリシーなんでしょうかね…
2014/11/15(土) 13:51:55.93ID:lOoQn8Qz
無くたって別にどうということは無いと思うんだけど、なぜ拘る?w
72デフォルトの名無しさん
2014/11/15(土) 13:59:38.62ID:Cmo7am1O2014/11/15(土) 14:06:01.65ID:lOoQn8Qz
>>72
使い勝手いい?よくわかんないなあ。単に関数名/メソッド名考えるのめんどくせーってのが緩和されるぐらいのような
メソッド呼び出しから始まったようだけど、Message Forwardingをちょっと勉強したらおもろいよ。なんでメッセージなのかもわかるかと(ここらがオーバーロードに関連しているような関連していないような)
使い勝手いい?よくわかんないなあ。単に関数名/メソッド名考えるのめんどくせーってのが緩和されるぐらいのような
メソッド呼び出しから始まったようだけど、Message Forwardingをちょっと勉強したらおもろいよ。なんでメッセージなのかもわかるかと(ここらがオーバーロードに関連しているような関連していないような)
74デフォルトの名無しさん
2014/11/15(土) 14:15:15.80ID:Cmo7am1O >>73
使う側からしても、型が違ってもメソッド名が同じな方が使いやすいかなと
思ったりしますが、確かになくてもよいといえばよいですね
使う側も渡す引数の型を意識してコーディングするので、むしろ
よいかもしれませんね
Message Forwardingですか。この辺りを読み込んでみます
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html
ありがとうございます
使う側からしても、型が違ってもメソッド名が同じな方が使いやすいかなと
思ったりしますが、確かになくてもよいといえばよいですね
使う側も渡す引数の型を意識してコーディングするので、むしろ
よいかもしれませんね
Message Forwardingですか。この辺りを読み込んでみます
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html
ありがとうございます
2014/11/15(土) 14:35:07.73ID:O7G7JpVO
メソッドの解決を名前だけでなく型でもやろうとすると何気に大変
仮にあるクラスAに
-(void)foo:(NSObject*)x;
-(void)foo:(NSNumber*)x;
-(void)foo:(NSString*)x;
という3つのメソッドがあったとして
[a foo:x];
のように呼んだとき、どのメソッドを呼べばいいかはxの型だけでなく継承関係も調べないといけない
例えばxがNSMutableStringだったらNSStringのやつを呼んでほしいだろう
NSMutableStringはNSObjectでもあるわけだがNSStringの方がより特殊なので優先度が高い
そうなるとメソッドを優先度で並べて型が該当するか上から順に調べねばなるまい
実行時のコストとして許容できるかどうか
仮にあるクラスAに
-(void)foo:(NSObject*)x;
-(void)foo:(NSNumber*)x;
-(void)foo:(NSString*)x;
という3つのメソッドがあったとして
[a foo:x];
のように呼んだとき、どのメソッドを呼べばいいかはxの型だけでなく継承関係も調べないといけない
例えばxがNSMutableStringだったらNSStringのやつを呼んでほしいだろう
NSMutableStringはNSObjectでもあるわけだがNSStringの方がより特殊なので優先度が高い
そうなるとメソッドを優先度で並べて型が該当するか上から順に調べねばなるまい
実行時のコストとして許容できるかどうか
2014/11/15(土) 15:19:15.90ID:RzrSosLr
藻舞は何をオーバーロードで、クダ巻いとるんじゃ。
普段からそんなに高品質な言語ばっかり、使っているからじゃ
JavaScriptなんか、引数の型を一々、
プログラマーがプログラミングして確かめるんだぞw
そうでないと、まともに動かんわいw
グダグダ言う前に、これくらい自分でプログラミングせえ!
普段からそんなに高品質な言語ばっかり、使っているからじゃ
JavaScriptなんか、引数の型を一々、
プログラマーがプログラミングして確かめるんだぞw
そうでないと、まともに動かんわいw
グダグダ言う前に、これくらい自分でプログラミングせえ!
2014/11/16(日) 19:14:57.26ID:PTffpO77
基本的にObjective-Cは
クラスはロボットで「これやれ」って命令すれば勝手にやってくれる
もしわかんないことがあったら「なにができるんだ?」って聞けば
「これができますギチギチ」って答えてくれる
そういう風じゃないと命令者に複雑さが伝播してオブジェクト単位で弄れないだろ?
っていうオブジェクト指向の思想理念に忠実だからな…
クラスはロボットで「これやれ」って命令すれば勝手にやってくれる
もしわかんないことがあったら「なにができるんだ?」って聞けば
「これができますギチギチ」って答えてくれる
そういう風じゃないと命令者に複雑さが伝播してオブジェクト単位で弄れないだろ?
っていうオブジェクト指向の思想理念に忠実だからな…
2014/11/16(日) 19:35:21.60ID:4B0DOTZq
Objective-C、やはり素晴らしいじゃないか
2014/11/16(日) 20:32:06.09ID:y1asw4VY
Objective-CやSmalltalk、Rubyの失敗によって、
そういうアラン・ケイのメッセージ送信パラダイムが間違っていたということが証明されたから
C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな
そういうアラン・ケイのメッセージ送信パラダイムが間違っていたということが証明されたから
C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな
2014/11/16(日) 21:25:59.70ID:jkITM5Sp
>>79
> Objective-CやSmalltalk、Rubyの失敗によって、
失敗したのはストラウストラップ流オブジェクト指向の C++
MS はコンポーネントの動的結合を実現するために COM を開発したが、
結局は対応しきれずに C# へ移行せざるをえなかった
この移行に伴う混乱が Vista 以降の度重なる開発遅延をまねいた
> C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな
いや、Swift は(Objective-C と同じく)動的束縛と静的束縛のハイブリッドだよ
コンポーネント間の結合はこれまで通り(メッセージ送信パラダイムによる)動的束縛が利用される
コンポーネント内部の実装に静的束縛を用いるのもこれまでと同じだけど、違うのは
メモリ保護の無い C を捨てて安全なプログラミングを可能にした点
MS は MFC(C++) を捨てて .Net(C#) へ移行せざるを得なかった
Apple は言語を Objective-C から Swift へと移行しようとしているけど、
実行環境は Cocoa を継続して利用できている
結果を見れば、失敗したのは ストラウストラップ流オブジェクト指向の C++ なんだよ
> Objective-CやSmalltalk、Rubyの失敗によって、
失敗したのはストラウストラップ流オブジェクト指向の C++
MS はコンポーネントの動的結合を実現するために COM を開発したが、
結局は対応しきれずに C# へ移行せざるをえなかった
この移行に伴う混乱が Vista 以降の度重なる開発遅延をまねいた
> C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな
いや、Swift は(Objective-C と同じく)動的束縛と静的束縛のハイブリッドだよ
コンポーネント間の結合はこれまで通り(メッセージ送信パラダイムによる)動的束縛が利用される
コンポーネント内部の実装に静的束縛を用いるのもこれまでと同じだけど、違うのは
メモリ保護の無い C を捨てて安全なプログラミングを可能にした点
MS は MFC(C++) を捨てて .Net(C#) へ移行せざるを得なかった
Apple は言語を Objective-C から Swift へと移行しようとしているけど、
実行環境は Cocoa を継続して利用できている
結果を見れば、失敗したのは ストラウストラップ流オブジェクト指向の C++ なんだよ
2014/11/16(日) 21:35:15.07ID:cjwSUl7C
>Objective-CやSmalltalk、Rubyの失敗によって、
…どれも失敗してないように見えるが…
というか、これから歴史が判断するとは思うが
C++みたいな密なコーディングを必要とするのに規約ゆるゆるの
言語で起きた混乱のせいで、規約カッチリすればイインダヨ!な
関数型が注目されてるけれど、結局密なプログラミングは
後で他人がソースを弄りにくいという根本的な問題をほっかむりしてる
っつーよりそもそも"そういうもの"として問題にもしてないようにも見えるので
遠からずまた一過性の時代の徒花として忘れられて
swiftに取り入れられてるみたいに「そういう書き方できたら便利だね」的な
過去に提唱された便利概念に落ち着いてゆくと思う。
…どれも失敗してないように見えるが…
というか、これから歴史が判断するとは思うが
C++みたいな密なコーディングを必要とするのに規約ゆるゆるの
言語で起きた混乱のせいで、規約カッチリすればイインダヨ!な
関数型が注目されてるけれど、結局密なプログラミングは
後で他人がソースを弄りにくいという根本的な問題をほっかむりしてる
っつーよりそもそも"そういうもの"として問題にもしてないようにも見えるので
遠からずまた一過性の時代の徒花として忘れられて
swiftに取り入れられてるみたいに「そういう書き方できたら便利だね」的な
過去に提唱された便利概念に落ち着いてゆくと思う。
2014/11/17(月) 00:12:14.50ID:ZeG9cYbU
blocksやgcの件からわかるようにObjective-Cが古臭く拡張しづらくなったのと、
静的言語の方がリファクタリングツール等のIDE連携ツールを作りやすいから移行し
ただけだと思う。
静的言語の方がリファクタリングツール等のIDE連携ツールを作りやすいから移行し
ただけだと思う。
2014/11/17(月) 02:45:35.45ID:cESIq0Cd
> というか、これから歴史が判断するとは思うがC++みたいな密なコーディングを必要とするのに規約ゆるゆるの言語で起きた混乱のせいで、規約カッチリ
> すればイインダヨ!な関数型が注目されてるけれど、結局密なプログラミングは後で他人がソースを弄りにくいという根本的な問題をほっかむりしてるっ
> つーよりそもそも"そういうもの"として問題にもしてないようにも見えるので遠からずまた一過性の時代の徒花として忘れられてswiftに取り入れられてる
> みたいに「そういう書き方できたら便利だね」的な過去に提唱された便利概念に落ち着いてゆくと思う。
これで一文
> すればイインダヨ!な関数型が注目されてるけれど、結局密なプログラミングは後で他人がソースを弄りにくいという根本的な問題をほっかむりしてるっ
> つーよりそもそも"そういうもの"として問題にもしてないようにも見えるので遠からずまた一過性の時代の徒花として忘れられてswiftに取り入れられてる
> みたいに「そういう書き方できたら便利だね」的な過去に提唱された便利概念に落ち着いてゆくと思う。
これで一文
2014/11/17(月) 04:06:46.80ID:mzmuQz/D
パラダイムと規約に関係があるとは知らなかったよ
2014/11/17(月) 08:16:03.02ID:zHATB9tj
>>82
GCは よりな ARC が現れたから単に消えただけだじゃね
System Preferences PaneがGC必須だったようにARC出るまではGC推すつもりあったかと
BlocksだっていろいろBlocksバージョンのメソッド付け加えているように、また、新しいメソッドはBlocksのみだったりでBlocksは推してはいるだろ
拡張しづらくなったのではなく、ちゃんぽん/カオス度がだろう
GCは よりな ARC が現れたから単に消えただけだじゃね
System Preferences PaneがGC必須だったようにARC出るまではGC推すつもりあったかと
BlocksだっていろいろBlocksバージョンのメソッド付け加えているように、また、新しいメソッドはBlocksのみだったりでBlocksは推してはいるだろ
拡張しづらくなったのではなく、ちゃんぽん/カオス度がだろう
2014/11/17(月) 16:59:55.46ID:oWS5dSpx
2014/11/17(月) 17:27:43.93ID:3Q29PYZj
「あまり強い言葉を遣うなよ、弱く見えるぞ。」
2014/11/17(月) 17:35:24.26ID:zHATB9tj
>>86
お前の程度に合わせて書いてあげることもできるが、お前の程度がわからないのでなあ。すまんな
お前の程度に合わせて書いてあげることもできるが、お前の程度がわからないのでなあ。すまんな
2014/11/17(月) 17:37:36.18ID:YUWmI/Qt
エンジニアになりたいと言う人(若い女の子)が面接に来ていたので話を立ち聞きした
どんな分野やりたいのか聴かれてweb系のエンジニアと言ってたが
どんな勉強してきたのかという問いにはC/C++をやりましたと
なぜC/C++なの?と聞かれて
色んな言語の基礎になる言語だからだと教えてもらったので・・・
と答えていた
面接してる会社はデザイン会社だった
どんな分野やりたいのか聴かれてweb系のエンジニアと言ってたが
どんな勉強してきたのかという問いにはC/C++をやりましたと
なぜC/C++なの?と聞かれて
色んな言語の基礎になる言語だからだと教えてもらったので・・・
と答えていた
面接してる会社はデザイン会社だった
2014/11/17(月) 19:21:26.75ID:JwoO3TSc
ID が Qt
2014/11/17(月) 19:37:02.05ID:kiWqo9or
QtはライセンスがGPLだから駄目
2014/11/18(火) 08:24:29.44ID:kE9ttoYj
2014/11/18(火) 09:48:40.84ID:vZbeIuzJ
>>92
頭が―か?
頭が―か?
2014/11/19(水) 00:25:30.52ID:Uu5NHBSW
医療プログラマーが超高難易度の免許制に / フリーソフトやオープンソースの無作為配布も全面禁止
http://fox.2ch.net/test/read.cgi/poverty/1416286592/
http://fox.2ch.net/test/read.cgi/poverty/1416286592/
2014/11/19(水) 12:35:17.12ID:JZ2oYyd9
>>89
gccですか?VCですかそれともObjective-Cですか?と聞かなかった会社が糞
gccですか?VCですかそれともObjective-Cですか?と聞かなかった会社が糞
96デフォルトの名無しさん
2014/12/01(月) 22:56:51.54ID:m0wFwcIO Objective-CをCocoa以外で活用してるケースってあるのかね
2014/12/06(土) 17:27:29.67ID:0UG7+0Oi
Effective Objective-C 2.0
2014/12/06(土) 17:27:59.31ID:0UG7+0Oi
とかいつの間にか出てたみたいだが、内容はどうなのかね
99デフォルトの名無しさん
2014/12/21(日) 03:29:15.03ID:B0izS0B+ H
100デフォルトの名無しさん
2014/12/24(水) 22:47:32.30ID:CYbjoPN5101デフォルトの名無しさん
2014/12/24(水) 22:49:51.21ID:CYbjoPN5 何このスレ、ほかのやつも馬鹿ばっかじゃん。
Objective-Cはもうオシマイだな。
Objective-Cはもうオシマイだな。
102デフォルトの名無しさん
2014/12/24(水) 23:22:36.71ID:w/c96Wtd >>100
どうした急に…。
どうした急に…。
103デフォルトの名無しさん
2014/12/24(水) 23:37:50.82ID:EVdPtiwJ マジキチには触れない
104デフォルトの名無しさん
2014/12/27(土) 00:50:33.94ID:ju+a0CQP はじめて書き込みします。
自学の一貫としてpaizaのラーニング「数の並び替え」に挑戦しています。
「改行区切りで正の整数nがi個入力されるので小さい順に改行区切りで出力してください。」という問題です。しかし解けません。
数値を取得→配列に入れる→ソートする→同じ数値があれば削除→表示
という流れですすもうとしていましたが、うまくいきません。
できたこと
→入力値をNSNumberに変換してNSMutableArrayに入れ込む。
→昇順ソート(ソートのメソッドを使用)
できないこと
→改行入力を判定し、for文から抜けること(配列の要素数取得)
→隣り合った要素を比較し、イコールだった場合は表示しないこと
見本になるような答えがあればと思うのですが、プログラマーの皆さんはどのようにコーディングされるのでしょうか?
教えていただけたら嬉しいです。
自学の一貫としてpaizaのラーニング「数の並び替え」に挑戦しています。
「改行区切りで正の整数nがi個入力されるので小さい順に改行区切りで出力してください。」という問題です。しかし解けません。
数値を取得→配列に入れる→ソートする→同じ数値があれば削除→表示
という流れですすもうとしていましたが、うまくいきません。
できたこと
→入力値をNSNumberに変換してNSMutableArrayに入れ込む。
→昇順ソート(ソートのメソッドを使用)
できないこと
→改行入力を判定し、for文から抜けること(配列の要素数取得)
→隣り合った要素を比較し、イコールだった場合は表示しないこと
見本になるような答えがあればと思うのですが、プログラマーの皆さんはどのようにコーディングされるのでしょうか?
教えていただけたら嬉しいです。
105104
2014/12/27(土) 00:53:20.66ID:ju+a0CQP ちなみに、現在はこんなかんじで書いています。
(for文のところの回数は適当な数です)
#import <Foundation/Foundation.h>
int main(void){
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *array = [NSMutableArray array];
//getData
for(int i=0;i<7;i++){
int n;
scanf("%d",&n);
NSNumber *num = [NSNumber numberWithInt:n];
[array addObject:num];
}
//sort
array = [array sortedArrayUsingSelector:@selector(compare:)];
for(int p=1 ; p<7 ;p++){
NSNumber *arraynum1 = [array objectAtIndex:p-1];
NSNumber *arraynum2 = [array objectAtIndex:p];
if([arraynum1 intValue] == [arraynum2 intValue]){
printf("test====%d",[arraynum1 intValue]);
}}
for(int i=0; i<6;i++){
NSNumber *resultNum = [array objectAtIndex:i];
NSString *s = [NSString stringWithFormat:@"%d\n",[resultNum intValue]];
[[NSFileHandle fileHandleWithStandardOutput] writeData: [s dataUsingEncoding: NSUTF8StringEncoding]];}
[pool release];
return 0;
}
(for文のところの回数は適当な数です)
#import <Foundation/Foundation.h>
int main(void){
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *array = [NSMutableArray array];
//getData
for(int i=0;i<7;i++){
int n;
scanf("%d",&n);
NSNumber *num = [NSNumber numberWithInt:n];
[array addObject:num];
}
//sort
array = [array sortedArrayUsingSelector:@selector(compare:)];
for(int p=1 ; p<7 ;p++){
NSNumber *arraynum1 = [array objectAtIndex:p-1];
NSNumber *arraynum2 = [array objectAtIndex:p];
if([arraynum1 intValue] == [arraynum2 intValue]){
printf("test====%d",[arraynum1 intValue]);
}}
for(int i=0; i<6;i++){
NSNumber *resultNum = [array objectAtIndex:i];
NSString *s = [NSString stringWithFormat:@"%d\n",[resultNum intValue]];
[[NSFileHandle fileHandleWithStandardOutput] writeData: [s dataUsingEncoding: NSUTF8StringEncoding]];}
[pool release];
return 0;
}
106デフォルトの名無しさん
2014/12/27(土) 01:41:52.96ID:kBwj7yl6107デフォルトの名無しさん
2014/12/27(土) 01:46:46.53ID:kBwj7yl6 reverseObjectEnumeratorいらなかった
というか降順と昇順を逆に覚えていた
というか降順と昇順を逆に覚えていた
108デフォルトの名無しさん
2014/12/27(土) 02:34:15.99ID:pJ1SHZUQ 二分探索は速いだけじゃなく、外れの場合はインサートポイントが得られるという、かなりお手軽で二倍お得。自分で二分探索を書いても
for(int i=0;i<7;i++){
int n;
scanf("%d",&n);
const NSInteger count = array.count;
NSNumber *newNumber = @(n);
NSUInteger index = [array indexOfObject:newNumber inSortedRange:NSMakeRange(0, count) options:(NSBinarySearchingInsertionIndex) usingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2];
}];
if(index < count && ((NSNumber *)array[index]).intValue == n)
;
else
[array insertObject:newNumber atIndex:index];
}
for(int i=0;i<7;i++){
int n;
scanf("%d",&n);
const NSInteger count = array.count;
NSNumber *newNumber = @(n);
NSUInteger index = [array indexOfObject:newNumber inSortedRange:NSMakeRange(0, count) options:(NSBinarySearchingInsertionIndex) usingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2];
}];
if(index < count && ((NSNumber *)array[index]).intValue == n)
;
else
[array insertObject:newNumber atIndex:index];
}
109デフォルトの名無しさん
2014/12/28(日) 01:32:41.16ID:t3FnsveB そんなのNSなんたらやってないでc++で書きゃいいじゃん
110デフォルトの名無しさん
2014/12/28(日) 02:21:54.56ID:9eiZ+Gka ここになんだから Objective-C でやる/の勉強でということだろ
頓珍漢なことを言い出さんな
頓珍漢なことを言い出さんな
111デフォルトの名無しさん
2014/12/29(月) 08:59:18.53ID:Z4v1tAUQ 素朴な疑問だけど、「言い出さんな」って何の書き間違い?
それともそんな言い回しがあるの? それならどんな意味?
それともそんな言い回しがあるの? それならどんな意味?
112デフォルトの名無しさん
2014/12/29(月) 10:01:01.25ID:0b80RVUG 言いなさんな
だろ
だろ
113デフォルトの名無しさん
2014/12/29(月) 10:02:24.88ID:UGzXTa7o 言いなさんな
あるいは
言い出しなさんな
だと思う
あるいは
言い出しなさんな
だと思う
114デフォルトの名無しさん
2014/12/29(月) 11:16:33.80ID:/fu+2Q3X 2ちゃんの住民ってアスペが多いのか
ときどき日本語の文章の意味を取り違って
真逆のレス返すひととかいるよね
ときどき日本語の文章の意味を取り違って
真逆のレス返すひととかいるよね
115デフォルトの名無しさん
2014/12/29(月) 17:32:40.50ID:0o73V2FG よく見るが自分がそうでないとも言い切れないのであまりつっこまないようにしている
116デフォルトの名無しさん
2015/01/03(土) 22:27:31.84ID:/eH07gY4 あけおめ?
117デフォルトの名無しさん
2015/02/03(火) 10:52:02.28ID:rDBGcWBx Object-Cってカプセル化できないのか、しても意味ないようなことが書いてあったけど
ttp://news.mynavi.jp/column/objc/031/
・どんなクラスでも性質を変えられる。
・どんなフィールド名も追ってけばクラス名から参照できちゃう。
なら、暗証番号とか保持してるクラスを見つけてprivate/protectをpublicに変えちゃえば中見えるんじゃね?
秘匿したいプロパティを隠す方法を教えてください。
ttp://news.mynavi.jp/column/objc/031/
・どんなクラスでも性質を変えられる。
・どんなフィールド名も追ってけばクラス名から参照できちゃう。
なら、暗証番号とか保持してるクラスを見つけてprivate/protectをpublicに変えちゃえば中見えるんじゃね?
秘匿したいプロパティを隠す方法を教えてください。
118デフォルトの名無しさん
2015/02/03(火) 11:07:05.38ID:tOi9MMpi 関数内にstaticで定義すればivarListにも出ないかな。
119デフォルトの名無しさん
2015/02/03(火) 22:01:35.92ID:tKBD0v6T novocaineって分かる人います?
120デフォルトの名無しさん
2015/02/04(水) 11:48:21.24ID:kErMECZ6 javascript も Ruby も Python も_
121デフォルトの名無しさん
2015/02/08(日) 10:15:33.41ID:pR6nMOCQ >>118
でもそれだと暗証番号とか生成して秘匿するのには使えないよね?
特にコンパイル前に暗証番号分かってるような特注PGじゃなくて汎用なのだと。
関数内static変数をキーに使って加工した暗証番号を変数として保持するとかなのかな。
これならクラスに付けてないゲッターでプロパティが知れて漏れても
メソッドで加工してるから大丈夫とか。
そしてそのメソッドでは合ってるかどうかだけ返すようにすれば推測しづらいかな?
でもそれだと暗証番号とか生成して秘匿するのには使えないよね?
特にコンパイル前に暗証番号分かってるような特注PGじゃなくて汎用なのだと。
関数内static変数をキーに使って加工した暗証番号を変数として保持するとかなのかな。
これならクラスに付けてないゲッターでプロパティが知れて漏れても
メソッドで加工してるから大丈夫とか。
そしてそのメソッドでは合ってるかどうかだけ返すようにすれば推測しづらいかな?
122デフォルトの名無しさん
2015/02/08(日) 11:12:28.61ID:HJEgExkV >>121
要はIvarにしなければクラスの外からは見えないということで、
関数をsetter/getter兼用にして、その中で変数を宣言すればどうかと。
int cryptoNumber(int mode, int value)
{
static int local = 0;
//0:setter, 1:getter
switch (mode) {
case 0: local = value; break;
default: break;
}
return local;
}
まあ、関数のスコープ外からは見えないってだけだが。
要はIvarにしなければクラスの外からは見えないということで、
関数をsetter/getter兼用にして、その中で変数を宣言すればどうかと。
int cryptoNumber(int mode, int value)
{
static int local = 0;
//0:setter, 1:getter
switch (mode) {
case 0: local = value; break;
default: break;
}
return local;
}
まあ、関数のスコープ外からは見えないってだけだが。
123デフォルトの名無しさん
2015/02/08(日) 12:27:24.17ID:pR6nMOCQ でもその引数valueはどこかのクラス内で
何らかのプロパティとして保持されてる値が引き渡されてるわけだろ?
Object-Cは完全なるOPPなんだから最終的にはどこかしらのプロパティが保持して
それは漏れなくIvarで引用されちゃうよね?
何らかのプロパティとして保持されてる値が引き渡されてるわけだろ?
Object-Cは完全なるOPPなんだから最終的にはどこかしらのプロパティが保持して
それは漏れなくIvarで引用されちゃうよね?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 地震 [Hitzeschleier★]
- 【地震】 茨城 栃木 埼玉 千葉 震度4 [KingFisherは魚じゃないよ★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★6 [Hitzeschleier★]
- ( ´ん`)地震…? [399583221]
- 🖐( -᷄ὢ)俺には>>2の>>3を自由に扱える権利がある……
- 地震
- 地震地震うっせーーーんだよゴミ共wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
- 震度4とか舐めてるやろ
- 【お笑い】自民党広報「SNS上のデマに実効性ある対策を😤」鹿デマ言いやがった高市に言えカス [359965264]
