ソフトウェア開発の未来:コンピュータの未来 P2
ソフトウェア開発の未来:コンピュータの未来 P2
1969 年、ニール アームストロングとバズ オルドリンは、人類で初めて月に足を踏み入れた後、国際的な英雄になりました。 しかし、これらの宇宙飛行士はカメラのヒーローでしたが、彼らの関与がなければ、最初の有人月面着陸は不可能ではなかったであろう何千人もの名前のないヒーローがいます. これらのヒーローの何人かは、フライトをコーディングしたソフトウェア開発者でした。 なんで?
当時存在していたコンピュータは、現在のものよりもはるかに単純でした。 実際、平均的な人の使い古したスマートフォンは、アポロ 11 号宇宙船 (さらに言えば 1960 年代の NASA のすべて) に搭載されたどのスマートフォンよりも数桁強力です。 さらに、当時のコンピューターは、ソフトウェアを最も基本的なマシン言語である AGC アセンブリ コードまたは単に 1 と 0 でプログラミングする専門のソフトウェア開発者によってコーディングされていました。
文脈のために、これらの陰の英雄の XNUMX 人、アポロ宇宙計画のソフトウェア エンジニアリング部門のディレクターは、 マーガレット·ハミルトン、そして彼女のチームは、今日のプログラミング言語を使用すればわずかな労力で記述できる大量のコード (下の写真) を作成する必要がありました。
(上の写真は、アポロ 11 号のソフトウェアを含む紙の束の隣に立っているマーガレット ハミルトンです。)
そして、ソフトウェア開発者が考えられるシナリオの約 80 ~ 90% をコーディングする今日とは異なり、アポロ ミッションでは、彼らのコードはすべてを説明する必要がありました。 これを概観するために、マーガレット自身は次のように述べています。
「チェックリストマニュアルのエラーにより、ランデブーレーダースイッチが間違った位置に配置されました。これにより、コンピューターに誤った信号が送信されました。その結果、コンピューターは着陸のために通常の機能をすべて実行するように求められていました.その時間の 15% を使用する偽のデータの余分な負荷を受信している間. コンピューター (またはその中のソフトウェア) は、実行する必要があるよりも多くのタスクを実行するように求められていることを認識するのに十分なほどスマートでした.宇宙飛行士にとって意味のあるアラームを出すと、私は現時点で行うべきよりも多くのタスクで過負荷になっているため、より重要なタスク、つまり着陸に必要なタスクのみを保持します...実際には, コンピュータはエラー状態を認識する以上のことを行うようにプログラムされていました. 回復プログラムの完全なセットがソフトウェアに組み込まれました. この場合のソフトウェアのアクションは、優先度の低いタスクを排除し、より重要なタスクを再確立することでした...もしコンピュータがなかったらこの問題を認識して回復措置を講じた場合、アポロ 11 号が月面着陸に成功したかどうかは疑問です。」
— マーガレット・ハミルトン、マサチューセッツ州ケンブリッジ、マサチューセッツ州ケンブリッジ、マサチューセッツ工科大学 (MIT Draper Laboratory)、マサチューセッツ州ケンブリッジ、アポロ フライト コンピューター プログラミングのディレクター、「コンピューターが読み込まれました」、への手紙 データ化、March 1、1971
前に示唆したように、ソフトウェア開発はアポロ初期の頃から進化しています。 新しい高水準プログラミング言語は、1 と 0 でコーディングする退屈なプロセスを、単語と記号でコーディングするプロセスに置き換えました。 何日ものコーディングを必要とした乱数の生成などの機能は、単一のコマンド ラインを記述することで置き換えられます。
言い換えれば、ソフトウェア コーディングは、XNUMX 年を追うごとに自動化され、直感的になり、人間的になっています。 これらの品質は、私たちの日常生活に大きな影響を与える方法でソフトウェア開発の進化を導き、将来まで続くだけです。 これは、 コンピュータの未来 シリーズは探求します。
大衆向けのソフトウェア開発
1 と 0 をコーディングする必要性 (機械語) を単語と記号 (人間の言語) に置き換えるプロセスは、抽象化のレイヤーを追加するプロセスと呼ばれます。 これらの抽象化は、設計された分野の複雑な機能や一般的な機能を自動化する新しいプログラミング言語の形で登場しました。 しかし、2000 年代初頭に、新しい企業 (Caspio、QuickBase、Mendi など) が登場し、ノーコードまたはローコード プラットフォームと呼ばれるものを提供し始めました。
これらはユーザー フレンドリーなオンライン ダッシュボードであり、非技術専門家がコードの視覚的なブロック (シンボル/グラフィック) をスナップすることで、ビジネスのニーズに合わせてカスタマイズされたカスタム アプリを作成できるようにします。 言い換えれば、木を切り倒してドレッシング キャビネットを作る代わりに、IKEA の既製の部品を使ってそれを組み立てます。
このサービスを使用するには、一定レベルのコンピューターに精通している必要がありますが、コンピューター サイエンスの学位を取得する必要はありません。 その結果、この形式の抽象化により、企業の世界で何百万人もの新しい「ソフトウェア開発者」が台頭し、多くの子供たちが幼い頃からコーディング方法を学ぶことができるようになっています.
ソフトウェア開発者であることの意味を再定義する
風景や人物の顔をキャンバスにしか捉えられない時代がありました。 画家は見習いとして何年も勉強し、練習し、絵画の技術を学び、色をブレンドする方法、最適なツール、特定のビジュアルを実行するための正しいテクニックを習得する必要があります。 貿易のコストと、それをうまく行うために必要な長年の経験は、画家がほとんどいないことも意味していました.
その後、カメラが発明されました。 また、ボタンをクリックするだけで、他の方法では数日から数週間かかるような風景やポートレートが一瞬でキャプチャされます。 そして、カメラが改良され、安価になり、最も基本的なスマートフォンにさえ搭載されるほど豊富になったため、私たちの周りの世界をキャプチャすることは、今や誰もが参加する一般的でカジュアルなアクティビティになりました.
抽象化が進み、新しいソフトウェア言語がこれまで以上に日常的なソフトウェア開発作業を自動化するにつれて、10 年から 20 年後にソフトウェア開発者であることは何を意味するのでしょうか? この質問に答えるために、将来のソフトウェア開発者が明日のアプリケーションを構築する方法を見ていきましょう。
*まず、標準化された繰り返しのコーディング作業がすべてなくなります。 その代わりに、事前定義されたコンポーネントの動作、UI、およびデータ フロー操作 (Ikea パーツ) の膨大なライブラリが配置されます。
*今日のように、雇用主または起業家は、ソフトウェア開発者が専用のソフトウェア アプリケーションまたはプラットフォームを通じて実行するための特定の目標と成果物を定義します。
*これらの開発者は、実行戦略を計画し、コンポーネント ライブラリにアクセスし、ビジュアル インターフェイスを使用してそれらをリンクすることにより、ソフトウェアの初期ドラフトのプロトタイプ作成を開始します。ビジュアル インターフェイスは、拡張現実 (AR) または仮想現実 (VR) を通じてアクセスされます。
* 開発者の最初の草案が暗示する目標と成果物を理解するように設計された専用の人工知能 (AI) システムは、草案を作成したソフトウェア設計を改良し、すべての品質保証テストを自動化します。
*結果に基づいて、AI は開発者に (Alexa のような口頭でのコミュニケーションを通じて) 多数の質問をし、プロジェクトの目標と成果物をよりよく理解して定義し、さまざまなシナリオでソフトウェアがどのように動作するかについて話し合います。と環境。
*開発者のフィードバックに基づいて、AI は徐々に開発者の意図を学習し、プロジェクトの目標を反映するコードを生成します。
*この人間と機械のコラボレーションは、ソフトウェアのバージョンごとに繰り返され、完成した市場向けのバージョンが内部実装または一般への販売の準備が整うまで行われます。
*実際、このコラボレーションは、ソフトウェアが実際の使用にさらされた後も継続されます。 単純なバグが報告されると、AI は、ソフトウェア開発プロセス中に概説された元の望ましい目標を反映する方法で、それらを自動的に修正します。 一方、より深刻なバグが発生した場合は、問題を解決するために人間と AI の協力が必要になります。
全体として、将来のソフトウェア開発者は、「どのように」よりも「何を」「なぜ」に重点を置くようになるでしょう。 彼らは職人ではなく、より建築家になるでしょう。 プログラミングは、AI が理解できる方法で意図と結果を体系的に伝達し、完成したデジタル アプリケーションまたはプラットフォームを自動コーディングできる人を必要とする知的な演習になります。
人工知能主導のソフトウェア開発
上記のセクションを考えると、AI がソフトウェア開発の分野でますます中心的な役割を果たすようになると私たちが感じていることは明らかですが、AI の採用は、ソフトウェア開発者をより効果的にすることだけを目的としているわけではなく、この傾向の背後にはビジネスの力もあります。
ソフトウェア開発会社間の競争は年々激化しています。 一部の企業は、競合他社を買収して競争します。 ソフトウェアの差別化で競合する企業もあります。 後者の戦略の課題は、簡単に防御できないことです。 ある企業がクライアントに提供するソフトウェアの機能や改善点は、競合他社が比較的簡単にコピーできます。
このため、企業が XNUMX ~ XNUMX 年ごとに新しいソフトウェアをリリースする時代は終わりました。 最近では、差別化に重点を置いている企業は、新しいソフトウェア、ソフトウェアの修正、およびソフトウェアの機能をますます定期的にリリースする金銭的なインセンティブを持っています。 企業がイノベーションを加速すればするほど、クライアントのロイヤルティが高まり、競合他社に切り替えるコストが増加します。 段階的なソフトウェア アップデートの定期的な配信へのこの移行は、「継続的な配信」と呼ばれる傾向です。
残念ながら、継続的デリバリーは簡単ではありません。 今日のソフトウェア企業のわずか XNUMX 分の XNUMX が、この傾向に要求されるリリース スケジュールを実行できます。 これが、AI を使用して物事を高速化することに大きな関心が寄せられている理由です。
前に概説したように、AI は最終的に、ソフトウェアの起草と開発においてますます協力的な役割を果たすようになるでしょう。 しかし、短期的には、企業はソフトウェアの品質保証 (テスト) プロセスをますます自動化するためにそれを使用しています。 また、AI を使用してソフトウェア ドキュメントの自動化を試みている企業もあります。これは、新しい機能やコンポーネントのリリースを追跡し、それらがどのようにコード レベルで作成されたかを追跡するプロセスです。
全体として、AI はソフトウェア開発においてますます中心的な役割を果たすようになるでしょう。 その使用を早期に習得したソフトウェア企業は、最終的に競合他社よりも指数関数的な成長を享受できます。 しかし、これらの AI の利点を実現するには、業界はハードウェア面の進歩も確認する必要があります。この点については、次のセクションで詳しく説明します。
サービスとしてのソフトウェア
デジタル アートやデザイン作品を作成する際、あらゆる種類のクリエイティブ プロフェッショナルが Adobe ソフトウェアを使用しています。 ほぼ 2010 年間、Adobe のソフトウェアを CD として購入し、その使用を永久に所有し、必要に応じて将来のアップグレード バージョンを購入しました。 しかし、XNUMX 年代半ばに、アドビは戦略を変更しました。
アドビの顧客は、面倒なほど精巧な所有キーを備えたソフトウェア CD を購入する代わりに、コンピューティング デバイスにアドビ ソフトウェアをダウンロードする権利のために毎月のサブスクリプションを支払う必要があります。このソフトウェアは、アドビ サーバーへの定期的なインターネット接続と一緒にのみ動作します。 .
この変更により、顧客は Adobe ソフトウェアを所有しなくなりました。 彼らは必要に応じてそれを借りました。 その見返りとして、顧客はアドビ ソフトウェアのアップグレード バージョンを定期的に購入する必要がなくなりました。 アドビ サービスに加入している限り、常に最新のアップデートがリリース直後にデバイスにアップロードされます (多くの場合、年に数回)。
これは、近年見られる最大のソフトウェア トレンドの 10 つの例にすぎません。つまり、ソフトウェアがスタンドアロン製品ではなくサービスに移行する方法です。 また、Microsoft の Windows XNUMX アップデートのリリースで見たように、小規模で専用のソフトウェアだけでなく、オペレーティング システム全体も対象となります。 つまり、サービスとしてのソフトウェア (SaaS) です。
自己学習ソフトウェア (SLS)
SaaS への業界のシフトに基づいて、SaaS と AI の両方を組み合わせたソフトウェア スペースの新しいトレンドが生まれています。 Amazon、Google、Microsoft、IBM などの大手企業は、自社の AI インフラストラクチャをサービスとして顧客に提供し始めています。
言い換えれば、AI と機械学習にアクセスできるのはソフトウェアの巨人だけではなくなりました。今では、あらゆる企業と開発者がオンラインの AI リソースにアクセスして、自己学習ソフトウェア (SLS) を構築できます。
AI の可能性については、人工知能の未来シリーズで詳しく説明しますが、この章の文脈では、現在および将来のソフトウェア開発者が SLS を作成して、実行する必要があるタスクを予測する新しいシステムを作成すると言います。オートコンプリートするだけです。
これは、将来の AI アシスタントがオフィスでのあなたのワーク スタイルを学習し、基本的なタスクの完了を開始することを意味します。たとえば、ドキュメントを好きなように書式設定したり、メールをあなたの声調で下書きしたり、仕事のカレンダーを管理したりします。
自宅では、到着前に家を予熱したり、購入する必要のある食料品を追跡したりするなどのタスクを含む、将来のスマートホームを SLS システムで管理することを意味する可能性があります。
2020 年代から 2030 年代にかけて、これらの SLS システムは、企業、政府、軍事、および消費者市場で重要な役割を果たし、それぞれの生産性を徐々に向上させ、あらゆる種類の無駄を削減するのに役立ちます。 SLS 技術については、このシリーズの後半で詳しく説明します。
ただし、これには落とし穴があります。
SaaS および SLS モデルが機能する唯一の方法は、これらの SaaS/SLS システムが動作する「クラウド」を実行するコンピューティングおよびストレージ ハードウェアと共に、インターネット (またはその背後にあるインフラストラクチャ) が成長および改善し続ける場合です。 ありがたいことに、私たちが追跡している傾向は有望に見えます.
インターネットがどのように成長し進化するかについては、 インターネットの未来 シリーズ。 コンピュータ ハードウェアがどのように進歩するかについて詳しく知りたい場合は、以下のリンクを使用して読み進めてください。
コンピューターの未来シリーズ
人類を再定義する新しいユーザー インターフェイス: コンピューターの未来 P1
消えつつあるムーアの法則がマイクロチップの根本的な再考を促す: コンピューターの未来 P4
クラウド コンピューティングが分散型になる: コンピューターの未来 P5
この予測の次のスケジュールされた更新
予測参照
この予測では、次の一般的な機関リンクが参照されました。
この予測では、次の Quantumrun リンクが参照されました。