この世界、古来よりユーザーが資本を動かし、資本が変革を促し、変革がエコシステムを築いてきた。
遥か昔、DOSプログラマーはマウスでコンピュータを操作する行為を激しく軽蔑していた。さながら、視覚的な操作はプログラマーと機械の関係を引き裂くものだと思われていた。全てのプログラマーは割り込み命令をどれだけ知っているかを誇りに思い、それが未来の暗号だと信じていた。しかし後に誰もが知るとおり、視覚的なWindowsシステムが世界を席巻した。一般のユーザーは面倒を嫌い、それを選んだ。プログラマーはやむなく転向し、Windowsの下でのプログラミングを学び、Windowsのメッセージタイプを暗記することになった。
元のDOS技術スタックが悪かったのだろうか? 私はTC2.0も非常に使いやすいと思うが、無駄だった。技術スタック、あるいはエコシステムは、それを支える「抓手」が必要なのである。残念ながら、視覚的なオペレーティングシステムが第一世代のDOS技術スタックの命を絶った。あるいは、基盤技術とユーザーの選択がそれに取って代わった。その代表格であるTourbシリーズは非常に優れていたが、いつの間にか使われなくなった。これはまるでコダックのようだ。
Windowsオペレーティングシステムの出現はPC時代を招いた。シングルプレイゲーム、家庭用マルチメディア、エンジニアリング計算など、PC時代の需要がPC時代のシングルプログラムの形態を生み出した。これにより、VB、VC、VF、Delphiが大いに活躍し、シングルプログラムの性能最適化や開発の簡潔さが競われた。カギは、ユーザーがそれらを気に入り、好んだことだ。あの時代、もしWarcraftの起動に1分かかっていたら、その後のWorld of Warcraftは存在しなかっただろう。それらの技術が当時のエコシステムだったが、今は使われていない。技術そのものが時代遅れになったのではなく、それらのアプリケーション層を支えるユーザーモードが時代遅れになったのだ。言い換えれば、時代遅れになったのはPCの時代であり、技術ではない。実際、一部の基盤技術に関する当時の研究成果は今もなお大物たちに活用されているが、一般的なアプリケーション層の開発者は使わないだけである。
HTMLは1990年に誕生し、Javaは1994年に誕生した。なぜこれらの言語は最初の10年間、あまり盛り上がらず、使う人も少なかったのか? それはそれらが次世代のために生まれたからだ。先見性はあったものの、その地位を決定づける基盤の時代がまだ来ていなかったのだ。当時使っていた人々も、新しいものに飛びついては気ままに不満を吐き出していた。「C/C++と比べて性能が悪すぎる、何の役にも立たない」などと。今振り返ると、大衆の目も必ずしも正しいとは限らない。
時は流れて2007年、スマートフォンが出現した…
一般の人々は携帯電話(ショルダーホン)を捨て、突然これが良いと気づいた。コンピュータより優れていて便利で、しかも格好いい。こうして技術に詳しくない人々が再びIT技術の新時代を決定づけた。すなわちインターネット時代の到来である!
インターネット時代の二大特徴:
一、フロントエンド機器の多様化、バージョンの断片化
二、インタラクティブ業務の複雑化、サーバーサイド業務の巨大化
この二つの特徴が生み出した新たな要求は、かつてPCで幅を利かせていた技術スタック(VB、VC、Delphiなど)を打ちのめした。
クライアント側では:あれだけ命令レベルでのチューニングが可能だった静的コンパイルプログラムが、突然いくつものバージョンをコンパイルしなければならなくなった。しかも展開時にシステム環境の不足でエラーが多発し、ユーザーは「何だこのクソプログラムは」と罵った。
サーバーサイドでは:これまでインターネット、通信、巨大データ処理、クラスタ連携などは重点分野ではなかったため、それに対応する研究がなかった。
そうして皆は理解した。君は優秀だが、もう必要ない。あの時代の英雄たちは幕を閉じる時が来たのだ。
一方、JavaとHTMLという二人の兄弟は、最初からクロスプラットフォーム設計で、しかも通信媒体として設計されていたため、インターネット時代に多くの利点がすぐに現れた。そうして、塩漬けの魚がひっくり返り、ブロンズが王者になった。当時、Javaを過度に持ち上げる者はいなかったし、HTML/JSを盲目的に崇拝する者もいなかった。しかし大物たちは研究を始め、それらをインターネット時代にどううまく適用し、使いやすいソリューションとするかを模索し、新しいエコシステムが形成され始めた…
Microsoftは今回少し反応が遅れたようだ。ビル・ゲイツも最終的に未来を見通し、90年代末から猛烈に人材を引き抜き始めたが、.NET 1.0の最初のバージョンが出たのは2002年だった。肝心なのは、それがこの時代の基盤用途を目指していた点で、Javaはすでに実現していた。
競合製品同士、もし大差がなければ、それは次元の異なる攻撃(降維打撃)ではない。次元の異なる攻撃でなければ、細部で勝負するしかない!
PK1:PC向けでは、.NETがJavaに完勝。(しかしそれは重要ではない。PC時代が終わろうとしていたから)
PK2:クロスプラットフォームでは、.NETがJavaに惨敗。(「.NETはクロスプラットフォームが欠点」と言われるが、実際は違う。当時のWindowsプラットフォームがネットワークサーバーで性能が悪すぎたのが原因だ。有料+不安定、誰が使う?)
PK3:モバイル向けでは、.NETがJavaに完敗(特に2002~2016年の時代)
PK4:以上3点があれば、以下はまだ重要か…
こうして、大環境は当然のようにJavaに傾き、多くの人がJavaを学び始めた。Javaの王者時代がついに到来した。
そして中国では、非常に不思議な論理が生まれた。「Javaが強いのは、学ぶ人が多く、エコシステムが良く、コピーできるソリューションが多いからだ」と。
しかし技術の分野では、発言権は常に基盤技術にある。アプリケーション層のエコシステムがどんなに最適化され、豊かになっても、それは量の変化であって質の変化ではない。
基盤技術が新しいユーザー形態を生み出し、基盤的な革命を引き起こす。それは容赦なくアプリケーション層の技術の命を絶つ。あなたが望もうと望むまいとそうなのだ。不幸なことに、Java、C#、そしてその後のPython、GOはすべてアプリケーション層の言語であり、時代の次元の異なる打撃に対して自ら発言権を持っていない。
2008年、クラウド概念が生まれ、その後人工知能が登場した。2020年のパンデミックは仮想化の熱を引き起こした。現在、メタバースの概念が盛り上がっている。これは、この躁動する世界が再び変わり始めていることを示している。
未来は、間違いなく高度に人工知能化されたクラウドの世界になるだろう!
なぜそう言えるのか?
第一に、一般の人々は賢い機械を嫌うだろうか? 答えは間違いなく大歓迎だ。
第二に、一般の人々はよりリアルな仮想体験を嫌うだろうか? 答えは非常に好きで、むしろ夢中になるだろう。
第三に、現在のフレームワークで各企業が独自に人工知能アプリケーションを実装するのは現実的か? 答えは非現実的だ。将来はインテリジェントクラウドプロバイダーのクラウドインターフェースを呼び出すしかない。
第四に、人工知能が支える未来のモノのインターネット(IoT)世界に憧れないだろうか? 答えは、私は間違いなく憧れる。誰が否定しようとも信じない。
そうすると、将来のプログラミングは徐々にクラウドインターフェースを呼び出して機能を実現する方向に傾き、さらにクラウドUI、クラウド機能、クラウドシステムを呼び出す方向に進むだろう。
あなたはこう疑問に思うかもしれない。なぜ大物たちはクラウドの発展にこれほど熱心なのか? 兄弟、クラウドは回数や時間で課金されるのだ。ユーザー数が増えれば、莫大な利益が得られる。しかも競争の参入障壁もある。資本がなぜ金を惜しむだろうか?
だからこそ、私たちは国内外の大物たちがクラウド分野や人工知能分野で激しく戦っているのを目の当たりにしている。そして今のところ、自分たちにはあまり関係ないように感じる。それは、彼らの地位がまだ安定しておらず、基盤が固まっていないため、まだ牙をむき出すのが早すぎるからだ。
本題に戻る。真の未来の世界が到来したとき、私たちはどんな言語を必要とするのか?
答えは間違いなく、インテリジェントクラウド時代に適合する言語だ。そして振り返ってみると、将来の時代に対して、Java、C#、HTML5が今持つクロスプラットフォームの優位性はまだ重要だろうか? 私はそうではないと思う。なぜなら、これらの優位性は、かつてC/C++の静的コンパイルの性能優位性がそうだったように、素晴らしいが重要ではなくなるからだ。
2010年、MicrosoftはAzureクラウドプラットフォームを始めた。2016年、Microsoftは.NET Coreを始め、全プラットフォームをサポートした。そして突然、著作権を犠牲にし、Windowsだけのサポートをやめ、オープンソースで、包摂的で、無料になったかのように見えた。それに加えて性能最適化に努力を惜しまず、バージョンごとに継続的に更新し、現在は.NET 6まで更新し、すぐに.NET 7も始めた。なぜか?
ある者は、それはMicrosoftがJavaに対抗し、開発市場を占有するためだと言う。
これは、正しいとも正しくないとも言える。表面的には正しいが、実際には、現在の環境でコストを無視してJavaに対抗することに何のメリットがあるのか? 赤字で名声を得るだけだろうか?
さらに、.NET Coreや新しい.NET 5、.NET 6…のバージョンでは、Microsoftがクラウド開発へのサポートの比重を急速に増やし、大々的に宣伝していることに気づかないだろうか? 開発ツールの面では、Microsoftは赤字を覚悟で良いものを作る決意さえ見せている。モバイルクライアントでも、.NETはほぼ全プラットフォームをサポートし始め、iOSのような閉鎖的なシステムさえも逃さない。サーバーサイドでは、.NET Coreのパフォーマンス最適化とフレームワーク構築は目覚ましいものがある。
明らかに、近年の方向転換した.NET戦略には深い理由がある。これはMicrosoftが未来のクラウド時代、メタバース時代に備えて布石を打っているのだ。今のJavaとの勝敗は、Microsoftにとってさえそれほど重要ではない。肝心なのは「基盤を固め、未来に立脚する」ことだ。
人工知能のクラウド時代が到来すれば、今のいわゆるサーバーサイドはクラウド時代のインターフェース呼び出しクライアントに成り下がるだろう。今のWebベースの2Dクライアントは、仮想現実ベースの新しい3Dブラウザに取って代わられる可能性が高い!
したがって、フロントエンドとバックエンドは再び新たな革命に直面する。あの時代、多くのクラウドが集まり、仮想と現実が交錯する。今のHTML5やJavaが積み上げた厚いエコシステムはまだ重要だろうか? 再び同じ台詞を使うしかない。「そう、素晴らしい。しかし重要ではない」。
こうして、C#とJavaは再び同じスタートラインに立った。今回、C#はむしろ先手を取っているかもしれない。HTMLは最も悲惨かもしれない。なぜなら、それが依存する2Dブラウザエコシステムは3D化された世界では疎外される可能性があり、土壌を失ったHTMLは完全に革命されるかもしれない。
そして今回の競争では、細部が根本的に変化した:
細部1:クロスプラットフォーム:C# イーブン Java
細部2:簡潔さと効率:C# 勝り Java
細部3:クラウドエコシステム:C# 勝り Java(.NET Coreはクラウドサポートを内蔵)
細部4:3Dエコシステム:C# 勝り Java(C#が低迷していた時代も、Unity 3D開発によって支えられた)
比較すると、これほど優位性が明らかである。未来、持続的な戦略的支援により、海外の大物たちが再び実践し、全く新しいメタバースエコシステムがひそかに台頭するだろう。そしてこのエコシステムがこちらに伝わるとき、あなたは驚くことに気づくかもしれない。ああ、今回の王者はC#なのだと。
もちろん、万物は発展し、どの技術も自己革新を行う。やはり同じ言葉を繰り返す。最後に誰が王者と呼ばれるかは、結局のところ、どの技術がユーザーにより近く、未来をよりリードするかにかかっている。
言語の良し悪しは、言語に関係する。
言語の成否は、言語に関係しない!
本文は転載
原文著者:邪恶的二进制
原文タイトル:大胆推測:未来の王者、或いはC#に属す
原文リンク:https://zhuanlan.zhihu.com/p/499713602