[MUSIC PLAYING] SPEAKER 1: Ini adalah CS50 dan ini adalah akhir minggu tujuh. Hari ini adalah mungkin di mana kita benar-benar mengajar bahasa Anda. Kami diperkenalkan di masa lalu beberapa minggu HTML dan CSS, baik yang pemrograman bahasa. Dan memang, meskipun kita tidak melihat hampir semua tag HTML yang datang dengan dan hampir semua sifat yang datang dengan CSS, itu semacam itu untuk HTML dan CSS. Kami hanya akan umumnya mulai dengan asumsi bahwa Anda memahami ide-ide umum tag, dan atribut, dan halaman yang dikirim dari client ke server. Karena hari ini kita mulai melihat bahasa pemrograman lain, PHP. Kita akan melakukan hal ini super cepat. Kami tidak akan mengajarkan Anda PHP per se, seperti kita tidak bercita-cita untuk mengajarkan Anda C, per se, melainkan pemrograman. Dan memang, salah satu tujuan untuk kursus ini tidak untuk mengajarkan Anda C, atau HTML, atau CSS, atau PHP, atau sejumlah lainnya kata buzz atau akronim, melainkan ilmu komputer dan bagaimana program fundamental. Dan memang, hari ini kita mulai untuk mengambil mereka roda pelatihan dari semua lanjut dengan terbang melalui bahasa yang disebut PHP, sebagai berikut. Berikut adalah apa bahasa ini tampak seperti. Ternyata bahwa tidak ada kebutuhan untuk fungsi utama dalam sebuah program yang ditulis dalam bahasa yang disebut PHP. Sehingga sudah terdengar sedikit lebih sederhana dari C, dengan yang kita akrab. Ternyata bahwa jika Anda ingin mendeklarasikan variabel, Anda melakukannya hampir identik dengan C. Tapi ada jelas salah satu perbedaan di sini ketika saya menyatakan string, atau mungkin dua perbedaan. Apa yang terlihat berbeda? AUDIENCE: Tanda dollar. SPEAKER 1: Ya, ada dollar menandatangani, yang kita belum pernah lihat sebelumnya. Dan apa yang hilang? Ya? AUDIENCE: [tidak terdengar] SPEAKER 1: Ya, tidak ada tipe data. Jadi ternyata bahwa PHP adalah apa yang kita sebut bahasa longgar diketik, di mana C sangat diketik. Longgar diketik hanya berarti bahwa ada jenis data yang berbeda, ada string, dan int, dan mengapung. Namun angka komputer yang keluar. Anda programmer manusia tidak perlu mengetahuinya. Jadi semua harus Anda lakukan untuk mendeklarasikan variabel adalah tanda dolar, nama Anda variabel, dan kemudian, misalnya, kutipan tanda kutip, halo dunia. Nah ini adalah apa Kondisi seperti di PHP. Perbedaan? Tidak. Jadi ternyata ini adalah identik. Dan Anda mungkin memiliki lebih sedikit cabang atau cabang lebih, tapi ternyata sintaks keluar persis sama. Ekspresi Boolean bisa dipesan bersama-sama. Ekspresi Boolean dapat anded bersama-sama. Anda masih memiliki switch. Bahkan jika Anda belum pernah menggunakan ini, ini memang ada di C dan mereka fungsional setara dalam PHP. Dan pada kenyataannya, di PHP mereka sedikit lebih kuat. Dalam C, Anda hanya dapat membandingkan tertentu tipe data seperti int dan karakter, sedangkan di PHP Anda benar-benar dapat membandingkan string menjadi dewasa penuh tanpa khawatir tentang pointer dan sejenisnya. Jadi di sini adalah untuk loop. Ini hanya pseudocode kode, jika Anda mau. Tapi secara struktural itu identik dengan C. Berikut adalah while loop, pseudocode therefore-- identik dengan C. Berikut do sementara loop-- identik. Dan jadi ada jenis Pola ini di sini di mana ada sintaksis lain beberapa fitur kita memang akan melihat. Bahkan, di sini adalah baik cara PHP dimana, jika Anda ingin iterate lebih array, dan Anda tidak ingin melompat melalui hoops mental dan sintaksis memiliki int i sama dengan 0, i kurang dari n, i ditambah plus-- yang hanya banyak sintaks menjengkelkan. Anda dapat mengatakan sedikit lebih mulus untuk setiap nomor sebagai nomor, di mana dalam hal ini nomor tanda dolar, saya mengasumsikan, adalah seperti sebuah nomor array disebut. Dan kemudian saya mengasumsikan jumlah, tunggal, akan menjadi variabel. Dan apa yang PHP akan lakukan untuk saya karena saya iterate lebih lingkaran ini, pada setiap iterasi, itu akan memperbarui jumlah variabel menjadi unsur engan dalam jumlah, jamak. Sehingga hanya menangani semua itu untuk saya. Tidak ada tanda kurung, tidak ada tanda dolar, tidak ada titik koma. Ini hanya sedikit lebih sederhana. Nah, jika Anda ingin array, ternyata Anda dapat melakukan sesuatu yang sangat mirip dengan C. sintaks ini sedikit berbeda. Tapi inilah sebuah array disebut dolar ditandatangani angka. Dan saya gunakan, PHP, persegi kurung, ternyata. Dan kita akan melihat ini lagi di JavaScript-- belum bahasa lain. Saya hanya menggunakan notasi braket persegi memiliki daftar dipisahkan koma bilangan bulat, dalam hal ini. Tapi itu memberi saya sebuah array. Tetapi bahkan lebih kuat di PHP, kami juga memiliki apa yang umumnya disebut array asosiatif. Dan banyak bahasa memiliki ini juga. Hal tentang array C adalah bahwa indeks untuk sebuah array, hal yang Anda digunakan dalam tanda kurung siku melalui yang Anda mengakses elemen, harus apa? AUDIENCE: [tidak terdengar] SPEAKER 1: Mereka harus nomor atau bilangan bulat, khususnya dari nol ke atas. Nah, di PHP, dan, ternyata keluar, dalam bahasa lain, Anda dapat mulai untuk memiliki indeks yang tidak numerik. Tapi mereka benar-benar kata-kata atau frase, sehingga bukan mencoba untuk mengingat di mana sesuatu adalah, atau disimpan dalam i variabel, Anda benar-benar dapat menggunakan kata dan mengatakan itu-- Anda bisa mengatakan kata seperti ini. Jadi kutipan tanda dolar adalah nama variabel di sini. Ini adalah sintaks agak yang funky itu menghubungkan dua nilai kunci pasang untuk variabel ini. Secara khusus, ini memberi saya array yang panjang 2. Tetapi indeks tidak 0 dan 1. Indeks adalah kutipan tanda kutip simbol dan harga tanda kutip kutipan. Dan nilai-nilai dari indeks tersebut, masing-masing, adalah FB untuk Facebook dan $ 79,53, ketika saya bertahan diperiksa harga untuk ini. Maksudnya itu apa? Nah, itu berarti bahwa bukannya menulis kode seperti ini, di mana saya digunakan untuk melakukan sesuatu seperti dolar sign-- atau lebih tepatnya, di C Aku bahkan tidak akan memiliki tanda dolar. Saya akan melakukan sesuatu seperti kutipan dan kemudian Saya akan melakukan braket saya untuk mendapatkan beberapa sewenang-wenang numerik diindeks nilai. Mulai hari ini di PHP, jika Anda ingin mendapatkan beberapa nilai, kita semacam memiliki lebih ekspresif semantik. Hanya cara mewah mengatakan kita bisa panggil saja hal apa yang mereka. Dan jika Anda ingin mendapatkan di simbol sesuatu, sekarang Anda benar-benar lakukan mengutip simbol tanda kutip dalam kurung persegi bukannya nomor belaka. Jadi itu suatu kenyamanan yang baik. Dan itu semacam itu untuk saat ini. Ada tandan fitur lain dalam PHP. Dan memang, PHP dilengkapi dengan wastafel dapur pepatah. Puluhan, ratusan fungsi datang dengan PHP-- begitu banyak lebih dari datang dengan C. Dan itu tidak dimaksudkan untuk membanjiri melainkan membantu Anda menyadari bahwa kita tidak ada lagi harus menulis kode itu semacam di sini konseptual. Sekarang kita bisa mulai mengambil keuntungan fitur jauh lebih maju bahwa bahasa-bahasa seperti PHP memiliki. Jadi kita tidak perlu khawatir tentang bergerak hal di sekitar dalam memori. Kami tidak perlu khawatir tentang malloc dan semua ini tingkat yang lebih rendah, Rincian kuat bahwa Anda akan menggeluti dengan, jika tidak berjuang dengan, pset5, tetapi Anda dapat mulai segera mengambil untuk diberikan. Bahkan, mari kita menulis super program sederhana di PHP, sebagai berikut. Aku akan pergi kepala ke CS50 IDE di sini, dan apa yang akan saya lakukan adalah membuat file baru, yang sangat sederhana akan disebut halo dot PHP. Jadi, bukannya dot c, itu akan disebut dot PHP. Dan kemudian di file ini, Aku bisa mulai mengetik. Tapi ternyata bahwa satu hal yang saya harus tahu adalah bahwa setiap file PHP pada umumnya, perlu untuk memulai dengan beberapa sintaks khusus. Memiliki semangat yang sama HTML, tapi sekali lagi, PHP adalah bahasa pemrograman, bukan bahasa markup. Jadi setiap file, dan itu semacam bodoh mencari Aku akan mengakui. Terbuka braket, tanda tanya, PHP. Dan itu hanya cara bahasa itu mengatakan, hey, komputer inilah beberapa kode yang ditulis dalam bahasa yang disebut PHP. Dan kemudian di akhir file Anda, Anda melakukan semacam semacam sebaliknya. Anda tidak menulis PHP lagi, Anda hanya melakukan tanda tanya, angle bracket. Dan kemudian apa pun yang Anda masukkan ke dalam dua tag ini, sehingga untuk berbicara, akan, atau seharusnya, kode PHP. Jadi mari kita lakukan sesuatu yang super sederhana. Aku akan pergi ke depan dan melakukan print def, halo dunia, backslash n, menyimpan. Dan sekarang pada prompt saya, saya akan lakukan, membuat hello-- tidak, aku akan lakukan, dot slash halo. Tidak, dot slash, hm. Jadi sesuatu yang berbeda. Dan memang, ini adalah perbedaan utama antara PHP dan bahasa seperti C. C adalah yang disebut bahasa yang dikompilasi. Apa artinya untuk C untuk dikompilasi? Apa implikasinya? Ya. AUDIENCE: Menulis itu ke dalam kode mesin sehingga bisa dijalankan oleh komputer. SPEAKER 1: Tepat. Kita harus pertama mengubahnya menjadi disebut kode mesin, nol dan satu, sebelum benar-benar akan dieksekusi dan dipahami oleh komputer. Oleh Intel dalam. Oleh CPU dalam komputer. PHP, sebaliknya, adalah apa yang disebut bahasa ditafsirkan, yang berarti bahwa Anda tidak compile menjadi nol dan satu, kode mesin, Anda malah meninggalkan sebagai kode sumber. Dan Anda malah lulus sebagai masukan untuk sebuah program, juru bahwa orang lain menulis tahun lalu yang mengerti itu baris demi baris, karakter untuk karakter. Jadi dengan kata lain, manusia di luar sana menulis sebuah program yang akan terlihat pada baris kode Anda dengan line, dan mencari tahu apa komputer harus melakukan, tanpa mengubahnya langsung ke nol dan satu. Jadi jika melihat untuk loop, disebut interpreter ini akan menjadi seperti, baiklah, aku harus melakukan sesuatu lagi dan lagi dan lagi. Apa yang harus saya lakukan? Biarkan aku melihat baris berikutnya. Biarkan aku melihat baris berikutnya. Dan itu benar-benar menafsirkan baris demi baris. Jadi untuk melaksanakannya, saya tidak menggunakan make. Saya tidak menggunakan dot slash dalam kasus ini. Saya bukannya melakukan PHP, yang merupakan nama program, a.k.a. Penerjemah, itu pra-instal di CS50 IDE, dan sekarang saya harus lulus Argumen baris perintah, yang cukup hanya nama mengajukan bahwa saya ingin menafsirkan. Atau lebih santai, yang saya ingin menjalankan. Dan jika saya tekan Enter, ada yang kita miliki. Halo Dunia. Sekarang ternyata bahwa saya cetak def digunakan sengaja untuk menjembatani kita dari C ke PHP. Kebanyakan programmer PHP, seperti yang Anda lihat, bahkan tidak repot-repot menggunakan cetak def. Mereka hanya menggunakan fungsi yang disebut cetak, yang C tidak memiliki. Dan jadi jika saya jalankan kembali sekarang, itu benar-benar berperilaku secara fungsional sama. Saya tidak dapat menggunakan persen s dan persen saya dan sebagainya, tapi ada cara lain PHP melakukan hal itu. Tapi ini hanya untuk mengatakan bahwa sintaksis, selain beberapa hal aneh up atas, dan beberapa karakter aneh turun di bagian bawah, konsep sekarang dari pemrograman dalam bahasa lain ini akan persis sama. Bahkan, mari kita lakukan salah satu contoh lainnya. Jadi aku akan pergi ke depan dan menutup file ini. Biarkan saya membuat satu lagi yang Aku akan menelepon kondisi 1 dot PHP. Jadi tidak ada nol, karena apa yang saya lakukan adalah saya melihat kembali beberapa minggu yang lalu, kami memiliki sebuah file bernama kondisi 1 dot C. Dan apa Saya bertobat di saya kepala, dan di sini di atas kertas, dan segera di lapangan ini website, baris demi baris dalam PHP. Jadi dalam versi C, kita melakukan sesuatu seperti string s mendapat mendapatkan tali. Jadi itu adalah sedikit berbeda untuk melakukan itu di PHP. Sebaliknya, aku hanya akan untuk melakukan, atau lebih tepatnya, saya mungkin telah melakukan int n mendapat mendapatkan int, dalam contoh ini sebelumnya. Jadi, bukannya itu, aku akan melakukan n akan membaca baris, saya ingin integer, silahkan. Jadi ini hanya prompt saya. Dan ternyata, dan Saya hanya akan tahu ini dari membaca atau melihat fungsi sebelumnya, membaca baris fungsi di PHP membawa argumen yang prompt untuk manusia, dan tujuannya dalam hidup adalah untuk membaca baris teks bahwa ia jenis dalam. Dan kemudian menyimpan bahwa teks ke dalam variabel n. Dan sekarang saya mungkin ingin melakukan sesuatu seperti yang kulakukan minggu yang lalu, di minggu seperti salah satu kelas. Jika n lebih besar dari nol, maka, aku akan untuk meminjam bahwa sintaks kita hanya melihat, cetak def, Anda memilih angka positif, backslash n. Lain jika n sama sama dengan nol, aku akan pergi ke depan dan berkata, cetak def, Anda memilih nol backslash n. Lain, terjadi di sini harus tentu saja menjadi, cetak def, Anda memilih angka negatif. Dan kita pasti bisa menerapkan logika hal ini dalam sekelompok berbeda cara, tetapi titik di sini adalah bahwa sintaksis, hampir tidak ada sesuatu yang baru. Ini hanya tanda dolar dan fungsi baru dan membaca baris. Tetapi pada dasarnya, apa yang baru sekarang adalah saya menafsirkan ini. Saya lewat itu sebagai masukan ke program lain. Jadi jika saya ingin menjalankan ini, jika Aku tidak melakukan kesalahan, Aku akan menjalankan PHP, dari kondisi 1 dot PHP, Masukkan, Aku akan mengetikkan nomor 50, dan mari kita asumsikan untuk saat bekerja. Karena logika adalah hal yang sama seperti minggu satu. Baiklah, sehingga cukup underwhelming, kan? Kita bisa melakukan ini di setiap jumlah bahasa. Mari kita lakukan sesuatu dengan cara yang lebih kuat. Mari masalah selesai mengatur lima. Jadi aku akan pergi ke depan dan melakukan hal ini. Aku akan membuat file disebut kamus dot PHP, dan cenderung seperti yang Anda mungkin berebut turun banyak catatan, catatan hanya akan membantu Anda jika Anda diperbolehkan untuk melaksanakan masalah mengatur lima di PHP. Tapi kita akan lihat seberapa cepat sekarang kita dapat mengimplementasikan bahwa masalah set yang sama. Jadi dalam kamus dot PHP, saya akan berasumsi bahwa sudah ada file di dunia yang disebut ejaan. Dan memang, saya melakukan ini di muka, dan kami tidak akan berjalan melalui jalur ini demi baris, tetapi jika Anda penasaran kemudian dan benar-benar ingin untuk membungkus pikiran Anda sekitar perbedaan antara c dan PHP, harfiah membandingkan file ini, ejaan, dari kode sumber hari ini bahwa kita akan posting nanti hari ini, terhadap p set lima ejaan dot c yang kita berikan Anda, dan itu hampir baris yang sama dengan baris. Ada beberapa tanda-tanda dolar lebih. Beberapa fungsi yang beda tipis. Tapi itu cara yang bagus dari semacam melihat bagaimana Anda menerjemahkan satu bahasa ke bahasa lain. Dan itu sejalan hampir identik untuk baris. Tapi aku akan menganggap bahwa ada, dan apa yang akan saya lakukan di sini adalah mencoba untuk meledakkan Anda keberatan oleh reimplementing keseluruhan permasalahan yang lima cara lebih cepat dari Anda sudah melakukan sejauh ini. Jadi misalnya, saya akan pertama mendeklarasikan variabel global yang disebut ukuran, dan set sama dengan nol. Nah, itu tidak banyak tabungan. Odds yang Anda diterapkan ukuran hampir sama, atau petunjuk petunjuk, akan malam ini atau besok, hanya menggunakan variabel global yang disebut ukuran, dan pengaturan sama dengan nol. Itu bukan sangat spoiler menakjubkan. Jadi apa yang data Anda struktur pilihan, Anda yang telah menyelam di dan membaca spec, struktur data apa telah sebagian besar dari Anda telah menggunakan? Sebuah tabel hash atau mencoba, mungkin beberapa varian daripadanya. Jadi menerapkan tabel hash setidaknya, adalah jenis banyak baris kode, benar? Dan tidak semua dari mereka mungkin fungsional pada saat ini dalam seminggu, tapi itu baik-baik saja. Karena dalam PHP, jika saya ingin meja hash, dilakukan. Benar? Sehingga variabel bahwa saya telah hanya menyatakan jelas disebut meja tanda dolar, per pengenalan sebelumnya. Tapi aku benar-benar hanya ingin, di akhir hari, array. Tapi bukan numerik diindeks array, karena itu seperti dua minggu hal, ketika kita berbicara tentang array. Saya ingin tabel hash. Tapi tabel hash benar-benar hanya cara konkret mengatakan, Anda ingin array asosiatif. Anda ingin dapat Kunci asosiasi dengan nilai-nilai. Kunci dengan nilai-nilai. Apa kamus, benar-benar? Baik itu sejumlah besar kunci. Kata-kata seperti apel, pir, dan pisang, dan semua kata-kata bahasa Inggris bahwa kita tangan Anda. Dan nilai-nilai yang Anda secara efektif memasukkan ke kamus Anda yang bisa benar, atau tidak adanya, palsu. Dengan kata lain Anda memasukkan sejumlah besar pasangan nilai kunci, apel, benar, pir, benar, pisang, benar. Sehingga ketika Anda mengambil atau melihat up data dalam tabel hash Anda dengan fungsi cek Anda, Anda baik mendapatkan kembali jawaban, ya, saya menemukannya di kompleks saya hash table, atau tidak, itu tidak ada, sehingga Anda kembali palsu. Jadi untuk melakukan itu, semua saya butuhkan adalah data Struktur seperti saya yang diusulkan sebelumnya. Aku hanya perlu untuk dapat mengasosiasikan kata seperti, kutipan tanda kutip, simbol, dengan nilai seperti, benar. Jadi ada tabel hash saya. Mari kita benar-benar menggunakannya. Jadi ada beberapa fungsi Saya perlu untuk mengimplementasikan. Aku akan pergi ke depan dan menggigit off fungsi yang disebut ukuran. Dibutuhkan tanpa argumen. Saya tidak perlu repot-repot dengan kata, kekosongan, di PHP. Saya hanya akan kembali ukuran. Dan sebagai samping, PHP memiliki rinci ini minorly menjengkelkan, di mana jika ada sesuatu yang global, Anda harus memberitahu fungsi di mana Anda menggunakan itu, hey, ini adalah variabel global. Jadi, kebodohan kecil, tetapi Anda harus melakukannya tetap. Jadi bagaimana dengan beban? Aku akan mengimplementasikan fungsi yang disebut beban yang mengambil nama dari kamus, seperti di masalah ditetapkan lima. Dan sebelum saya melanjutkan, melihat bahwa saya tidak telah mengetik cukup hal yang sama. Apa jelas berbeda dalam PHP tentang bagaimana Anda menyatakan fungsi dibandingkan C? Ya. AUDIENCE: [tidak terdengar] SPEAKER 1: Tidak ada jenis kembali. Dan memang, itulah kasus, PHP sejauh itu longgar diketik, juga sedikit ceroboh dalam arti itu. Anda tidak menentukan sebagai programmer apa mengembalikan fungsi ini. Anda harus benar-benar melihat kode untuk mencari tahu. Atau membaca komentar atau dokumentasi. Jadi plus dan minus dari jenis-jenis keputusan. Tapi aku harus mengatakan kata kunci, fungsi. Dan ketika kita belajar JavaScript dalam beberapa minggu kita akan melihat hal yang sama lagi, tapi itu ide yang sama. Nama fungsi, argumen atau argumen atau kekurangan itu, dan sekarang di sini adalah pelaksanaan. Jadi aku akan memotong beberapa sudut hanya menjadi dramatis untuk sesaat. Tapi aku akan pergi ke depan dan mengatakan ini. Ini adalah bagaimana saya bisa memuat file ke dalam sebuah array. Ada fungsi di PHP yang disebut berkas. Anda menyerahkannya nama file. Itu tangan Anda kembali sebuah array, dalam dari yang setiap baris dari file tersebut. Dari nol, satu, di atas untuk n minus 1 baris. Itu saja, kan? Tidak ada f membaca. Tidak ada f get s. Tidak ada persen s. Tidak ada sakit kepala. Tidak ada feof. Semua barang yang dengan yang Anda sudah bergulat mungkin, dengan p menetapkan empat dan lima, hilang. Jadi saya hanya membaca garis ke file, dan kemudian Anda tahu apa? Jika saya ingin iterate atas kata-kata, Aku bisa melakukan, untuk setiap baris sebagai baris. Ingat bahwa ini adalah semacam pintar cara iterasi array, indeks dengan indeks, dan pada setiap panggilan iterasi baris saat ini, dolar garis tanda. Dan di sini aku akan pergi dan mengatakan meja, bracket, garis, mendapat benar. Dengan kata lain, ini adalah bagaimana saya masukkan ke dalam tabel hash saya di PHP. Saya mengatakan dolar meja tanda, yang adalah array asosiatif saya itu kosong per baris kode di atas. Saya kemudian indeks ke dalamnya tidak, menggunakan angka, tapi secara harfiah menggunakan kata kunci yang saya sayangi. Mungkin apel atau pir atau pisang atau apa pun, namun secara khusus saya mengindeks ke dalamnya seperti saya mengusulkan sebelumnya. Saya mengambil nama saya array asosiatif, dan kemudian saya menggunakan kutipan tanda kutip di kurung persegi dengan string, bukan jumlah yang sebenarnya. Dan itu saja. Fungsi beban dilakukan. Setelah itu lingkaran iterates, aku telah menempatkan segala sesuatu ke dalam tabel hash. Sekarang disclaimer kecil, ada beberapa hal yang saya harus memperbaiki. Dan versi saya akan posting secara online akan memiliki semua nuansa, tapi itu sebagian besar hanya akan menjadi beberapa pengecekan error dan beberapa tweak kecil. Tapi itu memang inti dari itu. Jika saya sekarang ingin menerapkan fungsi disebut periksa, yang mengharapkan kata sebagai argumen, bagaimana mungkin aku pergi untuk melakukan itu? Yah, aku hanya akan mengatakan, jika dalam meja saya, di kata lokasi, jika diatur. Jadi jika ada is-- sebenarnya, Anda tahu apa? Aku akan melakukannya di sedikit pseudocode. Tetapi gagasan adalah sama. Jika itu sama benar, kembali benar. Baiklah. Else-- Anda dapat jenis melihat keberadaan ini going-- untuk kembali palsu. Dilakukan. Periksa dilakukan. Cukup bagus, kan? Dan apa ini benar-benar mendapatkan di? Dan ini juga, saya memotong beberapa sudut. Lihatlah versi online untuk semua nuansa sedikit. Tapi itu inti dari itu. Indeks ke Anda array asosiatif, a.k.a. Tabel hash, melihat apakah ada nilai ada, jika itu diatur ke benar, dan jika demikian, kembali benar. Jadi kami telah dipangkas semua kompleksitas. Jadi jenis pikiran bertiup, kan? Aku tidak akan repot-repot menyelesaikan dengan membongkar, karena di fact-- oh, kau tahu apa? Ya, mari kita menyelesaikannya dengan membongkar. Membongkar dalam tabel hash mungkin terlihat seperti fungsi membongkar, kembali. OK jadi itu membongkar. Karena tidak ada untuk membongkar, kan? Tidak ada malloc. Saya tidak secara eksplisit meminta sistem operasi untuk apa pun. Aku baru saja mulai menggunakan variabel. Dan ini juga merupakan manifestasi dari fitur bahasa tingkat tinggi. Jadi sekali lagi, sebagian besar istilah ini kita sudah berhadapan di sini dengan C. tingkat super rendah. Anda dapat melihat memori komputer. Anda dapat menyentuh apa pun Anda inginkan dalam RAM komputer Anda, untuk lebih baik atau buruk. Sampai di sini, kita akan untuk menyerahkan kekuasaan itu. Tetapi Tuhan, lihatlah bagaimana apalagi kode yang saya tulis. Bahkan jika saya tidak berbicara dan berbicara lebih mengetik saya, kita akan telah dilakukan dengan contoh ini lima menit yang lalu. Jadi apa harga yang dibayar? Nah mari kita lihat. Mari lihat. Aku akan pergi ke depan dan menjalankan CS50. Ijinkan saya pergi ke contoh hari ini di mana Saya memiliki direktori teks seperti sebelumnya. Aku akan menjalankan solusi yang ia datang dengan masalah mengatur lima disebut ejaan, yang di akun CS50 ini. Dan aku akan menjalankannya pada sesuatu besar seperti King James Bible, hanya agar kita benar-benar menempatkan solusi staf untuk tes. Sekarang kadang-kadang internet adalah sedikit lebih lambat, sedikit lebih cepat, mungkin memerlukan waktu untuk menggulir. Tapi butuh total 0,56 detik untuk memeriksa ejaan King James Alkitab menggunakan solusi staf. Jadi cukup bagus. Anda mungkin menjadi lebih lambat, dan itu benar-benar baik-baik saja. Tapi itu benar di sini. Jadi itulah solusi staf. Jika saya masuk dan membersihkan versi PHP. Dan aku akan melakukan sedikit seperti kue acara itu. Kita akan mengambil kode yang saya tulis sebelumnya, jadi sempurna benar. Karena kode yang saya tulis tidak akan menjadi sempurna benar sekarang. Tetapi jika saya menjalankan versi PHP, apa yang harus saya menyerah hari ini? Membawa saya lima menit untuk menerapkan p menetapkan lima, saya klaim. Berapa harga yang saya bayar? Ya. AUDIENCE: Kecepatan. SPEAKER 1: Kecepatan. Apa maksudmu? AUDIENCE: Ini akan memakan waktu lebih lama. SPEAKER 1: Baiklah. Mari kita lihat. Ini akan memakan waktu lebih lama, tidak menulis, tapi untuk menjalankannya. Ya. Jadi mari kita coba ini. Jadi di sini aku akan pergi ke depan dan melakukan PHP dari ejaan, dan karena file disebut ejaan. Jadi saya tidak menjalankan kamus, ingat, Aku sedang menjalankan program yang disebut ejaan. Aku akan lulus dalam yang sama File, King James kelima. Ini terbang oleh. Ini bisa saja menjadi kecepatan internet, jadi jangan membaca terlalu banyak ke dalam. Tapi itu tidak merasa lagi untuk yakin. 1,26 detik. Sekarang itu masih cukup sialan cepat, tepat? Dan satu-satunya alasan yang merasa seperti lebih seperti tiga, atau empat, atau lima detik, itu hanya karena internet sedang lambat. Waktu komputer menghabiskan adalah 1,26 detik, dibandingkan saya pikir 0,56. Jadi lebih dari dua kali lebih lambat. Sekarang itu masih pretty darn cepat, tapi itu manifestasi dari, memang, bahwa harga yang tepat. Karena kita menafsirkan dalam baris demi baris kode, dan bahwa program PHP membaca saya kode atas ke bawah, kiri ke kanan, itu harus berbuat lebih banyak berpikir. Hal ini untuk jenis mengkonversi itu dalam dirinya sendiri ke mesin yang sesuai kode dengan cepat, sehingga untuk berbicara, meskipun mekanik sedikit berbeda. Bukan hanya makan ke Intel CPU nol baku dan yang bahwa ia mengerti native. Jadi benar-benar, tangan ke bawah, kami telah membayar harga. Dan kode yang ditulis dalam bahasa seperti PHP cenderung lebih lambat. Tetapi Tuhan. Jadi sekarang ketika saya periksa ejaan saya File, aku menghabiskan tambahan 0,7 atau lebih detik vs 20 jam untuk melaksanakan lebih cepat spell checker, kan? Ini semacam trade off. Dan jika Anda baru mulai p set lima, mungkin tidak 20 jam. Mungkin jauh lebih sedikit dari itu. Tapi itu trade off, untuk nyata. Dan jika Anda menjalankan kode pada benar-benar besar set data, atau pada hardware bahkan lebih tua, orang-orang macam perbedaan tentu dapat menambahkan sampai. Pertanyaan sejauh ini? Ya. AUDIENCE: [tidak terdengar] SPEAKER 1: Maaf, dapat Anda katakan sekali lagi? AUDIENCE: [tidak terdengar] SPEAKER 1: Kau menyerah waktu. Nah, jadi ya. Anda menghemat waktu oleh tidak harus compile, jika itu yang Anda minta. Dan memang, di CS50, sebagian besar program, meskipun mereka mungkin memerlukan waktu menulis, mereka relatif singkat. Beberapa lusin, beberapa ratus baris kode, dan sehingga mereka kompilasi cukup cepat. Tapi ketika Anda mulai menulis program yang lebih besar, seperti jika Anda Microsoft atau Anda Google dan menulis program benar-benar besar di C, atau C ++, atau sama dikompilasi bahasa, bisa mengambil banyak detik, atau bahkan menit atau lebih lama untuk mengkompilasi jutaan baris kode. Dan di sana juga, yang Perbedaan akan bertambah. Dan pada kenyataannya, setelah kami transisi saat ini, hari yang sama hari ini, untuk pemrograman web menggunakan PHP, Anda akan merasa begitu banyak lebih menyenangkan untuk menulis kode ketika Anda tidak perlu melakukan ini bodoh langkah seperti perubahan ke terminal Anda jendela, jenis make halo, re menjalankannya, reload jendela. Begitu banyak bodoh langkah mekanis yang hanya mendapatkan di jalan melakukan menarik, menyenangkan pekerjaan. Dan memang kita membuang itu pergi dengan PHP. Dan kita dapat berinteraksi dengan lebih cepat. Ya. AUDIENCE: [tidak terdengar] SPEAKER 1: Tentu. Dapatkah saya menjelaskan apa itu berarti harus ditafsirkan? Ketika Anda mengkompilasi bahasa seperti C, itu turun seperti yang kita katakan untuk mesin kode, nol dan satu. Dan Intel memutuskan tahun lalu yang pola-pola tertentu dari nol dan satu mewakili Selain itu, atau pengurangan, atau cetak, atau operasi dasar lainnya. Dalam dunia bahasa ditafsirkan seperti PHP, atau JavaScript, atau Python, atau Ruby, atau tandan lain, bukannya seseorang telah menulis sebuah interpreter-- dalam kasus ini, itu juga disebut PHP, identik dengan nama dari language-- bahwa pada dasarnya memiliki lingkaran besar di dalamnya yang iterates atas semua baris kode yang saya makan itu sebagai masukan, seperti halo dot PHP, atau kamus dot PHP. Dan kemudian Anda bisa memikirkan besar mereka lingkaran sebagai memiliki banyak kondisi. Dan kondisi tersebut mengatakan, jika manusia telah menulis kata kunci untuk, mulai melakukan nya kode lagi dan lagi. Atau jika manusia memiliki menulis baris kode, jika, hanya menjalankan mereka baris berikutnya kondisional. Jadi itu benar-benar seperti menafsirkan dalam arti manusia, baris oleh garis, dan bahwa hanya membutuhkan waktu. Dibutuhkan overhead. Dan jadi itu price-- baik question-- kita bayar. Jadi mari kita lakukan demo lain itu sedikit lebih dramatis. Ada, saya akan mengatakan, kasarnya ini pada probabilitas 90% gagal mengerikan, tetapi Anda akan kagum dengan probabilitas 10%. Jadi setiap tahun kita mencoba untuk melakukan hal ini, dimana kami mencoba untuk menulis sebuah program yang berjalan melalui masalah set nol, yang Anda sudah disampaikan nomor telepon Anda dan banyak informasi demografis lainnya, dan kami pemrograman mengirimkan pesan teks. Dan kemudian telepon semua orang mulai berbunyi atau bergetar, dan itu hanya menakjubkan, karena baik, melihat apa yang dapat dilakukan komputer. Ini jarang bekerja dengan benar tampaknya, sebagian besar karena saya biasanya mendapatkan daftar hitam oleh Gmail atau beberapa layanan lainnya untuk benar-benar mencoba untuk melakukan hal ini pada skala. Tapi lucunya juga, karena kita tidak memiliki semua orang di sini hari ini, Bahkan menyenangkan saat kita terakhir mencoba ini dua tahun yang lalu, Saya pikir saya menulis sebuah program yang duduk dalam satu lingkaran iterasi atas semua siswa di kelas, dan masing-masing dari mereka pesan teks, dan itu mengatakan sesuatu seperti, mengapa tidak Anda di kuliah? Cinta, CS50 bot. Anda tidak tahu berapa banyak minta maaf dan email semacam menyakitkan Saya telah menerima respon dari n dikurangi 100 orang yang tidak ada di sini hari itu. Dan bahkan lucu, story-- lebih memalukan Anda tahu, mari kita meletakkannya di luar sana. Ini sudah di video beberapa tahun yang lalu. Jadi, Anda akan segera melihat saya menulis untuk loop, dimana itu sangat mudah untuk menulis bug dalam untuk loop, sehingga pertama kalinya melalui loop, Anda mengirim satu pesan teks. Kedua kalinya melalui loop saya harus telah mengirim satu pesan teks lebih, dan kemudian satu teks lebih pesan, dan satu lagi. Tapi ternyata jika Anda membuat kesalahan ketik ketika pemrograman, kadang-kadang Anda dapat menulis program yang mengirim satu pesan teks, kemudian dua pesan teks, kemudian tiga pesan teks ke semua orang yang sudah menerima pesan teks. Dan seperti yang Anda tahu, melakukan sesuatu, ditambah sesuatu, ditambah sesuatu, ditambah sesuatu, adalah O besar banyak pesan teks, atau n kuadrat, atau $ 0,10 pesan teks, $ 20.000. Untungnya aku memukul Control-C sebelum itu terjadi, tapi aku berutang setidaknya satu pendahulu Anda $ 20 untuk 200 beberapa pesan teks yang aneh itu, tidak hanya pergi ke telepon, tapi itu juga seperti ponsel flip yang lebih tua jadi seperti didorong keluar dari nya memori setiap teks pribadi lainnya Pesan ia benar-benar mendapatkan. Jadi kita memiliki satu tujuan hari ini, tidak untuk melakukan itu. Mungkin mengaktifkan mode pesawat. Baiklah. Jadi mari kita pergi ke Program sini callled-- bahwa saya akan memanggil teks dot PHP. Dan di muka, saya punya dua file di sini. Saya membuat sebuah file untuk hanya staf, yang punya semua info staf, semua nama dari situs web saja itu. Dan kemudian untuk sekarang saya hanya menempatkan beberapa nomor palsu 555-1212. Jadi ini tidak akan benar-benar pergi ke mana pun. Tapi perhatikan bagian dalam file CSV ini, yang kita bicarakan sebentar sebelum dalam konteks file IO. Apa file CSV? Dipisahkan dengan koma variabel. Dan ini adalah jenis seperti sangat Database ringan, jika Anda mau. Ada semacam semacam empat kolom dalam file ini, dan ada bergerigi, tapi koma dasarnya mewakili kolom dalam file. Kolom pertama adalah TF atau nama CA. Kolom kedua adalah nama terakhir mereka. Kolom ketiga adalah nomor telepon mereka. Dan kolom keempat rupanya is-- kolom keempat tampaknya apa? OK, jadi operator mereka. Jadi Verizon, Sprint atau, atau apa yang tidak. Dan jika saya salah bicara sebelumnya, CSV. Dipisahkan koma nilai adalah CSV sini. Jadi apa yang bisa saya lakukan dengan ini? Nah ini hanyalah sebuah file teks besar, dan itu jenis lama, kan? Seperti ini akan menjadi semacam menjengkelkan. Dan ternyata, meskipun, bahwa jika saya ingin mengirim pesan teks ke, mari kita mengatakan Alex sini. Biarkan aku masuk ke browser saya dan keluar dari mode layar penuh hanya jadi saya bisa beralih kembali dan sebagainya. Ternyata, mari kita lihat, jika saya pergi di di sini, dan login ke Gmail, baiklah. Jangan melihat bagian ini. Hanya saya bisa melihat. tentu saja livestream bisa masih melihat apa yang saya lakukan. Baiklah. Jadi di sini hanya dengan Gmail Akun John Harvard. Jadi jika saya ingin mengirim pesan teks ke Alex, Aku tentu saja dapat menulis pesan. Dan ternyata, dan saya sudah diuji dengan Alex sebelum di sini, sehingga Anda dapat menambahkan sebuah domain tertentu nama ke nomor telepon orang, karena ada ada di dunia hal yang disebut SMS ke email gateway. Yang merupakan cara mewah mengatakan semua kita yang memiliki ponsel yang memiliki nomor telepon, tentu saja, mungkin ada untuk operator Anda, akhiran tertentu seperti di Vtext.com untuk pesan teks Verizon dot com, yang dapat Anda tambahkan ke Anda sendiri nomor telepon pribadi, dan kemudian Anda atau teman, atau orang tua Anda bisa teks Anda pada alamat tertentu. Dan Verizon memiliki server, email Server, yang setelah menerima email ini, terlihat di bagian numerik dan kemudian menggunakan apa pun yang khusus sihir industri mereka harus benar-benar mengirimkannya lebih gelombang udara ke sel tertentu telepon. Sekarang ini bagus karena saya tidak melakukan benar-benar tahu bagaimana untuk mengirim pesan teks atau untuk menulis kode belum untuk ponsel saya, dan Anda mungkin melakukan hal itu untuk proyek akhir, tapi untuk saat ini semua Yang saya miliki adalah laptop saya di sini. Jadi saya ingin iterate atas CSV yang File, baris, demi baris, demi baris, demi baris, ambil masing-masing nomor telepon staf, dan operator dan programatik mereka, menggabungkan, yaitu, menghubungkan ponsel nomor dengan nama domain yang tepat dan kemudian mengirim email. Jadi itulah banyak langkah-langkah. Dan keberuntungan melakukan itu di C. Ini adalah mimpi buruk dari sebuah situasi untuk membuka file, untuk membacanya line, demi baris, demi baris, seperti yang Anda melihat, atau mungkin segera melihat dengan masalah mengatur lima, jika tidak Masalah menetapkan empat, dan kemudian untuk menggabungkan dinamis dua string bersama-sama, karena dalam C, untuk mengambil dua string dan menggabungkan mereka, apa yang Anda minimal perlu melakukan paling mungkin? Anda perlu menyatakan lebih banyak memori, kan? Dan bertanya, malloc, dapat saya memiliki lebih banyak memori? Jadi saya bisa menempatkan setengah dari ini di sini, setengah dari ini di sini. Itu hanya begitu banyak langkah. Dan pada saat itu Anda telah kehilangan minat demo sedikit bodoh di mana Anda membuat bip telepon semua orang. Mari kita melakukan hal semacam ini PHP gaya, dimana kita hanya mulai menggunakan lebih dari itu wastafel dapur. Dan ide-ide yang dasarnya sama, tapi kita tidak perlu khawatir terlalu banyak tentang tingkat yang lebih rendah. Jadi mari kita lihat bagaimana saya mungkin pergi untuk melakukan ini. Dan hanya agar aku tidak melakukan mengulangi kesalahan masa lalu, Saya telah menulis beberapa catatan untuk diriku sendiri di sini. Dan mari kita lihat apakah saya bisa berjalan kami melalui beberapa langkah-langkah mendasar, dan kemudian demi waktu ini kita akan mungkin memotong beberapa sudut pada akhirnya. Aku akan pergi ke depan dan melakukan terbuka braket PHP untuk memulai file ini. Dan aku akan pergi ke depan dan melakukan hal ini. Berkas menangani, seperti Anda akan segera melihat, sebenarnya panggilan fungsi yang disebut f terbuka. Dan ingat ini membuka sebuah file. Dan kutipan, tanda kutip, r berarti apa, lagi? Hanya membukanya untuk membaca. Sekarang di p ditetapkan untuk, Anda melakukan ini. Dan menangani bisa apa saja, fu, bar, bas, setiap nama variabel. Tetapi umumnya komputer ilmuwan akan memanggil file yang terbuka, memberikan Anda menangani file, sesuatu untuk berpegang sehingga untuk berbicara. Aku hanya akan melakukan beberapa pengecekan error. Jadi jika pegangan adalah palsu, sama seperti di C, aku akan melakukan sesuatu seperti, tidak bisa membuka file, backslash n. Dan kemudian aku hanya akan untuk terus maju dan keluar. Dan ternyata, di PHP, Saya tidak dalam fungsi. Tidak ada fungsi utama di sini. Jadi saya tidak kembali, per se. Aku keluar. Yang pada dasarnya hal yang sama. Dan aku keluar dengan satu y mungkin. Satu hanya berarti kesalahan dari beberapa macam. Ini bukan nol, sehingga kesalahan. Baiklah, jadi jika aku di sini sekarang dalam program saya, saya telah membuka file. Aku akan pergi ke depan dan menyatakan array disebut alamat, dan di C saya harus tahu ukuran array di muka, kan? Atau saya perlu menyatakan ini adalah pointer, dan kemudian menggunakan malloc. Dan kemudian setiap kali saya membaca melalui baris lain dalam file, Aku akan perlu malloc lebih banyak memori, malloc lebih banyak memori. Itu rasa sakit di leher. Dan untungnya, PHP, dan Ruby, dan Python, dan JavaScript, mereka akan tumbuh array Anda untuk Anda secara otomatis. Tidak ada lagi malloc. Manajemen memori tidak lebih. Komputer menangani itu. Tapi harga yang Anda bayar. Ini sedikit lebih lambat. Dan untuk program seperti ini kita tidak akan melihat. Kami akan mengirim 100 pesan teks. Misalnya tidak akan merasakannya. IT benar-benar hanya mulai masalah bahasa pilihan Anda ketika data atau program Anda mendapatkan benar-benar, benar-benar cukup besar, seperti yang akan terjadi lebih dengan barang-barang berbasis web kami. Tapi untuk sekarang mari kita terus maju. Sementara itu ternyata ada fungsi dalam C disebut f mendapatkan CSV. File mendapatkan CSV, yang membutuhkan mengajukan pegangan sebagai argumen, dan hasil itu, berturut-turut, dengan baris, demi baris, untuk membaca berturut-turut. Sehingga hanya membaca baris teks dari file. Tapi apa yang baik tentang fungsi ini, itu tidak hanya tangan saya baris teks. Kelihatannya bagi mereka koma, dan mem-parsing baris. Dan mengurai garis berarti untuk membagi pada nilai-nilai tertentu dalam konteks ini. Dengan kata lain, tanda dolar baris adalah variabel yang akan memberi saya sekelompok indeks. Ini akan menjadi kolom pertama di CSV saya. Ini akan menjadi yang kedua kolom, ini akan menjadi ketiga, dan ini akan menjadi keempat. Karena ingat, dan Excel tidak bekerja sama terakhir kali kami melakukan ini, tetapi jika saya mendownload staf dot CSV. Whoops, tidak mengubah nama. Jika saya mendownload staf dot CSV, dan mencoba membukanya, Aku sudah registered-- oh saya tidak memperbarui Excel sejak terakhir kali. Anda akan melihat bahwa di staf dot CSV, saya memiliki empat kolom. Jadi ketika saya membaca di baris pertama untuk Abby sini, Dolar tanda baris 0 adalah Abby, Dolar tanda baris satu Lyons, Dolar tanda baris kedua adalah nomor teleponnya, dan kemudian operator telepon nya. Jadi itu semua. Dan itu bagus, karena saya tidak perlu sekarang mencari tahu di mana semua orang koma sebenarnya. Jadi aku akan pergi ke depan dan melakukan hal ini, mengingat definisi itu, Aku akan mengatakan bahwa namanya adalah berturut-turut braket nol, seperti yang dijanjikan. Dan aku akan grab-- dan sebenarnya, Anda tahu apa? Aku tidak akan khawatir tentang namanya, dalam hal ini. Aku akan tetap sederhana. Aku akan melakukan nomor nya berturut-turut braket dua, saya pikir. Dan operator nya di mana? Baris tiga, satu di atas. Jadi tidak ada yang baru di sana. Ini hanya nol pengindeksan ke dalam array. Dan sekarang, aku akan melakukan hal berikut. Jika carrier sama sama AT & T-- Aku hanya akan memiliki sebuah loop-- Saya ingin membuat email alamat yang terlihat seperti ini. Ini akan menjadi 617-555-1212 di, apa itu, text.ATT.net, adalah apa yang ingin saya lakukan. Jadi bagaimana saya melakukan ini? Aku akan melakukan hal berikut. Alamatnya akan menjadi nomor teleponnya, dan sekarang, biarkan aku pergi ke depan dan melakukan hal ini. Ini adalah beberapa sintaks funky. Aku bisa melakukan trik persen s, tapi aku benar-benar dapat hanya melakukan ini. Jadi ini adalah hal PHP, tapi mari kita mempertimbangkan apa yang saya lakukan. Dolar menandatangani alamat pada kiri, hanya variabel. Beri aku variabel. Saya tidak harus menentukan jenis. PHP akan mencari tahu. Di sisi kanan, apa tipe data itu semuanya pada sisi kanan? Sepertinya string, karena ada dua mengutip di paling kiri dan paling kanan. Sekarang ada beberapa sintaks baru yang funky di sini. Ada kurung kurawal, dan jumlah tanda dolar. Tapi mengambil menebak apa sintaks yang mungkin mengatakan PHP lakukan untuk saya? Ya. Hanya memasukkan nilai di sana. Jadi tidak ada persen s. Kita bisa menggunakan print f, atau s cetak f atau sesuatu seperti itu, tapi PHP dan banyak bahasa tingkat tinggi, Anda akan melihat bahwa Anda bisa melakukan hal yang sama fungsional, mungkin enam cara yang berbeda. Dan sehingga mulai menjadi soal desain atau gaya. Jadi ini hanya mencari cara samar mengatakan, memberi saya alamat email, tapi plug-in jumlah di antara kurung kurawal. Dan kurung kurawal tidak akan berakhir di alamat akhir. Sekarang kita bisa melewatkan beberapa garis-garis ini demi masa itu. Jadi jika pembawa sama sama verHorizon-- whoops, Verizon-- Saya ingin melakukan sesuatu sangat mirip, di mana alamat mendapat, kutipan, tanda kutip, jumlah di text.ATT.net. Dan kemudian saya bisa melakukan yang sama hal untuk sisa operator. Tapi aku hanya akan melakukan dot, dot, dot untuk saat ini. Dan sekarang mari kita mengira bahwa Saya ingin menambahkan array, mendorong. Saya ingin menambah array, yang disebut alamat. Alamat ini, ini adalah bagaimana Anda menambahkan sesuatu ke array di PHP. Anda tidak perlu melakukan malloc. Anda tidak harus mengubah ukuran array. Anda hanya mengatakan array, push. Apa yang Anda ingin push-- apa array yang Anda ingin mendorong sesuatu ke? Alamat. Apa yang Anda ingin mendorong ke alamat? Alamat. Dan pada kenyataannya, jika Anda benar-benar ingin menjadi pintar, gula sintaksis untuk ini, sehingga untuk berbicara, yang hanya berarti bagaimana Anda dapat melakukan ini di cara cantik, akan melakukan hal ini. Itu juga memiliki efek tumbuh alamat array dengan ukuran satu, dan kemudian celepuk yang tambahan alamat email ke dalamnya. Ya. AUDIENCE: [tidak terdengar] SPEAKER 1: Sebuah kesalahan ketik pada lain if-- oh, pembawa. Tidak apa-apa. Hal ini juga tidak akan seperti kegagalan saya untuk mengimplementasikan bagian dari program ini nanti. Tapi terima kasih untuk menangkap. Satu bug lagi. Terima kasih. Kami ingin ini menjadi Vtext.com. Iya nih. Baiklah. Jadi bagaimana ini meninggalkan kita? Kami sudah menulis kode untuk membuka file. Kami memiliki loop untuk iterate atas baris dalam file. Kami memiliki kode yang menambah saya array, satu per satu, dengan benar alamat email diformat. Jadi semua yang benar-benar tersisa adalah untuk mengirim email ke masing-masing orang. Jadi saya telah pergi ke depan dan mempersiapkan diri saya sebagai berikut. Apa yang akan saya lakukan di sini is-- dan mari pergi ke depan dan melompat ke beberapa kode yang sebenarnya, yang terlihat seperti ini. Jadi di sini adalah pra-panggang Versi saya tulis sebelumnya. Dan melihat saya selesai menerapkan Sprint. Aku selesai melaksanakan T-Mobile. Aku selesai melaksanakan Virgin Mobile. Dan aku akan mohon maaf sebelumnya. Ada beberapa operator yang beberapa siswa di kelas memiliki bahwa saya tidak repot-repot pencacahan dalam jika kondisi di sini. Jadi tidak semua teks akan keluar. Tapi mari kita lihat apa lagi yang harus saya lakukan. Aku menutup file, hanya seperti di p menetapkan empat. Dan ini adalah sintaks baru. Dan kita akan melihat sedikit sedikit ini dari waktu ke waktu, terutama dengan p menetapkan tujuh dan delapan. Tapi ini sintaks untuk membuat khusus jenis struktur. Ternyata ada perpustakaan yang dilengkapi dengan PHP, disebut PHP mailer. Tujuannya dalam hidup adalah pemrograman mengirim email. Ini kode orang lain menulis bahwa membuat lebih mudah bagi kita untuk mengirim email, sehingga kita tidak harus terus akan bolak-balik ke Gmail, dan paste di alamat email orang. Ada sejumlah besar baris disini yang jujur, aku hanya jenis disalin dan disisipkan dari dokumentasi. Dan pada kenyataannya, jika Anda penasaran, aku meninggalkan semua URL dari dokumentasi dalam kode yang kami akan posting nanti. Dan perhatikan bahwa di antara hal-hal yang saya lakukan adalah, saya mengatakan perpustakaan ini, menggunakan server Gmail, kan? SMTP kami berbicara secara singkat tentang ketika kita berada di Yale tentang menjadi mail sederhana protokol transfer. Ini protokol yang server yang digunakan untuk mengirim email, dan that's-- Gmail memiliki salah satu dari mereka. Port A, ini adalah nomor port TCP. Tidak apa-apa jika Anda belum melihat 587 sebelumnya. Hanya tahu bahwa dari dokumentasi. Berikut username saya. Aku akan menggunakan bot CF50. Dan sebentar, aku hanya akan mengetikkan password yang sebenarnya bot. Dan kemudian di sini, perhatikan apa yang tersisa. Aku mengatur saya dari alamat untuk bot di CS50.net. Saya pikir saya tidak akan menyesal mengirim pesan teks ke 800 orang yang mengatakan, merindukanmu, cinta CS50 bot, mungkin bagi mereka yang tidak bisa datang hari ini. Dan kemudian sejalan 76, apa yang harus saya lakukan? Semacam ini terlihat seperti C. Jadi untuk saya sama dengan 0, n equals-- sekarang menghitung baru. Ternyata bahwa jika Anda ingin mendapatkan jumlah hal dalam array, Anda tidak perlu mengingatnya lagi. Anda hanya dapat meminta fungsi yang disebut count, dan akan memberitahu Anda berapa banyak alamat berada di array. Dan kemudian aku akan menambahkan alamat email tersebut. Dan aku tahu ini dari menggunakan dokumentasi. Ada fungsi alamat add. Dan sekarang melihat ada adalah salah satu bagian dari sintaks. Kami telah melihat ini sebelumnya di C. serupa dalam roh. Anda bisa memikirkan tanda dolar surat sebagai variabel, yang itu. Tapi itu struct dalam yang tidak hanya properti, variabel jika Anda mau. Tapi ternyata di PHP, yang adalah pemrograman berorientasi objek bahasa, seperti Jawa jika Anda mengambil APCS. Dolar tanda mail, jika Anda ingin to-- juga memiliki fungsi di dalamnya, atau metode. Jadi ini adalah untuk mengatakan bahwa PHP mailer khusus perpustakaan, jika saya punya variabel daripadanya, jika saya ingin memanggil fungsi yang dilengkapi dengan perpustakaan itu, untuk tujuan hari ini, hanya tahu Anda menggunakan notasi panah. Tidak ada notasi titik. Hanya saja panah. Tapi itu bukan pointer. Itu hanya dipinjam dari sintaks C. Begitu panggilan tambahkan alamat dalam objek ini perpustakaan atau variabel. Baiklah. Ini adalah garis magis. Begitulah cara saya mengirim email. Itu adalah setara dengan membuka Gmail, mengetik itu, dan memukul kirim. Tapi itu akan sebaliknya mengirim email ke alamat ini, dengan tubuh ini, dari bot CS50. Dan sekarang baris kunci. Baris ini absen di 2011 seperti ketika saya pikir saya terakhir mencoba ini. Garis yang ada, tentu saja, membersihkan alamat. Jadi secara logika, jika saya tidak jelas alamat setelah setiap iterasi, yang pertama email atau pesan teks masuk ke Alice, kedua pergi ke Alice dan Bob, yang ketiga pergi ke Alice dan Bob dan Charlie, maka kesalahan yang sangat mahal Saya membuat tahun itu. Jadi mari kita lihat. Apakah ada pertanyaan sebelum kami mengirimkan semua teks pesan dengan probabilitas 10 persen? Ada pertanyaan? Baiklah. Mari aku pergi di sini dan perubahan password untuk apa yang harus bekerja, kemungkinan akan mendapatkan daftar hitam oleh Gmail. Sehingga mereka mungkin tidak semua pergi keluar, karena mereka mungkin tidak suka kita mengirim 800 email dalam untuk loop sekaligus. Sejak itu tidak perilaku terutama manusia. Oh, aku akan mengubah satu hal lainnya. Sampai di atas, aku akan sent-- mengubah file ke siswa dot CSV. Dan aku tidak akan membuka ini, tapi ini adalah file CSV identik dengan tidak 100 staf, tapi 800 siswa, hanya dari Harvard, Yale karena memiliki istirahat Oktober minggu ini. Dan sepertinya semacam hal brengsek yang harus dilakukan untuk teks semua dari mereka mengapa mereka tidak di kelas pada hari libur. Tidak apa-apa. Hanya siswa Harvard hari ini dalam file itu. Dan sekarang mari kita kembali ke jendela terminal saya. Aku agak gugup. OK jadi sekarang aku akan pergi ke direktori, dan teks PHP dot PHP. Bagaimana sekitar satu relawan berani? Jadi saya tidak ingin ini pada saya. OK, datang ke atas. Siapa namamu? MAYA: Maya. SPEAKER 1: Maya. Ayo up, Maya. Baiklah. Mari kita lihat apakah ini bekerja. Aku memasukkan alamat email saya sendiri di file-- nomor telepon saya sendiri dalam file, sehingga mudah-mudahan saya akan mendapatkan satu juga. Senang berjumpa dengan mu. MAYA: Demikian juga. SPEAKER 1: Jadi yang harus Anda lakukan adalah tekan Enter untuk mengirim 800 pesan teks, jika saya tidak mengacaukan. Bagus. Bisa memakan waktu cukup lama, statistik, sampai kita mendapatkan email address-- pesan teks yang di kamar sekarang. Mari kita berlama-lama dan melihat. AUDIENCE: [bersiul] SPEAKER 1: Oh, ya. AUDIENCE: Oh, Gotcha. SPEAKER 1: Untuk loop are-- ini tidak lambat karena PHP. Hal ini lambat karena Gmail throttling kita dan tidak membiarkan kita mengirim lebih dari seperti email per detik. Sesuatu? Ini adalah hal yang sulit bagi saya untuk menguji di rumah dengan hanya saya dan telepon saya satu, jadi. Apakah yang diharapkan dari bot? Iya nih? Tidak? Bilang iya. Tidak? Ini dari teman? Canggung. OKE. Cukup yakin itu bekerja sekalipun. Uh oh. Mereka black-- oh, tunggu sebentar. Oh, kau tahu apa? Tolong tunggu sebentar. Hanya Maya dan aku-- Mia, apakah itu? MAYA: Maya. SPEAKER 1: Maya, akan tahu apa yang saya lakukan salah di sini. Oh, tunggu sebentar. Saya pikir saya hanya mengirim 100 pesan teks ke 555-1212. Bersiaga. Saya tidak bisa menang setiap tahun. OKE. Maya? Memperbaikinya di pos produksi. Sialan! Berikut dari alamat. OK, berdiri. Maaf. Itu menyakitkan setiap tahun. OK, satu saat. Ini bagus. Saya bukannya akan melakukan hal ini. Alamat cetak. OK, berdiri. Alamat cetak, braket i. Ya, aku seperti itu. Dollar sign-- OK saya akan menjelaskan apa yang saya melakukan suatu saat, setelah aku menjalankan ini. Setiap tahun. OK, di sini kita pergi. Saya memiliki hanya-- dan saya tidak ingin untuk menampilkan nomor telepon semua orang, tapi Maya dapat mengkonfirmasi dengan anggukan kepala, bahwa ia melihat semua orang nomor telepon di kelas bahwa aku akan menyalin ke sebuah program yang disebut Gmail. Dan jika di Gmail, apa yang ingin kita katakan? Kangen kamu. Love-- itu bukan dari saya. Aku bahkan tidak memukul kirim belum. Jadi mari kita pergi ke depan dan melakukan ini, jika saya dapat memperbesar. OKE. Jadi saya menggunakan sebuah program bernama Gmail sekarang. Jika Maya, Anda ingin klik tombol Send, kita akan mensimulasikan apa yang Kode harus dilakukan. Sesuatu? [BERBUNYI] AUDIENCE: Yep. SPEAKER 1: Ya? Keselamatan? AUDIENCE: Yep. SPEAKER 1: Miss you. Dan aku akan mengirimkan sisanya. Saya mengirimkan setengah karena saya tidak berpikir Gmail akan membiarkan mereka pergi melalui. Jadi hanya ingat, hari ini adalah hari Anda belajar bahwa saya dapat menggunakan Gmail. Itu mengerikan. Sebuah tepuk tangan besar untuk Maya. Terima kasih. Baiklah, jadi. apa [BERBUNYI] Kami punya beberapa beep, ya? Baiklah. Sekarang aku akan mendapatkan 700 benar-benar email bahagia kembali dari teman-teman sekelasnya. Jadi setidaknya kita akan melihat apakah itu layak. Jadi apa yang salah? Aku akan mencari tahu apa yang salah setelah fakta, tapi hanya melihat betapa mudahnya itu untuk melakukan itu di PHP. Jadi apa yang bisa kita lakukan sekarang yang benar-benar kita memiliki ekspresi ini PHP. Was-- bahwa itu mengerikan. Baiklah. Jadi itulah yang harus pergi keluar. Ini saya menguji pagi ini pada saya telepon, screenshot sebenarnya dari ponsel saya. Tapi sekarang mari kita mempertimbangkan mengapa kita benar-benar memperkenalkan semua hal ini di tempat pertama. Jadi tujuannya adalah untuk tidak menulis program-program yang ditulis pada baris perintah, kan? Jadi saya menulis sederhana halo Program, saya menulis sebuah program kecil yang melakukan conditional, dan digunakan garis membaca dan sebagainya. Dan dalam teori, saya hanya menulis sebuah program yang dikirim 800 pesan teks, memberi atau mengambil 800. Dan program yang semua masih berjalan di baris perintah. Dan itu tentu saja adalah tidak web, kan? Tujuannya sekarang adalah untuk mulai menggunakan apa yang saya klaim adalah lebih mudah digunakan bahasa, berani mengatakan lebih bahasa yang kuat dalam hal fitur yang datang dengan itu, untuk memulai menulis kode yang menghasilkan halaman web. Jadi terakhir kali dan minggu lalu, kita berbicara tentang HTTP dan HTML. Dan apa yang baik tentang HTML adalah bahwa itu hanya teks murni. Dan teks tentu sesuatu yang Anda bisa mencetak dengan benar memanggil cetak fungsi f, atau fungsi cetak. Dan memang, itulah yang PHP sekarang akan memungkinkan kita untuk melakukan. Jadi di antara contoh kita ada di kode sumber saat ini, di samping beberapa kode bahwa saya memasang ada beberapa saat yang lalu, kami memiliki program seperti ini misalnya. Froshims, atau Freshman Intramural Olahraga, sebenarnya salah satu ekstrakurikuler pertama Saya terlibat dengan tahun lalu. Dan teman sekamar saya dan saya, dengan beberapa anak-anak lain di kampus, digunakan untuk menjalankan program froshims. Saya mendapatkan pesan teks saya sekarang. Sekarang jadi kita, kembali pada hari, jadi ini adalah 1996 atau lebih, ada internet, tapi tidak ada process-- ada tidak ada website untuk froshims. Dan jadi jika Anda ingin mendaftar untuk sepak bola atau voli atau apa pun, Anda akan mengisi hal ini disebut selembar kertas, dan Anda akan berjalan di Harvard halaman, dan Anda akan geser ke dalam slot mail pengawas, yang berada di Wigglesworth, salah satu asrama. Dan ini adalah Anda terdaftar. Dan dia kemudian akan menulis email kepada Anda manual, seperti saya hanya melakukan di sini dengan Maya, dan kemudian Anda akan dikonfirmasikan sebagai telah terdaftar. Jadi ini seperti rendah menggantung buah, sehingga untuk berbicara. Itu jenis bodoh yang kami menggunakan kertas untuk ini. Saya ingin kita bisa untuk hanya pergi pada sebuah situs web, atau memiliki mahasiswa baru pergi pada website, mendaftar untuk olahraga, dan hanya mengotomatisasi banyak hal ini dengan menempatkan nama dan email mereka dan sebagainya ke dalam database. Dan pada kenyataannya, versi pertama website, menggunakan HTML yang super jelek, mungkin terlihat seperti ini. Itu benar-benar, ironisnya, lebih memalukan melihat dari belakang ini kemudian. Tapi saya menggunakan bahasa pemrograman. Tidak PHP, melainkan disebut Perl, yang merupakan bahasa yang lebih tua, tapi sangat mirip dalam roh. Dan aku hanya benar-benar diajarkan untuk diri sendiri. Dan butuh beberapa saat untuk mencari tahu, mengajukan banyak pertanyaan dari teman-teman. Tapi ide ada yang persis sama. Karena apa PHP benar-benar dirancang adalah bukan barang baris perintah kami hanya bermain dengan, tapi untuk pemrograman web. Itu benar-benar terikat dalam fitur-fiturnya set ke web, sebagai berikut. Ini adalah froshims. Dan jika saya ingin mendaftar di formulir ini, ini cukup jelek, tentu, tapi biarkan aku pergi ke depan dan menjadi mahasiswa kurang nyaman, dan apa pun olahraga untuk Matthews, klik Daftar. Apa yang saya ingin bisa lakukan adalah mengirimkan informasi dari formulir, tidak ke server Google seperti kami lakukan terakhir kali, benar-benar kecurangan dengan menggunakan backend mereka, saya ingin menerapkan kode backend saya sendiri. Yang berarti menulis PHP Kode yang hidup di sebuah URL bahwa data formulir dapat disampaikan kepada. Dan kemudian kode Anda, yang ditulis dalam PHP pada server, kemudian dapat merespon bahwa input pengguna. Seperti namanya, atau tingkat kenyamanan, atau asrama, dan kemudian melakukan sesuatu dengan itu. Dalam hal ini, saya hanya bodoh mencetaknya sebagai teks, yang tidak semua yang cantik. Tapi Anda bisa pasti bayangkan, jika Anda tahu HTML, dan Anda akan segera tahu bagaimana untuk menghasilkan HTML dengan cetak f, dan cetak, dan fungsi yang sama, Anda pasti bisa menghasilkan halaman web cantik yang mengatakan, hey David, Anda sekarang terdaftar. Anda kurang nyaman mahasiswa dari Matthews, kan? Anda hanya dapat menggunakan sejumlah besar% ses, atau kurung kurawal dan tanda dollar notasi Saya menggunakan beberapa saat yang lalu, untuk menghasilkan teks yang lebih user friendly dari ini. Jadi mari kita lihat satu file ini. Froshim nol dot PHP terlihat seperti ini. Ketika saya reload CS50 IDE, nol froshim terlihat seperti ini. Ini adalah froshim nol dot PHP. Dan apa yang Anda perhatikan tentang file ini? AUDIENCE: [tidak terdengar] SPEAKER 1: Maaf, sedikit lebih keras? AUDIENCE: [tidak terdengar] Ini semua dalam HTML. Dan pada kenyataannya, itu adalah, karena apa yang menarik tentang PHP adalah bahwa itu dirancang menjadi, untuk lebih baik atau buruk, bercampur dengan kode HTML. Dan pada kenyataannya, meskipun ini File, froshim nol dot PHP, memiliki komentar PHP di atas itu, itu semua hanya HTML. Tapi sebaliknya, jika saya membuka, mari kita katakanlah, daftar nol dot PHP, yang hanya memiliki komentar besar di bagian atas. Hal ini juga terlihat hampir seluruhnya seperti HTML, kecuali untuk apa? Line, apa, 21 tampak sedikit aneh. Tapi perhatikan aku memasuki modus PHP dengan braket terbuka tanda tanya PHP. Kemudian saya punya beberapa hal. Dan kemudian di akhir baris yang hampir saya miliki, mempertanyakan tanda PHP. Dan ini adalah apa yang saya maksud dengan bercampur. Anda dapat menulis HTML bahwa Anda hanya ingin server untuk meludahkan. Tetapi jika Anda ingin melakukan sesuatu setengah jalan dinamis melalui halaman, seperti memasukkan nama saya atau asrama atau tingkat kenyamanan, Saya bisa menggunakan fungsi seperti cetak r, yang merupakan mencetak rekursif, yang hanya berarti mencetak variabel ini, format itu namun Anda inginkan. Ini benar-benar bukan untuk tujuan manusia, itu hanya untuk debugging atau tujuan diagnostik. Jadi itulah bagaimana saya melakukan itu. Jika saya bukannya pergi froshims dua titik PHP, melihat bahwa aksi formulir ini tidak terdaftar nol dot PHP sebagai old-- yang sebelumnya sebenarnya. Tapi itu terdaftar dua titik PHP. Jadi mari kita lihat bagaimana satu ini berperilaku sedikit berbeda. Jika saya pergi ke versi dua. Jika di sini, jika saya mendaftar sebagai David, kurang nyaman, dari asrama dari Mathews, mendaftar. Jadi kali ini mengatakan, Anda terdaftar, tidak benar-benar. Mari kita lihat apa yang saya lakukan di sini. Jika saya melihat daftar dua titik PHP, ini memiliki beberapa kode PHP lagi. Ini sedikit lebih bersih, meskipun masih membungkus agak panjang pada baris ini. Perhatikan di sini. Saya mencetak tag HTML saya, tag kepala saya, tag saya judul, kepala, tubuh. Dan kemudian saya mulai mengatakan hal-hal seperti masuk ke mode PHP. Dan tag itu, terbuka braket Tanda tanya PHP-- PHP mengatakan, hey, Server, execute-- menafsirkan hal-hal berikut sebagai PHP sampai Anda melihat tag akhir. Dan meskipun Anda mungkin tidak tahu PHP selain Anda telah melihat sejauh ini, Anda dapat membaca jenis itu cukup intuitif. Jika nama kosong, atau kenyamanan kosong, atau asrama kosong, apa yang harus saya lakukan? Apa yang harus saya katakan kepada pengguna? Anda harus memberikan nama, kenyamanan, dan asrama, dan lain sebagainya. Lain, saya mengatakan Anda terdaftar, juga tidak benar-benar. Dan saya katakan tidak benar-benar karena tidak ada basis data. Aku tidak melakukan apa-apa dengan data. Aku hanya membuang itu untuk tujuan demonstrasi. Sekarang aku jenis skimped melewati garis 22. Ada lebih sintaks ada, tapi tanda dolar menggarisbawahi posting adalah jenis yang menarik. Dan ini adalah apa yang baik tentang PHP. Dalam PHP, Anda memiliki apa yang disebut sebuah variabel global yang super sedikit. Mereka adalah semacam bahkan lebih penting daripada variabel global. Dan ini, semua dikapitalisasi dengan demikian, datang dengan PHP. Jadi jika Anda memiliki sebuah server yang memiliki web server terinstal, seperti Apache, dan Anda menginstal bahasa dukungan untuk PHP, tiba-tiba Anda dapat mulai menggunakan Super ini variabel global dalam kode Anda. Dan apa yang baik tentang PHP adalah bahwa jika Anda hanya menulis sebuah file yang berakhir di titik PHP, meletakkannya di web server, dan kemudian Anda mengirimkan formulir untuk itu melalui tag tindakan dan tag bentuk, bahwa atribut aksi di tag form, PHP dan web benar-benar angka keluar bagaimana untuk mengambil semua orang pasangan nilai kunci keluar URL seperti pertanyaan mark q sama kucing, itu akan mencari cara untuk q dan kucing. Jika Anda mengirimkan foto, atau nama pengguna, atau password seperti Facebook, PHP akan mencari tahu untuk Anda di mana semua data yang. Dan itu hanya akan menyerahkan Anda array asosiatif disebut dolar pasca tanda garis bawah, atau tanda dolar menggarisbawahi mendapatkan, tergantung pada apakah Anda menggunakan get atau post kiriman. Dan itu hanya akan menyerahkan variabel global super, sehingga jika Anda ingin mendapatkan nama bahwa pengguna disampaikan melalui web yang bentuk, Anda benar-benar hanya mengatakan nama dari variabel global super, kutipan, tanda kutip, nama. Dan kutipan, kenyamanan tanda kutip, dan kutipan, asrama tanda kutip. Dan kita akan dapat melakukan ini dan banyak lagi dengan PHP. Dan meskipun ini adalah sekilas angin puyuh itu, kami akan menyelam di lebih minggu depan. Kami akan memperkenalkan database sehingga Anda benar-benar akan mulai menerapkan sendiri based-- e-trade Anda seperti situs web hanya dalam waktu satu minggu. Jadi kita akan melihat Anda waktu berikutnya, dan harap Anda mendapat pesan teks. Bye. [MUSIC PLAYING] [DOOR PEMBUKAAN] SPEAKER 2: Hey. SPEAKER 3: Apa yang terjadi? SPEAKER 2: Apa yang kamu lakukan? SPEAKER 3: Bekerja pada satu set masalah. SPEAKER 2: Nice. Tinggi lima. [HIGH FIVE] Apa are-- eh, apa yang kau lakukan di sini? SPEAKER 3: Hanya nongkrong. Baru saja kembali dari gym. Aku tidak bisa membantu tetapi perhatikan ketika kita tinggi-five, Anda memiliki tangan yang cukup kasar. Apakah Anda pergi ke gym? SPEAKER 2: No. Tidak. SPEAKER 3: Dude, Anda melihat cukup besar. Yang buruk, karena semua orang tahu 8-bola adalah pria besar di kampus. Tinggi lima. SPEAKER 2: Uh, tidak ada. Tidak, aku pikir aku baik. Aku pikir aku baik.