- 1 : 2022/06/11(土) 04:28:02.43 ID:Fx13NaBr0
- Objective-Cの美しさ
私は初めてObjective-Cに取り組んだ時(とは言っても2ヶ月前ですが)、この"@implementation"と
大括弧で囲む書き方にどうしても馴染めませんでした。
そもそも私の頭は十代から叩き込まれたCOBOLとアセンブラでガチガチになっていますので無理も無いですが。ここを精神論で解釈して行くとObjective-Cの美しさが見えてきます。
重要なのは"囲み"です。C++でのクラスの宣言を見てみましょう。
1 class Hello
2 {
3 public:
4 Hello();
5 void SayHello( void );
6 };classキーワードの後に名称が続き、中括弧で囲まれた空間の中でメンバの宣言を行います。
これを私の"外見から得たイメージ図"で表現すると右記(fig1)のようになります。
中括弧というのは両端が鋭く尖っています。
これが重要です。
鋭く尖った突起が両サイドに付いている物体を見て何を思い浮かべますか?
手裏剣や旧日本軍の銃剣、竹槍・・・私は暴力的な物ばかりが浮かびます。
そう、C++のクラス宣言は暴力的で閉鎖的な血生臭い外見をしているのです - 2 : 2022/06/11(土) 04:28:40.57 ID:Fx13NaBr0
- クラスからメソッドを呼び出す過程です。
C++でのメソッドの呼び出しを見てみましょう
1 hello->SayHello();
helloに対して"->"演算子を使用してメンバを呼び出します。
この外見を言葉で表すとこんな感じになります。俺様はhelloだ!SayHelloの糞野郎を出してやるぜ!
"->"これはまさに武器の図柄です。
棒の先に矢尻状の物が取り付けられた槍のような形状をしています。
恐らくは"hello"が"SayHello"を槍で突き刺し外に出しているのでしょう。
コンソールの出力"Hello World"はメソッド"SayHello"の断末魔の叫びです。ではObjective-Cでの場合はどうでしょう。
1 [ hello SayHello ];
"["と"]"の間にオブジェクトとメソッドが並んだ形状です。
この外見を言葉で表すとこんな感じになります。helloよ、SayHelloを出してくれないか?
helloからは銃器や刃物に該当するものは出ていません。
ここで重要なファクターを秘めているのが大括弧です。
"hello"と"SayHello"を器のような形状の物で優しく包みます。 - 3 : 2022/06/11(土) 04:29:20.75 ID:Fx13NaBr0
- ではObjective-Cのクラス宣言を見てみましょう。
1 @interface Hello : Object
2
3 -init;
4 -(void)SayHello;
5
6 @end@interfaceと@endで囲まれた中にメンバを宣言して行きます。
これを私の"外見から得たイメージ図"で表現すると右記(fig2)のようになります
C++の暴力的で閉鎖的な外見とは対照的に丸みを帯びた柔らかい外見的印象を受けます。
ここで重要な役割を果たしているのが"@"です。
元々円に近い形の"@"で天地を囲むので柔らかく明るい印象のソースに仕上がります。 - 4 : 2022/06/11(土) 04:29:38.71 ID:1Z0SAk7s0
- ちょっとなにいってんのかわかんないです
- 6 : 2022/06/11(土) 04:29:58.47 ID:ecB0Nzqn0
- 嘘つけ当初のsmalltalkの思想捨てたくせに
- 7 : 2022/06/11(土) 04:30:32.25 ID:Fx13NaBr0
- クラスメンバを宣言したらメンバを実装しなくてはなりません。
ここがJavaやC#との大きな違いです。C++
1 void Hello::SayHello( void )
2 {
3 puts( "Hello World" );
4 }Objective-C
1 @implementation Hello
2 -(void)SayHello
3 {
4 puts( "Hello World" );
5 }
6 @end両者共に基本形はCですが大きな違いがあります。
C++の場合、"戻値の型 クラス名称::メンバ"の形式で記述します。
この"::"が非常に美しくありません。
一体何なのでしょうか?
何故に"::"を選んだのか私には全く理解出来ません。
4個の"黒点"が均等に並んでいます。
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: ::
殺戮凶器に昆虫の大群です。
不気味極まりないですね。
考えているうちに寒気がしてきました。 - 8 : 2022/06/11(土) 04:31:09.35 ID:Fx13NaBr0
- Objective-Cの場合は"@implementation~@end"句で天地を囲みます
囲まれた中にメンバを記述して行くのですが、"::"のような薄気味悪い記号はありません。-(戻値の型) メンバ名:(型) 引数:(型) 引数・・・
この形状で実装を行います。
"-("この形が重要です。
丁度、航空機の主翼の断面図のような"形"になります
非常に滑らかでスピーディーかつシャープな印象を受けますね。
先頭の"-"を"+"にすると、C++で言うところのスタティックメンバと同じ役割を果たします。
シャープな内容物を"@implementation~@end"が優しく包み込み、全体を柔らかな印象にしてくれます。このように美しい外見をしているので、Objective-Cでのプログラミングは目に優しく
長時間のコーディングでも目に疲れを覚える事はありません。
もっとも、エディタの背景色を目に優しい色にしておかなければ目は疲れてしまいますが。 - 9 : 2022/06/11(土) 04:31:28.18 ID:5DnNpucYa
- インタープリタは総じて汚い
- 13 : 2022/06/11(土) 04:32:54.34 ID:hY6kwqUI0
- 姫森ルーナさん御本人である可能性
- 14 : 2022/06/11(土) 04:34:04.17 ID:r2Fr7soc0
- Pythonとかいう見た目も機能も汚い言語がチヤホヤされてる理由
- 15 : 2022/06/11(土) 04:35:13.75 ID:5DnNpucYa
- >>14
ライブラリやないの? - 16 : 2022/06/11(土) 04:35:32.81 ID:Om0sRkhjd
- 旧日本軍のくだりいる?
- 17 : 2022/06/11(土) 04:37:28.03 ID:sbiGKxvmr
- メッセージ式悪くないけど
そもそも動的な時点で終わっとる - 19 : 2022/06/11(土) 04:40:22.76 ID:WnIGP3tq0
- Appleのアプリなんかはこれで書かれてるんやっけ
- 26 : 2022/06/11(土) 04:46:47.78 ID:+B4uGZdK0
- CSSとHTML勉強すればサイト作れるんやろ?
WordPressってのもあるみたいやが - 28 : 2022/06/11(土) 04:49:15.04 ID:wzcyfekG0
- 懐かしいネタやな
今のObjCはジェネリクスもあるしマジで魔境や - 31 : 2022/06/11(土) 04:56:21.21 ID:+B4uGZdK0
- htmlとCSSとかの他にphpとかを組み合わせてサイト作るのか?
ひとつの言語じゃないと競合とかしそうだと思ってたわ
コメント