プログラミングの知識のない友人がこの質問をしてくれたので、面白いと思いました。
問題のテキストを分析し、解決策を考え、それをプログラムできる本当に高度な人工知能が必要になるため、それは不可能だと思います。単純な計算機をプログラムできるマシンについて考えるだけでも、私にとってはかなり進んでいるように思えます。
しかし、私は間違っているかもしれませんが、それについてどう思いますか、主題に関する記事/研究を知っているのか、それがすでに存在するのか、仕様を選択し、この「仕様」に自己プログラムするマシン
プログラミングの知識のない友人がこの質問をしてくれたので、面白いと思いました。
問題のテキストを分析し、解決策を考え、それをプログラムできる本当に高度な人工知能が必要になるため、それは不可能だと思います。単純な計算機をプログラムできるマシンについて考えるだけでも、私にとってはかなり進んでいるように思えます。
しかし、私は間違っているかもしれませんが、それについてどう思いますか、主題に関する記事/研究を知っているのか、それがすでに存在するのか、仕様を選択し、この「仕様」に自己プログラムするマシン
回答:
ジョエルは実際に数年前にこれに答えました。「マシンに自分でプログラムする方法を教える」という実際の意味は、「マシンに仕様を取得し、その仕様に対応するプログラムを作成する方法を教える」ということです。そしてそれを念頭に置いて:
ここでの問題は非常に基本的なものです。プログラムが特定の仕様に対応していることを機械的に証明するには、仕様自体を非常に詳細にする必要があります。実際、仕様はプログラムに関するすべてを定義する必要があります。そうしないと、自動的かつ機械的に何も証明できません。さて、もし仕様がプログラムがどのように振る舞うかについてのすべてを定義しているなら、そして見よ、それはプログラムを生成するために必要なすべての情報を含んでいます!そして今、特定のオタクは仕様をプログラムに自動的にコンパイルすることを考え始める非常に暗い場所に行き、プログラミングなしでコンピューターをプログラムする方法を発明したと考え始めます。
現在、これは永久モーションマシンに相当するソフトウェアエンジニアリングです。あなたがどれだけ彼らにそれが決して機能しないと言ったとしても、それはクラックポットがし続けようとしているものの1つです。仕様がプログラムの動作を正確に定義し、プログラム自体を生成するために使用できる十分な詳細がある場合、これは単に質問を請います:仕様をどのように記述しますか?そのような完全な仕様は、プログラマと同じくらい多くの詳細に仕様書作成者が答えなければならないので、基礎となるコンピュータープログラムと同じくらい書くのが難しいです。情報理論の用語を使用するには、コンピュータープログラム自体が持つのと同じ数のシャノンエントロピーがスペックに必要です。エントロピーの各ビットは、仕様作成者またはプログラマーによって決定されます。
要するに、プログラムの正確性について物事を証明するための機械的な方法が本当にあった場合、証明できるのはそのプログラムが同じ量のエントロピーを含まなければならない他のプログラムと同一であるかどうかだけです最初のプログラムとしては、そうでない場合、動作の一部が未定義になり、したがって、実証されません。そのため、仕様の作成はプログラムの作成と同じくらい難しく、1つの問題をここからあちこちに移すだけで、何も達成できませんでした。
これを回避する唯一の方法は、あなたと私がソフトウェアを作成するときに常に自動的に行うすべての空白を埋めるのに十分な直感で実際の知性のあるコンピュータを作成することです...その場合は最終的には、人間の開発者だけでなく、それ自体をプログラムするコンピューターになります。;)
確かに、我々はやる 、この すべて の時間を(問題の非常に限られたサブセットのため)。さらに1つまたは2つのステップを実行し、Siriのようなものをこれらのコードジェネレーター(またはWolfram Alphaのような)の入力に結び付けて、コードを作成して問題を解決することを想像するのはかなり簡単です。最も基本的なことを行うための何かがすでにどこかに存在することを期待します。
ビジネス向けの複雑なソフトウェアを作成する際の問題は、コードを作成するプログラムを作成することではなく、要件を取得するプログラムを作成することです。
@Mason Wheelerの答えが鍵となる考えだと思います。こんなふうになります:
三目並べのシャノンエントロピーは本当に小さいです。したがって、tic-tac-toeを「解決済み」または「決定論的」ゲームと呼びます。小学校を卒業したら、それはあまり面白くない。プレイ可能なすべてのゲームのエントロピーを考慮すると、Checkersのエントロピーは高くなります。しかし、チェッカーも「解決済み」または「決定論的」なゲームです。最初に移動する場合は、勝つか引くだけです。チェスははるかに高いエントロピーを備えていますが、2006年以降、最高のコンピュータープレーヤーを打ち負かした人間はいません。Big Blueはウィキペディアを分析し、Jeopardyを人間のプレイヤーと対戦し、しっかりと打ち負かしました。
次は何ですか?小説のエントロピー、またはシェイクピアーのソネットとは何ですか?
同様に、プログラミングの分野では、おそらくコンピテンシーのセットが増えてくるでしょう。Prologは、ユーザーが問題を設定し、コンピューターが答えを解決する一連のコンピューターの問題に対処しました。誰かがおそらくコンピューターが満たすことができる単純なプログラミング問題のクラスなどを見つけるでしょう。それから誰かがそれを構築して、ある問題空間内で「オンデマンドのカスタマイズ」を生成します。そしてそれは行く。
質問は、AIが一定量のエントロピーを習得するのにどれくらい時間がかかるか、そして何個のコンピューティングリソースが必要か、に変わると思います。コンピューターが人間の最高の脳によって習得されたエントロピーを習得できなかったことは想像できないと思います-脳には魔法はありません-しかし、問題は、あなたが必要とするコアの数と、そこに到達するのに何世紀かかりますか?
しかし...コンピューターは私の仕事をすることができますか?考えられない!
人工知能と同様に、これを達成した後は、それを実行するプログラムを作成することになるため、これを答えるのは困難です。そして批評家は、「まあ、このマシンは実際にはプログラミング自体ではない!それはあなたが与えたプログラムに正確に従うだけだ!」と言うでしょう。
はい、そうです。私たちがコンピューターで達成することは何でも、プログラムを与えて実行します。それが反対の場合、何も達成できません。それでも、ある時点で、人々はチェスをするコンピューターは明らかにインテリジェントだと思っていました。今、彼らはできます、そして、私たちは正確にどのように知っています、そして、我々はそれが理性的であると思いません。潜水艦はまだ泳げません。
そのため、いくつかの例を考えてみましょう。
何十年も前から、パーサージェネレーターがありました。あなたは彼らに言語の説明を与え、それは処理され、結果はその言語のパーサーのコードになります。私たちはそれがどのように行われたかを正確に知っていますが、それはコンピュータプログラミングそのものではありませんか?
2番目-間違いを犯したことを通知するエディター(構文エラー、存在しない変数など)。それ自体は何もプログラムしませんが、あなたが何か間違ったことをしたことを教えてくれます。それは表面上のみです。
UIコントロールをクリックしてドラッグするだけで、実際にそれらを機能させるコードが自動的に生成される言語。
JITコンパイラ。現在実行中のソフトウェアのホットスポットを認識し、その一部を高度に最適化されたコンパイル済みコードに置き換え、実行中にそれ自体を効果的に最適化できるソフトウェア。これは、それがどのように起こるかを正確に知るまでは、マシンプログラミング自体のように見えるものの一例だと思います。
一般的なゲームプレイ。これは興味深い研究分野であり、研究者はゲームのルールの説明を読むことができるプログラムを作成し、そのプログラムが互いに対戦します。したがって、三目並べプログラムやチェスプログラムの代わりに、三目並べやチェスのルールを読み、その場で作られた新しいゲームをプレイしてからプレイすることができます。プログラム自体はプログラミングしていませんが、チェスのルールがハードコードされていない状態でチェスをプレイします。これは明らかに、コンピューター自体が何かを教えると見なされる時代がありました。
一般的な方向に多くの小さなステップを踏みました。
しかし、以前の実行の結果に基づいて自分自身を書き換えたり、独自のコード内の古いルーチンや非効率的なルーチンを認識できるプログラムは考えられません。いつかそれができると思うし、それは最新のコンパイラの一部の機能に過ぎないので、特別なことは何もないと考えます...
プログラムを作成するには、人間の脳の驚くべき複雑さをすべて必要とするため、現在ではなく、予見可能な将来でもありません。その場合でも、それらの脳は適切に行うために高度に訓練する必要があり、それでもすべての人がタスクを実行できるわけではありませんが、十分な時間で誰でもプログラムできるように訓練できると主張することができます。
単純なエミュレートされたタスクの話ではないという質問の言い回しから取った。
あなたは記事を求めました、そして、インテリジェンスの開発に関するこのScience Blogs記事は多くの方法でその質問に答えます。