Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2014/11/01(土) 13:35:17.70ID:12FSUUrY
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
2014/11/01(土) 13:35:57.63ID:12FSUUrY
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
http://peace.2ch.net/test/read.cgi/tech/1113058054/

*** プログラマ板 ***
【Cocoa】Macプログラマのスレ【Objective-C】
http://kanae.2ch.net/test/read.cgi/prog/1214208397/

*** 新・mac板 ***
Macでプログラミング{11}
http://anago.2ch.net/test/read.cgi/mac/1414566499/

Xcode part12
http://anago.2ch.net/test/read.cgi/mac/1356341840/

let s: プログラミング言語? = Swift[2]
http://anago.2ch.net/test/read.cgi/mac/1408755325/
2014/11/01(土) 13:37:58.27ID:12FSUUrY
*** 本家 ***
Objective-C プログラミング言語
https://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf

Objective-C Feature Availability Index
https://developer.apple.com/Library/mac/releasenotes/ObjectiveC/ObjCAvailabilityIndex/index.html

Objective-C Runtime Programming Guide
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html

そのほか英語
https://developer.apple.com/library/mac/navigation/

*** 書籍 ***
荻原本 第3版/Kindle 版も有り
http://amazon.jp/dp/4797368276

HMDTダイナミック本
http://amazon.jp/dp/4861006414
2014/11/01(土) 13:38:53.84ID:12FSUUrY
*** 本家 ***
Objective-C 2.0 プログラミング言語
https://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf

Blocksプログラミングトピックス
https://developer.apple.com/jp/devcenter/ios/library/documentation/Blocks.pdf

並列プログラミングガイド - GCDとか
https://developer.apple.com/jp/devcenter/ios/library/documentation/ConcurrencyProgrammingGuide.pdf
2014/11/01(土) 13:39:59.19ID:12FSUUrY
Objective-C Literals ― Clang 3.6 documentation
http://clang.llvm.org/docs/ObjectiveCLiterals.html

Apple のランタイムのソースコード
http://www.opensource.apple.com/source/objc4/

ダイナミック Objective-C サイト
http://journal.mycom.co.jp/column/objc/

英語のサイト
Objective-C 入門
http://cocoadevcentral.com/d/learn_objectivec/

Objective-C Style 1, 2 (変数名のつけかた等)
http://cocoadevcentral.com/articles/000082.php
http://cocoadevcentral.com/articles/000083.php

Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る
http://mikeash.com/?page=pyblog/

C++ と Objective-C の文法の比較
http://ktd.club.fr/programmation/objective-c.php
2014/11/01(土) 13:42:24.66ID:12FSUUrY
Swift と関連する Obj-C ドキュメント

*** 本家 ***
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216

Swift and Objective-C in the Same Project
https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html

Adopting Modern Objective-C
https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html

Embedding Content with Swift in Objective-C
https://developer.apple.com/library/ios/qa/qa1881/_index.html
7デフォルトの名無しさん
垢版 |
2014/11/01(土) 14:10:57.49ID:woVuP3aC
>>1
スレ立ておつおつ
2014/11/01(土) 14:18:06.53ID:c9/p9yfG
1乙
2014/11/02(日) 12:42:31.92ID:CjBmvnJw
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
2014/11/03(月) 00:34:00.72ID:goVpsTzK
保守
11デフォルトの名無しさん
垢版 |
2014/11/03(月) 11:15:08.31ID:aNJ5eidf
Cと完全上位互換性をもつオブジェクト指向プログラミング言語はObjective-Cだけです
2014/11/03(月) 11:21:29.32ID:Avy9gAi6
ほう
2014/11/03(月) 14:56:05.14ID:bxypX2So
C++でのCとの違いを説明できたら褒めてやるが、無理だろうな
2014/11/03(月) 15:13:30.86ID:aNJ5eidf
>>13
なんでほめられるために説明せないかんの?w
端的に言えば.cのコードをそのまま.mのコード内にコピペして動くかどうか
2014/11/03(月) 15:28:27.78ID:bxypX2So
よくわかって言っているならだったが、やっぱりなっていう
バカがそういうこと言うとObjective-Cを貶めるだけなのでとても迷惑
2014/11/03(月) 15:31:13.39ID:aNJ5eidf
>>15
じゃあ、名誉挽回しておくれ
2014/11/03(月) 15:34:54.55ID:bxypX2So
馬鹿の尻拭いをなんでせなあかんねん
てか>>11って言っておいた自らそいうのか。恥もなにもないって馬鹿すぎるw
2014/11/03(月) 15:36:33.91ID:bxypX2So
(お前の馬鹿加減のを示すのが名誉挽回なんだがな)
2014/11/03(月) 15:37:34.92ID:goVpsTzK
発狂した ID:bxypX2So がスレを埋めてくれるようだ
2014/11/03(月) 15:39:32.87ID:bxypX2So
すぐに発狂って。アホらしいのにもほどがある...どこまで底抜けの馬鹿やねん
2014/11/03(月) 15:43:55.19ID:aNJ5eidf
>>17
このスレが寂しい感じだったので、>>11を書いてみた
なので内容はともあれスレが若干の盛り上がりを見せている点は感謝します

