[Грає музика] СПІКЕР 1: Це CS50 і це кінець тижня сім. Сьогодні, мабуть, де ми дійсно вчить вас мов. Ми ввели в останні пару тижнів HTML і CSS, жоден з яких мови програмування. І справді, навіть якщо ми не подивитися на майже всі теги що HTML-поставляється з і майже всі з властивостей, які УС поставляється з, це свого роду ній HTML і CSS. Ми будемо просто взагалі почати припускаючи, що ви зрозуміти загальні ідеї, тегів і атрибутів ,, і сторінки відправляються від клієнта до сервера. Тому що сьогодні ми починаємо дивитися на іншу мову програмування РНР. Ми збираємося зробити це дуже швидко. Ми не збираємося вчити вас PHP такої, так само, як ми не прагнемо навчити вас З такої, а, швидше, програмування. І справді, одним з Цілі даного курсу не навчилися вас C, або HTML, CSS або, або PHP, або будь-яку кількість інших розумні слова або абревіатури, а інформатики і, як програмувати принципово. І справді, сьогодні ми починаємо приймати ці навчальні диски геть всі далі, пролетівши через мова називається PHP, наступним чином. Ось те, що ця мова виглядає. Виявляється, що немає необхідності в головна функція в програмі написано на мові, званому PHP. Так що вже звучить трохи простіше ніж C, з якою ми знайомі. Виявляється, що якщо ви хочу оголосити змінну, Ви робите це майже ідентично С. Але Тобто ясно одне розходження тут коли я оголошую рядок, або, може бути, два відмінності. Те, що виглядає по-іншому? Аудиторія: знак долара. СПІКЕР 1: Так, є долар підпису, який ми ніколи не бачили раніше. І чого не вистачає? Так? АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: Так, ні типу даних. Так що виходить, що PHP є те, що ми викликати слабо типізований мова, де З сильно типізованих. Вільно набрали просто означає, що Існують різні типи даних, Є рядки і Інтс, поплавці. Але комп'ютер цифри, що з. Ти ж людина програміст не повинні в цьому розібратися. Все, що Вам потрібно зробити, оголосити змінна знак долара, назва вашої Мінлива, а потім, наприклад, кінець цитати цитати, привіт світ. Ну це те, що стан виглядає в PHP. Будь відмінності? Немає. Ось і виходить, вони ідентичні. І ви, можливо, доведеться менше філії або більше гілок, але синтаксис повороти точно так само. Логічні вирази можуть замовити разом. Логічні вирази може бути операція AND разом. У вас ще є перемикачі. Навіть якщо ви не використовували це, вони існують в C і вони функціонально еквівалент в PHP. І справді, в PHP, вони трохи могутніше. У C, ви можете порівняти тільки певну типи даних, такі як Інтс і символів, в той час як в PHP ви можете порівняти повна рядки оперяються, не маючи турбуватися про покажчики тощо. Так от для петлі. Це просто псевдокод Код, якщо ви будете. Але структурно це збігається з З Ось у той час як цикл, псевдокод therefore-- ідентичні З Ось робити, поки loop-- ідентичні. І ось ніби ця модель тут в результаті чого є кілька інших синтаксичних Особливості ми дійсно побачимо. Насправді, тут хороший спосіб PHP в результаті чого, якщо ви хочете, щоб ітерації над масивом, і ви не хочете, щоб перейти через психічні та синтаксичні обручі наявності INT я дорівнює 0, я менше п, я плюс plus-- які це просто багато дратівливих синтаксису. Ви можете сказати трохи більше плавно для кожного номера як номер, де в даному випадку долар числа знак, я припускаю ,, це як масив називається цифрами. І тоді я припускаю, що номер, однині, буде мінлива. А що PHP буде робити для мене, як я перебору з цієї петлі, на кожній ітерації, це буде оновлювати номер змінної в бути елементом Ith в цифрах, у множині. Так що просто обробляє все, що для мене. Немає квадратні дужки, що не знак долара, не крапка з комою. Це трохи простіше. Ну, якщо ви хочете, Масив, виявляється ви може щось зробити дуже схоже на С. Синтаксис трохи відрізняється. Але ось масив називається долар підписав номера. І я використовую, в PHP, квадрат кронштейни, виявляється. І ми збираємося, щоб побачити ці знову в JavaScript-- ще одну мову. Я просто використовувати квадратний позначення кронштейн мати кому цілих чисел, в цьому випадку. Але це дає мені масиву. Але ще більш потужним в PHP, у нас також є, що, як правило, називається асоціативні масиви. І багато мов Тобто ці, а також. Справа в тому, C масиви є те, що індекси для масиву, те, що вам використовувати в квадратних дужках, через який Ви отримати доступ до елементів, повинні бути і що? АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: Вони повинні бути номера або цілі числа, зокрема, від нуля і вище. Ну, в PHP, і, виходить з, на інших мовах, Ви можете почати їсти Індекси, що не числове. Але насправді вони слова або Фрази, так що замість Постарайтеся згадати, де щось є, або зберігається у змінній I, ви можете використовувати слово і сказати, that-- ви можете сказати таке слово, як це. Так знак долара цитатою це ім'я змінної. Це дещо фанки синтаксис це спілкування двох ключове значення пари для цієї змінної. Зокрема, це дає мені масив, який має довжину 2. Але індекси не 0 і 1. Індекси є цитатою кінець цитати Символ і цитати ціна кінець цитати. І значення цих індексів, відповідно, FB для Facebook і $ 79.53, коли я в останній перевірив ціну для цього. Що це означає? Ну, це означає, що замість написання коду як це, де я щось зробити як долар sign-- або, скоріше, в C Я б навіть не мають знак долара. Я хотів би зробити щось як цитати і потім Я хотів би зробити кронштейн я отримати деякі довільно чисельно індексований значення. Починаючи з сьогоднішнього дня в PHP, якщо ви хочете отримати при деякому значенні, ми начебто є більш семантична виразність. Просто химерний спосіб сказати, що ми можемо просто називати речі, які вони. І якщо ви хочете, щоб отримати на щось символом, Тепер ви в буквальному сенсі зробити цитувати Unquote символ в квадратних дужках замість простого числа. Так що це хороший зручність. І це свого роду його зараз. Там же грона інші особливості в PHP. І справді, PHP поставляється з горезвісний раковина. Десятки, сотні функцій оснащені PHP-- так багато більше, ніж прийшов з С. І це не призначені для розтрощити а допомогти не розумієш, що ми не більше не доведеться писати код це свого роду тут концептуально. Тепер ми можемо просто почати скориставшись набагато більш розширені можливості що мови, як PHP є. Таким чином, ми не повинні турбуватися про рухатися речі навколо в пам'яті. Ми не повинні турбуватися про Танос і всі ці більш низькому рівні, потужні деталі, які ви будете боротися с, якщо не боротися з, pset5, але ви можете почати скоро само собою зрозумілим. Справді, давайте напишемо супер проста програма в PHP, як слід. Я збираюся йти голова в CS50 IDE тут, і те, що я збираюся зробити створити новий файл, який дуже просто буде називатися привіт точка PHP. Таким чином, замість крапки з, це буде називатися точка PHP. І тоді в цьому файлі, Я можу почати друкувати. Але виявляється, що Єдине, що я повинен знати, є те, що будь-який файл PHP в цілому, потребує почати з якийсь спеціальний синтаксис. Схожі по духу HTML, але знову ж, PHP це мова програмування, а не мова розмітки. Таким чином, кожен файл, і це свого роду нерозумно дивлячись я визнаю. Відкрити кронштейн, знак питання, PHP. І це тільки спосіб мови сказати, агов, комп'ютер тут приходить якийсь код написана на мові PHP під назвою. І тоді в самому кінці файлу, ви начебто роду протилежність. Ви не написати PHP знову, вам просто зробити знак питання, дужку. І тоді все, що ви покласти всередину з цих двох тегів, так би мовити, буде, або має бути, PHP код. Отже, давайте щось робити супер просто. Я збираюся йти вперед і робити відбиток Def, привіт світ, обернена коса риска н, зберегти. А тепер у мене рядку, я йду зробити, зробити hello-- ні, я збираюся зробити, точка слеш привіт. Ні, точка слеш, хм. Так щось інше. І справді, це ключова різниця між PHP і мовах, як C C. був так званий складений мову. Що це означає для C для компіляції? Що було наслідком? Так. АУДИТОРІЯ: Написав його в машинний код тому він може бути запущений на комп'ютері. СПІКЕР 1: Точно. Ми повинні спочатку перетворити його в так звана машина код, нулі і одиниці, перш ніж він насправді буде виконуваний і зрозумілі комп'ютера. За Intel всередині. ЦП всередині комп'ютера. PHP, навпаки, те, що називається інтерпретована мова, який означає, що ви не скомпілювати його в нулів і одиниць, машинний код, Ви замість залишити його в якості вихідного коду. І ви, замість передати його в якості вхідних даних до програми, перекладач що хтось написав років тому, що це розуміє порядково, характер для характеру. Отже, іншими словами, люди там написав програма, яка буде виглядати у вашому коду рядок за рядком, і з'ясувати, що комп'ютер повинен зробити, без перетворення безпосередньо нулів і одиниць. Так що, якщо він бачить, що цикл, це так зване перекладач буде, як, все гаразд, я повинен зробити щось знову і знову, і знову. Що я повинен зробити? Дай мені подивитися на наступному рядку. Дай мені подивитися на наступному рядку. І це дійсно інтерпретує це построково. Таким чином, щоб виконати його, я не використовую марку. Я не використовувати точкову риску в цьому випадку. Я замість зробити PHP, який є назва програми, також відоме, як Перекладач, що це попередньо встановлені в CS50 IDE, і тепер мені потрібно пропускати Аргумент командного рядка, що це досить просто; ім'я файл, який я хочу, щоб інтерпретувати. Або більш недбало, що я хочу, щоб бігти. І якщо я вдарив Enter, там у нас є це. Привіт Світ. Тепер з'ясовується, що я б друку Def навмисно щоб подолати нас від С до PHP. Більшість PHP програмістів, як ви побачите, навіть не потрудилися за допомогою друку розморожування. Вони просто використовувати функцію під назвою друк, яка не має С. І тому, якщо я повторно це зараз, це насправді поводиться функціонально те ж саме. Я не можу використовувати процентне S і відсоток I і так далі, але є й інші способи в PHP робити це. Але це тільки сказати, що синтаксично, крім деяких дивних речей до зверху, а деякі дивні символи вниз на дні, концепції тепер програмування в цьому іншою мовою будуть точно такими ж. Справді, давайте робити один інший приклад. Так що я збираюся йти вперед і закрийте цей файл. Дозвольте мені створити ще один, що Я подзвоню умови 1 точка PHP. Так що не нулю, тому що те, що я зробив був я озирнувся кілька тижнів тому, у нас був файл з ім'ям Умови 1 точка С. А що Я був перетворений його в моєму голова, і тут на папері, і найближчим часом на курс-х сайт, рядок за рядком в PHP. Таким чином, в C версії, ми зробили щось як рядки з отримує отримати рядок. Так що це трохи відрізняється зробити це в PHP. Замість цього, я просто хочу робити, або, скоріше, я могли б зробити Int N отримує отримати INT, в цьому прикладі раніше. Таким чином, замість того, що я збираюся зробити п отримує прочитати рядок, я хотів би ціле, будь ласка. Так що це тільки моє запрошення. І так виходить, а Я б тільки знаю, що це від того, читати чи бачити функцію перш, читати рядки з функції в PHP приймає аргумент, який є швидке для людини, і його мети в житті це прочитати рядок тексту що він або вона типу в. І тоді він зберігає, що текст у змінній п. А тепер я б хотів, щоб щось зробити як я зробив тижнів тому, на тиждень, як один з класу. Якщо п більше нулю, те, що я збираюся брати що синтаксис ми тільки що бачили, друк чіткості, ви вибрали позитивне число, Обернена коса риска п. Інакше, якщо N дорівнює дорівнює нулю, я йти вперед і сказати, друку Def, Ви обрали нульовий зворотної косої п. В іншому випадку, в даному випадку слід Звичайно буде, друк чіткості, Ви обрали негативне число. І, звичайно, ми можемо реалізувати логіка цієї речі в купу різні шляху, але справа тут є те, що синтаксично, майже нічого нового. Це просто знак долара і нова функція і читати лінії. Але принципово, що нового зараз я інтерпретації це. Я передаю його в якості вхідних даних на іншу програму. Так що, якщо я хочу, щоб запустити це, якщо Я не зробив жодної помилки, Я збираюся запустити PHP, з Умови 1 точка PHP, Enter, Я збираюся ввести номер 50, і давайте припустимо, тепер він працює. Оскільки логіка є же матеріал, як тиждень один. Гаразд, так що це досить захват, вірно? Ми могли б зробити це в будь-якому Кількість мов. Давайте щось робити набагато більше, потужний. Давайте проблема обробка встановити п'ять. Так що я збираюся йти вперед і робити це. Я збираюся створити файл називається словник точка PHP, і схильний, як ви могли б бути дертися вниз багато нот, ноти тільки допоможе Ви, якщо ви дозволили здійснити проблеми встановіть п'ять у PHP. Але ми побачимо, як швидко тепер ми може реалізувати той же набір проблем. Таким чином, в словнику точка PHP, я збираюся припустити, що вже є файл у світі називається Speller. І справді, я зробив це заздалегідь, і ми не будемо ходити через цю лінію по лінії, але якщо ви Цікаво, пізніше і дійсно хочете обернути свій розум навколо відмінності між С і PHP, буквально порівняти цей файл, орфографії, з сьогоднішнього вихідного коду що ми будемо створювати пізніше сьогодні, проти р безлічі п`ять правопису точка с, що ми даємо вам, і це майже те ж саме порядково. Там ще деякі знаки долара. Пару функції трохи відрізняється. Але це хороший спосіб з роду, бачачи, як ви переводите з однієї мови на іншу. І це майже ідентичні лінія для лінії. Але я буду вважати, що що існує, і те, що я збираюся зробити тут це спробувати підірвати ваш проти за допомогою повторної реалізації повнота завдання встановити п'ять спосіб швидше, ніж ви робили досі. Так, наприклад, я збираюся спочатку оголосити глобальну змінну розмір, і встановити її рівною нулю. Тепер це не так багато заощаджень. Коефіцієнти ви реалізовані Розмір майже те ж саме, чи натяк натяк, буде сьогодні чи завтра, тільки за допомогою глобальної змінної під назвою Розмір і встановивши його рівним нулю. Це не особливо Дивно, спойлер. Так якими були ваші дані структури вибір, ті з вас, хто пірнув у і прочитати специфікацію, структури даних, що вже багато хто з вас вже використовують? Хеш-таблиця або спробувати, може бути, деякі варіанти. Так реалізації хеш-таблицю, принаймні, це свого роду багато рядків коду, вірно? І не всі з них можуть бути функціональний в цей момент на тиждень, але це нормально. Тому що в PHP, якщо я хочу хеш-таблицю, зроблено. Вірно? Так цієї змінної, що я тільки що оголосили, очевидно, називається знак долара стіл, за введення раніше. Але я просто хочу, на кінець день, масив. Але не індексуються чисельно Масив, тому що це, як два тижні матеріал, коли ми говорили про масивах. Я хочу хеш-таблицю. Але хеш-таблиці насправді тільки конкретний спосіб сказати, Ви хочете асоціативний масив. Ви хочете, щоб мати можливість асоційовані клавіші зі значеннями. Ключі зі значеннями. Що являє собою словник, насправді? Ну, це ціла зв'язка ключів. Такі слова, як яблуко, груша, банан і, і всі ці англійські слова що ми передаємо вам. І цінності, які ви ефективно вставки в словника небудь правда, або відсутність, брехливо. Іншими словами, ви вставляєте ціла купа пар ключ-значення, яблуко, правда, груша, правда, банан, правда. Так що, коли ви витягаєте або шукати до цього дані у вашій хеш-таблиці з функцією перевірки, ви або отримати назад відповідь, так, я знайшов його в моїй комплексу хеш-таблиці, чи ні, це не там, так що ви повернутися помилковим. Таким чином, щоб зробити це, все що мені потрібно це дані Структура, як я запропонував раніше. Мені просто потрібно, щоб бути в змозі щоб зв'язати слова як, цитата кінець цитати, символ, зі значенням, як, істинного. Так що мій хеш-таблиця. Давайте насправді використовувати його. Таким чином, є кілька функцій Мені потрібно реалізувати. Я збираюся йти вперед і кусати від функції називається розміру. Він не приймає ніяких аргументів. Я не возитися з слово, недійсним в PHP. Я просто збираюся повернутися розмір. І, як в сторону, PHP має це minorly дратує деталь, де, якщо щось глобальне, ви повинні скажіть функцію, в якій ви використовуєте це, агов, це глобальна змінна. Так, неповнолітній дурість, але вам повинні зробити це, тим не менш. Так що про навантаження? Я збираюся реалізувати функція називається навантаження який приймає у назві словника, так само, як у задачі встановити п'ять. І перш, ніж я продовжу, зауважити, що я не друкував досить ті ж самі речі. Що, очевидно, відрізняється в PHP про як ви оголошуєте функцію проти C? Так. АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: Ні Тип повернення. І справді, це так, PHP оскільки це слабо типізований, Також трохи недбалий в цьому сенсі. Вам не потрібно вказувати, як програміста те, що ця функція повертає. Ви повинні були б насправді виглядають на код, щоб зрозуміти це. Або читати коментарі або документацію. Так плюсів і мінусів ці види рішень. Але я повинен сказати, ключове слово, функція. І коли ми дізнаємося, JavaScript через пару тижнів ми збираємося, щоб побачити те ж саме знову, але це та ж сама ідея. Ім'я функції, аргумент чи аргументи або їх відсутність, і тепер тут реалізація. Так що я збираюся скоротити деякі кути просто щоб бути драматичним на мить. Але я збираюся йти вперед і сказати, що це. Це, як я можу завантажити файл в масив. Існує функція в PHP називається файл. Ви даєте це ім'я файлу. Це руки, які ви назад масив, всередині з яких кожен рядок з файлу. З нуля, одного, на до п мінус 1 ліній. Ось воно, вірно? Там немає е читання. Там немає е Get років. Там немає відсотків с. Там немає болю. Там немає feof. Все, що матеріал, з яким Ви боролися, можливо, з р встановити чотири і п'ять, відходить. Так що я просто читав ці рядки в файл, а потім ви знаєте, що? Якщо я хочу, щоб перебору цих слів, Я можу зробити, для кожного ліній, як лінії. Пам'ятайте, що це було свого роду розумний спосіб ітерації по масиву, індекс за індексом, і на кожній ітерації виклику поточний рядок, знак долара лінія. І тут я збираюся піти і кажуть стіл, кронштейн, лінія, отримує правда. Іншими словами, це, як я вставити в моїй хеш-таблиці в PHP. Я говорю знак долара таблицю, в якій мій асоціативний масив, який був порожньо за рядки коду до вище. То я в нього індекс ні, з використанням ряду, але буквально за допомогою Ключове слово, яке мене хвилює. Може бути, це яблуко або груша або банан або будь-який інший, а конкретно я індексації в нього, як я запропонував раніше. Я беру ім'я моє Асоціативний масив, а потім я використовувати лапки кінець цитати в квадратні дужки з рядка, замість фактичного числа. І ось воно що. Функція навантаження робиться. Після того, як що ітерації циклу, я поклав все в хеш-таблиці. Тепер невелика обмовка, є пара речей, мені потрібно, щоб виправити. І версія, яку я викладу на сайті матиме всі нюанси, але це в основному тільки буде якийсь перевірка помилок і деякі дрібні недоліки. Але це дійсно суть його. Якщо зараз я хочу, щоб реалізувати функція, що викликається перевірити, що очікує Слово як аргумент, як я міг би йти про те, що робити? Ну, Я просто хочу сказати, якщо всередині мого столу, на місці слова, якщо встановлений. Так що якщо є is-- насправді, ви знаєте, що? Я збираюся зробити це в трохи псевдокоду. Але ідея та ж. Якщо дорівнює правда, повернення правда. Добре. Else-- ви можете роду побачити, де це going-- повернутися помилковим. Готово. Перевірте робиться. Досить хороший, правильно? І так, що це дійсно стає на? І це теж, я вирізав деякі кути. Подивіться на версії онлайн для всіх невеликих нюансів. Але це суть його. Індекс в ваш Асоціативний масив, також відоме, як Хеш-таблиці, подивитися, якщо є значення там, якщо він встановлений в істинний, і якщо так, повернутися правда. Таким чином, ми звели вниз Всі складності. Так начебто карколомне, вірно? Я не буду обтяжувати завершивши його вивантаження, бо в fact-- ой, ви знаєте, що? Так, давайте закінчимо його вивантаження. Вивантаження в хеш-таблиці може виглядати як функції вивантаження, повернутися. ОК, так що це вивантаження. Тому що немає нічого вивантажити, вірно? Там немає Танос. Я явно не запитати операційна система для чого-небудь. Я тільки почав використовувати змінні. І так це теж прояв особливості високорівневих мов. Отже, ще раз, більшість з цього терміна ми займаємося тут з С. Супер низькому рівні. Ви можете побачити пам'яті комп'ютера. Ви можете нічого не чіпати тебе хочу в оперативній пам'яті комп'ютера, на краще чи на гірше. До тут, ми збираємося відмовитися від цієї влади. Але мій бог, подивіться, як набагато менше коду я написав. Справді, якщо я не говорили і говорити по моїй набору тексту, ми були б зробити з цей приклад за п'ять хвилин тому. Так що ж ціна приділяється? Ну давайте подивимося. Давайте поглянемо. Я збираюся йти вперед і працювати CS50. Дозвольте мені спочатку піти в сьогодні приклади, коли У мене є каталог тексти, як і раніше. Я збираюся запустити рішення, він приходить з проблемою встановити п'ять називається орфографії, яка знаходиться в облікового запису CS50 в. І я збираюся запустити його на щось Великий, як Біблії короля Джеймса, просто так, що ми насправді поставити співробітники вирішення тесту. Тепер іноді це інтернет трохи повільніше, трохи швидше, може зайняти деякий час, щоб переглянути. Але він взяв в загальній складності .56 секунд перевірки орфографії Короля Джеймса Біблія з використанням розчину персоналу. Так досить добре. Ваш може бути набагато повільніше, і це абсолютно нормально. Але це вірно тут. Так що це рішення персоналу. Якщо я йду в і очистити PHP версії. І я збираюся зробити трохи як випічка шоу речі. Ми збираємося взяти код я написав раніше, так що це абсолютно правильно. Тому що я написав код не буде щоб бути абсолютно правильно зараз. Але якщо я запускаю PHP версії, що я повинен відмовитися від сьогодні? Взяв мене п'ять хвилин, щоб здійснити р встановити п'ять, я претензії. Що коштувало мені? Так. АУДИТОРІЯ: Швидкість. СПІКЕР 1: Швидкість. Що ви маєте на увазі? АУДИТОРІЯ: Це займе більше часу. СПІКЕР 1: Добре. Давайте подивимося. Це займе більше, не писати, але, щоб запустити його. Так. Так давайте спробуємо це. Так от я збираюся йти вперед і робити PHP з правопису, й тому, що файлу називається правопису. Так що я не виконавши словник, нагадаємо, Я біжу програму під назвою правопису. Я збираюся пройти в той же Файл, король Джеймс п'ятий. Він летить мимо. Це може бути просто доступ в Інтернет, так що не читати занадто багато в цьому. Але це відчуваю більше напевно. 1.26 секунд. Тепер це все ще досить млинець швидко, чи не так? І тільки тому, що відчував, що більше як зо три, чи чотири, чи п'ять секунд, це тільки тому, що Інтернет був бути повільним. Час комп'ютер провів склав 1,26 секунд, в порівнянні я думаю 0,56. Так більш ніж удвічі повільно. Тепер, як і раніше чертовски швидко, але це прояв з, насправді, що точна ціна. Тому що ми інтерпретації в рядку коду по лінії, і що програма PHP читає мій Код зверху вниз, зліва направо, він повинен робити більше мислення. Він повинен роду перетворення це всередині себе до відповідного машини Код на льоту, так би мовити, навіть якщо механіці трохи відрізняється. Замість того щоб просто подачі в Intel CPU сирі нулі і одиниці що він розуміє спочатку. Так абсолютно, руки вниз, ми заплатили ціну. І код, написаний на мові як PHP, як правило, повільніше. Але мій бог. Так що тепер, коли я перевірити правопис Файл, я витратити додаткові 0,7 секунд або близько 20 годин проти реалізувати швидше орфографії, вірно? Це свого роду компроміс. І якщо ви тільки починаєте р встановити п'ять, не може бути 20 годин. Може бути набагато менше, ніж це. Але це компроміс, по-справжньому. І якщо ви працюєте код насправді великий набори даних, або на старому обладнанні, навіть, ці види відмінностей безумовно, може додати вгору. Будь-які питання досі? Так. АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: Вибачте, може Ви кажете, що ще раз? АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: Ви здаватися час. Ну, так що так. Ви економите час, не маючи для компіляції, якщо це те, що ви просите. І справді, в CS50, більшість програм, навіть якщо вони може зайняти деякий час писати, вони відносно короткі. Кілька десятків, кілька сотень рядків коду, і тому вони скласти досить швидко. Але коли ви починаєте писати великі програми, як, якщо ви Microsoft або ви Google і писати дійсно великі програми в C, C ++ або, або аналогічно складений мови, може зайняти багато секунд, або навіть хвилин або більше до зібрати мільйони рядків коду. І там теж, що Різниця буде скласти. І справді, коли ми Перехід сьогодні, в той же день Сьогодні, щоб веб-програмування за допомогою PHP, ви збираюся знайти його просто так більш приємним, щоб написати код коли ви не повинні робити це нерозумно кроки, як зміна у вашому терміналі вікна, тип марка привіт, повторно запустити його, перезавантажте вікно. Просто так багато нерозумно механічні кроки, які просто отримати в дорозі робити цікаво, весело роботи. І дійсно ми кидаємо, що покінчити з PHP. І ми можемо взаємодіяти з нею швидше. Так. АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: Звичайно. Чи можу я уточнити, що це значить бути інтерпретовані? Коли ви збираєте мову як С, вона йде вниз як ми сказали, щоб машини код, нулі і одиниці. І Intel вирішила років тому, що деякі моделі з нулів і одиниць представляють додавання, віднімання або, або друку, або інші основні операції. У світі інтерпретована мова як PHP, JavaScript або Python, або, або Ruby, або згустки інші, а хтось написав interpreter-- в даному випадку, це також називається PHP, ідентичні Назва language--, що істотно має великий цикл в ньому, що ітерації по всіх лініях коду що я подати його на вхід, як привіт точка PHP, або словник точка PHP. І тоді ви можете думати про їх великий цикл, як мають багато умов. І ці умови є, якщо людина написала ключове слово, почати робити його або її Код знову і знову. Або, якщо людина має написав рядок коду, якщо тільки виконати їх Наступний рядок умовно. Так що це дійсно, як інтерпретації це в людському сенсі, лінії по лінії, і що тільки займає час. Вона займає над головою. І так, що це price-- добре question-- ми платимо. Так давайте зробимо ще один демо це трохи більш драматичним. Існує, я б сказав приблизна це в 90% вірогідність невдачі жахливо а, але ви будете вражені, з 10% вірогідністю. Таким чином, щороку ми намагаємося це зробити, в результаті чого ми спробуйте написати програму, яка проходить через Проблема встановити нуль, для яких у Вас є представлені ваші телефони і багато іншої демографічної інформації, і ми програмно відправити вам текстове повідомлення. А потім кожного телефону почне пищати або вібрує, і це просто дивно, бо Ну, подивіться на те, що комп'ютери можуть зробити. Це рідко працює правильно здається, в значній мірі тому що я, як правило, отримують в чорний список по Gmail або який-небудь інший сервіс за фактично намагається зробити це за шкалою. Але найсмішніше, теж, так як ми не всі тут сьогодні, цікавий факт в останній раз ми спробував це два роки тому, Я думаю, що я написав програму який сидів в петлі ітерації над усіма студентами в класі, і кожен з них текст повідомлення, і він сказав, щось на зразок, чому ти не в лекції? Любов, CS50 бота. Ви поняття не маєте, скільки апологетичні і начебто хворобливі листи Я отримав у відповідь від п мінус 100 чоловік, які не були тут той день. І ще смішніше, більш ганебним story-- Ви знаєте, давайте його там. Це вже на відео кілька років тому. Таким чином, ви скоро побачите мене написати цикл, в результаті чого це дуже легко написати, що помилка в цикл, таким чином, що перший раз через петлю, то відправити одного текстового повідомлення. Вдруге через петлю I повинен був послати ще один текстове повідомлення, а потім ще один текст повідомлення, і ще один. Але, виявляється, якщо ви зробите опечатку при програмуванні, іноді можете писати програми, які посилають один Текст повідомлення, а потім два текстові повідомлення, Потім три текстові повідомлення всім, хто вже отримав текстове повідомлення. І, як ви знаєте, щось робити, плюс щось, плюс щось, плюс щось, це великий виведення багато текстових повідомлень або н квадрат, або на $ 0,10 текстове повідомлення, $ 20000. На щастя, я потрапив Control-C, що, перш ніж сталося, але я зобов'язаний, принаймні один з ваших попередників $ 20 за 200 з гаком текстові повідомлення, що не тільки пішов у своєму телефоні, але Також було як старший розкладачки так що хотілося виштовхується з його пам'яті кожен персональний текст повідомлення він насправді отримав. Так у нас одна мета сьогодні, не робити цього. Може бути, включити режим польоту. Добре. Отже, давайте в Програма тут callled-- що я буду називати текст точка PHP. І заздалегідь, я отримав два файли тут. Я зробив файл для всього персоналу, який отримав всі права Інформація персонал, всі імена з веб-сайту курсу. І потім, а поки я просто поклав деякі підроблені номери 555-1212. Так вони не будуть насправді нікуди. Але зверніть увагу, всередині цього файлу CSV, які ми говорили про коротко, перш ніж в контексті файлу IO. Що таке файл CSV? Розділених комами змінних. І це ніби як дуже проста база даних, якщо ви будете. Там начебто роду з чотирьох колонок в цьому файлі, і зубчасті, але коми суті представляють стовпці у файлі. У першій колонці ТФ або ім'я СА. Друга колонка є їх прізвище. Третя колонка є їх номер телефону. І четвертий стовпець, мабуть is-- Четвертий стовпець, мабуть, що? ОК, так що це їх носій. Так Verizon, Sprint або, або те, що ні. І якщо я не обмовився раніше, CSV. Розділених комами значень CSV тут. Так що я можу зробити з цим? Ну це просто великий текстовий файл, і це свого роду довго, чи не так? Як це буде бути вид дратує. І виявляється, однак, що, якщо я хочете відправити текстове повідомлення, давайте Алекс кажуть тут. Дозвольте мені йти в моєму браузері і вийти з повноекранного режиму тільки так я можу перемикатися. Виявляється, давайте подивимося, якщо я йду в тут, і ввійти до Gmail, все в порядку. Не дивіться на цій частині. Просто я побачу. звичайно можна пряма все ще бачити, що я роблю. Добре. Так от просто Gmail з Рахунком Джона Гарварда. Так що, якщо я хочу, щоб відправити Текст повідомлення Алекс, Я можу, звичайно, створити повідомлення. І виходить, і я маю протестували його з Алексом перш, ніж тут, так що ви можете додати деяку область назвати в народних телефонів, тому що існує у світі речі називаються SMS для шлюзів електронної пошти. Який химерний спосіб сказати все з нас, хто мають мобільні телефони, які є телефонні номери, звичайно, є, ймовірно, для перевізника, певний суфікс, як в Vtext.com для Verizon текстового повідомлення точка ком, що Ви можете додати до вашого особистий номер телефону, а потім ви або друзі, або ваші батьки можуть Текст, який ви в даний конкретний адресу. І Verizon має сервер, електронну пошту Сервер, що при отриманні цього листа, дивиться на цифровий частини, а потім використовує незалежно особливе чарівництво промисловості вони є насправді надіслати його протягом ефіру конкретній комірці телефон. Тепер це приємно, тому що я не знаю, як відправити текстове повідомлення або написати код, але для мого мобільного телефону, і ви могли б зробити точно, що для остаточний проект, але зараз все У мене є мій ноутбук тут. Тому я хочу, щоб перебрати цей CSV Файл, лінія, по лінії, по лінії, по лінії, захопити кожен з телефонних номерів співробітників, в і їх носій і програмно, об'єднати, тобто, підключіть телефон Кількість з відповідним доменним ім'ям а потім відправити по електронній пошті. Так що це багато кроків. І удачі робити, що в С Це кошмар ситуації , Щоб відкрити файл, прочитати його лінія, по лінії, по лінії, як ви бачимо, або, можливо, скоро побачимо з проблемою встановити п'ять, якщо не Проблема встановити чотири, а потім динамічно об'єднувати два рядки разом, тому що в C, взяти два рядки і об'єднати їх, Що ви мінімально потрібно зробити найбільш імовірним? Ви повинні оголосити більше пам'яті, вірно? І запитайте, Танос, я можу мати більше пам'яті? Так що я можу покласти половину цього Тут половина це тут. Це так багато кроків. І до цього моменту ви втратили Інтерес до дурної маленької демо де ви зробити кожного телефону звуковий сигнал. Давайте зробимо цей вид PHP стиль, в якому ми тільки що почати використовувати більше тієї раковині. І ідеї принципово та ж, але ми не повинні хвилюватися занадто багато про це більш низькому рівні. Отже, давайте подивимося, як я міг би йти про це. І просто так, що я не повторити минулі помилки, Я написав кілька заміток для себе тут. І давайте подивимося, якщо я можу ходити з нами через деякі з основних кроків, і то заради часу ми будемо в можливо, скоротити деякі кути в кінці. Я збираюся йти вперед і робити відкритий Кронштейн PHP, щоб почати цей файл. І я збираюся йти вперед і робити це. Файл ручку, як ви скоро побачити, насправді викликає функцію під назвою F відкритий. І пам'ятайте, що це відкриває файл. І цитата, кінець цитати, г означає, що, знову? Просто відкрийте його для читання. В даний час в р набір для, ви зробили це. І справитися може бути що завгодно, фу, бар, барельєф, будь-яка змінна ім'я. Але, як правило комп'ютер вчений назвав би відкрити файл, даючи вам дескриптор файлу, те, щоб утримати, так сказати. Я просто збираюся зробити деякі перевірки помилок. Таким чином, якщо ручка є хибним, так само, як в С, я збираюся зробити щось подібне, не може відкрити файл, зворотної косої п. А потім я просто збираюся йти вперед і вийти. І виявляється, в PHP, Я не усередині функції. Там немає Основна функція тут. Так що я не повернуся, як такої. Я виходжу. Який, по суті, одне і те ж. І я з одним виходом у напевно. Один просто означає помилку деякого виду. Це не дорівнює нулю, так що це помилка. Гаразд, так що якщо я тут нині в моїй програмі я відкрив файл. Я збираюся йти вперед і оголосити масив називається адреси, і в C Я б знати Розмір масиву в заздалегідь, чи не так? Або я мав би заявити про це є покажчиком, а потім використовувати Танос. І тоді кожен раз я читав через інший рядки у файлі, Я збираюся потрібно Танос більше пам'яті, більше пам'яті Танос. Це біль в шиї. І на щастя, PHP, і Рубі, і Python, JavaScript і вони буде рости ваші масиви для вас автоматично. Немає більше Танос. Немає більше управління пам'яттю. Комп'ютер піклується про це. Але ціна, яку ви платите. Це трохи повільніше. А для програми, як це ми не збираємося, щоб помітити. Ми збираємося відправити 100 текстових повідомлень. Наприклад, не буде відчувати себе його. Це дійсно тільки починає Незалежно від вашого вибору мови коли ваші дані або ваші програми отримати дійсно, дійсно значне, як буде нагода більше, з нашою веб-матеріалу, заснованого. Але зараз давайте просуватися вперед. Поки виходить, що є функція в C називається F отримати CSV. Файл CSV отримати, що займає ручку файл в якості аргументу, і він переходить потім, ряд, по ряд, по ряду читати в рядок. Так що просто читає рядок тексту з файлу. Але те, що приємно про цю функцію, це не просто передати мені рядок тексту. Це виглядає для тих запитом, та аналізує лінію. І для розбору рядка означає розділити це на певних значень в даному контексті. Іншими словами, знак долара рядок змінної це дасть мені купу індексів. Це збирається бути Перший стовпець в моїй CSV. Це буде другий колонка, це буде третій, і це буде четвертий. Тому що пам'ятаю, і не перевершують співпрацювати в останній раз ми робили це, але якщо я можу завантажити персонал точка CSV. Упс, що не перейменувати. Якщо я можу завантажити персоналу точка CSV, і спробуйте відкрити його, Я вже registered-- О, я не оновлювати Excel, так як в останній раз. Ви побачите, що в штаті точка CSV, у мене є чотири колонки. Так що, коли я прочитав в Перший рядок Еббі тут, Знак долара рядок 0 це Еббі, Знак долара ряд одна Лайонс, Знак долара ряд двох її номер, а потім носій її телефону. Так от і все. І, що приємно, тому що я не повинні в даний час з'ясувати де всі ці коми насправді. Так що я збираюся йти вперед і зробити це, враховуючи, що визначення, Я хочу сказати, що її звуть в рядку кронштейна нульовий, як і обіцяв. І я збираюся grab-- і насправді, ви знаєте, що? Я не збираюся турбуватися про її ім'я, в цьому випадку. Я збираюся тримати це простим. Я збираюся зробити її номер в рядку кронштейна два, я думаю. І її носій був у тому, де? Ряд три, один над. Так що нічого нового там. Це просто нуля індексування в масиві. А тепер, я збираюся зробити наступне. Якщо перевізник дорівнює дорівнює AT & T-- Я просто хочу, щоб мати loop-- Я хочу створити електронну пошту адреса, яка виглядає наступним чином. Це буде 617-555-1212 на те, що це, text.ATT.net, це те, що я хочу зробити. Так як я можу це зробити? Я збираюся зробити наступне. Її адреса буде її номер, і тепер, дозвольте мені йти вперед і робити це. Це деякі фанки синтаксис. Я міг би зробити трюк відсотків и, але я можу насправді просто зробити це. Так що це PHP річ, але давайте розглянемо, що я роблю. Долари, увійдіть на адресу ліва, просто змінна. Дайте мені змінну. Я не потрібно вказувати тип. PHP буде зрозуміти це. На правій стороні, що тип даних цієї всієї речі на правая? Виглядає як струна, бо є подвійна цитує далеко зліва і справа. Тепер є деякі фанки новий синтаксис тут. Там у фігурні дужки, і кількість знак долара. Але взяти думаю, що це те, що синтаксис ймовірно, говорить PHP, щоб зробити для мене? Так. Просто вставте значення там. Так ні відсотків с. Ми могли б використовувати для друку F, S або друк е або щось на зразок цього, але PHP і багато високорівневих мов, Ви побачите, що ви могли б зробити те ж саме, функціонально, може бути, шість різних способів. І так він починає ставати питання дизайну або стилю. Так що це просто загадково дивлячись спосіб сказати, дайте мені адресу електронної пошти, але плагін числа в між цими фігурні дужки. І фігурні дужки НЕ БУДЕ в кінцевому підсумку в кінцевому адресою. Тепер ми можемо припустити деякі з ці лінії заради Часу. Так що, якщо дорівнює носій дорівнює verHorizon-- вигуки, Verizon-- Я хочу зробити щось дуже схожі, де адреса отримує, цитата, кінець цитати, номер на text.ATT.net. І тоді я можу зробити такий же річ для решти перевізників. Але я просто зробити точку, точку, крапку в даний час. А тепер давайте припустимо, що Я хочу, щоб додати масив, натиснути. Я хочу, щоб додати до Масив, званий адреси. Ця адреса, це, як ви щось додати в масив в PHP. Вам не потрібно робити Танос. Ви не повинні змінювати розміри масиву. Ви просто говорите масиву, поштовх. Що ви хочете, щоб push-- що масив Ви хочете, щоб підштовхнути щось на? Адреси. Те, що ви хочете, щоб підштовхнути на адреси? Адреса. І справді, якщо ви дійсно хочете бути розумним, деякі синтаксичний цукор для цього, так би мовити, який просто означає, як ви можете зробити це в красивіше чином, було б це зробити. Це теж має ефект зростає масив адрес за розміром однієї, а потім грюкнути, що додаткові Адреса електронної пошти в неї. Так. АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: опечатка на ще if-- ой, носій. Все добре. Це також не буде подобається моя нездатність здійснити частина цієї програми в подальшому. Але дякую вам за увагу. Ще одна помилка. Дякую. Ми хочемо, щоб це Vtext.com. Так. Добре. То де ж це нам дає? Ми написали код, щоб відкрити файл. У нас є цикл для перебору над рядами у файлі. У нас є код, який додає до мого Масив, по одному за раз, то правильно відформатований адресу електронної пошти. Так все, що дійсно залишається тільки відправити по електронній пошті, щоб кожен з цих людей. Так що я пішов вперед і готується себе таким чином. Те, що я збираюся зробити тут is-- і давайте йти вперед і пропустити якийсь реальний код, який виглядає як це. Так ось перед запечені Версія я вже писав раніше. І зауважте, я закінчив реалізації Sprint. Я закінчив реалізацію T-Mobile. Я закінчив реалізації Virgin Mobile. І я заздалегідь перепрошую. Там в декілька перевізників, які деякі студенти в класі є що я не став перераховувати в стані, якщо тут. Так що не всі тексти будуть виходити. Але давайте подивимося, що ще мені потрібно зробити. Я закриваю файл, просто як в р встановити чотири. І це новий синтаксис. І ми будемо бачити трохи біт цього протягом довгого часу, особливо з р встановити сім і восьмій. Але це синтаксис для створення особливий тип структури. Виявляється, є бібліотека, яка поставляється з PHP, називається PHP поштової програми. Його мета в житті, щоб програмно відправити електронну пошту. Це код хтось писав, що робить його легше для нас, щоб відправляти електронну пошту, таким чином, ми не повинні тримати вперед і назад, щоб Gmail, і вставити в адресах електронної пошти людей. Там ціла купа ліній тут що, чесно кажучи, я просто вид скопійований і вставити в документації. І справді, якщо ви Цікаво, я залишив все з адрес документації в коді, що ми будемо створювати пізніше. І зверніть увагу, що серед речі, які я роблю Тобто, я кажу цю бібліотеку, використовувати сервер Gmail, вірно? SMTP ми говорили коротко, коли ми були в Єльському університеті про те, Simple Mail протокол передачі. Це протокол, який сервери, використовувані для відправки електронної пошти, і that's-- Gmail має один з них. Порт, це число TCP-порт. Це нормально, якщо ви не бачив 587 раніше. Просто знаю, що з документації. Ось моє ім'я користувача. Я збираюся використовувати CF50 бота. І в даний момент, я просто хочу, щоб введіть у фактичний пароль бота. А потім сюди, зверніть увагу, що залишилося. Я доклав від адреси щоб бути Bot на CS50.net. Я думаю, що не пошкодуєте відправивши Текст повідомлення до 800 чоловік, що говорить, сумую за тобою, любов CS50 бот, можливо, для тих, хто не може зробити це сьогодні. І тоді в лінії 76, що мені робити? Цей вид виглядає як С. Таким чином, для I дорівнює 0, п equals-- Тепер розраховувати новий. Виявляється, що якщо ви хочете отримати кількість речей в масиві, Ви не повинні пам'ятати його більше. Ви можете просто запитати Функція називається граф, і він розповість вам, як багато Адреси в цьому масиві. А потім я збираюся додати адресу в електронній пошті. І я знаю, що це через використовуючи документацію. Там це функція надбудови адресу. А тепер помітите, що одна частина синтаксису. Ми бачили це раніше в C. Аналогічна по духу. Ви можете думати про знак долара поштою в якості змінної, яка це. Але це структура всередині які є не тільки властивості, змінні, якщо хочете. Але виявляється, що в PHP, який є об'єктно-орієнтоване програмування мова, як Java, якщо ви прийняли АСУ ТП. Знак долара пошта, якщо ви хочете, метою яких він також має функції всередині нього, або методи. Таким чином, це означає, що спеціальний PHP-поштова бібліотека, якщо я отримав його змінної, якщо я хочу, щоб викликати функцію, яка поставляється з цією бібліотекою, для сьогоднішніх цілей, просто знаю, ви використовуєте позначення зі стрілкою. Там немає точкової нотації. Це просто стрілка. Але це не покажчик. Це просто запозичені з синтаксису мови C. Так називають додати адреса всередині об'єкт цієї бібліотеки або змінна. Добре. Це чарівне лінії. Ось як відправити електронну пошту. Це еквівалент відкриття Gmail, ввівши його, і удар відправити. Але це буде замість Написати по електронній пошті до цією адресою, з цим тілом, від CS50 бота. А тепер ключова рядок. Ця лінія була відсутня в як 2011 коли я думаю, що я в минулому намагався це. Ця лінія є, звичайно, очищає адреси. Так логічно, якщо я не очистите адреса після кожної ітерації, перший по електронній пошті або текстове повідомлення йде до Аліси, другий йде на Аліса і Боб, третій йде Алісою і Бобом і Чарлі, отже, дуже дорога помилка Я зробив у цьому році. Отже, давайте подивимося. Чи є питання перш ніж ми посилаємо вам всю текст повідомлення з 10-відсотковою ймовірністю? Які-небудь питання? Добре. Давайте мені йти сюди і зміна пароль, що повинно працювати, швидше за все, отримаєте чорний список Gmail. Таким чином, вони, можливо, не всі йдуть з, так вони, ймовірно, не подобається нам відправці листа 800 в циклі все відразу. Так що це не особливо людської поведінки. О, я збираюся змінити одну річ. Нагорі, я збираюся sent-- змінити файл CSV студенти точка. І я не відкрию, але це ідентичний файл CSV з не 100 співробітників, але 800 студентів, тільки з Гарварду, бо Єльський має виїмку жовтня на цьому тижні. І здається, що свого роду рефлекс речі зробити, щоб текст всі з них, як, чому вони не в класі на відпочинку. Все добре. Всього студентів Гарварда сьогодні всередині цього файлу. А тепер давайте повернемося на мій вікні терміналу. Я начебто нервував. ОК, так що тепер я збираюся йти в каталог і PHP текст точка PHP. Як щодо одного хороброго добровольця? Так що я не хочу, це на мене. ОК, давай до. Як вас звати? МАЙЯ Майя. СПІКЕР 1: Майя. Приходьте на вгору, майя. Добре. Давайте подивимося, якщо це працює. Я поклав свою адресу електронної пошти в file-- свій власний номер телефону у файлі, так що, сподіваюся, я отримаю один, а також. Приємно познайомитись. МАЙЯ: Також. СПІКЕР 1: Все, що Вам потрібно зробити, це Натисніть Enter, щоб відправити 800 текстових повідомлень, якщо я не зіпсувати. Ніцца. Може знадобитися деякий час, за статистикою, поки ми не отримати до електронної пошти address-- текстове повідомлення, що це в кімнаті прямо зараз. Давайте затриматися і подивитися. АУДИТОРІЯ: [Свист] СПІКЕР 1: О, так. АУДИТОРІЯ: О, Гоча. СПІКЕР 1: Для петель are-- це НЕ повільно через PHP. Це тому, що Gmail повільно є дроселювання нас і не дозволяючи нам відправити більше, ніж як один адресу електронної пошти в секунду. Що-небудь? Це було важко, що для мене, щоб перевірити на додому тільки з мене і моєї одному телефоні, так що. Це, сподіваюся, від бота? Так? Немає? Говорять так. Немає? Це від одного? Незграбні. ДОБРЕ. Досить впевнений, що це, хоча працює. Ой-ой. Вони black-- ой, зачекайте хвилину. О, ви знаєте, що? Будь ласка, хвилиночку. Тільки майя і я-- Міа, це було? МАЙЯ Майя. СПІКЕР 1: Майя, збираються знаю, що я зробив не так. Ой, зачекайте хвилинку. Я думаю, що я тільки що відправив 100 текстові повідомлення 555-1212. Стенд с. Я не можу перемогти будь-який рік. ДОБРЕ. Майя? Fix, що в пост-продакшн. Чорт візьми! Виходячи з адреси. ОК, стояти. Вибачте. Це боляче щороку. ОК, один момент. Це добре. Я замість збираюся зробити це. Надрукувати адресу. ОК, стояти. Друк адреси, кронштейн я. Так, мені це подобається. Долар sign-- ОК я поясню, що я робить в даний час, після того як я запускаю це. Щороку. ОК, тут ми йдемо. У мене є просто-- і я не хочу, показати номер телефону кожного, але Майя може підтвердити кивком голови, що вона бачить все це номер телефону в класі що я збираюся скопіювати в програма під назвою Gmail. І якщо в Gmail, те, що ми хочемо сказати? Сумую за тобою. Love--, що не від мене. Я навіть не потрапив відправити ще. Так що давайте йти вперед і робити це, якщо я можу збільшити. ДОБРЕ. Так я використовую програму під назвою Gmail в даний час. Якщо Майя, ви хотіли б натисніть кнопку Надіслати, ми буде імітувати те, що, що Код повинен був зробити. Що-небудь? [BEEPS] АУДИТОРІЯ: Так. СПІКЕР 1: Да? Порятунок? АУДИТОРІЯ: Так. СПІКЕР 1: Міс ви. І я збираюся відправити все інше. Я розіслав половину, тому що я не думаю, що Gmail буде нехай ті пройти. Так що пам'ятайте, що сьогодні день що ви дізналися, що я можу використовувати Gmail. Це було жахливо. Великий оплески майя. Дякую. Гаразд, так. що [BEEPS] Ми отримали декілька звукових сигналу, так? Добре. Тепер я йду, щоб отримати 700 дійсно нещасні листи від однокласників тому. Так, принаймні, ми побачимо якщо воно було того варте. Так що пішло не так? Я з'ясувати, що пішло неправильним після факту, а просто подивитися, як легко це повинно було зробити, що в PHP. Так що ми можемо реально зробити зараз, у нас є ця виразність PHP. Це was-- це було жахливо. Добре. Так, щоб було, що повинен був зробити. Це було мені тестування сьогодні вранці на мій телефон, фактичний скріншот мого телефону. Але тепер давайте розглянемо, чому ми насправді впровадження всі ці речі в першу чергу. Таким чином, мета полягає не в написати ці програми, написані в командному рядку, чи не так? Так що я написав простий привіт програма, я написав маленька програма, яка робить умовні, і використовувати лінію читання, і так далі. І в теорії, я просто написав програма, яка розіслав 800 текстових повідомлень, давати чи приймати 800. І, що програма була все раніше працювати в командному рядку. І це, звичайно, не Інтернет, чи не так? Мета зараз, щоб почати використовувати те, що я претендувати більш простий у використанні мову, насмілюся сказати, більш потужний мову з точки зору з особливостей, які прийти з ним, щоб почати написання коду, який генерує веб-сторінки. Так в останній раз, і минулого тижня, ми говорили про HTTP і HTML. І те, що приємно про HTML є те, що це просто чистий текст. І, звичайно, текст те, що ви можете друкувати буквально виклику друк Функція F, або функція друку. І справді, це те, що РНР тепер збирається, щоб дозволити нам робити. Так серед прикладів є в сучасному вихідному коді, на додаток до деяких з коду що я ставлю там хвилину тому, у нас є програми, як це, наприклад. Froshims або Першокурсник Внутрішні спорту, був насправді один з перших extracurriculars Я зв'язався з років тому. І мій сусід по кімнаті, і я, з деякі інші діти на території кампусу, використовується для запуску програми froshims. Я отримую мої текстові повідомлення досі. Тепер, щоб ми, тому в день, так що це був +1996 або близько того, там був інтернет, але не було process-- є не було веб-сайт для froshims. І тому, якщо ви хочете, щоб зареєструватися для футбол або волейбол або будь-який інший, Ви б заповнити цю річ називається аркуш паперу, і ви б ходити по Гарварді двір, і ви слайд б це в поштову слот супроводжуючий, який був у Wigglesworth, один з гуртожитку. І це ви зареєструвалися. І він або вона тоді скласти електронну пошту до вас вручну, так само, як я тільки що зробив тут з майя, і тоді ви буде підтверджено як був зареєстрований. Так що це було як з низьким висять плодів, так сказати. Це був свого роду безглуздо, що ми використовували папір для цього. Я хотів, щоб ми могли просто піти на веб-сайті, або є першокурсники йдуть на сайт, зареєструватися спорту, і просто автоматизувати багато цього матеріалу поставивши їх імена та електронні листи і так далі в базу даних. І справді, найперша версія веб-сайту, за допомогою супер потворні HTML, можливо, дивився щось подібне. Це було насправді, за іронією долі, більш ніяково, дивлячись, ніж це спині потім. Але я використовував мову програмування. Чи не PHP, а називається Perl, який є старий мову, але дуже близькі по духу. І я просто повністю вчив його до себе. І він взяв мене якийсь час, щоб зрозуміти це, просити багато питань друзів. Але ідеї там були точно такими ж. Тому що те, що PHP був насправді призначені для НЕ командного рядка речі ми просто грали з, але для веб-програмування. Це дійсно пов'язані у своїй функції встановлюється в мережі, як слід. Це froshims. І якби я хотів, щоб зареєструватися в цій формі, це цілком потворною, звичайно, але дозвольте мені йти вперед і бути менш комфортно студент, і все, що спорт для Matthews, натисніть Register. Те, що я хочу, щоб бути в змозі зробити це подати інформацію з форми, ні до сервера Google, як ми зробили минулого разу, повністю обман за допомогою їх бекенда, я хочу, щоб реалізувати свій власний код бекенда. Це означає, записи PHP Код, який живе в URL що дані форми можуть бути представлені. І тоді ваш код, написано в РНР на сервері, може відповісти на це введення даних користувачем. Як його або її ім'я, або рівень комфорту, або в гуртожитку, а потім зробити щось з ним. У цьому випадку, я просто тупо надруковані його як текст, який не все, що красиво. Але ви, безумовно, уявіть собі, якщо ви знаєте, HTML, і ви скоро знаю, як для генерації HTML з печаткою F, і друк, та аналогічні функції, ви можете, звичайно, генерувати красивіше веб-сторінку, каже, агов Девід, ти тепер зареєстрований. Ти менш комфортно Студент з Метьюз, вірно? Ви можете просто використовувати цілу купу% СЕС, або фігурні дужки і знак долара позначення я хвилину тому, щоб генерувати текст, який більш зручний ніж це. Отже, давайте поглянемо на цей один файл. Froshim нулю точка PHP виглядає так. Коли я перезавантажити CS50 IDE, froshim нулю виглядає як це. Це froshim нулю точка PHP. І що ви помітите, про цей файл? АУДИТОРІЯ: [нерозбірливо] СПІКЕР 1: Вибачте, трохи голосніше? АУДИТОРІЯ: [нерозбірливо] Це все в HTML. І справді, це, тому Що цікаво PHP є те, що він був розроблений щоб бути, краще або ще гірше, долучені з HTML кодом. І справді, навіть якщо це Файл, froshim нульовий точка PHP, має PHP коментар у верхній це, це всього лише HTML. Але на відміну від, якщо я відкриваю, давайте скажімо, зареєструйтесь нульовий точка PHP, який просто має великий коментар у верхній частині. Це теж виглядає майже повністю як HTML, для чого, крім? Лінія, на що, 21 виглядає трохи дивно. Але зверніть увагу, я входу в режим PHP з відкритою дужки знак питання PHP. Тоді я отримав деякі речі. І тоді в кінці цього рядка майже мене, знак питання PHP. І це те, що я маю на увазі перемежованими. Ви можете написати HTML, що ви тільки що хочете, щоб сервер виплюнути. Але якщо ви хочете зробити щось динамічний півдорозі сторінки, як вставити моє ім'я або гуртожитку або рівень комфорту, Я можу використовувати функцію як друк г, який є друкувати рекурсивної, який просто означає, роздрукувати цю змінну, форматування його Однак ви хочете. Це дійсно не людини мети, це просто для налагодження чи діагностичних цілей. Так от, як я це зробив. Якщо я замість цього піти froshims двох точок PHP, зауважити, що дія цієї форми не зареєстрований нульовий точка PHP як old-- попередній був насправді. Але це зареєстровано дві точка PHP. Отже, давайте подивимося на те, як цей поводиться трохи по-іншому. Якщо я йду у версії два. Якщо тут, якщо я зареєструватися як Давида, менш зручний, з гуртожитку в Метьюз, зареєструйтеся. Тому цього разу він сказав, ви зареєстровано не на самому справі. Давайте подивимося, що я зробив тут. Якщо я дивлюся на регістрі двох точок PHP, це має ще декілька PHP код. Це трохи чистіше, хоча він ще обгортання трохи довго на цій лінії. Зверніть увагу, тут. Я роздрукувати мій HTML тег, моя голова тег, мій тег заголовка, голова, тіло. І тоді я починаю говорити речі, як увійти в режим PHP. І так, що тег, відкритий кронштейн PHP-- знак питання PHP говорить, агов, сервер, execute-- інтерпретувати наступне матеріал, як PHP поки ви не побачити кінцевий тег. І навіть якщо ви не могли б знати будь другий PHP, чому ви бачили досі, Ви можете прочитати вид це досить інтуїтивно. Якщо ім'я порожнє або комфорт порожня, або в гуртожитку порожній, що мені робити? Що я кажу користувача? Ви повинні надати ваше ім'я, комфорт, і загальні, і так далі. В іншому випадку, я кажу, що ви зареєстровано, ну не насправді. І я говорю не дуже тому що немає бази даних. Я нічого не роблю з даними. Я просто викинути для демонстраційних цілей. Тепер я начебто поскупилися по лінії 22. Там більше синтаксис є, але знак долара підкреслюють пост почасти цікаво. І це те, що приємно про PHP. У PHP, ви повинні, що називається кілька супер глобальні змінні. Вони є свого роду ще більш важливо, ніж глобальні змінні. І це все капіталізуються як такої, приходять з PHP. Так що, якщо у вас є сервер, який має встановлений веб-сервер, як Apache, і ви встановите мову підтримка PHP, всі раптом ви може почати використовувати ці супер глобальні змінні в коді. І те, що приємно про PHP є те, що, якщо ви просто написати файл, який закінчується в точці PHP, поклав його на веб-сервері, і тоді ви уявити форму до нього за допомогою цього тега дій і тега форми, що атрибут дії в Форма тег, PHP та веб повністю з'ясовує, як захопити всі ці пар ключ-значення з в URL, як питання Знак Q дорівнює кішок, він буде з'ясувати, як д і кішок. Якщо ви уявити фото, або ім'я користувача, або пароль, подобається Facebook, PHP буде з'ясувати для вас де всі ці дані. І це буде просто передати Ви асоціативний масив називається знак підкреслення долар пост, або знак підкреслення долар отримати, в залежності від того, ви за допомогою GET або відправляти уявлення. І це буде просто передати вам супер глобальна змінна, так що якщо ви хочете отримати на назву що користувач представлений за допомогою цієї мережі Форма, ви в буквальному сенсі просто сказати ім'я в супер глобальну змінну, цитата, кінець цитати, ім'я. І цитата, кінець цитати комфорт, і цитата, кінець цитати гуртожитку. І ми збираємося, щоб бути в змозі зробити це і багато іншого з PHP. І хоча це було вихор погляд на неї, ми зануритися в набагато більш наступного тижня. Ми ввести базу даних так що ви насправді збирається почати реалізацію самостійно електронна торгівля based-- як веб-сайт в часі, просто через тиждень. Таким чином, ми будемо бачити вас наступного разу, і сподіваюся, що ви отримали текстові повідомлення. Поки. [Грає музика] [ВІДКРИТТЯ ДВЕРІ] СПІКЕР 2: Привіт. СПІКЕР 3: Що сталося? СПІКЕР 2: Що ви робите? СПІКЕР 3: Робота по набору проблем. СПІКЕР 2: Ніцца. Дай п'ять. [ДАЙ П'ЯТЬ] Що are-- е-е, що ти тут робиш? СПІКЕР 3: Просто бовтатися. Щойно повернувся з спортзалу. Я не міг допомогти, але помітив, коли ми високого програвав, що у вас є досить грубі руки. Ви йдете в спортзал? СПІКЕР 2: Ні Немає. СПІКЕР 3: Чувак, ти виглядаєш досить великий. Які це погано, тому що всі знають, 8-куля велика людина в університетському містечку. Дай п'ять. СПІКЕР 2: Е-е, немає. Ні, я думаю, що я добре. Я думаю, що я добре.