字幕表 動画を再生する 字幕スクリプトをプリント 翻訳字幕をプリント 英語字幕をプリント DAVID MALAN: Welcome back, everyone. DAVIDマラン:再びようこそ、みんな。 So yesterday, you'll recall that we focused on these topics here. だから昨日、あなたはそれを思い出し 我々はここで、これらのトピックに焦点を当てました。 So we had four overarching topics-- privacy, security, and society; だから我々は、4つの包括的なtopics--を持っていました プライバシー、セキュリティ、および社会; internet technologies; cloud computing; and ultimately, web development. インターネット技術。クラウドコンピューティング; そして最終的に、ウェブ開発。 >> Did anyone have the bandwidth or the time >> 誰もが持っていました 帯域幅または時間 to watch a little John Oliver last night? 少しジョンを見て オリバーの最後の夜? It's actually pretty amusing, if not a little frightening. それは、実際にはかなり面白いです そうでない場合は少し恐ろしいです。 Any questions on anything we did yesterday? 何でも上の任意の質問 我々は昨日やりましたか? Any clarifications? どれ明確化? Any questions that you want to make sure we touch on today in some form? あなたがしたい任意の質問 我々は何らかの形で今日に触れて確認してください? So clean slate. だから、白紙の状態。 >> So what's on the agenda for today? >> だから、今日の議題に何ですか? So I thought we'd begin today with a look at what's generally だから私は、我々が今日始めるだろうと思っていました 一般的に何を見てと known as computational thinking-- at the risk of oversimplifying, thinking で計算thinking--として知られています oversimplifyingの危険性、思考 like a computer, perhaps thinking like an engineer, コンピュータのような、おそらく エンジニアのように考え、 and trying to start to organize your thoughts とを開始しようとしています 自分の考えを整理します or to give you a better sense of what's involved in actually commanding またはあなたのより良い感覚を与えるために どのような実際に指揮に関与しています a computer to do something by way of programming. 何かをするコンピュータ プログラミングを介して。 And we'll keep it at a pretty high level, pretty much English, そして、私たちはかなりでそれをしておこう ハイレベル、ほとんど英語、 but try to use of familiar examples to formalize how しかし、おなじみの使用しようとします どのように定式化する例 you would go about solving problems. あなたが問題を解決するに行きますか。 >> And we will revisit some CS topics, like abstraction, >> そして、我々はいくつかのCSを再訪します トピック、抽象化のような、 which came up a couple of times yesterday, これは、カップルを思いつきました 時間の昨日、 algorithms, and then representation. アルゴリズム、およびその後の表現。 And that's where we'll begin today in just a moment. 私たちは始めましょうどこにそしてそれはです 一瞬で、今日。 Then we'll take a look at programming. その後、我々は、プログラミングを見てみましょう。 We'll take a look at some fundamental constructs 我々はいくつかを見てみましょう 基本的な構成物 with which you might be familiar and might even find quite intuitive. これであなたはよく知っているかもしれません さらには、非常に直感的かもしれません。 >> We'll look, in fact, at a sample programming >> 私たちは、実際には、見ていきます、 サンプルプログラムで environment that's very accessible, very playful, and indeed targeted 非常にアクセス可能な環境、 非常に遊び心、そして実際に標的に for ages 12 and up. 12歳以上のため。 We will spend a few minutes there and then take things to a lower level 私たちはそこに数分を過ごすことになります そして、次に低いレベルに物事を取ります and actually talk about some of the algorithms and data structures, そして実際のいくつかについて話 アルゴリズムとデータ構造、 so to speak, that programmers typically use そうこと、話すこと プログラマは一般的に使用します to solve problems far more efficiently than you might はるかに多くの問題を解決します 効率的にあなたがかもしれないより be able to do without them altogether. 完全にそれらなしで行うことができます。 Then after lunch, we'll take a look at technology stacks, which is just そして昼食後、私たちは見てみよう ちょうどであるテクノロジー・スタック、で a fancy way of saying collections of technologies のがファンシーな方法 技術のコレクション that you might use to solve some problem. あなたが使用するかもしれません いくつかの問題を解決します。 And we'll talk about the alphabet soup of languages that exist today-- そして、我々はアルファベットについて話しましょう 存在する言語のスープtoday-- Java and Python and C++ and PHP and Ruby and all sorts of other things. JavaやPythonやC ++やPHPと Rubyと他のもののすべての種類。 >> We'll take a look briefly at design patterns. >> 私たちは、簡単に見てみよう デザインパターンで。 Programmers, over time, have adopted methodologies プログラマ、時間をかけて、 方法論を採用しています that tend to help them solve problems more readily. 彼らを助ける傾向にあること より容易に問題を解決します。 When you start to see yourself writing the same kind of code again and again, あなたが書いて自分自身を見始めるとき 何度も何度も同じ種類のコード、 people formalize those repetitions and ascribe names to them 人々は、これらの繰り返しを正式 そしてそれらに帰名 and then use them and promote them, ultimately. その後、それらを使用して 最終的に、それらを推進しています。 And we'll talk a little bit about mobile strategies, そして、私たちは少し話をしましょう モバイル戦略について、 like what does it mean to actually make a mobile app or a mobile website. それが実際に何を意味しているような モバイルアプリやモバイルウェブサイトを作ります。 Do you do it for Android? あなたは、Androidのためにそれを行うのですか? Do you do it for iOS? あなたはiOSのためにそれを行いますか? Do you do it for both of those? あなたはそれらの両方のためにそれを行いますか? And what are the trade-offs? トレードオフは何ですか? And then finally, we'll take a look web programming, which そして最後に、我々は取りますよ ルックWebプログラミング、どの is a collective term really describing any time 総称であります 本当にすべての時間を記述する you write software that's meant to run on the web, あなたはだソフトウェアを書きます ウェブ上で実行することを意味し、 whether on phones or desktops or laptops. 携帯電話でかどうか デスクトップやラップトップ。 We'll take a brief look at databases and the design 私たちは、簡単に見てみましょう データベースとデザイン therein, if only because almost any interesting web-based application その中で、唯一のため、ほぼすべての場合 面白いWebベースのアプリケーション these days has some kind of database. これらの日には、データベースのいくつかの種類があります。 Otherwise, it would just be static content. それ以外の場合は、希望 ちょうど静的コンテンツです。 And a database allows you to make changes over time, whether yourself そして、データベースは、あなたが行うことができます 経時変化、自分自身かどうか or from users. またはユーザから。 And we'll consider how you would go about designing そして、私たちはどのように検討しましょう 設計については行くだろう that database and the kind of jargon that might come up in an engineer's そのデータベースと専門用語の種類 それはエンジニアの中に出てくる可能性があります discussion at a white board when actually implementing ホワイトボードでの議論 実際に実装するとき an app for the first time. 初めてのアプリ。 >> We'll talk briefly about APIs, useful services >> 私たちは、について簡単に説明します APIは、有用なサービス that you can use to stand on the shoulders of others, whether companies あなたが上に立つために使用できること 他の人の肩、企業かどうか or individuals, and solve your own problems more quickly. や個人、そしてあなたを解決 より迅速に自身の問題。 And then we'll dabble perhaps a bit with JavaScript, そして、我々は、おそらく手を出しますよ JavaScriptで少し、 a programming language that's used both in browsers these days, but also 使われているプログラミング言語 ブラウザの両方で、これらの日だけでなく、 in servers. サーバインチ And perhaps, we'll revisit, time permitting, おそらく、我々はよ 、時間が許せば、再訪 some of the hands-on web stuff we did yesterday and integrate the two ハンズオンウェブスタッフたちの一部 昨日と2を統合 together before we adjourn. 一緒に私たちは休会前に。 >> So with that-- what's ahead-- is there anything missing that you >> だからthat--でahead--は何ですよ そこにいることを欠落しているもの would like to make sure we insert and touch on at some point. 我々は挿入を確認してくださいしたいと思います そして、いくつかの点で上にタッチします。 If it's springs to mind, bring it up before long. それは心にバネの場合は、 やがてそれを持ち出します。 But why don't we begin with a look at computational thinking. しかし、なぜ我々は始まりません 計算の考え方を見てください。 >> And let me propose that computational thinking is, again, >> そして、私はそれを提案してみましょう 計算の考え方は、再び、あります sort of the high level description of what a computer scientist might do. 高レベルの記述の一種 コンピュータ科学者は何を行う可能性があります。 And indeed, let's start with three ingredients that そして実際、それでは、始めましょう その3成分と might go into computational thinking. 計算の考え方に行くかもしれません。 This is just one way of describing it. これは、それを説明するだけで1つの方法です。 We could certainly define this in any number of ways. 我々は確かに定義することができます 任意の数の方法でこれ。 >> But let me propose, for the sake of today, >> しかし、私が提案してみましょう 今日のために、 that the world's problems, all of the world's problems, 世界の問題という、 世界の問題のすべて、 when approached by a computer scientist could により近づいたとき コンピュータ科学者でし be viewed as what we'll call inputs, which 私たちがよと見ること 入力を呼び出し、その need to get fed into what we'll call algorithms, which then yield outputs. 私たちが呼ぶものに送り込ま取得する必要があります その後、出力が得られるアルゴリズム。 In other words, the entire world of problem-solving I claim 換言すれば、全体の 私が主張する問題解決の世界 can be distilled into these three ingredients. 蒸留することができます これらの3成分。 So what do I mean by inputs? だから私は入力によって何を意味するのですか? Inputs is just what you're handed in order to solve. 入力は、あなたがしているものばかりです 解決するために手渡しました。 >> For instance, here's an old school problem. >> 例えば、ここです 古い学校の問題。 If I have a phone book here and I want to look something into it, 私はここに電話帳を持っている場合と、 私はそれに何かを見てみたいです、 this is my input. これは私の入力です。 I have 1,000 or so pages in a phone book. 私は千かそこらを持っています 電話帳のページ。 This is the input to my problem. これは私の問題に入力されます。 And I want to find something like Mike Smith, so a friend そして、私は何かを見つけたいです マイク・スミスので、友人のような whose name and number is hopefully in this address book. その名前と番号です うまくいけば、このアドレス帳インチ >> This is before the days of cell phones, so I can't just search for it. >> これは、セルの日前であります 電話は、私はちょうどそれを検索することはできません。 So I have to do it old school and actually search だから私はそれが古いしなければなりません 学校と実際に検索 these inputs for some answer. いくつかの答えをこれらの入力。 And that answer is just going to be called the output. そして、その答えはちょうど起こっています 出力と呼ばれていました。 So the input is the phone book. だから入力は電話帳です。 The algorithm is whatever set of steps I use to find Mike Smith. このアルゴリズムは、どのようなセットです 手順は、私がマイク・スミスを見つけるために使用します。 And the output is, hopefully, Mike Smith's phone number. 出力は、うまくいけば、あります マイク・スミスの電話番号。 And this then would be just representative of most any problem そして、これはその後、ちょうどだろう ほとんどすべての問題の代表 to with you are handed inputs and want to produce outputs. あなたが入力渡されるとします そして、出力を生成します。 >> So before we consider the process by which we can solve that problem, >> だから我々は、プロセスを検討する前に、 これによって、私たちはその問題を解決することができ、 finding Mike Smith and something like that, マイク・スミスを発見し、 そんな感じ、 let's consider the first and the last-- inputs and outputs. それでは、最初のを考えると、 last--入力と出力。 Physically, of course, the input here is a whole bunch of paper glued together 物理的には、もちろん、ここに入力 紙の全体の束を一緒に接着されています in the form of a phone book. 電話帳の形態です。 But computers, of course-- laptops and desktops and even phones しかし、コンピュータ、course--ノートパソコンのを デスクトップ、さらには携帯電話や these days-- those are electronic devices. これらdays--ものであり、 電子デバイス。 >> And at the end of the day, what's the only input to a computer? >> そして、一日の終わりに、何 コンピュータへの入力のみ? Well, it's something like this power cord here. まあ、それはのようなものです ここでは、この電源コード。 I plug it into the wall, and I get a flow of electrons, 私は壁にそれをプラグインし、 私は、電子の流れを取得し、 which allows me to run the machine. これは私がマシンを実行することができます。 Or maybe those electrons are created by way of my battery. それとも、それらの電子があります 私のバッテリーの方法によって作成されました。 But at the end of the day, that's the only thing going into my laptop. しかし、一日の終わりに、それはです 唯一の事は私のラップトップに入ります。 And so much interesting stuff is ultimately そしてそんなに面白いです ものは、最終的です coming out, whether by way of the printer かどうか、出てきます プリンタを介して or the screen or audially or the like. または画面やaudiallyなど。 >> So if all we have as our fundamental input to a computer >> すべてのであれば、私たちは私たちのように持っています コンピュータへの基本的な入力 is electricity, so just electrons going in and or out, 電気である、これだけ 電子は、中およびまたは外出します and so how can we use that input to actually represent information? ので、どのように我々は、その入力を使用することができます 実際に情報を表現するには? In other words, how do we get from a simple flow of electricity 言い換えれば、どのように我々は入手できますか 電気の簡単な流れから to representing actual numbers or actual letters 実際の表現に 数字または実際の文字 or actual images on the screen or actual movies or e-mails 画面上または実際の画像 実際の映画や電子メールや or any number of these higher level concepts, またはこれらの任意の数の より高いレベルの概念、 if you will, that at the end of the day somehow 可能ならば、その時 何とか一日の終わり have to be stored in this electronic mechanical device このように格納されるています 電子機械装置 using only those simple ingredients-- electrons coming in and out? だけの簡単なingredients--を使用して、 電子は中と出てきますか? >> So it would seem that, in the simplest form, >> だから、それを思わ、 最も単純な形で、 the only kind of states I have in my world, so 状態の唯一の種類 私は、私の世界を持っています to speak-- conditions in my world-- is either 条件をspeak--します 私world--のいずれかであります I have electrons flowing, electricity flowing, or I do not-- so on, off. 私は電子は、電気を流してきました 流れる、または私はオフ、というようにnot--行います。 And let's formalize on and off, as a computer scientist might, そして、のは、オンとオフ正式てみましょう コンピュータ科学者のかもしれませんが、 with just 1 and 0. 1と0だけで。 Let's just describe some arbitrary but consistent number to it. ちょうどいくつかの任意のを説明してみましょう しかし、それへの一貫した数。 1 means on, 0 means off. 1は上の意味、0はオフを意味します。 Or you might also view this as true means on and false means. それとも、また、としてこれを見るかもしれません 上の真の手段と偽の手段。 You could also do black and white or red and blue. また、黒行うことができます そして、白または赤と青。 You just need two descriptors. あなただけの2つの記述子が必要です。 And a computer scientists would generally just use 0 and 1. そして、コンピュータ科学者は、希望 一般的にちょうど0と1を使用します。 >> So if that's the case, my only alphabet is consisting of 0's and 1's, how >> だから、その場合は、私の唯一のアルファベット 0と1からなるが、どのように could I possibly get to even the number 2 in a computer, let alone the number 3 私はおそらく数を均等に得ることができます コンピュータ、ましてや数3の2 or a letter of the alphabet or an image or a movie? またはアルファベットの手紙 あるいは画像やムービー? How do we sort of bootstrap ourselves from this basic principle どのように我々は一種のブートストラップありません この基本原理から自分自身 of 0's and 1's and actually represent something more interesting? 実際には0と1との もっと面白いことを表していますか? >> Well, let's put that question on hold for just a moment >> さて、その質問を入れてみましょう ちょっと保留 and consider something hopefully familiar, そして、何かを考えます うまくいけばお馴染みの、 even if you haven't really thought about it in any detail for 10, 20, 30, 40, 50 あなたは本当にについては考えていない場合でも、 それ10、20、30、40、50のための任意の詳細に more years. より多くの年。 This is what? これは何? How would you pronounce that? あなたはそれをどのように発音しますか? Not a trick question. ていないトリックの質問。 A number, but what is it? 数は、しかし、それは何ですか? 1, 2, 3, or 123. 1、2、3、または123。 And I liked how you said 1, 2, 3, because that's one way of viewing it. あなたが言ったかと私は言っています1、2、3、 それはそれを見る一つの方法だからです。 1, 2, 3, it's a sequence of three symbols. 1、2、3、それは配列情報 3つのシンボルの。 It's pictures that we now have words for. それは私たちの写真です 今の言葉を持っています。 And if you sort of read them all together, a typical human in English そして、あなたは一種のそれらすべてを読めば 英語で一緒に、典型的な人間 would say 123. 123を言うでしょう。 And that's sort of a higher level concept, そして、それは一種のです より高いレベルの概念、 feels like a reasonably big number. 合理的に大きな数のように感じています。 >> But how did we get there? >> しかし、どのように我々はそこに着くのですか? Well, it might be a while since you've thought about it like this, まあ、それはそれ以来しばらくかかるだろう あなたは、このようにそれについて考えてきました but back in my day, I kind of learned this しかし、戻って私の一日で、I 種類のこのことを学びました as the 1's column, the 10's column, and the 100's column. 1の列として、10代 列、および100の列。 So as Lakisa says, it is 1, 2, 3, but it's also 123. Lakisaが言うように、それはあります 1、2、3、それはまた、123です。 But how do we get from the former to the latter? しかし、どのように我々は、から入手できますか 前者と後者? >> Well, you would typically do in the 100's column, I have a 1. >> さて、あなたは、一般的に行うだろう 100の列は、私は1を持っています。 So that's like saying 100 times 1. だから、100倍の1を言ってようなものです。 And then in 10's column, I have 2. そして10のコラムで、私は2を持っています。 So that's like saying 10 times 2. だから、10回2を言ってようなものです。 In the 1's column, I have 3. 1のコラムでは、私は3を持っています。 So that's like saying 1 times 3. だから、1回3を言うようなものです。 >> And if I add these things together, this, of course, >> そして、私はこれらの事を追加した場合 一緒に、この、もちろん、 is 100 plus the 10 plus 3. 100プラス10プラス3です。 And oh, that's why I get this higher level notion of 123. そして、私はこれを取得なぜああ、それはです 123のより高いレベルの概念。 It's just basic math, whereby these symbols have weights to them, if you それはちょうど基本的な数学ですが、それによってこれらの シンボルは、それらに重みを持っているあなたの場合 will, placeholder or column values. 、プレースホルダまたは列の値になります。 And once I multiply everything out, I get this number. そして、私はすべてを掛けたら、 アウト、私はこの番号を取得します。 >> So how many of you know how to speak binary-- 0's and 1's-- like a computer? >> だから、あなたが知っているどのように多くの方法を話します binary-- 0とコンピュータのよう1's--? OK, perfect, no one, or none of you think you do. OK、完璧な、誰もいない、または あなたのどれもあなたが思うません。 But I would claim you actually know this already. しかし、私はあなたを主張するだろう 実際に、すでにこのことを知っています。 We just need to sort of tweak our mental model a little bit. 私達はちょうど一種の微調整する必要があります 私たちのメンタルモデルを少し。 But the process is exactly the same. しかし、このプロセスはまったく同じです。 >> Let me leave this one up there and instead pull this down for a moment. >> 私はそこまでこの1を残してみようと 代わりに、一瞬のためにこれをプルダウン。 In the world of computers, we only have 0's and 1's. コンピュータの世界では、 我々は唯一の0と1があります。 And so the thing that's going to change is what? ですからことだという 変更するために何をされて行くの? Well, in my human world, the decimal system, dec meaning 10, さて、私の人間の世界では、 十進法、12月の意味10、 I have how many digits at my disposal? 私は私の処分でどのように多くの数字を持っていますか? 10, right? 10、右か? 0 through 9, of course. 0から9までのコース。 >> And that's why we have the 10's place and the 100's place. >> そして、私たちが持っている理由です 10の位と百の位。 Where is that coming from? それはどこから来ていますか? Well, this is 10 to the power of 0. まあ、これは、0のパワーに10あります。 This is 10 to the power of 1, 10 to the power of 2, and so forth. これは、10 1の電源10であります 2乗など。 You just keep multiplying your columns by 10, starting off with just 1 あなたは自分の列を乗じておきます 10によって、ちょうど1で発進 in the rightmost one here. ここでは右端の1インチ >> So in the world of computers, if you only >> の世界ではそのように コンピュータ、あなたの場合のみ have binary-- bi meaning 2-- or 0's and 1's, we just binary--バイ意味を持っています 2--または0と1、ちょうど私達 really need to change the base of that math. 本当に変更する必要があります その数学のベース。 So in other words, now we'll just have the 1's column and the-- 換言すれば、今、私達はちょうどよ 1の列を持っているとthe-- where is this going-- the 2's column, the 4's column, and maybe beyond. これが2の列をgoing--はどこにあり、 4のカラム、そしておそらく超えました。 Why is that? 何故ですか? Well, this is 2 the 0-th power. まあ、これは0乗2です。 This is 2 the 1. これは2 1です。 This is 2 to the 2, and so on. これには、2から2である、と。 >> So whereas here, we have 1, 10's, 100's, 1,000's, 10,000's, 100,000's, 1 >> ここで、一方だから、私たちは1、10年代を持って、 100の1,000の10,000の10万の、1 millions, and so forth, here we have 1, 2, 4, 8, 16, 32, 64. 何百万人など、ここで 我々は、1、2、4、8、16、32、64を有します。 You just keep multiplying by 2, instead of keep multiplying by 10. あなただけの2を乗じておきます、 代わりに10を乗じておきます。 So now, if the goal at hand is to represent だから今、目標であれば 手が表すことです numbers using only 0's and 1's, let's consider how we get there. 唯一の0と1を使用して、数字、 我々はそこに着く方法を考えてみましょう。 >> This, of course, is the pattern 0 0 0, but what number conceptually >> これは、もちろん、パターン0であります 0 0が、何数概念的 does it represent? それが表すのでしょうか? Well, 4 times 0 plus 2 times 0 plus 1 times 0, let's add those together. さて、4回0プラス2回0プラス 1回0は、ご一緒にそれらを追加してみましょう。 4 times 0 is, of course, 0, plus 2 times 0 is, of course, 0 plus 1 times 0 4時間0は、当然、0であり、プラス2 時間0は、もちろん、0プラス1回0であります is, of course, 0. もちろん、0です。 So ah, this represents the number we humans know as 0. だから、ああ、これが表します 数私たち人間は、0として知っています。 >> Well, now, let's very quickly fast forward. >> さて、今、非常にしてみましょう すぐに早送り。 If I'm instead not representing 0 0 0, but let's do 1 0 1, 私の代わりに表さないよ場合 0 0 0が、それでは、1 0 1をやらせます、 that might be how Lakisa, earlier, would just pronounce it 1 0 1. それは如何でしょうかLakisa、以前、 ちょうど1 0 1それを発音でしょう。 But now, how do we take it to the higher level the number we humans might know? しかし、今、どのように我々はそれ以上にそれを取りますか 私たち人間が知っているかもしれない数を平準? So what is this number? だから、この番号は何ですか? It's 5, the number we know as 5. これは、5、私たちは5のように知っている数です。 >> Well, why is that? >> まあ、それはなぜですか? Well, we can really sort of walk through it methodically さて、私たちは本当に一種の缶 念入りにそれを歩きます 4 times 1, 2 times 0, 1 times 1. 4回1、2回0、1回1。 Add those together, so this is 4 plus 0 plus 1. そう、一緒にそれらを追加します。 これは4プラス0プラス1です。 And that's, indeed, 5. そしてそれは、確かに、5です。 So it's getting a little tedious now doing the arithmetic again and again. だから、今、少し退屈になっています 何度も何度も計算を行います。 But the process is exactly the same. しかし、このプロセスはまったく同じです。 >> The only thing that has changed in our world >> 持っている唯一のもの 私たちの世界に変更 is that our columns are 1, 2, 4, 8, 16, and so forth, instead of 1, 10, 100, 我々の列は1、2、4、8、16であることであり、 等、代わりに1、10、100、 1,000. 千。 And that's just because our alphabet has shrunk from 0 through 9 to just 0 to 1. 私たちのアルファベットを持っているので、それはちょうどです ちょうど0〜1に0から9まで縮小し。 >> So as a little quiz here, how would you represent the number 7 in binary? >> ここで少しクイズ、どのようにと同じように、それで あなたはバイナリで数7を表しますか? 0? 0? Well, 0, you mean 0 0 0? まあ、0、あなたは0 0 0意味ですか? Say it again , Karina. 、再びカリーナをそれを言います。 Perfect. パーフェクト。 Why is that? 何故ですか? It's effectively 4 plus 2 plus 1. それは効果的に4プラス2プラス1です。 So good. とても良い。 >> How do we represent a little another-- how about number 2? >> 我々は少しを表現するにはどうすればよいです another--方法数は約2? Close, but backwards. 閉じるが、後方。 So what is this? だから、これは何ですか? Is 4 plus 1, so that's 5 again. 4プラス1であるので、それは再び5です。 >> So what's-- I'm sorry, Karina? >> だから私は申し訳ありませんwhat's--、カリーナ? 0 1 0. 0 1 0。 0 1 0 would be 2, because again, even if it sort of doesn't jump out at you, 0 1 0はあっても、理由再び、2となります それは一種のあなたに飛び出すていない場合は、 just do the math. ただ計算を行います。 4 times 0, 0, 2 times 1 is 2, 1 times 0 is 0. 4回0、0、2回 図1は、0 0 1 2倍です。 So this is the number we know as 2. だから、これは我々が2として知っている番号です。 >> How about the number 8? >> どのように数約8? Hm? フム? Good. 良い。 So we kind of need another placeholder. だから我々は一種の別のプレースホルダが必要です。 We need 1 0 0 0. 私たちは、1 0 0 0を必要としています。 And that's true of our sort of old school decimal system. そして、それは私たちの並べ替えのは事実です 古い学校の小数点システムの。 How do you represent the number 1,000? どのように数千を表しているのですか? >> Well, you would seem to be kind of in a tough spot, >> さて、あなたはあると思われます 種類のタフなスポットで、 if ask you to represent the number 1,000, 表現するためにあなたを求める場合 数千、 because even if you give yourself like 9 of these, 9 of these, 0 of these, あなたのように自分自身を与える場合もあるため これらの9、これらの9、これらの0、 which is the biggest number you have, you didn't quite get to 1,000. その最大の数であるあなた 持っている、あなたはかなり千に取得できませんでした。 So if you 1,000, you just need another position, so that you can do 1 0 0 0, だから千場合、あなただけの別のものを必要とします 位置、あなたは1 0 0 0を行うことができるように、 ergo the number 1,000. エルゴ数千。 >> So now, let's map this sort of conceptual discussion back to hardware, >> だから今、のは、この種のをマッピングしましょう バックハードウェアへの概念の説明、 where again, the input was just this little power cable, electricity 再び、入力がちょうどあった場所 この小さな電源ケーブル、電気 coming in and flowing out. 入ってくると流出します。 And so for that to be mapped from here to there, well, what do we really need? そして、その結果については、こちらからマッピングされます そこに、よく、私たちは本当に何が必要なのでしょうか? Well, you can think of being inside of a computer, a whole bunch of light bulbs, さて、あなたは内であることを考えることができます コンピュータ、電球の全体の束、 if you will. 可能ならば。 They're really called transistors. 彼らは本当にトランジスタと呼ばれています。 And transistors are just switches that can either be on or off. トランジスタは単なるスイッチです それは、オンまたはオフのいずれかとすることができます。 So you can think of a transistor that's on だから、考えることができます 上だトランジスタ is allowing electricity to flow and a transistor that's off as stopping 電気が流れることを可能にし、 停止などオフだトランジスタ electricity from flowing. 流れるから電気。 And rather than take over the lights here, そして、いうより取ります ここではライトオーバー、 why don't I do this sort of new school style. 私はこの種をしない理由 新しい学校のスタイルの。 So this might be a 1, a flashlight being on, only barely though. だから、これは、懐中電灯1であるかもしれません かろうじてしかし、上にあります。 And this might be a 0, and now it's off. そして、これは0かもしれないが、今ではオフです。 >> So using this physical device, I can now represent the binary system. >> だから私は、この物理デバイスを使用して、 今バイナリシステムを表すことができます。 I just need two states. 私はちょうど2つの状態が必要です。 It doesn't matter what color it is or what it is. これは、何が問題ではありません。 それがあるか、それが何であるかを色。 All that matters is that I have one state on and another state off. 重要なのは、私が持っているということです 1上の状態と別の状態をオフにします。 So using my phone here, how do I represent the number we know as 0? だからここに私の携帯電話を使用して、どのように私を行います 0のように私たちが知っている数を表しますか? Or put equivalently, what number am I representing now? または、等価的に何を置きます 数は今私を表現するのですか? 0, because the device is off. 0、デバイスがオフになっているからです。 >> And if I do this? >> そして、私はこれを行う場合はどうなりますか? And now, how do I represent the number 2? そして今、どのように私はやります 数2を表しますか? Can I borrow your phone here, as we did yesterday? 私はあなたの電話を借りることができます ここで、我々は昨日のように? So let's see, so if I want to represent the number 2, is this the number 2? 私が表現したいので、もしだから、見てみましょう 数2、これは2番ですか? No. いいえ。 What number am I accidentally representing here? 何番私が誤っています ここで表しますか? This is actually the number 3. これは実際には数3です。 >> So which one do I want to turn off? >> だから、これは1、私はオフにしたいですか? The black phone or-- well, if they're-- black phone or the white phone? よくor--黒電話、they're--場合 黒電話や白の電話? The white phone. 白い電話。 So if I turn this off and we line it up over here, we have a 1 だから私はこれをオフにし、我々場合 こっちラインそれを、私たちは1を持っています in the 2's place and a 0 in the 1's place. 2の代わりにと 1の代わりに0。 And so I'm now representing the number 2. だから私は今です 数2を表します。 And this, Of course, would be the number 3, because now both of these lights これは、もちろん、数字であろう 3、これらのライトの今両方の理由 are on. 上にあります。 >> And I'll stop here, but it stands to reason >> そして、私は、ここで停止します それは理にかなっています if I want to represent the number 4 or 8 or higher, 私が表現したい場合 番号4または8以上、 I'm going to need more phones. 私はより多くの携帯電話を必要とするつもりです。 But that's all that's going on. しかし、それは起こっていることすべてです。 So if you've ever heard that inside of a-- thank you-- computer だから、あなたが今までと聞いていた場合 A--の内側you--コンピュータに感謝 is millions of transistors, that's just millions of tiny little switches. 数百万のトランジスタである、それはです 小さな小さなスイッチのちょうど百万人。 And they're not light bulbs that turn on and off, そして、彼らは光じゃありません オンとオフの球根、 but they do either allow electricity to flow somewhere or stop it. 彼らは電気を許可するかのどちらか どこかに流れたり、それを停止します。 And so there's your two states-- on or off, on or off. だからあなたの2があります オンまたはオフ、オンまたはオフにstates--。 >> So we would seem now to have this ability >> だから我々は今と思われます この能力を有すること to represent this concept that we'd like in actual hardware. この概念を表現すること 私たちは、実際のハードウェアにしたいと思います。 But all we have now is the ability to represent numbers it would seem. しかし、私たちが今持っているすべての能力であります 数字を表すために、それは思われます。 So how do we go about representing letters of the alphabet, which だから我々は、表現についてどのように行くのですか アルファベットの文字、どの feels like the next sort of feature you would want to add to a modern computer 機能の次の一種のように感じます 現代のコンピュータに追加したいと思います once you have numbers? あなたは数字を持っていたら? >> And indeed, if you think about it, historically, computers >> そして実際、あなたが考える場合 それ、歴史的に、コンピュータ were introduced really to serve as calculators numerically. 役立つように本当に導入されました 数値計算器。 But of course, these days, they do much more. もちろん、これらの 日、彼らはより多くを行います。 Even when they boot up, you typically see one or more words. 彼らは、あなたを起動した場合でも 典型的には、1つまたは複数の単語を見ます。 So how do you represent words, if all you have is, again, それでは、どのように言葉を表しますか、 あなたが持っているすべての場合は、再び、 electricity at the end of the day, or equivalently 0's and 1's? の終わりに電気 日、または等価的に0と1の? >> Yeah. >> うん。 Yeah, I mean, we kind of did this yesterday in some form, ええ、私は意味、私たちは一種のでした この昨日何らかの形で、 where at some point, I think I arbitrarily どこかの時点で、 私は私が任意に思います said that, if we want to represent the letter A, we could just call that a 1. 私たちが表現したい場合は、と言いました 文字A、私達はちょうど1ことを呼び出すことができます。 It was in the context of cryptography, where we just needed some kind of code, これは、暗号化に関連していました 私たちは、コードのいくつかの種類を必要な場所で、 some kind of mapping. マッピングのいくつかの種類。 >> So maybe A will be represented as a 1, and B will be represented as a 2, >> そのため、おそらくAはとして表現されます 1、及びBは、2のように表されます and Z will be represented as a 26, for instance. そしてZが表されます 例えば26、など。 And then the only caveat is that if I'm going to encode letters in my emails そして唯一の注意点は、私があればということです 私のメールの文字をエンコードします or in my text messages as numbers, you all または私のテキストメッセージで 数字として、あなたのすべて have to agree to use the same set of conventions. 使用することに同意する必要があります 規則の同じセット。 And indeed, the world has done exactly that. そして実際、世界 まさにそれを行っています。 >> There is a system in the world called ASCII, American Standard >> 世界のシステムがあります 呼ばれるASCII、アメリカンスタンダード Code for Information Interchange, which is simply a decision some years 情報交換用コード、 これは、単にいくつかの年の決定であります ago that the humans made that decided that A is going to equal, not 前人間がいることを作りました Aが、等しくないために起こっていることを決定しました 1, 2, and 26, and so forth-- it's a little different-- but 65, 66, 67. 1,2、および26、ならびにそれですforth-- 少しdifferent--が、65、66、67。 And I'll pull up a chart in just a moment. そして、私はプルアップします 一瞬のチャート。 But it's arbitrary. しかし、それは任意です。 But it doesn't matter that it's arbitrary. しかし、それは問題ではありません。 それは任意だという。 The world has to just be consistent. 世界はちょうど一貫しなければなりません。 >> Now, more recently, there's something fancier >> 現在、より最近、 手の込んだものがあります called Unicode, because the world's kind of realized, after inventing computers, 世界の親切なので、ユニコードと呼ばれます コンピュータを発明した後に、実現の、 that there's more than well 256 symbols in the world よく以上があること 世界で256シンボル that we might want to represent, especially when you introduce 私たちが表現したいかもしれないこと、 場合は特に、あなたがご紹介 Asian languages and other symbologies that need more expressiveness than you アジア言語および他のシンボル それはあなたよりも表現力が必要 can fit in the earliest version of this code, which was called ASCII. の最も古いバージョンに合うことができます ASCIIと呼ばれたこのコードを、。 So Unicode actually allows you to use more 0's and 2. だから、Unicodeは実際にできます あなたはより多くの0と2を使用します。 In particular, you keep hearing the word bytes in society and even just 具体的には、あなたが聞いておきます ワードバイト社会であっても、単に yesterday. 昨日。 And a byte is what again? そして、バイトは何再び? >> What's a byte? >> バイトは何ですか? It's just 8 bits. それはちょうど8ビットです。 So what does that really mean? だからということは、本当に何を意味するのでしょうか? Well, that means, earlier, when we were talking about binary and I was using まあ、それは意味し、以前、我々があったとき バイナリの話と私が使っていました arbitrarily three bits when we were talking about binary-- the 1's place, 私たちがした任意の3ビット 1の位binary--について話して、 the 2's place, and the 4's place-- well, a byte just means that you're talking 2の場所、および4のplace--よく、 バイトはちょうどあなたが話していることを意味し not in units of three but four, five, six, seven eight, ない3の単位ではなく 4つ、5、6、7 8個 which gives us 8's place, 16's, 32's, 64's, and 128's. これは私たちに8の場所を提供し、 16年代、32年代、64年代、および128の。 >> In other words, a bit isn't all that useful a unit of measure, >> 言い換えれば、ビットは、すべてではありません そのメジャーの便利な単位、 because it's just like one tiny little piece of information, on or off. それはちょうど1ちっちゃいのようなものですので、 情報の一部、オンまたはオフにします。 So some years ago, the world just decided だから、何年か前に、 世界はちょうど決定します it's slightly more convenient to talk in terms of bytes, eight things at a time. それはで話をするもう少し便利です 当時のバイト、8物事の用語。 And so thus was born the notion of a byte. だからこうして生まれました バイトの概念。 And so we have eight bits here. そして、私たちはここに8ビットを有します。 >> And it turns out, too, for similar reasons, the world decided years >> そして、それは同様のために、あまりにも、判明します 理由は、世界が年を決めました ago that to represent an ASCII letter, you're going to use units of 8 bits. 前のそのASCII文字を表現するために、 あなたは8ビットの単位を使用するつもりです。 So even if you don't need that many, you're だから、そうでない場合でも、 多くは、あなたがしていることを必要とします always going to use 8 bits to represent a letter of the alphabet. いつもに8ビットを使用するつもり アルファベットの文字を表します。 And this is convenient, because then if you そして、これは便利ですが、 よろしければ、次に理由 receive a message that has a 0 0 0 1 1 1 1 0 followed by another 1 1 1 0 1 0 0 0 0 1 1を持っているメッセージを受け取ります 1 1 0は、別の1 1 1 0 1 0が続きます 0 1, so if you receive 16 bits, the world can just 0 1、あなたが16を受信した場合 ビット、世界はちょうどすることができます assume that the first 8 are one letter and the second 8 are another letter. 最初の8が1文字であることを前提としてい 第二8は、別の文字です。 >> Doesn't matter how many there are. >> あるどのように多くの問題ではありません。 It just matters that we're all consistent それはちょうどことが重要 我々はすべて一貫しています when we're interpreting these bits. 我々はこれらのビットを解釈しているとき。 And this was just random. そして、これは単にランダムでした。 That means something, but I didn't really think about what it means. それが何かを意味するが、私はしませんでした 本当にそれが何を意味するかを考えます。 >> So it's a small white lie. >> だから、小さな白いうそです。 Originally, ASCII actually used only 7 bits. もともと、ASCII 実際に7ビットのみを使用。 And the eighth bit is called extended ASCII. そして、8番目のビットがあります 拡張ASCIIと呼ばれます。 But the point is, ultimately, the same. しかし、ポイントは、最終的には、同じです。 The world generally standardized on 8 bits. 一般的に、世界 8ビットに標準化しました。 >> So this would seem to be a little limiting, because I can only >> だから、これは少しであるように思われます 私は唯一の可能性があるため、制限 represent capital A, capital B through capital Z. 、大文字のAを表し、 資本Z.を通じて資本B But indeed not, if I go to-- there's a bunch of resources しかし、実際にはない、私が行けばto-- 資源の束があります online, for instance, asciitable.com, this オンライン、例えば、 asciitable.com、この is going to be a little overwhelming at first. 少しになるだろう 最初は圧倒的。 But I'll point out what's important here. しかし、私は指摘します ここで重要なものです。 >> This just happens to be-- and I'll walk-- let's see, if I go over here. >> これは単にbe--たまたま、私'LL 私はここの上に行けば、見てみましょうwalk--。 Here is, in the decimal column, the number 65. ここでは小数であり、 列、数65。 And on the right hand column letter character, Chr, is the letter A. そして、右側の列の文字に 文字、Chr関数は、文字Aです。 And you can ignore, for now, everything in the middle. そして、あなたは今のところ、無視することができ、 途中ですべてのもの。 This is hexadecimal, octal, and an HTML code. これは、16進数で、 オクタル、およびHTMLコード。 To this site is just trying to throw a lot of information at you at once. このサイトにちょうど投げしようとしています 一度あなたに多くの情報。 But all we care about is the decimal column and the character column. しかし、我々は気にすべては10進です 列と文字列。 >> So by this logic, what is the number that the world >> したがって、このロジックにより、ものです その世界数 has decided represents a lowercase a? 小文字を表すことを決定しましたか? Yeah, 97. うん、97。 And just to confuse potentially slightly, そして、ちょうど混乱します 潜在的に少し、 what number has the world decided would represent the number 1? どのような数世界が決定しました 番号1を表すのでしょうか? Right, because we-- 49, it seems here, down in the bottom left. 右、we-- 49ので、それはそうです ここでは、ダウン左下インチ >> Now, what do I mean by that? >> 今、私はそれによって何を意味していますか? So it turns out that in computer systems, だから、ことが判明します コンピュータシステムにおいて、 there is generally a fundamental difference 一般的に存在します 基本的な違い between a number and a character. 数と文字の間。 A number is the thing we learned growing up when 番号はものです、我々 ときに育って学びました we were super young in grade school. 私たちは、小学校にスーパー若かったです。 It's things you count with. それはあなたが数えるものです。 But a character is just a shape, a glyph, so to speak, on the screen. しかし、文字だけの形状であり、 グリフは、そのように画面上に、話します。 >> Now, we humans sort of see something that looks like this. >> 今、私たち人間は一種の参照します このようなもの。 And we say, oh, that is the number 2. そして、私たちはああ、それは数2である、と言います。 But no, that's just a symbol that looks like what we know as the number 2. しかし、いや、それは見えるだけのシンボルです 我々は数2のように知っているような。 And so there's this fundamental distinction そして、これがあります 根本的な違い between actual numbers and characters. 実際の数字と文字の間。 This is a number. これは数あります。 But generally, in the context of a computer, しかし、一般的に、中 コンピュータのコンテキスト if you instead see something like this quoted-- あなたの代わりに表示される場合 このquoted--ような何か and you don't always have to see it quoted, あなたはいつもしません それが引用された参照してくださいする必要があり、 but for the sake of discussion-- if you see quotes around the number, しかしdiscussion--のためであれば あなたは、番号の前後に引用符を参照してください、 this is now a character. これは現在の文字です。 So this number 2 underneath the hood inside of a computer したがって、この数2の下 コンピュータの内部フード would be represented with a pattern of bits that represent the number パターンで表現されます 数を表すビットの 50 according to the chart online. 50オンラインチャートによると。 >> However, if a computer just sees this, this >> しかし、コンピュータの場合 ちょうどこの、これを見ています would be represented with the pattern of bit 0 0 0 0 0 0 1 0. で表現されます ビット0 0 0 0 0 0 1 0のパターン。 Whereas, this character would actually be represented as-- and now, 一方、この文字があろう 実際、as--、今表現すること I got to think a little harder-- so this character would be represented with 0 私は少しharder--を考えるようになったので、この 文字は0で表現されます 0 1-- what do I need here? 0 1--は、私がここで何が必要なのでしょうか? 0 0 1 1 0 0 1 0. 0 0 1 1 0 0 1 0。 How did I do this? どのように私はこれをしましたか? Well this is the number 50, if you multiply it out using these columns, まあこれはあなたの場合、数50であり、 これらの列を使用して、それを掛け、 this is the number 2, and so that's why there is this dichotomy. これは、数2であるので、 この二分法が存在する理由です。 >> And this is just a teaser now for features >> そして、これはちょうどです 機能のための今ティーザー that exist in programming languages that we'll touch on briefly later today. プログラミング言語に存在しています 我々は後に、今日簡単に触れるだろうと。 In programming languages, you have generally, プログラミング言語では、 あなたは、一般的に持っています but not always, things call different data types. 常にではないが、物事 異なるデータ型を呼び出します。 In other words, a programmer-- when he or she is writing, 言い換えれば、programmer-- 彼または彼女が書いている場合、 a programmer gets to decide in what format to store his or her data. プログラマは何で決定するために取得します 彼または彼女のデータを格納するためのフォーマット。 You can either store data as raw numbers, like the number 2. することができますいずれかのストアデータとして 数2のような生の数字、。 Or you can store them as strings, or sequences of characters それとも、文字列として保存することができ、 または文字の並び that you would generally express with quotes in your programming language. あなたは、一般的に発現していること あなたのプログラミング言語の引用符。 >> You can have things called-- I'll oversimplify and call them >> あなたは物事を持つことができますcalled-- 私はそれらを単純化し過ぎると呼ぶことにします real numbers-- so numbers that aren't integers like the number 2, 数字そう本当numbers--こと 数2のような整数ではありません、 but numbers like 4.56. しかし、4.56のような数字。 So real numbers can also have decimal points, だから、実数もできます 小数点を持っています、 so that's a different fundamental piece of data in a computer. そのためには、異なる基本です コンピュータ内のデータの一部。 And then you can even have other data types still. そして、あなたも持つことができます まだ他のデータ型。 So that's just a teaser really of the simplest of design decisions だから、実際のちょうどお誘いです 設計上の決定の最も簡単な that a programmer might make underneath the hood. プログラマは可能性があること ボンネットの下に作ります。 >> So any questions just yet? >> だから、何か質問はまだ? So let's try to make this a little more real. それでは、作ってみましょう このもう少し本当。 This hardware is not so much in use anymore. このハードウェアではありません 使用中のそんなにもう。 But most everyone in this room probably grew up with and still uses hard drives しかし、おそらくこの部屋の中で最も全員 で育ち、まだハードドライブを使用しています in some way. 何らかの方法で。 >> Even though most of our laptops no longer >> のたとえ最も 私たちのラップトップはもはやありません have devices that operate like this, instead laptops today generally このように動作するデバイスを持って、 代わりに、一般的に今日のラップトップ have solid state drives with no moving parts. ソリッドステートドライブを有します 可動部のありません。 And that tends to be more expensive, unfortunately, but a little bit faster そして、それはより高価になる傾向があります、 残念ながら、しかし、少し速いです and a-- well, often, a lot faster, which is one of the reasons. そして、はるかに高速、多くの場合、よくA-- その理由の一つです。 And also it doesn't generate as much heat. そしてまた、それはしていません 多くの熱を発生します。 It can be smaller, so it's generally a net positive. それはですので、それは、小さくすることができます 一般的に正味の正。 >> But this allows us to map a little more concretely what >> しかし、これは私たちがマップすることができます もう少し具体的にどのような we're talking about at the 0's and 1's level now to a physical device. 私たちは、0の時の話をしていると 物理デバイスに今1のレベル。 It's one thing for me to talk about 0's and 1's in terms それは私が話をするための一つのことです 換算で約0と1の of my phone or abstractly in terms of switches being on and off. 私の携帯電話のまたは抽象的観点から オンとオフされるスイッチ。 But what about hard drives? しかし、どのようなハードドライブはどうですか? In your laptops, if you have an older one, or in your desktop computer, あなたのラップトップでは、あなたは古いを持っている場合 1、またはデスクトップコンピュータで、 or certainly in servers today, where you have または確かにサーバーで あなたが持っている今日、 hard drives that have a terabyte of space, 持っているハードドライブ スペースのテラバイト、 4 terabytes of space, well what does that mean? スペースの4テラバイト、 よくそれは何を意味するのでしょうか? >> A hard drive with 1 terabyte of space means >> 1ハードドライブ 宇宙手段のテラバイト there's 1 trillion bytes inside of it somehow, 1000000000000バイトがあります 何とかその中の、 or equivalently 8 trillion bits inside. 内部または同等8000000000000ビット。 1 terabyte would be 8 terabits or 1 trillion bits, which 1テラバイトは8テラビットだろう または1000000000000ビット、どの means if you have a hard drive, you have somehow あなたは、ハードを持っている場合を意味します ドライブ、あなたは何とか持っています or other a trillion 0's and 1's inside of it. または他兆0の それの1の内側。 And if we just take a look at an arbitrary picture of a hard drive そして、私たちはただ見てみる場合 ハードドライブの任意の画像 representative, this is what a hard drive might typically look like inside. 代表的には、これは難しいものです ドライブは、典型的には、内部のようになります。 >> It, too, is kind of like an old phonograph player >> それは、あまりにも、一種のようなものです 古い蓄音機プレーヤー but generally with multiple records inside, so しかし、一般的で 内部に複数のレコード、そう to speak-- multiple platters, as they're called, 複数speak--します プラッタは、それらが呼び出されているように、 metal circular disks, and then a little reading head, 金属円板、および その後、少し読取ヘッド、 much like an old record player. 古いレコードプレーヤーのような多くの。 And that reading head moves back and forth and somehow reads the bits. そして、その読取ヘッドが戻り、 前後と何とかビットを読み取ります。 And what's on these platters, even though we humans can't see them, とにも、これらのプラッタ上に何 私たち人間は、それらを見ることができないものの、 either in reality or in this picture, there's tiny little magnetic particles. 実際に、またはこの絵のいずれかで、 小さな小さな磁性粒子があります。 And even if you've long forgotten how electricity works, そして、あなたは長いきた場合でも、 電気がどのように機能するかを忘れて、 a magnetic particle that's charged generally 磁性粒子 それは一般的に帯電しています has a north end and a south end-- so north and south. 北の端と南を持っています そのように北と南end--。 And so the world just decided some time ago それで世界がちょうど いくつかの時間前に決定しました that, if a magnetic protocol essentially is aligned like this, north-south, 、その本質的磁気プロトコルの場合 このように整列され、南北、 let's call that a 1. それでは、1ことを呼びましょう。 If it's instead south-north, let's just call that a 0. それは代わりに、南北の場合は、 ちょうど0ことを呼ぶことにしましょう。 And so if you have at your disposal a trillion だからあなたがでている場合 あなたの処分兆 tiny little magnetic particles-- and hopefully, 小さな小さな磁気 particles--とうまくいけば、 the hardware ingenuity in order to flip those around ハードウェアの創意工夫で 周りの人々を反転させるため as you see fit-- if you want to represent a whole bunch of 0's, you あなたがしたい場合は、fit--見るように 0の全体の束を表し、あなた just need 8 magnetic particles all aligned like this. わずか8磁性粒子を必要とします すべてのこのような整列。 And if you want to represent eight 1's, you just そして、あなたが表現したい場合 8 1の、あなただけの need 8 magnetic particles aligned back to back to back like this. 整列8磁性粒子を必要とします バックのように背中合わせにします。 >> What do I mean by the magnetic particles? >> 私は、とはどういう意味ですか 磁性粒子? Frankly, all these years later, the thing that still comes to my mind 率直に言って、これらすべての年後に、 まだ私の心に来るもの is this guy, if you grew up with this thing. もしあれば、この男であります この事で育ちました。 This is a little-- for those unfamiliar-- a これがためにlittle--です これらのunfamiliar-- A little childhood toy that has this hairless man here 小さな子供の頃のおもちゃいます ここでは、この毛のない男を持っています that has all these tiny little black magnetic particles that come with it. それはすべてのこれらの小さな小さな黒いを持っています それが付属して磁性粒子。 And using that red stick, which is just a magnet, そして、その赤いスティックを使用して、 これだけの磁石であり、 you can sort of give him a mustache or eyebrows or hair or anything on him. 並べ替えの彼に口ひげを与えることができますか 彼に眉毛や髪か何か。 So in fact, if we zoom in, for instance, this だから実際には、我々はズームインするとき、 、例えば、この中 is the kind of game you can play with Wooly Willy. あなたはこのゲームの一種であります ウーリーウィリーで遊ぶことができます。 >> And this is only to say, these are much larger magnetic particles >> そして、これは、これらの言うことだけです はるかに大きな磁性粒子であります than are actually on a hard drive, and far fewer magnetic particles. ハードドライブ上に実際にあるよりも、 そして、はるかに少ない磁性粒子。 But let's actually see then if you do have しかし、それでは、実際に見てみましょう あなたが持っていない場合 tiny magnetic particles in a hard drive, how you can actually 中に小さな磁性粒子 どのようにあなたが実際にすることができ、ハードドライブ、 use those to represent data. データを表現するためにそれらを使用しています。 >> [VIDEO PLAYBACK] >> [ビデオ再生] >> -The hard drive is where your PC stores most of its permanent data. >> -TheハードドライブはどこにあなたのPCです 店舗の恒久的なデータのほとんどを。 To do that, the data travels from RAM along それを行うには、データ 沿ってRAMから移動します with software signals that tell the hard drive how to store that data. 教えソフトウェア信号に ハードそのデータを格納する方法を駆動します。 The hard drive circuits translate those signals into voltage fluctuations. ハードドライブ回路は、それらを翻訳します 電圧変動への信号。 These, in turn, control the hard drive's moving parts-- some of the few moving これらは、順番に、ハードドライブのを制御します いくつかの移動の一部parts--移動 parts left in the modern computer. 部品は、現代のコンピュータに残さ。 >> Some of the signals control a motor, which spins metal-coated platters. >> 信号の一部は、モータを制御します これは金属被覆プラッタを回転させます。 Your data is actually stored on these platters. データは、実際に これらのプラッタ上に保存されています。 Other signals move the read/write heads to read or write data on the platters. 他の信号は、読み取り/書き込みヘッドを移動させます プラッタ上のデータを読み書きします。 This machinery is so precise that a human hair couldn't even この機械はとても正確です 人間の髪の毛がいなくてもできること pass between the heads and spinning platters. ヘッドの間を通過 そして、プラッタを回転。 Yet, it all works at terrific speeds. しかし、それはすべて素晴らしい速度で動作します。 [END PLAYBACK] [END PLAYBACK] And you can see at the tail end of the video, そして、あなたはで見ることができます ビデオの最後尾、 there are generally multiple platters. 複数のプラッタは一般的にあります。 And so that reading head isn't just reading the top. そしてその結果、読み取りヘッド ただトップを読んでいません。 It's kind of like three or four or more reading heads それは一種の3かのようなものです 4以上の読み取りヘッド that move like this, reading data simultaneously. それは次のように移動し、 同時にデータを読み出します。 >> So there's a lot of complexity and sort of timing >> だから、多くのがあります 複雑さとタイミングのソート that's involved in a hard drive. それは、ハードドライブに関与しています。 And the thing is spinning really darn fast, so there's a lot of complexity. そして、事は本当にくそ回転しています 高速なので、多くの複雑さがあります。 But let's zoom in a little deeper and see where are these magnetic particles しかし、それでは、少し深くズームインしましょうと これらの磁性粒子がどこにあるかを参照してください。 and how are we're getting at them. そして、どのように我々は彼らを取得していますされています。 >> [VIDEO PLAYBACK] >> [ビデオ再生] >> -Let's look at what we just saw in slow motion. >> 私たちに-LEtの外観 ちょうどスローモーションで見ました。 When a brief pulse of electricity is sent to the read/write head, ときに電気の短いパルス 読み取り/書き込みヘッドに送られ、 it flips on a tiny electromagnetic for a fraction of a second. それは小さい電磁にフリップ ほんの一瞬のために。 The magnet creates a field, which changes 磁石が作成されます 変更するフィールド、 the polarity of a tiny, tiny portion of the metal particles 小さな、小さなの極性 金属粒子の部分 which coat each platter's surface. そのコート各プラッタの表面。 A pattern series of these tiny charged up areas on the disk これらの小さなパターンシリーズ ディスク上のチャージアップ領域 represents a single bit of data in the binary number system used by computers. データの単一ビットを表します コンピュータで使用される二進数システム。 >> Now, if the current is sent one way through the read/write head, >> さて、現在は1に送られた場合 読み取り/書き込みヘッドを介し方法、 the area is polarized in one direction. 領域は、一方向に偏光されます。 If the current is sent in the opposite direction, 現在はに送信された場合 反対方向、 the polarization is reversed. 分極が反転します。 How do you get data off the hard disk? どのようにハードディスクからデータを取得するのですか? Just reverse the process. ただ、プロセスを逆にします。 So it's the particles on the disk that get the current だから、上の粒子です 電流を得るディスク in the read/write head moving. 読み取り/書き込みヘッドに移動します。 Put together millions of these magnetized segments, 一緒に数百万を入れて これらの磁化のセグメント、 and you've got a file. あなたがファイルを持っています。 >> Now, the pieces of a single file may be scattered all over a drive's platters, >> 今、単一のファイルの断片であってもよいです すべてのドライブのプラッタに散らばって、 kind of like the mess of papers on your desk. 種類の混乱など あなたの机の上に書類の。 So a special extra file keeps track of where everything is. だから、特別な余分なファイルが保持します すべてがどこにあるのトラック。 Don't you wish you had something like that? あなたが持っていたくありません そんな感じ? >> [END PLAYBACK] >> [END PLAYBACK] >> So being alluded to there, perhaps, is that topic from yesterday of deletion. >> だから、おそらく、ですが、そこに示唆されています 削除の昨日からそのトピック。 When you delete a file, yesterday we said あなたが削除した場合 ファイル、昨日私たちが言いました that a computer actually does what, when you drag something コンピュータは、実際にはないこと 何、あなたが何かをドラッグ to the Recycle bin or trash bin? ごみ箱やゴミ箱へ? It just forgets it. それはちょうどそれを忘れました。 But the 0's and 1's, the magnetic particles しかし、0と1、 磁粉 that look like red and blue things here, or my arm here, それは、赤と青のように見えます ここでは物事、またはここに私の腕、 are still there on the hard drive. ハードドライブ上に残っています。 >> And so there exists software-- Norton Utilities and Yesteryear >> それでsoftware--が存在します Nortonユーティリティと往年 and other more modern software-- that just および他のより近代的な そのsoftware--だけ will scan a whole hard drive looking at all those 0's and 1's, because it 探して全体のハードドライブをスキャンします これらすべての0年代と1の時、それ理由 turns out that most file formats-- Word documents, Excel files, images, 判明しているほとんどのファイルのフォーマット - Word文書、Excelファイル、画像、 video files-- all have certain patterns that are common among them. すべてfiles--ビデオは、特定の持っています その中で共通している模様。 Every video file might be of a different video, すべてのビデオファイルかもしれません 別のビデオであっても、 but the first several bits are usually the same. しかし、最初の数を ビットは、通常は同じです。 Or the last several bits are usually the same. または最後の数ビット 通常は同じです。 >> And so with high probability, you can look for those patterns. >> そして、非常に高い確率で、 あなたはそれらのパターンを探すことができます。 And even if the file has been forgotten, you can say with high probability, そのファイルは、忘れてしまった場合でも、 あなたは、高い確率で言うことができます but this looks like a Word document, lets recover it and un-forget it, しかしこれは、Word文書のように見えます それを回復し、それをアン忘れることができます、 if you will. 可能ならば。 And so that's how you can recover data that's either been accidentally そしてそうそれはあなたが回復することができます方法です いずれかの偶然されていたデータ deleted or deleted or deliberately deleted for whatever purposes. 削除されたり削除されたり、意図的に どのような目的のために削除されました。 >> By contrast, secure deletion does what in the context of a picture like this? >> これとは対照的に、安全な削除は何を行います このような絵の文脈で? Exactly, makes them all random. 正確には、それらすべてがランダムになります。 So it sort of moves some of them down, some of them up, だから、一種の一部を移動させます それら上下それらのいくつか、 leaves some of them unchanged, and generally makes random noise out of it, それらのいくつかは変更されませんし、 一般的にそれのうちランダムノイズを行い、 or just maybe makes all of them 0's or all of them 1's. あるいはもしかしたらのすべてを作ります それらの0またはそれらの1のすべて。 And that too can generally scrub your data away. そして、あまりにも一般的にできること 離れてあなたのデータをスクラブ。 >> So let's return now to the issue of computational thinking, whereby >> それでは、問題に今戻りましょう 計算の考え方、それによっての we have the formula inputs. 私たちは式の入力を備えています。 And algorithms gives you outputs ultimately. そして、アルゴリズムが与え あなたが最終的に出力します。 We focus now on inputs and outputs, because now, I 私たちは、入力に今焦点を当て、 出力、今ので、私 claim we have a way of representing inputs and outputs. 請求我々はの方法を持っています 入力および出力を表します。 We're just going to use binary. 私達はちょうどバイナリを使用するつもりです。 >> And no matter what we want to represent today, >> そして、どんなに私たち 今日表現したいです、 whether it's a number or a letter or thousands thereof in a phone book それは数字または文字のかどうか 電話帳でその千 or images or movies, at the end of the day, it's all 0's and 1's. 末尾の画像や動画、または 一日のために、それはすべて0と1をです。 And I claim that, even though this is a super simple world with just 0's そして、私もこのかかわらず、と主張しています ちょうど0で超簡単な世界であります and 1's, we can build ourselves up. そして1の、我々は自分自身を構築することができます。 And we've seen one example of that with letters thus far. そして、我々はの一例を見てきました これまでの文字です。 >> So let's focus now on this middle ingredient, an algorithm. >> それでは、このようになりまし焦点を当ててみましょう 真ん中の成分、アルゴリズム。 And let's return to this example of Mike Smith. とのは、これに戻りましょう マイク・スミスの例。 So in this phone book, which admittedly, we don't use so much anymore, だから、確かにこの電話帳、中、 私たちはもうあまり使用しないでください、 there's a problem to be solved. 解決すべき問題があります。 We want to find someone like Mike Smith. 私たちは、マイク・スミスのような人を見つけたいです。 >> And what might I do to find Mike? >> そして、私はマイクを見つけるために何をするのでしょうか? Well, I could just open up this book, start at the first page, まあ、私はちょうどこれを開くことができます この本は、最初のページから開始します and realize, oh, I'm in the A section. そして、実感、ああ、私はAセクションにいますよ。 Mike's not there. マイクはありません。 I need the S section for Smith. 私はスミスのためのSセクションを必要としています。 So just keep turning one page at a time. だから一度に1ページをめくる保ちます。 Let me pretend that this is all white pages and not yellow pages, 私はこれがすべてであることをふりをしてみましょう ホワイトページとイエローページではなく、 because we're not going to find Mike in the yellow pages anyway. 我々は見つけるつもりはないので、 とにかくイエローページでマイク。 But I'm in the white pages. しかし、私はホワイトページにいますよ。 And now, I'm in the B section. そして今、私はBセクションにいますよ。 I still haven't found him. 私はまだ彼を見つけていません。 So I keep turning one page at a time. だから私は一度に1ページをめくる保ちます。 >> This is an algorithm. >> これはアルゴリズムです。 It's a set of instructions for solving some problem. これは、命令のセットです いくつかの問題を解決します。 In other words, look at page, if Mike's not on it, 言い換えれば、見て ページ、マイクはそれではない場合は、 turn page, and repeats again and again and again, ページをめくると、繰り返し 何度も何度も何度も、 ideally looking down as you're doing it. あなたがそれをやっているように、理想的に見下ろしています。 So is this algorithm, this process, correct? したがって、このアルゴリズムは、 このプロセスは、正しいですか? >> Sorry. >> ごめんなさい。 No, I hear some nos. いいえ、私はいくつかのNOSを聞きます。 OK, but it is-- yeah, it's certainly tedious. OK、それはええis--、 それは確かに面倒です。 Like, we'll be here all day if I keep looking for Mike at this speed. 私場合と同様に、我々はここにすべての日になるでしょう この速度でマイクを探し続けます。 But let me claim it's correct. しかし、私はそれが正しいだと主張しましょう。 It's stupid, but it's correct. それは愚かだが、それは正しいです。 >> At the end of the day, long as it might take, I will find Mike if he's in there >> 一日の終わりには、長い間、それがかもしれないとして、 彼がそこにいた場合、私はマイクを見つけるだろう、取ります and I'm paying attention. そして、私は注意を払っています。 And I eventually reach his page. そして、私は最終的に彼のページに到達します。 And if I get too far, if I get to the T section, そして、私はあまりにも遠く取得する場合、場合 私はTのセクションを取得し、 then I can slightly optimize and just say, hm, all done. その後、私は少し最適化することができます そして、だけ言って、HM、すべて完了。 I don't even need to waste time going to the Z's. 私も無駄にする必要はありません。 Zさんに行く時間。 But this is a very linear approach, if you しかし、これは非常にあります よろしければ線形アプローチ、 will, a very sort of left-to-right approach, a straight line. 、非常にソートの左から右になります アプローチ、直線。 And its correct but slow. そして、その正しいが、遅いです。 >> So I remember from grade school, sort of an optimization from a first grader, >> だから私は、ソート、小学校から覚えています 一年生から最適化、 where I learned how to count not by ones but by twos-- so 2, 4, 6. 私はしませんカウントする方法を学んだところ ものではなく、twos--ので2、4、6による。 It's A, lot harder to do, but in theory, it's それは多くの困難に、です 行うが、理論的には、それはです faster-- 8, 10, 12, 14, and so forth. faster-- 8、10、12、14、など。 How about that algorithm? どのようにそのアルゴリズムは? Is it more efficient? それは、より効率的ですか? Is it faster? それは速いですか? >> AUDIENCE: It's efficient. >> 観客:それは効率的です。 >> DAVID MALAN: Yeah, so it's def-- it's literally twice as fast, assuming I >> DAVIDマラン:うん、だからだdef--です 文字通り倍の速度、私を想定し don't get tripped up with my fingers. 私の指でアップトリップません。 It's twice as fast, because I'm turning through two ので、それは、二倍の速さです 私は2を介して回転してい pages at once instead of one, but it's potentially in correct, because why? かつての代わりに1でページが、それはです 潜在的に正しいで、なぜ理由? >> AUDIENCE: You're skipping some. >> 観客:あなたはいくつかをスキップしています。 DAVID MALAN: Right, what if Mike happens to be sandwiched-- maybe when I'm later DAVIDマラン:右、マイクが発生した場合どのような 私は後でだときに多分sandwiched--します in the phone book, Mike happens to be sandwiched between these two pages, 電話帳に、マイクがあることを起こります これらの2つのページの間に挟まれ、 and I just blindly skip over it. そして私はちょうど盲目的にそれをスキップ。 So we need a little fix there. だから我々はそこに少し修正が必要です。 Once I hit the T section, I can't just confidently say, 私はTのセクションをヒットすると、I ただ自信を持って言うことができません、 we didn't find Mike Smith. 我々はマイク・スミスを見つけられませんでした。 I probably have to double back. 私はおそらく戻って倍増する必要があります。 Or in fact, once I reach someone named S-N, instead of S-M for Smith, または実際には、かつて私が誰かに届きます スミスのためのS-Nの代わりに、S-Mという名前の、 immediately, I could double back, because maybe he すぐに、私は倍増でした バック、多分彼のため was on the previous page. 前のページにありました。 >> But I don't have to double back far. >> しかし、私ははるかに戻って倍増する必要はありません。 In theory, if I do it at the right time, I just go back one page. 理論的には、私は右のそれを行う場合 時間は、私はちょうど1つ前のページに移動します。 So it's adding only one extra step. だから、それだけで1つの余分なステップを追加しています。 So I've gone twice as fast, but it cost me one extra page. だから私は、二倍の速行ってきました それは私に1つの余分なページを要しました。 But that feels like a net win. しかし、それはネットの勝利のように感じています。 >> But this is not how most people in this room would solve this problem. >> しかし、これはどのようにほとんどの人ではありません この部屋は、この問題を解決するだろう。 What would a typical person, maybe a few years ago do, to find Mike Smith? 何多分、典型的な人でしょう 数年前にマイク・スミスを見つけるために、いますか? Yeah, didn't find Mike. うん、マイクを見つけることができませんでした。 What do I do? 私は何をしますか? So get a little closer, but I do know-- what is true about a phone book? だから、少し近づくが、私はやります 電話帳について真であるものknow--? AUDIENCE: It's sequential. 観客:それはシーケンシャルです。 DAVID MALAN: It's sequential. DAVIDマラン:それはシーケンシャルです。 It's alphabetical. それはアルファベット順です。 And so if I'm in the M section, Mike is clearly to the right, そして、私はMセクションにいるそうだとすれば、 マイクは右に明らかにされ、 I can literally tear the problem in half-- 私は文字通り涙することができます half--で問題 it's usually easier than that-- tear the problem in half and throw it away, それはthat--涙よりも、通常は簡単です 問題半分にし、それを捨てて、 so that now, I have a problem that's no longer 1,000 pages-- that was hard, 今、私はだ問題を抱えているように、 もはや千大変でしたpages--、 because I think I actually tore the phone book this time-- not 私は私が実際に引き裂いたと思うので、 これがないtime--電話帳 1,000 pages, but 500. 1,000ページが、500。 >> So the problem is literally half as big. >> だから問題は、大きなとして文字通り半分です。 And that's pretty compelling, because with my previous algorithms, version そして、それはので、かなり魅力的です 私の以前のアルゴリズムと、バージョン 1 and 2, I was only making the problem one page smaller, two pages smaller 1と2、私が唯一の問題を作っていました 小さい1ページ、小さい方の2つのページ at a time. 一度に。 Whereas now, I made it 500 pages smaller all at once. 今のに対し、私はそれを500製 一度にすべてのページに小さいです。 >> OK, so now, Karim proposes that I go to the right half. >> [OK]を、今、カリムは提案しています 私は右半分に行くこと。 So I'm going to go roughly to the middle, give or take. だから私は、大きく分けて行くつもりです 真ん中に、与えるか、または取ります。 And if I did this mathematically, I could go right to the middle. そして、私は数学的にこれをしなかった場合、 私は真ん中に右に行くことができます。 And now, I realize, oh, I'm in the T section. そして今、私は、ああ、実現します 私はTセクションにいますよ。 I actually did go too far. 私は実際に行き過ぎました。 >> But I can, again, tear the problem in half, throw it away. >> しかし、私は、再び、引き裂くことができます 半分の問題は、それを捨てます。 And my bytes not as big. そして、私のバイトとして大きくはありません。 It's only, what, 256 pages or 250 pages, give or take right now. それだけで、何を、256ページや250です ページ、与えるか、または今取ります。 But it's still way more than one page or two pages. しかし、それはまだ道よります 1ページまたは2ページより。 >> And so now, I go roughly to the middle. >> そして今、私は真ん中にほぼ行きます。 Oh, I didn't go quite far enough now. ああ、私は今、非常に十分行きませんでした。 So I repeat, repeat, repeat, repeat, until I'm hopefully だから私は、繰り返し、繰り返し、繰り返し 私はうまくいけばよされるまで、繰り返し left with just one page. 1ページだけを残し。 >> So that invites the question, if I started with roughly 1,000 pages, >> だから場合は、質問を誘うI およそ1,000ページで開始し、 how many steps did it take me with version 1 of my algorithm? それは私を取るんでしたどのように多くのステップ 私のアルゴリズムのバージョン1と? Well, if Mike is in the S section, in the worst case, まあ、マイクはSである場合 セクション、最悪の場合には、 that's pretty close to the end of the alphabet. それはにかなり近いです アルファベットの最後。 So if the phone book has 1,000 pages, I'll find Mike within 1,000 pages, 電話帳は、1,000ページを持っているのであれば、 私は、1,000ページ内にマイクを見つけることができます give or take. ギブオアテイク。 Maybe it's like 800 or so, but it's pretty close to 1,000. 多分それは800かそこらのようなものだが、 それは千にかなり近いです。 >> Whereas, in the second algorithm, how many >> 一方、第二中 アルゴリズム、どのように多くの page turns maximally might I require to find Mike Smith? ページには、私がかもしれ最大限になります マイク・スミスを探すために必要な? There's 1,000 pages, but I'm doing them two at a time. そこ1,000ページですが、私はよ 一度に2をやって。 Right, so max like 500ish, because if I go through the whole phone book, 右、なぜなら、500ishのような最大ので、 私は、全体の電話帳を通って行けば、 at which point, I can stop. その時点で、私は停止することができます。 But I can shave off a few by just stopping at the T section. しかし、私はによっていくつかをオフに剃ることができます ちょうどTセクションで停止。 But it's at worst case 500 pages. しかし、それは最悪の場合500ページにあります。 >> So how many times can I divide a 1,00o-page phone book in half again >> だから何回私は分割することができます 再び半分に1,00oページの電話帳 and again and again-- from 1,000 to 500 to 250 to 125? そして再びagain--から 125から250に500千? How long before I hit one page? どのくらい私は1つのページをヒットする前に? Yeah, it's about 10. うん、それは約10です。 Depending on rounding and such, it's about 10 pages total need to be turned 丸めなどに応じて、それはです 合計必要が投入される約10ページ or phone books need to be torn. または電話帳を引き裂かする必要があります。 >> So that's pretty powerful. >> だから、かなり強力です。 We started with a 1,000-page problem in all three of these stories. 私たちは、千ページの問題で開始しました これらの物語のすべての3インチ But in the first algorithm, it took me, worst case, 1,000 page しかし、最初のアルゴリズムで、それ 連れて行ってくれた、最悪の場合、千ページ turns to find Mike. マイクを見つけることになります。 Second algorithm, 500 pages to find Mike. 第2のアルゴリズム、500 マイクを見つけるためのページ。 Third algorithm, 10 pages to find Mike. 第3のアルゴリズム、マイクを見つけるために10ページ。 And it's even more powerful when you think そして、それはさらにです 強力なあなたが考えるとき about sort of an opposite scenario. 反対側のシナリオの種類について。 Suppose that the phone company next year maybe merges two towns together, 電話会社は、次のことを仮定 今年は多分、一緒に2つの町を併合します and the phone book is suddenly this thick, instead of this that, そして、電話帳が突然です 代わりに、このことの、この厚いです、 so 2,000 pages instead of 1,000. そのように2000ページの代わりに、千。 Well, my first algorithm looking for Mike Smith in a 2,000-page phone book, さて、私の最初のアルゴリズムが探して 2000ページの電話帳でマイク・スミス、 worse case, it's going to take how many page turns next year? 最悪の場合、取るつもりです 来年どのように多くのページになりますか? >> Phone book is 2,000 pages, so-- well, not one more. >> 電話帳は、2,000ページです so--よく、ないもう一つ。 If the phone book is twice as thick in the first algorithm, first algorithm, 電話帳には2倍のように厚い場合 最初のアルゴリズム、最初のアルゴリズム、 2,000, right? 2000、右か? In the worst case, Mike is really close to the end of the book, 最悪の場合、マイクは本当にです 本の最後に近く、 so it's 2,000 page turns. それは、2000ページのターンです。 Second algorithm going by twos, like 1,000 pages. で行く第2のアルゴリズム 補数、1,000ページなど。 >> But how about in my third and most recent algorithm? >> しかし、どのように私の第三では約 最も最近のアルゴリズム? If the phone company doubles the number of pages from 1,000 to 2,000, 電話会社が倍増した場合 1,000〜2,000ページ数、 how many more times need I tear that book in half to find Mike? 私は涙何回必要 半分にその本は、マイクを見つけるには? >> AUDIENCE: Just one. >> AUDIENCE:ちょうど1。 >> DAVID MALAN: Just one more, because with one page tear, >> DAVIDマラン:ちょうど1より、 1ページの涙であるため、 I can literally divide and conquer, if you will, 私は、文字通り分割することができます あなたは意志た場合や、征服、 that problem in half taking a massive bite out of it. 半分撮影でその問題 それのうち大規模な一口。 And so this is an example of efficiency and arguably an algorithm そして、これは一例です 間違いなく効率とアルゴリズム with which all of us are sort of intuitively familiar. これで私たちのすべては、 直感的におなじみの一種。 But it's just as correct as my other algorithms しかし、それは同じように正しいです 私の他のアルゴリズムとして、 with that tweak for the second algorithm, その微調整のためにと 第2のアルゴリズム、 but it's so much more efficient. それはとてもはるかに効率的です。 >> And in fact, what a computer scientist, or in turn a programmer, >> そして、実際には、どのようなコンピュータ 科学者、または順番にプログラマ、 would typically do when writing code is try to figure out, 書き込み時に一般的に行うだろう コードは把握しようとしています、 all right, I don't want my program just to be correct, すべての権利、私はしたくありません ちょうど正しいことするためのプログラム、 I also want it to be efficient and solve problems well. 私もそれが効率的になりたいです よく問題を解決します。 Imagine in the real world today, like Google indexes, searches 今日の現実の世界で想像し、 Googleのインデックス、検索のような like billions of pages, imagine if they used the first algorithm to find cats 彼らならば数十億のページのように、想像 猫を見つけるために、最初のアルゴリズムを使用 among a billion pages-- looking at the first page in their database, 見pages--億のうち、 そのデータベースの最初のページ、 the second, the third, just looking for a cat, looking for a cat. 第二、第三、見ているだけ 猫のために、猫を探しています。 That's pretty darn slow it would seem. すなわち、それは思わかなりくそ遅いです。 They could instead use something called binary search, which 彼らは代わりに何かを使用することができます これは、バイナリサーチと呼ばれます is no coincidence-- bi meaning two, we keep dividing something in 2, in half-- 2を意味しないcoincidence-- biは、我々は、ありません half--で、2で何かを分割しておきます they could use binary search and maybe find cats even faster, 彼らはバイナリ検索を使用することができます そしておそらく、さらに高速の猫を見つけます or whatever it is you're searching for. または何でもそれはあなたが探しているです。 >> And frankly, there's even fancier algorithms >> そして率直に言って、あります でも愛好家のアルゴリズム that do much more than just dividing things in half それはちょうどよりもはるかに多くを行います 半分に物事を分割します in order to find information quickly. 順序で情報をすばやく見つけることができます。 And we'll talk a little bit about those after lunch today. そして、私たちは少し話をしましょう 昼食後、それらの今日は。 So let me just try to represent this. だから、私はちょうどこれを表現してみましょう。 We don't need to go into any math or actual numbers. 私たちは、に行く必要はありません 任意の数学または実際の数値。 We can talk about this in the abstract. 私たちは、抽象的にこのことについて話すことができます。 >> But let me just propose, if you were having a discussion now >> あなたなら、私はちょうど提案してみましょう 今の議論を持ちました with the engineers proposing this algorithm エンジニアと このアルゴリズムを提案 and you're trying to make a calculated decision, あなたが作るしようとしています 計算された意思決定、 because maybe the engineer says to you, you 多分理由 エンジニアはあなたが、あなたに言います know what, I can implement a linear search in like two minutes. 私が実装することができるか、知っています 2分などに線形探索。 It's that easy. ただそれだけのことです。 Binary search is not that fancy, but it's going to take me like 10 minutes, バイナリサーチは、空想ではありませんが、 10分のように私を取るために起こっています so 5 times as long. そう5回限り。 >> There's a trade here, even in terms of deciding what software to write. >> 貿易があっても用語で、ここにあります 書くためにどのようなソフトウェアを決定します。 Do you write the simpler algorithm, which will just take you two minutes? あなたは単純なアルゴリズムを書きますか、 これは、ちょうどあなたに2分かかりますか? Or do you spend more time, 10 minutes, writing the fancier algorithm? それとも、より多くの時間を過ごしています、10分、 手の込んだアルゴリズムを書きますか? How do you decide that kind of question? どのように質問のようなものを決めるのですか? Or you could make it a little more real. それとも、それはもう少し本当の作ることができます。 I tell my boss it's going to take me either one week or 10 weeks 私はそれを取るために起こっている私の上司に伝えます 私のいずれか1週間または10週間 to implement the software in this way, how 実装します このようにソフトウェアを、どのように do you decide which algorithm to green-light? あなたはどの決めるん 緑色光にアルゴリズム? Karim? カリム? >> AUDIENCE: The audience, I guess. >> 聴衆:観客、私は推測します。 >> DAVID MALAN: The audience. >> DAVIDマラン:観客。 What do you mean by the audience? あなたは視聴者が何を意味するのですか? >> AUDIENCE: If it's going to be used by users >> 観客:それが起こっている場合 ユーザが使用します who [INAUDIBLE] by users [INAUDIBLE]. 誰[聞こえない]ユーザーが[聞こえません]。 But if it's something you're just doing for yourself しかし、それはあなたがしている何かあれば 自分だけのためにやって to facilitate a problem, [INAUDIBLE] quicker. 問題を容易にするために、 [聞こえない]より速く。 DAVID MALAN: Yeah, it's quick and dirty is a good way to describe it. DAVIDマラン:うん、それは迅速だと 汚い、それを記述するための良い方法です。 In fact, if you're describing much of my time 実際には、あなたがしている場合 私の時間の多くを記述する in grad school, whereby often times, I wrote bad code consciously so-- 大学院で、これにより、しばしば、 私は意識的に不正なコードを書きましたso-- at least, that's how I rationalized it-- consciously so, 少なくとも、それがどのように私です 意識的にそうit--を合理化し、 because even though I was writing code that was relatively slow to execute, なぜなら私は、コードを書いていたにもかかわらず、 それは、実行するのが比較的遅かったです I was able to write the code itself pretty fast, spending just minutes 私は、コード自体を記述することができました わずか数分を費やして、かなり速いです or hours not days. または時間ない日。 And it turned out, I occasionally needed to sleep. そして、それは私が、判明しました たまに寝する必要がありました。 So even if my code required 8 hours to run, well that's fine, だから私のコードは、8を必要とした場合でも、 実行するための時間、それは大丈夫ですだけでなく、 I'll just go to sleep while it runs. 私はちょうどそれが実行中にスリープ状態に行きますよ。 >> So at the time, I thought this was very clever, even though I apparently >> だから一度、私はこれはと思いました でも、私は明らかにかかわらず、非常に賢いです worked through my PhD very slowly. 非常にゆっくりと私の博士号を通って働きました。 But the converse of that is that, if I were writing software しかし、その逆はあります つまり、私が書いていた場合は、ソフトウェア for other people who mattered more than me, well, 他の人のための人 、よく、私よりももっと大事 having them wait 8 hours to get back their search results それらを持つことへの8時間待ちます その検索結果を取り戻します is not all that compelling. すべてが魅力的ではありません。 And so spending more time up front to write software そして、そのように多くの時間を費やし ソフトウェアを書くために、フロントアップ that is more efficient, more like our third algorithm, それは、より多くの、より効率的です 私たちの第3のアルゴリズムのように、 probably benefits the users over time. おそらく、時間をかけてユーザーに利益をもたらします。 So it really depends over time how those costs add up. だから、本当にオーバー依存します 時間は、これらのコストはどのようにを追加します。 If you're going to be writing software to use it once, あなたが書くことにするつもりなら 一度それを使用するためのソフトウェア、 probably might as well do quick and dirty, as they say. おそらく同様に行う可能性があります 彼らが言うように、迅速かつ汚いです。 Just throw it together. ただ、それを一緒に投げます。 It's code that embarrasses you, it's so bad, それは困るコードです あなた、それはとても悪いです、 but it gets the job done correctly, even though it's not efficient. しかし、それは正しく仕事を取得し、 にもかかわらず、それは効率的ではありません。 Conversely, you spend more time on something, get it just right. 逆に、あなたはより多くの時間を費やします 何かに、それだけで権利を取得。 And then amortized over time, that upfront cost of time そして、時間をかけて償却 時間の初期費用 is probably worthwhile, if you keep optimizing for the common case. あなたが続ければ、おそらく価値があります 一般的なケースのために最適化します。 >> And indeed, that's a theme in programming, or computer science more >> そして実際、それは内のテーマです プログラミング、またはコンピュータサイエンスより generally, trying to optimize not for the uncommon case 一般に、最適化しようと 珍しくない場合について but the common case-- what operation is going to happen again and again? しかし、どのような操作の共通case-- 何度も何度も起こるだろうか? If you're going to have billions of users searching on your website, あなたは十億を持っているつもりなら あなたのウェブサイト上で検索するユーザーの、 you should probably spend the extra weeks up front writing better software, おそらく余分を費やす必要があります アップフロントより良いソフトウェアを書く週間、 so that all of your users benefit. すべてのユーザーが利益を得るようにします。 Now, let's try to capture this a little pictorially, but not so much さて、このAをキャプチャしてみましょう 少し絵ではなく、そんなに numerically. 数値。 >> So here's just an old school chart. >> だからここだけの古い学校のチャートです。 And let me say that this is time. そして、私はこれが時間であることとしましょう。 And it doesn't matter what-- actually, no, not time. そして、それはwhat--問題ではありません。 実際には、いや、ない時間。 Let's put that on the other axis. それでは、他の軸上にそれを置いてみましょう。 Let's say that this is the time, and this is size of problem. それでは、これは時間であることとしましょう、 これは、問題の大きさです。 >> And a computer scientist might generally call >> そして、コンピューター科学者 一般的に呼ぶかもしれません this just n. n is like our go-to variable, where このちょうどn個。 nが似ています 当社のゴーへの変数、 n is a number, n number, and it's the number of whatever inputs you have. nが数nの数であり、それはです あなたが持っているものは何でも入力の数。 So in this case, n is the number of pages. したがって、この場合、nは ページ数。 So it might be 1,000 in the case we just told. だから、1,000かもしれません 場合は、私たちは語りました。 >> So time can be any unit of measure. >> だから時間は、メジャーのいずれかの単位とすることができます。 Maybe, it's second. たぶん、それは第二のです。 Maybe, it's days. たぶん、それは日です。 Maybe, it's like page turns. たぶん、それはページターンのようなものです。 Doesn't matter. 関係ない。 Whatever you want to count in, that will be time or cost equivalently. あなたがいること、でカウントするようにしたいものは何でも 等価的に時間やコストになります。 >> So with that very first algorithm, if I, for instance, >> それとだから、非常に最初の アルゴリズム、私の場合、例えば、 had a 1,000-page phone book, I'm going to draw a dot there, 千ページの電話帳を持っていました、 私は、そこにドットを描画するつもりです because if it's 1,000 pages, it took roughly 1,000 page turns, give or take. それが1,000ページだ場合、それがかかったので、 およそ千ページが与えるか、または取る、になります。 And then if I had a 2,000-page phone book, そして、私が持っていた場合 2000ページの電話帳、 and I'm going to draw a second dot here, because for 2,000 pages, そして、私は2番目を引くつもりです なぜなら2000ページのために、ここではドット、 it's like 2,000 seconds or page turns or whatever. それが2000秒のようなものです またはページがオンまたはものは何でも。 And so when I said earlier, it's kind of a linear relationship, それで、私が以前に言ったとき、それはです 直線関係の種類、 that was deliberate, because I wanted later on-- right now-- to draw a line. 私が望んでいたので、それは、意図的でした 後で線を描画する権利now-- on--。 It's kind of a straight line relationship. それはストレートのようなものです ライン関係。 The slope is 1/1, if you will. あなたがする場合は傾きが、1月1日です。 >> Meanwhile, the second algorithm said, if you've got 1,000 pages >> 一方、第2のアルゴリズム あなたは1,000ページを持っている場合は、言いました and you were using the second algorithm, where I counted by 2's, turning あなたは第2のアルゴリズムを使用していました、 私は2のによってカウントところ、ターニング two pages at a time, should I draw a dot below or above my original dot? 一度に2つのページ、私が描くべき 私のオリジナルドット以下または上記ドット? >> AUDIENCE: Below. >> AUDIENCE:以下。 >> DAVID MALAN: Below, because as we saw, it takes less time, half as much time. >> DAVIDマラン:以下、我々が見たようにので、 それは多くの時間のように短い時間、半分がかかります。 So the dot should be half as high as the other. だから、ドットが半分であるべき 他と高いです。 And same deal over here, this dot should probably be roughly there. こっちと同じ取引、このドット おそらく大体があるはずです。 And so my second algorithm, similarly, has a linear relationship with time. だから、私の第2のアルゴリズム、同様に、 時間とともに線形の関係を有します。 And we can draw it as such. そして、我々はそのように描くことができます。 >> So now, the third and final algorithm is a little harder to draw. >> だから今、3番目と最後の このアルゴリズムは、描画には少し難しいです。 But intuitively, if I've got 1,000 pages with my third algorithm, しかし、直感的に、私は千を持っている場合 私の第3のアルゴリズムを使用したページ、 it should only take me like 10 steps. それが唯一の10のステップのように私を取る必要があります。 And if I've got 2,000 pages with my third algorithm, そして、私は2000ページを持っている場合 私の第3のアルゴリズムと、 it should take me not 10 steps, but 11, just one more. それは私にはない10を取る必要があります ステップが、11、もう一つだけ。 So we're only barely going to see this. だから我々はかろうじてこれを参照するつもりです。 >> And it turns out, if I zoom in on this, I'm >> そして、それは場合は、判明します 私は、私は、この上にズームイン going to exaggerate for effect, the shape of that line, ultimately, 効果を誇張するつもりは、 その線の形状、最終的に、 is not a straight line-- because, indeed if it were, ストレートline--ではありません それがあった確かにあれば、なぜなら、 it would look more like the others-- it's actually a curved line それはより多くのようになります。 それは実際には曲線ですothers-- that, if we zoom in, is going to look much more like this. 我々はズームイン場合には、起こっています ずっとこのように見えます。 It-- well, OK, ignore this part. よくIt--、[OK]を、この部分を無視します。 That was my pen going of angle. それは私のペンは角度のつもりでした。 It's a curved line that is always increasing, always, always, always それは常にある曲線です いつも、いつも、いつも、増加 increasing, but only just barely. 増加が、唯一かろうじて。 >> And so over time, you have a relationship that's more like this. >> そして、そのように時間をかけて、あなたが持っています このようなより多くのです関係。 It almost looks straight. それはほとんどまっすぐに見えます。 But it's ever so slowly increasing. しかし、それは今までとてもゆっくりと増加します。 But for almost all points along your x-axis, horizontal axis, しかし、ほとんどすべてのポイントのために沿って あなたのx軸、横軸、 it's lower than those other lines. それはそれらの他のラインよりも低いです。 >> So this might be a relationship n, whereby if you have n pages, >> だから、これは関係あるかもしれません nは、それによってあなたがnページを持っている場合、 takes you n seconds. あなたのn秒かかります。 This might be a relationship n/2. これは、関係のn / 2であるかもしれません。 You have n pages, it takes you n/2 seconds, half as many. あなたはnページを持って、それが取ります あなたのn / 2秒、などの多くの半分。 And this is a logarithmic relationship, which そして、これは対数的です 関係、これ if you recall, log base 2 of n captures this kind of growth, so to speak. あなたが思い出すならば、n個のキャプチャのベース2を記録 成長のこのような、いわば。 So this is the sort of holy grail among the three of these だから、これは神聖なの一種であります これらの3の中で聖杯 here, because it's just so much more efficient, but arguably more complex ここでは、それだけで以前よりもずっとだから 効率的な、しかし間違いなく、より複雑な to implement. 実装します。 Any questions? 質問は? >> Well let me do this, let me open up a text window >> まあ、私はこれを行う、聞かせてみましょう 私は、テキストウィンドウを開きます just so we can try to formalize something here. ちょうど私たちがしようとすることができます ここで何かを正式。 So let me go ahead now and implement this algorithm だから私は今、先に行くとしましょう このアルゴリズムを実装します for finding Mike Smith in code, if you will, pseudocode code. コード内のマイク・スミスを見つけるための、 可能ならば、擬似コードコード。 I'm not going to use Java or C++. 私は、JavaやC ++を使用するつもりはありません。 I'm just going to use sort of English-like syntax, which we 私は、ソートの使用するつもりです 私たちの英語のような構文、 would generally call pseudocode code. 一般的に擬似コードのコードを呼び出します。 Here, I have a blank window. ここで、私は空のウィンドウを持っています。 And I'm saying step 1 of the very first algorithm is pick up phone book. そして、私は非常にのステップ1を言っています 最初のアルゴリズムは、電話帳をピックアップです。 Step 2 is open book to first page. ステップ2は、最初のページに開いた本です。 Step 3 will be look at page for Mike Smith. ステップ3を見ます マイク・スミスのためのページです。 If on page, call Mike. ページの場合は、マイクを呼び出します。 else turn page and go to step 3. 他のページをめくると、手順3に進みます。 Done, let's say. 完了、の言わせて。 >> And so it's not quite perfect, which we'll see in a moment. >> そしてそれは非常に完璧ではありません、 これは私たちが一瞬で表示されます。 But let's consider what concepts I've introduced here. しかし、ここでは何を考えてみましょう 私がここで紹介してきた概念。 So steps 1 and 2 and 3 are pretty much verbs. そう1,2及び3ステップ かなり多くの動詞があります。 They're statements, actions-- do this. 彼らは声明をしている、actions--これを行います。 And so in a programming language, we would generally そして、そのようにプログラミングで 言語、我々は一般的だろう call them statements or functions or procedures, 彼らにステートメントを呼び出しますか、 ファンクションまたはプロシージャ、 call them any number of things. 物事の任意の数のそれらを呼び出します。 But they're just actions-- do this. しかし、彼らはこれを行うactions--だけです。 >> Step 4 is fundamentally different, because it's kind of asking a question. >> ステップ4は、根本的に異なっています なぜなら、それは質問をするようなものです。 It's saying we're kind of at a fork in the road. 我々が親切だと言っています 道路の分岐点での。 If Mike is on the page, call him, so turn left, if you will. マイクがページ上にある場合は、呼び出し 彼ので、あなたがする場合は、左折。 And if not, go back to some other page-- or rather, sorry, そうでない場合、戻っていくつかに行きます その他当ページ - というか、申し訳ありませんが、 go back to some other step, which induces some kind of looping construct. これは、他のいくつかのステップに戻ります ループ構文のいくつかの種類を誘導します。 And we do it again and again and again. そして、私たちは何度も何度も何度もそれを行います。 >> And actually, you know what? >> そして実際に、あなたは何を知っていますか? Yeah. うん。 else if at end of book stop. 他の書籍停止の終わりにあれば。 So we need kind of a third condition, because you だから我々は第三の種類を必要とします 条件、あなたのために can't keep turning the page ad nauseum, because eventually, I'll ページの広告を回す維持することはできません nauseum、最終的に、私はだろうから hit the end of the book. 本の最後にヒット。 And a bug in a program might be not anticipating that scenario. そして、プログラムにバグがあるかもしれません そのシナリオを予想していません。 And then I just realized, oh, wait a minute, I need a third scenario. そして私はちょうどああ、待って、実現しました 分は、私が第3のシナリオが必要です。 If I'm out of pages, I should really just stop. 私は、ページのうちだ場合は、I 本当にただ停止する必要があります。 Otherwise, it's undefined. それ以外の場合は未定義です。 What's going to happen if I keep saying turn the page and go back, 何が私が続ければ起こるだろう ページをめくると戻って言って、 this is when computers freeze or crash, when you hit これは、ときにコンピュータであります あなたが打ったとき、フリーズやクラッシュ some unanticipated situation like that. そのようないくつかの予期せぬ事態。 >> Now, what about Mike Smith's third algorithm-- >> さて、どのようなマイクについて スミスの第三algorithm-- pick up the phone book, open book to first-- to 電話帳をピックアップし、 にfirst--する開いた本 no, not first page this time, to middle-- oh, well, that'd いや、ない最初のページこの時、 だろうと、よく、ああmiddle--します be the second algorithm. 第2のアルゴリズムです。 Let's just skip to the third. ちょうど第三にスキップしてみましょう。 >> AUDIENCE: Oh, I'm sorry. >> 聴衆:ああ、すみません。 >> DAVID MALAN: That's fine. >> DAVIDマラン:それは結構です。 Let's just skip to the third-- open to middle and now look for Mike Smith. ちょうどthird--オープンにスキップしてみましょう 真ん中に、今マイク・スミスを探します。 if on page, call Mike. ページの場合は、マイクを呼び出します。 And then what do we want to say here? そして、私たちがここで言いたいのですか? else what? 他に何? We can express this in any number of ways. 私たちは、これを表現することができます 任意の数の方法インチ There's no right answer. 全く正しい答えはありません。 OK, if not again, but we need to be-- OK, we do want to divide in two, [OK]を、そうでない場合は、もう一度、私たちのようにする必要があり be-- OK、我々は、二つに分割したいん but do we want to go left or go right? 私たちは、左に行くか右に行きたいですか? How do we express that notion? どのように我々はその概念を表現するのですか? Well, in Mike's case, yes, that's fair. まあ、マイクの場合には、はい、それは公正です。 But OK, so that's actually a good point. しかし、[OK]を、ので、それは実際には良い点です。 That's fine. それはいいです。 We'll keep going with this logic. 私たちは、このロジックと一緒に行くしておこう。 So-- そう - >> AUDIENCE: Less than half. >> AUDIENCE:半分以下。 DAVID MALAN: Yeah. DAVIDマラン:うん。 So else if page is, we'll say, less than Smith, to the left of Smith, だから、他のページがある場合、我々は少ない、と言うでしょう スミスより、スミスの左側に、 then-- let's see, is this going to complicate? 見てみましょうthen--、あります この複雑にするつもり? else if page comes before Smith, tear in half, throw away which half? 他のページには、スミスの前に来る場合、 その半分を捨てて、半分に涙? >> AUDIENCE: I thought that was [INAUDIBLE]. >> 聴衆:私は思いました それは、[聞こえない]でした。 >> DAVID MALAN: I'm hearing both answers. >> DAVIDマラン:私は答えの両方を聞いています。 >> AUDIENCE: Left. >> AUDIENCE:左。 DAVID MALAN: OK, throw away left half, as Lakisa DAVIDマラン:OK、投げます 離れLakisaとして、左半分 said earlier, the left half, then I kind of 左は、以前に述べました その後、半分、種類のI want to just go to-- I go to the right. ちょうど私が右に行くto--行きたいです。 Or equivalently, and I made a little bit of a mess of the beginning here, または同等に、と私は少しを作りました ここで最初の混乱のビット、 I effectively want to go to step 2 again, 私は効果的にしたいです もう一度手順2に進み、 where open to the middle-- or open-- yeah, let's just say, pages to middle. ここで、オープンmiddle--またはopen--へ ええ、ちょうど真ん中にページ、と言うのを聞かせて。 And this fixes it. そして、これはそれを修正します。 It's no longer a book. それはもはやブックません。 It's just half of a book, so open pages to middle. これは、本の半分だけです 真ん中に非常に開いているページ。 >> else-- were almost there. >> else--はほとんどありました。 Step 6, else if page comes after Smith, tear in half, throw away right half, ページがスミスの後に来る場合は、他のステップ6、 半分に引き裂く、離れて右半分を投げ、 then go to step 2. その後、ステップ2に進みます。 else quit, a fourth scenario if we have no pages left to turn. それ以外の場合は、第四のシナリオを終了します 我々がオンに残されたページがありません。 So we could clean this up. だから我々はこれをクリーンアップすることができます。 And we should clean this up. そして、我々はこれをクリーンアップする必要があります。 This is very pseudocode code, if you will, very high level description. これはあなたの場合、非常に擬似コードのコードです 意志、非常に高いレベルの記述。 But it does generally capture the idea. しかし、それは一般的なアイデアをキャプチャありません。 >> And, again, in this scenario, we have the notion of a condition, >> そして、再び、このシナリオでは、我々 条件の概念を持っています、 a branch, a fork in the road, making a decision-- if this, go this way, 枝、道路の分岐点、作ります この場合decision--、この道を行きます、 else if, go this way, else if, go that way. それ以外の場合は、この道を行きます それ以外の場合は、その道を行きます。 And this is a very common programming technique そして、これは非常に一般的です プログラミング技術 to decide which direction to go, so to speak. どの方向決定します 行くために、いわば。 And we also have some kind of looping structure, where そして、我々はまた、いくつかの種類を持っています 構造をループの、どこに we're doing something again and again. 私たちは何度も何度も何かをやっています。 >> Now, it turns out, much as in this example, >> 今、それははるかに、判明します この例のように、 being super precise is important. 超精密であることは重要です。 But we've also seen something that we keep calling abstraction. しかし、我々はまた、何かを見てきました 私たちは、抽象化を呼び出しておくこと。 What does it mean to pick up phone book? それは、電話帳をピックアップして何を意味するのでしょうか? We're just kind of taking for granted in this room 私達はちょうど種類の取っています この部屋に付与されたため that that has some semantic meaning. それはいくつかの意味論的な意味を有します。 All of us just kind of know, oh, well, pick up the phone book. 私たちのすべては、だけの種類の、ああ、知っています よく、電話帳をピックアップ。 What does that really mean? ことは、本当に何を意味するのでしょうか? Well, that really means extend hand, lean over, extend fingers, まあ、それは本当に伸ばす意味します 手、指を伸ばす、身を乗り出します、 pinch book between fingers, stand up, pull hand towards you. 指の間で本をつまんで、 あなたに向かって手を引っ張って、立ち上がります。 And we could be really pedantic about this, そして、私たちは本当に可能性があり これについての知識をひけらかします、 really being super precise as to what I'm doing. 本当に超精密であること 私がやっているものになど。 But all of those steps collectively are what it means to pick up a phone book. しかし、これらのすべての手順をまとめています それは、電話帳をピックアップして何を意味するのか。 >> And so earlier, when I said, each of these first two statements >> それで以前、私が言ったときに、各 これらの最初の二つの文の can be thought of as a proceed or a function, 考えることができ 続行するか、または機能、 really it represents what we keep calling an abstraction. 本当にそれが何を表すのか、私たち 抽象化を呼び出しておきます。 It's like a high level conceptual description of a problem that これは概念的な高レベルのようなものです その問題の説明 actually involves quite a few steps. 実際にかなりの数の工程を含みます。 And so this, too, is a recurring topic in programming, だから、これは、あまりにも、です プログラミングのトピックを繰り返し、 whereby I might write a program using syntax like this-- それによって、私はプログラムを作成することもできます this--ような構文を使用して、 pick_up_phone_book(). pick_up_phone_book()。 And then syntactically, I'm going to steal something そして構文的に、私はよ 何かを盗むつもり from most programming languages. ほとんどのプログラミング言語から。 >> Now, step 1 looks even more like a function, >> さて、ステップ1にも見えます より多くの機能のように、 as a programmer would call it. プログラマとして、それを呼び出します。 It looks like code that someone has given a name to and given それは、誰かのことをコードのようになります。 名前を与え、与えています to me to use somehow-- in other words, what the line I've highlighted 私には他にsomehow--使用します 私が強調表示されたものをライン言葉、 represents functionality that maybe I didn't even implement myself. その多分機能を表し 私も自分自身を実装していませんでした。 Someone older, wiser than me already figured out 古い誰か、より賢く 私はすでに考え出し how you express the notion of picking up a phone book. どのように概念を表現 電話帳をピックアップします。 And it's like the five steps I just rattled off, off the top of my head. そして、それは私がちょうど5つのステップのようなものです 私の頭の上から、オフにガタガタ。 >> But he or she already implemented this, gave those several steps >> しかし、彼または彼女はすでに実装します これは、それらのいくつかのステップを与えました a name, pick_up_phone_book. 名前、pick_up_phone_book。 And the parentheses is just what most programmers 括弧は、 まさにほとんどのプログラマ do at the end of statements like this. このような文の最後に行います。 I now can stand on his or her shoulders and never again, 私は今、自分の上に立つことができます 肩と二度と、 think about what it means to pick up a phone book. それが何を意味するかを考えます 電話帳をピックアップします。 I can just say, pick up the phone book. 私はちょうど電話帳を拾う、と言うことができます。 And that's exactly what all of us humans did here. そして、それは正確に何です 私たち人間のすべてがここにいました。 >> When we were probably 1 year old, 2 years old, >> 我々は、おそらく1になったとき 2歳、古い年、 someone had to teach us what it meant to pick up a phone book. 誰かが私たちに教えなければならなかったもの、それを 電話帳をピックアップするためのもの。 And ever since then, we've abstracted away そして、今までそれ以来、 私たちは離れて抽象化しました from those very uninteresting mechanical steps. これらの非常につまらないから 機械的な手順。 And we just have an intuitive understanding そして、我々はちょうど持っています 直観的理解 of what it means to pick up a phone book. それが何を意味するのか 電話帳をピックアップ。 >> And you can extrapolate now to more complicated things-- >> そして、あなたは今、外挿することができます より複雑things--へ construct a building. 建物を建設。 Like, to some people, that actually has meaning. 同様に、いくつかの人々に、 それが実際に意味を持っています。 To contractors, to architects, that has some meaning. 請負業者に、建築家、 それはいくつかの意味を持ちます。 And they would know what to do, if I said, go construct a building. そして、彼らは、場合に何をすべきかを知っているだろう 私は建物を建設行く、と述べました。 >> But most of us in the room couldn't deal with that level of abstraction. >> しかし、部屋の中で私たちのほとんどはできませんでした 抽象化のレベルを扱います。 You need to tell us like go get the shovel and go get the concrete あなたが行く得るように私達に指示する必要があります シャベルやコンクリートを取りに行きます and nail the pieces of wood together and whatever else そして、木材の小片を爪 一緒に、他のどのような is involved in building a building. 建物の構築に関与しています。 And that's because we have not yet been programmed to understand そして、私たちが持っていないので、それはです まだ理解するようにプログラムされて what it means to construct a building. それは、建物を構築するために何を意味するのか。 We don't have that abstraction. 私たちは、その抽象化を持っていません。 We don't have that functionality. 私たちは、その機能を持っていません。 >> And so what you'll see in programming languages, in general, >> だから、あなたは何をで表示されます 一般的には、プログラミング言語、 especially more modern languages, like Java, PHP, Ruby, and Python, 特に、より現代的な言語、 JavaやPHP、Rubyの、およびPythonのような、 they're much more mature than older languages, 彼らははるかに成熟しています 古い言語よりも、 like C and C++ and yet others. CおよびC ++とまだ他のような。 And so they come with more functionality built in. それで、彼らはより多くの付属してい 機能が組み込まれています。 More code has been written by people in the past より多くのコードが書かれています 過去の人々によって、 that we can now call or summon or use, as I'm hinting 私たちが今呼び出すことができるということか 私がほのめかしているように、召喚または使用 at with this highlighted line here. このとで、ここでのラインを強調しました。 And so even though we're not talking about programming languages per se, そして、私たちは話していないにもかかわらず、 プログラミング言語については、それ自体、 just pseudocode code, all of the ideas are still in that discussion. ちょうど擬似コードのコードのすべて アイデアは、その議論にまだあります。 And it turns out precision is super important, as is abstraction. そして、それは精度がある判明します 抽象化であるとして、超重要。 And let's try to communicate that as follows. とのはに試してみましょう 次のようにそれを伝えます。 >> I accidentally might have spoiled this by flashing a slide on the screen >> 私が誤って台無しにしている可能性があります この画面上でスライドを点滅させることにより、 prematurely. 途中で。 But let me ask for a brave volunteer, if you don't mind coming up. しかし、私は勇敢なボランティアを求めてみましょう、 あなたが来る気にしない場合。 You'd be in front of the camera, if you're OK with that. あなたは目の前になるだろう カメラ、あなたはそれでOKなら。 Would anyone like to come up and give instructions to your colleagues here? 誰もが思い付くとさせていただきたいと思い ここにあなたの同僚に指示? Just have to come over here and stand over here and say some words. ただ、こっちに来ていると こっちに立って、いくつかの言葉を言います。 >> Victoria is smiling the most and avoiding my eyes the most. >> ビクトリアは、ほとんどが笑っています 最も私の目を避けること。 Would you be willing to come on up? あなたがアップに来ることをいといませんか? OK. OK。 And if everyone else at your seats could take out a piece of scrap paper, そして、あなたの席で皆場合 スクラップ一枚の紙を取り出すことができ、 if you will. 可能ならば。 Lined paper is fine. 裏地紙が細かいです。 Come around this way. このように集まってきます。 Or some of the paper that you were given yesterday, または紙のいくつかのこと あなたは昨日与えられました、 just any blank sheet of paper, if you could. ただの白紙 紙の、あなたができれば。 And if you don't have any, just ask your neighbor if you could. そして、あなたがいずれかを持っていない場合は、単に あなたができればあなたの隣人をお願いします。 >> So for the moment, for this example, Victoria >> だから今のところ、用 この例では、ビクトリア is going to play the role of a programmer, an engineer, who の役割を果たしているために起こっています プログラマー、エンジニア、誰 needs to program you all, as the computers, to do something. あなたのすべてをプログラムする必要があります コンピュータは、何かをします。 And we'll see what assumptions you decide to make. そして、私たちはどのような仮定を参照してくださいよ あなたがすることを決定します。 We'll see how precise she chooses to be. 私たちは、彼女があることを選択する方法の正確な表示されます。 And if this demonstration goes pedagogically well, lots of mistakes そして、このデモが行く場合 教育学だけでなく、ミスの多く will be made, that we'll then use that as an opportunity for discussion. 私たちはその後、使用するだろうと、行われます その議論の機会として。 But the challenge for you should be to avoid those mistakes, しかし、あなたのための挑戦はすべき これらのミスを避けるためになります、 be a good programmer. 優秀なプログラマーです。 And so the challenge at hand, if you'd liked to walk over here, 手元にあるので、挑戦、もし あなたは、こちらに歩いて好きだったと思います is in front of Victoria on the screen here-- and hopefully, none of you 画面上のビクトリアの前にあります here--とうまくいけば、あなたのどれも remember this when I flashed on the screen. ときに私にこれを覚えています 画面上に光りました。 And do not turn around at all, because there is another screen in this room そしてので、全く好転しません この部屋に別の画面があります that I can turn off. 私はオフにすることができること。 So don't turn around. だから、好転しないでください。 >> In front of Victoria is that same scream. >> ビクトリアの前で その同じ悲鳴です。 And her job now is to tell you all on your piece of paper what to draw. そして、彼女の仕事は今、あなたのすべてを伝えることです 紙のあなたの部分に何を描きます。 And we will see, based on verbal instructions alone, そして、我々はに基づいて、表示されます 単独で口頭指示、 computer code, if you will, how accurate your drawings コンピュータコード、可能ならば、 どのように正確にあなたの図面 are-- your implementations are. あなたの実装がありますare--。 Make sense? 理にかなって? >> AUDIENCE: Yeah. >> AUDIENCE:うん。 DAVID MALAN: OK, execute. DAVIDマラン:OK、実行します。 >> AUDIENCE: Draw a square. >> 聴衆:四角形を描画します。 >> [LAUGHTER] >> [笑い] >> DAVID MALAN: And no questions may be asked. >> DAVIDマラン:そして、いや 質問が求められることがあります。 Can only do what you're told. あなただけは言わているものを行うことができます。 Oh, and if you have today's slides open in a tab, don't look at your tab. ああ、あなたが持っている場合は、今日のスライド タブで開き、あなたのタブを見ていません。 OK? OK? >> AUDIENCE: OK, draw a circle. >> 聴衆:OK、円を描きます。 A slope-- can I say slope? slope--私はスロープを言うことができますか? DAVID MALAN: Up to you. DAVIDマラン:あなたまで。 AUDIENCE: A slope. AUDIENCE:スロープ。 And a triangle. 三角形。 >> DAVID MALAN: All right. >> DAVIDマラン:すべての権利。 And stay here for just a moment. そして、ちょっとここに滞在。 And I'm going to come around in just a moment. そして、私は来るつもりです 一瞬で周り。 And no need to put your names on it. そして、その上にあなたの名前を入れる必要はありません。 Let me come around and collect your drawings, 私は周りに来てみようと あなたの図面を集め、 if you don't mind tearing them out. あなたはそれらを引き裂く気にしない場合。 >> Here is what we got back. >> ここでは、バック得たものです。 I'll project it on the screen. 私は、画面上に投影します。 I see a square, a circle, a slope, and a triangle. 私は、正方形、円を参照してください、 スロープ、および三角形。 So that was one answer there. だから、そこに一つの答えでした。 And let's-- whoops. そしておっとlet's--。 Thank you. ありがとうございました。 Here's another assortment, and one behind it. ここでは別の品揃えです、 その背後にあると1。 >> So they all seem to capture the spirit. >> だから、彼らはすべての精神をキャプチャするように見えます。 Thank you. ありがとうございました。 There's another, and here's another one. そこ別だし、ここでは別の一つです。 The slope interpretation is a little different, little curvy. スロープの解釈があります 少し違う、曲線美少し。 And the closest, either because of the wonderful specificity with which you've そして、どちらかのための最も近いです あなたは済ませたとの素晴らしい特異性 described, or maybe you kind of saw it before, this is indeed 説明、または多分あなたの種類の 前にそれを見て、これは確かにあります what Victoria was actually describing. ビクトリアは、実際に何を説明しました。 >> But now, those of you who didn't get it quite right, >> しかし、今、あなたのそれらの人 それは非常に権利を取得しませんでした、 let's offer some objections here. それでは、ここでいくつかの異議を提供してみましょう。 So Victoria first said draw a square. だから、ビクトリアは、最初に四角形を描画述べました。 And now, we can assume for the sake of today そして今、我々が想定することができ 今日のために that everyone knows how to draw a square. 誰もが知っていること 四角形を描画する方法について説明します。 But that's not wholly clear, right? しかし、それは右、完全に明確ではないでしょうか。 How else could you have drawn a square, or where 他にどのようにあなたが持っている可能性が 描かれた正方形、またはどこに might be some of the ambiguities here for the computer? 曖昧さの一部であるかもしれません ここでは、コンピュータのために? AUDIENCE: Location and size. AUDIENCE:ロケーションとサイズ。 DAVID MALAN: Location, right? DAVIDマラン:場所、右か? All of you had a paper of some shape, generally rectangles, but slightly あなたのすべては、いくつかの形の紙を持っていました 一般的に長方形が、わずか different sizes. 異なるサイズ。 But you certainly could have drawn, if you wanted, a huge square, maybe しかし、あなたは確かに描かれている可能性があり、 あなたが望んでいた場合、巨大な正方形、多分 a tiny square. 小さな正方形。 Maybe, it was rotated. 多分、それを回転させました。 I don't think we saw that. 私たちはそれを見たとは思いません。 But it could have been more diamond like but still, nonetheless, しかし、それはより多くのダイヤモンドだったかもしれません 以下のようなそれでも、それにもかかわらず、 mathematically a square. 広場を数学的。 So that was arguably ambiguous. だから、間違いなくあいまいでした。 >> Then she said, draw a circle. >> それから彼女は、円を描く、と述べました。 Some of you did draw it next to it, which isn't unreasonable, あなたのいくつかは、次のことを描きました 不合理ではない、それ、 because humans tend to think or read right to left in most languages, so not 人間は考えたり読みする傾向があるため 右のほとんどの言語に残って、そうしないように a bad guess. 悪い推測。 But that circle could have been inside the square, しかし、その円を持っている可能性があり 正方形の内部になって、 could have been around the square, could have been elsewhere 周りされている可能性が 正方形、他の場所だったかもしれません on the sheet, so arguably ambiguous. シート上なので、間違いなくあいまいな。 >> Slope might have been maybe taking the most liberties verbally >> スロープは多分あったかもしれません 口頭で最も自由を取ります with what that means. それが何を意味するのかと。 And some of you interpreted it as a squiggly line そして、あなたのいくつかは解釈します それ波線など or a straight line or the like. または直線など。 And then triangle, too, could have been oriented in any number of ways. そして三角形は、あまりにも、持つことができます 任意の数の方法で配向されて。 So in short, even with something that you glance and you're like, wow, so 要するに、でも何かを持つように そう、すごい、あなたが一目あなたが似ています simple, a child could draw this, well not 単純な、子供ができました これを描画し、よくありません really, unless you're super, super persuasive 本当に、あなたがない限り スーパー、スーパー説得力 and tell the computer exactly what to do. し、コンピュータを伝えます 正確に何をすべきか。 So if we could, if you have another sheet of paper, let's だから我々はことができれば、あなたが持っている場合 紙の別のシート、してみましょう try this once more. このもう一度試してください。 And I'm going to give Victoria one other example on the screen here. そして、私はビクトリア1を与えるつもりです ここでは、画面上の他の例。 And again, don't turn around and don't look at your slides. そして再び、好転しません あなたのスライドを見ていません。 And I'll give her a moment to think about how to describe this. そして、私は彼女にする瞬間をあげます この記述方法を考えます。 Don't let them see the fear in your eyes. それらを見てみましょうしないでください あなたの目で恐怖。 >> [LAUGHTER] >> [笑い] >> And again, this time leverage some of those takeaways >> そして再び、この時間を活用 それらの持ち帰りの一部 and try to get almost everyone at least the right answer. そして、ほとんどの人を取得しよう 少なくとも正しい答え。 >> AUDIENCE: OK, take a piece of paper, look >> 聴衆:OK、取ります 一枚の紙、見て in the middle of that piece of paper. 紙のその部分の真ん中インチ In the middle of that piece of paper, draw a cube. その部分の真ん中に 紙、立方体を描画します。 >> [LAUGHTER] >> [笑い] DAVID MALAN: What have we learned? DAVIDマランは:私たちは何を学びましたか? We were so close. 私たちはとても接近していました。 OK, repeat if you could, for everyone. あなたができればOK、みんなのために、繰り返します。 >> AUDIENCE: In the middle of the piece of paper, draw an object, >> AUDIENCE:の真ん中で 紙は、オブジェクトを描画します which looks like a cube. これはキューブのように見えます。 >> DAVID MALAN: OK, that's all you get to work with. >> DAVIDマラン:OK、それはです すべてのあなたが仕事を得ます。 Allow me to be analytical and not so much critical, 私は分析することを可能にします そして重要なあまりありません、 but to make the claim that Victoria definitely しかし、主張を作るために ビクトリア間違いなくその seems to be thinking in very high level abstractions, which 非常にで考えているようです 高レベルの抽象化、その is not unreasonable. 不合理ではないです。 Because otherwise, we'd all be pretty dysfunctional, そうでなければ、我々はすべてしまうので、 かなり機能不全であること、 if we had to be ever so precise with everything we do in the world. 我々は、これまでそれほど正確でなければならなかった場合 すべてに私たちは世界で行います。 >> But saying go to the middle-- I thought we were on such a good track >> しかし、私はmiddle--に行くと言って 我々はこのような良いトラックに思っていました there, like go to the very middle of the page, and then draw a cube. そこに、のような非常に真ん中に行きます キューブを描画し、ページの、と。 So she's thinking in abstractions, because she's still viewing そこで彼女は、抽象化に考えて、 彼女はまだ見ていますので、 what's on the screen as indeed a cube. 確かに、キューブのように画面上でです。 But there's so many opportunities for interpretation there. しかし、非常に多くの機会があります そこに解釈のため。 And in fact, there's so many other ways you could express そして、実際には、そう多くあります あなたが表現できる他の方法 that, which I'll propose in a moment. つまり、私はその瞬間に提案しますします。 So here we have one incarnation of the picture-- whoops-- one そこでここでは、1化身を持っています picture-- whoops-- 1の incarnation of the picture, so a little three dimensionality to it, 絵の化身なので、 それにはほとんど3次元、 which is nice. これはいいです。 >> Here's another one, where you have the same, though it's kind of an open cube. >> ここであなたが持っているもう一つは、です 同じ、それはオープンキューブの一種だが。 Some folks took it a little more flat, two dimensional. 一部の人々はそれを少し取りました よりフラット、2次元。 And that's fine. そして、それは大丈夫です。 So there, indeed in the center of the paper. だから、確かにあります 紙の中心。 This one I think you'll like, because if we go here, この1は私はあなたがすると思います 以下のように、私たちはここに行けばあるため、 this is what she was describing. これは彼女が記述したものです。 So now, let me propose how else we might describe this situation. だから今、私はどのように他提案してみましょう 我々はこの状況を説明することがあります。 >> Back in the day, one of the most more common ways to learn programming >> 戻る日に、ほとんどの1 プログラミングを学ぶためのより多くの一般的な方法 was to write code, writes lines of instructions, コードを書くことだった、書き込み 命令のライン、 that controlled a little turtle on the screen. それは少しを制御しました 画面上のカメ。 Logo and other variants of this was the name of the language. ロゴとこのの他の変形 言語の名前でした。 And the turtle lived in a world. そして、亀は、世界に住んでいました。 >> So suppose this rectangular space is his world. >> したがって、この長方形のを想定 スペースは彼の世界です。 And you would start by assuming-- I don't really know how to draw turtle, そして、あなたはassuming-- Iによって開始します 本当に、亀を描画する方法がわかりません so let's do it like this. それでは、このようにそれをやらせます。 And then he's got a shell and then maybe some feet. そして彼は、シェルを持っています そしてその後、おそらくいくつかの足。 So you might have this little character on the screen. だから、この小さなを持っているかもしれません 画面上の文字。 >> And the object of this programming language >> そして、こののオブジェクト プログラミング言語 was to compel the turtle to go up, down, left, right カメを強要することでした 上がるために、ダウン、右、左 and to put his pen down or pick his pen up, ダウン彼のペンを置くために または彼のペンアップを選択し、 so he could actually draw on the screen in this very flat rectangular world. 彼は実際に画面上に描画できました この非常に平らな長方形の世界インチ So where I thought you might be going, and where you should consider diving だからここで私はあなたが行くことかもしれないと思いました、 そしてどこでダイビングを考慮する必要があります down to mentally when describing instructions more generally, 記述するときに精神的にダウン より一般的に指示、 I would claim, is put your pen down in the middle-- 私が主張するだろう、あなたを入れて middle--でペンダウン and we'll get rid of the turtle, because I can't really 我々は取り除きますよ カメ、私は本当にことができるので、 keep drawing him very well. 非常によく彼を描く保ちます。 >> And now, how else could I say draw a cube? >> そして今、どのように他の可能性 私はキューブを描くと言いますか? Well, we could say something like draw a diagonal line northeast, for instance, まあ、我々は引き分けのようなものを言うことができます 対角線の北東部、例えば、 or at a 45-degree angle upward. または上方45度の角度で。 And that might have gotten me here. そしてそれは私をここに得ている可能性があります。 And I'm pretty far from a cube. そして、私はかなり遠くキューブからです。 But now, I could say something like turn 90 degrees to the left しかし、今、私が何かを言うことができます 以下のような左に90度回転 and draw a line of equal length northwest. との線を引きます 同じ長さの北西。 And I could continue with similar directions. そして、私は続けることができます 同様の方向を有します。 And it's not going to be easy. そして、簡単なことではないだろう。 And frankly, we probably would have been here for five minutes. そして率直に言って、我々はおそらくだろう 5分間ここにいました。 But maybe we would have gotten to something that, at the end of the day, しかし、多分私達はに得ているだろう 、一日の終わりに何か、 ends up being a cube, but we dived inside of that abstraction キューブなってしまうが、我々 その抽象化の内側に潜っ to do it at such a low level that you can't really このような低でそれを行うには レベルあなたが本当にすることができ see what you're doing until the whole thing is actually there on the page. あなたは全体まで、何をやっている参照してください。 事は、ページ上の実際にそこにあります。 And so this is a general principle, again, of programming-- this idea そして、これは一般的な原則です、 再び、programming--このアイデアの of abstraction. 抽象化。 It's so wonderfully powerful, because again, それはとても素晴らしくです 強力な、再びので、 she just said, draw a cube, which all of us pretty much would grok very quickly. 彼女はちょうど、言ったのすべてのキューブを、描きます 私たちはかなり非常に迅速に定義を理解でしょう。 We would just understand, OK, draw a cube. 私達はちょうど理解するであろう、 OK、立方体を描画します。 We might not know the orientation, so we could be a little more precise, 私たちは、向きを知らないかもしれません 私たちは、もう少し正確かもしれません but we can generally picture or know what a cube is. しかし、我々は一般的に想像することができます またはキューブが何であるかを知っています。 And that's useful, because if every time you そして、それは便利です、 なぜならかのたびに sat down as a programmer at your keyboard to write code, でプログラマーとして座っ コードを書くためのキーボード、 if you had to think at such a low level, none of us あなたは、このような時に考えていた場合 低レベル、私たちのどれも would ever get anything done. 今まで何を成し遂げるだろう。 And certainly, none of us would enjoy the process of writing code. そして確かに、私たちのどれもあろう コードを書くのプロセスを楽しみます。 It would be like writing in 0's and 1's, which frankly wasn't all that long ago これは、0と1に書き込むようになります これは、率直に言って、すべてそのずっと前にはなかったです humans were writing code in 0's and 1's. 人間は、0と1でコードを書いていました。 And we very quickly came up with these higher level languages-- そして、我々は非常に迅速に思い付きました これらのより高いレベルのlanguages-- C++ and Java and others. C ++やJavaなど。 >> So let's try this once more just to flip the tables, so that all of us >> それでは、ちょうどこのもう一度試してみましょう 表を反転、私たちのすべてのように、 have the chance to think in rather the same way. 考える機会を持っています むしろ同じようインチ Could we get one more volunteer this time to come up to the board and draw, 私たちは、1以上のボランティアこれを得ることができます ボードにまで来て、描画するための時間、 not recite? 暗唱しませんか? Yeah, OK. [OK]を、ええ。 Ben, come on up. ベンは、アップに来ます。 And, Ben, in this case, once you face the board, don't look left, そして、ベン、この場合には、あなたに一度 、ボードに直面して、左見ていません don't look right. 右見ていません。 Only do what your colleagues here tell you. 唯一の何をすべきかあなたを ここでの同僚はあなたを伝えます。 And for everyone else in the room, you now are the programmer. とで皆のために 部屋、あなたは今、プログラマです。 He's the computer. 彼はコンピュータです。 And the picture I've chosen here in advance is this one here. 私がここで選択されたし、絵 事前にここでこの1です。 They're just-- they're thinking of a funny joke is all. 彼らは考えているjust--ています 面白いジョークのすべてです。 >> So would does someone like to volunteer the first instruction >> だから、誰かがしたいんだろう 最初の命令をボランティア or statement that should command Ben's pen? またはステートメントは、そのすべき コマンドベンのペン? And we'll do this collectively, maybe one instruction from each person. そして、我々は多分、総称してこれをやります 一人一人から1命令。 I'm sorry? ごめんなさい? >> AUDIENCE: Draw a circle. >> 聴衆:円を描きます。 DAVID MALAN: Draw a circle is the first thing I heard. DAVIDマラン:円を描きます 私が聞いた最初の事はあります。 >> AUDIENCE: Up top. >> AUDIENCE:最大トップ。 >> DAVID MALAN: Up top. >> DAVIDマラン:最大トップ。 OK, we can let you delete, undo. [OK]を、私たちは、元に戻す、削除させることができます。 And now, someone else. そして今、他の誰か。 Dan, would you be comfy offering the next instruction? ダンは、あなたが快適になります 次の命令を提供しますか? >> AUDIENCE: Sure, draw the center of the bottom of the circle, >> 聴衆:確かに、センターを描きます 円の底部、 with a small-- a little small space from that, small--少しで それから、小さなスペース、 draw a straight line down to three quarters of the way down the board 3まで直線を引きます ボードダウン方法の4分の3 a slight angle to your left. あなたの左にわずかに角度。 >> DAVID MALAN: Good. >> DAVIDマラン:良いです。 >> AUDIENCE: Slight angle. >> AUDIENCE:わずかな角度。 >> DAVID MALAN: Undo, Control-Z. OK. >> DAVIDマラン:元に戻す、コントロール-Z。 OK。 Andrew, you want to offer up the next instruction? アンドリューは、あなたが提供したいと考えています 次の命令まで? >> AUDIENCE: Sure. >> AUDIENCE:確かに。 From the bottom of that line, a further slight angle-- その行の下から、 さらに、わずかangle-- whoops-- maybe about a third of the length [INAUDIBLE], whoops--多分約三分の 長さの[聞こえません]、 slight angle downward and like a third of the length of [INAUDIBLE]. わずかな角度下向きなど [聞こえない]の長さの第三。 So yeah, from that point, draw a line a third そんなわけで、その点から、 第三の線を引きます of the length of the previous line further to the left. 前の長さの さらに左へのライン。 >> DAVID MALAN: That OK? >> DAVIDマラン:それOK? Straight line, that's OK? 直線は、それはOKですか? OK, Olivier, you want to offer up the next? OK、オリビエ、あなたがしたいです 次を提供するには? >> AUDIENCE: [INAUDIBLE] from the bottom of the circle, [INAUDIBLE]. >> AUDIENCE:[聞こえない]から 円の下部、[聞こえません]。 Draw on the right hand side of [INAUDIBLE] centimeters. 右側に描きます [聞こえない]センチ。 >> [LAUGHTER] >> [笑い] >> DAVID MALAN: I think you're going to have to convert that's inches here. >> DAVIDマラン:私はあなたになるだろうと思います それはここインチだ変換する必要があります。 >> AUDIENCE: Stop. >> AUDIENCE:停止。 >> [LAUGHTER] >> [笑い] >> DAVID MALAN: OK. >> DAVIDマラン:OK。 [? Ara, ?] you want to offer up the next? [?アラ、?]したいです 次を提供するには? >> AUDIENCE: Draw a [INAUDIBLE] the upper [INAUDIBLE] the same. >> AUDIENCE:描く[聞こえません] 上部の[聞こえない]と同じ。 [INAUDIBLE] circle, draw to the [INAUDIBLE] and draw [INAUDIBLE]. [聞こえない]に、円、描画 [聞こえない]と[聞こえない]描きます。 >> DAVID MALAN: OK, no more undo. >> DAVIDマラン:OK、これ以上元に戻します。 Let's do one or two more instructions. のは、1つまたは2つの複数の命令を実行してみましょう。 Chris, you want to offer one? クリス、あなたは1を提供したいですか? >> AUDIENCE: At the bottom of the circle, [INAUDIBLE] >> AUDIENCE:下部にあります 円の、[聞こえません] draw an equal line slopping downward to the left [INAUDIBLE]. 同じラインスロッピングを描きます 左の[聞こえない]に下向き。 >> DAVID MALAN: OK. >> DAVIDマラン:OK。 Andrew? アンドリュー? We did-- Karim? 私たちは、カリムをdid--? >> AUDIENCE: Starting from the right line, the end of the left line, the bottom, >> AUDIENCE:右の行から開始して、 左ライン、ボトムの終わり、 you're going to go right about the same length as that line あなたは約右に行くつもりです そのラインと同じ長さ you're on, drawing to the right [INAUDIBLE]. あなたはへの描画、にしています 右の[聞こえません]。 [INAUDIBLE] degrees, so [INAUDIBLE] degrees on the right side. [聞こえない]度なので、[聞こえません] 右側の度。 >> DAVID MALAN: All right. >> DAVIDマラン:すべての権利。 Let's pause. 一時停止してみましょう。 Don't turn around yet. まだ好転しないでください。 Let's pause, and let's try one other attempt 一時停止してみましょう、としてみましょう 1他の試みをしてみてください before we reveal to Ben what he's been drawing. 我々はベンに明らかにする前に、 彼はどのような描画されています。 Can you shuffle Ben to the right-- or actually, あなたはにベンをシャッフルすることができます right--または実際に、 no, let's just give you another board, even better. いいえ、ちょうどあなたを与えてみましょう 別のボード、さらに良いです。 So would someone now like to take more of the approach だから、誰かが今たいと思います アプローチの多くを取るために that Victoria took earlier on, where we speak in a higher level abstraction ビクトリアはどこに、以前にかかりました 我々は、より高いレベルの抽象化で話します and in just a sentence or two describe to Ben そしてちょうど文で または2ベンに記述 what to draw without getting into the weeds, 何せずに描画します 雑草になって、 so to speak, at this a lower level? したがって、この低いレベルで、話すには? Victoria. ビクトリア。 [LAUGHTER] [笑い] AUDIENCE: Draw a figure of the walking man. 聴衆:図形を描きます 歩行男の。 And his legs and arms have to be the right side. そして、彼の腕や脚 右側でなければなりません。 >> DAVID MALAN: OK, that's all you get. >> DAVIDマラン:OK、それはあなたが得るすべてです。 All right. 大丈夫。 Why don't we reveal to Ben what he did. なぜ我々は彼が何をしたかベンに明らかにしていません。 So a round of applause. だから、拍手。 That was the hardest perhaps. それは難しいかもしれませんでした。 >> So even though we're talking in fairly silly terms >> だから我々は話をしているにもかかわらず、 かなり愚かな面で about just drawing pictures, hopefully you ただ描画について 写真、うまくいけば can really appreciate the degree of expressiveness that might be necessary の程度を本当に理解することができます 必要になる場合があります表現 in order to tell a computer what to do. 何をすべきかをコンピュータに指示するためです。 And in fact, the fact that Ben was able to draw this so quickly そして、実際には、事実ベン こんなに早くこれを描くことができました is sort of testament to using a language, maybe a higher level 使用しての証のようなものです 言語、多分より高いレベル version of English, that allows him to just use words, or hear words 英語のバージョン、彼を可能にします 言葉だけを使用する、または単語を聞いて from Victoria, that allow him these abstractions-- just draw ビクトリアから、彼を許すこと これらはただ描きますabstractions-- a figure walking to the right-- that sort of has に歩く姿 持っているその種のright-- some semantic meaning to it that isn't nearly as obvious when you're just ではない、それにはいくつかの意味論的意味 ほぼ明らかなように、あなただけのしているとき saying, put your pen down, draw to the right, draw to the left. ダウンあなたのペンを置く、と言って、描きます 右に、左に描画します。 >> And so this, too, is very common in programming. >> そしてこれは、あまりにも、非常にあります プログラミングでは一般的。 This would be said to be like a very low level language, programming これは、のようであると言うことだろう 非常に低レベル言語プログラミング in 0's and 1's if you will. 可能ならば0と1インチ And this would be a higher level language programming in Java, そして、これは、より高いレベルになります Javaでの言語のプログラミング、 or something like that. またはそのような何か。 A bit of an oversimplification, but that's のビット 単純化し過ぎ、それの the sort of like emotional feeling that you feel when 感情的なようなの並べ替え あなたはときに感じることを感じて using one kind of thing or another. 一つの種類または別のものを使用して。 A bit of frustration here by the need for such precision, but the opportunity 必要によってここに欲求不満のビット このような精度のために、しかし、機会 to be a little looser with the interpretation here. と少し緩めるようにします ここ解釈。 But of course, bugs can arise as a result. しかし、もちろん、バグ 結果として生じる可能性があります。 >> If you'd like at home-- we won't do this one in class-- >> あなたはhome--で希望される場合は、我々 class--でこれを行うことはありません but if you'd like to bring this one home, しかし、あなたがしたい場合 この1家庭を持って、 I thought we would dive into this. 私たちはこの飛び込むだろうと思いました。 So if you'd like to play this game with your significant other ですから、これを再生したい場合 あなたの重要な他とのゲーム or kids or the like, you might enjoy that as well. や子供たちなど、あなた 同様にそれを楽しむことがあります。 >> So let's go ahead and look at one last thing here for computational thinking. >> それでは、先に行くと、最後の1を見てみよう ここでは、計算的思考のためのもの。 And that brings us to John Oliver, not for the clip そして、それはジョンに私たちをもたらします ないクリップのオリバー、 you might have seen last night, but to a somewhat recent issue. あなたは昨夜見たかもしれません、 やや最近の号へ。 A few months back, Volkswagen took quite a bit of flak 数ヶ月前、フォルクスワーゲン 高射砲のかなりを取りました for what reason, if you know? どのような理由のために、あなたが知っていれば? What did they get in trouble for? 彼らはトラブルに何のためになったのですか? >> Yeah, so emissions-- they were trying to beat emissions >> うん、emissions--ので 排出量をビートにしようとしていました tests by essentially having their cars pollute the environment less 基本的に彼らを有することによりテスト 車が少ない環境を汚染します when their cars were being tested and pollute the environment more 自分の車は、試験されていたとき さらに、環境を汚染 when the cars were not being tested. 車がテストされていなかったとき。 And what's increasingly interesting in the world, as you may have inferred そして、何がますます面白いです 世界では、あなたが推測できるように from discussions of like-- what is it-- CarPlay, Apple's software for cars 何であるかlike--の議論から CarPlay、車のためのAppleのソフトウェアit-- and the fact that many of us increasingly そして多くのその事実 私たちのますます have touch screens in our cars, there's a frightening amount クルマにタッチスクリーンを有し、 恐ろしい量があります of software in people's cars today, which 人々年代のソフトウェアの 車今日は、これ frankly opens a whole can of worms when it comes to security and physical risk. 率直に言ってワーム時の全体の缶を開きます それは、セキュリティと物理的なリスクになります。 But for today, let's focus on just what's しかし、今日のために、してみましょう ちょうど何に集中 involved in writing software that might have gamed the system. ライティングソフトに関与 それは、システムをgamedている可能性があります。 >> For the definition of the problem, for those unfamiliar, >> の定義について 問題、慣れていない人のために、 let's take a look at John Oliver. のは、ジョン・オリバーを見てみましょう。 And for those familiar with the problem, let's look at it とに精通した者のために 問題は、のは、それを見てみましょう in a fun lens via John Oliver as well. ジョン・オリバー経由で楽しいレンズでも同様。 So let me hit play on this, I think, three-minute introduction. だから私は、私はこの上でプレーをヒットさせ 3分の導入、と思います。 Damn it. 畜生。 [VIDEO PLAYBACK] [ビデオ再生] -Cars-- -車 - DAVID MALAN: Obviously, on YouTube, it's-- DAVIDマラン:明らかに、 YouTubeで、it's-- - --the smartest characters in the Fast and Furious movies. - --the賢い文字で ワイルドスピード映画。 This week, German automaker Volkswagen found itself 今週、ドイツの自動車メーカー フォルクスワーゲンは、自分自身を発見しました in the middle of a scandal of potentially criminal proportions. のスキャンダルの途中で 潜在的犯罪者の割合。 >> -Volkswagen is bracing for billions in fines, possible criminal charges >> -Volkswagenは数十億のためにブレースされています 罰金で、可能な刑事告発 for its executives, as the company apologizes その幹部のための、など 同社は謝罪します for rigging 11 million cars to help it beat emissions tests. 11〜万台をリギングするための それは排出量のテストを打つのに役立ちます。 >> -Certain diesel models were designed with sophisticated software that >> -Certainディーゼルモデルを設計しました その洗練されたソフトウェアと used information, including the position of the steering wheel and vehicle 位置を含む使用済みの情報、 ステアリングホイールと車両の speed, to determine the car was undergoing emissions testing. スピード、車があったかを決定するために 排出量のテストを受けています。 Under that circumstance, the engine would reduce toxic emissions. そのような状況下では、エンジン 有毒な排出量を削減することになります。 But the car was rigged to bypass that when it was being driven. しかし、車はバイパスに装備されました それが駆動されたときに。 Emissions increased 10 to 40 times above acceptable EPA levels. 排出量は、40に10を増加しました 許容可能なEPAのレベルを超える時間。 >> -Wow, 10 to 40 times greater than the EPA allows. >> -Wow、10〜40倍 EPAよりも大きいができます。 That is the worst thing Volkswagen has ever done, それは最悪のことです フォルクスワーゲンは、これまで行っています、 is something you might say if you'd never heard of World War II. あなたがあれば言うかもしれないものです あなたは第二次世界大戦のことを聞いたことがなかったです。 But maybe the surest sign of how much trouble Volkswagen is in, どのようにしかし、おそらく最も確実な兆候 フォルクスワーゲンはである多くのトラブル、 is that people at the very top have stepped down. であることは非常に人々 トップは辞任しています。 The CEO resigned on Wednesday after scrambling to do damage control, 最高経営責任者(CEO)は、後に水曜日に辞任しました ダメージ・コントロールを行うためにスクランブル、 saying he was endlessly sorry, which sounded great until it turned out 、彼は際限なく残念だったと言っています それが判明するまで、素晴らしい鳴りました he was only 10% sorry but had rigged his mouth 彼は唯一の10%残念でした しかし、彼の口を装備していました to artificially inflate his sorriness. 人工的に彼の気の毒さを膨張させます。 And meanwhile, Volkswagen's US chief had an apology of his own. その間、フォルクスワーゲンの米国 チーフは、彼自身の謝罪を持っていました。 >> -Let's be clear about this, our company was dishonest. >> これについて明確にするのを-LEt、 当社は不誠実でした。 And in my German words, we have totally screwed up. そして、私のドイツ語の単語で、我々 完全にめちゃくちゃにしています。 >> -Yeah, but totally screwed up are not German works. >> -Yeah、しかし完全にねじ込ま アップドイツの作品ではありません。 And the German language has many beautiful phrases そして、ドイツ語 多くの美しいフレーズを持っています to describe situations just like this, such as [GERMAN], which means roughly, ちょうどこのような状況を記述するために、 このような大体意味[ドイツ語]、など、 the sadness that comes from business related lies, 来る悲しみ ビジネス関連の嘘から、 or [GERMAN], which translates as shaming ones father involving または[ドイツ語]、変換 関与するものの父を恥として clouds of gasoline. ガソリンの雲。 It's a beautiful language. それは美しい言語です。 It just sails off the tongue. それはちょうど舌をオフ帆。 And by the way, while that man's apology may have sounded sincere, ところで、あの男の一方 謝罪は誠実に聞こえたかもしれません、 it's worth noting he was speaking at an official launch party for the 2016 それは彼がで話していた注目に値します 2016年の公式打ち上げパーティー Volkswagen Passat, meaning that shortly after saying sorry, he said this. そのまもなく意味フォルクスワーゲンパサート、 申し訳ありませんと言った後、彼はこのことを言いました。 >> -Thank you very much for coming. >> あなたに来るために非常に多くを-Thank。 Enjoy the evening. 夜をお楽しみください。 Up next is Lenny Kravitz. 次のアップレニー・クラヴィッツです。 >> [MUSIC PLAYING] >> [MUSICのPLAYING] >> -OK, OK, ending your apology with up next >> -OK、OK、あなたを終了します 次のアップで謝罪 Lenny Kravitz does not scream sober contrition. レニー・クラヴィッツはしていません 地味な悔恨を叫びます。 It screams, we asked Bon Jovi, and he said no. それは悲鳴、我々はボンに尋ねました ・ジョヴィ、と彼はノーと言いました。 Volkswagen's brand has been badly damaged. フォルクスワーゲンのブランドは持っています ひどく破損して。 And frankly, their new ad campaign is not exactly helping. そして率直に言って、彼らの新しい広告 キャンペーンは正確に支援されていません。 >> --[GERMAN], we at Volkswagen would like to apologize for deceiving you with >> - [ドイツ語]、フォルクスワーゲンで我々が希望します であなたを欺くために謝罪します our vehicles. 私たちの車。 >> [END PLAYBACK] >> [END PLAYBACK] DAVID MALAN: So this was a roundabout way of-- sorry-- DAVIDマラン:これはでした 回り道of-- sorry-- this was a roundabout way of introducing a fundamental problem これは、回り道でした 根本的な問題を導入 in software, which is that you need to detect certain conditions. あなたということですソフトウェア、中 特定の条件を検出する必要があります。 And so the question at hand here is, how does a car potentially, だから手元の質問がここに 車が潜在的にどうするか、です、 as implemented in software by these programmers, ソフトウェアで実装され これらのプログラマによって、 detect that it's actually being tested? それは実際にテストされていたことを検出? So to be super clear, what they were doing だから、スーパー明確にします 彼らは何をしていましたか? was, in environments where the programmers figured どこ環境でした プログラマは考え出し the car was being tested, they somehow made 車はされていました テストされ、彼らは何とか作っ the car emit less emissions, fewer emissions, so less toxic fumes 車は少なく、少ない排出量を放出します 排出量なので、あまり毒性ガス and such. そして、このような。 But when it's normally driving on the road, しかし、それは正常なとき 道路を走行、 it would just emit as much pollution as it wanted. それはちょうど同じくらい放出するだろう それは望んでいたとして汚染。 >> So how could we write the pseudocode for this algorithm? >> だから、私たちはどのように書くことができます このアルゴリズムの擬似コード? How could we write the pseudocode for the software running in the car? どのように我々は擬似コードを書くことができ 車の中で実行されているソフトウェアのため? I mean, in a nutshell, it boils down to something like this. 私はそれが沸騰し、一言で言えば、意味します このようなものまで。 if being tested, emit less. 試験された場合、以下を放出します。 else emits more. 他には、より多くを放出します。 But that's a little too high level, right? しかし、それは少しです 高すぎるレベル、右か? >> Let's try to dive in as to what this abstraction of being tested means. >> それでは、どのような本にようでダイビングをしてみましょう 手段をテストされているの抽象化。 In other words, even if you know nothing about cars, what sort of questions 言い換えれば、あなたは何も知らない場合でも、 質問の車について、どのような might you ask in order to determine if you're being tested, if you're the car? あなたがいるかどうかを判断するために頼むかもしれません あなたが車なら、あなたは、テストされていますか? What characteristics might be present if a car is being tested? どのような特徴があるかもしれません 車がテストされている場合は提示? >> AUDIENCE: Testing equipment. >> AUDIENCE:テスト機器。 >> DAVID MALAN: Testing equipment. >> DAVIDマラン:テスト機器。 So if testing equipment nearby, then emit less. 検査機器もしそうであれば 近く、少ないし、放出します。 So I could imagine implementing that with some kind of cameras だから私は、実施想像できます カメラのいくつかの種類を持つこと or detecting what's around you. またはあなたの周りに何を検出。 And let me propose, that just feels too complicated そして、私は、それを提案してみましょう あまりにも複雑に感じています to actually have additional hardware just for that purpose. 実際に追加を持っています ちょうどその目的のためのハードウェア。 >> AUDIENCE: If you're in park, if your hood is open. >> 聴衆:あなたがにしている場合 公園、あなたのフードが開いている場合。 >> DAVID MALAN: In park or hood open, so that's good. >> DAVIDマラン:公園でか フードオープンなので、それは良いことです。 >> AUDIENCE: And car running. >> AUDIENCE:そして車の走行。 >> DAVID MALAN: So that's a little more concrete-- and car running. >> DAVIDマラン:だから、少しです よりconcrete--や車の走行。 So this would be the conjunction of a few different conditions, if you will. だから、これはの連動になります いくつかの異なる条件、可能ならば。 So if the car is in park, and even though this is a very mechanical thing だから、車は公園内にある場合は、さらに これは非常に機械的なものですが、 typically, I could imagine writing software, 一般的に、私ができました ソフトウェアを書く想像し、 especially because there's often a light there these days, 特にがありますので、 多くの場合、そこに光、これらの日、 I could imagine there being software that can query the shifter 私はされてそこに想像できます シフターを照会することができるソフトウェア or what not, are you in park, are you in drive, are you in reverse. または、あなたは、公園で何をされません あなたがドライブに、あなたは逆です。 And I can get back an answer that's either yes そして、私は取り戻すことができます はいどちらかの答え or no to those kinds of questions. あるいは全く質問のそれらの種類に。 >> And so I could also probably answer a question like, is the hood open. >> そして私はまた、おそらく答えることができます 質問などは、オープンフードです。 Maybe, there's some kind of sensor that either gives me back a 1 or 0, たぶん、センサーのいくつかの種類があります その1または0を私に戻って与えるのいずれか、 true or false, the hood is open. trueまたはfalse、ボンネットが開いています。 And then car running, I could detect that somehow via what mechanism? そして、車の走行が、私は検出することができました その何とか何機構を介して? Like, the car is running, I could detect that it's on, 同様に、車が実行され、I それが上だと検出することができ、 could I detect somehow that the car is moving? 私は何とか検出することができました 車が動いていると? >> AUDIENCE: RPMs. >> AUDIENCE:RPMを。 >> DAVID MALAN: Yeah, so there's always that needle that >> DAVIDマラン:うん、そうあります 常にその針こと tells you how many rotations per minute the wheels are experiencing. どのように多く回転するごとに説明します 分車輪が経験しています。 And so I could look at that. そして、私はその時に見ることができます。 And if it's not 0, that probably means the car is moving. そして、それはおそらく、0ではない場合 車が動いていることを意味します。 But we have to be a little careful there, しかし、我々はしなければなりません そこに少し慎重に、 because-- let's simplify this-- if we just said, if car running, because--のはthis--簡素化しましょう 私たちが今言った場合、車の走行の場合、 we don't want to just emit less, we want if the car is running 私たちはあまり放出したくありません、 車が実行されている場合、我々はしたいです and it's being tested. それはテストされています。 >> So there are a few other ingredients that folks >> だから、いくつかの他があります 食材の人々 have hypothesized the software is doing, because absent the actual source code, ソフトウェアがやっている仮説を立てています、 存在しないため、実際のソースコード、 you can only sort of infer from the physical effects of the car as to what あなただけの種類のから推測することができます 何についての車の物理的な効果 might be going on underneath the hood in software. 下に起こっている可能性があります ソフトウェアでフード。 So if car running and maybe, say, rear wheels not moving, だから車は、おそらく実行している場合 たとえば、後輪は動いていません、 might this be indicative of some kind of test? これが示す可能性があります テストのいくつかの種類の? What am I hinting at here? 私はここで何をほのめかしていますか? Yeah, maybe, it's on one of those roller things, うん、多分、それは1にです これらのローラーのものの、 where like the wheels are turning in the front or in the back, ここで、車輪などを回っています 前面または背面で、 depending on whether it's front wheel or rear wheel drive, so half of the wheels それは前輪だかどうかに応じて、 後輪駆動、輪のように半 are moving, but the other two aren't, which 移動しているが、 他の2つは、これではありません is a weird situation in the real world. 現実世界の奇妙な状況があります。 If you're driving on the road, that shouldn't happen. あなたは上で運転している場合 道路、それは起こるべきではありません。 But if you're in a warehouse on some kind of roller system, しかし、あなたは倉庫にしている場合 ローラーシステムのいくつかの種類に、 that might indeed happen. それは確かに起こる可能性があります。 >> I think folks also proposed that maybe, if the car is running and steering >> 私は、人々はまた、多分ことを提案したと思います 車が実行され、ステアリングされている場合 wheel not moving, that too might be a signal, その移動していないホイール、 あまりに信号かもしれないが、 because that's reasonable for like a straightaway on a road. それはのための合理的だから 道路上の直線コースなどがあります。 But even then, the human is probably moving it a little bit or certainly しかし、その後も、人間はおそらくです 確かにそれを少し移動したり、 over a few seconds. 数秒を超えます。 Or the course of a minute, odds are it's not またはのコース 分、オッズは、それはありませんです going to be fixated in exactly the same position. に固執するつもり 全く同じ位置。 >> So in other words, we can take substraction, >> 換言すれば、我々 substractionを取ることができ、 are you being tested, and break down that functionality あなたがテストされており、 その機能を打破 into these component ingredients. これらの構成要素の成分へ。 And that's truly what Volkswagen's engineers somehow did. そして、それは本当に何フォルクスワーゲンのです エンジニアは何とかしました。 They wrote software consciously to detect if the car is being tested, 彼らは意識的にソフトウェアを書きました 車がテストされているかどうかを検出、 therefore emit less, else emit in the usual way. そのため、あまり他のを発します 通常の方法で放出します。 >> And the problem here, too, is that software is not >> そして、ここでの問題は、あまりにも、 ソフトウェアがないということです something you can really see unless you have the so-called source code. あなたが本当にしない限り見ることができるもの あなたは、いわゆるソースコードを持っています。 So there's two different types of code-- at least two different types そのように二つの異なるタイプがあります code--、少なくとも2つの異なるタイプ of code in the world. 世界のコードの。 There's something called source code, which is not unlike what ソースと呼ばれるものがあります 何とは違っないコード、 we've been writing, source code. 私たちは、ソースコードを書いてきました。 >> This is source code written in a language called pseudocode, >> これは、で書かれたソースコードであります 擬似コードと呼ばれる言語、 which is just something English-like. これだけで何か英語に似ています。 There's no formal definition of it. それの正式な定義はありません。 But C, and Java, C++, those are all formal languages that, しかし、C、およびJava、C ++、それら すべての形式言語であることを、 when you write in them, what you have is a text file containing source code. あなたがそれらに書くとき、あなたは何を持っています ソースコードを含むテキストファイルです。 >> But there is also something in the world called machine code. >> しかし、またに何かがあります 世界はマシンコードと呼ばれます。 And machine code, unfortunately, is just 0's and 1's. 残念ながら、機械コード、 ちょうど0と1です。 So machine code is what machines understand, of course. だから、マシンコードは何ですか マシンはもちろん、理解しています。 Source code is what humans understand. ソースコードは人間が理解するものです。 >> And generally, but not always, there is a program >> そして、一般的ではなく、 常に、プログラムが存在します that a programmer uses that takes source code and turns it into machine code. プログラマが使用することは、ソースを取ります コードとマシンコードに変換します。 And that program is generally called a compiler. そして、そのプログラムは、 一般的に、コンパイラと呼ばれます。 So your input is source code, your output is machine code, だからあなたの入力はソースコードであり、 あなたの出力は、マシンコードです and the compiler is a piece of software that does that process. コンパイラはの作品です そのプロセスを行うソフトウェア。 So this actually maps nicely to our inputs, algorithms, outputs. だから、これは実際にうまくマッピングします 私たちの入力、アルゴリズム、出力。 >> But this is a very specific incarnation of that, which is to say that, >> しかし、これは非常に特定の化身であります それを言うためにあるもの、の、 even if you own one of Volkswagen's cars that is guilty of this, あなたは、フォルクスワーゲンのの1を所有している場合でも この有罪である車、 it's not like you can just open the hood or open the user's manual or look あなただけで開くことができないようです フードまたはユーザーズマニュアルを開いたり、見て at the source code, because by the time it reaches your car in your driveway, ソースコードで、時間によって理由 それは、あなたの私道に車を達します it's already been converted into 0's and 1's. それはすでにです 0と1に変換されます。 And it's very hard, not impossible, but very hard to glean much of anything そして、それは、不可能、非常に難しいことではありません しかし、非常に難しいものの多くを収集するために from just looking at the underlying 0's and 1's. ただ見てから 0と1の基礎となります。 So you can figure it out, ultimately, if you understand how a machine operates-- だから場合は、最終的には、それを把握することができます あなたはどのようにマシンを理解しますoperates-- Intel inside-- if you understand the Intel architecture, あなたが理解していれば、インテルはinside-- インテル・アーキテクチャー、 but it's very time consuming. しかし、それは非常に時間がかかります。 And even there, you might not be able to see everything とにもそこに、あなたがかもしれません すべてを見ることができません that the code can actually do. コードは実際に行うことができます。 >> Any questions about this or this kind of process more generally? >> このまたはこれについての質問 より一般的にはプロセスの種類は? And actually, we can tie this discussion to yesterday's discussion of Apple. そして実際に、私たちは、この議論を結び付けることができます アップルの昨日の議論に。 This, too, is why the FBI can't just go and look in the suspect's phone これは、あまりにも、である理由FBIできないだけを 容疑者の携帯電話に行くと見えます and find the lines of code, for instance, that enable the passcode そして、のために、コードの行を見つけます 例えば、パスコードを有効にします or enable that 80-millisecond delay. またはその80ミリ秒の遅延を有効にします。 Because by the time it's on the fellow's iPhone, 時間によってそれはですので、 仲間のiPhone上で、 it's already been converted to 0's and 1's. それはすでにです 0と1に変換します。 >> Well, let's pause here for our look at computational thinking. >> さて、私たちのためにここに一時停止してみましょう 計算の考え方を見てください。 Why don't we take a 15 minute break. なぜ我々は15分間の休憩を取ることはありません。 And when we return, we'll take a look at programming 私たちが戻ったときと、我々はよ プログラミングを見てみましょう itself and start to map some of these high level concepts 自身といくつかをマップするために開始 これらの高レベルの概念の to an actual, if playful, programming language. 遊び心のある場合は、実際に、 プログラミング言語。
B1 中級 日本語 ページ david マラン 場合 アルゴリズム コード 計算思考-ビジネスリーダーのためのコンピュータサイエンス2016 (Computational Thinking - Computer Science for Business Leaders 2016) 364 10 Chris Lyu に公開 2021 年 01 月 14 日 シェア シェア 保存 報告 動画の中の単語