スイフトは必要ありませんか?

私は不思議に思っています-SwiftとObjective-Cに対するAppleの計画は何ですか? Swiftが2014年に登場したとき、その作成者Chris Luttnerは、2つの言語が無期限に共存できると主張しました。 メーリングリストからXcodeユーザーへ:
2014年6月3日

マクラフリン、マイケルP.

Appleが本当にCとC ++のサポートをやめるかどうかは誰にもわかりませんか? Fortranはサポートされなくなりましたが、Fortranにはまだ多くのコードがあり、MultiNestのように比較的新しいコードがあります。

そうではないことを言ってください。 「経験豊富なユーザー」が単にフルレングスの漫画を作成する人であると誰もが信じているわけではありません。 それらの多くは科学者とエンジニアです。



こんにちはマイケル

そのような計画は立てませんでした。 Swiftは、プラットフォームの新しい開発オプションにすぎません。 C、C ++、またはObjective-Cのサポートを停止するつもりはありません。 これらの言語のいずれかで開発している場合は、引き続き自由に使用できます。



-クリス。
手紙の元のテキスト
> 2014年6月3日午前5時45分、McLaughlin、Michael P. <mpm ... @ mitre.org>は次のように書いています。

> AppleがCとC ++のサポートをやめるつもりであるかどうか、誰もが実際に知っていますか?

>それはそのように聞こえました。 彼らはすでにFortranをサポートしていません

> MultiNestのようなかなり新しいコードですら、Fortranコードがたくさんあります。

>

>そうではないと言ってください。 私たち全員が「パワーユーザー」をそれらだけと考えているわけではありません

>長編漫画を作成する人。 多くは科学者とエンジニアです。



こんにちはマイケル



そのようなことをする予定はありません。 Swiftは開発のための新しいオプションです

プラットフォーム上。 C、C ++、Objective-Cを削除する予定はありません。 もしあなたが

彼らに満足して、それらを使い続けてください。



-クリス




事実は誰もこれを信じていないということです。 Chris Luttnerは長い間Appleを退職しており、もし彼の声明が虚偽の場合、彼は会社を代表して批判を受け入れることができません。 一般に、開発者はAppleが最終的にObjective-Cを放棄することに同意し、SwiftはCocoaアプリケーションを開発するための唯一の「ファーストクラス」言語になるでしょう。 Objective-Cのコンパイラのサポートを停止したり、完全に削除したりする理由がないため、「ファーストクラス言語」という言葉は重要です。 コンパイラは、十分に活用されていないものや古いものなど、多くのプログラミング言語をサポートしています。 したがって、ラトナーの声明は正式に真実かもしれませんが、それはポイントではありません。 問題は、iOSおよびmacOS用のCocoaアプリケーションを開発するための言語を選択することです。



開発者コミュニティはおそらく正しいでしょう。 Objective-CとSwiftが無期限に共存し続けることはできないことに同意します。 しかし、私は将来がSwiftにあるかどうかはよくわかりません。 これがそうだとしたら? この記事をこのシナリオに捧げたいと思います。 まず、SwiftとObjective-Cが平和的に共存できない理由を説明します。



新しい希望?



SwiftもObjective-Cも、Appleプラットフォーム以外ではほとんど使用されていません。 これは将来変更される可能性がありますが、現時点では事実です。 したがって、Appleプラットフォーム用のアプリケーションを開発する場合は、いずれか、または両方を検討する必要があります。 「学ぶべき言語は?」初心者にとっては難しい質問です。 1つの言語を使用する場合、標準のヒントはSwiftです。 私は彼に同意しませんが、彼が標準であることを認めます。 スマートヘッドは、両方の言語を学習することを提案します。 しかし、ここに障害があります。 アプリケーションを書くためだけに両方のプラットフォーム固有の言語を学ぶ必要がある場合、Appleプラットフォームは開発者にとって魅力を失います。 開発者は、SwiftがObjective-Cよりも「現代性」と「親しみやすさ」のために好きでした。 しかし、Objective-Cをまだ学習する必要がある場合、その利点は何ですか? サードパーティのデベロッパーがSwiftを採用しました。ええと...速い(オリジナルはしゃれた、Swift =「速い」-約Per。) -Appleはジャンプするように言われました-彼らは飛びました。 ミネトンカ湖のアポロニアのように。 Swiftは非常に人気があります。 これにより、Swiftリソースに対する大きな需要が生まれました。 メーリングリスト、フォーラム、ブログ、Stack Overflow、twitter、その他すべてで、開発者はSwiftについて知り、それについて議論したいと考えています。 Swiftは技術出版業界に影響を与えてきました。 それは労働市場にも影響を与えました-多くの企業は、言語の流行のため、または単に非識字のために、Swift開発者のみを雇いました。 Appleプラットフォームの多くの開発者はObjective-Cを知りません。 そして、多くのObjective-C開発者は、Swiftを排他的に使用することを選択します。そのため、再びObjective-Cに戻らなければならない場合、Objective-Cを忘れてしまい、問題が発生し始めます。 Swiftの流行、開発者の間での需要は、Objective-Cをかき消すと脅しています。 これらの2つの言語は、Appleの頭の中で「公式に」共存できますが、他の誰かと非公式に共存できますか? それぞれの言語で、手紙、ブログ、ウィキを二重にすることはできますか? オープンソースプロジェクト-Objective-CまたはSwiftについてはどうですか? また、労働市場がほぼ独占的にSwiftに移行する場合、開発者は同じ方向に進むしかありません。



