DAVID MALAN: Selamat kembali, semua orang. Jadi semalam, anda akan ingat bahawa kita memberi tumpuan kepada topik-topik ini di sini. Oleh itu, kita mempunyai empat topics-- menyeluruh privasi, keselamatan, dan masyarakat; teknologi internet; pengkomputeran awan; dan akhirnya, pembangunan web. Adakah sesiapa yang mempunyai bandwidth atau masa untuk menonton John sedikit Oliver malam tadi? Ia sebenarnya agak lucu, jika tidak sedikit menakutkan. Sebarang pertanyaan mengenai apa-apa kita lakukan semalam? Sebarang penjelasan? Mana-mana soalan yang anda ingin pasti kita sentuh pada hari ini dalam bentuk tertentu? sabak begitu bersih. Jadi apa dalam agenda untuk hari ini? Jadi saya fikir kita akan bermula hari ini dengan melihat pada apa yang secara umumnya dikenali sebagai thinking-- pengiraan di risiko simplifikasi, berfikir seperti komputer, mungkin berfikir seperti seorang jurutera, dan cuba untuk mula menyusun pemikiran anda atau untuk memberikan anda rasa yang lebih baik apa yang terlibat dalam sebenarnya memerintah komputer untuk melakukan sesuatu melalui pengaturcaraan. Dan kita akan mengekalkannya pada yang cantik peringkat tinggi, cukup banyak Bahasa Inggeris, tetapi cuba untuk penggunaan biasa contoh untuk merasmikan bagaimana anda akan pergi tentang menyelesaikan masalah. Dan kita akan melihat semula beberapa CS topik, seperti pengambilan, yang datang pasangan kali semalam, algoritma, dan kemudian perwakilan. Dan itulah di mana kita akan mula hari ini dalam hanya seketika. Kemudian kita akan mengambil melihat pada pengaturcaraan. Kami akan mengambil lihat beberapa membina asas yang anda mungkin biasa dan juga mungkin mendapati agak intuitif. Kita akan melihat, sebenarnya, pada program sampel persekitaran yang sangat mudah, sangat suka bermain, dan sememangnya disasarkan untuk peringkat umur 12 dan ke atas. Kami akan menghabiskan beberapa minit di sana dan kemudian mengambil perkara-perkara ke tahap yang lebih rendah dan sebenarnya bercakap mengenai beberapa algoritma dan struktur data, boleh dikatakan, bahawa pengaturcara biasanya menggunakan untuk menyelesaikan masalah yang jauh lebih cekap daripada anda mungkin dapat melakukan tanpa mereka sama sekali. Kemudian selepas makan tengah hari, kita akan menyemaknya pada susunan teknologi, yang hanya cara yang mewah untuk mengatakan koleksi teknologi yang anda mungkin gunakan untuk menyelesaikan beberapa masalah. Dan kita akan bercakap tentang abjad sup bahasa yang wujud today-- Java dan Python dan C ++ dan PHP dan Ruby dan pelbagai perkara lain. Kami akan mengambil secara ringkas rupa pada corak reka bentuk. Programmers, sepanjang masa, mempunyai kaedah yang dipakai yang cenderung untuk membantu mereka menyelesaikan masalah yang lebih mudah. Apabila anda mula melihat diri anda menulis jenis yang sama kod itu sekali lagi dan sekali lagi, orang merasmikan mereka ulangan dan nama-nama sajalah mereka dan kemudian menggunakan mereka dan menggalakkan mereka, akhirnya. Dan kita akan bercakap sedikit tentang strategi mudah alih, seperti apa yang ia bermakna untuk benar-benar membuat aplikasi mudah alih atau laman web mudah alih. Adakah anda melakukannya untuk Android? Adakah anda melakukannya untuk iOS? Adakah anda melakukannya untuk kedua-dua mereka? Dan apakah keseimbangan? Dan akhirnya, kita akan mengambil pengaturcaraan web rupa, yang adalah istilah kolektif benar-benar menggambarkan bila-bila masa anda menulis perisian itu bertujuan untuk berjalan di web, sama ada pada telefon atau komputer meja atau komputer riba. Kami akan lihat secara ringkas pangkalan data dan reka bentuk di dalamnya, jika hanya kerana hampir mana-mana aplikasi berasaskan web yang menarik hari ini mempunyai beberapa jenis pangkalan data. Jika tidak, ia akan hanya menjadi kandungan statik. Dan pangkalan data yang membolehkan anda untuk membuat perubahan dari masa ke masa, sama ada diri atau daripada pengguna. Dan kami akan mempertimbangkan bagaimana anda akan pergi tentang mereka bentuk bahawa pangkalan data dan jenis jargon yang mungkin datang dalam jurutera perbincangan di papan putih apabila sebenarnya melaksanakan aplikasi untuk kali pertama. Kami akan bercakap secara ringkas mengenai API, perkhidmatan yang berguna yang boleh anda gunakan untuk berdiri di atas bahu orang lain, sama ada syarikat-syarikat atau individu, dan menyelesaikan anda masalah sendiri dengan lebih cepat. Dan kemudian kita akan cuba-cuba mungkin sedikit dengan JavaScript, bahasa pengaturcaraan yang digunakan kedua-dua dalam pelayar hari ini, tetapi juga dalam pelayan. Dan mungkin, kita akan semula, masa mengizinkan, beberapa hands-on barangan web kita lakukan semalam dan mengintegrasikan kedua-dua bersama-sama sebelum kita menangguhkan. Jadi dengan bahawa- apa yang ahead-- adalah Adakah apa-apa hilang yang anda mahu memastikan kita memasukkan dan menyentuh pada satu ketika. Jika ia mata air di fikiran, membawa ia sehingga tidak lama lagi. Tetapi mengapa tidak kita bermula dengan melihat pemikiran pengiraan. Dan biarlah saya mencadangkan supaya pemikiran pengiraan, sekali lagi, jenis penerangan tahap tinggi apa seorang saintis komputer mungkin lakukan. Dan sesungguhnya, mari kita mulakan dengan tiga bahan-bahan yang mungkin pergi ke dalam pemikiran pengiraan. Ini hanya salah satu cara untuk menggambarkan ia. Kita pasti boleh menentukan ini dalam apa jua cara. Tetapi biarlah saya mencadangkan, demi hari ini, bahawa masalah di dunia, semua masalah di dunia, apabila didatangi oleh seorang komputer saintis boleh dilihat sebagai apa yang kita akan input panggilan, yang perlu untuk dimasukkan ke dalam apa yang kita akan memanggil algoritma, yang kemudiannya menghasilkan output. Dalam erti kata lain, keseluruhan dunia menyelesaikan masalah tuntutan Saya boleh suling ke dalam ketiga-tiga bahan-bahan. Jadi, apa yang saya maksudkan dengan input? Input adalah apa yang anda berada diserahkan untuk menyelesaikan. Sebagai contoh, di sini masalah sekolah lama. Jika saya mempunyai buku telefon di sini dan Saya mahu melihat sesuatu ke dalamnya, ini adalah input saya. Saya mempunyai 1000 atau lebih muka surat dalam buku telefon. Ini adalah input kepada masalah saya. Dan saya mahu mencari sesuatu seperti Mike Smith, jadi kawan yang nama dan nombor adalah mudah-mudahan dalam buku alamat ini. Ini adalah sebelum zaman sel telefon, jadi saya tidak boleh hanya mencarinya. Jadi saya perlu melakukannya lama sekolah dan sebenarnya carian input ini untuk beberapa jawapan. Dan jawapan yang hanya akan untuk dipanggil output. Jadi input adalah buku telefon. algoritma adalah apa set langkah yang saya gunakan untuk mencari Mike Smith. Dan output adalah, mudah-mudahan, Nombor telefon Mike Smith. Dan ini kemudian akan hanya wakil kebanyakan sebarang masalah untuk dengan anda tangan input dan mahu menghasilkan output. Jadi sebelum kita mempertimbangkan proses yang mana kita boleh menyelesaikan masalah itu, mencari Mike Smith dan sesuatu seperti itu, mari kita mempertimbangkan pertama dan input last-- dan output. Secara fizikal, sudah tentu, input di sini adalah sejumlah besar kertas terpaku bersama-sama dalam bentuk buku telefon. Tetapi komputer, komputer riba course-- dan komputer meja mahupun telefon ini days-- mereka adalah peranti elektronik. Dan pada akhir hari, apa yang satu-satunya input ke komputer? Well, ia sesuatu yang seperti kord kuasa ini di sini. Saya palam ke dalam dinding, dan Saya mendapat aliran elektron, yang membolehkan saya untuk menjalankan mesin. Atau mungkin mereka elektron diwujudkan melalui bateri saya. Tetapi pada akhir hari, itu satu-satunya perkara pergi ke komputer riba saya. Dan banyak menarik barangan akhirnya keluar, sama ada melalui pencetak atau skrin atau audially atau sebagainya. Jadi, jika semua kita sebagai kami input asas kepada komputer elektrik, jadi hanya elektron masuk dan atau keluar, dan jadi bagaimana kita boleh menggunakan input yang untuk benar-benar mewakili maklumat? Dalam erti kata lain, bagaimana kita mendapatkan daripada aliran yang mudah elektrik untuk mewakili sebenar nombor atau huruf yang sebenar atau imej sebenar pada skrin atau filem sebenar atau e-mel atau apa-apa bilangan ini konsep tahap yang lebih tinggi, jika anda akan, bahawa pada akhir hari entah bagaimana telah disimpan di dalam ini alat mekanikal elektronik menggunakan hanya mereka ingredients-- mudah elektron yang masuk dan keluar? Jadi ia akan kelihatan seolah-olah, dalam bentuk yang paling mudah, satu-satunya jenis negeri Saya ada dalam dunia saya, jadi untuk speak-- syarat dalam world-- saya ialah sama ada Saya mempunyai elektron yang mengalir, elektrik mengalir, atau saya lakukan tidak-- sebagainya, off. Dan mari kita merasmikan dan mematikan, sebagai seorang saintis komputer mungkin, dengan hanya 1 dan 0. Mari kita hanya menerangkan beberapa sewenang-wenangnya tetapi bilangan konsisten kepadanya. 1 bermakna pada, 0 bermakna off. Atau anda juga mungkin melihat ini sebagai maksudnya yang sebenar di dalam dan di jalan yang bathil. Anda juga boleh melakukan hitam dan putih atau merah dan biru. Anda hanya perlu dua perihalan. Dan ahli-ahli sains komputer akan umumnya hanya menggunakan 0 dan 1. Jadi, jika itu yang terjadi, hanya abjad saya adalah terdiri daripada 0 dan 1, bagaimana boleh saya mungkin mendapat untuk menyeimbangkan bilangan 2 dalam komputer, apatah lagi nombor 3 atau surat abjad atau imej atau filem? Bagaimana kita semacam bootstrap diri daripada prinsip asas ini 0 dan 1 dan sebenarnya mewakili sesuatu yang lebih menarik? Nah, mari kita meletakkan soalan itu ditahan hanya untuk seketika dan mempertimbangkan sesuatu mudah-mudahan biasa, walaupun anda tidak benar-benar berfikir tentang dalam apa-apa detail untuk 10, 20, 30, 40, 50 tahun lagi. Apakah ini? Bagaimana anda mengucapkan itu? Bukan soalan helah. Satu nombor, tetapi apa yang ia? 1, 2, 3, atau 123. Dan saya suka bagaimana anda berkata 1, 2, 3, kerana itulah salah satu cara untuk melihatnya. 1, 2, 3, ia adalah urutan tiga simbol. Ia adalah gambar yang kita kini mempunyai perkataan untuk. Dan jika anda jenis membaca semuanya bersama-sama, seorang manusia biasa dalam bahasa Inggeris akan berkata 123. Dan itu semacam konsep tahap yang lebih tinggi, terasa seperti beberapa munasabah besar. Tetapi bagaimana kita sampai ke sana? Well, ia mungkin seketika sejak anda telah berfikir mengenainya seperti ini, tetapi kembali pada hari saya, saya jenis belajar ini sebagai lajur 1, iaitu 10 ini lajur, dan lajur 100. Supaya Lakisa berkata, ia adalah 1, 2, 3, tetapi ia juga 123. Tetapi bagaimana kita dapat daripada bekas untuk yang kedua? Nah, anda biasanya akan lakukan dalam lajur 100, saya mempunyai 1. Jadi, itu seperti mengatakan 100 kali 1. Dan kemudian dalam ruang 10, saya mempunyai 2. Jadi, itu seperti mengatakan 10 kali 2. Dalam lajur 1, saya mempunyai 3. Jadi, itu seperti mengatakan 1 kali 3. Dan jika saya menambah perkara-perkara ini bersama-sama, ini, sudah tentu, 100 ditambah dengan 10 tambah 3. Dan oh, sebab itu saya mendapatkan ini tahap tanggapan yang lebih tinggi 123. Ia hanya matematik asas, di mana ini simbol-simbol mempunyai berat kepada mereka, jika anda akan, pemegang tempat atau nilai lajur. Dan apabila saya berganda segala-galanya keluar, saya mendapat nombor ini. Jadi bagaimana ramai daripada anda tahu bagaimana untuk bercakap binary-- 0 dan 1's-- seperti komputer? OK, sempurna, tidak ada satu, atau tiada seorang pun daripada anda berfikir yang anda lakukan. Tetapi saya akan menuntut anda sebenarnya tahu ini sudah. Kita hanya perlu jenis tweak model mental kita sedikit. Tetapi proses ini betul-betul sama. Biar saya meninggalkan satu ini di sana dan bukannya menarik ini turun untuk seketika. Dalam dunia komputer, kita hanya mempunyai 0 dan 1. Dan jadi perkara itu akan berubah ialah apa? Nah, dalam dunia manusia saya, sistem perpuluhan, Disember makna 10, Saya mempunyai bilangan digit pada saya? 10, bukan? 0 hingga 9, sudah tentu. Dan itulah sebabnya kita mempunyai tempat 10 dan tempat 100. Di manakah yang datang dari? Nah, ini adalah 10 kuasa 0. Ini adalah 10 kepada kuasa 1, 10 kepada kuasa 2, dan sebagainya. Anda hanya menyimpan mendarabkan lajur anda dengan 10, bermula dengan hanya 1 salah satu yang paling kanan di sini. Jadi dalam dunia komputer, jika anda hanya mempunyai maksud bi binary-- 2-- atau 0 dan 1, kita hanya benar-benar perlu menukar asas matematik itu. Jadi dalam erti kata lain, sekarang kita akan hanya mempunyai lajur 1 dan hanya-- di manakah ini going-- lajur 2, lajur 4, dan mungkin di luar. Kenapa begitu? Nah, ini adalah 2 kuasa 0-ke. Ini adalah 2 1. Ini adalah 2 kepada 2, dan sebagainya. Jadi manakala sini, kami mempunyai 1, 10 ini, 100, 1000, 10,000 ini, 100,000, 1 berjuta-juta, dan sebagainya, di sini kita ada 1, 2, 4, 8, 16, 32, 64. Anda hanya menyimpan didarab dengan 2, bukannya menjaga didarab dengan 10. Jadi sekarang, jika matlamat di tangan adalah untuk mewakili nombor dengan hanya menggunakan 0 dan 1 ini, mari kita fikirkan bagaimana kita sampai ke sana. Ini, sudah tentu, adalah pola 0 0 0, tetapi apa nombor dari segi konsep ia mewakili? Well, 4 kali 0 tambah 2 kali 0 tambah 1 kali 0, mari kita menambah mereka bersama-sama. 4 darab 0 adalah, sudah tentu, 0, ditambah 2 darab 0 adalah, sudah tentu, 0 tambah 1 kali 0 adalah, sudah tentu, 0. Jadi ah, ini mewakili bilangan kita manusia tahu sebagai 0. Nah, sekarang, mari kita sangat ke hadapan dengan cepat cepat. Jika saya bukannya tidak mewakili 0 0 0, tetapi mari kita buat 1 0 1, yang mungkin bagaimana Lakisa, sebelum ini, hanya akan menyebut ia 1 0 1. Tetapi sekarang, bagaimana kita mengambil ia kepada yang lebih tinggi tahap jumlah kita manusia dapat mengetahui? Jadi apa yang nombor ini? Ia adalah 5, bilangan yang kita kenali sebagai 5. Nah, mengapa? Nah, kita boleh benar-benar jenis berjalan melaluinya teratur 4 kali 1, 2 kali 0, 1 kali 1. Menambah mereka bersama-sama, jadi ini adalah 4 tambah 0 tambah 1. Dan itu, sesungguhnya, 5. Jadi ia mendapat sedikit membosankan sekarang melakukan aritmetik lagi dan lagi. Tetapi proses ini betul-betul sama. Satu-satunya perkara yang mempunyai berubah dalam dunia kita adalah bahawa tiang kami adalah 1, 2, 4, 8, 16, dan sebagainya, bukan 1, 10, 100, 1,000. Dan itu hanya kerana abjad kami mempunyai merosot daripada 0 hingga 9 untuk hanya 0-1. Jadi sebagai kuiz sedikit di sini, bagaimana akan anda mewakili nombor 7 dalam binari? 0? Well, 0, maksud 0 0 0? Katakan sekali lagi, Karina. Perfect. Kenapa begitu? Ia berkesan 4 plus 2 plus 1. Begitu baik. Bagaimana kita mewakili sedikit another-- bagaimana pula nombor 2? Close, tetapi ke belakang. Jadi apa ini? Adalah 4 tambah 1, supaya 5 lagi. Jadi what's-- Saya minta maaf, Karina? 0 1 0. 0 1 0 akan menjadi 2, kerana sekali lagi, walaupun jika ia semacam tidak melompat keluar pada anda, hanya melakukan matematik. 4 darab 0, 0, 2 kali 1 2, 1 darab 0 adalah 0. Jadi ini adalah nombor yang kita tahu sebagai 2. Bagaimana pula dengan bilangan 8? Hm? Baik. Oleh itu, kita perlu jenis pemegang tempat lain. Kita perlu 1 0 0 0. Dan yang benar seumpama kami sistem perpuluhan sekolah lama. Bagaimana anda mewakili nombor 1000? Nah, anda seolah-olah menjadi jenis di tempat yang sukar, jika meminta anda untuk mewakili bilangan 1000, kerana walaupun anda memberi diri anda seperti 9 ini, 9 ini, 0 ini, yang merupakan jumlah terbesar yang anda mempunyai, anda tidak cukup mendapat 1,000. Jadi, jika anda 1000, anda hanya memerlukan satu lagi kedudukan, supaya anda boleh melakukan 1 0 0 0, ergo jumlah 1,000. Oleh sebab itu, mari kita memetakan seperti ini perbincangan konsep kembali kepada perkakasan, di mana lagi, input itu hanya ini sedikit kabel kuasa, elektrik yang masuk dan mengalir keluar. Dan jadi untuk itu yang akan dipetakan daripada sini ke sana, baik, apa yang kita perlukan? Nah, anda boleh memikirkan berada di dalam sebuah komputer, sejumlah besar mentol lampu, jika anda akan. Mereka benar-benar dipanggil transistor. Dan transistor hanya beralih yang boleh sama ada hidup atau mati. Jadi, anda boleh memikirkan transistor yang pada membenarkan elektrik untuk mengalir dan transistor itulah kira sebagai berhenti elektrik daripada mengalir. Dan bukannya mengambil lebih lampu sini, mengapa saya tidak seperti ini gaya sekolah baru. Jadi ini mungkin menjadi 1, lampu suluh berada di, hanya hampir tidak walaupun. Dan ini mungkin menjadi 0, dan kini ia di luar. Jadi menggunakan peranti fizikal ini, saya kini boleh mewakili sistem binari. Saya hanya perlu kedua-dua negeri. Ia tidak kira apa warna ia adalah atau apa yang ada. Apa yang penting ialah saya mempunyai satu negeri di dalam dan di negeri lain di luar. Jadi menggunakan telefon saya di sini, bagaimana saya mewakili bilangan yang kita kenali sebagai 0? Atau meletakkan setara, apa nombor saya mewakili sekarang? 0, kerana peranti ini dimatikan. Dan jika saya lakukan ini? Dan sekarang, bagaimana saya mewakili nombor 2? Bolehkah saya meminjam telefon anda di sini, seperti yang kita lakukan semalam? Jadi mari kita lihat, jadi jika saya mahu untuk mewakili nombor 2, adakah ini nombor 2? No. Apakah nombor yang saya sedang saya secara tidak sengaja mewakili di sini? Ini sebenarnya adalah nombor 3. Jadi yang mana satu yang saya mahu mematikan? Telefon hitam or-- baik, jika they're-- telefon hitam atau telefon putih? Telefon putih. Jadi, jika saya mematikan ini dan kami line sehingga di sini, kita mempunyai 1 di tempat yang 2 dan 0 dalam tempat 1. Dan jadi saya sekarang mewakili nombor 2. Dan ini, Sudah tentu, akan menjadi nombor 3, kerana kini kedua-lampu ini sedang berada. Dan saya akan berhenti di sini, tetapi dengan alasan jika saya mahu untuk mewakili nombor 4 atau 8 atau lebih tinggi, Saya akan memerlukan lebih banyak telefon. Tetapi itu semua itu berlaku. Jadi, jika anda pernah mendengar bahawa bahagian dalam a-- terima komputer atasmu, adalah berjuta-juta transistor, itu hanya berjuta-juta suis kecil sedikit. Dan mereka tidak cahaya mentol yang menghidupkan dan mematikan, tetapi mereka sama ada membenarkan elektrik mengalir di suatu tempat atau menghentikannya. Dan jadi ada dua anda states-- hidup atau mati, hidup atau mati. Oleh itu, kita akan kelihatan sekarang mempunyai keupayaan ini untuk mewakili konsep ini yang kami ingin dalam perkakasan yang sebenar. Tetapi semua yang kita ada sekarang adalah keupayaan untuk mewakili nombor ia akan kelihatan. Jadi bagaimana kita pergi tentang mewakili huruf abjad, yang terasa seperti jenis yang seterusnya ciri anda mahu menambah kepada komputer moden sebaik sahaja anda mempunyai nombor? Dan sesungguhnya, jika anda berfikir tentang ia, sejarah, komputer telah diperkenalkan benar-benar untuk berkhidmat sebagai kalkulator berangka. Tetapi sudah tentu, ini hari, mereka melakukan banyak lagi. Malah apabila mereka boot, anda biasanya melihat satu atau lebih perkataan. Jadi bagaimana anda mewakili kata-kata, jika apa yang anda perlu, sekali lagi, elektrik pada akhir hari, atau setara 0 dan 1 ini? Yeah. Ya, maksud saya, kita jenis lakukan semalam ini dalam bentuk tertentu, di mana pada satu ketika, Saya rasa saya sewenang-wenangnya berkata, jika kita mahu untuk mewakili surat A, kita hanya boleh memanggil bahawa 1. Ia adalah dalam konteks kriptografi, di mana kita hanya memerlukan beberapa jenis kod, beberapa jenis pemetaan. Jadi mungkin A akan diwakili sebagai 1, dan B akan diwakili sebagai 2, dan Z akan diwakili sebagai 26, misalnya. Dan maka satu-satunya kaveat adalah bahawa jika saya akan mengekod huruf dalam e-mel saya atau dalam mesej teks saya nombor, anda semua perlu bersetuju untuk menggunakan set sama konvensyen. Dan sesungguhnya, dunia telah melakukan perkara tersebut. Terdapat satu sistem di dunia dipanggil ASCII, American Standard Kod untuk Saling Tukar Maklumat, yang hanya keputusan beberapa tahun lalu bahawa manusia dibuat bahawa memutuskan bahawa A akan sama, tidak 1, 2, dan 26, dan sebagainya forth-- ia adalah satu sedikit different-- tetapi 65, 66, 67. Dan saya akan menarik sehingga carta dalam hanya seketika. Tetapi ia sewenang-wenangnya. Tetapi ia tidak penting bahawa itu sewenang-wenangnya. Dunia mempunyai untuk hanya menjadi konsisten. Sekarang, baru-baru ini, ada sesuatu pelamun dipanggil Unicode, kerana jenis di dunia daripada sedar, selepas mencipta komputer, bahawa terdapat lebih daripada baik 256 simbol dalam dunia yang kita mungkin mahu untuk mewakili, terutamanya apabila anda memperkenalkan bahasa Asia dan symbologies lain yang memerlukan lebih ekspresi daripada anda boleh muat dalam versi terawal kod ini, yang dipanggil ASCII. Jadi Unicode sebenarnya membolehkan anda untuk menggunakan lebih 0 dan 2. Khususnya, anda menyimpan mendengar bait perkataan dalam masyarakat dan walaupun hanya semalam. Dan bait adalah apa lagi? Apa yang bait? Ia hanya 8 bit. Jadi, apa yang benar-benar bermakna? Well, ini bermakna, sebelum ini, ketika kami ada bercakap tentang binari dan saya menggunakan sewenang-wenangnya tiga bit ketika kami bercakap tentang binary-- tempat yang 1 ini, tempat 2, dan 4 ini yang place-- baik, bait hanya bermaksud bahawa anda bercakap tidak dalam unit tiga tetapi empat, lima, enam, tujuh lapan, yang memberikan kita tempat 8, 16, 32 itu, 64, dan 128 ini. Dalam erti kata lain, sedikit tidak semua yang berguna unit ukuran, kerana ia seperti satu kecil sedikit sekeping maklumat, hidup atau mati. Jadi beberapa tahun yang lalu, dunia hanya memutuskan ia sedikit lebih mudah untuk bercakap dalam segi bait, lapan perkara pada satu masa. Dan supaya dengan itu dilahirkan tanggapan bait. Dan supaya kita mempunyai lapan bit di sini. Dan ternyata, juga, untuk sama sebab, dunia memutuskan tahun lalu bahawa untuk mewakili surat ASCII, anda akan menggunakan unit 8 bit. Jadi, walaupun anda tidak melakukan perlu yang banyak, anda sentiasa akan menggunakan 8 bit untuk mewakili huruf abjad. Dan ini adalah mudah, kerana itu jika anda menerima mesej yang mempunyai 0 0 0 1 1 1 1 0 diikuti dengan 1 1 1 0 1 0 0 1, jadi jika anda menerima 16 bit, dunia boleh hanya menganggap bahawa yang pertama 8 adalah satu huruf dan yang kedua 8 adalah surat yang lain. Tidak kira berapa banyak terdapat. Ia hanya perkara-perkara yang kita semua konsisten apabila kita mentafsirkan bit ini. Dan ini adalah hanya secara rawak. Ini bermakna sesuatu, tetapi saya tidak benar-benar berfikir tentang apa yang dimaksudkan. Jadi ia adalah satu pembohongan putih kecil. Pada asalnya, ASCII sebenarnya digunakan hanya 7 bit. Dan sedikit kelapan adalah dipanggil ASCII lanjutan. Tetapi persoalannya adalah, akhirnya, yang sama. dunia amnya diseragamkan pada 8 bit. Jadi ini seolah-olah menjadi sedikit terhad, kerana saya hanya boleh mewakili modal A, modal B melalui Z. modal Tetapi sesungguhnya tidak, jika saya pergi supaya- ada sekumpulan sumber dalam talian, sebagai contoh, asciitable.com, ini akan menjadi sedikit hangat pada mulanya. Tetapi saya akan menunjukkan apa yang penting di sini. Ini hanya berlaku untuk adalah- dan saya akan walk-- mari kita lihat, jika saya pergi di sini. Di sini ialah, dalam perpuluhan ruang, bilangan 65. Dan pada surat lajur sebelah kanan watak, Chr, huruf A. Dan anda boleh mengabaikan, buat masa ini, segala-galanya di tengah-tengah. Ini adalah perenambelasan, perlapanan, dan kod HTML. Ke laman web ini hanya cuba untuk membuang banyak maklumat pada anda sekaligus. Tetapi semua kita mengambil berat tentang adalah perpuluhan lajur dan kolum watak. Jadi dengan logik ini, apa yang nombor yang dunia telah memutuskan mewakili huruf kecil? Ya, 97. Dan hanya untuk mengelirukan berpotensi sedikit, apa nombor telah dunia memutuskan akan mewakili nombor 1? Betul, kerana we-- 49, ia seolah-olah di sini, turun di bahagian bawah kiri. Kini, apa yang saya maksudkan dengan itu? Jadi ia ternyata bahawa dalam sistem komputer, terdapat umumnya perbezaan asas antara nombor dan watak. Satu nombor adalah perkara yang kita belajar membesar apabila kami super muda di sekolah rendah. Ia adalah perkara yang anda mengira dengan. Tetapi watak adalah hanya bentuk, yang glif, boleh dikatakan, pada skrin. Sekarang, kita manusia semacam melihat sesuatu yang kelihatan seperti ini. Dan kita katakan, oh, iaitu nombor 2. Tetapi tidak, itu hanya simbol yang kelihatan seperti apa yang kita tahu sebagai nombor 2. Dan jadi ada ini perbezaan asas antara jumlah sebenar dan watak-watak. Ini adalah nombor. Tetapi secara umumnya, dalam konteks komputer, jika anda sebaliknya melihat sesuatu seperti quoted-- ini dan anda tidak sentiasa perlu melihat ia disebut harga, tetapi demi discussion-- jika anda melihat sebut harga sekitar jumlah itu, sekarang ini adalah watak. Jadi nombor 2 di bawah hud dalam komputer akan diwakili dengan corak bit yang mewakili bilangan 50 mengikut carta dalam talian. Walau bagaimanapun, jika komputer hanya melihat ini, ini akan diwakili dengan corak bit 0 0 0 0 0 0 1 0. Manakala, watak ini akan sebenarnya diwakili as-- dan kini, Saya mendapat untuk berfikir harder-- sedikit jadi ini watak akan diwakili dengan 0 0 1-- apa yang saya perlukan di sini? 0 0 1 1 0 0 1 0. Bagaimana saya lakukan ini? Nah ini adalah nombor 50, jika anda kalikan dengan menggunakan lajur ini, ini adalah nombor 2, dan sebagainya itulah sebabnya terdapat dikotomi ini. Dan ini adalah hanya satu teaser sekarang untuk ciri-ciri yang wujud dalam bahasa pengaturcaraan bahawa kita akan menyentuh secara ringkas lewat hari ini. Dalam bahasa pengaturcaraan, anda mempunyai secara amnya, tetapi tidak semestinya, perkara jenis panggilan data yang berbeza. Dengan kata lain, programmer-- yang apabila dia menulis, programmer mendapat untuk membuat keputusan dalam apa format untuk menyimpan data mereka. Anda boleh memuat menyimpan data sebagai nombor mentah, seperti bilangan 2. Atau anda boleh menyimpannya sebagai tali, atau urutan aksara yang anda biasanya akan menyatakan dengan sebut harga dalam bahasa pengaturcaraan anda. Anda boleh mempunyai perkara-perkara called-- Saya akan menggampangkan dan memanggil mereka numbers-- sebenar supaya nombor yang tidak integer seperti nombor 2, tetapi nombor suka 4.56. Jadi nombor nyata boleh juga mempunyai titik perpuluhan, jadi itulah yang berbeza asas sekeping data dalam komputer. Dan kemudian anda juga boleh mempunyai jenis data yang lain masih. Jadi itu hanya penggoda yang benar-benar daripada yang paling mudah keputusan reka bentuk bahawa programmer mungkin membuat di bawah hood. Jadi apa-apa soalan sahaja lagi? Jadi mari kita cuba untuk membuat ini sedikit lebih nyata. perkakasan ini tidak boleh begitu banyak digunakan lagi. Tetapi setiap orang di dalam bilik ini mungkin membesar dengan dan masih menggunakan cakera keras dalam sesuatu cara. Walaupun kebanyakan komputer riba kita tidak lagi mempunyai peranti yang beroperasi seperti ini, bukannya komputer riba hari ini umumnya mempunyai pemacu keadaan pepejal tanpa bahagian yang bergerak. Dan yang cenderung untuk menjadi lebih mahal, malangnya, tetapi sedikit lebih cepat dan a-- baik, kerap, banyak yang lebih cepat, yang merupakan salah satu sebab. Dan juga ia tidak menghasilkan sebanyak haba. Ia boleh menjadi lebih kecil, jadi ia umumnya bersih positif. Tetapi ini membolehkan kita untuk memetakan sedikit lebih kukuh apa kita bercakap tentang di 0 ini dan tahap 1 kini ke peranti fizikal. Ia satu perkara bagi saya untuk bercakap kira-kira 0 dan 1 dari segi telefon saya atau abstrak dari segi daripada suis berada di dalam dan di luar. Tetapi bagaimana pula dengan cakera keras? Dalam komputer riba anda, jika anda mempunyai yang lebih tua satu, atau dalam komputer desktop anda, atau pasti dalam pelayan hari ini, di mana anda perlu cakera keras yang mempunyai terabyte ruang, 4 terabytes ruang, baik apa maksudnya? A cakera keras dengan 1 terabyte cara ruang ada 1 trilion bait di dalamnya entah bagaimana, atau setara 8 trilion bit di dalam. 1 terabyte akan menjadi 8 terabit atau 1 trilion bit, yang bermakna jika anda mempunyai keras memandu, anda perlu entah bagaimana atau lain-lain satu trilion 0 ini dan di dalam 1 ini daripadanya. Dan jika kita hanya mengambil lihat pada gambar sewenang-wenangnya cakera keras wakil, ini adalah apa yang keras memandu biasanya mungkin kelihatan seperti di dalam. Ia juga adalah jenis seperti pemain pikap lama tetapi secara umumnya dengan beberapa rekod di dalam, jadi untuk speak-- pelbagai pinggan, kerana mereka dipanggil, logam cakera bulat, dan maka kepala membaca sedikit, banyak seperti pemain rekod lama. Dan kepala membaca bergerak ke belakang dan keluar dan entah bagaimana membaca bit. Dan apa yang ada di pinggan ini, walaupun walaupun kita manusia tidak boleh melihat mereka, sama ada dalam realiti atau dalam gambar ini, ada kecil zarah magnet sedikit. Dan walaupun anda telah lama lupa bagaimana elektrik berfungsi, zarah magnet yang dicas umumnya mempunyai akhir utara dan selatan yang end-- supaya utara dan selatan. Dan supaya dunia hanya memutuskan sedikit masa lalu bahawa, jika protokol magnet dasarnya adalah sejajar seperti ini, utara-selatan, mari kita memanggil bahawa 1. Jika ia bukannya selatan-utara, mari kita hanya menyeru bahawa 0. Dan jadi jika anda mempunyai sekurang anda gunakan trilion kecil kecil magnet particles-- dan diharapkan, kepintaran perkakasan dalam untuk flip mereka di sekeliling seperti yang anda lihat fit-- jika anda mahu mewakili sejumlah besar 0, anda hanya perlu 8 zarah magnet semuanya sehaluan seperti ini. Dan jika anda mahu untuk mewakili lapan 1, anda hanya memerlukan 8 zarah magnet selaras belakang untuk kembali ke belakang seperti ini. Apa yang saya maksudkan dengan zarah magnet? Terus terang, selama ini kemudian, perkara yang masih terlintas di fikiran saya lelaki ini, jika anda membesar dengan perkara ini. Ini adalah little-- untuk orang-orang yang unfamiliar-- mainan kanak-kanak kecil yang mempunyai lelaki berbulu ini di sini yang mempunyai semua ini hitam kecil sedikit zarah magnet yang datang dengan itu. Dan menggunakan bahawa kayu merah, yang hanya magnet, anda boleh jenis memberinya misai atau kening atau rambut atau apa-apa kepadanya. Jadi sebenarnya, jika kita zum dalam, misalnya, ini adalah jenis permainan anda boleh bermain dengan Wooly Willy. Dan ini adalah hanya untuk mengatakan, ini adalah zarah magnet yang lebih besar daripada sebenarnya pada cakera keras, dan zarah magnet yang jauh lebih kecil. Tetapi mari kita benar-benar melihat kemudian jika anda mempunyai zarah magnet kecil dalam cakera keras, bagaimana anda boleh sebenarnya menggunakan orang-orang untuk mewakili data. [VIDEO MAIN SEMULA] -The Cakera keras adalah di mana PC anda Kedai kebanyakan data tetapnya. Untuk berbuat demikian, data yang bergerak dari RAM bersama-sama dengan isyarat perisian yang memberitahu cakera keras bagaimana untuk menyimpan data itu. Litar pemacu keras menterjemahkan isyarat ke turun naik voltan. Ini, seterusnya, mengawal keras pemacu bergerak parts-- beberapa Beberapa bergerak bahagian kiri dalam komputer moden. Beberapa isyarat mengawal motor, yang berputar pinggan-pinggan logam bersalut. Data anda sebenarnya disimpan di dalam pinggan ini. isyarat lain menggerakkan kepala baca / tulis untuk membaca atau menulis data pada pinggan-pinggan. Jentera ini adalah begitu tepat bahawa rambut manusia tidak boleh walaupun lulus antara ketua-ketua dan berputar pinggan-pinggan. Namun, ia berfungsi pada kelajuan yang hebat. [AKHIR MAIN SEMULA] Dan anda boleh lihat di bahagian penghujung video, secara amnya terdapat pelbagai hidangan. Dan supaya kepala membaca tidak hanya membaca bahagian atas. Ia adalah jenis seperti tiga atau empat atau lebih kepala membaca langkah seperti ini, membaca data secara serentak. Jadi ada banyak kerumitan dan jenis masa yang yang terlibat dalam cakera keras. Dan perkara yang berputar benar-benar darn cepat, jadi ada banyak kerumitan. Tetapi mari kita zum dalam sedikit lebih mendalam dan melihat di mana zarah magnet dan bagaimana kita mendapat mereka. [VIDEO MAIN SEMULA] wajah -Biarkan pada apa yang kita hanya melihat dalam gerak perlahan. Apabila nadi ringkas elektrik dihantar kepada kepala baca / tulis, ia lambungan pada elektromagnet kecil untuk sebahagian kecil daripada kedua. magnet mencipta bidang, yang berubah kekutuban kecil, kecil sebahagian daripada zarah logam yang kot permukaan setiap pinggan ini. Satu siri corak ini kecil dikenakan ke atas kawasan-kawasan pada cakera mewakili bit tunggal data dalam sistem nombor perduaan yang digunakan oleh komputer. Sekarang, jika semasa itu dihantar satu jalan melalui kepala baca / tulis, kawasan ini polarisasi dalam satu arah. Jika semasa itu dihantar dalam arah yang bertentangan, polarisasi dibalikkan. Bagaimana anda mendapat data dari cakera keras? Hanya menterbalikkan proses. Jadi ia adalah zarah pada cakera yang mendapat semasa dalam kepala baca / tulis bergerak. Meletakkan bersama-sama berjuta-juta segmen magnet, dan anda mempunyai fail. Sekarang, keping satu fail mungkin berselerak di seluruh pinggan memandu ini, jenis seperti keadaan kucar-kacir kertas di atas meja anda. Jadi fail lebih istimewa menyimpan menjejaki di mana segala-galanya. Adakah anda tidak ingin anda mempunyai sesuatu seperti itu? [AKHIR MAIN SEMULA] Jadi yang dirujuk ke sana, mungkin, adalah bahawa topik dari semalam penghapusan. Apabila anda memadamkan fail, semalam kita berkata bahawa komputer yang sebenarnya tidak apa, bila anda menyeret sesuatu ke tong kitar semula atau tong sampah? Ia hanya lupa ia. Tetapi 0 dan 1 ini, zarah magnet yang kelihatan seperti merah dan biru perkara di sini, atau lengan saya di sini, masih ada pada cakera keras. Dan sebagainya tidak wujud software-- Norton Utilities dan Yesteryear dan lain-lain yang lebih moden software-- yang hanya akan mengimbas cakera keras keseluruhan mencari di semua 0 dan 1, kerana ia ternyata bahawa kebanyakan formats-- fail dokumen Word, Excel fail, imej, video files-- semua mempunyai tertentu corak yang biasa di kalangan mereka. Setiap fail video mungkin menjadi video yang berbeza, tetapi beberapa pertama bit biasanya yang sama. Atau beberapa bit terakhir biasanya yang sama. Dan sebagainya dengan kebarangkalian yang tinggi, anda boleh mencari orang-orang corak. Dan walaupun fail itu telah dilupakan, anda boleh berkata dengan kebarangkalian yang tinggi, tetapi ini kelihatan seperti dokumen Word, membolehkan mendapatkan semula dan un-lupa, jika anda akan. Dan sebagainya itu bagaimana anda boleh mendapatkan semula data yang yang sama ada telah sengaja dipadam atau dipadam atau sengaja dipadam untuk apa jua tujuan. Sebaliknya, penghapusan selamat melakukan apa dalam konteks gambaran seperti ini? Tepat sekali, menjadikan mereka semua secara rawak. Jadi ia semacam bergerak beberapa mereka ke bawah, sebahagian daripada mereka, meninggalkan sebahagian daripada mereka tidak berubah, dan secara amnya membuatkan bunyi rawak daripada itu, atau hanya mungkin membuat semua mereka 0 atau semua daripada mereka 1. Dan itu juga boleh umumnya gosok data anda seperti berada. Jadi mari kita kembali sekarang kepada isu ini pemikiran pengiraan, di mana kita mempunyai input formula. Dan algoritma memberikan anda output akhirnya. sekarang kita memberi tumpuan kepada input dan output, kerana sekarang, saya tuntutan kita mempunyai cara mewakili input dan output. Kami hanya akan menggunakan binari. Dan tidak kira apa yang kita mahu mewakili hari ini, sama ada nombor atau surat atau beribu-ribu mengenainya dalam buku telefon atau imej atau filem, pada akhir hari, itu semua 0 dan 1. Dan saya mendakwa bahawa, walaupun ini adalah dunia yang sangat mudah dengan hanya 0 ini dan 1, kita boleh membina diri. Dan kita telah melihat satu contoh yang dengan huruf setakat ini. Jadi mari kita memberi tumpuan sekarang ini bahan pertengahan, algoritma. Dan mari kita kembali ke ini contoh Mike Smith. Jadi di dalam buku telefon ini, yang diakui, kita tidak menggunakan begitu banyak lagi, ada masalah yang perlu diselesaikan. Kami mahu mencari seseorang seperti Mike Smith. Dan apa yang saya lakukan untuk mencari Mike? Well, saya hanya boleh membuka ini book, bermula pada halaman pertama, dan sedar, oh, saya dalam seksyen A. Mike tidak ada. Saya perlukan seksyen S untuk Smith. Jadi hanya menyimpan beralih satu halaman pada satu masa. Biar saya berpura-pura bahawa ini adalah semua laman putih dan halaman tidak kuning, kerana kita tidak akan mencari Mike di halaman kuning pula. Tetapi saya di halaman putih. Dan sekarang, saya dalam seksyen B. Saya masih tak kutemui dia. Jadi saya terus beralih satu halaman pada satu masa. Ini adalah algoritma. Ia adalah satu set arahan untuk menyelesaikan beberapa masalah. Dalam erti kata lain, melihat halaman, jika Mike bukan di atasnya, menjadikan halaman, dan ulangan lagi dan lagi dan lagi, ideal melihat ke bawah seperti yang anda lakukan. Jadi adalah algoritma ini, proses ini, betul? Maaf. Tidak, saya mendengar beberapa nos. OK, tetapi ia is-- yeah, ia sudah tentu membosankan. Seperti, kita akan berada di sini sepanjang hari jika saya terus mencari Mike pada kelajuan ini. Tetapi biarlah saya mendakwa ia adalah betul. Ia bodoh, tetapi ia adalah betul. Pada akhir hari, selagi ia mungkin mengambil, saya akan mencari Mike jika dia di sana dan saya memberi perhatian. Dan saya akhirnya sampai ke halaman beliau. Dan jika saya mendapat terlalu jauh, jika Saya sampai ke bahagian T, maka saya sedikit boleh mengoptimumkan dan hanya berkata, hm, semua dilakukan. Saya tidak perlu membuang masa pergi ke Z. Tetapi ini adalah sangat pendekatan linear, jika anda akan, yang sangat semacam kiri ke kanan pendekatan, satu garis lurus. Dan ia betul tetapi perlahan. Jadi saya ingat dari sekolah rendah, jenis daripada pengoptimuman dari gred pertama, di mana saya belajar bagaimana untuk tidak mengira oleh orang-orang tetapi oleh twos-- jadi 2, 4, 6. Ia adalah A, banyak lebih sukar untuk dilakukan, tetapi dalam teori, ia faster-- 8, 10, 12, 14, dan sebagainya. Bagaimana pula dengan algoritma yang? Adakah ia lebih berkesan? Adakah ia lebih cepat? PENONTON: Ia adalah cekap. DAVID MALAN: Ya, jadi ia def-- ia literal dua kali lebih cepat, dengan andaian saya tidak mendapatkan tersandung dengan jari saya. Ia adalah dua kali lebih cepat, kerana Saya beralih melalui dua laman sekaligus bukan satu, tetapi ia berpotensi dalam betul, kenapa? PENONTON: Anda ponteng beberapa. DAVID MALAN: Betul, bagaimana jika Mike berlaku untuk sandwiched-- mungkin apabila saya kemudian di dalam buku telefon, Mike berlaku untuk menjadi diapit di antara kedua-dua muka surat, dan saya hanya membuta tuli skip ke atasnya. Oleh itu, kita perlu menetapkan kecil di sana. Apabila saya melanda bahagian T, saya tidak boleh hanya yakin mengatakan, kita tidak mencari Mike Smith. Saya mungkin perlu menggandakan kembali. Atau sebenarnya, apabila saya sampai seseorang dinamakan S-N, daripada S-M untuk Smith, serta-merta, saya boleh menggandakan kembali, kerana mungkin dia adalah pada halaman sebelumnya. Tetapi saya tidak perlu menggandakan kembali ini. Secara teori, jika saya melakukannya di sebelah kanan masa, saya hanya kembali satu halaman. Jadi ia menambah hanya satu langkah tambahan. Jadi saya telah pergi dua kali lebih cepat, tetapi ia kos saya satu halaman tambahan. Tetapi yang terasa seperti kemenangan bersih. Tetapi ini bukan bagaimana kebanyakan orang di bilik ini akan menyelesaikan masalah ini. Apa yang akan orang biasa, mungkin Beberapa tahun yang lalu melakukan, untuk mencari Mike Smith? Yeah, tidak mencari Mike. Apa yang saya buat? Jadi mendapatkan sedikit lebih dekat, tetapi saya know-- apa yang benar tentang sebuah buku telefon? PENONTON: Ia berjujukan. DAVID MALAN: Ia berjujukan. Ia abjad. Dan jadi jika Saya dalam seksyen M, Mike adalah jelas ke kanan, Saya benar-benar boleh lusuh masalah di half-- ia biasanya lebih mudah daripada air mata bahawa- masalah pada separuh dan membuang ia jauh, supaya sekarang, saya mempunyai masalah itulah tidak lagi 1000 pages-- yang sukar, kerana saya rasa saya sebenarnya mengoyakkan buku telefon ini tidak time-- 1000 muka surat, tetapi 500. Jadi masalahnya ialah literal separuh besar. Dan itu cukup menarik, kerana dengan algoritma saya sebelum ini, versi 1 dan 2, saya hanya membuat masalah satu halaman yang lebih kecil, dua muka surat yang lebih kecil pada satu masa. Sedangkan sekarang, saya menyatakan dengan 500 muka surat yang lebih kecil sekaligus. OK, jadi sekarang, Karim mencadangkan bahawa saya pergi ke separuh betul. Jadi, saya akan pergi kira-kira ke tengah, memberi atau mengambil. Dan jika saya melakukan ini secara matematik, Saya boleh pergi kanan ke tengah. Dan sekarang, saya sedar, oh, Saya dalam seksyen T. Saya sebenarnya tidak pergi terlalu jauh. Tetapi saya boleh, sekali lagi, air mata masalah pada separuh, buangkan sahaja. Dan bait saya tidak seperti yang besar. Ia hanya, apa, 256 muka surat atau 250 halaman, memberi atau mengambil sekarang. Tetapi ia masih cara yang lebih daripada satu halaman atau dua muka surat. Dan sekarang, saya pergi secara kasar ke tengah. Oh, saya tidak pergi agak jauh cukup sekarang. Jadi saya ulangi, ulang, ulang, ulang, sehingga saya mudah-mudahan ditinggalkan dengan hanya satu halaman. Supaya menjemput soalan, jika saya bermula dengan kira-kira 1,000 muka surat, berapa langkah ia mengambil masa saya dengan versi 1 algoritma saya? Nah, jika Mike adalah dalam S seksyen, dalam kes paling teruk, itu cukup dekat dengan akhir abjad. Jadi, jika buku telefon mempunyai 1,000 muka surat, Saya akan mencari Mike dalam 1000 halaman, memberi atau mengambil. Mungkin ia seperti 800 atau lebih, tetapi ia cukup hampir 1,000. Manakala, di kedua algoritma, berapa banyak halaman bertukar maksima mungkin saya memerlukan untuk mencari Mike Smith? Ada 1000 muka surat, tetapi saya melakukan mereka dua pada satu masa. Betul, jadi max seperti 500ish, kerana jika saya pergi melalui buku telefon secara keseluruhan, di mana titik, saya boleh berhenti. Tetapi saya boleh mencukur beberapa oleh hanya berhenti di bahagian T. Tetapi ia sekurang-kes paling teruk 500 muka surat. Jadi berapa kali saya boleh membahagikan 1,00o-halaman buku telefon pada separuh lagi dan lagi dan again-- dari 1000 kepada 500 ke 250-125? Berapa lama sebelum saya mencecah satu halaman? Ya, ia adalah kira-kira 10. Bergantung kepada pembundaran dan itu, ia adalah kira-kira 10 muka surat jumlah keperluan untuk dijadikan atau buku telefon perlu koyak. Jadi, itu cukup kuat. Kami bermula dengan satu masalah 1000-page dalam ketiga-tiga cerita-cerita ini. Tetapi dalam algoritma yang pertama, ia membawa saya, kes paling teruk, 1000 halaman bertukar untuk mencari Mike. algoritma Kedua, 500 halaman untuk mencari Mike. algoritma Ketiga, 10 muka surat untuk mencari Mike. Dan ia lebih kuat apabila anda berfikir mengenai jenis senario yang bertentangan. Katakan syarikat telefon di sebelah tahun mungkin memasukkan dua bandar bersama-sama, dan buku telefon tiba-tiba ini tebal, bukan yang ini, supaya 2,000 muka surat dan bukannya 1,000. Well, algoritma pertama saya cari Mike Smith dalam 2000-halaman buku telefon, kes lebih teruk, ia akan mengambil berapa banyak halaman bertukar tahun depan? buku telefon adalah 2,000 halaman, so-- baik, tidak satu lagi. Jika buku telefon adalah dua kali lebih tebal dalam algoritma pertama, algoritma pertama, 2000, bukan? Dalam kes terburuk, Mike adalah benar-benar menutup hingga akhir buku ini, jadi ia 2000 gilir halaman. algoritma kedua akan oleh berdua-dua, seperti 1000 muka surat. Tetapi bagaimana pula dalam ketiga saya dan algoritma yang terkini? Jika syarikat telefon beregu beberapa halaman dari 1000 ke 2000, berapa kali lagi perlu saya air mata bahawa buku pada separuh untuk mencari Mike? PENONTON: Hanya satu. DAVID MALAN: Hanya satu lagi, kerana dengan satu halaman lusuh, Saya benar-benar boleh membahagikan dan menakluk, jika anda akan, bahawa masalah pada separuh pengambilan santapan besar daripada itu. Dan hal ini adalah satu contoh kecekapan dan boleh dikatakan algoritma yang mana kita semua jenis intuitif biasa. Tetapi ia hanya sebagai betul sebagai algoritma saya yang lain dengan tweak bahawa untuk algoritma kedua, tetapi ia begitu jauh lebih efisien. Dan sebenarnya, apa komputer ahli sains, atau seterusnya programmer, biasanya akan lakukan apabila menulis kod adalah cuba untuk memikirkan, semua betul, saya tidak mahu saya program hanya sebagai betul, Saya juga mahu ia menjadi berkesan dan menyelesaikan masalah dengan baik. Bayangkan dalam dunia sebenar hari ini, seperti indeks Google, carian seperti berbilion-bilion halaman, bayangkan jika mereka digunakan algoritma yang pertama untuk mencari kucing antara satu bilion pages-- melihat halaman pertama dalam pangkalan data mereka, kedua, ketiga, hanya mencari untuk kucing, mencari kucing. Itu cukup darn memperlahankan ia akan kelihatan. Mereka sebaliknya boleh menggunakan sesuatu dipanggil carian binari, yang ada bi coincidence-- bermakna dua, kita terus membahagi sesuatu dalam 2, half-- mereka boleh menggunakan carian binari dan mungkin mencari kucing lebih cepat, atau apa sahaja yang anda sedang mencari. Dan terus-terang, ada walaupun algoritma pelamun yang melakukan lebih daripada sekadar membahagikan perkara-perkara dalam separuh untuk mencari maklumat dengan cepat. Dan kita akan bercakap sedikit mengenai orang-orang selepas makan tengah hari hari ini. Jadi biarlah saya hanya cuba untuk mewakili ini. Kami tidak perlu pergi ke sebarang matematik atau nombor yang sebenar. Kita boleh bercakap tentang ini dalam abstrak. Tetapi biarlah saya mencadangkan, jika anda telah mengadakan perbincangan sekarang dengan jurutera mencadangkan algoritma ini dan anda cuba untuk membuat keputusan dikira, kerana mungkin itu jurutera berkata kepada anda, anda tahu apa, saya boleh melaksanakan carian linear dalam seperti dua minit. Ia amat mudah. Carian binari tidak mewah, tetapi ia akan membawa saya seperti 10 minit, jadi 5 kali lebih lama. Ada perdagangan di sini, walaupun dari segi memutuskan apa perisian untuk menulis. Adakah anda menulis algoritma yang lebih mudah, yang hanya akan membawa anda dua minit? Atau adakah anda menghabiskan lebih banyak masa, 10 minit, menulis algoritma pelamun? Bagaimana anda membuat keputusan yang jenis soalan? Atau anda boleh membuat ia sedikit lebih nyata. Saya memberitahu bos saya, ia akan mengambil saya sama ada satu minggu atau 10 minggu untuk melaksanakan perisian dengan cara ini, bagaimana anda membuat keputusan yang algoritma untuk lampu hijau? Karim? PENONTON: Para penonton, saya rasa. DAVID MALAN: Para penonton. Apa yang anda maksudkan dengan penonton? PENONTON: Jika ia akan untuk digunakan oleh pengguna yang [didengar] oleh pengguna-pengguna [didengar]. Tetapi jika ia sesuatu yang anda hanya melakukan untuk diri sendiri untuk memudahkan masalah, [Didengar] lebih cepat. DAVID MALAN: Ya, ia adalah cepat dan kotor adalah cara yang baik untuk menerangkan ia. Malah, jika anda menggambarkan banyak masa saya di sekolah grad, di mana sering kali, Saya menulis kod buruk sedar so-- sekurang-kurangnya, itulah bagaimana saya dirasionalkan it-- sedar demikian, kerana walaupun saya menulis kod yang agak lambat untuk melaksanakan, Saya dapat menulis kod itu sendiri cukup cepat, perbelanjaan hanya beberapa minit atau jam bukan hari. Dan ternyata, saya kadang-kadang diperlukan untuk tidur. Jadi, walaupun kod saya diperlukan 8 jam untuk berjalan, baik itu baik, Saya hanya akan pergi untuk tidur semasa ia berjalan. Jadi, pada masa itu, saya fikir ini adalah sangat pandai, walaupun saya nampaknya bekerja melalui PhD saya perlahan-lahan. Tetapi akas bagi yang itu, perisian jika saya menulis untuk orang lain yang lebih penting berbanding saya, baik, mempunyai mereka menunggu 8 jam untuk kembali hasil carian mereka tidak semua yang menarik. Dan sebagainya menghabiskan lebih banyak masa depan untuk menulis perisian yang lebih cekap, lebih seperti algoritma ketiga kami, mungkin memberi manfaat kepada pengguna dari masa ke masa. Jadi ia bergantung lebih masa bagaimana kos-kos menambah. Jika anda akan menulis perisian untuk menggunakannya sekali, mungkin juga mungkin melakukan cepat dan kotor, sebagaimana yang mereka katakan. Hanya membuang bersama-sama. Ia adalah kod yang memalukan anda, ia begitu buruk, tetapi ia mendapat pekerjaan yang dilakukan dengan betul, walaupun ia tidak cekap. Sebaliknya, anda menghabiskan lebih banyak masa pada sesuatu, mendapatkan ia hanya betul. Dan kemudian dilunaskan sepanjang masa, kos yang pendahuluan masa mungkin berbaloi, jika anda menyimpan mengoptimumkan untuk kes biasa. Dan sesungguhnya, itulah tema dalam pengaturcaraan, atau komputer sains lebih secara amnya, cuba untuk mengoptimumkan tidak bagi kes luar biasa tetapi case-- biasa apa operasi akan berlaku lagi dan lagi? Jika anda akan mempunyai berbilion-bilion dari pengguna mencari di laman web anda, anda mungkin perlu menghabiskan tambahan minggu depan menulis perisian yang lebih baik, supaya semua pengguna anda mendapat manfaat. Sekarang, mari kita cuba untuk menangkap ini sedikit bergambar, tetapi tidak begitu banyak berangka. Jadi di sini adalah hanya satu carta sekolah lama. Dan biarlah saya katakan bahawa ini adalah masa. Dan ia tidak kira what-- sebenarnya, tidak, bukan masa. Mari kita meletakkan bahawa pada paksi lain. Mari kita mengatakan bahawa ini adalah masa, dan ini adalah saiz masalah. Dan seorang saintis komputer umumnya mungkin memanggil ini hanya n. n adalah seperti kami go-kepada pembolehubah, di mana n adalah nombor, n nombor, dan ia adalah beberapa apa sahaja input yang anda ada. Jadi dalam kes ini, n adalah jumlah halaman. Jadi ia mungkin 1000 dalam kes kita hanya diberitahu. Jadi masa boleh mana-mana unit ukuran. Mungkin, ia adalah kedua. Mungkin, ia adalah hari. Mungkin, ia seperti bertukar halaman. Tidak mengapa. Apa sahaja yang anda mahu mengira dalam, yang akan menjadi masa atau kos sebandingnya. Maka dengan itu pertama algoritma, jika saya, misalnya, mempunyai 1000 muka surat buku telefon, Saya akan menarik dot di sana, kerana jika ia 1000 muka surat, ia mengambil masa kira-kira 1000 halaman bertukar, memberi atau mengambil. Dan kemudian jika saya mempunyai 2000-halaman buku telefon, dan saya akan menarik kedua dot sini, kerana bagi 2000 muka surat, ia seperti 2000 saat atau halaman bertukar atau apa sahaja. Dan apabila saya katakan sebelum ini, ia jenis hubungan yang linear, yang disengajakan, kerana saya mahu kemudian pada-- hak sekarang-- untuk menarik garis. Ia adalah jenis yang lurus hubungan talian. cerun adalah 1/1, jika anda akan. Sementara itu, algoritma kedua berkata, jika anda mempunyai 1,000 muka surat dan anda telah menggunakan algoritma kedua, di mana saya dikira oleh 2, beralih dua halaman pada satu masa, yang perlu saya menarik titik di bawah atau di atas dot asal saya? PENONTON: Below. DAVID MALAN: Di bawah, kerana seperti yang kita lihat, ia mengambil masa yang kurang, separuh masa yang banyak. Jadi dot harus setengah setinggi yang lain. Dan perjanjian sama di sini, dot ini mungkin perlu menjadi kira-kira sana. Dan sebagainya algoritma kedua saya, begitu juga, mempunyai hubungan yang linear dengan masa. Dan kita boleh menarik ia seperti itu. Oleh sebab itu, ketiga dan terakhir algoritma adalah agak sukar untuk menarik. Tetapi intuitif, jika saya telah mendapat 1000 muka surat dengan algoritma ketiga saya, ia hanya perlu mengambil saya seperti 10 langkah. Dan jika saya telah mendapat 2,000 muka surat dengan algoritma ketiga saya, ia perlu tidak mengambil saya 10 langkah-langkah, tetapi 11, hanya satu lagi. Oleh itu, kita hanya hampir tidak akan melihat ini. Dan ternyata, jika Saya mengezum masuk pada ini, saya akan membesar-besarkan untuk kesan, bentuk talian itu, akhirnya, bukan garis ini-- lurus kerana, sesungguhnya jika ia, ia akan kelihatan lebih seperti others-- ia sebenarnya garis melengkung bahawa, jika kita zum masuk, akan untuk kelihatan lebih seperti ini. It-- baik, OK, mengabaikan bahagian ini. Itu adalah pena saya akan sudut. Ia adalah satu garis melengkung yang sentiasa meningkat, sentiasa, sentiasa, sentiasa meningkat, tetapi hanya hanya hampir. Dan sebagainya dari masa ke masa, anda mempunyai hubungan yang lebih seperti ini. Ia hampir kelihatan lurus. Tetapi ia pernah jadi perlahan-lahan meningkat. Tetapi bagi hampir semua mata sepanjang x-paksi anda, paksi mendatar, ia adalah lebih rendah daripada yang lain-lain talian. Jadi ini mungkin menjadi hubungan yang n, di mana jika anda mempunyai halaman n, membawa anda n saat. Ini mungkin menjadi satu hubungan n / 2. Anda mempunyai halaman n, ia mengambil masa anda n / 2 saat, separuh lagi. Dan ini adalah logaritma hubungan yang jika anda masih ingat, log asas 2 daripada menangkap n ini jenis pertumbuhan, jadi untuk bercakap. Jadi ini adalah jenis suci kaedah berpotensi antara tiga ini di sini, kerana ia hanya lebih banyak lagi cekap, tetapi boleh dikatakan lebih kompleks untuk melaksanakan. Ada soalan? Nah biar saya melakukannya, apa saya membuka tetingkap teks hanya supaya kita boleh cuba untuk merasmikan sesuatu di sini. Jadi biarlah saya pergi ke hadapan sekarang dan melaksanakan algoritma ini untuk mencari Mike Smith dalam kod, jika anda akan, kod pseudo. Saya tidak akan menggunakan Java atau C ++. Saya hanya akan menggunakan jenis Bahasa Inggeris seperti sintaksis, yang kita biasanya akan panggil kod pseudo. Di sini, saya mempunyai tetingkap kosong. Dan saya berkata langkah 1 yang algoritma pertama adalah mengambil buku telefon. Langkah 2 adalah buku terbuka kepada halaman pertama. Langkah 3 akan melihat halaman untuk Mike Smith. Jika pada halaman, hubungi Mike. halaman seterusnya lagi dan pergi ke langkah 3. Selesai, katakan. Dan oleh itu tidak cukup sempurna, yang kita akan melihat dalam seketika. Tetapi mari kita mempertimbangkan apa konsep saya diperkenalkan di sini. Jadi langkah 1 dan 2 dan 3 cukup banyak kata kerja. Mereka kenyataan, actions-- melakukan ini. Dan sebagainya dalam pengaturcaraan bahasa, kita akan secara amnya memanggil mereka kenyataan atau fungsi atau prosedur, memanggil mereka apa-apa beberapa perkara. Tetapi mereka hanya actions-- melakukan ini. Langkah 4 adalah berbeza, kerana ia adalah jenis bertanya soalan. Ia mengatakan kita jenis sekurang-garpu di jalan raya. Jika Mike adalah pada halaman, memanggil dia, jadi belok kiri, jika anda akan. Dan jika tidak, kembali kepada beberapa lain page-- atau sebaliknya, maaf, kembali kepada beberapa langkah lain yang mendorong beberapa jenis gelung membina. Dan kami melakukannya lagi dan lagi dan lagi. Dan sebenarnya, anda tahu apa? Yeah. lain jika pada akhir stop buku. Oleh itu, kita perlu jenis satu pertiga keadaan, kerana anda tidak boleh menyimpan beralih iklan halaman nauseum, kerana akhirnya, saya akan melanda akhir buku ini. Dan pepijat dalam program yang mungkin tidak menjangkakan senario itu. Dan kemudian saya hanya sedar, oh, tunggu satu minit, saya perlu senario ketiga. Jika saya keluar dari halaman, saya harus benar-benar hanya berhenti. Jika tidak, ia undefined. Apa yang akan berlaku jika saya terus berkata menjadikan halaman dan kembali, ini adalah apabila komputer membekukan atau kemalangan, apabila anda menekan beberapa keadaan yang tidak dijangka seperti itu. Sekarang, bagaimana pula dengan Mike algorithm-- ketiga Smith mengambil buku telefon, buku yang terbuka untuk first-- untuk tidak, bukan halaman pertama kali ini, untuk middle-- oh, baik, yang sebaiknya menjadi algoritma kedua. Mari kita melangkau ke ketiga. PENONTON: Oh, saya minta maaf. DAVID MALAN: Itu baik. Mari kita skip to terbuka third-- ke tengah dan kini mencari Mike Smith. jika pada halaman, hubungi Mike. Dan kemudian apa yang kita ingin katakan di sini? lain apa? Kita boleh menyatakan ini dalam mana-mana cara. Ada jawapan yang betul. OK, jika tidak lagi, tetapi kita perlu adalah- OK, kita mahu untuk membahagikan dalam dua, tetapi adakah kita mahu pergi kiri atau pergi kan? Bagaimana kita menyatakan tanggapan itu? Nah, dalam kes Mike, ya, yang adil. Tetapi OK, jadi itulah sebenarnya titik yang baik. Itulah denda. Kami akan terus pergi dengan logik ini. So-- PENONTON: kurang daripada separuh. DAVID MALAN: Ya. Jadi lain jika halaman, kita akan berkata, kurang daripada Smith, di sebelah kiri Smith, then-- mari kita lihat, ini akan merumitkan? lain jika halaman datang sebelum Smith, lusuh pada separuh, buang yang separuh? PENONTON: Saya fikir itu adalah [didengar]. DAVID MALAN: Saya mendengar kedua-dua jawapan. PENONTON: Kiri. DAVID MALAN: OK, membuang jauh meninggalkan separuh, kerana Lakisa katakan sebelum ini, sebelah kiri separuh, maka saya jenis mahu hanya pergi supaya- saya pergi ke kanan. Atau setara, dan saya membuat sedikit sedikit berantakan awal di sini, Saya berkesan mahu pergi ke langkah 2 lagi, di mana terbuka kepada middle-- atau open-- yeah, mari kita hanya mengatakan, laman ke tengah. Dan ini membetulkan ia. Ia tidak lagi buku. Ia hanya separuh daripada buku, muka surat terbuka sedemikian untuk pertengahan. else-- hampir di sana. Langkah 6, lain jika halaman datang selepas Smith, air mata pada separuh, membuang setengah dari kanan, kemudian pergi ke langkah 2. pun berhenti, senario keempat jika kita tidak mempunyai halaman lagi untuk menghidupkan. Oleh itu, kita boleh membersihkan sehingga ini. Dan kita perlu membersihkan ini sehingga. Ini adalah kod yang sangat pseudokod, jika anda akan, penerangan tahap yang sangat tinggi. Tetapi ia biasanya menangkap idea. Dan, sekali lagi, dalam senario ini, kita mempunyai tanggapan keadaan, cawangan, garpu di jalan raya, membuat yang decision-- jika ini, pergi cara ini, lain jika, pergi cara ini, lain jika, pergi dengan cara itu. Dan ini adalah perkara biasa teknik pengaturcaraan untuk menentukan arah untuk pergi, jadi untuk bercakap. Dan kami juga mempunyai beberapa jenis menggelung struktur, di mana kita melakukan sesuatu lagi dan lagi. Kini, ia ternyata, banyak seperti dalam contoh ini, yang super tepat adalah penting. Tetapi kita juga telah melihat sesuatu bahawa kita terus memanggil abstraksi. Apa yang ia bermaksud untuk mengambil buku telefon? Kami hanya jenis mengambil untuk diberikan di dalam bilik ini yang yang mempunyai beberapa makna semantik. Semua kita hanya jenis tahu, oh, dengan baik, mengambil buku telefon. Apa yang benar-benar bermakna? Nah, itu benar-benar bermakna melanjutkan tangan, membongkok, melanjutkan jari, picit buku antara jari, berdiri, menarik tangan ke arah anda. Dan kita boleh menjadi benar-benar bengah tentang perkara ini, benar-benar menjadi super tepat apa yang saya lakukan. Tetapi semua langkah-langkah secara kolektif adalah apa yang dimaksudkan dengan mengambil sebuah buku telefon. Dan sebagainya sebelum ini, apabila saya berkata, setiap dua kenyataan ini pertama boleh dianggap sebagai meneruskan atau fungsi, benar-benar ia mewakili apa yang kita menjaga memanggil abstraksi yang. Ia seperti tahap yang tinggi konsep perihal masalah yang sebenarnya melibatkan agak beberapa langkah. Dan hal ini juga, adalah topik berulang dalam pengaturcaraan, di mana saya boleh menulis program yang menggunakan sintaks seperti this-- pick_up_phone_book (). Dan kemudian sintaksis, Saya akan mencuri sesuatu daripada kebanyakan bahasa pengaturcaraan. Sekarang, langkah 1 kelihatan lebih lebih seperti fungsi, sebagai programmer akan memanggilnya. Ia kelihatan seperti kod yang seseorang telah memberikan nama kepada dan diberikan kepada saya untuk menggunakan somehow-- dalam lain kata-kata, apa garis yang saya telah menekankan mewakili fungsi yang mungkin Saya tidak melaksanakan sendiri. Seseorang yang lebih tua, lebih bijak daripada saya sudah digambarkan bagaimana anda meluahkan tanggapan memungut buku telefon. Dan ia seperti lima langkah saya bingung off, di luar bahagian atas kepala saya. Tetapi dia telah melaksanakan ini, memberikan mereka beberapa langkah nama, pick_up_phone_book. Dan kurungan adalah hanya apa yang kebanyakan pengaturcara lakukan pada akhir kenyataan-kenyataan seperti ini. Saya kini boleh berdiri di atas masing-masing bahu dan tidak lagi, berfikir tentang apa yang dimaksudkan untuk mengambil buku telefon. Saya hanya boleh berkata, mengambil buku telefon. Dan itulah apa yang kita semua manusia lakukan di sini. Ketika kami mungkin 1 tahun, 2 tahun, seseorang mempunyai untuk mengajar kita apa yang ia bertujuan untuk mengambil sebuah buku telefon. Dan sejak itu, kami telah disarikan jauh dari orang-orang yang sangat tidak menarik langkah mekanikal. Dan kita hanya mempunyai pemahaman intuitif apa yang dimaksudkan dengan mengambil sebuah buku telefon. Dan anda boleh membuat anggaran sekarang untuk things-- lebih rumit membina bangunan. Seperti, bagi sesetengah orang, yang sebenarnya mempunyai makna. Kepada kontraktor, untuk arkitek, yang mempunyai beberapa makna. Dan mereka akan tahu apa yang perlu dilakukan, jika Saya berkata, pergi membina bangunan. Tetapi kebanyakan daripada kita di dalam bilik tidak boleh berurusan dengan tahap yang abstraksi. Anda perlu memberitahu kami suka pergi mendapatkan spade dan pergi mendapatkan konkrit dan kuku kepingan kayu bersama-sama dan apa-apa sahaja terlibat dalam membina bangunan. Dan itu kerana kita tidak mempunyai lagi diprogramkan untuk memahami apa yang dimaksudkan dengan membina bangunan. Kami tidak mempunyai abstraksi itu. Kami tidak mempunyai fungsi itu. Dan supaya apa yang anda akan lihat dalam bahasa pengaturcaraan, secara umum, bahasa terutama lebih moden, seperti Java, PHP, Ruby dan Python, mereka lebih matang daripada bahasa yang lebih tua, seperti orang lain C dan C ++ dan lagi. Dan supaya mereka datang dengan lebih fungsi terbina dalam. Lagi Kod yang telah ditulis oleh orang-orang pada masa lalu bahawa kita kini boleh memanggil atau memanggil atau digunakan, kerana saya membayangkan pada dengan ini menekankan talian di sini. Dan sebagainya walaupun kita tidak bercakap mengenai bahasa pengaturcaraan per se, kod hanya pseudokod, semua idea masih dalam perbincangan itu. Dan ternyata ketepatan adalah super penting, seperti pengabstrakan. Dan mari kita cuba untuk berkomunikasi yang seperti berikut. Saya secara tidak sengaja mungkin telah rosak ini dengan berkelip slaid pada skrin awal. Tetapi biarlah saya meminta sukarelawan berani, jika anda tidak keberatan datang. Anda akan berada di hadapan daripada kamera, jika anda OK dengan itu. Ada sesiapa yang ingin datang dan memberi arahan kepada rakan-rakan anda di sini? Hanya perlu datang ke sini dan berdiri di sini dan mengatakan beberapa perkataan. Victoria tersenyum yang paling dan mengelakkan mata saya yang paling. Adakah anda bersedia untuk datang pada sehingga? OKEY. Dan jika orang lain di tempat duduk anda boleh mengambil sehelai kertas sekerap, jika anda akan. kertas dibarisi adalah baik. Datang sekitar dengan cara ini. Atau sebahagian daripada kertas yang anda telah diberikan semalam, hanya mana-mana lembaran kosong kertas, jika anda boleh. Dan jika anda tidak mempunyai apa-apa, hanya meminta jiran anda jika anda boleh. Jadi buat masa ini, untuk contoh ini, Victoria akan memainkan peranan programmer, seorang jurutera, yang perlu memprogram kamu semuanya, komputer, untuk melakukan sesuatu. Dan kita akan melihat apa andaian anda membuat keputusan untuk membuat. Kita akan melihat betapa tepat dia memilih untuk menjadi. Dan jika demonstrasi ini pergi pedagogically baik, banyak kesilapan akan dibuat, kita kemudian akan menggunakan bahawa sebagai satu peluang untuk perbincangan. Tetapi cabaran untuk anda perlu adalah untuk mengelakkan kesalahan yang sama, menjadi pengaturcara yang baik. Dan jadi cabaran yang dihadapi, jika anda akan suka untuk berjalan di sini, adalah di hadapan Victoria pada skrin sini-- dan diharapkan, tiada seorang pun yang ingat ini apabila saya pemimpin-pemimpin itu pada skrin. Dan tidak pulih sama sekali, kerana terdapat skrin yang lain di dalam bilik ini bahawa saya boleh mematikan. Jadi jangan pulih. Di hadapan Victoria adalah jeritan yang sama. Dan tugas beliau sekarang adalah untuk memberitahu anda semua pada sekeping anda kertas apa yang menarik. Dan kita akan lihat, berdasarkan arahan lisan sahaja, kod komputer, jika anda akan, bagaimana tepat lukisan anda ialah- pelaksanaan anda berada. Masuk akal? PENONTON: Ya. DAVID MALAN: OK, melaksanakan. PENONTON: Lukiskan segiempat. [Ketawa] DAVID MALAN: Dan tidak soalan boleh ditanya. Hanya boleh melakukan apa yang anda diberitahu. Oh, dan jika anda mempunyai slaid hari ini buka dalam tab, tidak melihat tab anda. OKEY? PENONTON: OK, melukis bulatan. slope-- A yang boleh saya katakan cerun? DAVID MALAN: Sehingga kepada anda. PENONTON: cerun A. Dan segi tiga. DAVID MALAN: Baiklah. Dan di sini hanya seketika. Dan saya akan datang sekitar dalam hanya seketika. Dan tidak perlu meletakkan nama anda di atasnya. Biar saya datang sekitar dan mengumpul lukisan anda, jika anda tidak keberatan mengoyak mereka keluar. Berikut adalah apa yang kita dapat kembali. Saya akan memperlihatkannya pada skrin. Saya melihat persegi, bulatan, cerun, dan segi tiga. Jadi itu adalah satu jawapan di sana. Dan let's-- whoops. Terima kasih. Berikut adalah pelbagai lain, dan satu di belakangnya. Jadi mereka semua seolah-olah menangkap semangat. Terima kasih. Ada satu lagi, dan inilah satu sama lain. Tafsiran yang cerun ialah sedikit berbeza, sedikit curvy. Dan yang paling dekat, sama ada kerana kekhususan yang indah yang anda telah diterangkan, atau mungkin anda jenis melihatnya sebelum ini, ini memang apa Victoria sebenarnya menerangkan. Tetapi sekarang, orang-orang yang tidak mendapat ia agak betul, mari kita menawarkan beberapa bantahan di sini. Jadi Victoria pertama berkata menarik segiempat. Dan sekarang, kita boleh mengandaikan demi hari ini yang semua orang tahu bagaimana untuk menarik segiempat. Tetapi itu bukan sepenuhnya jelas, bukan? Bagaimana lagi anda boleh mempunyai disediakan persegi, atau di mana mungkin menjadi sebahagian daripada kekaburan di sini untuk komputer? PENONTON: Lokasi dan saiz. DAVID MALAN: Location, bukan? Anda semua mempunyai kertas beberapa bentuk, biasanya segi empat tepat, tetapi sedikit saiz yang berbeza. Tetapi anda pasti boleh dikeluarkan, jika anda mahu, persegi besar, mungkin persegi kecil. Mungkin, ia telah diputar. Saya tidak fikir kita melihat bahawa. Tetapi ia boleh menjadi lebih berlian seperti tetapi masih, tetap, Secara matematik segiempat. Jadi yang dikatakan samar-samar. Maka kata perempuan itu melukis bulatan. Sebahagian daripada anda tidak menarik ia di sebelah ia, yang tidak munasabah, kerana manusia cenderung untuk berfikir atau membaca kanan ke kiri dalam kebanyakan bahasa, jadi tidak tekaan buruk. Tetapi bulatan yang boleh memberi telah di dalam dataran, boleh menjadi sekitar persegi, boleh jadi di tempat lain pada helaian, jadi boleh dikatakan samar-samar. Slope mungkin telah mungkin mengambil kebebasan yang paling lisan dengan apa yang bermakna. Dan di antara kamu ditafsirkan sebagai garis berlekuk-lekuk atau garis lurus atau sebagainya. Dan kemudian segi tiga, juga, boleh mempunyai telah berorientasikan dalam mana-mana cara. Jadi ringkasnya, walaupun dengan sesuatu yang anda pandang dan anda seperti, wow, jadi mudah, kanak-kanak boleh menarik ini, juga tidak benar-benar, melainkan jika anda super, super meyakinkan dan memberitahu komputer apa yang perlu dilakukan. Jadi jika kita boleh, jika anda mempunyai lain sehelai kertas, mari kita cuba ini sekali lagi. Dan saya akan memberikan satu Victoria contoh lain pada skrin di sini. Dan sekali lagi, tidak pulih dan tidak melihat slaid anda. Dan saya akan memberikan dia masa untuk berfikir tentang bagaimana untuk menerangkan ini. Jangan biarkan mereka melihat ketakutan dalam mata anda. [Ketawa] Dan sekali lagi, leverage masa ini sebahagian daripada mereka bawa pulang dan cuba untuk mendapatkan hampir semua orang sekurang-kurangnya jawapan yang betul. PENONTON: OK, mengambil sehelai kertas, melihat di tengah-tengah yang sekeping kertas. Di tengah-tengah bahagian yang kertas, menarik kiub. [Ketawa] DAVID MALAN: Apa yang telah kita pelajari? Kami sangat rapat. OK, ulangi jika anda boleh, untuk semua orang. PENONTON: Di tengah-tengah sehelai kertas, melukis objek, yang kelihatan seperti kiub. DAVID MALAN: OK, itu semua yang anda dapatkan untuk bekerja dengan. Izinkan saya untuk menjadi analitikal dan tidak begitu banyak kritikal, tetapi untuk membuat tuntutan bahawa Victoria pasti seolah-olah berfikir dalam sangat abstrak tahap tinggi, yang tidak munasabah. Kerana jika tidak, kita semua cukup berfungsi, jika kita mempunyai untuk menjadi yang begitu tepat dengan segala yang kita lakukan di dunia. Tetapi mengatakan pergi ke I middle-- pemikiran kita atas apa-apa pencapaian yang baik di sana, seperti pergi ke tengah sangat halaman, dan kemudian menarik kiub. Jadi dia berfikir dalam abstrak, kerana dia masih melihat apa yang pada skrin kerana sesungguhnya kiub. Tetapi ada begitu banyak peluang untuk tafsiran sana. Dan sebenarnya, terdapat begitu banyak cara-cara lain anda boleh meluahkan itu, yang saya akan mencadangkan dalam seketika. Jadi di sini kita mempunyai satu penjelmaan satu whoops-- yang picture-- penjelmaan gambar, jadi sedikit tiga kematraan kepadanya, yang bagus. Berikut adalah satu sama lain, di mana anda mempunyai sama, walaupun ia adalah jenis kiub terbuka. Sesetengah orang mengambil ia sedikit lebih rata, dua dimensi. Dan itulah denda. Jadi ada, sesungguhnya dalam pusat kertas. Yang ini saya fikir anda akan seperti, kerana jika kita pergi di sini, ini adalah apa yang dia menerangkan. Jadi sekarang, biarlah saya mencadangkan bagaimana lagi kita mungkin menggambarkan keadaan ini. Kembali pada hari itu, salah satu yang paling cara yang lebih biasa untuk belajar pengaturcaraan adalah untuk menulis kod, menulis baris arahan, yang dikawal sedikit penyu pada skrin. Logo dan varian lain ini adalah nama bahasa. Dan penyu hidup dalam dunia yang. Jadi andaikan segi empat tepat ini ruang adalah dunianya. Dan anda akan bermula dengan assuming-- Saya tidak benar-benar tahu bagaimana untuk menarik penyu, jadi mari kita melakukannya seperti ini. Dan kemudian dia mendapat shell dan kemudian mungkin beberapa kaki. Jadi, anda mungkin mempunyai ini sedikit watak pada skrin. Dan objek ini bahasa pengaturcaraan adalah untuk memaksa penyu untuk pergi ke atas, bawah, kiri, kanan dan meletakkan pen ke bawah atau mengambil pen ke atas, jadi dia sebenarnya boleh menarik pada skrin di dunia ini segi empat tepat sangat rata. Jadi di mana saya fikir anda mungkin akan pergi, dan di mana anda perlu mengambil kira menyelam turun ke mental apabila menerangkan arahan yang lebih umum, Saya akan menuntut, diletakkan anda pen ke bawah dalam middle-- yang dan kami akan menghilangkan penyu, kerana saya tidak boleh benar-benar menyimpan lukisan dia dengan baik. Dan kini, bagaimana lagi boleh Saya katakan menarik kiub? Nah, kita boleh mengatakan sesuatu seperti seri garis timur laut pepenjuru, misalnya, atau pada sudut 45 darjah ke atas. Dan yang mungkin telah mendapat saya di sini. Dan saya cukup jauh dari kiub. Tetapi sekarang, saya boleh mengatakan sesuatu seperti menukar 90 darjah ke kiri dan menarik garis sama panjang barat laut. Dan saya boleh terus dengan arahan yang sama. Dan ia tidak akan menjadi mudah. Dan terus-terang, kita mungkin akan telah berada di sini selama lima minit. Tetapi mungkin kita akan mendapat ke sesuatu yang, pada akhir hari, berakhir menjadi kiub, tetapi kita menyelam dalam abstraksi yang untuk melakukannya pada apa-apa yang rendah tahap yang anda tidak boleh benar-benar melihat apa yang anda lakukan sehingga seluruh perkara yang sebenarnya ada pada halaman. Dan jadi ini adalah satu prinsip umum, sekali lagi, sudah programming-- idea ini abstraksi. Ia begitu hebat kuat, kerana sekali lagi, dia hanya berkata, menarik kiub, yang semua kita cukup banyak akan grok dengan cepat. Kami hanya akan memahami, OK, menarik kiub. Kita mungkin tidak tahu orientasi, supaya kita boleh menjadi sedikit lebih tepat, tetapi kita biasanya boleh gambar atau tahu apa kiub adalah. Dan itulah yang berguna, kerana jika setiap kali anda duduk sebagai pengaturcara di keyboard anda untuk menulis kod, jika anda mempunyai untuk berfikir pada apa-apa tahap yang rendah, tiada seorang pun daripada kami akan pernah mendapatkan apa jua yang dilakukan. Dan sesungguhnya, tiada seorang pun daripada kami akan menikmati proses menulis kod. Ia akan menjadi seperti menulis dalam 0 dan 1 ini, yang terus-terang tidak begitu lama lalu manusia telah menulis kod dalam 0 dan 1. Dan kami dengan cepat datang dengan ini languages-- tahap yang lebih tinggi C ++ dan Java dan lain-lain. Jadi mari kita cuba ini sekali lagi hanya untuk flip jadual, supaya kita semua mempunyai peluang untuk berfikir di agak cara yang sama. Bolehkah kita mendapat satu lagi sukarelawan ini masa untuk tampil kepada lembaga dan menarik, tidak membaca? Yeah, OK. Ben, datang ke atas. Dan, Ben, dalam kes ini, sebaik sahaja anda menghadapi lembaga, tidak kelihatan kiri, tidak kelihatan betul. Hanya melakukan apa yang anda rakan-rakan di sini memberitahu anda. Dan untuk orang lain dalam bilik, anda kini pengaturcara. Dia komputer. Dan gambar yang saya telah dipilih di sini terlebih dahulu adalah salah satu ini di sini. Mereka just-- mereka berfikir jenaka lucu semua. Demikian akan tidak seseorang suka sukarelawan arahan pertama atau pernyataan yang sepatutnya pen arahan Ben? Dan kami akan melakukan ini secara kolektif, mungkin satu arahan dari setiap orang. Saya minta maaf? PENONTON: Lukiskan satu bulatan. DAVID MALAN: Lukis bulatan adalah perkara pertama yang saya dengar. PENONTON: Sehingga atas. DAVID MALAN: Sehingga atas. OK, kita boleh membiarkan anda memadam, batal. Dan kini, orang lain. Dan, anda akan selesa menawarkan arahan seterusnya? PENONTON: Pasti, menarik pusat bahagian bawah bulatan, dengan small-- sedikit ruang kecil itu, menarik garis lurus ke bawah hingga tiga suku daripada jalan ke bawah lembaga sudut sedikit ke kiri anda. DAVID MALAN: Baik. PENONTON: sudut sedikit. DAVID MALAN: Undo, Control-Z. OKEY. Andrew, anda mahu untuk menawarkan sehingga arahan seterusnya? PENONTON: Pasti. Dari bahagian bawah talian itu, yang angle-- sedikit lagi whoops-- mungkin kira-kira satu pertiga panjang [didengar], sudut sedikit ke bawah dan seperti pertiga daripada panjang [didengar]. Jadi ya, dari sudut itu, menarik garis satu pertiga daripada panjang sebelumnya line lagi ke kiri. DAVID MALAN: OK Itu? garis lurus, itu OK? OK, Olivier, anda mahu untuk menawarkan sehingga seterusnya? PENONTON: [didengar] dari bahagian bawah bulatan, [didengar]. Menarik di sebelah kanan [didengar] sentimeter. [Ketawa] DAVID MALAN: Saya rasa anda akan perlu menukar itulah inci di sini. PENONTON: Hentikan. [Ketawa] DAVID MALAN: OK. [? Ara,?] Yang anda mahu untuk menawarkan sehingga seterusnya? PENONTON: Lukiskan [didengar] atas [didengar] yang sama. [Didengar] bulatan, menarik kepada [Didengar] dan menarik [didengar]. DAVID MALAN: OK, tidak lebih batal. Mari kita buat satu atau dua lagi arahan. Chris, anda mahu untuk menawarkan satu? PENONTON: Di bahagian bawah bulatan, [didengar] menarik garis terasa licin sama ke bawah ke kiri [didengar]. DAVID MALAN: OK. Andrew? Kami did-- Karim? PENONTON: Bermula dari garis yang betul, akhir garisan kiri, bahagian bawah, anda akan pergi betul tentang panjang yang sama seperti garis yang yang anda gunakan, lukisan untuk yang betul [didengar]. [Didengar] darjah, jadi [didengar] darjah di sebelah kanan. DAVID MALAN: Baiklah. Mari kita berhenti seketika. Tidak pulih lagi. Mari kita berhenti sejenak, dan mari kita cuba satu percubaan lain sebelum kita mendedahkan kepada Ben apa yang dia telah melukis. Bolehkah anda shuffle Ben untuk yang right-- atau sebenarnya, tidak, mari kita hanya memberikan anda lembaga lain, yang lebih baik. Demikian akan seseorang kini suka untuk mengambil lebih banyak pendekatan bahawa Victoria mengambil lebih awal pada, di mana kita bercakap dalam abstraksi tahap yang lebih tinggi dan hanya dalam ayat atau dua menerangkan kepada Ben apa yang menarik tanpa mendapat ke dalam rumpai, jadi untuk bercakap, di ini tahap yang lebih rendah? Victoria. [Ketawa] PENONTON: Lukiskan satu angka manusia berjalan. Dan kaki dan tangannya perlu sebelah kanan. DAVID MALAN: OK, itu sahaja yang anda dapat. Baiklah. Kenapa kita tidak mendedahkan kepada Ben apa yang dia lakukan. Jadi pusingan tepukan. Itu adalah yang paling sukar mungkin. Jadi, walaupun kita berbicara dari segi agak bodoh kira-kira hanya melukis gambar, mudah-mudahan anda benar-benar boleh menghargai tahap ekspresi yang mungkin perlu untuk memberitahu komputer apa yang perlu dilakukan. Dan sebenarnya, hakikat bahawa Ben dapat menarik ini begitu cepat adalah jenis bukti menggunakan bahasa, mungkin tahap yang lebih tinggi versi Bahasa Inggeris, yang membolehkan dia hanya menggunakan kata-kata, atau mendengar kata-kata dari Victoria, yang membolehkan dia ini abstractions-- hanya menarik seorang tokoh berjalan ke right-- yang jenis mempunyai beberapa makna semantik kepadanya bahawa tidak hampir yang jelas apabila anda hanya berkata, meletakkan pen anda ke bawah, menarik ke kanan, menarik ke kiri. Dan hal ini juga, adalah sangat biasa dalam pengaturcaraan. Ini akan dikatakan seperti bahasa tahap yang sangat rendah, program dalam 0 dan 1 jika anda akan. Dan ini akan menjadi tahap yang lebih tinggi bahasa pengaturcaraan di Jawa, atau sesuatu seperti itu. Sedikit yang melampaui batas, tetapi itu jenis seperti emosi perasaan yang anda rasa apabila menggunakan satu jenis perkara atau yang lain. Sedikit kekecewaan sini oleh keperluan untuk ketepatan itu, tetapi peluang menjadi longgar sedikit dengan tafsiran di sini. Tetapi sudah tentu, pepijat boleh timbul akibat. Jika anda lebih suka pada home-- kita tidak akan melakukan satu ini dalam class-- tetapi jika anda ingin membawa satu rumah ini, Saya fikir kita akan menyelam ke dalam ini. Jadi, jika anda ingin bermain ini permainan dengan lain penting anda atau anak-anak atau sebagainya, anda mungkin menikmati itu juga. Jadi mari kita pergi ke hadapan dan melihat kepada satu lepas perkara di sini untuk pemikiran pengiraan. Dan ini membawa kita kepada John Oliver, bukan untuk klip anda mungkin telah melihat malam tadi, tetapi untuk satu isu yang agak baru-baru ini. Beberapa bulan yang lalu, Volkswagen mengambil masa agak sedikit kritikan untuk apa sebab, jika kamu mengetahui? Apa yang mereka mendapat masalah untuk? Ya, jadi emissions-- mereka cuba untuk mengalahkan pelepasan ujian oleh dasarnya mempunyai mereka kereta mencemarkan alam sekitar kurang apabila kereta mereka sedang diuji dan mencemarkan alam sekitar yang lebih apabila kereta tidak diuji. Dan apa yang semakin menarik di dunia, kerana anda mungkin mempunyai disimpulkan dari perbincangan like-- apa yang it-- CarPlay, perisian Apple untuk kereta dan hakikat bahawa banyak kita semakin mempunyai skrin sentuh dalam kereta kami, ada sejumlah menakutkan perisian dalam rakyat kereta hari ini, yang terus terang membuka satu tin seluruh cacing apabila ia datang kepada keselamatan dan risiko fizikal. Tetapi hari ini, mari kita memberi tumpuan kepada hanya apa yang terlibat dalam perisian bertulis yang mungkin telah gamed sistem. Takrif yang masalah, bagi mereka yang tidak dikenali, mari kita lihat John Oliver. Dan bagi mereka yang biasa dengan masalah ini, mari kita lihat ia dalam kanta yang menyeronokkan melalui John Oliver juga. Jadi biarlah saya tekan bermain di ini, saya berfikir, tiga minit pengenalan. Tak guna. [VIDEO MAIN SEMULA] -Cars-- DAVID MALAN: Jelas sekali, di YouTube, it's-- - --Di Aksara bijak di Fast and Furious filem. Minggu ini, pembuat kereta Jerman Volkswagen mendapati dirinya di tengah-tengah skandal perkadaran yang berpotensi jenayah. -Volkswagen Bersedia untuk menghadapi berbilion denda, mungkin tuduhan jenayah untuk kakitangannya, kerana syarikat itu meminta maaf untuk penipuan 11 juta kereta untuk membantu ia menewaskan ujian pelepasan. model diesel -Certain direka dengan perisian canggih yang maklumat yang digunakan, termasuk kedudukan stereng dan kenderaan kelajuan, untuk menentukan kereta itu menjalani ujian pelepasan. Di bawah keadaan yang, enjin akan mengurangkan pelepasan toksik. Tetapi kereta itu rigged untuk bypass bahawa apabila ia dipandu. Pelepasan meningkat 10 hingga 40 kali melebihi paras EPA boleh diterima. -Wow, 10 hingga 40 kali lebih besar daripada EPA membolehkan. Itulah perkara yang paling teruk Volkswagen yang pernah dilakukan, adalah sesuatu yang anda mungkin berkata jika anda tidak pernah mendengar Perang Dunia II. Tetapi mungkin tanda yang paling pasti bagaimana masalah yang lebih Volkswagen dalam, adalah orang yang sekurang- bahagian telah meletak jawatan. Ketua Pegawai Eksekutif meletak jawatan pada hari Rabu selepas bergegas untuk melakukan kawalan kerosakan, berkata beliau tanpa henti maaf, yang kedengaran hebat sehingga ternyata dia hanya 10% maaf tetapi telah rigged mulutnya buatan mengembung sorriness beliau. Dan sementara itu, Volkswagen AS Ketua mempunyai permohonan maaf sendiri. -Biar Kita jelas tentang perkara ini, syarikat kami adalah tidak jujur. Dan dalam perkataan Jerman saya, kami telah sama sekali kacau sehingga. -Yeah, Tetapi sama sekali diskrukan sehingga tidak kerja-kerja Jerman. Dan bahasa Jerman mempunyai banyak frasa indah untuk menggambarkan keadaan seperti ini, seperti [GERMAN], yang bermaksud kira-kira, kesedihan yang datang dari pembohongan yang berkaitan dengan perniagaan, atau [GERMAN], yang diterjemahkan sebagai memalukan bapa yang melibatkan awan petrol. Ia adalah bahasa yang indah. Ia hanya layar off lidah. Dan dengan cara itu, manakala lelaki itu permohonan maaf mungkin kedengaran ikhlas, ia adalah diperhatikan beliau berkata demikian pada sebuah parti pelancaran rasmi untuk 2016 Volkswagen Passat, yang bermaksud bahawa sebentar lagi selepas berkata maaf, beliau berkata demikian. -Terima Kasih kerana sudi datang. Nikmati petang. Sehingga seterusnya adalah Lenny Kravitz. [MUZIK Bermain] -OK, OK, berakhir anda permohonan maaf dengan sehingga seterusnya Lenny Kravitz tidak menjerit penyesalan tenang. Ia menjerit, kami bertanya Bon Jovi, dan dia berkata tidak. jenama Volkswagen mempunyai telah rosak teruk. Dan terus-terang, iklan baru mereka kempen tidak betul-betul membantu. - [GERMAN], kami di Volkswagen mahu memohon maaf kerana menipu anda dengan kenderaan kami. [AKHIR MAIN SEMULA] DAVID MALAN: Jadi ini adalah satu cara bulatan dengan- sorry-- ini adalah cara yang Bulatan memperkenalkan masalah asas dalam perisian, yang adalah bahawa anda perlu untuk mengesan keadaan tertentu. Dan sebagainya soalan di tangan di sini adalah, bagaimana kereta yang berpotensi, seperti yang diterapkan dalam perisian oleh pengaturcara ini, mengesan bahawa ia sebenarnya sedang diuji? Jadi untuk menjadi super jelas, apa yang mereka lakukan adalah, dalam persekitaran di mana pengaturcara digambarkan kereta itu sedang diuji, mereka entah bagaimana dibuat kereta memancarkan kurang pengeluaran, kurang pelepasan, wasap jadi kurang toksik dan apa-apa. Tetapi apabila ia biasanya memandu di jalan raya, ia hanya akan mengeluarkan sebanyak pencemaran kerana ia mahu. Jadi bagaimana kita boleh menulis pseudokod untuk algoritma ini? Bagaimana kita boleh menulis pseudokod untuk perisian yang berjalan di dalam kereta? Maksud saya, secara ringkas, ia mendidih turun ke sesuatu seperti ini. jika diuji, mengeluarkan kurang. lagi mengeluarkan banyak lagi. Tetapi itu sedikit terlalu tinggi, bukan? Mari kita cuba untuk menyelam dalam apa ini abstraksi menjadi cara diuji. Dalam erti kata lain, walaupun anda tahu apa-apa tentang kereta, apa jenis soalan anda mungkin meminta untuk menentukan sama anda sedang diuji, jika anda kereta? Apa ciri-ciri mungkin hadir jika kereta yang sedang diuji? PENONTON: Menguji peralatan. DAVID MALAN: Peralatan Ujian. Jadi, jika peralatan ujian berdekatan, kemudian mengeluarkan kurang. Jadi saya boleh bayangkan melaksanakan bahawa dengan beberapa jenis kamera atau mengesan apa yang di sekeliling anda. Dan biarlah saya mencadangkan, bahawa hanya merasa terlalu rumit untuk benar-benar mempunyai tambahan perkakasan hanya untuk tujuan itu. PENONTON: Jika anda berada dalam park, jika hud anda dibuka. DAVID MALAN: Di taman atau hud terbuka, jadi itulah yang baik. PENONTON: Dan kereta berjalan. DAVID MALAN: Jadi itu sedikit lebih concrete-- dan kereta berjalan. Jadi ini akan menjadi konjungsi yang Beberapa keadaan yang berbeza, jika anda akan. Jadi, jika kereta itu adalah di taman, dan juga walaupun ini adalah satu perkara yang sangat mekanikal biasanya, saya boleh bayangkan menulis perisian, terutama kerana ada sering cahaya ada hari ini, Saya dapat membayangkan adanya perisian yang boleh query shifter atau tidak apa, adakah anda di taman, adalah anda di dalam pemacu, adakah anda secara terbalik. Dan saya boleh mendapatkan kembali yang menjawab itulah sama ada ya atau tidak kepada orang-orang jenis soalan. Oleh itu, saya boleh juga mungkin menjawab soalan seperti, adakah hud terbuka. Mungkin, ada beberapa jenis sensor yang sama ada memberikan saya kembali 1 atau 0, benar atau palsu, hud terbuka. Dan kemudian kereta berjalan, saya dapat mengesan yang entah bagaimana melalui apa mekanisme? Seperti, kereta sedang berjalan, saya dapat mengesan bahawa itu pada, boleh saya mengesan entah bagaimana kereta itu bergerak? PENONTON: RPMs. DAVID MALAN: Ya, jadi tidak sentiasa jarum yang yang memberitahu anda berapa banyak putaran per minit roda alami. Oleh itu, saya boleh melihat bahawa. Dan jika ia bukan 0, yang mungkin bermakna kereta sedang bergerak. Tetapi kita perlu menjadi sedikit berhati-hati di sana, because-- mari memudahkan this-- jika kita hanya berkata, jika kereta berjalan, kita tidak mahu hanya mengeluarkan kurang, kita mahu jika kereta sedang berjalan dan ia sedang diuji. Jadi, terdapat beberapa yang lain bahan-bahan yang orang telah hipotesis perisian lakukan, kerana tidak hadir kod sumber sebenar, anda, hanya semacam membuat kesimpulan dari kesan fizikal kereta apa mungkin berlaku di bawah hud dalam perisian. Jadi, jika kereta berjalan dan mungkin, katakan, roda belakang tidak bergerak, mungkin ini dianggap sebagai tanda beberapa jenis ujian? Apa yang saya membayangkan di sini? Ya, mungkin, ia adalah pada satu daripada perkara-perkara roller, di mana seperti roda beralih di hadapan atau di belakang, bergantung kepada sama ada ia adalah roda depan atau pacuan roda belakang, supaya separuh daripada roda yang bergerak, tetapi dua yang lain tidak, yang adalah satu keadaan pelik dalam dunia sebenar. Jika anda memandu di jalan raya, yang tidak sepatutnya berlaku. Tetapi jika anda berada dalam gudang pada beberapa jenis sistem roller, bahawa sesungguhnya mungkin berlaku. Saya rasa orang juga mencadangkan bahawa mungkin, jika kereta sedang berjalan dan stereng roda tidak bergerak, yang juga mungkin menjadi isyarat, kerana itulah yang munasabah bagi seperti merta di jalan. Tetapi walaupun begitu, manusia itu mungkin bergerak sedikit atau pasti lebih beberapa saat. Atau perjalanan suatu minit, kemungkinan ia tidak akan fixated dalam tepat kedudukan yang sama. Jadi dalam erti kata lain, kita boleh mengambil penolakan, adakah anda sedang diuji, dan memecahkan fungsi yang ke dalam bahan-bahan komponen. Dan itu benar-benar apa yang Volkswagen jurutera entah bagaimana lakukan. Mereka menulis perisian secara sedar untuk mengesan jika kereta itu sedang diuji, oleh itu memancarkan kurang, lain mengeluarkan dengan cara yang biasa. Dan masalah di sini, juga, adalah bahawa perisian tidak sesuatu yang anda benar-benar boleh melihat kecuali anda mempunyai kod sumber yang dipanggil. Jadi ada dua jenis code-- sekurang-kurangnya dua jenis kod dalam dunia. Ada sesuatu yang dinamakan sumber kod, yang tidak tidak seperti apa yang kami telah menulis, kod sumber. Ini adalah kod sumber yang ditulis dalam bahasa yang dipanggil kod pseudo, yang hanya sesuatu bahasa Inggeris seperti. Tidak ada definisi formal itu. Tetapi C dan Java, C ++, orang-orang semua bahasa rasmi itu, apabila anda menulis di dalamnya, apa yang anda perlu adalah fail teks yang mengandungi kod sumber. Tetapi ada juga sesuatu dalam dunia yang dipanggil kod mesin. Dan kod mesin, malangnya, hanya 0 dan 1. Jadi kod mesin adalah apa yang Mesin memahami, sudah tentu. kod sumber adalah apa yang manusia faham. Dan secara amnya, tidak tetapi biasa, terdapat program yang yang seorang programmer menggunakan yang mengambil sumber kod dan bertukar ke dalam kod mesin. Dan program yang umumnya dipanggil pengkompil. Jadi input anda adalah kod sumber, output anda adalah kod mesin, dan pengkompil adalah sekeping perisian yang melakukan proses itu. Jadi ini sebenarnya maps dengan baik untuk input kami, algoritma, output. Tetapi ini adalah satu penjelmaan yang sangat khusus itu, yang mengatakan bahawa, walaupun anda memiliki salah satu daripada Volkswagen kereta yang bersalah dalam hal ini, ia tidak seperti anda hanya boleh membuka hud atau membuka manual pengguna atau melihat kod sumber, kerana pada masa ia mencapai kereta anda di jalan masuk rumah anda, ia sudah menjadi ditukar kepada 0 dan 1. Dan ia adalah sangat keras, tidak mustahil, tetapi sangat sukar untuk memungut banyak apa-apa daripada hanya mencari di mendasari 0 dan 1. Jadi, anda boleh memikirkan ia keluar, akhirnya, jika anda memahami bagaimana mesin operates-- Intel inside-- jika anda memahami seni bina Intel, tetapi ia memakan masa yang sangat. Dan di sana, anda mungkin tidak dapat melihat segala-galanya bahawa kod sebenarnya boleh lakukan. Sebarang soalan mengenai ini atau ini jenis proses secara umum? Dan sebenarnya, kita boleh mengikat perbincangan ini perbincangan semalam pada Apple. Ini juga sebabnya mengapa FBI tidak boleh hanya pergi dan melihat di dalam telefon suspek dan mencari baris kod, untuk contoh, yang membolehkan kod laluan atau membolehkan bahawa kelewatan 80 milisaat. Kerana pada masa itu pada iPhone rakan-rakan ini, ia sudah menjadi ditukar kepada 0 dan 1. Nah, mari kita berhenti seketika di sini untuk kami melihat pemikiran pengiraan. Apa kata kita berehat 15 minit. Dan apabila kita kembali, kita akan kita lihat pada program sendiri dan mula untuk memetakan beberapa konsep-konsep peringkat tinggi kepada yang sebenar, jika suka bermain, bahasa pengaturcaraan.