ところで、勝手に決めつけて馬鹿よばわりするからには、
>>13みたいな含みのある書き込みはやめて、ちゃんと説明してほしいな
2014/11/03(月) 15:52:30.90ID:bxypX2So
>>21
完全上位互換性ってなんやねんっってことで含みがある書き方しかできんな。で、>>14だとC++でのCだってだぞ?「Objective-Cだけです」じゃないのは明らかでやっぱりなな結果で含みある書き方でよかったなと
C++でのクラス関数じゃない純粋関数だって、Cから呼べるし>>11のような書き込みこそ止めてほしい
2014/11/03(月) 15:58:51.27ID:aNJ5eidf
>>22
完全上位互換性wたしかにアホな造語だな
ちょっと話盛っちゃったテヘッ

言いたかったのは、
C++はCの言語仕様を変えて(拡張)してOOP要素を追加
(つまり同じコードでもC言語とC++で意味が異なるところがある)
Objective-CはC+OOPで両者が内部的に独立だと言いたかった
2014/11/03(月) 16:00:54.01ID:eMtWYvPU
オブジェクトに対してメッセージセレクタからperformできるのってC++じゃ無理じゃないの?
Objective-Cにはsmalltalk由来のメソッド呼び出し機構があるけどC++でソレを実現するシステムって供給されてたっけ?
2014/11/03(月) 16:03:27.39ID:bxypX2So
>>23
うん、くだらないぞ。C++の拡張であって純粋にCそのままでも使えるのになにを言っているのか

Objective-Cがとっても好きなのかもしれないが、おなじくObjective-Cが好きなのがお前と同じと見られる迷惑を考えてほしいw
2014/11/03(月) 16:04:53.72ID:bxypX2So
>>24
それと今の話題は全然違うよ
もちろんObjective-CでもCの呼び出しはセレクタじゃないのは理解しているよね?

てか、呼び出し方ならC++の方がCっぽいだろうしw
2014/11/03(月) 16:07:34.94ID:aNJ5eidf
>>25
C++のクラスの中にCの関数って定義できたっけ?
2014/11/03(月) 16:07:49.16ID:bxypX2So
(なんかとてもマジでアホらしくなったんですけどw)
2014/11/03(月) 16:08:49.67ID:aNJ5eidf
>>25
あなたもObjective-C好きなのか、それはすまなかった…。
2014/11/03(月) 16:10:09.87ID:aNJ5eidf
>>28
そんなこと言わずに頼むよw
2014/11/03(月) 16:10:46.79ID:bxypX2So
>>27
クラスの中になんで定義せなあかんねん
@implementation
の中に書けるから?クラスの中にあると思ってるの?
Objevtive-Cが好きならもっとObjevtive-Cの勉強をしなさいな
2014/11/03(月) 16:12:10.63ID:bxypX2So
>>30
いや、いいかげんもういいやw発狂しそうだからww
2014/11/03(月) 16:13:20.15ID:aNJ5eidf
>>31
言いたいことはまさにそこだったw
要は、Objective-CはOOP部分を「コンパイル」してない
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
>>26
>もちろんObjective-CでもCの呼び出しはセレクタじゃないのは理解しているよね?
そりゃ当たり前じゃなかろうか?
2014/11/03(月) 16:36:01.84ID:bxypX2So
>>35
すぐに発狂とかww冗談の通じないヤツ?