帝国の逆襲



上記の議論から判断すると、Objective-Cは運命にあります。 より多くの開発者がSwiftを選択しています。 ただし、開発者がAppleプラットフォームを制御するわけではないため、すべてが失われるわけではありません。 Swiftがまだ支配していない唯一の場所は、たとえ皮肉に聞こえても、Apple自体です。 同社は非常にゆっくりとSwiftを開発しています。 これまでのところ、Appleは驚くほど小さなSwiftコードを実装しています。 これに関する優れた分析は、あるブログで見つけることができます。 いくつかの説明が提案されています-多くはこれを謝罪と呼ぶかもしれません。 たとえば、AppleフレームワークはSwiftを使用できません。SwiftはまだABIの安定性(またはソースの安定性)に達していないためです。 説明がどうであれ、事実は残っています。Appleの内部Swiftコードベースは比較的小さく、Objective-Cベースはおそらく世界最大です。



Appleが現在1つの言語を放棄しなければならない場合、どの言語ですか? Swiftを拒否すると、サードパーティの開発者にとって非常に苦痛になります。 一方、Apple自体については、ほとんど気付かれないままになります。Objective-Cに変換する必要があるSwiftコードが少なすぎます。 もちろん、Appleは特にXcodeに関してSwiftに多大な努力をしましたが、これは埋没コストです。 Appleはお金を排水溝に捨てません。 Objective-Cには多くの投資が行われており、これらのコストはSwiftよりもさらに回復不能です。 重要なのは、既に支払われている価格ではなく、将来支払わなければならない価格です。 Appleは沈没したコストに対して何もしません。 噂によると、彼らは自動車プロジェクトに莫大なお金を投資しており、まだ何も行われておらず、ほとんどが延期されたという。



Appleは、必要に応じてすべてのObjective-CコードをSwiftに書き換えることができます。 もちろん、彼らにはこのためのリソースがあります。 彼らが所有する流動資産の量は、驚くべきものであり、歴史上前例のないものです。 しかし、現在の企業文化は、この変革を実行できないか、実行しないことを示唆しています。 これにはいくつかの要因があります。 まず、Appleはすべての主要なOSバージョンの年間リリースサイクルに切り替えました。 実際、同社はアジャイルソフトウェア開発の哲学を打ち出したと伝えられています。 このアプローチでは、完全な手直しのための時間があまりにも残ります。 そして、Appleがテクノロジーやアプリケーションをゼロから書き直すと、品質がどのように低下​​し、機能が失われるかを見てきました。



第二に、Appleは「最高の」エンジニアを採用することに誇りを持っています。 アップルの専門家とそうでない専門家の両方を知っているので、これは神話だと思います。 しかし、これが真実であるかどうかにかかわらず、これは会社の観点であり、したがって、彼らは膨大な数の人々を雇い、Objective-Cコードを書き直すためにすべてのリソースを投入することはできません。



第三に、以前のポイントに基づいて、知識のあるObjective-Cの数が減ったと言います。 Appleがたくさんの人をこのタスクに転送したい場合でも、彼らはどこでそれらを見つけますか? もちろん、SwiftでObjective-Cを書き換える必要がある場合は、Objective-Cの知識がなくても両方の言語を理解する専門家が必要です。アイデア全体が災害に変わります。



