DAVID Malan: Chào mừng trở lại, tất cả mọi người. Vì vậy, ngày hôm qua, bạn sẽ nhớ lại rằng chúng tôi tập trung vào các chủ đề này ở đây. Vì vậy, chúng tôi có bốn topics-- bao quát riêng tư, an ninh, và xã hội; công nghệ internet; điện toán đám mây; và cuối cùng, phát triển web. Có ai có băng thông hay thời gian để xem một chút John Oliver đêm qua? Nó thực sự khá thú vị, nếu không phải là một chút đáng sợ. Mọi thắc mắc về bất cứ điều gì chúng tôi đã làm ngày hôm qua? Bất kỳ giải thích? Bất kỳ câu hỏi mà bạn muốn thực hiện chắc chắn chúng ta chạm vào ngày hôm nay trong một số hình thức? slate sạch sẽ. Vì vậy, những gì trên chương trình nghị sự cho ngày hôm nay? Vì vậy, tôi nghĩ chúng ta sẽ bắt đầu ngày nay với một cái nhìn vào những gì thường được gọi là thinking-- máy tính tại nguy cơ quá đơn giản, suy nghĩ giống như một máy tính, có lẽ suy nghĩ như một kỹ sư, và cố gắng để bắt đầu tổ chức các suy nghĩ của bạn hoặc để cung cấp cho bạn một cảm giác tốt hơn gì có liên quan trong thực tế chỉ huy một máy tính để làm một cái gì đó bằng cách lập trình. Và chúng tôi sẽ giữ nó ở một khá mức cao, khá nhiều tiếng Anh, nhưng cố gắng sử dụng quen thuộc ví dụ để chính thức hóa như thế nào bạn sẽ đi về việc giải quyết vấn đề. Và chúng tôi sẽ xem xét lại một số CS chủ đề, như trừu tượng, đó đã đưa ra một vài lần ngày hôm qua, thuật toán, và sau đó đại diện. Và đó là nơi mà chúng ta sẽ bắt đầu ngày nay chỉ trong một khoảnh khắc. Sau đó chúng tôi sẽ xem xét lập trình. Chúng tôi sẽ có một cái nhìn tại một số cấu trúc cơ bản mà bạn có thể quen và thậm chí có thể tìm thấy khá trực quan. Chúng tôi sẽ xem xét, trên thực tế, tại một chương trình mẫu môi trường đó là rất dễ tiếp cận, rất vui tươi, và thực sự nhắm mục tiêu cho lứa tuổi từ 12 trở lên. Chúng tôi sẽ dành một vài phút có và sau đó có những điều đến một mức độ thấp hơn và thực sự nói về một số các thuật toán và cấu trúc dữ liệu, vậy để nói chuyện, mà lập trình viên thường sử dụng để giải quyết vấn đề xa hơn hiệu quả hơn có lẽ bạn có thể làm mà không có chúng hoàn toàn. Sau đó, sau khi ăn trưa, chúng tôi sẽ có một cái nhìn tại đống công nghệ, mà chỉ là một cách nói bộ sưu tập các công nghệ mà bạn có thể sử dụng để giải quyết một số vấn đề. Và chúng ta sẽ nói về bảng chữ cái súp của ngôn ngữ mà tồn tại today-- Java và Python và C ++ và PHP và Ruby và tất cả các loại vật khác. Chúng tôi sẽ xem xét một thời gian ngắn ở các mẫu thiết kế. Các lập trình viên, qua thời gian, có phương pháp nuôi mà có xu hướng để giúp họ giải quyết vấn đề dễ dàng hơn. Khi bạn bắt đầu thấy mình viết cùng một loại mã một lần nữa và một lần nữa, người chính thức hóa những lần lặp lại và tên gán cho chúng và sau đó sử dụng chúng và thúc đẩy họ, cuối cùng. Và chúng tôi sẽ nói một chút về chiến lược di động, giống như những gì nó có nghĩa là để thực sự làm cho một ứng dụng điện thoại di động hoặc một trang web di động. Bạn làm điều đó cho Android? Bạn làm điều đó cho iOS? Bạn làm điều đó cho cả những người? Và thương mại-off là gì? Và cuối cùng, chúng ta sẽ một lập trình web nhìn, mà là một thuật ngữ chung thực sự mô tả bất cứ lúc nào bạn viết phần mềm đó là nghĩa là để chạy trên web, liệu trên điện thoại hoặc máy tính để bàn hoặc máy tính xách tay. Chúng tôi sẽ có một cái nhìn thoáng qua cơ sở dữ liệu và thiết kế trong đó, nếu chỉ bởi vì hầu như bất kỳ ứng dụng dựa trên web thú vị những ngày này có một số loại cơ sở dữ liệu. Nếu không, nó sẽ chỉ có nội dung tĩnh. Và một cơ sở dữ liệu cho phép bạn thực hiện thay đổi theo thời gian, cho dù chính mình hoặc từ người dùng. Và chúng ta sẽ xem xét làm thế nào bạn sẽ đi về thiết kế mà cơ sở dữ liệu và các loại biệt ngữ mà có thể đi lên trong một kỹ sư của thảo luận tại một bảng trắng khi thực sự thực hiện một ứng dụng cho lần đầu tiên. Chúng tôi sẽ nói ngắn gọn về API, dịch vụ hữu ích mà bạn có thể sử dụng để đứng trên vai của những người khác, cho dù công ty hoặc cá nhân, và giải quyết của bạn vấn đề của riêng một cách nhanh chóng hơn. Và sau đó chúng tôi sẽ vọc lẽ một chút với JavaScript, một ngôn ngữ lập trình được sử dụng cả trong các trình duyệt hiện nay, nhưng cũng trong các máy chủ. Và có lẽ, chúng ta sẽ lại, thời gian cho phép, một số các tay vào công cụ web chúng tôi đã làm ngày hôm qua và tích hợp hai cùng trước khi chúng tôi hoãn lại. Vì vậy, với những gì mà-- ahead-- là Có điều gì mất tích mà bạn muốn chắc chắn rằng chúng ta chèn và chạm vào một số điểm. Nếu đó là suối để tâm, đưa nó lên trước khi dài. Nhưng tại sao chúng ta không bắt đầu với một nhìn vào tư duy tính toán. Và hãy để tôi đề nghị tư duy tính toán, một lần nữa, loại mô tả mức độ cao của những gì một nhà khoa học máy tính có thể làm. Và thực sự, chúng ta hãy bắt đầu với ba thành phần có thể đi vào tư duy tính toán. Đây chỉ là một cách để mô tả nó. Chúng tôi chắc chắn có thể xác định này trong nhiều cách. Nhưng hãy để tôi đề nghị, vì lợi ích của ngày hôm nay, rằng các vấn đề của thế giới, tất cả các vấn đề của thế giới, khi tiếp cận bởi một khoa học máy tính có thể được xem như là những gì chúng tôi sẽ đầu vào gọi, mà cần để đưa vào những gì chúng ta sẽ gọi thuật toán, mà sau đó mang lại kết quả đầu ra. Nói cách khác, toàn bộ thế giới của yêu cầu tôi giải quyết vấn đề có thể được chưng cất thành ba thành phần. Vì vậy, những gì tôi có nghĩa là đầu vào? Đầu vào chỉ là những gì bạn đang bàn giao để giải quyết. Ví dụ, đây là một vấn đề trường học cũ. Nếu tôi có một cuốn sách điện thoại ở đây và Tôi muốn tìm một cái gì đó vào nó, này là đầu vào của tôi. Tôi có 1.000 hoặc hơn trang trong một cuốn sách điện thoại. Đây là đầu vào cho vấn đề của tôi. Và tôi muốn tìm một cái gì như Mike Smith, do đó, một người bạn tên và số là hy vọng trong sổ địa chỉ này. Đây là trước khi những ngày của tế bào điện thoại, vì vậy tôi không thể chỉ tìm kiếm cho nó. Vì vậy, tôi phải làm điều đó tuổi tìm kiếm trường học và thực các yếu tố đầu vào cho một số câu trả lời. Và câu trả lời là chỉ cần đi để được gọi là đầu ra. Vì vậy, đầu vào là các cuốn sách điện thoại. Thuật toán là gì bộ bước tôi sử dụng để tìm Mike Smith. Và đầu ra là, hy vọng, số điện thoại Mike Smith. Và điều này sau đó sẽ được chỉ đại diện của hầu hết bất kỳ vấn đề đến với bạn là đầu vào tay và muốn sản xuất ra. Vì vậy, trước khi chúng ta xem xét quá trình qua đó chúng ta có thể giải quyết vấn đề đó, tìm Mike Smith và một cái gì đó như thế, chúng ta hãy xem xét đầu tiên và các đầu vào và đầu ra last--. Về thể chất, tất nhiên, các đầu vào đây được một bó toàn bộ giấy dán lại với nhau trong các hình thức của một cuốn sách điện thoại. Nhưng máy tính, máy tính xách tay course-- và máy tính để bàn và ngay cả điện thoại những days-- những người đang có các thiết bị điện tử. Và vào cuối ngày, những gì đầu vào chỉ với một máy tính? Vâng, đó là một cái gì đó như dây nguồn này đây. Tôi cắm nó vào tường, và Tôi nhận được một dòng electron, cho phép tôi để chạy máy. Hoặc có những electron tạo ra bằng cách của pin của tôi. Nhưng vào cuối ngày, đó là điều duy nhất đi vào máy tính xách tay của tôi. Và rất nhiều thú vị là công cụ cuối cùng sắp ra, liệu bằng cách của máy in hoặc màn hình hoặc audially hoặc tương tự. Vì vậy, nếu tất cả chúng ta có như chúng tôi đầu vào cơ bản cho một máy tính là điện, vì vậy chỉ cần electron đi vào và hay ra ngoài, và nên làm thế nào chúng ta có thể sử dụng đầu vào để thực sự đại diện cho thông tin? Nói cách khác, làm thế nào để chúng ta có được từ một dòng đơn giản của điện để đại diện cho thực tế số hoặc chữ thực tế hoặc hình ảnh thực tế trên màn hình hoặc phim thực tế hoặc e-mail hoặc bất cứ số nào khái niệm mức độ cao hơn, nếu bạn muốn, mà tại cuối ngày nào đó đã được lưu trữ trong này thiết bị cơ khí điện tử chỉ sử dụng những ingredients-- đơn giản electron ra vào? Vì vậy, có vẻ như, ở dạng đơn giản nhất, loại duy nhất của tiểu bang Tôi có trong thế giới của tôi, vì vậy để speak-- điều kiện trong world-- tôi là một trong hai Tôi có electron chảy, điện chảy, hay tôi làm not-- để bật, tắt. Và chúng ta hãy chính thức hóa và tắt, như một nhà khoa học máy tính có thể, chỉ với 1 và 0. Hãy chỉ mô tả một số tùy ý nhưng số lượng phù hợp với nó. 1 có nghĩa là trên, 0 có nghĩa là tắt. Hoặc bạn cũng có thể xem đây là phương tiện thực sự trên phương tiện sai. Bạn cũng có thể làm đen và màu trắng hoặc màu đỏ và màu xanh. Bạn chỉ cần hai bộ mô tả. Và một nhà khoa học máy tính sẽ thường chỉ cần sử dụng 0 và 1. Vì vậy, nếu đó là trường hợp, bảng chữ cái duy nhất của tôi được bao gồm 0 và 1, làm thế nào Tôi có thể có thể có được đến số lượng 2 trong một máy tính, chỉ riêng trong số 3 hoặc một lá thư của bảng chữ cái hoặc một hình ảnh hoặc một bộ phim? Làm thế nào để chúng ta loại bootstrap mình từ nguyên tắc cơ bản này của 0 và 1 người và thực sự đại diện cho một cái gì đó thú vị hơn? Vâng, chúng ta hãy đặt câu hỏi rằng giữ cho chỉ là một khoảnh khắc và xem xét cái gì hy vọng quen thuộc, thậm chí nếu bạn không thực sự nghĩ về nó trong bất kỳ chi tiết cho 10, 20, 30, 40, 50 nhiều năm. Đây là những gì? Làm thế nào bạn sẽ phát âm đó? Không phải là một câu hỏi trick. Một số, nhưng nó là gì? 1, 2, 3, hoặc 123. Và tôi thích cách bạn nói 1, 2, 3, bởi vì đó là một cách để nhìn nó. 1, 2, 3, đó là một chuỗi của ba biểu tượng. Đó là hình ảnh mà chúng tôi bây giờ có lời cho. Và nếu bạn sắp xếp của đọc tất cả với nhau, một con người điển hình trong tiếng Anh sẽ nói 123. Và đó là sắp xếp của một khái niệm mức độ cao hơn, cảm thấy như một số hợp lý lớn. Nhưng làm thế nào chúng ta đạt được điều đó? Vâng, nó có thể là một thời gian kể từ khi bạn đã nghĩ về nó như thế này, nhưng trở lại trong ngày của tôi, tôi loại học được điều này như cột của 1, 10 của cột, và cột của 100. Vì vậy, như Lakisa nói, nó là 1, 2, 3, nhưng nó cũng là 123. Nhưng làm thế nào để chúng ta có được từ trước đây để sau này? Vâng, bạn thường sẽ làm trong cột của 100, tôi có một 1. Vì vậy, mà giống như đang nói 100 lần 1. Và sau đó trong cột 10, tôi có 2. Vì vậy, đó là giống như nói 10 lần 2. Trong cột của 1, tôi có 3. Vì vậy, đó là giống như nói 1 lần 3. Và nếu tôi thêm những điều với nhau, điều này, tất nhiên, 100 cộng với 10 cộng với 3. Và oh, đó là lý do tại sao tôi có được điều này mức độ khái niệm cao hơn 123. Nó chỉ là toán học cơ bản, theo đó những ký hiệu có trọng lượng với họ, nếu bạn sẽ, giữ chỗ hoặc giá trị cột. Và một khi tôi nhân tất cả mọi thứ ra, tôi nhận được con số này. Vì vậy, có bao nhiêu bạn biết làm thế nào để nói chuyện binary-- 0 và 1's-- giống như một máy tính? OK, hoàn hảo, không có ai, hoặc không ai trong số bạn nghĩ rằng bạn làm. Nhưng tôi sẽ yêu cầu bạn thực sự biết điều này rồi. Chúng ta chỉ cần loại tinh chỉnh mô hình về tinh thần của chúng tôi một chút. Nhưng quá trình này là hoàn toàn giống nhau. Hãy để tôi rời khỏi này lên đó và thay vì kéo xuống một lúc. Trong thế giới của máy tính, chúng ta chỉ có 0 và 1. Và do đó, điều đó là sẽ thay đổi được những gì? Vâng, trong thế giới con người của tôi, hệ thống thập phân, tháng mười hai ý nghĩa 10, Tôi có bao nhiêu chữ số sắp xếp của tôi? 10, phải không? 0 đến 9, tất nhiên. Và đó là lý do tại sao chúng tôi có nơi 10 và vị trí của 100. Ở đâu đó đến từ đâu? Vâng, đây là 10 với sức mạnh của 0. Đây là 10 với sức mạnh của 1, 10 với sức mạnh của 2, và vv. Bạn chỉ cần giữ nhân cột của bạn 10, bắt đầu với chỉ 1 trong một bìa phải ở đây. Vì vậy, trong thế giới của máy vi tính, nếu bạn chỉ có ý nghĩa bi binary-- 2-- hoặc 0 và 1, chúng ta chỉ thực sự cần phải thay đổi các cơ sở của toán học mà. Vì vậy, nói cách khác, bây giờ chúng tôi sẽ chỉ có cột 1 và là-- nơi này là going-- cột của 2 cột 4, và có thể xa hơn nữa. Tại sao vậy? Vâng, đây là 2 sức mạnh 0-thứ. Đây là 2 trong 1. Đây là 2 đến 2, và như vậy. Vì vậy, trong khi ở đây, chúng tôi có 1, 10 của, 100, 1000 của, 10.000 nhân, 100.000 nhân, 1 hàng triệu người, và vv, đây chúng tôi có 1, 2, 4, 8, 16, 32, 64. Bạn chỉ cần giữ nhân với 2, thay vì giữ nhân với 10. Vì vậy, bây giờ, nếu ghi bàn mặt là để đại diện cho số sử dụng chỉ có 0 và 1 của, chúng ta hãy xem xét làm thế nào chúng đạt được điều đó. Điều này, tất nhiên, là mô hình 0 0 0, nhưng những gì số khái niệm nó đại diện? Vâng, 4 lần 0 cộng với 2 lần 0 cộng 1 lần 0, chúng ta hãy thêm những với nhau. 4 lần 0 là, tất nhiên, 0, cộng với 2 lần 0 là, tất nhiên, 0 cộng với 1 lần 0 là, tất nhiên, 0. Vì vậy, ah, điều này thể hiện số con người chúng ta biết như là 0. Vâng, bây giờ, chúng ta hãy rất về phía trước một cách nhanh chóng nhanh chóng. Nếu tôi thay vì không đại diện cho 0 0 0, nhưng chúng ta hãy làm 1 0 1, đó có thể là như thế nào Lakisa, trước đó, sẽ chỉ phát âm nó 1 0 1. Nhưng bây giờ, làm thế nào để chúng tôi mang nó đến cao cấp số con người chúng ta có thể biết? Vì vậy, con số này là những gì? Đó là 5, số chúng ta biết là 5. Vâng, tại sao vậy? thực sự tốt, chúng ta có thể loại đi bộ qua đó có phương pháp 4 lần 1, 2 lần 0, 1 lần 1. Thêm những cùng nhau, vì vậy đây là 4 cộng với 0 + 1. Và đó là, thực sự, 5. Vì vậy, nó nhận được một chút buồn tẻ tại làm số học một lần nữa và một lần nữa. Nhưng quá trình này là hoàn toàn giống nhau. Điều duy nhất mà có thay đổi trong thế giới của chúng tôi là cột của chúng tôi là 1, 2, 4, 8, 16, và vv, thay vì 1, 10, 100, 1.000. Và đó chỉ là vì bảng chữ cái của chúng ta có thu nhỏ từ 0 đến 9 để chỉ 0-1. Vì vậy, như một chút đố ở đây, như thế nào sẽ bạn đại diện cho số 7 trong hệ nhị phân? 0? Vâng, 0, bạn có nghĩa là 0 0 0? Nói lại lần nữa, Karina. Hoàn hảo. Tại sao vậy? Đó là hiệu quả 4 cộng với 2 cộng với 1. Vì vậy, tốt. Làm thế nào để chúng tôi đại diện một chút another-- thế nào về số 2? Đóng, nhưng ngược. Vì vậy, đây là những gì? Là 4 cộng thêm 1, vì vậy đó là 5 lần nữa. Vì vậy what's-- Tôi xin lỗi, Karina? 0 1 0. 0 1 0 sẽ là 2, bởi vì một lần nữa, thậm chí nếu nó loại không nhảy ra ở bạn, chỉ cần làm toán. 4 lần 0, 0, 2 lần 1 là 2, 1 lần 0 là 0. Vì vậy, đây là số chúng ta biết là 2. Làm thế nào về số 8? Hm? Tốt. Vì vậy, chúng tôi loại cần giữ chỗ khác. Chúng ta cần 1 0 0 0. Và đó là sự thật của các loại của chúng tôi của hệ thống thập phân trường cũ. Làm thế nào để bạn đại diện cho số 1000? Vâng, bạn sẽ có vẻ là loại ở một vị trí khó khăn, nếu yêu cầu bạn để đại diện cho số 1000, bởi vì ngay cả khi bạn cung cấp cho mình như 9 trong số này, 9 trong số này, 0 trong số này, đó là số lớn nhất mà bạn có, bạn đã không hoàn toàn nhận được đến 1.000. Vì vậy, nếu bạn có 1000, bạn chỉ cần một vị trí, do đó bạn có thể làm 1 0 0 0, ergo số 1.000. Vì vậy, bây giờ, chúng ta hãy map loại này thảo luận mang lại phần cứng, đó một lần nữa, đầu vào là chỉ này ít dây cáp điện, điện đến và chảy ra. Và như vậy cho rằng để được ánh xạ từ đây qua đó, tốt, những gì chúng ta thực sự cần? Vâng, bạn có thể nghĩ ra được bên trong của một máy tính, một bó toàn bộ các bóng đèn, nếu bạn sẽ. Họ đang thực sự được gọi là transistor. Và bóng bán dẫn là chỉ chuyển mạch mà có thể được bật hoặc tắt. Vì vậy, bạn có thể nghĩ ra một transistor đó là trên được cho phép điện chảy và một bóng bán dẫn đó là off như dừng điện từ chảy. Và thay vì mất qua đèn ở đây, tại sao tôi không làm việc này của phong cách học mới. Vì vậy, đây có thể là 1, một đèn pin được vào, chỉ vừa đủ mặc dù. Và điều này có thể là 0, và bây giờ nó ra. Vì vậy, sử dụng thiết bị vật lý này, tôi bây giờ có thể đại diện cho hệ thống nhị phân. Tôi chỉ cần hai quốc gia. Nó không có vấn đề gì màu nó là hoặc những gì nó được. Tất cả những vấn đề là tôi có một nhà nước trên và một trạng thái tắt. Vì vậy, sử dụng điện thoại của tôi ở đây, tôi phải làm gì đại diện cho số chúng ta biết như là 0? Hoặc đặt tương đương, những gì số tôi đại diện cho bây giờ? 0, bởi vì các thiết bị tắt. Và nếu tôi làm điều này? Và bây giờ, tôi phải làm gì đại diện cho số 2? Tôi có thể mượn điện thoại của bạn ở đây, như chúng tôi đã làm ngày hôm qua? Vì vậy, chúng ta hãy xem, vì vậy nếu tôi muốn đại diện cho số 2, đây là số 2? Không. số gì tôi vô tình đại diện ở đây? Điều này thực sự là số 3. Vì vậy mà một trong những Tôi muốn tắt? Chiếc điện thoại đen or-- tốt, nếu và-- điện thoại màu đen hoặc các điện thoại màu trắng? Chiếc điện thoại màu trắng. Vì vậy, nếu tôi tắt này và chúng tôi dòng nó lên trên đây, chúng ta có một 1 tại chỗ của 2 và 0 ở vị trí của 1. Và như vậy bây giờ đại diện cho số 2. Và điều này, Tất nhiên, sẽ là số 3, bởi vì bây giờ cả hai đèn đang ở trên. Và tôi sẽ dừng lại ở đây, nhưng thật là hợp lý nếu tôi muốn đại diện cho các số 4 hoặc 8 hoặc cao hơn, Tôi sẽ cần điện thoại hơn. Nhưng đó là tất cả những gì đang xảy ra. Vì vậy, nếu bạn đã từng nghe nói rằng bên trong của là-- cảm ơn máy tính bạn-- là hàng triệu bóng bán dẫn, đó là chỉ hàng triệu thiết bị chuyển mạch nhỏ nhỏ. Và họ không phải là ánh sáng bóng đèn đó bật và tắt, nhưng họ không thể cho phép điện chảy đâu đó hoặc ngăn chặn nó. Và do đó, có hai của bạn states-- hoặc tắt, bật hoặc tắt. Vì vậy, chúng tôi dường như hiện nay có khả năng này để đại diện cho khái niệm này chúng tôi muốn trong phần cứng thực tế. Nhưng tất cả chúng ta có bây giờ là khả năng đại diện cho số nó sẽ có vẻ. Vì vậy, làm thế nào để chúng tôi đi về đại diện chữ của bảng chữ cái, mà cảm thấy như các loại tiếp theo của tính năng mà bạn sẽ muốn thêm vào một máy tính hiện đại một khi bạn có con số? Và quả thực, nếu bạn nghĩ về nó, lịch sử, máy tính đã được giới thiệu thực sự để phục vụ như máy tính số lượng. Nhưng tất nhiên, những ngày, họ làm nhiều hơn nữa. Ngay cả khi họ khởi động được, bạn thường thấy một hoặc nhiều từ. Vậy làm thế nào để bạn đại diện từ, nếu tất cả các bạn có được, một lần nữa, điện vào cuối của ngày, hoặc tương đương với 0 và 1 của? Yeah. Vâng, tôi có nghĩa là, chúng tôi đã loại ngày hôm qua trong một số hình thức, nơi tại một số điểm, Tôi nghĩ rằng tôi tùy tiện nói rằng, nếu chúng ta muốn đại diện cho các chữ A, chúng tôi chỉ có thể gọi đó là một 1. Đó là trong bối cảnh của mật mã, đó chúng ta chỉ cần một số loại mã, một số loại bản đồ. Vì vậy có lẽ A sẽ được biểu diễn như một 1 và B sẽ được biểu diễn như một 2, và Z sẽ được đại diện như một 26, ví dụ. Và sau đó báo trước là nếu tôi định mã hóa ký tự trong email của tôi hoặc trong các tin nhắn văn bản của tôi như số, tất cả các bạn phải đồng ý sử dụng cùng một tập hợp các công ước. Và quả thực, thế giới đã làm chính xác điều đó. Có một hệ thống trên thế giới gọi là ASCII, American Standard Mã cho trao đổi thông tin, mà chỉ đơn giản là một quyết định một số năm trước rằng con người thực hiện mà quyết định rằng A sẽ bằng, không 1, 2, và 26, và do đó là một forth-- ít different-- nhưng 65, 66, 67. Và tôi sẽ kéo lên một biểu đồ chỉ trong một khoảnh khắc. Nhưng đó là tùy ý. Nhưng nó không quan trọng rằng đó là tùy ý. Thế giới có chỉ là nhất quán. Bây giờ, gần đây hơn, có điều gì đó fancier gọi là Unicode, bởi vì loại của thế giới của nhận ra, sau khi phát minh ra máy vi tính, rằng có nhiều hơn tốt 256 biểu tượng trong thế giới rằng chúng ta có thể muốn để đại diện, đặc biệt là khi bạn giới thiệu ngôn ngữ châu Á và tượng trưng khác cần biểu cảm hơn bạn có thể phù hợp trong phiên bản sớm nhất của mã này, được gọi là ASCII. Vì vậy, thực sự cho phép Unicode bạn sử dụng nhiều hơn 0 và 2. Đặc biệt, bạn giữ nghe byte từ trong xã hội và thậm chí chỉ hôm qua. Và một byte là gì nữa? một byte là gì? Nó chỉ là 8 bit. Vậy điều đó thực sự có nghĩa gì? Vâng, đó có nghĩa là, trước đó, khi chúng tôi đã nói về nhị phân và tôi đã sử dụng tùy tiện ba bit khi chúng tôi nói về binary-- chỗ của 1 nơi của 2, và cũng 4 của place--, một byte chỉ có nghĩa là bạn đang nói chuyện không theo đơn vị của ba nhưng bốn, năm, sáu, bảy tám, mà cho chúng ta nơi 8 của, của 16, 32, 64, và 128. Nói cách khác, một chút không phải là tất cả mà hữu ích một đơn vị đo lường, vì nó chỉ giống như một chút nhỏ mẩu thông tin, hoặc tắt. Vì vậy, cách đây vài năm, thế giới vừa quyết định nó hơi thuận tiện hơn để nói chuyện về byte, tám điều tại một thời điểm. Và như vậy do đó được sinh ra khái niệm về một byte. Và vì vậy chúng tôi có tám bit ở đây. Và hóa ra, quá, cho tương tự lý do, thế giới đã quyết định năm trước đó để đại diện cho một chữ ASCII, bạn sẽ sử dụng các đơn vị của 8 bit. Vì vậy, ngay cả khi bạn không cần nhiều, bạn luôn luôn sử dụng 8 bit để đại diện cho một lá thư của bảng chữ cái. Và điều này là thuận tiện, bởi vì sau đó nếu bạn nhận được thông báo có một 0 0 0 1 1 1 1 0 theo sau bởi một 1 1 1 0 1 0 0 1, vì vậy nếu bạn nhận được 16 bit, thế giới có thể chỉ giả định rằng 8 đầu tiên là một lá thư và thứ hai 8 là một lá thư khác. Không quan trọng bao nhiêu có. Nó chỉ là vấn đề mà chúng tôi tất cả phù hợp khi chúng ta diễn giải các bit. Và điều này đã được chỉ là ngẫu nhiên. Điều đó có nghĩa là một cái gì đó, nhưng tôi đã không thực sự suy nghĩ về ý nghĩa của nó. Vì vậy, đó là một lời nói dối nhỏ màu trắng. Ban đầu, ASCII thực tế sử dụng chỉ có 7 bit. Và bit thứ tám là gọi là ASCII mở rộng. Nhưng vấn đề là, cuối cùng, giống nhau. thế giới nói chung tiêu chuẩn hóa trên 8 bit. Vì vậy, đây có vẻ như là một chút hạn chế, bởi vì tôi chỉ có thể đại diện vốn A, vốn B qua Z. vốn Nhưng thực sự không, nếu tôi đi với: có một loạt các nguồn tài nguyên trực tuyến, ví dụ, asciitable.com, điều này sẽ là một chút áp đảo lúc đầu. Nhưng tôi sẽ chỉ ra điều quan trọng ở đây. Điều này chỉ xảy ra với be-- và tôi sẽ walk-- chúng ta hãy xem, nếu tôi đi qua đây. Dưới đây là, trong số thập phân cột, số 65. Và vào chữ cái cột bên phải nhân vật, Chr, là chữ A. Và bạn có thể bỏ qua, bây giờ, tất cả mọi thứ ở giữa. Đây là hệ thập lục phân, bát phân, và một mã HTML. Để trang web này chỉ đang cố gắng để ném rất nhiều thông tin ở bạn cùng một lúc. Nhưng tất cả chúng ta quan tâm là số thập phân cột và cột nhân vật. Vì vậy, theo logic này, những gì là số cho rằng thế giới đã quyết định đại diện cho một chữ thường a? Yeah, 97. Và chỉ để gây nhầm lẫn có khả năng một chút, những số đã quyết định thế giới sẽ đại diện cho số 1? Phải, vì we-- 49, có vẻ như ở đây, xuống ở phía dưới bên trái. Bây giờ, những gì tôi có nghĩa là bằng cách đó? Vì vậy, nó chỉ ra rằng trong các hệ thống máy tính, có chung một là Sự khác biệt cơ bản giữa một số và một nhân vật. Một số là những điều chúng tôi học ngày càng tăng lên khi chúng tôi là siêu trẻ ở trường lớp. Đó là điều bạn đếm với. Tuy nhiên, một nhân vật chỉ là một hình dạng, một hình tượng, có thể nói, trên màn hình. Bây giờ, con người chúng ta loại thấy cái gì đó trông như thế này. Và chúng ta nói, ồ, đó là số 2. Nhưng không, đó chỉ là một biểu tượng trông giống như những gì chúng ta biết là số 2. Và do đó, có này khác biệt cơ bản giữa số và ký tự thực tế. Đây là một con số. Nhưng nói chung, trong bối cảnh của một máy tính, nếu bạn thay vì nhìn thấy một cái gì đó giống như quoted-- này và bạn không luôn luôn phải nhìn thấy nó được trích dẫn, nhưng vì lợi ích của discussion-- nếu bạn nhìn thấy dấu ngoặc kép quanh số, này bây giờ là một nhân vật. Vì vậy, đây số 2 bên dưới mui xe bên trong máy tính sẽ được trình bày với một mô hình bit đại diện cho số lượng 50 theo bảng xếp hạng trực tuyến. Tuy nhiên, nếu một máy tính chỉ nhìn thấy điều này, điều này sẽ được đại diện với mô hình của các bit 0 0 0 0 0 0 1 0. Trong khi đó, nhân vật này sẽ thực sự được đại diện as-- và bây giờ, Tôi đã suy nghĩ một chút harder-- vì vậy đây nhân vật sẽ được đại diện với 0 0 1-- những gì tôi cần ở đây? 0 0 1 1 0 0 1 0. Làm thế nào tôi làm điều này? Vâng đây là số 50, nếu bạn nhân nó bằng cách sử dụng các cột này, đây là số 2, vv đó là lý do tại sao có sự phân đôi này. Và đây chỉ là một là trêu ghẹo bây giờ cho các tính năng tồn tại trong ngôn ngữ lập trình rằng chúng tôi sẽ chạm vào một thời gian ngắn sau ngày hôm nay. Trong các ngôn ngữ lập trình, bạn có nói chung, nhưng không phải lúc nào, những điều gọi các kiểu dữ liệu khác nhau. Nói cách khác, một programmer-- khi anh ta hoặc cô ấy đang viết, một lập trình được quyết định trong những gì định dạng để lưu trữ dữ liệu của mình. Bạn có thể lưu trữ dữ liệu như số liệu, như số 2. Hoặc bạn có thể lưu trữ chúng như dây đàn, hoặc chuỗi ký tự mà bạn thường sẽ thể hiện với dấu ngoặc kép trong ngôn ngữ lập trình của bạn. Bạn có thể có những thứ called-- Tôi sẽ đơn giản hóa và gọi cho họ numbers-- thực để con số đó không phải là số nguyên như số 2, nhưng số thích 4,56. Vì vậy, con số thực tế còn có thể có điểm thập phân, vì vậy đó là một khác nhau cơ bản phần dữ liệu trong máy tính. Và sau đó bạn thậm chí có thể có các kiểu dữ liệu khác vẫn còn. Vì vậy, đó chỉ là một lời trêu ghẹo thực sự của đơn giản nhất của quyết định thiết kế mà một lập trình might thực hiện dưới mui xe. Vì vậy, bất kỳ câu hỏi chỉ được nêu ra? Vì vậy, hãy cố gắng làm cho thực tế hơn một chút. Phần cứng này không phải là rất nhiều trong sử dụng nữa. Nhưng hầu hết mọi người trong phòng này có lẽ lớn lên với và vẫn sử dụng ổ đĩa cứng một cách nào đó. Mặc dù hầu hết các máy tính xách tay của chúng tôi không còn có các thiết bị hoạt động như thế này, thay vì máy tính xách tay ngày nay thường có ổ đĩa trạng thái rắn không có bộ phận chuyển động. Và đó có xu hướng đắt hơn, không may, nhưng nhanh hơn một chút và là-- tốt, thường xuyên, nhanh hơn rất nhiều, đó là một trong những lý do. Và cũng nó không tạo ra nhiều nhiệt. Nó có thể là nhỏ hơn, do đó, nó nói chung là một ròng dương. Nhưng điều này cho phép chúng tôi để bản đồ ít cụ thể hơn là những gì chúng ta đang nói về tại 0 và 1 của dân bây giờ đến một thiết bị vật lý. Đó là một điều cho tôi để nói chuyện về 0 và 1 trong các điều khoản điện thoại của tôi hay trừu tượng về các chuyển mạch được bật và tắt. Nhưng những gì về ổ đĩa cứng? Trong máy tính xách tay của bạn, nếu bạn có một cũ một hoặc trong máy tính để bàn của bạn, hoặc chắc chắn trong các máy chủ ngày hôm nay, nơi bạn có ổ đĩa cứng có một terabyte của không gian, 4 terabytes của không gian, cũng có nghĩa là gì? Một ổ đĩa cứng với 1 terabyte các phương tiện không gian có 1 nghìn tỷ byte bên trong của nó bằng cách nào đó, hoặc tương đương 8 nghìn tỷ bit bên trong. 1 terabyte sẽ là 8 terabit hoặc 1 nghìn tỷ bit, mà có nghĩa là nếu bạn có một khó khăn ổ đĩa, bạn có bằng cách nào đó hoặc khác một nghìn tỷ của 0 và 1 nhân bên trong của nó. Và nếu chúng ta chỉ có một cái nhìn tại một hình ảnh tùy ý của một ổ đĩa cứng đại diện, đây là điều khó ổ đĩa thường có thể trông giống như bên trong. Nó cũng là loại giống như một cầu thủ quay đĩa cũ nhưng nói chung với nhiều hồ sơ bên trong, do để speak-- nhiều đĩa cứng, như chúng được gọi, kim loại đĩa tròn, và sau đó một chút đọc đầu, giống như một máy thu âm cũ. Và đó là đầu đọc di chuyển trở lại và ra và bằng cách nào đó đọc các bit. Và những gì trên những đĩa cứng, thậm chí mặc dù con người chúng ta không thể nhìn thấy chúng, hoặc là trong thực tế hoặc trong ảnh này, có các hạt từ tính nhỏ nhỏ. Và thậm chí nếu bạn đã lâu quên các công trình điện như thế nào, một hạt từ tính đó là tính chung có một kết thúc phía bắc và phía nam end-- nên phía bắc và phía nam. Và do đó, trên thế giới chỉ quyết định một số thời gian trước đây rằng, nếu một giao thức từ cơ bản là liên kết như thế này, phía bắc-nam, hãy gọi đó là 1. Nếu đó là thay vì phía bắc, chúng ta hãy gọi đó là 0. Và vì vậy nếu bạn có ít bạn sử dụng một tỷ ít nhỏ từ particles-- và hy vọng, sự khéo léo trong phần cứng để lật những người xung quanh như bạn thấy fit-- nếu bạn muốn đại diện cho một bó toàn bộ 0, bạn chỉ cần 8 hạt từ tính tất cả các liên kết như thế này. Và nếu bạn muốn đại diện Tám 1, bạn chỉ cần 8 hạt từ tính liên kết trở lại trở lại để trở lại như thế này. Tôi có ý nghĩa gì bởi các hạt từ tính? Thành thật mà nói, tất cả những năm sau đó, điều đó vẫn đến để tâm trí của tôi là anh chàng này, nếu bạn lớn lên với điều này. Đây là một little-- cho những unfamiliar-- một ít đồ chơi thời thơ ấu mà có người đàn ông không có lông này ở đây đó có tất cả các màu đen nhỏ nhỏ các hạt từ tính đi kèm với nó. Và sử dụng mà dính màu đỏ, mà chỉ là một nam châm, bạn có thể sắp xếp cho anh ta một bộ ria mép hay lông mày hoặc lông hay bất cứ điều gì về anh ta. Vì vậy, trong thực tế, nếu chúng tôi phóng to trong, ví dụ, điều này là loại trò chơi bạn có thể chơi với Wooly Willy. Và điều này chỉ là để nói, những là các hạt từ tính lớn hơn nhiều hơn là thực sự trên một ổ đĩa cứng, và các hạt từ tính rất ít. Nhưng chúng ta hãy thực sự nhìn thấy sau đó nếu bạn có các hạt từ cực nhỏ trong một ổ cứng, làm thế nào bạn có thể thực sự sử dụng những người đại diện cho dữ liệu. [XEM LẠI VIDEO] -Các Ổ cứng là nơi máy tính của bạn cửa hàng hầu hết các dữ liệu thường trú của nó. Để làm được điều đó, các dữ liệu đi từ bộ nhớ RAM cùng với tín hiệu phần mềm cho các ổ cứng như thế nào để lưu trữ dữ liệu đó. Các mạch ổ cứng dịch những tín hiệu vào biến động điện áp. Những điều này, đến lượt nó, kiểm soát các ổ đĩa cứng di chuyển parts-- một số ít các chuyển động phần còn lại trong máy tính hiện đại. Một số của các tín hiệu điều khiển động cơ, mà quay đĩa kim loại tráng. Dữ liệu của bạn là thực sự lưu trữ trên các đĩa cứng. các tín hiệu khác di chuyển đầu đọc / ghi để đọc hoặc ghi dữ liệu trên đĩa cứng. máy móc thiết bị này là rất chính xác rằng một sợi tóc của con người có thể thậm chí không vượt qua giữa người đứng đầu và quay đĩa. Tuy nhiên, tất cả hoạt động ở tốc độ tuyệt vời. [END PLAYBACK] Và bạn có thể nhìn thấy ở đuôi cuối của video, nói chung có nhiều đĩa cứng. Và vì vậy mà đầu đọc không chỉ đọc trên. Đó là loại giống như ba hoặc hoặc nhiều hơn bốn đầu đọc rằng động thái như thế này, đọc dữ liệu đồng thời. Vì vậy, có rất nhiều phức tạp và phân loại của thời gian đó là tham gia vào một ổ đĩa cứng. Và điều đang quay thực sự darn nhanh chóng, do đó, có rất nhiều phức tạp. Nhưng chúng ta hãy phóng to một chút sâu hơn và thấy ở đâu các hạt từ tính và làm thế nào chúng tôi nhận được vào họ. [XEM LẠI VIDEO] nhìn -Let của những gì chúng ta chỉ thấy trong chuyển động chậm. Khi một xung ngắn gọn về điện được gửi đến đọc / ghi đầu, nó flips trên điện nhỏ cho một phần nhỏ của một giây. Các nam châm tạo ra một lĩnh vực, làm thay đổi sự phân cực của một nhỏ xíu, nhỏ xíu phần của các hạt kim loại mà áo bề mặt của mỗi platter. Một loạt mô hình của những nhỏ khu vực tính lên trên đĩa đại diện cho một bit dữ liệu trong hệ thống số nhị phân sử dụng máy tính. Bây giờ, nếu hiện tại được đưa ra chỉ một cách thức thông qua việc đọc / ghi đầu, khu vực được phân cực theo một hướng. Nếu hiện nay đều được gửi theo hướng ngược lại, sự phân cực đảo ngược. Làm thế nào để bạn nhận được dữ liệu từ đĩa cứng? Chỉ cần đảo ngược quá trình. Vì vậy, nó là các hạt trên đĩa mà có được hiện tại trong đọc / ghi đầu di chuyển. Đặt cùng hàng triệu các phân đoạn từ hóa, và bạn đã có một tập tin. Bây giờ, các mảnh của một tập tin duy nhất có thể rải rác trên tất cả các đĩa cứng của một ổ đĩa, loại giống như sự lộn xộn các giấy tờ trên bàn của bạn. Vì vậy, một tập tin thêm đặc biệt giữ theo dõi, nơi mọi thứ. Cậu không muốn bạn có một cái gì đó như thế? [END PLAYBACK] Vì vậy, được ám chỉ ở đó, có lẽ, là chủ đề đó từ ngày hôm qua sau khi xóa. Khi bạn xóa một tập tin, ngày hôm qua chúng tôi đã nói mà một máy tính thực sự làm cái gì, khi bạn kéo một cái gì đó vào thùng thùng hoặc thùng rác? Nó chỉ để quên nó. Nhưng của 0 và 1 của, các hạt từ tính mà nhìn như màu đỏ và màu xanh mọi thứ ở đây, hoặc cánh tay của tôi ở đây, vẫn còn đó trên ổ đĩa cứng. Và như vậy có tồn tại software-- Norton Utilities và năm qua và hiện đại hơn khác software-- rằng chỉ sẽ quét một ổ đĩa cứng toàn bộ tìm kiếm ở tất cả những người của 0 và 1, bởi vì nó chỉ ra rằng hầu hết các định dạng khác tập các tài liệu Word, Excel, hình ảnh, Video files-- tất cả đều có một số mô hình được phổ biến trong số đó. Mỗi tập tin video có thể được của một video khác nhau, nhưng một số đầu tiên bit là thường là như nhau. Hoặc vài bit cuối cùng thường giống nhau. Và do đó, với xác suất cao, bạn có thể tìm kiếm những người mẫu. Và thậm chí nếu các tập tin đã bị lãng quên, bạn có thể nói với xác suất cao, nhưng điều này có vẻ giống như một tài liệu Word, cho phép phục hồi nó và bỏ quên nó, nếu bạn sẽ. Và đó là cách bạn có thể phục hồi dữ liệu đó là một trong hai đã vô tình xóa hoặc bị xóa hoặc cố ý xóa cho bất kỳ mục đích. Ngược lại, xóa an toàn những gì trong bối cảnh của một bức tranh như thế này? Chính xác, làm cho tất cả chúng ngẫu nhiên. Vì vậy, nó loại di chuyển một số chúng xuống, một số trong số họ lên, lá số của họ không thay đổi, và thường làm cho tiếng ồn ngẫu nhiên trong số đó, hoặc chỉ có thể làm cho tất cả họ có 0 hay tất cả chúng 1. Và rằng quá có thể nói chung chà dữ liệu của bạn đi. Vì vậy, chúng ta hãy trở lại với doanh nghiệp về vấn đề này của tư duy tính toán, theo đó chúng tôi có các đầu vào công thức. Và các thuật toán cho bạn kết quả đầu ra cuối cùng. Chúng tôi tập trung tại đầu vào và kết quả đầu ra, bởi vì bây giờ, tôi khẳng định chúng ta có một cách đại diện cho đầu vào và đầu ra. Chúng tôi chỉ sẽ sử dụng hệ nhị phân. Và không có vấn đề gì chúng tôi muốn đại diện cho ngày hôm nay, cho dù đó là một con số hoặc một lá thư hoặc hàng ngàn đó trong một cuốn sách điện thoại hoặc hình ảnh hoặc phim, cuối cùng trong ngày, đó là tất cả 0 và 1. Và tôi cho rằng, mặc dù điều này là một thế giới siêu đơn giản chỉ với 0 của và 1, chúng ta có thể xây dựng bản thân mình lên. Và chúng tôi đã nhìn thấy một ví dụ về rằng với chữ cho đến nay. Vì vậy, hãy tập trung tại trên này thành phần trung lưu, một thuật toán. Và chúng ta hãy quay trở lại này Ví dụ của Mike Smith. Vì vậy, trong danh bạ điện thoại này, mà phải thừa nhận, chúng tôi không sử dụng quá nhiều nữa, có một vấn đề cần được giải quyết. Chúng tôi muốn tìm một người như Mike Smith. Và những gì tôi có thể làm gì để tìm Mike? Vâng, tôi chỉ có thể mở ra này cuốn sách, bắt đầu từ trang đầu tiên, và nhận ra, oh, tôi là trong phần A. Mike không có ở đó. Tôi cần phần S cho Smith. Vì vậy, chỉ giữ chuyển một trang tại một thời điểm. Hãy để tôi giả vờ rằng đây là tất cả trang trắng và không có các trang vàng, bởi vì chúng ta sẽ không tìm thấy Mike trong những trang vàng anyway. Nhưng tôi đang ở trong các trang trắng. Và bây giờ, tôi đang ở trong phần B. Tôi vẫn chưa tìm thấy anh ta. Vì vậy, tôi giữ chuyển một trang tại một thời điểm. Đây là một thuật toán. Đó là một tập hợp các hướng dẫn để giải quyết một số vấn đề. Nói cách khác, nhìn vào trang, nếu Mike không phải vào nó, lật trang, và lặp đi lặp lại Một lần nữa và một lần nữa, lý tưởng nhìn xuống như bạn đang làm nó. Vì vậy, là thuật toán này, quá trình này, đúng không? Lấy làm tiếc. Không, tôi nghe một số nos. OK, nhưng nó hợp-- yeah, nó chắc chắn tẻ nhạt. Giống như, chúng ta sẽ ở đây cả ngày nếu tôi tiếp tục tìm cho Mike ở tốc độ này. Nhưng hãy để tôi khẳng định nó là đúng. Đó là ngu ngốc, nhưng đó là chính xác. Vào cuối ngày, miễn là nó có thể mất, tôi sẽ tìm thấy Mike nếu ông ở trong đó và tôi chú ý. Và cuối cùng tôi đến trang của mình. Và nếu tôi nhận được quá xa, nếu Tôi nhận được phần T, sau đó tôi hơi có thể tối ưu hóa và chỉ nói, hm, làm tất cả. Tôi thậm chí không cần phải lãng phí thời gian đi đến Z. Nhưng điều này là rất tiếp cận tuyến tính, nếu bạn sẽ, rất loại trái sang phải cách tiếp cận, một đường thẳng. Và đúng nhưng chậm. Vì vậy, tôi nhớ từ trường lớp, sắp xếp của một tối ưu hóa từ một học sinh lớp đầu tiên, nơi tôi đã học được cách để đếm không bởi những người mà bởi twos-- do đó, 2, 4, 6. Đó là A, rất nhiều khó khăn hơn để làm, nhưng trong lý thuyết, đó là faster-- 8, 10, 12, 14, và vv. Làm thế nào về thuật toán? Có hiệu quả hơn? Là nó nhanh hơn? Đung Đó là hiệu quả. DAVID Malan: Yeah, vì vậy nó def-- nó nghĩa là nhanh gấp hai lần, giả sử tôi không bị vấp với ngón tay của tôi. Đó là nhanh gấp hai lần, bởi vì Tôi quay qua hai trang cùng một lúc thay vì một, nhưng nó tiềm ẩn trong chính xác, bởi vì tại sao? Đung Bạn đang bỏ qua một số. DAVID Malan: Đúng vậy, nếu những gì xảy ra Mike được sandwiched-- có lẽ khi tôi sau trong sổ điện thoại, Mike sẽ xảy ra là kẹp giữa hai trang này, và tôi chỉ nhắm mắt bỏ qua nó. Vì vậy, chúng ta cần một chút sửa chữa đó. Khi tôi nhấn phần T, tôi có thể không chỉ tự tin nói, chúng tôi không tìm thấy Mike Smith. Tôi có lẽ phải tăng gấp đôi lại. Hoặc trong thực tế, một khi tôi đạt được một ai đó tên là S-N, thay vì S-M cho Smith, ngay lập tức, tôi có thể tăng gấp đôi trở lại, bởi vì có lẽ anh là ở trang trước. Nhưng tôi không phải tăng gấp đôi trở lại đến nay. Về lý thuyết, nếu tôi làm điều đó ở bên phải thời gian, tôi chỉ cần đi trở lại một trang. Vì vậy, nó chỉ thêm một bước. Vì vậy, tôi đã đi nhanh gấp hai lần, nhưng chi phí cho tôi một trang thêm. Nhưng mà cảm thấy như một chiến thắng net. Nhưng đây không phải là cách hầu hết mọi người trong phòng này sẽ giải quyết vấn đề này. Điều gì sẽ là một người tiêu biểu, có thể một vài năm trước đây làm, tìm Mike Smith? Vâng, không tìm thấy Mike. Tôi làm gì? Vì vậy, gần thêm một chút, nhưng tôi làm know-- gì là sự thật về một cuốn sách điện thoại? Đung Đó là tuần tự. DAVID Malan: Đó là tuần tự. Đó là chữ cái. Và như vậy nếu anh ở phần M, Mike rõ ràng là bên phải, Tôi nghĩa là có thể xé các vấn đề trong half-- nó thường dễ dàng hơn so với nước mắt mà-- các vấn đề trong một nửa và vứt nó đi, vì vậy mà bây giờ, tôi có một vấn đề đó là không còn 1.000 pages-- đó là khó khăn, bởi vì tôi nghĩ rằng tôi thực sự xé danh bạ điện thoại này không time-- 1.000 trang, nhưng 500. Vì vậy, vấn đề là nghĩa đen nửa là lớn. Và đó là khá hấp dẫn, vì với các thuật toán trước đây của tôi, phiên bản 1 và 2, tôi đã chỉ làm cho vấn đề một trang nhỏ hơn, hai trang nhỏ hơn tại một thời điểm. Trong khi đó, bây giờ, tôi đã làm cho nó 500 trang nhỏ hơn tất cả cùng một lúc. OK, vì vậy bây giờ, Karim đề xuất rằng tôi đi đến nửa bên phải. Vì vậy, tôi sẽ đi khoảng vào giữa, cho hoặc mất. Và nếu tôi đã làm điều này bằng toán học, Tôi có thể đi ngay vào giữa. Và bây giờ, tôi nhận ra, oh, Tôi đang ở phần T. Tôi thực sự đã đi quá xa. Nhưng tôi có thể, một lần nữa, xé vấn đề trong một nửa, vứt nó đi. Và byte của tôi không phải là lớn. Nó chỉ có, cái gì, 256 trang hoặc 250 trang, cho hay phải mất ngay bây giờ. Nhưng nó vẫn còn cách hơn hơn một trang hoặc hai trang. Và vì vậy bây giờ, tôi đi khoảng vào giữa. Oh, tôi đã không đi khá xa đủ bây giờ. Vì vậy, tôi lặp lại, lặp lại, lặp lại, lặp lại, cho đến khi tôi hy vọng còn lại chỉ có một trang. Vì vậy, mời các câu hỏi, nếu tôi bắt đầu với khoảng 1.000 trang, bao nhiêu bước đã làm nó mất tôi với phiên bản 1 của thuật toán của tôi? Vâng, nếu Mike là trong S phần, trong trường hợp xấu nhất, đó là khá gần cuối của bảng chữ cái. Vì vậy, nếu các cuốn sách điện thoại có 1.000 trang, Tôi sẽ tìm thấy Mike trong 1.000 trang, cho hoặc mất. Có lẽ nó giống như 800 hay như vậy, nhưng nó khá gần 1.000. Trong khi đó, trong lần thứ hai thuật toán, bao nhiêu Trang quay tối đa có thể tôi yêu cầu để tìm Mike Smith? Có 1.000 trang, nhưng tôi làm cho họ hai người tại một thời điểm. Phải, để tối đa như 500ish, vì nếu tôi đi qua các cuốn sách điện thoại toàn, tại thời điểm đó, tôi có thể dừng lại. Nhưng tôi có thể cạo một vài bằng chỉ dừng lại ở phần T. Nhưng đó là ở trường hợp xấu nhất 500 trang. Vì vậy, bao nhiêu lần tôi có thể chia một 1,00o trang danh bạ điện thoại trong nửa lại và một lần nữa và again-- từ 1000 500 250 đến 125? Bao lâu trước khi tôi nhấn một trang? Vâng, đó là khoảng 10. Tùy thuộc vào làm tròn và như vậy, đó là khoảng 10 trang tổng cần phải được bật hoặc sách điện thoại cần phải được xé. Vì vậy, đó là khá mạnh mẽ. Chúng tôi bắt đầu với một vấn đề 1.000 trang trong tất cả ba tầng. Nhưng trong thuật toán đầu tiên, nó đưa tôi, trường hợp xấu nhất, 1.000 trang quay sang tìm Mike. Thuật toán thứ hai, 500 trang tìm Mike. Thuật toán thứ ba, 10 trang để tìm Mike. Và nó thậm chí còn nhiều hơn mạnh mẽ khi bạn nghĩ về sắp xếp của một kịch bản ngược lại. Giả sử rằng công ty điện thoại tiếp theo năm có thể sáp nhập hai thị trấn với nhau, và danh bạ điện thoại là bất ngờ này dày, thay vì điều này mà, quá 2.000 trang thay vì 1.000. Vâng, thuật toán đầu tiên tôi tìm kiếm Mike Smith trong một cuốn sách điện thoại 2.000 trang, trường hợp nặng hơn, nó sẽ mất có bao nhiêu trang biến trong năm tới? Điện thoại cuốn sách là 2.000 trang, vậy-- tốt, không một nhiều hơn. Nếu cuốn sách điện thoại gấp đôi dày các thuật toán đầu tiên, thuật toán đầu tiên, 2000, phải không? Trong trường hợp xấu nhất, Mike thực sự là đóng đến cuối của cuốn sách, vì vậy nó là 2.000 lượt trang. Thuật toán thứ hai đi theo twos, như 1.000 trang. Nhưng làm thế nào về vị trí thứ ba của tôi và thuật toán gần đây nhất? Nếu các công ty điện thoại tăng gấp đôi số trang từ 1.000 đến 2.000, bao nhiêu lần cần tôi xé rằng cuốn sách trong nửa để tìm Mike? Đung Chỉ cần một. DAVID Malan: Chỉ cần một nhiều hơn, bởi vì với một giọt nước mắt trang, Tôi nghĩa là có thể phân chia và chinh phục, nếu bạn muốn, rằng vấn đề trong nửa lấy một vết cắn lớn ra khỏi nó. Và vì vậy đây là một ví dụ về hiệu quả và cho là một thuật toán mà tất cả chúng ta loại trực giác quen thuộc. Nhưng nó chỉ là đúng như các thuật toán khác của tôi với tinh chỉnh cho các thuật toán thứ hai, nhưng nó rất hiệu quả hơn nhiều. Và trên thực tế, những gì một máy tính nhà khoa học, hoặc lần lượt một lập trình viên, thường sẽ làm gì khi viết đang cố gắng tìm ra, tất cả các quyền, tôi không muốn tôi chương trình chỉ được chính xác, Tôi cũng muốn nó được hiệu quả và giải quyết vấn đề tốt. Hãy tưởng tượng trong thế giới thực ngày hôm nay, như chỉ số của Google, tìm kiếm như tỷ trang, hãy tưởng tượng nếu họ sử dụng các thuật toán đầu tiên để tìm mèo giữa một tỷ pages-- nhìn trang đầu tiên trong cơ sở dữ liệu của họ, thứ hai, thứ ba, chỉ cần tìm kiếm cho một con mèo, tìm kiếm một con mèo. Đó là khá darn chậm nó sẽ có vẻ. Thay vào đó họ có thể sử dụng một cái gì đó gọi là tìm kiếm nhị phân, mà không bi coincidence-- nghĩa hai, chúng tôi giữ phân chia một cái gì đó trong 2, trong half-- họ có thể sử dụng tìm kiếm nhị phân và có thể tìm thấy mèo thậm chí nhanh hơn, hoặc bất cứ điều gì nó là bạn đang tìm kiếm. Và thẳng thắn, có thậm chí các thuật toán fancier mà làm nhiều hơn là chỉ chia điều trong nửa để tìm thông tin nhanh chóng. Và chúng tôi sẽ nói một chút về những người sau khi ăn trưa ngày hôm nay. Vì vậy, hãy để tôi chỉ cần cố gắng để đại diện này. Chúng tôi không cần phải đi vào bất kỳ môn toán hoặc số thực tế. Chúng ta có thể nói về điều này một cách trừu tượng. Nhưng hãy để tôi chỉ đề nghị, nếu bạn đã có một cuộc thảo luận hiện nay với các kỹ sư đề xuất các thuật toán này và bạn đang cố gắng để làm cho một quyết định tính, bởi vì có lẽ các kỹ sư nói với bạn, bạn biết những gì, tôi có thể thực hiện một tìm kiếm tuyến tính trong giống như hai phút. Thật dễ dàng. tìm kiếm nhị phân là không ưa thích mà, nhưng nó sẽ đưa tôi giống như 10 phút, như vậy 5 lần như lâu dài. Có một thương mại ở đây, ngay cả trong điều kiện các quyết định phần mềm nào để viết. Do bạn viết các thuật toán đơn giản, mà sẽ chỉ mất khoảng hai phút? Hay bạn dành nhiều thời gian, 10 phút, viết các thuật toán fancier? Làm thế nào để bạn quyết định rằng loại câu hỏi? Hoặc bạn có thể làm cho nó thêm một chút thực. Tôi nói với ông chủ của tôi nó sẽ mất tôi hoặc là một tuần hoặc 10 tuần để thực hiện phần mềm theo cách này, làm thế nào để bạn quyết định thuật toán để màu xanh lá cây ánh sáng? Karim? Đung Các khán giả, tôi đoán. DAVID Malan: Các khán giả. bạn có ý nghĩa gì bởi các khán giả? Đung Nếu nó sẽ được sử dụng bởi người dùng người [IM LẶNG] bởi người dùng [IM LẶNG]. Nhưng nếu đó là một cái gì đó bạn chỉ làm cho chính mình để tạo điều kiện cho một vấn đề, [IM LẶNG] nhanh hơn. DAVID Malan: Vâng, nó nhanh chóng và bẩn là một cách tốt để mô tả nó. Trong thực tế, nếu bạn mô tả nhiều thời gian của tôi học ở đại học, theo đó thường lần, Tôi đã viết mã xấu có ý thức vậy-- ít nhất, đó là cách tôi hợp lý hóa it-- ý thức như vậy, vì mặc dù tôi đã viết mã đó là tương đối chậm để thực hiện, Tôi đã có thể viết mã riêng của mình khá nhanh, chi tiêu chỉ trong vài phút hoặc giờ không phải ngày. Và nó bật ra, tôi đôi khi cần thiết để ngủ. Vì vậy, ngay cả khi mã của tôi yêu cầu 8 giờ để chạy, cũng đó là tốt, Tôi sẽ chỉ đi vào giấc ngủ trong khi nó chạy. Vì vậy, tại thời điểm đó, tôi nghĩ đây là rất thông minh, mặc dù tôi rõ ràng làm việc thông qua tiến sĩ của tôi rất chậm. Nhưng chuyện đó là rằng, nếu tôi đã viết phần mềm cho người khác quan trọng ấy nhiều hơn tôi, cũng, có cho họ chờ đợi 8 giờ đến nhận lại kết quả tìm kiếm của họ không phải là tất cả những gì hấp dẫn. Và do đó, dành nhiều thời gian lên phía trước để viết phần mềm đó là hiệu quả hơn, như thuật toán thứ ba của chúng tôi, có thể đem lại lợi ích cho người sử dụng theo thời gian. Vì vậy, nó thực sự phụ thuộc qua thời gian như thế nào những chi phí thêm lên. Nếu bạn đang đi để được viết phần mềm để sử dụng nó một lần, có lẽ cũng có thể làm nhanh chóng và dơ bẩn, như họ nói. Chỉ cần ném nó lại với nhau. Đó là mã bối rối bạn, nó rất xấu, nhưng nó được công việc làm đúng, mặc dù nó không hiệu quả. Ngược lại, bạn dành nhiều thời gian trên một cái gì đó, làm cho nó vừa phải. Và sau đó phân bổ dần theo thời gian, chi phí mà trả trước thời gian có lẽ là đáng giá, nếu bạn giữ tối ưu hóa cho các trường hợp thông thường. Và quả thực, đó là một chủ đề trong lập trình, hoặc máy tính khoa học hơn nói chung, cố gắng tối ưu không cho các trường hợp hiếm gặp nhưng case-- chung những gì hoạt động sẽ xảy ra một lần nữa và một lần nữa? Nếu bạn đang đi để có tỷ người sử dụng tìm kiếm trên trang web của bạn, có lẽ bạn nên dành thêm tuần lên phía trước bằng văn bản phần mềm tốt hơn, để tất cả người dùng của bạn được hưởng lợi. Bây giờ, chúng ta hãy cố gắng nắm bắt một này ít những bức tranh, nhưng không quá nhiều số lượng. Vì vậy, đây chỉ là một biểu đồ trường học cũ. Và hãy để tôi nói rằng đây là thời gian. Và nó không quan trọng what-- thực sự, không, không phải thời gian. Hãy đặt mà trên trục khác. Hãy nói rằng đây là thời gian, và đây là kích thước của vấn đề. Và một nhà khoa học máy tính nói chung có thể gọi chỉ n này. n là như đi-đến biến của chúng tôi, nơi n là một số, số n, và đó là số lượng của bất cứ yếu tố đầu vào mà bạn có. Vì vậy, trong trường hợp này, n là số trang. Vì vậy, nó có thể là 1.000 các trường hợp, chúng tôi chỉ nói. Vì vậy, thời gian có thể được bất kỳ đơn vị đo lường. Có lẽ, đó là thứ hai. Có lẽ, đó là ngày. Có lẽ, nó giống như lượt trang. Không quan trọng. Dù bạn muốn đếm trong, mà sẽ có thời gian hoặc chi phí tương đương. Vì vậy, với điều đó đầu tiên thuật toán, nếu tôi, ví dụ, đã có một cuốn sách điện thoại 1.000 trang, Tôi sẽ vẽ một dấu chấm ở đó, bởi vì nếu nó là 1.000 trang, nó mất khoảng 1.000 trang biến, cho hoặc mất. Và sau đó nếu tôi có một Danh bạ điện thoại 2000 trang, và tôi sẽ vẽ một giây rải rác ở đây, bởi vì đối với 2.000 trang, nó giống như 2.000 giây hoặc trang biến hoặc bất cứ điều gì. Và vì vậy khi tôi đã nói trước đó, nó loại một mối quan hệ tuyến tính, đó là cố ý, vì tôi muốn sau on-- đúng now-- để vẽ một đường thẳng. Đó là loại thẳng mối quan hệ dòng. Độ dốc là 1/1, nếu bạn muốn. Trong khi đó, các thuật toán thứ hai cho biết, nếu bạn đã có 1.000 trang và bạn đang sử dụng các thuật toán thứ hai, nơi tôi tính bằng 2, biến hai trang cùng một thời gian, tôi sẽ vẽ một dấu chấm phía dưới hoặc trên chấm ban đầu của tôi? Đung Dưới đây. DAVID Malan: Dưới đây, vì như chúng ta đã thấy, phải mất ít thời gian hơn, bằng một nửa thời gian. Vì vậy, các dấu chấm nên được một nửa cao như người kia. Và cùng một thỏa thuận trên đây, dấu chấm này có lẽ nên được khoảng đó. Và do đó, thuật toán thứ hai của tôi, tương tự, có một mối quan hệ tuyến tính với thời gian. Và chúng ta có thể rút ra nó là như vậy. Vì vậy, bây giờ, thứ ba và cuối cùng Thuật toán là một chút khó khăn hơn để vẽ. Nhưng bằng trực giác, nếu tôi đã có 1.000 trang với thuật toán thứ ba của tôi, nó chỉ nên đưa tôi như 10 bước. Và nếu tôi đã có 2.000 trang với thuật toán thứ ba của tôi, nó sẽ đưa tôi chứ không phải 10 bước, nhưng 11, chỉ một nhiều hơn. Vì vậy, chúng tôi chỉ vừa đủ sẽ thấy điều này. Và hóa ra, nếu Tôi phóng về điều này, tôi sẽ phóng đại cho hiệu quả, hình dạng của dòng đó, cuối cùng, không phải là một line-- thẳng bởi vì, thực sự nếu nó được, nó sẽ trông giống như others-- nó thực sự là một đường cong rằng, nếu chúng ta phóng to, sẽ nhìn nhiều hơn như thế này. It-- tốt, OK, bỏ qua phần này. Đó là cây bút của tôi đi về góc. Đó là một đường cong mà luôn luôn là ngày càng tăng, luôn luôn, luôn luôn, luôn luôn ngày càng tăng, nhưng chỉ vừa đủ. Và như vậy theo thời gian, bạn có một mối quan hệ đó là như thế này. Nó gần như thẳng. Nhưng nó bao giờ nên từ từ tăng lên. Nhưng đối với hầu hết tất cả các điểm dọc x-trục của bạn, trục ngang, nó thấp hơn so với những dòng khác. Vì vậy, đây có thể là một mối quan hệ n, theo đó nếu bạn có các trang n, đưa bạn n giây. Đây có thể là một mối quan hệ n / 2. Bạn có trang n, phải mất bạn n / 2 giây, một nửa là nhiều. Và đây là một logarit mối quan hệ, trong đó nếu bạn gọi lại, đăng nhập cơ sở 2 của n chụp sự phát triển này, vậy để nói chuyện. Vì vậy, đây là loại thánh Chén giữa ba trong số này ở đây, bởi vì nó chỉ là nhiều hơn nữa hiệu quả, nhưng phức tạp cho là hơn thực hiện. Bất kỳ câu hỏi? Vâng cho tôi làm điều này, chúng ta hãy tôi mở ra một cửa sổ văn bản chỉ cần như vậy chúng ta có thể cố gắng chính thức hóa một cái gì đó ở đây. Vì vậy, hãy để tôi đi trước bây giờ và thực hiện thuật toán này cho việc tìm kiếm Mike Smith trong mã, nếu bạn sẽ, mã giả. Tôi sẽ không sử dụng Java hay C ++. Tôi chỉ sẽ sử dụng loại Anh giống như cú pháp, mà chúng tôi nói chung sẽ gọi mã giả. Ở đây, tôi có một cửa sổ trống. Và tôi nói bước 1 của rất Thuật toán đầu tiên là nhận cuốn sách điện thoại. Bước 2 là cuốn sách mở trang đầu tiên. Bước 3 sẽ được xem xét trang cho Mike Smith. Nếu trên trang, gọi Mike. khác chuyển trang và đi đến bước 3. Xong, chúng ta hãy nói. Và do đó, nó không phải là khá hoàn hảo, mà chúng ta sẽ thấy trong một thời điểm. Nhưng chúng ta hãy xem xét những gì khái niệm tôi đã giới thiệu ở đây. Vì vậy, các bước 1 và 2 và 3 là khá nhiều động từ. Họ báo cáo, actions-- làm điều này. Và như vậy trong một chương trình ngôn ngữ, chúng tôi sẽ thường gọi cho họ báo cáo hay chức năng hoặc thủ tục, gọi cho họ bất kỳ số lượng của sự vật. Nhưng họ chỉ actions-- làm điều này. Bước 4 về cơ bản là khác nhau, bởi vì nó loại hỏi một câu hỏi. Nó nói rằng chúng tôi đang loại của tại một ngã ba đường. Nếu Mike là trên trang web, gọi ông, vì thế rẽ trái, nếu bạn muốn. Và nếu không, trở lại một số khác page-- hay đúng hơn, xin lỗi, trở lại một số bước khác, mà gây ra một số loại vòng lặp cấu trúc. Và chúng tôi làm điều đó một lần nữa và một lần nữa và một lần nữa. Và trên thực tế, bạn biết những gì? Yeah. khác nếu ở cuối cửa sổ. Vì vậy, chúng ta cần loại của một phần ba điều kiện, bởi vì bạn không thể giữ chuyển các quảng cáo trang nauseum, bởi vì cuối cùng, tôi sẽ nhấn cuối của cuốn sách. Và một lỗi trong một chương trình có thể được không dự đoán kịch bản đó. Và sau đó tôi mới nhận ra, oh, chờ đợi một phút, tôi cần một kịch bản thứ ba. Nếu tôi ra khỏi trang, tôi nên thực sự chỉ là dừng lại. Nếu không, nó không xác định. Chuyện gì sẽ xảy ra nếu tôi giữ nói lật trang và quay trở lại, điều này là khi máy tính đóng băng hoặc sụp đổ, khi bạn nhấn một số tình huống bất ngờ như thế. Bây giờ, những gì về Mike algorithm-- thứ ba Smith nhặt cuốn sách điện thoại, Cuốn sách mở cửa cho first-- để không, không phải lần đầu tiên trang thời gian này, để middle-- oh, tốt, mà muốn là thuật toán thứ hai. Hãy chỉ cần bỏ vào thứ ba. Đung Oh, tôi xin lỗi. DAVID Malan: Đó là tiền phạt. Hãy chỉ cần bỏ qua để mở third-- đến giữa và bây giờ nhìn cho Mike Smith. nếu trên trang, gọi Mike. Và sau đó những gì chúng tôi muốn nói ở đây? khác những gì? Chúng tôi có thể thể hiện điều này trong nhiều cách. Không có câu trả lời đúng. OK, nếu không một lần nữa, nhưng chúng ta cần phải be-- OK, chúng tôi muốn chia làm hai, nhưng chúng ta muốn đi bên trái hoặc đi phải không? Làm thế nào để chúng ta bày tỏ quan điểm cho rằng? Vâng, trong trường hợp của Mike, vâng, đó là công bằng. Nhưng OK, do đó thực sự là một điểm tốt. Đó là tốt. Chúng tôi sẽ tiếp tục đi với logic này. Vì thế-- Đung Ít hơn một nửa. DAVID Malan: Yeah. Vì vậy, nếu người nào khác trang là, chúng ta sẽ nói, ít hơn Smith, bên trái của Smith, then-- chúng ta hãy xem, là này sẽ làm phức tạp? khác nếu trang đi trước Smith, giọt nước mắt vào nửa, vứt đi đó một nửa? KHÁN GIẢ: Tôi nghĩ đó là [IM LẶNG]. DAVID Malan: Tôi nghe cả câu trả lời. Đung trái. DAVID Malan: OK, ném đi trái rưỡi, như Lakisa nói trước đó, rời một nửa, sau đó tôi loại muốn chỉ cần đi với: tôi đi về bên phải. Hoặc tương đương, và tôi thực hiện một ít chút của một mớ hỗn độn của đầu ở đây, Tôi muốn có hiệu quả đi đến bước 2 một lần nữa, nơi mở cửa cho middle-- hoặc open-- yeah, hãy chỉ nói rằng, các trang để giữa. Và điều này sửa chữa nó. Nó không còn là một cuốn sách. Nó chỉ là một nửa của một cuốn sách, trang để mở trung. là else-- gần đó. Bước 6, khác nếu trang xuất sau khi Smith, xé làm đôi, ném rưỡi đi ngay, sau đó đi đến bước 2. khác bỏ thuốc lá, một kịch bản thứ tư nếu chúng tôi không có các trang bên trái để bật. Vì vậy, chúng ta có thể làm sạch này lên. Và chúng ta nên làm sạch này lên. Đây là mã rất giả, nếu bạn sẽ, mô tả mức độ rất cao. Nhưng nó thường nắm bắt được ý tưởng. Và, một lần nữa, trong trường hợp này, chúng tôi có khái niệm về một điều kiện, một chi nhánh, một ngã ba đường, làm một decision-- nếu điều này, đi theo con đường này, else if, đi theo con đường này, else if, đi theo cách đó. Và điều này là rất phổ biến kỹ thuật lập trình để quyết định hướng để đi, vậy để nói chuyện. Và chúng tôi cũng có một số loại của vòng lặp cấu trúc, nơi chúng tôi đang làm một cái gì đó một lần nữa và một lần nữa. Bây giờ, nó quay ra, nhiều như trong ví dụ này, là siêu chính xác là rất quan trọng. Nhưng chúng tôi cũng đã nhìn thấy một cái gì đó mà chúng tôi tiếp tục gọi trừu tượng. Có nghĩa là gì để nhận cuốn sách điện thoại? Chúng tôi chỉ loại dùng cho các cấp trong phòng này rằng có một số ý nghĩa ngữ nghĩa. Tất cả chúng ta chỉ cần loại biết, oh, tốt, nhặt những cuốn sách điện thoại. Điều đó thực sự có ý nghĩa gì? Vâng, đó thực sự có nghĩa là mở rộng tay, nạc hơn, mở rộng các ngón tay, véo sách giữa các ngón tay, đứng lên, kéo tay về phía bạn. Và chúng ta có thể được thực sự mô phạm về điều này, thực sự là siêu chính xác như những gì tôi đang làm. Nhưng tất cả những bước chung những gì nó có nghĩa là để chọn một cuốn sách điện thoại. Và như vậy trước đó, khi tôi nói, mỗi của hai câu đầu tiên này có thể được coi như một tiến hành hoặc một chức năng, thực sự nó đại diện cho những gì chúng tôi tục gọi là trừu tượng. Nó giống như một mức độ cao về khái niệm mô tả về một vấn đề mà thực sự liên quan khá một vài bước. Và do đó, đây cũng là một chủ đề định kỳ trong lập trình, nhờ đó mà tôi có thể viết một chương trình sử dụng cú pháp như này-- pick_up_phone_book (). Và sau đó cú pháp, tôi sẽ ăn cắp một cái gì đó từ hầu hết các ngôn ngữ lập trình. Bây giờ, bước 1 trông thậm chí giống như một chức năng, như một lập trình viên sẽ gọi nó. Nó trông giống như một người nào đó mã đã đưa ra một tên và được tôi để sử dụng somehow-- trong khác lời nói, những gì các dòng tôi đã nêu bật đại diện cho chức năng mà có lẽ Tôi thậm chí không thực hiện bản thân mình. Có người lớn tuổi hơn, khôn ngoan hơn tôi đã tìm ra cách bạn thể hiện các khái niệm chọn lên một cuốn sách điện thoại. Và nó giống như các năm bước tôi chỉ huống, ra khỏi đỉnh đầu của tôi. Nhưng anh ấy hoặc cô ấy đã thực hiện này, đã đưa ra những số bước một tên, pick_up_phone_book. Và các dấu ngoặc đơn là chỉ là những gì hầu hết các lập trình viên làm vào cuối của báo cáo như thế này. bây giờ tôi có thể đứng trên mình vai và không bao giờ một lần nữa, suy nghĩ về những gì nó có nghĩa là để chọn một cuốn sách điện thoại. Tôi chỉ có thể nói, nhấc cuốn sách điện thoại. Và đó chính xác là những gì tất cả con người chúng ta đã làm ở đây. Khi chúng tôi có lẽ là 1 tuổi, 2 tuổi, ai đó đã dạy cho chúng tôi những gì nó có nghĩa là để chọn một cuốn sách điện thoại. Và kể từ đó, chúng tôi đã tóm tắt đi từ những người rất nhàm chán bước cơ khí. Và chúng ta chỉ có một sự hiểu biết trực quan về những gì nó có nghĩa là chọn một cuốn sách điện thoại. Và bạn có thể suy luận hiện nay để things-- phức tạp hơn xây dựng một tòa nhà. Giống như, với một số người, mà thực sự có ý nghĩa. Cho các nhà thầu, kiến ​​trúc sư, mà có một số ý nghĩa. Và họ sẽ biết phải làm gì, nếu Tôi nói, đi xây dựng một tòa nhà. Nhưng hầu hết chúng ta trong phòng có thể không đối phó với mức độ trừu tượng. Bạn cần phải cho chúng ta muốn đi lấy xẻng và đi lấy bê tông và móng tay các mảnh gỗ với nhau và bất cứ điều gì khác là tham gia vào việc xây dựng một tòa nhà. Và đó là bởi vì chúng tôi đã không chưa được lập trình để hiểu ý nghĩa của việc xây dựng một tòa nhà. Chúng tôi không có trừu tượng. Chúng tôi không có chức năng đó. Và vì vậy những gì bạn sẽ thấy trong ngôn ngữ lập trình, nói chung, ngôn ngữ đặc biệt là hiện đại hơn, như Java, PHP, Ruby, Python, họ có nhiều trưởng thành hơn ngôn ngữ cũ, như C và C ++ nhưng những người khác. Và như vậy họ đến với nhiều hơn chức năng được xây dựng trong. Nhiều mã đã được viết bởi những người trong quá khứ mà bây giờ chúng ta có thể gọi điện thoại hoặc triệu tập hoặc sử dụng, như tôi đang gián tiếp tại với điều này nhấn mạnh dòng ở đây. Và như vậy, mặc dù chúng tôi không nói về ngôn ngữ lập trình cho mỗi gia nhập, mã chỉ giả, tất cả các ý tưởng vẫn còn đang thảo luận đó. Và hóa ra chính xác là siêu quan trọng, như là trừu tượng. Và chúng ta hãy cố gắng giao tiếp đó như sau. Tôi vô tình có thể tha hồ điều này bằng cách nhấp nháy một slide trên màn hình sớm. Nhưng hãy để tôi hỏi cho một tình nguyện viên dũng cảm, nếu bạn không nhớ sắp tới. Bạn muốn được ở phía trước của máy ảnh, nếu bạn là OK với điều đó. ai muốn đi lên và cung cấp cho hướng dẫn để các đồng nghiệp của bạn ở đây? Chỉ cần có để đi qua đây và đứng trên đây và nói vài lời. Victoria mỉm cười nhiều nhất và tránh ánh mắt của tôi nhiều nhất. Bạn có sẵn sàng để đến ngày lên? ĐƯỢC. Và nếu tất cả mọi người khác ở chỗ ngồi của bạn có thể đưa ra một mảnh giấy phế liệu, nếu bạn sẽ. giấy lót là tốt. Hãy đến khoảng cách này. Hoặc một số giấy mà bạn đã được đưa ra ngày hôm qua, chỉ cần bất kỳ tờ giấy trắng giấy, nếu bạn có thể. Và nếu bạn không có bất kỳ, chỉ cần hỏi hàng xóm của bạn nếu bạn có thể. Vì vậy, trong thời điểm này, cho ví dụ này, Victoria sẽ đóng vai trò của một lập trình viên, kỹ sư, người cần chương trình tất cả các bạn, như các máy tính, để làm một cái gì đó. Và chúng ta sẽ thấy những gì giả định bạn quyết định để thực hiện. Chúng tôi sẽ xem làm thế nào chính xác cô đã chọn được. Và nếu cuộc biểu tình này đi sư phạm tốt, rất nhiều sai lầm sẽ được thực hiện, sau đó chúng tôi sẽ sử dụng đó như một cơ hội để thảo luận. Nhưng thách thức cho bạn nên là để tránh những sai lầm, là một lập trình tốt. Và do đó, thách thức ở bàn tay, nếu bạn sẽ thích đi bộ qua đây, là ở phía trước của Victoria trên màn hình đây-- và hy vọng, không ai trong số bạn hãy nhớ điều này khi tôi chiếu lên màn hình. Và không quay lại ở tất cả, bởi vì có màn hình khác trong phòng này mà tôi có thể tắt. Vì vậy, không quay lại. Phía trước của Victoria là tiếng thét cùng. Và công việc của cô bây giờ là để cho bạn biết tất cả trên mảnh của bạn giấy những gì để vẽ. Và chúng ta sẽ thấy, dựa trên hướng dẫn bằng lời nói một mình, mã máy tính, nếu bạn muốn, cách vẽ của bạn chính xác are-- hiện thực của bạn được. Có lý? Đung Yeah. DAVID Malan: OK, thực hiện. Đung Vẽ một hình vuông. [CƯỜI] DAVID Malan: Và không câu hỏi có thể được yêu cầu. Chỉ có thể làm những gì bạn đang nói. Oh, và nếu bạn có slide hiện nay mở trong một tab, không nhìn vào tab của bạn. ĐƯỢC? KHÁN GIẢ: OK, vẽ một vòng tròn. Một slope-- tôi có thể nói dốc? DAVID Malan: Up cho bạn. Đung A dốc. Và một hình tam giác. DAVID Malan: Tất cả các quyền. Và ở đây để chỉ một khoảnh khắc. Và tôi sẽ đến xung quanh chỉ trong một khoảnh khắc. Và không cần phải đặt tên của bạn trên đó. Hãy để tôi đi xung quanh và thu thập các bản vẽ của bạn, nếu bạn không nhớ xé chúng ra. Dưới đây là những gì chúng tôi đã trở lại. Tôi sẽ chiếu trên màn hình. Tôi nhìn thấy một hình vuông, hình tròn, độ dốc, và một hình tam giác. Vì vậy, đó là một câu trả lời có. Và let's-- Lỗi chính. Cho tôi biết. Đây là loại khác, và một phía sau nó. Vì vậy, tất cả dường như nắm bắt được tinh thần. Cho tôi biết. Có một, và đây là một số khác. Việc giải thích độ dốc là một chút khác nhau, ít cong. Và gần nhất, hoặc do các đặc tuyệt vời mà bạn đã mô tả, hoặc có thể bạn loại nhìn thấy nó trước, điều này thực sự là những gì Victoria thực sự đã được mô tả. Nhưng bây giờ, những người bạn của những người đã không nhận được nó hoàn toàn đúng, hãy cung cấp một số phản đối ở đây. Vì vậy, Victoria nói đầu tiên vẽ một hình vuông. Và bây giờ, chúng ta có thể giả định vì lợi ích của ngày hôm nay mà mọi người đều biết làm thế nào để vẽ một hình vuông. Nhưng đó không phải là hoàn toàn rõ ràng, phải không? Làm thế nào khác bạn có thể có vẽ một hình vuông, hoặc nơi có thể là một số trong những sự mơ hồ ở đây cho máy tính? Đung Vị trí và kích thước. DAVID Malan: Vị trí, phải không? Tất cả các bạn đã có một bài báo của một số hình dạng, nói chung là hình chữ nhật, nhưng hơi kích thước khác nhau. Nhưng bạn chắc chắn có thể rút ra, nếu bạn muốn, một quảng trường khổng lồ, có thể một hình vuông nhỏ. Có lẽ, nó đã được quay. Tôi không nghĩ rằng chúng ta đã thấy rằng. Nhưng nó có thể có được nhiều hơn kim cương như thế nhưng vẫn còn, tuy nhiên, Về mặt toán học một hình vuông. Vì vậy, mà được cho là mơ hồ. Sau đó cô nói, vẽ một vòng tròn. Một số bạn đã vẽ nó bên cạnh nó, mà không phải là không hợp lý, bởi vì con người có xu hướng nghĩ hoặc đọc phải sang trái trong hầu hết các ngôn ngữ, vì vậy không đoán xấu. Nhưng vòng tròn đó có thể có được bên trong quảng trường, có thể đã được xung quanh vuông, có thể có được ở nơi khác trên bảng, vì vậy cho là mơ hồ. Độ dốc có thể là có thể lấy quyền tự do hầu hết bằng lời nói với điều đó có nghĩa. Và một số bạn hiểu nó như một dòng nguệch ngoạc hoặc một đường thẳng hoặc những thứ tương tự. Và sau đó tam giác, quá, có thể có được định hướng trong nhiều cách. Vì vậy, trong ngắn hạn, thậm chí với một cái gì đó bạn lướt qua và bạn giống như, wow, vì vậy đơn giản, một đứa trẻ có thể vẽ này, cũng không thực sự, trừ khi bạn đang siêu, siêu thuyết phục và nói cho máy tính chính xác những gì để làm. Vì vậy, nếu chúng ta có thể, nếu bạn có một tờ giấy khác, chúng ta hãy thử này một lần nữa. Và tôi sẽ cung cấp cho Victoria một Ví dụ khác trên màn hình ở đây. Và một lần nữa, không quay lại và không nhìn vào slide của bạn. Và tôi sẽ cho cô ấy một chút thời gian để suy nghĩ về làm thế nào để mô tả này. Đừng để họ thấy nỗi sợ hãi trong đôi mắt của bạn. [CƯỜI] Và một lần nữa, lần này đòn bẩy một số những takeaways và cố gắng để có được hầu như mọi người ít nhất là câu trả lời đúng. KHÁN GIẢ: OK, hãy mảnh giấy, nhìn ở giữa tờ giấy. Ở giữa mảnh giấy, vẽ một khối lập phương. [CƯỜI] DAVID Malan: có gì chúng ta đã học? Chúng tôi quá gần. OK, lặp lại nếu bạn có thể, tất cả mọi người. Đung Ở giữa các mảnh giấy, vẽ một đối tượng, trông giống như một khối lập phương. DAVID Malan: OK, đó là tất cả các bạn có được để làm việc với. Cho phép tôi được phân tích và không quá nhiều quan trọng, nhưng để thực hiện yêu cầu bồi thường Victoria chắc chắn dường như được suy nghĩ trong rất trừu tượng hóa cao cấp, trong đó không phải là không hợp lý. Bởi vì nếu không, chúng tôi muốn tất cả là khá bất thường, nếu chúng ta có được bao giờ chính xác như vậy với tất cả mọi thứ chúng ta làm trong thế giới. Nhưng nói đi cho tôi middle-- nghĩ chúng tôi đã vào một ca khúc tốt như vậy ở đó, giống như đi đến chính giữa của trang, và sau đó vẽ một hình lập phương. Vì vậy, cô đang nghĩ trong trừu tượng, bởi vì cô ấy vẫn xem những gì trên màn hình như thực sự là một khối lập phương. Nhưng có rất nhiều cơ hội để giải thích đó. Và trên thực tế, có rất nhiều cách khác mà bạn có thể thể hiện đó, mà tôi sẽ đề xuất trong một thời điểm. Vì vậy, ở đây chúng ta có một thân của một whoops-- picture-- hóa thân của hình ảnh, do đó, một ít ba chiều với nó, đó là tốt đẹp. Dưới đây là một số khác, nơi mà bạn có cùng, mặc dù nó là loại một khối mở. Một số người lấy nó một chút phẳng hơn, hai chiều. Và đó là tốt. Vậy đấy, thực sự trong trung tâm của tờ giấy. Điều này một Tôi nghĩ rằng bạn sẽ như thế, bởi vì nếu chúng tôi đi đây, đây là những gì cô đã được mô tả. Bây giờ, chúng tôi đề xuất làm thế nào khác chúng ta có thể mô tả tình trạng này. Quay lại trong ngày, một trong những nhất cách phổ biến hơn để học lập trình là viết mã, viết dòng hướng dẫn, mà kiểm soát một chút rùa trên màn hình. Logo và các biến thể khác của điều này là tên của ngôn ngữ. Và những con rùa sống trong một thế giới. Vì vậy, giả hình chữ nhật này không gian là thế giới của mình. Và bạn sẽ bắt đầu bằng assuming-- tôi không thực sự biết làm thế nào để vẽ rùa, vì vậy hãy làm điều đó như thế này. Và sau đó anh ấy có một vỏ và sau đó có thể một số chân. Vì vậy, bạn có thể có chút này nhân vật trên màn hình. Và các đối tượng này ngôn ngữ lập trình đã buộc những con rùa đi lên, xuống, trái, phải và để đặt bút xuống hoặc lấy bút của mình lên, do đó, ông thực sự có thể vẽ trên màn hình trong thế giới hình chữ nhật rất bằng phẳng này. Vì vậy mà tôi nghĩ rằng bạn có thể đi, và nơi mà bạn nên xem xét lặn xuống tinh thần khi mô tả hướng dẫn tổng quát hơn, Tôi sẽ yêu cầu bồi thường, được đặt của bạn bút xuống trong middle-- và chúng tôi sẽ có được thoát khỏi những rùa, bởi vì tôi không thể thực sự tiếp tục vẽ anh ấy rất tốt. Và bây giờ, làm thế nào khác có thể Tôi nói vẽ một hình lập phương? Vâng, chúng tôi có thể nói điều gì đó giống như trận hòa một dòng phía đông bắc đường chéo, ví dụ, hoặc ở một góc 45 độ trở lên. Và đó có thể đã nhận được tôi ở đây. Và tôi khá xa từ một khối lập phương. Nhưng bây giờ, tôi có thể nói điều gì đó như quay 90 độ sang trái và vẽ một dòng bằng chiều dài về phía tây bắc. Và tôi có thể tiếp tục với hướng tương tự. Và nó sẽ không được dễ dàng. Và thẳng thắn, có lẽ chúng ta sẽ đã ở đây năm phút. Nhưng có lẽ chúng ta đã có thể nhận để cái gì đó, vào cuối ngày, kết thúc lên được một khối lập phương, nhưng chúng tôi lặn bên trong trừu tượng mà để làm điều đó ở đó thấp mức độ mà bạn có thể không thực sự xem những gì bạn đang làm cho đến khi toàn bộ điều là thực sự có trên trang. Và do đó, đây là một nguyên tắc chung, một lần nữa, các programming-- ý tưởng này trừu tượng. Thật là tuyệt vời mạnh mẽ, bởi vì một lần nữa, cô chỉ nói, vẽ một khối lập phương, mà tất cả chúng ta khá nhiều sẽ grok rất nhanh chóng. Chúng tôi sẽ chỉ hiểu, OK, vẽ một khối lập phương. Chúng ta có thể không biết những định hướng, vì vậy chúng tôi có thể là một chút chính xác hơn, nhưng chúng ta thường có thể hình hoặc biết những gì một khối lập phương là. Và đó là hữu ích, bởi vì nếu mỗi khi bạn ngồi xuống như một lập trình viên tại bàn phím của bạn để viết mã, nếu bạn phải nghĩ rằng ở đó một mức độ thấp, không ai trong số chúng tôi sẽ không bao giờ có được bất cứ điều gì thực hiện. Và chắc chắn, không ai trong số chúng ta sẽ tận hưởng quá trình viết code. Nó sẽ giống như viết trong 0 và 1 của, mà thẳng thắn là không phải tất cả là dài trước đây con người đã được viết mã trong 0 và 1. Và chúng tôi rất nhanh chóng đưa ra những languages-- mức độ cao hơn C ++ và Java và những người khác. Vì vậy, hãy thử điều này một lần nữa chỉ để lật bảng, vì vậy mà tất cả chúng ta có cơ hội để suy nghĩ trong chứ không phải theo cùng một cách. chúng ta có thể nhận được nhiều hơn một tình nguyện viên này thời gian tới lên bảng và vẽ, không niệm? Được. Ben, đi lên trên. Và, Ben, trong trường hợp này, một khi bạn phải đối mặt với hội đồng quản trị, không nhìn trái, không nhìn bên phải. Chỉ làm những gì bạn các đồng nghiệp ở đây cho bạn biết. Và đối với tất cả mọi người khác trong phòng, bây giờ bạn là lập trình viên. Anh ấy là máy tính. Và hình ảnh tôi đã chọn ở đây trước là một trong những điều này ở đây. Họ đang just-- họ đang suy nghĩ của một trò đùa vui là tất cả. Vì vậy, sẽ không ai muốn tình nguyện hướng dẫn đầu tiên hoặc tuyên bố rằng nên bút lệnh của Ben? Và chúng tôi sẽ làm việc này chung, có thể một hướng dẫn từ mỗi người. Tôi xin lôi? Đung Vẽ một vòng tròn. DAVID Malan: Vẽ một vòng tròn là điều đầu tiên tôi nghe nói. Đung Up top. DAVID Malan: Lên đỉnh. OK, chúng ta có thể cho phép bạn xóa, lùi lại. Và bây giờ, một người khác. Dan, bạn sẽ được thoải mái cung cấp các hướng dẫn tiếp theo? Đung chắc, vẽ trung tâm đáy của hình tròn, với một small-- một chút không gian nhỏ từ đó, vẽ một đường thẳng xuống ba phần tư đường xuống tàu một góc nhỏ bên trái của bạn. DAVID Malan: Tốt. Đung góc nhẹ. DAVID Malan: Undo, Control-Z. ĐƯỢC. Andrew, bạn muốn cung cấp lên các hướng dẫn tiếp theo? Đung chắc. Từ đáy của dòng đó, một angle-- nhẹ hơn nữa whoops-- có lẽ khoảng một phần ba chiều dài [IM LẶNG], góc nhỏ xuống và như một thứ ba của chiều dài của [IM LẶNG]. Vì vậy, yeah, từ thời điểm đó, vẽ một đường một phần ba chiều dài của trước dòng thêm bên trái. DAVID Malan: Đó là OK? đường thẳng, đó là OK? OK, Olivier, bạn muốn đề nghị đưa ra tiếp theo? Đung [IM LẶNG] từ đáy của hình tròn, [IM LẶNG]. Vẽ ở phía bên tay phải của [IM LẶNG] cm. [CƯỜI] DAVID Malan: Tôi nghĩ rằng bạn đang đi để phải chuyển đổi đó là inches đây. Đung Dừng. [CƯỜI] DAVID Malan: OK. [? Ara,?] Bạn muốn đề nghị đưa ra tiếp theo? Đung Vẽ một [IM LẶNG] phía trên [IM LẶNG] giống nhau. [IM LẶNG] vòng tròn, vẽ vào [IM LẶNG] và vẽ [IM LẶNG]. DAVID Malan: OK, không lùi lại. Hãy làm nhiều hơn một hoặc hai hướng dẫn. Chris, bạn muốn cung cấp một? Đung Ở phía dưới của vòng tròn, [IM LẶNG] vẽ một đường dốc bằng xuống bên trái [IM LẶNG]. DAVID Malan: OK. Andrew? Chúng tôi did-- Karim? Đung Bắt đầu từ dòng bên phải, cuối của đường bên trái, phía dưới, bạn sẽ đi đúng về chiều dài tương tự như dòng bạn đang ở trên, vẽ để bên phải [IM LẶNG]. [IM LẶNG] độ, vì vậy [IM LẶNG] bằng cấp ra ở phía bên phải. DAVID Malan: Tất cả các quyền. Hãy tạm dừng. Đừng quay lại nào. Hãy tạm dừng, và chúng ta hãy thử một nỗ lực khác trước khi chúng tôi tiết lộ cho Ben những gì anh ta đã vẽ. bạn có thể shuffle Ben các right-- hoặc thực sự, không, chúng ta hãy chỉ cho bạn hội đồng quản trị khác, thậm chí còn tốt hơn. Vì vậy, một người nào đó tại thích để có nhiều cách tiếp cận này Victoria mất trước đó, nơi chúng tôi nói chuyện ở một mức độ trừu tượng cao hơn và chỉ trong một câu hoặc hai mô tả cho Ben những gì để vẽ mà không cần đi vào cỏ dại, vậy để nói chuyện, lúc này một mức độ thấp hơn? Victoria. [CƯỜI] Đung Vẽ một con số của người đàn ông đi bộ. Và chân và cánh tay của mình phải là phía bên phải. DAVID Malan: OK, đó là tất cả các bạn nhận được. Tất cả các quyền. Tại sao chúng ta không tiết lộ cho Ben những gì ông đã làm. Vì vậy, một tràng pháo tay. Đó là khó khăn nhất có lẽ. Vì vậy, mặc dù chúng ta đang nói trong điều kiện khá ngớ ngẩn về chỉ vẽ hình ảnh, hy vọng bạn thực sự có thể đánh giá mức độ biểu cảm mà có thể là cần thiết để nói với một máy tính phải làm gì. Và trên thực tế, thực tế là Ben đã có thể vẽ này một cách nhanh chóng là loại minh chứng cho cách sử dụng một ngôn ngữ, có thể là một mức độ cao hơn phiên bản tiếng Anh, cho phép anh ta chỉ cần sử dụng từ ngữ, hoặc nghe lời từ Victoria, cho phép anh ta những abstractions-- chỉ cần vẽ một con số đi bộ đến right-- rằng loại có một số ý nghĩa ngữ nghĩa để nó mà không phải là gần như là hiển nhiên khi bạn chỉ nói, đặt bút xuống, vẽ bên phải, vẽ bên trái. Và do đó, đây cũng là rất phổ biến trong lập trình. Điều này sẽ được cho là giống như một ngôn ngữ cấp rất thấp, lập trình trong 0 và 1 nếu bạn muốn. Và đây sẽ là một mức độ cao hơn ngôn ngữ lập trình Java, hay đại loại thế. Một chút của một sự đơn giản, nhưng đó là các loại giống như cảm xúc cảm giác mà bạn cảm nhận được khi sử dụng một loại điều này hay cách khác. Một chút thất vọng ở đây bởi nhu cầu cho độ chính xác như vậy, nhưng cơ hội được một chút lỏng hơn với việc giải thích ở đây. Nhưng tất nhiên, lỗi có thể phát sinh như là kết quả. Nếu bạn muốn ở home-- chúng tôi sẽ không làm điều này một trong class-- nhưng nếu bạn muốn mang lại một cơ hội này, Tôi nghĩ chúng tôi sẽ bổ nhào vào trong này. Vì vậy, nếu bạn muốn chơi trò này trò chơi với trọng khác của bạn hoặc trẻ em hoặc tương tự, bạn có thể thưởng thức điều đó là tốt. Vì vậy, chúng ta hãy đi trước và nhìn vào một cuối cùng điều đây để tư duy tính toán. Và điều đó đưa chúng ta đến John Oliver, không cho clip bạn có thể đã thấy đêm qua, nhưng đến một vấn đề nào gần đây. Một vài tháng trở lại, Volkswagen mất khá nhiều pháo phòng không lý do gì, nếu bạn biết? họ đã có được những gì rắc rối không? Yeah, vì vậy họ emissions-- đã cố gắng để đánh bại thải kiểm tra bởi bản chất của họ có xe gây ô nhiễm môi trường ít khi chiếc xe của họ đã được thử nghiệm và gây ô nhiễm môi trường hơn khi những chiếc xe đã không được kiểm tra. Và những gì ngày càng thú vị trên thế giới, như bạn có thể suy ra từ các cuộc thảo luận của like-- là gì it-- CarPlay, phần mềm của Apple cho xe ô tô và thực tế là nhiều của chúng tôi ngày càng có màn hình cảm ứng trong xe hơi của chúng tôi, có một số lượng đáng sợ phần mềm trong nhân dân xe hiện nay, mà thẳng thắn mở một lon cả giun khi nói đến bảo mật và nguy cơ vật lý. Nhưng hôm nay, chúng ta hãy chỉ tập trung vào những gì tham gia viết phần mềm mà có thể đã bị đánh lừa hệ thống. Đối với định nghĩa của vấn đề, đối với những người không quen, chúng ta hãy nhìn vào John Oliver. Và đối với những người quen thuộc với vấn đề, chúng ta hãy nhìn vào nó trong một ống kính vui nhộn qua John Oliver là tốt. Vì vậy, hãy để tôi nhấn play về điều này, tôi nghĩ, giới thiệu ba phút. Chết tiệt. [XEM LẠI VIDEO] -Cars-- DAVID Malan: Rõ ràng, trên YouTube, it's-- - --Thư Nhân vật thông minh nhất Fast and Furious phim. Tuần này, hãng xe Đức Volkswagen thấy mình ở giữa một vụ bê bối của tỷ lệ có khả năng phạm tội. -Volkswagen Được giằng cho tỷ tiền phạt, phí hình sự có thể cho giám đốc điều hành của nó, như công ty xin lỗi cho gian lận 11 triệu xe ô tô giúp nó đánh bại kiểm tra khí thải. mô hình động cơ diesel -Certain được thiết kế với phần mềm tinh vi thông tin đã qua sử dụng, bao gồm cả vị trí của tay lái và xe tốc độ, để xác định chiếc xe trải qua thử nghiệm khí thải. Trong bối cảnh đó, động cơ sẽ làm giảm lượng khí thải độc hại. Nhưng chiếc xe đã bị để bỏ qua khi nó đã được lái. Khí thải tăng 10-40 lần cao hơn mức EPA chấp nhận được. -Wow, 10-40 lần lớn hơn EPA cho phép. Đó là điều tồi tệ nhất Volkswagen đã từng làm, là một cái gì đó bạn có thể nói nếu bạn không bao giờ nghe nói về chiến tranh thế giới II. Nhưng có lẽ là dấu hiệu chắc chắn nhất của cách nhiều rắc rối Volkswagen là trong, là những người ở rất hàng đầu đã bước xuống. Các giám đốc điều hành từ chức hôm thứ Tư sau khi lộn để làm kiểm soát thiệt hại, nói rằng ông đã không ngừng xin lỗi, mà có vẻ tuyệt vời cho đến khi nó bật ra ông chỉ có 10% lỗi nhưng đã lắp miệng để làm tăng giả tạo sorriness mình. Và khi đó, Volkswagen của Mỹ trưởng đã có một lời xin lỗi của mình. -Let Làm rõ về điều này, công ty chúng tôi là trung thực. Và trong các từ tiếng Đức của tôi, chúng tôi đã hoàn toàn hơi say lên. -Vâng, Nhưng hoàn toàn screwed lên không phải tác phẩm Đức. Và ngôn ngữ Đức có nhiều cụm từ đẹp để mô tả tình huống như thế này, chẳng hạn như [GERMAN], có nghĩa là khoảng, nỗi buồn mà đi từ những lời nói dối kinh doanh liên quan, hoặc [GERMAN], mà dịch như shaming cha những người liên quan mây của xăng. Đó là một ngôn ngữ đẹp. Nó chỉ buồm ra khỏi lưỡi. Và bằng cách này, trong khi đó con người lời xin lỗi có thể đã nghe chân thành, đó là đáng chú ý, ông đã phát biểu tại một bên mắt chính thức cho năm 2016 Volkswagen Passat, có nghĩa là trong thời gian ngắn sau khi nói lời xin lỗi, ông nói này. -Thank Bạn rất nhiều vì đã đến. Hãy tận hưởng những buổi tối. Up tiếp theo là Lenny Kravitz. [NHẠC] -Ok, OK, kết thúc của bạn lời xin lỗi với lên tới Lenny Kravitz không hét lên năn tỉnh táo. Nó hét lên, chúng tôi hỏi Bon Jovi, và ông nói không có. thương hiệu Volkswagen có bị hư hỏng nặng. Và thẳng thắn, quảng cáo mới của họ chiến dịch không chính xác giúp. - [GERMAN], chúng tôi tại Volkswagen muốn xin lỗi vì đã lừa dối bạn xe của chúng tôi. [END PLAYBACK] DAVID Malan: Vì vậy, đây là một cách vòng xoay lượng-- sorry-- đây là một cách vòng xoay của giới thiệu một vấn đề cơ bản trong phần mềm, đó là bạn cần phải phát hiện các điều kiện nhất định. Và vì vậy câu hỏi ở bàn tay ở đây là, làm thế nào một chiếc xe có khả năng, như thực hiện trong phần mềm bởi các lập trình viên, phát hiện rằng nó thực sự được thử nghiệm? Vì vậy, để được siêu rõ ràng, họ đang làm gì là, trong các môi trường các lập trình viên đã tìm xe đã được thử nghiệm, họ bằng cách nào đó làm xe phát ra khí thải ít hơn, ít hơn khí thải, khói nên ít độc hại và như vậy. Nhưng khi đó là bình thường lái xe trên đường, nó sẽ chỉ phát ra càng nhiều ô nhiễm như nó muốn. Vậy làm thế nào chúng ta có thể viết giả cho thuật toán này? Làm thế nào chúng ta có thể viết mã giả cho các phần mềm chạy trong xe? Tôi có nghĩa là, trong Tóm lại, nó nắm xuống đến một cái gì đó như thế này. nếu đang được thử nghiệm, thải ít hơn. khác phát ra nhiều hơn. Nhưng đó là một chút quá cao, phải không? Hãy cố gắng nhảy vào như những gì này trừu tượng của là phương tiện kiểm tra. Nói cách khác, ngay cả khi bạn không biết gì về xe ô tô, những loại câu hỏi bạn có thể hỏi để xác định xem bạn đang được thử nghiệm, nếu bạn là xe? Đặc điểm gì có thể trình bày nếu một chiếc xe đang được thử nghiệm? Đung: Kiểm tra thiết bị. DAVID Malan: thiết bị thử nghiệm. Vì vậy, nếu thiết bị kiểm tra gần đó, sau đó phát ra ít hơn. Vì vậy, tôi có thể tưởng tượng được thực hiện rằng với một số loại máy ảnh hoặc phát hiện những gì xung quanh bạn. Và hãy để tôi đề nghị, mà chỉ cảm thấy quá phức tạp để thực sự có thêm phần cứng chỉ cho mục đích đó. Đung Nếu bạn đang ở trong công viên, nếu mui xe của bạn đang mở. DAVID Malan: Trong công viên hoặc mui xe mở, vì vậy đó là tốt. Đung Và xe chạy. DAVID Malan: Vì vậy, đó là một chút hơn concrete-- và xe chạy. Vì vậy, đây sẽ là sự kết hợp của một vài điều kiện khác nhau, nếu bạn muốn. Vì vậy, nếu xe trong công viên, và thậm chí mặc dù đây là một điều rất cơ khí thường, tôi có thể tưởng tượng viết phần mềm, đặc biệt là bởi vì có thường là một ánh sáng có những ngày này, Tôi có thể tưởng tượng có được phần mềm có thể truy vấn các shifter hoặc những gì không, là bạn trong công viên, là bạn trong ổ đĩa, bạn có chiều ngược lại. Và tôi có thể lấy lại một trả lời đó là một trong hai có hoặc không đối với những loại câu hỏi. Và vì vậy tôi cũng có thể có lẽ trả lời một câu hỏi như thế, là mui xe mở. Có lẽ, có một số loại cảm biến đó hoặc là mang lại cho tôi trở lại một 1 hoặc 0, đúng hay sai, mui xe được mở. Và sau đó xe chạy, tôi có thể phát hiện rằng bằng cách nào đó qua những gì cơ? Giống như, khi xe đang chạy, tôi có thể phát hiện nó trên, Tôi có thể phát hiện bằng cách nào đó rằng chiếc xe đang chuyển động? Đung RPM. DAVID Malan: Yeah, vì vậy luôn cây kim mà cho bạn biết có bao nhiêu vòng một phút các bánh xe đang gặp phải. Và vì vậy tôi có thể nhìn vào đó. Và nếu nó không phải là 0, mà có lẽ nghĩa là chiếc xe đang chuyển động. Nhưng chúng ta phải có một chút cẩn thận đó, because-- hãy đơn giản hóa này-- nếu chúng ta chỉ nói, nếu xe chạy, chúng tôi không muốn chỉ cần phát ra ít hơn, chúng tôi muốn nếu xe đang chạy và nó đang được thử nghiệm. Vì vậy, có một vài khác thành phần mà folks đã đưa ra giả thuyết các phần mềm đang làm, vì vắng mặt mã nguồn thực tế, bạn chỉ có thể loại suy ra từ hiệu ứng vật lý của xe như những gì có thể xảy ra bên dưới mui xe trong phần mềm. Vì vậy, nếu xe chạy và có thể, nói, bánh sau không di chuyển, điều này có thể được chỉ định của một số loại xét nghiệm? Tôi gợi ý gì ở đây? Ừ, có lẽ, đó là trên một những điều con lăn, nơi như bánh xe đang chuyển ở phía trước hoặc ở phía sau, tùy thuộc vào việc nó là bánh xe phía trước hoặc ổ bánh xe phía sau, do đó một nửa của các bánh xe là di chuyển, nhưng Hai người khác là không, là một tình huống kỳ lạ trong thế giới thực. Nếu bạn đang lái xe trên đường, mà không nên xảy ra. Nhưng nếu bạn đang ở trong một nhà kho trên một số loại hệ thống con lăn, mà thực sự có thể xảy ra. Tôi nghĩ rằng folks cũng đề xuất rằng có lẽ, nếu xe đang chạy và lái bánh xe không chuyển động, mà quá có thể là một tín hiệu, bởi vì đó là hợp lý cho như một thẳng trên một con đường. Nhưng thậm chí sau đó, con người có lẽ là di chuyển nó một chút hoặc chắc chắn trong một vài giây. Hoặc các khóa học của một phút, tỷ lệ cược là nó không sẽ được gắn bó trong chính xác các vị trí tương tự. Vì vậy, nói cách khác, chúng ta có thể mất trừ, là bạn đang được thử nghiệm, và phá vỡ chức năng vào các thành phần thành phần. Và đó thực sự là những gì của Volkswagen kỹ sư bằng cách nào đó đã làm. Họ đã viết phần mềm có ý thức để phát hiện, nếu chiếc xe đang được thử nghiệm, do đó phát ra ít hơn, khác phát ra theo cách thông thường. Và vấn đề ở đây, là phần mềm không phải là một cái gì đó bạn thực sự có thể xem trừ bạn có mã nguồn được gọi là. Vì vậy, có hai loại khác nhau của code-- ít nhất là hai loại khác nhau mã trên thế giới. Có một cái gì đó gọi là nguồn mã, mà không phải là không giống như những gì chúng tôi đã viết, mã nguồn. Đây là mã nguồn viết bằng một ngôn ngữ được gọi là giả, mà chỉ là một cái gì đó bằng tiếng Anh giống như. Không có định nghĩa chính thức của nó. Nhưng C và Java, C ++, những là tất cả các ngôn ngữ chính thức rằng, khi bạn viết trong họ, những gì bạn có là một tập tin văn bản có chứa mã nguồn. Nhưng đó cũng là một cái gì đó trong thế giới gọi là mã máy. Và mã máy, không may, chỉ là 0 và 1. Vì vậy, mã máy là gì máy hiểu, tất nhiên. mã nguồn là những gì con người hiểu được. Và nói chung, nhưng không luôn, có một chương trình mà một lập trình sử dụng mà mất nguồn mã và biến nó thành mã máy. Và chương trình đó là thường được gọi là một trình biên dịch. Vì vậy, đầu vào của bạn là mã nguồn, đầu ra của bạn là mã máy, và trình biên dịch là một mảnh phần mềm mà không quá trình đó. Vì vậy, đây thực sự bản đồ độc đáo để đầu vào của chúng tôi, các thuật toán, kết quả đầu ra. Nhưng đây là một hóa thân rất cụ thể đó, mà là để nói rằng, thậm chí nếu bạn sở hữu một trong Volkswagen chiếc xe đó là phạm tội này, nó không giống như bạn chỉ có thể mở mui xe hoặc mở tay của người sử dụng hoặc tìm vào mã nguồn, bởi vì theo thời gian nó đạt đến xe của bạn trong đường lái xe của bạn, nó đã được chuyển đổi thành 0 và 1. Và nó rất khó, không phải không thể, nhưng rất khó để thu thập nhiều bất cứ điều gì từ chỉ cần nhìn vào nằm dưới 0 và 1. Vì vậy, bạn có thể con số nó ra, cuối cùng, nếu bạn hiểu làm thế nào một máy vận hành-- Intel inside-- nếu bạn hiểu kiến trúc Intel, nhưng nó tốn thời gian rất. Và ngay cả ở đó, có lẽ bạn không thể nhìn thấy tất cả mọi thứ rằng các mã thực sự có thể làm. Mọi thắc mắc về việc này hay này loại quá trình nói chung? Và trên thực tế, chúng ta có thể buộc cuộc thảo luận này để thảo luận ngày hôm qua của Apple. Đây cũng là lý do tại sao FBI không thể chỉ đi và nhìn vào điện thoại của nghi can và tìm thấy những dòng mã, cho Ví dụ, cho phép mật mã hoặc cho phép rằng sự chậm trễ 80 mili giây. Bởi vì do thời gian nó trên iPhone của đồng nghiệp, nó đã được chuyển đổi sang 0 và 1. Vâng, chúng ta hãy tạm dừng ở đây cho chúng tôi nhìn vào tư duy tính toán. Tại sao chúng ta không nghỉ khoảng 15 phút. Và khi chúng tôi trở lại, chúng tôi sẽ hãy nhìn vào lập trình bản thân và bắt đầu một số bản đồ những khái niệm cao cấp đến một thực tế, nếu vui tươi, ngôn ngữ lập trình.