スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Apple Watchは買わないが | トップページ | リリースはYosemite次第 »

ネイティブは偉い?

今はOSX用Mirror-DTCクライアントのネイティブ版を開発中なのだが、大昔とは違って、巷のOSでやれる事に大差は無い。なので、Windowsでやれる事はOSXでもやれるので、Windows版をベースにOSX版を開発する作業も難しくはないのだが、OSX版のコーディングは面倒だ。

一昨日、megumiチャンネルのiPhone6紹介動画へのリンクを載せたのだが、そこで、megumiさんは、iPhone6 Plusを予約するつもりで、その理由は、iPhone6 PlusはiPhone6よりも偉いのでドヤ顔が出来るからだ、と、言っていた。

しかし、作者という人は、東芝時代には、本社ビルのエレベータで社長とすれ違ったりする事もあったのだが、深々と頭を下げる様な事はしなかった人なので、世間的な序列、つまり、偉いだとか偉くないだとかいった事には無頓着な訳だ。

つまり、作者的には、社長というのは社長としての仕事をする人でしかなく、部長は部長としての仕事をする人でしかないので、iPhone6 Plusというのも、iPhone6 Plusとしての仕事をするだけのモノでしかなく、別段、iPhone6よりも偉いとは思っていない。

と、いう事で、表題の話になるのだが、ネットを見ていると、主にC#プログラマーの人の記事に、「ネイティブ厨」という言葉が出て来る事が多い。

これは、Win32APIを使ってC++でプログラムを書いているプログラマーを揶揄する言葉になるのだが、Windowsでは、Win32APIを使ってC++でコードを書いている作者というのは、その「ネイティブ厨」になる筈だ。

しかし、そんな作者も、ここ数年は、Javaでコードを書いたり、HTML5のJavaScriptでコードを書いたりしている訳で、何も、Win32APIやC++が優れているから使っている、という訳でもない訳だ。

実際、OSX用のMirror-DTCクライアントも、現行版はJavaを使って記述してあるのだが、それを、今回、Objective-C+Cocoaのネイティブ版として再構成しているのは、何も、ネイティブ版の方が偉いから、という訳ではない。

同様に、Windowsでも、.Net+C#では、DirectXもマトモには使えないし、それ以前に、今年の前半にやっていたMasterReversiの高速化といった様なモノも、C#では不可能なので、MasterReversiはネイティブ版にしてある訳だ。

つまり、実際問題としては、競争相手になるEdaxというのはC言語をベタに使って記述されているので、CPUレジスタを使ったパラメータ渡しだとかメモリアクセス回避等がやれないと、性能的には、全く、太刀打ちは出来ない訳だ。

と、いう事で、作者がネイティブに拘るのは、API的には、ネイティブでなければやれない事が多々あるし、性能的には、C#のような仮想機械上で動作するような言語では、競合アプリと戦えないからだ。

なので、API的にも性能的にも問題が無い場合には、作者的にはネイティブには拘らない訳なのだが、その理由は、一般的に、ネイティブで無い方がコーディングは楽だからだ。

で、少し前に書いた様に、Cocoaを使ったObjectiv-Cでの開発というのは、兎に角、記述しなければならない文字数が多くなる。まあ、Xcodeは優秀なので、実際には、入力すべき先頭文字を数文字入力すれば、残りの部分は補完してくれるので、腱鞘炎になる事は無いかもしれないのだが、だとしても、Windowsでコードを書くのに比べれば、記述量は多くなる。

例えば、Windowsだと、タイマーを起動するのはSetTimer(0,100,NULL)で済むのだが、OSXの場合には、以下の様に2行必要になる。

self.m_Timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:self.m_Timer forMode:NSRunLoopCommonModes];

上記を見比べると、OSXでは、実行メソッドは指定できているし、タイマーオブジェクトの生成と実行とを別に行えるので、より便利、と、言う人もいるかもしれないのだが、単純にタイマーを起動したい場合にどちらが便利かは一目瞭然だろう。

もっとも、作者的には、Windows版からの移植を行っている訳なので、上記以外についても、大体はマクロを使ってWindows風の書き方が出来る様にしてある。

つまり、Objective-Cを使っていても、Win32APIと同様の関数が使える格好にしてある訳なのだが、まあ、本当のネイティブ厨なら、こんな事はしないだろう。

と、いう事なので、作者的には、別段、ネイティブが偉いとは思っていないのだが、世の中には、C言語よりもアセンブラの方が偉い、なんて事を思っている人もいるかもしれない。

なので、確かに、ネイティブの方が偉い、と、思っている人は存在しているのかもしれないのだが、逆に、C#やRubyなんかを使っている俺はカッコイイ、なんて事を思っている人も多々いるような気もする。

と、いう事なので、何が偉いのか、なんてのは人それぞれになる筈なので、作者的には、そんな事を色々と鑑みるのは面倒だ。なので、作者的には、序列というモノには、あまり感心が無い訳だ。

= この記事に関連する公開中ソフト =

Mirror-DTC

Mirror-DTC

(2015/02/15追加)

« Apple Watchは買わないが | トップページ | リリースはYosemite次第 »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/60318534

この記事へのトラックバック一覧です: ネイティブは偉い?:

« Apple Watchは買わないが | トップページ | リリースはYosemite次第 »

2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google