Appleの内部調査では、 ソフィーが現在の2つの言語の間で( 難しい選択を意味する-約を選択しなければならなかった場合、彼女は間違いなくスウィフトではないことが示されています。 あなたがSwiftに完全に没頭したサードパーティの開発者であれば、この考えは少なくともあなたを怖がらせるはずです。 そして、今日振り子がこの方向に揺れる場合、どれくらいの時間が経過しなければならないのか、そして振り返るには何が起こらなければならないのかを自問してください。 いつ、どの年にObjective-Cよりも企業がSwiftを放棄するのが苦痛になるのでしょうか?



おそらく今あなたは不平を言っている、と彼らは言う、AppleはSwiftを放棄することによってそのような開発者を裏切ることはできないと言う。 Appleの幹部はどのように夜寝ますか? 現金を詰めたマットレスに疑いがあります。 彼らは二度と考えません。 彼らは自分の勇気を称賛することさえできます。 Appleの開発者との関係の歴史を見ると、サポートの否定、失望、苦しみ、そして無制限の約束のチェーン全体を見ることができます。 Objective-Cガベージコレクター、64ビットCarbon、Cocoa-Javaインターフェイス、Yellow Box for Windows、Dylan。 続行する必要がありますか? できた。 Appleエバンジェリストは、Swiftが最高のプログラミング言語であることを教えてくれます。そして、彼らは考えを変えて、常にSwiftに反対していると言います。



前編



AppleがSwiftの作成を決定したとき、彼らの計画はどうでしたか? 3つのオプションがあります。



  1. 彼らは、両方の言語をいつまでもサポートするつもりでした。
  2. 最終的に、彼らはObjective-Cを放棄し、開発者が信じているSwiftに切り替えることを計画しました。
  3. 彼らは具体的な計画を持っていなかったし、実際にスウィフトが発砲すらするかどうか確信を持っていなかった。


最初のオプションは上記の理由に適していないため、すぐに一掃できます。



背景が妥当であれば、Appleにそれを公然と表明してほしい。 Luttnerからのメッセージは、少なくとも誤解を招くものです。 Swiftが未来の場合、開発者に率直になって、彼らに適応できるように計画を共有しないでください。 この点に関しては、不確実性が最悪です。 選択肢がなければ、Swiftが未来であることに同意できます。 しかし、SwiftがAppleの選択であり、まだ選択があるという幻想を私たちに与えた場合、一部の開発者は間違った選択をする可能性があり、これは誰にとっても有害です。



3番目のオプションは正しいと思います。 私は知っている、多くの人々は、Appleがいくつかの壮大な、秘密の、巨大な計画に従って働いていると思います。 Appleには長期計画がありますか? 間違いなく。 これらの計画は具体的ですか? 私はそれを疑います。 技術分野では、長期計画を立てることができますが、それに固執することを期待しないでください。 テクノロジーは急速に変化しています... 柔軟である必要があります(アジャイルではなく、ただ柔軟です)。 競合他社の行動に対応できる必要があります。 たとえば、Lettnerの出発-これはAppleの計画の中にありましたか? 計画は変化しています。 変更する必要があります。 サードパーティの開発者はすぐにSwiftを攻撃しましたが、Appleは彼らが気付かずに通過する可能性も考慮する必要がありました。 最善を期待し、最悪を計画します。



追放者



すべてのアカウントで、SwiftプロジェクトはApple内でも秘密でした。 彼を知っているのはごく少数の人だけでした。 公に発表されたとき、ほとんどのAppleエンジニアにとっては、開発者と同じくらい驚きでした。 Appleの従業員はこれに対応できていませんでした。 これがSwiftにとって最大の課題です。Appleの開発チーム間の内部対立です。 Swiftチームは、リーダーシップのサポートを受けて、Appleアプリ開発の未来としてSwiftを宣伝しています。 しかし、Swiftチームは現在を一掃するだけでなく、確立された事実として未来をその場所に置くことはできません。 Appleにとって本物はObjective-Cです。 多くのObjective-C。 NeXTの購入前に蓄積された何十年ものObjective-C。 Objective-Cのコードベース全体が、まるで魔法のように消えることはありません。 あなたは、時間とリソースが限られているAppleチームのグループにSwiftを代表しています。彼らは、あなたを地獄に送るだけです。 彼らはアイデア自体を好むかもしれませんが、WWDCは近いので、多くの作業を行う必要があります。 たぶん1年で...または2年で。



Appleはこれらの競合する利益をどのように調整できますか? Swiftの将来を確保したいのですが、Objective-Cコードも大量にあり、最高のエンジニアのみを採用しながら柔軟なソフトウェア開発を続けたいと考えています。 はい、ソフトウェアの品質を維持します。 (私たちは彼らがまだそこの品質を気にしていると仮定できると思います。)何かを犠牲にしなければなりません。 一方、サードパーティの開発者は、Swiftリソースに対してより多くの要求を行います。 APIの記述はおそらくかなり自動化されているので、ダブルスタックは大きな問題にはなりませんが、Swift開発者はドキュメントとコード例が必要になります。 Appleの公式の立場が両方の言語をサポートすることである場合、二重のドキュメントと二重のコード例を書いていますか? そして、古いObjective-Cのドキュメントを更新するのにどれだけの労力を費やしましたか?



この問題に対するコミュニティの反応はどうですか? AppleがObjective-Cを放棄すると考える人々-どうやってそれを処理できると思いますか? AppleがObjective-Cの外部使用を放棄すると仮定する人もいますが、内部では引き続き使用します。 しかし、これらの人々は問題を過小評価していると思います。 Objective-CコードベースのサイズとAppleが取り組んでいる制限を考えると、Swiftへの切り替えは本当に引きずられます。 あなたの意見では、会社はObjective-Cのすべてのツールをどのくらいサポートしますか? あなたの答えが5年でも、10年でも、10年以下でもない場合、問題全体の量を想像することはできないと思います。 AppleがXcodeの内部バージョン、内部Objective-C API、内部Objective-Cドキュメント(誰もがドキュメントを必要とする)などを開発および保守するために別個のリソースを割り当てることは、私には非常にありそうにないようです。 Objective-Cを放棄した場合、Objective-Cの開発者の数は今よりも急速に減少するでしょう。それで、Appleは将来、コードベースをサポートする人々をどこで見つけるでしょうか?



エピソードC



上記に対する反論の可能性について私に反論させてください。 反論としては、AppleはすでにObjective-CとC. FoundationとCore Foundationの2つの技術スタックを採用しているということです。 したがって、別の言語を追加することは、新しくて未知のものではありません。 この異議は一見説得力があるように見えますが、ギャップがあります。 はい、Objective-CとCは2つの異なる言語ですが、Objective-Cは基本的にCのアドオンであるため、Swiftに類推することはできません。Objective-Cをよく勉強して、Cを知っているならも。 多くの人がCを使用し、次にObjective-Cを使用することは重要ではありません。 実際、私はまさにこの道をたどり、それと他の道に従うことを勧めました。 しかし、Cを学習してからObjective-Cを学習することは、2つのプログラミング言語を学習することと同じではありません。 実際、これは単にObjective-Cの2段階の研究です。 Cについて学んだことはすべてObjective-Cに当てはまります。 それは、いわば機能します。 しかし、Swiftは関係ありません。 もちろん、SwiftはObjective-Cを操作する人々によって開発されたため、いくつかの共通部分がありますが、いずれの場合も他のアドオンよりもアドオンではありません。 SwiftとObjective-Cは、たとえばC ++とCよりもはるかに互換性がありません。C++とCは非常に近いものですが、完全には互換性がありません。



さらに、CはiOSおよびmacOS用のアプリケーション開発言語ではありません。 純粋なCアプリケーションを作成できますか? おそらく、しかし確かに簡単ではありません。 Cで開発するためのAPIはCocoaではなく、Carbonであり、AppleはほとんどCarbonを放棄しました。 AppleプラットフォームのC用にサポートされているAPIがいくつかありますが、CはObjective-CやSwiftほどiOSやmacOSアプリケーションの開発に近いものではありません。



ある種の復ven



これらは私の疑いですが、AppleはSwiftがそれほど急速に普及することを期待していなかったようです。 Swiftが長年にわたってゆっくりと開発されていた場合、この戦略全体がより理にかなっているでしょう。 開発者が2つのキャンプに均等に分散している場合、ダブルスタックは有益です。 アップルとサードパーティの開発者は、Objective-CからSwiftに既存のコードを書き直すのに十分な時間を持っていただろう。 Swiftは私たちの未来かもしれませんし、唯一の開発言語かもしれませんが、遠い未来です。 Swiftが開発者の思考の中でObjective-Cを突然圧倒する可能性があるというのは、計画や想像のゲームの誤りであることが判明する可能性があります。 そして今、Appleは難しい選択に直面しています。 社内での準備が整っていないときに、社外のSwiftの予想外の人気にどのように対処しますか?



AppleはSwiftから撤退すると思われます。 Lettnerの辞任はこの機会をさらに可能性があると思います。 多くの開発者は、すべてのリソースをSwiftに置きます。 当時は良い投資のように思えたかもしれませんが、おそらく報われるでしょう。 それはおそらく報われるでしょう。 もしそうでなければ? 突然、管理の変更がありますか、それとも管理の雰囲気が変わるだけでしょうか? Appleが突然、社内の制約を予想よりも克服するのが難しく、言語を変更しても利益が得られないと判断した場合はどうなりますか? この可能性を排除できますか? 多くの人がそのような残酷な世界に準備ができていないのではないかと思います。 これが起こると、多くの涙と悲鳴があります。 しかし、1999年の庭にいるように笑ったり楽しんだりするObjective-Cの開発者の間ではありません。極端な場合、2001年。



All Articles