>>36
いや、なんでいきなり>>24と言い出すのかと。当たり前でわかっているならいいよ

なんなんだこのスレは
発狂して消えようw
2014/11/03(月) 16:40:51.63ID:aNJ5eidf
>>37
ちなみに、
> @implementation
> の中に書けるから?クラスの中にあると思ってるの?
は違うの??
恥ずかしながら、てっきりそうだと思ってたけど…
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
>>41
なるほど
プロトタイプ宣言が要らないということはわかりました
でも、それってつまりどういうことを意味してるの?
>>31とも関連あったりする??
2014/11/06(木) 04:04:34.15ID:iVGs5M/e
@implementation〜@end内は、なんかしらんが順番を気にしなくて良くなったから便利って話、
>>31とは関連は無い。
それと関数はクラスメンバじゃないよ。
44デフォルトの名無しさん
垢版 |
2014/11/06(木) 21:11:41.06ID:4Om1v5TR
>>43
ただの関数なのでクラスメンバにはなり得ないのはわかる
Objective-Cの場合は、こういう風に普通にCの関数をクラスないに
何も考えずに書いちゃっても、しっかりクラスメンバとしてのメソッドと関数を
綺麗に分離できる文法体系になってるのが素晴らしいと思うんだけど
Objective-Cだけの話じゃないのかな
2014/11/07(金) 05:47:11.47ID:xhNEAT8L
void ClassA::FuncA( 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:p1cfQewS
>>45
でも呼び出しのときは、Objective-Cなら、メッセージ式と普通の関数呼び出しで
全く違うけど、C++だと、クラス内からだと区別つかなくね?
thisポインタ使わないこと多いし
2014/11/08(土) 08:17:04.46ID:FLsnICPe
でもでもうるせーやつ。未熟極まりないのに自覚がないのは恥ずかしくないのか
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だからでしょ
2014/11/08(土) 12:01:11.42ID:FLsnICPe
>>50
初レスって。うそくせーなあー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を持っている。
2014/11/13(木) 12:31:08.08ID:Jx3Jj8A2
セレクタ: レシーバが、実行する関数実装の特定に用いる識別子
関数ポインタ: ある「ただひとつの」関数実装へのポインタ
セレクタは複数の関数実装に結びつきうる(ポリモーフィズム)が、関数ポインタはそうでない
セレクタに対応する関数実装のうち、ただひとつを特定したものが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はそれぞれ異なるアドレス値(関数ポインタ)を持つという
理解でよろしいでしょうか?
2014/11/13(木) 23:46:43.15ID:P2x2UIfS
>>60
オーバーライドとオーバーロード(多重定義)をごっちゃにしてるよ
というか、そもそも Objective-C にオーバーロード(多重定義)は無い
2014/11/14(金) 06:16:40.90ID:kMYuuo8x
>>60
あれこれ考えるより、まずここ読んだ方が早いだろう。
http://news.mynavi.jp/column/objc/018/

あとは自分でいろいろやってみりゃわかる。
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のメソッドが実行される。
64デフォルトの名無しさん
垢版 |
2014/11/15(土) 07:45:53.26ID:Cmo7am1O
皆さん、ありがとうございます
レスおそくなりました

>>61
Objective-Cにはオーバーロードはないのですね
Javaは勉強していたので、オーバーライドとオーバーロードの違いは
理解していましたが、Objective-Cではないとは思いませんでした…
メソッドの引数の型は、書き方からすると、もしかしてキャストなんでしょうか。。

>>62
ありがとうございます
そのページを読んで勉強してみます

>>63
なるほど、非常によくわかりました
どうもありがとうございます
2014/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;
2014/11/15(土) 12:23:50.50ID:lOoQn8Qz
>>64
>Objective-Cにはオーバーロードはないのですね
>Javaは勉強していたので、オーバーライドとオーバーロードの違いは
>理解していましたが、Objective-Cではないとは思いませんでした…
で終わっていることじゃ?何を改めてなのかイミフ
2014/11/15(土) 12:26:57.21ID:lOoQn8Qz
>>64
>メソッドの引数の型は、書き方からすると、もしかしてキャストなんでしょうか。。
キャストではないよ型だよ。Cと同じだよ。単なる値渡し
暗黙的型変換があるけど、キャストとは呼ばないだろう
2014/11/15(土) 12:29:54.67ID:atvcQtVA
>>66
悪い悪い、ようするに後半の引数の型によって処理をわけたいならObjective-Cではセレクタを変えろということを言いたかったんだけど
前振りでオーバーロードの説明を挟んだせいでくどくなっちゃった
そんなに怒るなよ
2014/11/15(土) 12:33:58.59ID:lOoQn8Qz
なんで怒ることあるねん
読んでもなんで書いているのか意味分からないから意味分からないってだけだよ。怒られるような書いたの?w
オーバーロードが無いんだからそらそうだよな、ふーんってくらいだよ
70デフォルトの名無しさん
垢版 |
2014/11/15(土) 13:43:28.84ID:Cmo7am1O
ありがとうございます
なんだか、私の書き方が悪く、いろいろとすみません

>>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:Cmo7am1O
>>71
あっ、いや、特にこだわっているというわけではないのですけど、
Java, C++, C#などではいわゆるオーバーロードが出来たので、
ちょっとビックリしました…
汎用的なライブラリを作る時は、同一メソッド名の型違いでオーバーロード
しておいた方がいろいろと使い勝手のよいものになるので、結構重宝してた
のですが、Objective-C使いさんは、型違いは全て>>65さんのように
セレクタを変えて使っているんですね
よくよく考えると、引数の数違いの場合は、必然的に:が追加されてセレクタが
変わるので、そもそもオーバーロードという概念ははじめから考えてなかった
のかもしれませんが…
2014/11/15(土) 14:06:01.65ID:lOoQn8Qz
>>72
使い勝手いい?よくわかんないなあ。単に関数名/メソッド名考えるのめんどくせーってのが緩和されるぐらいのような

メソッド呼び出しから始まったようだけど、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

ありがとうございます
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の方がより特殊なので優先度が高い
そうなるとメソッドを優先度で並べて型が該当するか上から順に調べねばなるまい
実行時のコストとして許容できるかどうか
2014/11/15(土) 15:19:15.90ID:RzrSosLr
藻舞は何をオーバーロードで、クダ巻いとるんじゃ。
普段からそんなに高品質な言語ばっかり、使っているからじゃ

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なんだけどな
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++ なんだよ
2014/11/16(日) 21:35:15.07ID:cjwSUl7C
>Objective-CやSmalltalk、Rubyの失敗によって、
…どれも失敗してないように見えるが…
というか、これから歴史が判断するとは思うが
C++みたいな密なコーディングを必要とするのに規約ゆるゆるの
言語で起きた混乱のせいで、規約カッチリすればイインダヨ!な
関数型が注目されてるけれど、結局密なプログラミングは
後で他人がソースを弄りにくいという根本的な問題をほっかむりしてる
っつーよりそもそも"そういうもの"として問題にもしてないようにも見えるので
遠からずまた一過性の時代の徒花として忘れられて
swiftに取り入れられてるみたいに「そういう書き方できたら便利だね」的な
過去に提唱された便利概念に落ち着いてゆくと思う。
2014/11/17(月) 00:12:14.50ID:ZeG9cYbU
 blocksやgcの件からわかるようにObjective-Cが古臭く拡張しづらくなったのと、
静的言語の方がリファクタリングツール等のIDE連携ツールを作りやすいから移行し
ただけだと思う。
2014/11/17(月) 02:45:35.45ID:cESIq0Cd
> というか、これから歴史が判断するとは思うがC++みたいな密なコーディングを必要とするのに規約ゆるゆるの言語で起きた混乱のせいで、規約カッチリ
> すればイインダヨ!な関数型が注目されてるけれど、結局密なプログラミングは後で他人がソースを弄りにくいという根本的な問題をほっかむりしてるっ
> つーよりそもそも"そういうもの"として問題にもしてないようにも見えるので遠からずまた一過性の時代の徒花として忘れられてswiftに取り入れられてる
> みたいに「そういう書き方できたら便利だね」的な過去に提唱された便利概念に落ち着いてゆくと思う。

これで一文
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況