DAVIDマラン:再びようこそ、みんな。 だから昨日、あなたはそれを思い出し 我々はここで、これらのトピックに焦点を当てました。 だから我々は、4つの包括的なtopics--を持っていました プライバシー、セキュリティ、および社会; インターネット技術。クラウドコンピューティング; そして最終的に、ウェブ開発。 誰もが持っていました 帯域幅または時間 少しジョンを見て オリバーの最後の夜? それは、実際にはかなり面白いです そうでない場合は少し恐ろしいです。 何でも上の任意の質問 我々は昨日やりましたか? どれ明確化? あなたがしたい任意の質問 我々は何らかの形で今日に触れて確認してください? だから、白紙の状態。 だから、今日の議題に何ですか? だから私は、我々が今日始めるだろうと思っていました 一般的に何を見てと で計算thinking--として知られています oversimplifyingの危険性、思考 コンピュータのような、おそらく エンジニアのように考え、 とを開始しようとしています 自分の考えを整理します またはあなたのより良い感覚を与えるために どのような実際に指揮に関与しています 何かをするコンピュータ プログラミングを介して。 そして、私たちはかなりでそれをしておこう ハイレベル、ほとんど英語、 しかし、おなじみの使用しようとします どのように定式化する例 あなたが問題を解決するに行きますか。 そして、我々はいくつかのCSを再訪します トピック、抽象化のような、 これは、カップルを思いつきました 時間の昨日、 アルゴリズム、およびその後の表現。 私たちは始めましょうどこにそしてそれはです 一瞬で、今日。 その後、我々は、プログラミングを見てみましょう。 我々はいくつかを見てみましょう 基本的な構成物 これであなたはよく知っているかもしれません さらには、非常に直感的かもしれません。 私たちは、実際には、見ていきます、 サンプルプログラムで 非常にアクセス可能な環境、 非常に遊び心、そして実際に標的に 12歳以上のため。 私たちはそこに数分を過ごすことになります そして、次に低いレベルに物事を取ります そして実際のいくつかについて話 アルゴリズムとデータ構造、 そうこと、話すこと プログラマは一般的に使用します はるかに多くの問題を解決します 効率的にあなたがかもしれないより 完全にそれらなしで行うことができます。 そして昼食後、私たちは見てみよう ちょうどであるテクノロジー・スタック、で のがファンシーな方法 技術のコレクション あなたが使用するかもしれません いくつかの問題を解決します。 そして、我々はアルファベットについて話しましょう 存在する言語のスープtoday-- JavaやPythonやC ++やPHPと Rubyと他のもののすべての種類。 私たちは、簡単に見てみよう デザインパターンで。 プログラマ、時間をかけて、 方法論を採用しています 彼らを助ける傾向にあること より容易に問題を解決します。 あなたが書いて自分自身を見始めるとき 何度も何度も同じ種類のコード、 人々は、これらの繰り返しを正式 そしてそれらに帰名 その後、それらを使用して 最終的に、それらを推進しています。 そして、私たちは少し話をしましょう モバイル戦略について、 それが実際に何を意味しているような モバイルアプリやモバイルウェブサイトを作ります。 あなたは、Androidのためにそれを行うのですか? あなたはiOSのためにそれを行いますか? あなたはそれらの両方のためにそれを行いますか? トレードオフは何ですか? そして最後に、我々は取りますよ ルックWebプログラミング、どの 総称であります 本当にすべての時間を記述する あなたはだソフトウェアを書きます ウェブ上で実行することを意味し、 携帯電話でかどうか デスクトップやラップトップ。 私たちは、簡単に見てみましょう データベースとデザイン その中で、唯一のため、ほぼすべての場合 面白いWebベースのアプリケーション これらの日には、データベースのいくつかの種類があります。 それ以外の場合は、希望 ちょうど静的コンテンツです。 そして、データベースは、あなたが行うことができます 経時変化、自分自身かどうか またはユーザから。 そして、私たちはどのように検討しましょう 設計については行くだろう そのデータベースと専門用語の種類 それはエンジニアの中に出てくる可能性があります ホワイトボードでの議論 実際に実装するとき 初めてのアプリ。 私たちは、について簡単に説明します APIは、有用なサービス あなたが上に立つために使用できること 他の人の肩、企業かどうか や個人、そしてあなたを解決 より迅速に自身の問題。 そして、我々は、おそらく手を出しますよ JavaScriptで少し、 使われているプログラミング言語 ブラウザの両方で、これらの日だけでなく、 サーバインチ おそらく、我々はよ 、時間が許せば、再訪 ハンズオンウェブスタッフたちの一部 昨日と2を統合 一緒に私たちは休会前に。 だからthat--でahead--は何ですよ そこにいることを欠落しているもの 我々は挿入を確認してくださいしたいと思います そして、いくつかの点で上にタッチします。 それは心にバネの場合は、 やがてそれを持ち出します。 しかし、なぜ我々は始まりません 計算の考え方を見てください。 そして、私はそれを提案してみましょう 計算の考え方は、再び、あります 高レベルの記述の一種 コンピュータ科学者は何を行う可能性があります。 そして実際、それでは、始めましょう その3成分と 計算の考え方に行くかもしれません。 これは、それを説明するだけで1つの方法です。 我々は確かに定義することができます 任意の数の方法でこれ。 しかし、私が提案してみましょう 今日のために、 世界の問題という、 世界の問題のすべて、 により近づいたとき コンピュータ科学者でし 私たちがよと見ること 入力を呼び出し、その 私たちが呼ぶものに送り込ま取得する必要があります その後、出力が得られるアルゴリズム。 換言すれば、全体の 私が主張する問題解決の世界 蒸留することができます これらの3成分。 だから私は入力によって何を意味するのですか? 入力は、あなたがしているものばかりです 解決するために手渡しました。 例えば、ここです 古い学校の問題。 私はここに電話帳を持っている場合と、 私はそれに何かを見てみたいです、 これは私の入力です。 私は千かそこらを持っています 電話帳のページ。 これは私の問題に入力されます。 そして、私は何かを見つけたいです マイク・スミスので、友人のような その名前と番号です うまくいけば、このアドレス帳インチ これは、セルの日前であります 電話は、私はちょうどそれを検索することはできません。 だから私はそれが古いしなければなりません 学校と実際に検索 いくつかの答えをこれらの入力。 そして、その答えはちょうど起こっています 出力と呼ばれていました。 だから入力は電話帳です。 このアルゴリズムは、どのようなセットです 手順は、私がマイク・スミスを見つけるために使用します。 出力は、うまくいけば、あります マイク・スミスの電話番号。 そして、これはその後、ちょうどだろう ほとんどすべての問題の代表 あなたが入力渡されるとします そして、出力を生成します。 だから我々は、プロセスを検討する前に、 これによって、私たちはその問題を解決することができ、 マイク・スミスを発見し、 そんな感じ、 それでは、最初のを考えると、 last--入力と出力。 物理的には、もちろん、ここに入力 紙の全体の束を一緒に接着されています 電話帳の形態です。 しかし、コンピュータ、course--ノートパソコンのを デスクトップ、さらには携帯電話や これらdays--ものであり、 電子デバイス。 そして、一日の終わりに、何 コンピュータへの入力のみ? まあ、それはのようなものです ここでは、この電源コード。 私は壁にそれをプラグインし、 私は、電子の流れを取得し、 これは私がマシンを実行することができます。 それとも、それらの電子があります 私のバッテリーの方法によって作成されました。 しかし、一日の終わりに、それはです 唯一の事は私のラップトップに入ります。 そしてそんなに面白いです ものは、最終的です かどうか、出てきます プリンタを介して または画面やaudiallyなど。 すべてのであれば、私たちは私たちのように持っています コンピュータへの基本的な入力 電気である、これだけ 電子は、中およびまたは外出します ので、どのように我々は、その入力を使用することができます 実際に情報を表現するには? 言い換えれば、どのように我々は入手できますか 電気の簡単な流れから 実際の表現に 数字または実際の文字 画面上または実際の画像 実際の映画や電子メールや またはこれらの任意の数の より高いレベルの概念、 可能ならば、その時 何とか一日の終わり このように格納されるています 電子機械装置 だけの簡単なingredients--を使用して、 電子は中と出てきますか? だから、それを思わ、 最も単純な形で、 状態の唯一の種類 私は、私の世界を持っています 条件をspeak--します 私world--のいずれかであります 私は電子は、電気を流してきました 流れる、または私はオフ、というようにnot--行います。 そして、のは、オンとオフ正式てみましょう コンピュータ科学者のかもしれませんが、 1と0だけで。 ちょうどいくつかの任意のを説明してみましょう しかし、それへの一貫した数。 1は上の意味、0はオフを意味します。 それとも、また、としてこれを見るかもしれません 上の真の手段と偽の手段。 また、黒行うことができます そして、白または赤と青。 あなただけの2つの記述子が必要です。 そして、コンピュータ科学者は、希望 一般的にちょうど0と1を使用します。 だから、その場合は、私の唯一のアルファベット 0と1からなるが、どのように 私はおそらく数を均等に得ることができます コンピュータ、ましてや数3の2 またはアルファベットの手紙 あるいは画像やムービー? どのように我々は一種のブートストラップありません この基本原理から自分自身 実際には0と1との もっと面白いことを表していますか? さて、その質問を入れてみましょう ちょっと保留 そして、何かを考えます うまくいけばお馴染みの、 あなたは本当にについては考えていない場合でも、 それ10、20、30、40、50のための任意の詳細に より多くの年。 これは何? あなたはそれをどのように発音しますか? ていないトリックの質問。 数は、しかし、それは何ですか? 1、2、3、または123。 あなたが言ったかと私は言っています1、2、3、 それはそれを見る一つの方法だからです。 1、2、3、それは配列情報 3つのシンボルの。 それは私たちの写真です 今の言葉を持っています。 そして、あなたは一種のそれらすべてを読めば 英語で一緒に、典型的な人間 123を言うでしょう。 そして、それは一種のです より高いレベルの概念、 合理的に大きな数のように感じています。 しかし、どのように我々はそこに着くのですか? まあ、それはそれ以来しばらくかかるだろう あなたは、このようにそれについて考えてきました しかし、戻って私の一日で、I 種類のこのことを学びました 1の列として、10代 列、および100の列。 Lakisaが言うように、それはあります 1、2、3、それはまた、123です。 しかし、どのように我々は、から入手できますか 前者と後者? さて、あなたは、一般的に行うだろう 100の列は、私は1を持っています。 だから、100倍の1を言ってようなものです。 そして10のコラムで、私は2を持っています。 だから、10回2を言ってようなものです。 1のコラムでは、私は3を持っています。 だから、1回3を言うようなものです。 そして、私はこれらの事を追加した場合 一緒に、この、もちろん、 100プラス10プラス3です。 そして、私はこれを取得なぜああ、それはです 123のより高いレベルの概念。 それはちょうど基本的な数学ですが、それによってこれらの シンボルは、それらに重みを持っているあなたの場合 、プレースホルダまたは列の値になります。 そして、私はすべてを掛けたら、 アウト、私はこの番号を取得します。 だから、あなたが知っているどのように多くの方法を話します binary-- 0とコンピュータのよう1's--? OK、完璧な、誰もいない、または あなたのどれもあなたが思うません。 しかし、私はあなたを主張するだろう 実際に、すでにこのことを知っています。 私達はちょうど一種の微調整する必要があります 私たちのメンタルモデルを少し。 しかし、このプロセスはまったく同じです。 私はそこまでこの1を残してみようと 代わりに、一瞬のためにこれをプルダウン。 コンピュータの世界では、 我々は唯一の0と1があります。 ですからことだという 変更するために何をされて行くの? さて、私の人間の世界では、 十進法、12月の意味10、 私は私の処分でどのように多くの数字を持っていますか? 10、右か? 0から9までのコース。 そして、私たちが持っている理由です 10の位と百の位。 それはどこから来ていますか? まあ、これは、0のパワーに10あります。 これは、10 1の電源10であります 2乗など。 あなたは自分の列を乗じておきます 10によって、ちょうど1で発進 ここでは右端の1インチ の世界ではそのように コンピュータ、あなたの場合のみ binary--バイ意味を持っています 2--または0と1、ちょうど私達 本当に変更する必要があります その数学のベース。 換言すれば、今、私達はちょうどよ 1の列を持っているとthe-- これが2の列をgoing--はどこにあり、 4のカラム、そしておそらく超えました。 何故ですか? まあ、これは0乗2です。 これは2 1です。 これには、2から2である、と。 ここで、一方だから、私たちは1、10年代を持って、 100の1,000の10,000の10万の、1 何百万人など、ここで 我々は、1、2、4、8、16、32、64を有します。 あなただけの2を乗じておきます、 代わりに10を乗じておきます。 だから今、目標であれば 手が表すことです 唯一の0と1を使用して、数字、 我々はそこに着く方法を考えてみましょう。 これは、もちろん、パターン0であります 0 0が、何数概念的 それが表すのでしょうか? さて、4回0プラス2回0プラス 1回0は、ご一緒にそれらを追加してみましょう。 4時間0は、当然、0であり、プラス2 時間0は、もちろん、0プラス1回0であります もちろん、0です。 だから、ああ、これが表します 数私たち人間は、0として知っています。 さて、今、非常にしてみましょう すぐに早送り。 私の代わりに表さないよ場合 0 0 0が、それでは、1 0 1をやらせます、 それは如何でしょうかLakisa、以前、 ちょうど1 0 1それを発音でしょう。 しかし、今、どのように我々はそれ以上にそれを取りますか 私たち人間が知っているかもしれない数を平準? だから、この番号は何ですか? これは、5、私たちは5のように知っている数です。 まあ、それはなぜですか? さて、私たちは本当に一種の缶 念入りにそれを歩きます 4回1、2回0、1回1。 そう、一緒にそれらを追加します。 これは4プラス0プラス1です。 そしてそれは、確かに、5です。 だから、今、少し退屈になっています 何度も何度も計算を行います。 しかし、このプロセスはまったく同じです。 持っている唯一のもの 私たちの世界に変更 我々の列は1、2、4、8、16であることであり、 等、代わりに1、10、100、 千。 私たちのアルファベットを持っているので、それはちょうどです ちょうど0〜1に0から9まで縮小し。 ここで少しクイズ、どのようにと同じように、それで あなたはバイナリで数7を表しますか? 0? まあ、0、あなたは0 0 0意味ですか? 、再びカリーナをそれを言います。 パーフェクト。 何故ですか? それは効果的に4プラス2プラス1です。 とても良い。 我々は少しを表現するにはどうすればよいです another--方法数は約2? 閉じるが、後方。 だから、これは何ですか? 4プラス1であるので、それは再び5です。 だから私は申し訳ありませんwhat's--、カリーナ? 0 1 0。 0 1 0はあっても、理由再び、2となります それは一種のあなたに飛び出すていない場合は、 ただ計算を行います。 4回0、0、2回 図1は、0 0 1 2倍です。 だから、これは我々が2として知っている番号です。 どのように数約8? フム? 良い。 だから我々は一種の別のプレースホルダが必要です。 私たちは、1 0 0 0を必要としています。 そして、それは私たちの並べ替えのは事実です 古い学校の小数点システムの。 どのように数千を表しているのですか? さて、あなたはあると思われます 種類のタフなスポットで、 表現するためにあなたを求める場合 数千、 あなたのように自分自身を与える場合もあるため これらの9、​​これらの9、​​これらの0、 その最大の数であるあなた 持っている、あなたはかなり千に取得できませんでした。 だから千場合、あなただけの別のものを必要とします 位置、あなたは1 0 0 0を行うことができるように、 エルゴ数千。 だから今、のは、この種のをマッピングしましょう バックハードウェアへの概念の説明、 再び、入力がちょうどあった場所 この小さな電源ケーブル、電気 入ってくると流出します。 そして、その結果については、こちらからマッピングされます そこに、よく、私たちは本当に何が必要なのでしょうか? さて、あなたは内であることを考えることができます コンピュータ、電球の全体の束、 可能ならば。 彼らは本当にトランジスタと呼ばれています。 トランジスタは単なるスイッチです それは、オンまたはオフのいずれかとすることができます。 だから、考えることができます 上だトランジスタ 電気が流れることを可能にし、 停止などオフだトランジスタ 流れるから電気。 そして、いうより取ります ここではライトオーバー、 私はこの種をしない理由 新しい学校のスタイルの。 だから、これは、懐中電灯1であるかもしれません かろうじてしかし、上にあります。 そして、これは0かもしれないが、今ではオフです。 だから私は、この物理デバイスを使用して、 今バイナリシステムを表すことができます。 私はちょうど2つの状態が必要です。 これは、何が問題ではありません。 それがあるか、それが何であるかを色。 重要なのは、私が持っているということです 1上の状態と別の状態をオフにします。 だからここに私の携帯電話を使用して、どのように私を行います 0のように私たちが知っている数を表しますか? または、等価的に何を置きます 数は今私を表現するのですか? 0、デバイスがオフになっているからです。 そして、私はこれを行う場合はどうなりますか? そして今、どのように私はやります 数2を表しますか? 私はあなたの電話を借りることができます ここで、我々は昨日のように? 私が表現したいので、もしだから、見てみましょう 数2、これは2番ですか? いいえ。 何番私が誤っています ここで表しますか? これは実際には数3です。 だから、これは1、私はオフにしたいですか? よくor--黒電話、they're--場合 黒電話や白の電話? 白い電話。 だから私はこれをオフにし、我々場合 こっちラインそれを、私たちは1を持っています 2の代わりにと 1の代わりに0。 だから私は今です 数2を表します。 これは、もちろん、数字であろう 3、これらのライトの今両方の理由 上にあります。 そして、私は、ここで停止します それは理にかなっています 私が表現したい場合 番号4または8以上、 私はより多くの携帯電話を必要とするつもりです。 しかし、それは起こっていることすべてです。 だから、あなたが今までと聞いていた場合 A--の内側you--コンピュータに感謝 数百万のトランジスタである、それはです 小さな小さなスイッチのちょうど百万人。 そして、彼らは光じゃありません オンとオフの球根、 彼らは電気を許可するかのどちらか どこかに流れたり、それを停止します。 だからあなたの2があります オンまたはオフ、オンまたはオフにstates--。 だから我々は今と思われます この能力を有すること この概念を表現すること 私たちは、実際のハードウェアにしたいと思います。 しかし、私たちが今持っているすべての能力であります 数字を表すために、それは思われます。 だから我々は、表現についてどのように行くのですか アルファベットの文字、どの 機能の次の一種のように感じます 現代のコンピュータに追加したいと思います あなたは数字を持っていたら? そして実際、あなたが考える場合 それ、歴史的に、コンピュータ 役立つように本当に導入されました 数値計算器。 もちろん、これらの 日、彼らはより多くを行います。 彼らは、あなたを起動した場合でも 典型的には、1つまたは複数の単語を見ます。 それでは、どのように言葉を表しますか、 あなたが持っているすべての場合は、再び、 の終わりに電気 日、または等価的に0と1の? うん。 ええ、私は意味、私たちは一種のでした この昨日何らかの形で、 どこかの時点で、 私は私が任意に思います 私たちが表現したい場合は、と言いました 文字A、私達はちょうど1ことを呼び出すことができます。 これは、暗号化に関連していました 私たちは、コードのいくつかの種類を必要な場所で、 マッピングのいくつかの種類。 そのため、おそらくAはとして表現さ​​れます 1、及びBは、2のように表されます そしてZが表されます 例えば26、など。 そして唯一の注意点は、私があればということです 私のメールの文字をエンコードします または私のテキストメッセージで 数字として、あなたのすべて 使用することに同意する必要があります 規則の同じセット。 そして実際、世界 まさにそれを行っています。 世界のシステムがあります 呼ばれるASCII、アメリカンスタンダード 情報交換用コード、 これは、単にいくつかの年の決定であります 前人間がいることを作りました Aが、等しくないために起こっていることを決定しました 1,2、および26、ならびにそれですforth-- 少しdifferent--が、65、66、67。 そして、私はプルアップします 一瞬のチャート。 しかし、それは任意です。 しかし、それは問題ではありません。 それは任意だという。 世界はちょうど一貫しなければなりません。 現在、より最近、 手の込んだものがあります 世界の親切なので、ユニコードと呼ばれます コンピュータを発明した後に、実現の、 よく以上があること 世界で256シンボル 私たちが表現したいかもしれないこと、 場合は特に、あなたがご紹介 アジア言語および他のシンボル それはあなたよりも表現力が必要 の最も古いバージョンに合うことができます ASCIIと呼ばれたこのコードを、。 だから、Unicodeは実際にできます あなたはより多くの0と2を使用します。 具体的には、あなたが聞いておきます ワードバイト社会であっても、単に 昨日。 そして、バイトは何再び? バイトは何ですか? それはちょうど8ビットです。 だからということは、本当に何を意味するのでしょうか? まあ、それは意味し、以前、我々があったとき バイナリの話と私が使っていました 私たちがした任意の3ビット 1の位binary--について話して、 2の場所、および4のplace--よく、 バイトはちょうどあなたが話していることを意味し ない3の単位ではなく 4つ、5、6、7 8個 これは私たちに8の場所を提供し、 16年代、32年代、64年代、および128の。 言い換えれば、ビットは、すべてではありません そのメジャーの便利な単位、 それはちょうど1ちっちゃいのようなものですので、 情報の一部、オンまたはオフにします。 だから、何年か前に、 世界はちょうど決定します それはで話をするもう少し便利です 当時のバイト、8物事の用語。 だからこうして生まれました バイトの概念。 そして、私たちはここに8ビットを有します。 そして、それは同様のために、あまりにも、判明します 理由は、世界が年を決めました 前のそのASCII文字を表現するために、 あなたは8ビットの単位を使用するつもりです。 だから、そうでない場合でも、 多くは、あなたがしていることを必要とします いつもに8ビットを使用するつもり アルファベットの文字を表します。 そして、これは便利ですが、 よろしければ、次に理由 0 0 0 1 1を持っているメッセージを受け取ります 1 1 0は、別の1 1 1 0 1 0が続きます 0 1、あなたが16を受信した場合 ビット、世界はちょうどすることができます 最初の8が1文字であることを前提としてい 第二8は、別の文字です。 あるどのように多くの問題ではありません。 それはちょうどことが重要 我々はすべて一貫しています 我々はこれらのビットを解釈しているとき。 そして、これは単にランダムでした。 それが何かを意味するが、私はしませんでした 本当にそれが何を意味するかを考えます。 だから、小さな白いうそです。 もともと、ASCII 実際に7ビットのみを使用。 そして、8番目のビットがあります 拡張ASCIIと呼ばれます。 しかし、ポイントは、最終的には、同じです。 一般的に、世界 8ビットに標準化しました。 だから、これは少しであるように思われます 私は唯一の可能性があるため、制限 、大文字のAを表し、 資本Z.を通じて資本B しかし、実際にはない、私が行けばto-- 資源の束があります オンライン、例えば、 asciitable.com、この 少しになるだろう 最初は圧倒的。 しかし、私は指摘します ここで重要なものです。 これは単にbe--たまたま、私'LL 私はここの上に行けば、見てみましょうwalk--。 ここでは小数であり、 列、数65。 そして、右側の列の文字に 文字、Chr関数は、文字Aです。 そして、あなたは今のところ、無視することができ、 途中ですべてのもの。 これは、16進数で、 オクタル、およびHTMLコード。 このサイトにちょうど投げしようとしています 一度あなたに多くの情報。 しかし、我々は気にすべては10進です 列と文字列。 したがって、このロジックにより、ものです その世界数 小文字を表すことを決定しましたか? うん、97。 そして、ちょうど混乱します 潜在的に少し、 どのような数世界が決定しました 番号1を表すのでしょうか? 右、we-- 49ので、それはそうです ここでは、ダウン左下インチ 今、私はそれによって何を意味していますか? だから、ことが判明します コンピュータシステムにおいて、 一般的に存在します 基本的な違い 数と文字の間。 番号はものです、我々 ときに育って学びました 私たちは、小学校にスーパー若かったです。 それはあなたが数えるものです。 しかし、文字だけの形状であり、 グリフは、そのように画面上に、話します。 今、私たち人間は一種の参照します このようなもの。 そして、私たちはああ、それは数2である、と言います。 しかし、いや、それは見えるだけのシンボルです 我々は数2のように知っているような。 そして、これがあります 根本的な違い 実際の数字と文字の間。 これは数あります。 しかし、一般的に、中 コンピュータのコンテキスト あなたの代わりに表示される場合 このquoted--ような何か あなたはいつもしません それが引用された参照してくださいする必要があり、 しかしdiscussion--のためであれば あなたは、番号の前後に引用符を参照してください、 これは現在の文字です。 したがって、この数2の下 コンピュータの内部フード パターンで表現されます 数を表すビットの 50オンラインチャートによると。 しかし、コンピュータの場合 ちょうどこの、これを見ています で表現されます ビット0 0 0 0 0 0 1 0のパターン。 一方、この文字があろう 実際、as--、今表現すること 私は少しharder--を考えるようになったので、この 文字は0で表現されます 0 1--は、私がここで何が必要なのでしょうか? 0 0 1 1 0 0 1 0。 どのように私はこれをしましたか? まあこれはあなたの場合、数50であり、 これらの列を使用して、それを掛け、 これは、数2であるので、 この二分法が存在する理由です。 そして、これはちょうどです 機能のための今ティーザー プログラミング言語に存在しています 我々は後に、今日簡単に触れるだろうと。 プログラミング言語では、 あなたは、一般的に持っています 常にではないが、物事 異なるデータ型を呼び出します。 言い換えれば、programmer-- 彼または彼女が書いている場合、 プログラマは何で決定するために取得します 彼または彼女のデータを格納するためのフォーマット。 することができますいずれかのストアデータとして 数2のような生の数字、。 それとも、文字列として保存することができ、 または文字の並び あなたは、一般的に発現していること あなたのプログラミング言語の引用符。 あなたは物事を持つことができますcalled-- 私はそれらを単純化し過ぎると呼ぶことにします 数字そう本当numbers--こと 数2のような整数ではありません、 しかし、4.56のような数字。 だから、実数もできます 小数点を持っています、 そのためには、異なる基本です コンピュータ内のデータの一部。 そして、あなたも持つことができます まだ他のデータ型。 だから、実際のちょうどお誘いです 設計上の決定の最も簡単な プログラマは可能性があること ボンネットの下に作ります。 だから、何か質問はまだ? それでは、作ってみましょう このもう少し本当。 このハードウェアではありません 使用中のそんなにもう。 しかし、おそらくこの部屋の中で最も全員 で育ち、まだハードドライブを使用しています 何らかの方法で。 のたとえ最も 私たちのラップトップはもはやありません このように動作するデバイスを持って、 代わりに、一般的に今日のラップトップ ソリッドステートドライブを有します 可動部のありません。 そして、それはより高価になる傾向があります、 残念ながら、しかし、少し速いです そして、はるかに高速、多くの場合、よくA-- その理由の一つです。 そしてまた、それはしていません 多くの熱を発生します。 それはですので、それは、小さくすることができます 一般的に正味の正。 しかし、これは私たちがマップすることができます もう少し具体的にどのような 私たちは、0の時の話をしていると 物理デバイスに今1のレベル。 それは私が話をするための一つのことです 換算で約0と1の 私の携帯電話のまたは抽象的観点から オンとオフされるスイッチ。 しかし、どのようなハードドライブはどうですか? あなたのラップトップでは、あなたは古いを持っている場合 1、またはデスクトップコンピュータで、 または確かにサーバーで あなたが持っている今日、 持っているハードドライブ スペースのテラバイト、 スペースの4テラバイト、 よくそれは何を意味するのでしょうか? 1ハードドライブ 宇宙手段のテラバイト 1000000000000バイトがあります 何とかその中の、 内部または同等8000000000000ビット。 1テラバイトは8テラビットだろう または1000000000000ビット、どの あなたは、ハードを持っている場合を意味します ドライブ、あなたは何とか持っています または他兆0の それの1の内側。 そして、私たちはただ見てみる場合 ハードドライブの任意の画像 代表的には、これは難しいものです ドライブは、典型的には、内部のようになります。 それは、あまりにも、一種のようなものです 古い蓄音機プレーヤー しかし、一般的で 内部に複数のレコード、そう 複数speak--します プラッタは、それらが呼び出されているように、 金属円板、および その後、少し読取ヘッド、 古いレコードプレーヤーのような多くの。 そして、その読取ヘッドが戻り、 前後と何とかビットを読み取ります。 とにも、これらのプラッタ上に何 私たち人間は、それらを見ることができないものの、 実際に、またはこの絵のいずれかで、 小さな小さな磁性粒子があります。 そして、あなたは長いきた場合でも、 電気がどのように機能するかを忘れて、 磁性粒子 それは一般的に帯電しています 北の端と南を持っています そのように北と南end--。 それで世界がちょうど いくつかの時間前に決定しました 、その本質的磁気プロトコルの場合 このように整列され、南北、 それでは、1ことを呼びましょう。 それは代わりに、南北の場合は、 ちょうど0ことを呼ぶことにしましょう​​。 だからあなたがでている場合 あなたの処分兆 小さな小さな磁気 particles--とうまくいけば、 ハードウェアの創意工夫で 周りの人々を反転させるため あなたがしたい場合は、fit--見るように 0の全体の束を表し、あなた わずか8磁性粒子を必要とします すべてのこのような整列。 そして、あなたが表現したい場合 8 1の、あなただけの 整列8磁性粒子を必要とします バックのように背中合わせにします。 私は、とはどういう意味ですか 磁性粒子? 率直に言って、これらすべての年後に、 まだ私の心に来るもの もしあれば、この男であります この事で育ちました。 これがためにlittle--です これらのunfamiliar-- A 小さな子供の頃のおもちゃいます ここでは、この毛のない男を持っています それはすべてのこれらの小さな小さな黒いを持っています それが付属して磁性粒子。 そして、その赤いスティックを使用して、 これだけの磁石であり、 並べ替えの彼に口ひげを与えることができますか 彼に眉毛や髪か何か。 だから実際には、我々はズームインするとき、 、例えば、この中 あなたはこのゲームの一種であります ウーリーウィリーで遊ぶことができます。 そして、これは、これらの言うことだけです はるかに大きな磁性粒子であります ハードドライブ上に実際にあるよりも、 そして、はるかに少ない磁性粒子。 しかし、それでは、実際に見てみましょう あなたが持っていない場合 中に小さな磁性粒子 どのようにあなたが実際にすることができ、ハードドライブ、 データを表現するためにそれらを使用しています。 [ビデオ再生] -TheハードドライブはどこにあなたのPCです 店舗の恒久的なデータのほとんどを。 それを行うには、データ 沿ってRAMから移動します 教えソフトウェア信号に ハードそのデータを格納する方法を駆動します。 ハードドライブ回路は、それらを翻訳します 電圧変動への信号。 これらは、順番に、ハードドライブのを制御します いくつかの移動の一部parts--移動 部品は、現代のコンピュータに残さ。 信号の一部は、モータを制御します これは金属被覆プラッタを回転させます。 データは、実際に これらのプラッタ上に保存されています。 他の信号は、読み取り/書き込みヘッドを移動させます プラッタ上のデータを読み書きします。 この機械はとても正確です 人間の髪の毛がいなくてもできること ヘッドの間を通過 そして、プラッタを回転。 しかし、それはすべて素晴らしい速度で動作します。 [END PLAYBACK] そして、あなたはで見ることができます ビデオの最後尾、 複数のプラッタは一般的にあります。 そしてその結果、読み取りヘッド ただトップを読んでいません。 それは一種の3かのようなものです 4以上の読み取りヘッド それは次のように移動し、 同時にデータを読み出します。 だから、多くのがあります 複雑さとタイミングのソート それは、ハードドライブに関与しています。 そして、事は本当にくそ回転しています 高速なので、多くの複雑さがあります。 しかし、それでは、少し深くズームインしましょう​​と これらの磁性粒子がどこにあるかを参照してください。 そして、どのように我々は彼らを取得していますされています。 [ビデオ再生] 私たちに-LEtの外観 ちょうどスローモーションで見ました。 ときに電気の短いパルス 読み取り/書き込みヘッドに送られ、 それは小さい電磁にフリップ ほんの一瞬のために。 磁石が作成されます 変更するフィールド、 小さな、小さなの極性 金属粒子の部分 そのコート各プラッタの表面。 これらの小さなパターンシリーズ ディスク上のチャージアップ領域 データの単一ビットを表します コンピュータで使用される二進数システム。 さて、現在は1に送られた場合 読み取り/書き込みヘッドを介し方法、 領域は、一方向に偏光されます。 現在はに送信された場合 反対方向、 分極が反転します。 どのようにハードディスクからデータを取得するのですか? ただ、プロセスを逆にします。 だから、上の粒子です 電流を得るディスク 読み取り/書き込みヘッドに移動します。 一緒に数百万を入れて これらの磁化のセグメント、 あなたがファイルを持っています。 今、単一のファイルの断片であってもよいです すべてのドライブのプラッタに散らばって、 種類の混乱など あなたの机の上に書類の。 だから、特別な余分なファイルが保持します すべてがどこにあるのトラック。 あなたが持っていたくありません そんな感じ? [END PLAYBACK] だから、おそらく、ですが、そこに示唆されています 削除の昨日からそのトピック。 あなたが削除した場合 ファイル、昨日私たちが言いました コンピュータは、実際にはないこと 何、あなたが何かをドラッグ ごみ箱やゴミ箱へ? それはちょうどそれを忘れました。 しかし、0と1、 磁粉 それは、赤と青のように見えます ここでは物事、またはここに私の腕、 ハードドライブ上に残っています。 それでsoftware--が存在します Nortonユーティリティと往年 および他のより近代的な そのsoftware--だけ 探して全体のハードドライブをスキャンします これらすべての0年代と1の時、それ理由 判明しているほとんどのファイルのフォーマット - Word文書、Excelファイル、画像、 すべてfiles--ビデオは、特定の持っています その中で共通している模様。 すべてのビデオファイルかもしれません 別のビデオであっても、 しかし、最初の数を ビットは、通常は同じです。 または最後の数ビット 通常は同じです。 そして、非常に高い確率で、 あなたはそれらのパターンを探すことができます。 そのファイルは、忘れてしまった場合でも、 あなたは、高い確率で言うことができます しかしこれは、Word文書のように見えます それを回復し、それをアン忘れることができます、 可能ならば。 そしてそうそれはあなたが回復することができます方法です いずれかの偶然されていたデータ 削除されたり削除されたり、意図的に どのような目的のために削除されました。 これとは対照的に、安全な削除は何を行います このような絵の文脈で? 正確には、それらすべてがランダムになります。 だから、一種の一部を移動させます それら上下それらのいくつか、 それらのいくつかは変更されませんし、 一般的にそれのうちランダムノイズを行い、 あるいはもしかしたらのすべてを作ります それらの0またはそれらの1のすべて。 そして、あまりにも一般的にできること 離れてあなたのデータをスクラブ。 それでは、問題に今戻りましょう 計算の考え方、それによっての 私たちは式の入力を備えています。 そして、アルゴリズムが与え あなたが最終的に出力します。 私たちは、入力に今焦点を当て、 出力、今ので、私 請求我々はの方法を持っています 入力および出力を表します。 私達はちょうどバイナリを使用するつもりです。 そして、どんなに私たち 今日表現したいです、 それは数字または文字のかどうか 電話帳でその千 末尾の画像や動画、または 一日のために、それはすべて0と1をです。 そして、私もこのかかわらず、と主張しています ちょうど0で超簡単な世界であります そして1の、我々は自分自身を構築することができます。 そして、我々はの一例を見てきました これまでの文字です。 それでは、このようになりまし焦点を当ててみましょう 真ん中の成分、アルゴリズム。 とのは、これに戻りましょう マイク・スミスの例。 だから、確かにこの電話帳、中、 私たちはもうあまり使用しないでください、 解決すべき問題があります。 私たちは、マイク・スミスのような人を見つけたいです。 そして、私はマイクを見つけるために何をするのでしょうか? まあ、私はちょうどこれを開くことができます この本は、最初のページから開始します そして、実感、ああ、私はAセクションにいますよ。 マイクはありません。 私はスミスのためのSセクションを必要としています。 だから一度に1ページをめくる保ちます。 私はこれがすべてであることをふりをしてみましょう ホワイトページとイエローページではなく、 我々は見つけるつもりはないので、 とにかくイエローページでマイク。 しかし、私はホワイトページにいますよ。 そして今、私はBセクションにいますよ。 私はまだ彼を見つけていません。 だから私は一度に1ページをめくる保ちます。 これはアルゴリズムです。 これは、命令のセットです いくつかの問題を解決します。 言い換えれば、見て ページ、マイクはそれではない場合は、 ページをめくると、繰り返し 何度も何度も何度も、 あなたがそれをやっているように、理想的に見下ろしています。 したがって、このアルゴリズムは、 このプロセスは、正しいですか? ごめんなさい。 いいえ、私はいくつかのNOSを聞きます。 OK、それはええis--、 それは確かに面倒です。 私場合と同様に、我々はここにすべての日になるでしょう この速度でマイクを探し続けます。 しかし、私はそれが正しいだと主張しましょう​​。 それは愚かだが、それは正しいです。 一日の終わりには、長い間、それがかもしれないとして、 彼がそこにいた場合、私はマイクを見つけるだろう、取ります そして、私は注意を払っています。 そして、私は最終的に彼のページに到達します。 そして、私はあまりにも遠く取得する場合、場合 私はTのセクションを取得し、 その後、私は少し最適化することができます そして、だけ言って、HM、すべて完了。 私も無駄にする必要はありません。 Zさんに行く時間。 しかし、これは非常にあります よろしければ線形アプローチ、 、非常にソートの左から右になります アプローチ、直線。 そして、その正しいが、遅いです。 だから私は、ソート、小学校から覚えています 一年生から最適化、 私はしませんカウントする方法を学んだところ ものではなく、twos--ので2​​、4、6による。 それは多くの困難に、です 行うが、理論的には、それはです faster-- 8、10、12、14、など。 どのようにそのアルゴリズムは? それは、より効率的ですか? それは速いですか? 観客:それは効率的です。 DAVIDマラン:うん、だからだdef--です 文字通り倍の速度、私を想定し 私の指でアップトリップません。 ので、それは、二倍の速さです 私は2を介して回転してい かつての代わりに1でページが、それはです 潜在的に正しいで、なぜ理由? 観客:あなたはいくつかをスキップしています。 DAVIDマラン:右、マイクが発生した場合どのような 私は後でだときに多分sandwiched--します 電話帳に、マイクがあることを起こります これらの2つのページの間に挟まれ、 そして私はちょうど盲目的にそれをスキップ。 だから我々はそこに少し修正が必要です。 私はTのセクションをヒットすると、I ただ自信を持って言うことができません、 我々はマイク・スミスを見つけられませんでした。 私はおそらく戻って倍増する必要があります。 または実際には、かつて私が誰かに届きます スミスのためのS-Nの代わりに、S-Mという名前の、 すぐに、私は倍増でした バック、多分彼のため 前のページにありました。 しかし、私ははるかに戻って倍増する必要はありません。 理論的には、私は右のそれを行う場合 時間は、私はちょうど1つ前のページに移動します。 だから、それだけで1つの余分なステップを追加しています。 だから私は、二倍の速行ってきました それは私に1つの余分なページを要しました。 しかし、それはネットの勝利のように感じています。 しかし、これはどのようにほとんどの人ではありません この部屋は、この問題を解決するだろう。 何多分、典型的な人でしょう 数年前にマイク・スミスを見つけるために、いますか? うん、マイクを見つけることができませんでした。 私は何をしますか? だから、少し近づくが、私はやります 電話帳について真であるものknow--? 観客:それはシーケンシャルです。 DAVIDマラン:それはシーケンシャルです。 それはアルファベット順です。 そして、私はMセクションにいるそうだとすれば、 マイクは右に明らかにされ、 私は文字通り涙することができます half--で問題 それはthat--涙よりも、通常は簡単です 問題半分にし、それを捨てて、 今、私はだ問題を抱えているように、 もはや千大変でしたpages--、 私は私が実際に引き裂いたと思うので、 これがないtime--電話帳 1,000ページが、500。 だから問題は、大きなとして文字通り半分です。 そして、それはので、かなり魅力的です 私の以前のアルゴリズムと、バージョン 1と2、私が唯一の問題を作っていました 小さい1ページ、小さい方の2つのページ 一度に。 今のに対し、私はそれを500製 一度にすべてのページに小さいです。 [OK]を、今、カリムは提案しています 私は右半分に行くこと。 だから私は、大きく分けて行くつもりです 真ん中に、与えるか、または取ります。 そして、私は数学的にこれをしなかった場合、 私は真ん中に右に行くことができます。 そして今、私は、ああ、実現します 私はTセクションにいますよ。 私は実際に行き過ぎました。 しかし、私は、再び、引き裂くことができます 半分の問題は、それを捨てます。 そして、私のバイトとして大きくはありません。 それだけで、何を、256ページや250です ページ、与えるか、または今取ります。 しかし、それはまだ道よります 1ページまたは2ページより。 そして今、私は真ん中にほぼ行きます。 ああ、私は今、非常に十分行きませんでした。 だから私は、繰り返し、繰り返し、繰り返し 私はうまくいけばよされるまで、繰り返し 1ページだけを残し。 だから場合は、質問を誘うI およそ1,000ページで開始し、 それは私を取るんでしたどのように多くのステップ 私のアルゴリズムのバージョン1と? まあ、マイクはSである場合 セクション、最悪の場合には、 それはにかなり近いです アルファベットの最後。 電話帳は、1,000ページを持っているのであれば、 私は、1,000ページ内にマイクを見つけることができます ギブオアテイク。 多分それは800かそこらのようなものだが、 それは千にかなり近いです。 一方、第二中 アルゴリズム、どのように多くの ページには、私がかもしれ最大限になります マイク・スミスを探すために必要な? そこ1,000ページですが、私はよ 一度に2をやって。 右、なぜなら、500ishのような最大ので、 私は、全体の電話帳を通って行けば、 その時点で、私は停止することができます。 しかし、私はによっていくつかをオフに剃ることができます ちょうどTセクションで停止。 しかし、それは最悪の場合500ページにあります。 だから何回私は分割することができます 再び半分に1,00oページの電話帳 そして再びagain--から 125から250に500千? どのくらい私は1つのページをヒットする前に? うん、それは約10です。 丸めなどに応じて、それはです 合計必要が投入される約10ページ または電話帳を引き裂かする必要があります。 だから、かなり強力です。 私たちは、千ページの問題で開始しました これらの物語のすべての3インチ しかし、最初のアルゴリズムで、それ 連れて行ってくれた、最悪の場合、千ページ マイクを見つけることになります。 第2のアルゴリズム、500 マイクを見つけるためのページ。 第3のアルゴリズム、マイクを見つけるために10ページ。 そして、それはさらにです 強力なあなたが考えるとき 反対側のシナリオの種類について。 電話会社は、次のことを仮定 今年は多分、一緒に2つの町を併合します そして、電話帳が突然です 代わりに、このことの、この厚いです、 そのように2000ページの代わりに、千。 さて、私の最初のアルゴリズムが探して 2000ページの電話帳でマイク・スミス、 最悪の場合、取るつもりです 来年どのように多くのページになりますか? 電話帳は、2,000ページです so--よく、ないもう一つ。 電話帳には2倍のように厚い場合 最初のアルゴリズム、最初のアルゴリズム、 2000、右か? 最悪の場合、マイクは本当にです 本の最後に近く、 それは、2000ページのターンです。 で行く第2のアルゴリズム 補数、1,000ページなど。 しかし、どのように私の第三では約 最も最近のアルゴリズム? 電話会社が倍増した場合 1,000〜2,000ページ数、 私は涙何回必要 半分にその本は、マイクを見つけるには? AUDIENCE:ちょうど1。 DAVIDマラン:ちょうど1より、 1ページの涙であるため、 私は、文字通り分割することができます あなたは意志た場合や、征服、 半分撮影でその問題 それのうち大規模な一口。 そして、これは一例です 間違いなく効率とアルゴリズム これで私たちのすべては、 直感的におなじみの一種。 しかし、それは同じように正しいです 私の他のアルゴリズムとして、 その微調整のためにと 第2のアルゴリズム、 それはとてもはるかに効率的です。 そして、実際には、どのようなコンピュータ 科学者、または順番にプログラマ、 書き込み時に一般的に行うだろう コー​​ドは把握しようとしています、 すべての権利、私はしたくありません ちょうど正しいことするためのプログラム、 私もそれが効率的になりたいです よく問題を解決します。 今日の現実の世界で想像し、 Googleのインデックス、検索のような 彼らならば数十億のページのように、想像 猫を見つけるために、最初のアルゴリズムを使用 見pages--億のうち、 そのデータベースの最初のページ、 第二、第三、見ているだけ 猫のために、猫を探しています。 すなわち、それは思わかなりくそ遅いです。 彼らは代わりに何かを使用することができます これは、バイナリサーチと呼ばれます 2を意味しな​​いcoincidence-- biは、我々は、ありません half--で、2で何かを分割しておきます 彼らはバイナリ検索を使用することができます そしておそらく、さらに高速の猫を見つけます または何でもそれはあなたが探しているです。 そして率直に言って、あります でも愛好家のアルゴリズム それはちょうどよりもはるかに多くを行います 半分に物事を分割します 順序で情報をすばやく見つけることができます。 そして、私たちは少し話をしましょう 昼食後、それらの今日は。 だから、私はちょうどこれを表現してみましょう。 私たちは、に行く必要はありません 任意の数学または実際の数値。 私たちは、抽象的にこのことについて話すことができます。 あなたなら、私はちょうど提案してみましょう 今の議論を持ちました エンジニアと このアルゴリズムを提案 あなたが作るしようとしています 計算された意思決定、 多分理由 エンジニアはあなたが、あなたに言います 私が実装することができるか、知っています 2分などに線形探索。 ただそれだけのことです。 バイナリサーチは、空想ではありませんが、 10分のように私を取るために起こっています そう5回限り。 貿易があっても用語で、ここにあります 書くためにどのようなソフトウェアを決定します。 あなたは単純なアルゴリズムを書きますか、 これは、ちょうどあなたに2分かかりますか? それとも、より多くの時間を過ごしています、10分、 手の込んだアルゴリズムを書きますか? どのように質問のようなものを決めるのですか? それとも、それはもう少し本当の作ることができます。 私はそれを取るために起こっている私の上司に伝えます 私のいずれか1週間または10週間 実装します このようにソフトウェアを、どのように あなたはどの決めるん 緑色光にアルゴリズム? カリム? 聴衆:観客、私は推測します。 DAVIDマラン:観客。 あなたは視聴者が何を意味するのですか? 観客:それが起こっている場合 ユーザが使用します 誰[聞こえない]ユーザーが[聞こえません]。 しかし、それはあなたがしている何かあれば 自分だけのためにやって 問題を容易にするために、 [聞こえない]より速く。 DAVIDマラン:うん、それは迅速だと 汚い、それを記述するための良い方法です。 実際には、あなたがしている場合 私の時間の多くを記述する 大学院で、これにより、しばしば、 私は意識的に不正なコードを書きましたso-- 少なくとも、それがどのように私です 意識的にそうit--を合理化し、 なぜなら私は、コードを書いていたにもかかわらず、 それは、実行するのが比較的遅かったです 私は、コード自体を記述することができました わずか数分を費やして、かなり速いです または時間ない日。 そして、それは私が、判明しました たまに寝する必要がありました。 だから私のコードは、8を必要とした場合でも、 実行するための時間、それは大丈夫ですだけでなく、 私はちょうどそれが実行中にスリープ状態に行きますよ。 だから一度、私はこれはと思いました でも、私は明らかにかかわらず、非常に賢いです 非常にゆっくりと私の博士号を通って働きました。 しかし、その逆はあります つまり、私が書いていた場合は、ソフトウェア 他の人のための人 、よく、私よりももっと大事 それらを持つことへの8時間待ちます その検索結果を取り戻します すべてが魅力的ではありません。 そして、そのように多くの時間を費やし ソフトウェアを書くために、フロントアップ それは、より多くの、より効率的です 私たちの第3のアルゴリズムのように、 おそらく、時間をかけてユーザーに利益をもたらします。 だから、本当にオーバー依存します 時間は、これらのコストはどのようにを追加します。 あなたが書くことにするつもりなら 一度それを使用するためのソフトウェア、 おそらく同様に行う可能性があります 彼らが言うように、迅速かつ汚いです。 ただ、それを一緒に投げます。 それは困るコードです あなた、それはとても悪いです、 しかし、それは正しく仕事を取得し、 にもかかわらず、それは効率的ではありません。 逆に、あなたはより多くの時間を費やします 何かに、それだけで権利を取得。 そして、時間をかけて償却 時間の初期費用 あなたが続ければ、おそらく価値があります 一般的なケースのために最適化します。 そして実際、それは内のテーマです プログラミング、またはコンピュータサイエンスより 一般に、最適化しようと 珍しくない場合について しかし、どのような操作の共通case-- 何度も何度も起こるだろうか? あなたは十億を持っているつもりなら あなたのウェブサイト上で検索するユーザーの、 おそらく余分を費やす必要があります アップフロントより良いソフトウェアを書く週間、 すべてのユーザーが利益を得るようにします。 さて、このAをキャプチャしてみましょう 少し絵ではなく、そんなに 数値。 だからここだけの古い学校のチャートです。 そして、私はこれが時間であることとしましょう​​。 そして、それはwhat--問題ではありません。 実際には、いや、ない時間。 それでは、他の軸上にそれを置いてみましょう。 それでは、これは時間であることとしましょう​​、 これは、問題の大きさです。 そして、コンピューター科学者 一般的に呼ぶかもしれません このちょうどn個。 nが似ています 当社のゴーへの変数、 nが数nの数であり、それはです あなたが持っているものは何でも入力の数。 したがって、この場合、nは ページ数。 だから、1,000かもしれません 場合は、私たちは語りました。 だから時間は、メジャーのいずれかの単位とすることができます。 たぶん、それは第二のです。 たぶん、それは日です。 たぶん、それはページターンのようなものです。 関係ない。 あなたがいること、でカウントするようにしたいものは何でも 等価的に時間やコストになります。 それとだから、非常に最初の アルゴリズム、私の場合、例えば、 千ページの電話帳を持っていました、 私は、そこにドットを描画するつもりです それが1,000ページだ場​​合、それがかかったので、 およそ千ページが与えるか、または取る、になります。 そして、私が持っていた場合 2000ページの電話帳、 そして、私は2番目を引くつもりです なぜなら2000ページのために、ここではドット、 それが2000秒のようなものです またはページがオンまたはものは何でも。 それで、私が以前に言ったとき、それはです 直線関係の種類、 私が望んでいたので、それは、意図的でした 後で線を描画する権利now-- on--。 それはストレートのようなものです ライン関係。 あなたがする場合は傾きが、1月1日です。 一方、第2のアルゴリズム あなたは1,000ページを持っている場合は、言いました あなたは第2のアルゴリズムを使用していました、 私は2のによってカウントところ、ターニング 一度に2つのページ、私が描くべき 私のオリジナルドット以下または上記ドット? AUDIENCE:以下。 DAVIDマラン:以下、我々が見たようにので、 それは多くの時間のように短い時間、半分がかかります。 だから、ドットが半分であるべき 他と高いです。 こっちと同じ取引、このドット おそらく大体があるはずです。 だから、私の第2のアルゴリズム、同様に、 時間とともに線形の関係を有します。 そして、我々はそのように描くことができます。 だから今、3番目と最後の このアルゴリズムは、描画には少し難しいです。 しかし、直感的に、私は千を持っている場合 私の第3のアルゴリズムを使用したページ、 それが唯一の10のステップのように私を取る必要があります。 そして、私は2000ページを持っている場合 私の第3のアルゴリズムと、 それは私にはない10を取る必要があります ステップが、11、もう一つだけ。 だから我々はかろうじてこれを参照するつもりです。 そして、それは場合は、判明します 私は、私は、この上にズームイン 効果を誇張するつもりは、 その線の形状、最終的に、 ストレートline--ではありません それがあった確かにあれば、なぜなら、 それはより多くのようになります。 それは実際には曲線ですothers-- 我々はズームイン場合には、起こっています ずっとこのように見えます。 よくIt--、[OK]を、この部分を無視します。 それは私のペンは角度のつもりでした。 それは常にある曲線です いつも、いつも、いつも、増加 増加が、唯一かろうじて。 そして、そのように時間をかけて、あなたが持っています このようなより多くのです関係。 それはほとんどまっすぐに見えます。 しかし、それは今までとてもゆっくりと増加します。 しかし、ほとんどすべてのポイントのために沿って あなたのx軸、横軸、 それはそれらの他のラインよりも低いです。 だから、これは関係あるかもしれません nは、それによってあなたがnページを持っている場合、 あなたのn秒かかります。 これは、関係のn / 2であるかもしれません。 あなたはnページを持って、それが取ります あなたのn / 2秒、などの多くの半分。 そして、これは対数的です 関係、これ あなたが思い出すならば、n個のキャプチャのベース2を記録 成長のこのような、いわば。 だから、これは神聖なの一種であります これらの3の中で聖杯 ここでは、それだけで以前よりもずっとだから 効率的な、しかし間違いなく、より複雑な 実装します。 質問は? まあ、私はこれを行う、聞かせてみましょう 私は、テキストウィンドウを開きます ちょうど私たちがしようとすることができます ここで何かを正式。 だから私は今、先に行くとしましょう このアルゴリズムを実装します コー​​ド内のマイク・スミスを見つけるための、 可能ならば、擬似コードコード。 私は、JavaやC ++を使用するつもりはありません。 私は、ソートの使用するつもりです 私たちの英語のような構文、 一般的に擬似コードのコードを呼び出します。 ここで、私は空のウィンドウを持っています。 そして、私は非常にのステップ1を言っています 最初のアルゴリズムは、電話帳をピックアップです。 ステップ2は、最初のページに開いた本です。 ステップ3を見ます マイク・スミスのためのページです。 ページの場合は、マイクを呼び出します。 他のページをめくると、手順3に進みます。 完了、の言わせて。 そしてそれは非常に完璧ではあり​​ません、 これは私たちが一瞬で表示されます。 しかし、ここでは何を考えてみましょう 私がここで紹介してきた概念。 そう1,2及び3ステップ かなり多くの動詞があります。 彼らは声明をしている、actions--これを行います。 そして、そのようにプログラミングで 言語、我々は一般的だろう 彼らにステートメントを呼び出しますか、 ファンクションまたはプロシージャ、 物事の任意の数のそれらを呼び出します。 しかし、彼らはこれを行うactions--だけです。 ステップ4は、根本的に異なっています なぜなら、それは質問をするようなものです。 我々が親切だと言っています 道路の分岐点での。 マイクがページ上にある場合は、呼び出し 彼ので、あなたがする場合は、左折。 そうでない場合、戻っていくつかに行きます その他当ページ - というか、申し訳ありませんが、 これは、他のいくつかのステップに戻ります ループ構文のいくつかの種類を誘導します。 そして、私たちは何度も何度も何度もそれを行います。 そして実際に、あなたは何を知っていますか? うん。 他の書籍停止の終わりにあれば。 だから我々は第三の種類を必要とします 条件、あなたのために ページの広告を回す維持することはできません nauseum、最終的に、私はだろうから 本の最後にヒット。 そして、プログラムにバグがあるかもしれません そのシナリオを予想していません。 そして私はちょうどああ、待って、実現しました 分は、私が第3のシナリオが必要です。 私は、ページのうちだ場合は、I 本当にただ停止する必要があります。 それ以外の場合は未定義です。 何が私が続ければ起こるだろう ページをめくると戻って言って、 これは、ときにコンピュータであります あなたが打ったとき、フリーズやクラッシュ そのようないくつかの予期せぬ事態。 さて、どのようなマイクについて スミスの第三algorithm-- 電話帳をピックアップし、 にfirst--する開いた本 いや、ない最初のページこの時、 だろうと、よく、ああmiddle--します 第2のアルゴリズムです。 ちょうど第三にスキップしてみましょう。 聴衆:ああ、すみません。 DAVIDマラン:それは結構です。 ちょうどthird--オープンにスキップしてみましょう 真ん中に、今マイク・スミスを探します。 ページの場合は、マイクを呼び出します。 そして、私たちがここで言いたいのですか? 他に何? 私たちは、これを表現することができます 任意の数の方法インチ 全く正しい答えはありません。 [OK]を、そうでない場合は、もう一度、私たちのようにする必要があり be-- OK、我々は、二つに分割したいん 私たちは、左に行くか右に行きたいですか? どのように我々はその概念を表現するのですか? まあ、マイクの場合には、はい、それは公正です。 しかし、[OK]を、ので、それは実際には良い点です。 それはいいです。 私たちは、このロジックと一緒に行くしておこう。 そう - AUDIENCE:半分以下。 DAVIDマラン:うん。 だから、他のページがある場合、我々は少ない、と言うでしょう スミスより、スミスの左側に、 見てみましょうthen--、あります この複雑にするつもり? 他のページには、スミスの前に来る場合、 その半分を捨てて、半分に涙? 聴衆:私は思いました それは、[聞こえない]でした。 DAVIDマラン:私は答えの両方を聞いています。 AUDIENCE:左。 DAVIDマラン:OK、投げます 離れLakisaとして、左半分 左は、以前に述べました その後、半分、種類のI ちょうど私が右に行くto--行きたいです。 または同等に、と私は少しを作りました ここで最初の混乱のビット、 私は効果的にしたいです もう一度手順2に進み、 ここで、オープンmiddle--またはopen--へ ええ、ちょうど真ん中にページ、と言うのを聞かせて。 そして、これはそれを修正します。 それはもはやブックません。 これは、本の半分だけです 真ん中に非常に開いているページ。 else--はほとんどありました。 ページがスミスの後に来る場合は、他のステップ6、 半分に引き裂く、離れて右半分を投げ、 その後、ステップ2に進みます。 それ以外の場合は、第四のシナリオを終了します 我々がオンに残されたページがありません。 だから我々はこれをクリーンアップすることができます。 そして、我々はこれをクリーンアップする必要があります。 これはあなたの場合、非常に擬似コードのコードです 意志、非常に高いレベルの記述。 しかし、それは一般的なアイデアをキャプチャありません。 そして、再び、このシナリオでは、我々 条件の概念を持っています、 枝、道路の分岐点、作ります この場合decision--、この道を行きます、 それ以外の場合は、この道を行きます それ以外の場合は、その道を行きます。 そして、これは非常に一般的です プログラミング技術 どの方向決定します 行くために、いわば。 そして、我々はまた、いくつかの種類を持っています 構造をループの、どこに 私たちは何度も何度も何かをやっています。 今、それははるかに、判明します この例のように、 超精密であることは重要です。 しかし、我々はまた、何かを見てきました 私たちは、抽象化を呼び出しておくこと。 それは、電話帳をピックアップして何を意味するのでしょうか? 私達はちょうど種類の取っています この部屋に付与されたため それはいくつかの意味論的な意味を有します。 私たちのすべては、だけの種類の、ああ、知っています よく、電話帳をピックアップ。 ことは、本当に何を意味するのでしょうか? まあ、それは本当に伸ばす意味します 手、指を伸ばす、身を乗り出します、 指の間で本をつまんで、 あなたに向かって手を引っ張って、立ち上がります。 そして、私たちは本当に可能性があり これについての知識をひけらかします、 本当に超精密であること 私がやっているものになど。 しかし、これらのすべての手順をまとめています それは、電話帳をピックアップして何を意味するのか。 それで以前、私が言ったときに、各 これらの最初の二つの文の 考えることができ 続行するか、または機能、 本当にそれが何を表すのか、私たち 抽象化を呼び出しておきます。 これは概念的な高レベルのようなものです その問題の説明 実際にかなりの数の工程を含みます。 だから、これは、あまりにも、です プログラミングのトピックを繰り返し、 それによって、私はプログラムを作成することもできます this--ような構文を使用して、 pick_up_phone_book()。 そして構文的に、私はよ 何かを盗むつもり ほとんどのプログラミング言語から。 さて、ステップ1にも見えます より多くの機能のように、 プログラマとして、それを呼び出します。 それは、誰かのことをコードのようになります。 名前を与え、与えています 私には他にsomehow--使用します 私が強調表示されたものをライン言葉、 その多分機能を表し 私も自分自身を実装していませんでした。 古い誰か、より賢く 私はすでに考え出し どのように概念を表現 電話帳をピックアップします。 そして、それは私がちょうど5つのステップのようなものです 私の頭の上から、オフにガタガタ。 しかし、彼または彼女はすでに実装します これは、それらのいくつかのステップを与えました 名前、pick_up_phone_book。 括弧は、 まさにほとんどのプログラマ このような文の最後に行います。 私は今、自分の上に立つことができます 肩と二度と、 それが何を意味するかを考えます 電話帳をピックアップします。 私はちょうど電話帳を拾う、と言うことができます。 そして、それは正確に何です 私たち人間のすべてがここにいました。 我々は、おそらく1になったとき 2歳、古い年、 誰かが私たちに教えなければならなかったもの、それを 電話帳をピックアップするためのもの。 そして、今までそれ以来、 私たちは離れて抽象化しました これらの非常につまらないから 機械的な手順。 そして、我々はちょうど持っています 直観的理解 それが何を意味するのか 電話帳をピックアップ。 そして、あなたは今、外挿することができます より複雑things--へ 建物を建設。 同様に、いくつかの人々に、 それが実際に意味を持っています。 請負業者に、建築家、 それはいくつかの意味を持ちます。 そして、彼らは、場合に何をすべきかを知っているだろう 私は建物を建設行く、と述べました。 しかし、部屋の中で私たちのほとんどはできませんでした 抽象化のレベルを扱います。 あなたが行く得るように私達に指示する必要があります シャベルやコンクリートを取りに行きます そして、木材の小片を爪 一緒に、他のどのような 建物の構築に関与しています。 そして、私たちが持っていないので、それはです まだ理解するようにプログラムされて それは、建物を構築するために何を意味するのか。 私たちは、その抽象化を持っていません。 私たちは、その機能を持っていません。 だから、あなたは何をで表示されます 一般的には、プログラミング言語、 特に、より現代的な言語、 JavaやPHP、Rubyの、およびPythonのような、 彼らははるかに成熟しています 古い言語よりも、 CおよびC ++とまだ他のような。 それで、彼らはより多くの付属してい 機能が組み込まれています。 より多くのコードが書かれています 過去の人々によって、 私たちが今呼び出すことができるということか 私がほのめかしているように、召喚または使用 このとで、ここでのラインを強調しました。 そして、私たちは話していないにもかかわらず、 プログラミング言語については、それ自体、 ちょうど擬似コードのコードのすべて アイデアは、その議論にまだあります。 そして、それは精度がある判明します 抽象化であるとして、超重要。 とのはに試してみましょう 次のようにそれを伝えます。 私が誤って台無しにしている可能性があります この画面上でスライドを点滅させることにより、 途中で。 しかし、私は勇敢なボランティアを求めてみましょう、 あなたが来る気にしない場合。 あなたは目の前になるだろう カメラ、あなたはそれでOKなら。 誰もが思い付くとさせていただきたいと思い ここにあなたの同僚に指示? ただ、こっちに来ていると こっちに立って、いくつかの言葉を言います。 ビクトリアは、ほとんどが笑っています 最も私の目を避けること。 あなたがアップに来ることをいといませんか? OK。 そして、あなたの席で皆場合 スクラップ一枚の紙を取り出すことができ、 可能ならば。 裏地紙が細かいです。 このように集まってきます。 または紙のいくつかのこと あなたは昨日与えられました、 ただの白紙 紙の、あなたができれば。 そして、あなたがいずれかを持っていない場合は、単に あなたができればあなたの隣人をお願いします。 だから今のところ、用 この例では、ビクトリア の役割を果たしているために起こっています プログラマー、エンジニア、誰 あなたのすべてをプログラムする必要があります コンピュータは、何かをします。 そして、私たちはどのような仮定を参照してくださいよ あなたがすることを決定します。 私たちは、彼女があることを選択する方法の正確な表示されます。 そして、このデモが行く場合 教育学だけでなく、ミスの多く 私たちはその後、使用するだろうと、行われます その議論の機会として。 しかし、あなたのための挑戦はすべき これらのミスを避けるためになります、 優秀なプログラマーです。 手元にあるので、挑戦、もし あなたは、こちらに歩いて好きだったと思います 画面上のビクトリアの前にあります here--とうまくいけば、あなたのどれも ときに私にこれを覚えています 画面上に光りました。 そしてので、全く好転しません この部屋に別の画面があります 私はオフにすることができること。 だから、好転しないでください。 ビクトリアの前で その同じ悲鳴です。 そして、彼女の仕事は今、あなたのすべてを伝えることです 紙のあなたの部分に何を描きます。 そして、我々はに基づいて、表示されます 単独で口頭指示、 コンピュータコード、可能ならば、 どのように正確にあなたの図面 あなたの実装がありますare--。 理にかなって? AUDIENCE:うん。 DAVIDマラン:OK、実行します。 聴衆:四角形を描画します。 [笑い] DAVIDマラン:そして、いや 質問が求められることがあります。 あなただけは言わているものを行うことができます。 ああ、あなたが持っている場合は、今日のスライド タブで開き、あなたのタブを見ていません。 OK? 聴衆:OK、円を描きます。 slope--私はスロープを言うことができますか? DAVIDマラン:あなたまで。 AUDIENCE:スロープ。 三角形。 DAVIDマラン:すべての権利。 そして、ちょっとここに滞在。 そして、私は来るつもりです 一瞬で周り。 そして、その上にあなたの名前を入れる必要はありません。 私は周りに来てみようと あなたの図面を集め、 あなたはそれらを引き裂く気にしない場合。 ここでは、バック得たものです。 私は、画面上に投影します。 私は、正方形、円を参照してください、 スロープ、および三角形。 だから、そこに一つの答えでした。 そしておっとlet's--。 ありがとうございました。 ここでは別の品揃えです、 その背後にあると1。 だから、彼らはすべての精神をキャプチャするように見えます。 ありがとうございました。 そこ別だし、ここでは別の一つです。 スロープの解釈があります 少し違う、曲線美少し。 そして、どちらかのための最も近いです あなたは済ませたとの素晴らしい特異性 説明、または多分あなたの種類の 前にそれを見て、これは確かにありま​​す ビクトリアは、実際に何を説明しました。 しかし、今、あなたのそれらの人 それは非常に権利を取得しませんでした、 それでは、ここでいくつかの異議を提供してみましょう。 だから、ビクトリアは、最初に四角形を描画述べました。 そして今、我々が想定することができ 今日のために 誰もが知っていること 四角形を描画する方法について説明します。 しかし、それは右、完全に明確ではないでしょうか。 他にどのようにあなたが持っている可能性が 描かれた正方形、またはどこに 曖昧さの一部であるかもしれません ここでは、コンピュータのために? AUDIENCE:ロケーションとサイズ。 DAVIDマラン:場所、右か? あなたのすべては、いくつかの形の紙を持っていました 一般的に長方形が、わずか 異なるサイズ。 しかし、あなたは確かに描かれている可能性があり、 あなたが望んでいた場合、巨大な正方形、多分 小さな正方形。 多分、それを回転させました。 私たちはそれを見たとは思いません。 しかし、それはより多くのダイヤモンドだったかもしれません 以下のようなそれでも、それにもかかわらず、 広場を数学的。 だから、間違いなくあいまいでした。 それから彼女は、円を描く、と述べました。 あなたのいくつかは、次のことを描きました 不合理ではない、それ、 人間は考えたり読みする傾向があるため 右のほとんどの言語に残って、そうしないように 悪い推測。 しかし、その円を持っている可能性があり 正方形の内部になって、 周りされている可能性が 正方形、他の場所だったかもしれません シート上なので、間違いなくあいまいな。 スロープは多分あったかもしれません 口頭で最も自由を取ります それが何を意味するのかと。 そして、あなたのいくつかは解釈します それ波線など または直線など。 そして三角形は、あまりにも、持つことができます 任意の数の方法で配向されて。 要するに、でも何かを持つように そう、すごい、あなたが一目あなたが似ています 単純な、子供ができました これを描画し、よくありません 本当に、あなたがない限り スーパー、スーパー説得力 し、コンピュータを伝えます 正確に何をすべきか。 だから我々はことができれば、あなたが持っている場合 紙の別のシート、してみましょう このもう一度試してください。 そして、私はビクトリア1を与えるつもりです ここでは、画面上の他の例。 そして再び、好転しません あなたのスライドを見ていません。 そして、私は彼女にする瞬間をあげます この記述方法を考えます。 それらを見てみましょうしないでください あなたの目で恐怖。 [笑い] そして再び、この時間を活用 それらの持ち帰りの一部 そして、ほとんどの人を取得しよう 少なくとも正しい答え。 聴衆:OK、取ります 一枚の紙、見て 紙のその部分の真ん中インチ その部分の真ん中に 紙、立方体を描画します。 [笑い] DAVIDマランは:私たちは何を学びましたか? 私たちはとても接近していました。 あなたができればOK、みんなのために、繰り返します。 AUDIENCE:の真ん中で 紙は、オブジェクトを描画します これはキューブのように見えます。 DAVIDマラン:OK、それはです すべてのあなたが仕事を得ます。 私は分析することを可能にします そして重要なあまりありません、 しかし、主張を作るために ビクトリア間違いなくその 非常にで考えているようです 高レベルの抽象化、その 不合理ではないです。 そうでなければ、我々はすべてしまうので、 かなり機能不全であること、 我々は、これまでそれほど正確でなければならなかった場合 すべてに私たちは世界で行います。 しかし、私はmiddle--に行くと言って 我々はこのような良いトラックに思っていました そこに、のような非常に真ん中に行きます キューブを描画し、ページの、と。 そこで彼女は、抽象化に考えて、 彼女はまだ見ていますので、 確かに、キューブのように画面上でです。 しかし、非常に多くの機会があります そこに解釈のため。 そして、実際には、そう多くあります あなたが表現できる他の方法 つまり、私はその瞬間に提案しますします。 そこでここでは、1化身を持っています picture-- whoops-- 1の 絵の化身なので、 それにはほとんど3次元、 これはいいです。 ここであなたが持っているもう一つは、です 同じ、それはオープンキューブの一種だが。 一部の人々はそれを少し取りました よりフラット、2次元。 そして、それは大丈夫です。 だから、確かにありま​​す 紙の中心。 この1は私はあなたがすると思います 以下のように、私たちはここに行けばあるため、 これは彼女が記述したものです。 だから今、私はどのように他提案してみましょう 我々はこの状況を説明することがあります。 戻る日に、ほとんどの1 プログラミングを学ぶためのより多くの一般的な方法 コー​​ドを書くことだった、書き込み 命令のライン、 それは少しを制御しました 画面上のカメ。 ロゴとこのの他の変形 言語の名前でした。 そして、亀は、世界に住んでいました。 したがって、この長方形のを想定 スペースは彼の世界です。 そして、あなたはassuming-- Iによって開始します 本当に、亀を描画する方法がわかりません それでは、このようにそれをやらせます。 そして彼は、シェルを持っています そしてその後、おそらくいくつかの足。 だから、この小さなを持っているかもしれません 画面上の文字。 そして、こののオブジェクト プログラミング言語 カメを強要することでした 上がるために、ダウン、右、左 ダウン彼のペンを置くために または彼のペンアップを選択し、 彼は実際に画面上に描画できました この非常に平らな長方形の世界インチ だからここで私はあなたが行くことかもしれないと思いました、 そしてどこでダイビングを考慮する必要があります 記述するときに精神的にダウン より一般的に指示、 私が主張するだろう、あなたを入れて middle--でペンダウン 我々は取り除きますよ カメ、私は本当にことができるので、 非常によく彼を描く保ちます。 そして今、どのように他の可能性 私はキューブを描くと言いますか? まあ、我々は引き分けのようなものを言うことができます 対角線の北東部、例えば、 または上方45度の角度で。 そしてそれは私をここに得ている可能性があります。 そして、私はかなり遠くキューブからです。 しかし、今、私が何かを言うことができます 以下のような左に90度回転 との線を引きます 同じ長さの北西。 そして、私は続けることができます 同様の方向を有します。 そして、簡単なことではないだろう。 そして率直に言って、我々はおそらくだろう 5分間ここにいました。 しかし、多分私達はに得ているだろう 、一日の終わりに何か、 キューブなってしまうが、我々 その抽象化の内側に潜っ このような低でそれを行うには レベルあなたが本当にすることができ あなたは全体まで、何をやっている参照してください。 事は、ページ上の実際にそこにあります。 そして、これは一般的な原則です、 再び、programming--このアイデアの 抽象化。 それはとても素晴らしくです 強力な、再びので、 彼女はちょうど、言ったのすべてのキューブを、描きます 私たちはかなり非常に迅速に定義を理解でしょう。 私達はちょうど理解するであろう、 OK、立方体を描画します。 私たちは、向きを知らないかもしれません 私たちは、もう少し正確かもしれません しかし、我々は一般的に想像することができます またはキューブが何であるかを知っています。 そして、それは便利です、 なぜならかのたびに でプログラマーとして座っ コー​​ドを書くためのキーボード、 あなたは、このような時に考えていた場合 低レベル、私たちのどれも 今まで何を成し遂げるだろう。 そして確かに、私たちのどれもあろう コー​​ドを書くのプロセスを楽しみます。 これは、0と1に書き込むようになります これは、率直に言って、すべてそのずっと前にはなかったです 人間は、0と1でコードを書いていました。 そして、我々は非常に迅速に思い付きました これらのより高いレベルのlanguages​​-- C ++やJavaなど。 それでは、ちょうどこのもう一度試してみましょう 表を反転、私たちのすべてのように、 考える機会を持っています むしろ同じようインチ 私たちは、1以上のボランティアこれを得ることができます ボードにまで来て、描画するための時間、 暗唱しませんか? [OK]を、ええ。 ベンは、アップに来ます。 そして、ベン、この場合には、あなたに一度 、ボードに直面して、左見ていません 右見ていません。 唯一の何をすべきかあなたを ここでの同僚はあなたを伝えます。 とで皆のために 部屋、あなたは今、プログラマです。 彼はコンピュータです。 私がここで選択されたし、絵 事前にここでこの1です。 彼らは考えているjust--ています 面白いジョークのすべてです。 だから、誰かがしたいんだろう 最初の命令をボランティア またはステートメントは、そのすべき コマンドベンのペン? そして、我々は多分、総称してこれをやります 一人一人から1命令。 ごめんなさい? 聴衆:円を描きます。 DAVIDマラン:円を描きます 私が聞いた最初の事はあります。 AUDIENCE:最大トップ。 DAVIDマラン:最大トップ。 [OK]を、私たちは、元に戻す、削除させることができます。 そして今、他の誰か。 ダンは、あなたが快適になります 次の命令を提供しますか? 聴衆:確かに、センターを描きます 円の底部、 small--少しで それから、小さなスペース、 3まで直線を引きます ボードダウン方法の4分の3 あなたの左にわずかに角度。 DAVIDマラン:良いです。 AUDIENCE:わずかな角度。 DAVIDマラン:元に戻す、コントロール-Z。 OK。 アンドリューは、あなたが提供したいと考えています 次の命令まで? AUDIENCE:確かに。 その行の下から、 さらに、わずかangle-- whoops--多分約三分の 長さの[聞こえません]、 わずかな角度下向きなど [聞こえない]の長さの第三。 そんなわけで、その点から、 第三の線を引きます 前の長さの さらに左へのライン。 DAVIDマラン:それOK? 直線は、それはOKですか? OK、オリビエ、あなたがしたいです 次を提供するには? AUDIENCE:[聞こえない]から 円の下部、[聞こえません]。 右側に描きます [聞こえない]センチ。 [笑い] DAVIDマラン:私はあなたになるだろうと思います それはここインチだ変換する必要があります。 AUDIENCE:停止。 [笑い] DAVIDマラン:OK。 [?アラ、?]したいです 次を提供するには? AUDIENCE:描く[聞こえません] 上部の[聞こえない]と同じ。 [聞こえない]に、円、描画 [聞こえない]と[聞こえない]描きます。 DAVIDマラン:OK、これ以上元に戻します。 のは、1つまたは2つの複数の命令を実行してみましょう。 クリス、あなたは1を提供したいですか? AUDIENCE:下部にあります 円の、[聞こえません] 同じラインスロッピングを描きます 左の[聞こえない]に下向き。 DAVIDマラン:OK。 アンドリュー? 私たちは、カリムをdid--? AUDIENCE:右の行から開始して、 左ライン、ボトムの終わり、 あなたは約右に行くつもりです そのラインと同じ長さ あなたはへの描画、にしています 右の[聞こえません]。 [聞こえない]度なので、[聞こえません] 右側の度。 DAVIDマラン:すべての権利。 一時停止してみましょう。 まだ好転しないでください。 一時停止してみましょう、としてみましょう 1他の試みをしてみてください 我々はベンに明らかにする前に、 彼はどのような描画されています。 あなたはにベンをシャッフルすることができます right--または実際に、 いいえ、ちょうどあなたを与えてみましょう 別のボード、さらに良いです。 だから、誰かが今たいと思います アプローチの多くを取るために ビクトリアはどこに、以前にかかりました 我々は、より高いレベルの抽象化で話します そしてちょうど文で または2ベンに記述 何せずに描画します 雑草になって、 したがって、この低いレベルで、話すには? ビクトリア。 [笑い] 聴衆:図形を描きます 歩行男の。 そして、彼の腕や脚 右側でなければなりません。 DAVIDマラン:OK、それはあなたが得るすべてです。 大丈夫。 なぜ我々は彼が何をしたかベンに明らかにしていません。 だから、拍手。 それは難しいかもしれませんでした。 だから我々は話をしているにもかかわらず、 かなり愚かな面で ただ描画について 写真、うまくいけば の程度を本当に理解することができます 必要になる場合があります表現 何をすべきかをコンピュータに指示するためです。 そして、実際には、事実ベン こんなに早くこれを描くことができました 使用しての証のようなものです 言語、多分より高いレベル 英語のバージョン、彼を可能にします 言葉だけを使用する、または単語を聞いて ビクトリアから、彼を許すこと これらはただ描きますabstractions-- に歩く姿 持っているその種のright-- ではない、それにはいくつかの意味論的意味 ほぼ明らかなように、あなただけのしているとき ダウンあなたのペンを置く、と言って、描きます 右に、左に描画します。 そしてこれは、あまりにも、非常にあります プログラミングでは一般的。 これは、のようであると言うことだろう 非常に低レベル言語プログラミング 可能ならば0と1インチ そして、これは、より高いレベルになります Javaでの言語のプログラミング、 またはそのような何か。 のビット 単純化し過ぎ、それの 感情的なようなの並べ替え あなたはときに感じることを感じて 一つの種類または別のものを使用して。 必要によってここに欲求不満のビット このような精度のために、しかし、機会 と少し緩めるようにします ここ解釈。 しかし、もちろん、バグ 結果として生じる可能性があります。 あなたはhome--で希望される場合は、我々 class--でこれを行うことはありません しかし、あなたがしたい場合 この1家庭を持って、 私たちはこの飛び込むだろうと思いました。 ですから、これを再生したい場合 あなたの重要な他とのゲーム や子供たちなど、あなた 同様にそれを楽しむことがあります。 それでは、先に行くと、最後の1を見てみよう ここでは、計算的思考のためのもの。 そして、それはジョンに私たちをもたらします ないクリップのオリバー、 あなたは昨夜見たかもしれません、 やや最近の号へ。 数ヶ月前、フォルクスワーゲン 高射砲のかなりを取りました どのような理由のために、あなたが知っていれば? 彼らはトラブルに何のためになったのですか? うん、emissions--ので 排出量をビートにしようとしていました 基本的に彼らを有することによりテスト 車が少ない環境を汚染します 自分の車は、試験されていたとき さらに、環境を汚染 車がテストされていなかったとき。 そして、何がますます面白いです 世界では、あなたが推測できるように 何であるかlike--の議論から CarPlay、車のためのAppleのソフトウェアit-- そして多くのその事実 私たちのますます クルマにタッチスクリーンを有し、 恐ろしい量があります 人々年代のソフトウェアの 車今日は、これ 率直に言ってワーム時の全体の缶を開きます それは、セキュリティと物理的なリスクになります。 しかし、今日のために、してみましょう ちょうど何に集中 ライティングソフトに関与 それは、システムをgamedている可能性があります。 の定義について 問題、慣れていない人のために、 のは、ジョン・オリバーを見てみましょう。 とに精通した者のために 問題は、のは、それを見てみましょう ジョン・オリバー経由で楽しいレンズでも同様。 だから私は、私はこの上でプレーをヒットさせ 3分の導入、と思います。 畜生。 [ビデオ再生] -車 - DAVIDマラン:明らかに、 YouTubeで、it's-- - --the賢い文字で ワイルドスピード映画。 今週、ドイツの自動車メーカー フォルクスワーゲンは、自分自身を発見しました のスキャンダルの途中で 潜在的犯罪者の割合。 -Volkswagenは数十億のためにブレースされています 罰金で、可能な刑事告発 その幹部のための、など 同社は謝罪します 11〜万台をリギングするための それは排出量のテストを打つのに役立ちます。 -Certainディーゼルモデルを設計しました その洗練されたソフトウェアと 位置を含む使用済みの情報、 ステアリングホイールと車両の スピード、車があったかを決定するために 排出量のテストを受けています。 そのような状況下では、エンジン 有毒な排出量を削減することになります。 しかし、車はバイパスに装備されました それが駆動されたときに。 排出量は、40に10を増加しました 許容可能なEPAのレベルを超える時間。 -Wow、10〜40倍 EPAよりも大きいができます。 それは最悪のことです フォルクスワーゲンは、これまで行っています、 あなたがあれば言うかもしれないものです あなたは第二次世界大戦のことを聞いたことがなかったです。 どのようにしかし、おそらく最も確実な兆候 フォルクスワーゲンはである多くのトラブル、 であることは非常に人々 トップは辞任しています。 最高経営責任者(CEO)は、後に水曜日に辞任しました ダメージ・コントロールを行うためにスクランブル、 、彼は際限なく残念だったと言っています それが判明するまで、素晴らしい鳴りました 彼は唯一の10%残念でした しかし、彼の口を装備していました 人工的に彼の気の毒さを膨張させます。 その間、フォルクスワーゲンの米国 チーフは、彼自身の謝罪を持っていました。 これについて明確にするのを-LEt、 当社は不誠実でした。 そして、私のドイツ語の単語で、我々 完全にめちゃくちゃにしています。 -Yeah、しかし完全にねじ込ま アップドイツの作品ではありません。 そして、ドイツ語 多くの美しいフレーズを持っています ちょうどこのような状況を記述するために、 このような大体意味[ドイツ語]、など、 来る悲しみ ビジネス関連の嘘から、 または[ドイツ語]、変換 関与するものの父を恥として ガソリンの雲。 それは美しい言語です。 それはちょうど舌をオフ帆。 ところで、あの男の一方 謝罪は誠実に聞こえたかもしれません、 それは彼がで話していた注目に値します 2016年の公式打ち上げパーティー そのまもなく意味フォ​​ルクスワーゲンパサート、 申し訳ありませんと言った後、彼はこのことを言いました。 あなたに来るために非常に多くを-Thank。 夜をお楽しみください。 次のアップレニー・クラヴィッツです。 [MUSICのPLAYING] -OK、OK、あなたを終了します 次のアップで謝罪 レニー・クラヴィッツはしていません 地味な悔恨を叫びます。 それは悲鳴、我々はボンに尋ねました ・ジョヴィ、と彼はノーと言いました。 フォルクスワーゲンのブランドは持っています ひどく破損して。 そして率直に言って、彼らの新しい広告 キャンペーンは正確に支援されていません。 - [ドイツ語]、フォルクスワーゲンで我々が希望します であなたを欺くために謝罪します 私たちの車。 [END PLAYBACK] DAVIDマラン:これはでした 回り道of-- sorry-- これは、回り道でした 根本的な問題を導入 あなたということですソフトウェア、中 特定の条件を検出する必要があります。 だから手元の質問がここに 車が潜在的にどうするか、です、 ソフトウェアで実装され これらのプログラマによって、 それは実際にテストされていたことを検出? だから、スーパー明確にします 彼らは何をしていましたか? どこ環境でした プログラマは考え出し 車はされていました テストされ、彼らは何とか作っ 車は少なく、少ない排出量を放出します 排出量なので、あまり毒性ガス そして、このような。 しかし、それは正常なとき 道路を走行、 それはちょうど同じくらい放出するだろう それは望んでいたとして汚染。 だから、私たちはどのように書くことができます このアルゴリズムの擬似コード? どのように我々は擬似コードを書くことができ 車の中で実行されているソフトウェアのため? 私はそれが沸騰し、一言で言えば、意味します このようなものまで。 試験された場合、以下を放出します。 他には、より多くを放出します。 しかし、それは少しです 高すぎるレベル、右か? それでは、どのような本にようでダイビングをしてみましょう 手段をテストされているの抽象化。 言い換えれば、あなたは何も知らない場合でも、 質問の車について、どのような あなたがいるかどうかを判断するために頼むかもしれません あなたが車なら、あなたは、テストされていますか? どのような特徴があるかもしれません 車がテストされている場合は提示? AUDIENCE:テスト機器。 DAVIDマラン:テスト機器。 検査機器もしそうであれば 近く、少ないし、放出します。 だから私は、実施想像できます カメラのいくつかの種類を持つこと またはあなたの周りに何を検出。 そして、私は、それを提案してみましょう あまりにも複雑に感じています 実際に追加を持っています ちょうどその目的のためのハードウェア。 聴衆:あなたがにしている場合 公園、あなたのフードが開いている場合。 DAVIDマラン:公園でか フードオープンなので、それは良いことです。 AUDIENCE:そして車の走行。 DAVIDマラン:だから、少しです よりconcrete--や車の走行。 だから、これはの連動になります いくつかの異なる条件、可能ならば。 だから、車は公園内にある場合は、さらに これは非常に機械的なものですが、 一般的に、私ができました ソフトウェアを書く想像し、 特にがありますので、 多くの場合、そこに光、これらの日、 私はされてそこに想像できます シフターを照会することができるソフトウェア または、あなたは、公園で何をされません あなたがドライブに、あなたは逆です。 そして、私は取り戻すことができます はいどちらかの答え あるいは全く質問のそれらの種類に。 そして私はまた、おそらく答えることができます 質問などは、オープンフードです。 たぶん、センサーのいくつかの種類があります その1または0を私に戻って与えるのいずれか、 trueまたはfalse、ボンネットが開いています。 そして、車の走行が、私は検出することができました その何とか何機構を介して? 同様に、車が実行され、I それが上だと検出することができ、 私は何とか検出することができました 車が動いていると? AUDIENCE:RPMを。 DAVIDマラン:うん、そうあります 常にその針こと どのように多く回転するごとに説明します 分車輪が経験しています。 そして、私はその時に見ることができます。 そして、それはおそらく、0ではない場合 車が動いていることを意味します。 しかし、我々はしなければなりません そこに少し慎重に、 because--のはthis--簡素化しましょう 私たちが今言った場合、車の走行の場合、 私たちはあまり放出したくありません、 車が実行されている場合、我々はしたいです それはテストされています。 だから、いくつかの他があります 食材の人々 ソフトウェアがやっている仮説を立てています、 存在しないため、実際のソースコード、 あなただけの種類のから推測することができます 何についての車の物理的な効果 下に起こっている可能性があります ソフトウェアでフード。 だから車は、おそらく実行している場合 たとえば、後輪は動いていません、 これが示す可能性があります テストのいくつかの種類の? 私はここで何をほのめかしていますか? うん、多分、それは1にです これらのローラーのものの、 ここで、車輪などを回っています 前面または背面で、 それは前輪だかどうかに応じて、 後輪駆動、輪のように半 移動しているが、 他の2つは、これではありません 現実世界の奇妙な状況があります。 あなたは上で運転している場合 道路、それは起こるべきではありません。 しかし、あなたは倉庫にしている場合 ローラーシステムのいくつかの種類に、 それは確かに起こる可能性があります。 私は、人々はまた、多分ことを提案したと思います 車が実行され、ステアリングされている場合 その移動していないホイール、 あまりに信号かもしれないが、 それはのための合理的だから 道路上の直線コースなどがあります。 しかし、その後も、人間はおそらくです 確かにそれを少し移動したり、 数秒を超えます。 またはのコース 分、オッズは、それはありませんです に固執するつもり 全く同じ位置。 換言すれば、我々 substractionを取ることができ、 あなたがテストされており、 その機能を打破 これらの構成要素の成分へ。 そして、それは本当に何フォルクスワーゲンのです エンジニアは何とかしました。 彼らは意識的にソフトウェアを書きました 車がテストされているかどうかを検出、 そのため、あまり他のを発します 通常の方法で放出します。 そして、ここでの問題は、あまりにも、 ソフトウェアがないということです あなたが本当にしない限り見ることができるもの あなたは、いわゆるソースコードを持っています。 そのように二つの異なるタイプがあります code--、少なくとも2つの異なるタイプ 世界のコードの。 ソースと呼ばれるものがあります 何とは違っないコード、 私たちは、ソースコードを書いてきました。 これは、で書かれたソースコードであります 擬似コードと呼ばれる言語、 これだけで何か英語に似ています。 それの正式な定義はありません。 しかし、C、およびJava、C ++、それら すべての形式言語であることを、 あなたがそれらに書くとき、あなたは何を持っています ソースコードを含むテキストフ​​ァイルです。 しかし、またに何かがあります 世界はマシンコードと呼ばれます。 残念ながら、機械コード、 ちょうど0と1です。 だから、マシンコードは何ですか マシンはもちろん、理解しています。 ソースコードは人間が理解するものです。 そして、一般的ではなく、 常に、プログラムが存在します プログラマが使用することは、ソースを取ります コー​​ドとマシンコードに変換します。 そして、そのプログラムは、 一般的に、コンパイラと呼ばれます。 だからあなたの入力はソースコードであり、 あなたの出力は、マシンコードです コンパイラはの作品です そのプロセスを行うソフトウェア。 だから、これは実際にうまくマッピングします 私たちの入力、アルゴリズム、出力。 しかし、これは非常に特定の化身であります それを言うためにあるもの、の、 あなたは、フォルクスワーゲンのの1を所有している場合でも この有罪である車、 あなただけで開くことができないようです フードまたはユーザーズマニュアルを開いたり、見て ソースコードで、時間によって理由 それは、あなたの私道に車を達します それはすでにです 0と1に変換されます。 そして、それは、不可能、非常に難しいことではありません しかし、非常に難しいものの多くを収集するために ただ見てから 0と1の基礎となります。 だから場合は、最終的には、それを把握することができます あなたはどのようにマシンを理解しますoperates-- あなたが理解していれば、インテルはinside-- インテル・アーキテクチャー、 しかし、それは非常に時間がかかります。 とにもそこに、あなたがかもしれません すべてを見ることができません コー​​ドは実際に行うことができます。 このまたはこれについての質問 より一般的にはプロセスの種類は? そして実際に、私たちは、この議論を結び付けることができます アップルの昨日の議論に。 これは、あまりにも、である理由FBIできないだけを 容疑者の携帯電話に行くと見えます そして、のために、コードの行を見つけます 例えば、パスコードを有効にします またはその80ミリ秒の遅延を有効にします。 時間によってそれはですので、 仲間のiPhone上で、 それはすでにです 0と1に変換します。 さて、私たちのためにここに一時停止してみましょう 計算の考え方を見てください。 なぜ我々は15分間の休憩を取ることはありません。 私たちが戻ったときと、我々はよ プログラミングを見てみましょう 自身といくつかをマップするために開始 これらの高レベルの概念の 遊び心のある場合は、実際に、 プログラミング言語。