[Powered by Google Translate] [Неделя 8] [David J Малан] [Harvard University] [Это CS50.] [CS50.TV] Добро пожаловать обратно. Это CS50, и это является началом 8-й неделе. Пару возможности на этой неделе, среди них этот разговор здесь, в которую еду будут обслуживаться. Для получения дополнительной информации проверить слайды, которые находятся в сети. А также еще одно событие этой недели наши собственные Томас Carriero. Он один из бывший глава CS50 в обучении ребят, которые сейчас находится на Dropbox, Он парень, который соединил нас с вами знаем, что, так что если вы хотите больше, что голова их разговор этим днем ​​для Dropbox и многое другое. CS50 обед в эту пятницу. У присоединиться к нам, если вы сможете, 1:15, как обычно, Огонь и лед. И теперь мы погрузиться в то, что называется семинары. Наши CS50 семинары, напомним, эти факультативные занятия во главе с учением стипендиатов и конечно помощники и друзья, конечно, Люди из группы в кампусе называют ABCD, которая представляет собой группу технофилы на территории кампуса, а также группа под названием ЖКХ, Общество Гарвардского компьютер, студентов, которые аналогичным заинтересованы в вычислениях. Реестр в этом году семинаров включает в себя семинары по Android и IOS и JavaScript и PHP, Unix, Vim, и больше, так понимаю, что эти семинары идут вверх. Если вы хотите, чтобы RSVP для любого из них отправиться в URL, что там. Мы будем затем разместить на веб-сайте курса времена и места, как только они будут завершены. Но знаю, стоит есть 5 году до семинары доступны в Интернете, многие из которых все еще очень много текущей точки зрения технологии вы могли бы хочу играть с для окончательного проекта, так что голова там в течение некоторого доступны видео их. CSS, те из вас, кто знаком с CSS уже, что это такое в двух словах? Что такое CSS? Это каскадные таблицы стилей, и что это значит? Что это сделает для нас, CSS? Ладно, давайте согреться проще один, HTML, язык разметки гипертекста. Что это для нас сделать? Любой вообще? Это становится очень неудобно задавать эти вопросы. HTML, язык разметки гипертекста. Да? Нет? [Неразборчиво ответ студента] Хорошо, хорошо, это позволяет размечать текст для отображения в веб-браузере. Это не язык программирования. Это действительно язык разметки, который означает, что она предписывает браузеру, как отображать Информация, таким образом, простейшие воплощение этого, как мы видели это то, супер просто, как boldfacing, открывающая скобка б замкнутый кронштейн говорит сделать этот текст жирным, и это на самом деле лишь один из многих способов , в котором мы можем сделать это, и действительно, в эти дни лучше подход для стилизации ваших веб-страниц, делая вещи, жирным шрифтом и курсивом и по центру и обоснованным и тому подобное, не сделано с помощью HTML-тегов только а с техникой называют CSS, каскадные таблицы стилей. Это язык сам по себе. Это тоже не является языком программирования, но- всем, это Дэн, который держит присоединились к нам сегодня. Некоторые технические трудности. Не проблема. CSS позволяет стилизовать страницу , установив, что называется свойствами, так что давайте посмотрим на эту путем некоторые основные примеры. Отпустите меня в прибор сегодня. У меня есть источник 8 понедельник каталог здесь, и я собираюсь идти в каталог CSS, где мы имеем целый букет файлов ждет нас прямо здесь, и в этой папке у нас есть, например, search0.html в прошлый раз. Теперь вспоминаю с search0 мы вышли на эту заметку от рода осуществлении Google или действительно только передний конец для него неделю назад, и заметил, что у нас было несколько новых тегов нет. У нас был h1 для большой, жирный заголовок, формы, которые позволили нам на самом деле есть HTML форма для ввода данных пользователем. Действия, какой был смысл действий атрибутом на HTML тега формы? В чем был смысл этого действия? Я просто сделаю это сегодня. Действие является местом, где форма будет представлена. Дело в том, что говорит, действие = "google.com / поиск" означает, что когда пользователь нажмет кнопку или эквивалент все поля формы заполнены они будут отправлены не на нашем сервере или наш прибор, а к этому конкретному URL в Google. И метод, который он собирается использовать называют получить, и получить, на данный момент, это просто техника для передачи информации по веб-серверу путем URL, так что давайте бросим быстрый взгляд назад, как это работает. Обратите внимание, что есть вход, чье имя д , тип которого является текст, а затем второй вход типа представляют , значение которого CS50 поиск, и действительно, если мы откроем этот файл здесь, search0.html, это супер простой форме, и если я ищу что-то вроде компьютерной науки а затем нажмите ввод или нажмите на CS50 поиск заметить, что то, что происходит за пределами добраться до Google Я специально закончили в этом URL в верхней части, google.com / поиск? Q = компьютер + наука, и информатике, очевидно, что я набрал дюйма + Просто означает, что там пробел был, и это сделано в браузере, просто чтобы убедиться, что нет никаких путаница и пробелы в фактических URL. И тогда д, конечно, имя параметра. Мы не видели, как мы, программист, может на самом деле доступ Q пока нет. Можно предположить, что Google знает, что делать с этим здесь, но мы вернемся туда в свое время сегодня. Но позвольте мне взглянуть, а не на search1.html, , которая выглядит немного по-другому, потому что я решил, что эта форма здесь было немного хромает. Я имею в виду, это в левом верхнем углу. Там на самом деле никакой эстетики, и поэтому я хочу, чтобы стилизовать эту немного больше, как Google, чья домашняя страница, напомним, Даже если вы не можете посетить его, что часто, похоже, об этом сегодня на Хэллоуин. Если мы вместо этого открывают версии 1 этого файла, поиск 1.html, я его центру. Тем не менее довольно уродливые, но по крайней мере теперь я начал контролировать эстетику этой странице, не только разметка их. Давайте взглянем на поиск 1, и там действительно только одно различие здесь, , которые могут выскочить на тебя, а может и нет, но то, что одна строка или отрывок разница? Там в это атрибут стиля, так что получается, что в HTML большинство элементов, большинство тегов может иметь атрибут стиля на них, и внутри этого стиля атрибута в кавычках, и что строка в кавычках является CSS. Вы можете поставить каскадных таблиц стилей там , указав его в качестве имени свойства двоеточия следует значение. Это своего рода несчастных дизайнерское решение несколько лет назад , что CSS это язык сам по себе, но синтаксически это очень отличается от HTML. В этом случае, мы видим, что внутри моего веб-страницы, которые написаны на HTML, У меня есть CSS внутри этих кавычек, и Конвенции о CSS является то, что у вас есть то, что называется свойство следует, опять же, толстой кишки, после чего значение этого свойства, так что нет знака равенства. Там нет дополнительных кавычки. Это просто, это разделенных двоеточием пару ключей значение, и текстовая строка делает именно то, что он говорит. Это выравнивает текст в тело страницы, которые действительно кишки страницы, в центре. Хорошо, конечным результатом то, чтобы быть ясно, заключается в следующем. Не все, что сексуальнее, но по крайней мере это по центру и немного больше похоже на реальную Google. Но что, если я вместо этого открывают версия 2 настоящей и указать здесь новый тег вообще? Теперь в голове моей странице, которая ранее была только какой тег Во всех предыдущих примерах? Это просто было это, название. Минуту назад глава теги выглядела следующим образом. Теперь вместо него есть стиль внутри тега это, и это тоже, я прошу прощения, синтаксически выглядит очень отличается от HTML, но вы привыкнете к нему, в результате чего внутри стиля тега Теперь я могу вынести за скобки то, что было минуту назад атрибутов, атрибут стиля, и я могу поставить его на самый верх моей странице. Почему? Ну, это шаг к очистке вещей, так же, как в письменной форме C код мы будем иногда писать функции для исключения общей функциональности. Это просто немного чище, чтобы начать факторинга из таких вещах, как эстетика в одном месте вместо того, чтобы все это пересыпать всей вашей HTML. Это тоже делает то, что он говорит, хотя есть немного нового синтаксиса. Это вот селектор, и тело просто означает, выберите элемент тела и применить следующие свойства к нему. Ну, собственность точно так же. На всякий случай я добавил точку с запятой в конце концов, которая имеет тенденцию быть конвенцией, и я обернут всю эту собственность в фигурные скобки, потому что я действительно может иметь различные вещи. Я мог бы на самом деле сказать что-то вроде цвета: синий; Теперь это тоже не собирается быть на шаг в сторону все, что угодно красивее, но если бы я сейчас вернуться к версии 2 я по крайней мере сейчас сделали тело мое страницы текста все синие. Кнопка остается тем же, потому что это вход. Это не чистый текст. Но все остальное, что текст, как CS50 поиск наверху, на самом деле синие. Опять же, все, что мы сделали сейчас, это удалить из организма тегов, заметьте, атрибут стиля, и мы учитываться это здесь. Это не огромный шаг вперед, но если мы возьмем это еще один шаг вперед заметить, что мы можем сделать в этой третьей версии здесь. В search3.html веб-страницы почти идентичны кроме того, что новый тег сейчас? Link, так что эта не очень метко назвал потому что вы не связывая в смысле гиперссылка. Скорее всего, вы делаете что-то вроде эквивалента # включить в C причем ссылка тега с атрибутом HREF и отн атрибута говорит, идти вперед и копировать вставить содержимое файла с именем search3.css прямо здесь, по существу. Это не совсем то, что, но это дух его. Он говорит, что идти с открытым файлом, search3.css, и относиться к нему, как будто пользователь набрал его прямо здесь, в главе страницу так же, как я сделал в предыдущем примере. Search3.css, между тем, довольно прост. Это действительно просто содержит именно то, что было минуту назад в стиле тега, но я учтены это здесь в свой собственный файл. Даже если мы не потратили много времени на все это в HTML или веб-программированию просто интуитивно то, что мотивация, пожалуй, вынося это небольшой фрагмент даже CSS в отдельный файл , а затем включить его с этой ссылке тега здесь? [Неразборчиво ответ студента] Ладно, это легче читать в том смысле, что у вас есть CSS в файле CSS. У вас есть HTML в HTML файл, так что это более читаемым в этом смысле. Что еще может быть убедительным? Да. [Неразборчиво ответ студента] Да, так что вы можете включить его много раз, так что сейчас мы делаем это Основные примеры с отдельными файлами, но предположим, что вы на самом деле делает реальный сайт, как вы будете на PSET 7 или ваш окончательный проект, возможно, и вы хотите иметь несколько веб-страниц, как, безусловно, встречается на фактические World Wide Web, и было бы вид хромого иметь, чтобы скопировать и вставить тот же синий цвет и тот же текст выровнен центром в каждой из этих страниц. Скорее, это имеет смысл вынести за скобки, так же, как мы сделали в C с. файл ч, положил его в одном месте, В этом случае search3.css, а затем позволить любому файлу В ваш сайт на самом деле включить этот файл через этот тег здесь, в строке 16. Как это обычно и бывает, мы начали с версии 0, что вид работ но не обязательно лучшие, и с каждым шагом, Поиск 1, поиск 2, и теперь поиск 3 мы взяли эти шаги ребенка на проекты, которые являются немного более чистым и более подготовительных Для более сложных страниц, которые мы могли бы сделать в будущем. Позвольте мне открыть один последний пример здесь, чтобы показать еще более стилизованным страницы, но сначала давайте посмотрим на HTML. Это search4.html, и заметил, что структурно это почти то же самое за исключением введения нового тега Div. Div тег, который вводит деление на этой странице. Вы можете думать об этом как о невидимом прямоугольнике. Это своего рода создает полосу область на веб-странице , который можно стилизовать все сразу. Что я сделал здесь заключается в следующем. Внутри моего тела тега, который был там все время, Я говорю, что создает подразделение странице здесь по линиям 45 до 47, и это означает, по существу, дайте мне невидимый прямоугольник в верхней части страницы. Тогда дайте мне второй прямоугольник, хотя и невидимым, ниже, и идентифицировать его по имени содержимое, а затем, наконец, дай мне третий раздел страницы в нижней части называется ID. Мы увидим, почему я сделал это через минуту, но концептуально у меня есть заголовок дивизии. У меня есть содержание подразделения, и у меня есть подвал разделение страницы хотя это только в разметке. Пользователь не увидит 3 прямоугольника, но вроде структурно там, за кулисами они на самом деле. Теперь, кто заботится? Почему на самом деле это сделать? Все остальное на странице так же, как мы видели раньше. Вот моя форма. Вот мой вклад, мой вход, строки и так далее. Вот изображение, хотя, таким образом, мы будем видеть, куда это пришло от всего минуту. Вот подвал, который является новой, только потому, что я хотел бы представить несколько содержанием здесь. Если мы прокрутку вверх заметить, что ID этой дел является заголовок. ID этой дел является содержание, и идентификатор это один колонтитул. И, как следует из названия, когда у вас есть ID атрибута в HTML, по определению, оно должно однозначно идентифицировать один из элементов, один из тегов на странице. Бремя полностью на вас помнить, что у вас есть заголовок ID уже. У вас есть подвал. У Вас есть содержание ID уже. Компьютер не собираюсь выяснить, что доступно ID для вас, так что вы можете случайно дать 2 ID тегов заголовков, и это было бы просто неправильно. Вы должны иметь в виду, что вы создали, но как только вы это сделали, обратите внимание, что мы можем сделать здесь. Теперь я могу указать в моем стиле тегов в верхнем или, что эквивалентно, в моем файле CSS, если бы я до сих пор используют эту версию, Я могу сказать # заголовка, и что это означает, что все, что тег В этом веб-страница имеет идентификатор заголовка и #, просто человеческие конвенции, представляет ID. Резкое знак или знак фунта представляет ID. Заголовок это имя, которое я дал ему. Это означает, что применять это свойство CSS на любой тег на этой странице, носит идентификатор заголовка. То же здесь дело. Применить эту собственность, которая бывает то же самое, любой элемент с идентификатором содержимого, а затем здесь заметите, что я стал немного любитель с колонтитул. Любой элемент с идентификатором подвал, из которого не может быть только один, по определению, пойти дальше и сделать свой шрифт меньшего размера, ее вес шрифта смелый, его маржа 20 пикселей. Что это значит? Это просто маржа по верхней, нижней и левой и правой. Это означает, дайте мне 20-пиксель невидимым краем вокруг него просто нажать все остальное от него немного, как вы могли бы сделать в Word, Microsoft Word или страницы или тому подобное. И тогда текст по центру. Давайте посмотрим на конечный результат, а потом мы вернемся до одного оставшегося фрагмента CSS там. Это 4-й версии, наш последний для поиска примеров, и это гораздо, гораздо сексуальнее. Сейчас, честно говоря, я просто в поисковой системе Google "Google шрифта логотипа генератор". И это позволило мне создать GIF, формат изображения, которое выглядит как, что там. В самом деле, вы можете сделать это слишком. У нас есть "Google шрифты, логотип генератор". Давайте посмотрим, если мы можем это сделать. Хорошо, я думаю, что это сайт который я использовал. Мы можем сказать, EC 10, например, и сделать их самостоятельно. Вы можете играть с этим в течение всего дня, а затем нажмите правой кнопкой мыши , а затем загрузить фактического GIF, который это все, что я сделал. И действительно, вот почему в моем HTML, напомним, сюда У меня был образ тег, который мы видели на прошлой неделе кратко источником которых является logo.gif. И то, что снова была мотивация за то, что это альт атрибут, это альтернативный атрибут? Да. [Неразборчиво ответ студента] Хорошо, таким образом, 2 причинам действительно, если браузер не может потянуть изображение потому что у вас медленное подключение к сети или изображений поврежден или что-то подобное, по крайней мере, человек может видеть "CS50 поиск" , а затем и доступности причинам. Если у вас есть пользователь, который является слепым и используется для чтения с экрана и поэтому, очевидно, не может видеть образы, которые они могут по крайней мере услышать текст, если их компьютер говорит им. В общем, это лучшая практика, когда речь заходит о доступности страниц так что даже пользователи в этой ситуации может услышать или увидеть, так сказать, что это такое, что это на вашей странице. Там еще одна вещь, которую я сделал здесь который немного интересной, и мы будем видеть больше об этом в задачу установлено 7 через один из шорт во главе с одним из учения товарищей. Но # содержанию относится к тегу ID которого является содержание, но тогда есть пробел, и затем есть слово вход. Ну, что интересного CSS является то, что вы можете см. тегов в страницу рода иерархически, и то, что этот фрагмент средствами CSS, это найти тег ID которого является содержание, а затем применить следующие свойства для всех входных тегов, которые являются потомками содержания, , что в том, что с отступом внутри него. Отступы, опять же, важно только к компьютеру, а не к человеку, но по соглашению мы отступ вещи, как мы углубиться в страницы, таким образом, это означает, применяются край на 5 пикселей любого элемента ввода что где-то внутри или вложены в  элемент с идентификатором содержания. Кто что обратиться? Ну, там на самом деле именно эти 2 парня здесь. Обратите внимание, что внутри вида есть 2 входа, как там было на все эти примеры. Но обратите внимание, что эти 2 входа случится быть вложены, хотя и немного глубоко, пару слоев отступы, внутри тега с идентификатором содержания. Что это значит? Если мы идем в браузер здесь можно увидеть очень немного- Позвольте мне увеличить, то есть немного отступов между кнопкой и между текстовым полем. Позвольте мне временно отключить эту функцию. Отпусти меня до моего CSS, и позвольте мне идти вперед и только изменить эту маржу от 5 до 0 пикселей пикселей. Позвольте мне идти вперед, то и сохраните файл, вернуться к поисковой системе и перезагрузить, и смотреть на середине страницы. Все, что было сжаты вместе, и, когда я впервые взбитыми этом примере до Я думал, что выглядело глупо с текстового поля, а затем кнопку непосредственно под ним. Я хотел, чтобы дополнить его немного, так что я представил поля. То, что мы не будем делать в лекции проходят через несколько десятков CSS свойства, которые существуют, потому что, опять же, есть такие вещи, как размер шрифта, шрифта, край, выравнивание текста, и несколько десятков других, и мы будем называть вас проблемы установлено 7 различных учебники онлайн и ссылки, которые позволяют подобрать эти вещи. Но то, что действительно важно в конце дня , чтобы понять, как эти вещи не применяются. Опять же, если мы имеем в стиле теги которой может пойти селекторы, вроде идентификаторов, которые определяют к которому вы хотите применить эти свойства, а затем вы кладете свойства как ключевые пары значений разделенных двоеточием, а затем закончил с запятой, или вы можете копировать все это, и положить его в отдельный файл CSS сама по себе. Ладно, любые вопросы по концепции или большую картину CSS? Вы будете снова видеть больше его в PSET 7, но мы будем держать это вообще довольно просто. Нет? Хорошо. Это время для реального языка программирования, и мы вернемся к немного CSS в виде примера. PHP на самом деле удивительно доступным языком в том, что это синтаксически почти эквивалентно C. Другими словами, если вы знаете C, вы знаете, по большей части PHP, по крайней мере, синтаксически, хотя есть некоторые новые функции и некоторые новые понятия, которые мы должны будем посмотреть. Но по большей части, теперь, когда мы переходим от С до PHP Большинство новых вещей действительно по большому счету, как вы используете язык для программ на веб-в отличие от в командной строке или в строке мигает, как мы делали до сих пор. Для сравнения, особенно с PSET 7 и окончательный проект вперед, у воспользоваться этим URL здесь, если вы хотите, чтобы читать на формальности PHP. Это на самом деле хотел бесплатный онлайн учебник эффективно, и вы также обнаружите, что то, что действительно хорошо о PHP является то, что существуют сотни функций, которые приходят с ней, , тогда как в C вы не обязательно иметь доступ к больше функций, чем было в математическую библиотеку, CS50 библиотеки. В PHP и многие современные языки, Python и Ruby, среди них, Вы получаете доступ к так много больше функций, а значит, вы получите писать намного меньше кода, потому что вы можете стоять на плечи других людей , которые уже написаны некоторые вещи для вас. Давайте краткий обзор синтаксиса PHP, а затем написать несколько примеров. Что приятно о PHP в первую очередь Есть нет главной функции. Если вы хотите написать программу в PHP вы только начинаете писать код, и вам не придется беспокоиться о главном. Там нет Int. Там нет возврата. Там нет ARGV, агдс, что требуется, когда вы пишете программу. Вместо этого вы можете просто начать писать код, и это частично потому что PHP является то, что называется интерпретируемый язык. C был составлен, и он был составлен в том смысле, что вы начинаете с исходным кодом, запустить его через Clang, который является компилятором, и в конечном итоге через некоторое количество шагов, которые вы получите код объекта, 0 и 1. PHP и Python и Ruby, и Перл и др. различные типы языков в том, что вы не компилировать их. Вы не идете с исходным кодом 0 и 1. Вы просто запустить исходный код, и вы запустите исходный код пишите в обычный текстовый файл, заканчивающийся на. PHP в данном случае вместо. с, что делает программа на компьютере оно буквально интерпретирует код строка за строкой за строкой. Другими словами, вместо того, чтобы писать программу и запустить программу непосредственно вам, а написать программу с файлом заканчивающиеся на. PHP. Затем вы запускаете программу под названием фактической php.exe, если вы на Windows, или просто PHP, если вы на Mac OS или Linux, и Вы предоставляете в качестве вклада в программе PHP собственного исходного кода, и его цель в жизни, чтобы читать ваш код сверху вниз, слева направо, и делать все, что вы сказали это делать. Давайте посмотрим, что это будет означать, синтаксически. В PHP у нас есть условия. На этом слайде идентичен тому, что вы видели в неделю 1 потому что синтаксически условиях, IFS и IFS еще и еще в PHP выглядеть точно так, как это. Когда дело доходит до логические выражения, что они собираются выглядеть точно так, как это. Когда дело доходит до логического умножения вещи вместе, как булевских это будет выглядеть именно так. Переключатели выглядят одинаково, и вы получите дополнительное преимущество в PHP , что переключатели в C можно было только включить символ или Int. Вы не могли бы перейти на строку. В PHP вы можете иметь выражение , что является переменной, содержимое которого строка, и вы реально можете сделать сравнение строк в реальном интуитивно понятным способом, Не указателя сравнения, для того, чтобы решить, стоит ли делать случае я или J или что-то еще. Мы увидим, что потенциально в скором времени. Петли слишком чудесно то же самое. Для петли имеют инициализация, условие, и некоторое количество обновлений. В то время как петли, также существуют в PHP. Сделайте то время как петли, также существуют в PHP, и массивами существует в PHP, но вот где синтаксис начинает становиться немного по-другому, но принципы те же, и понятия действительно одни и те же как они были в неделю 0 с нуля. Прежде всего, это знак $. Это было дизайнерское решение в PHP которому любой переменной В PHP дизайн начинается с $ знака. Там нет больше X, Y, Z. Это теперь $ X, $ Y, $ Z просто так. Это что-то держать в уме, и теперь на правой стороне это похоже на массив, но мы используем квадратные скобки здесь. В PHP и JavaScript в, как мы видим в конечном итоге, объявить массив вы открыты квадратные скобки и закрыл квадратные скобки, и тогда у вас есть список разделенных запятыми значений, будь то целые или строки символов или, что вы хотите, внутри этого выражения нет. Теперь, как мы делали нечто подобное в C? Что было синтаксис для статически объявлении массива известного числа? Это было фигурные скобки, так что небольшая разница здесь, но и в PHP и в конечном итоге наличие он просто использует квадратные скобки, так на самом деле Только интересная деталь здесь является знаком $ на имя переменной , а также в квадратных скобках, и есть одна любопытная вещь , который был опущен, а на левой стороне знак =. Чего не хватает, что мы были требующая уже несколько недель? Да. [Неразборчиво ответ студента] Размер, так что нет никакого упоминания о размере массива. Честно говоря, нет никакого упоминания в квадратных скобках в левой части знака =, и, что еще отсутствует в строке? Да. >> [Неразборчиво ответ студента] Типа, так что интересно, в частности, о PHP является то, что она не является строго типизированных языков, как С, и это сильно набрал в том смысле, что вы должны сказать символов, Вы должны сказать INT, вы должны говорить поплавка. В любое время вы хотите, чтобы переменная вы должны сказать Clang, что его тип. PHP немного ленивее. Он свободно набраны в том смысле, что Вы можете иметь поплавки и символов и строк и Интс и так далее, но сам язык на самом деле не волнует, что вы положите внутрь переменной. Вы не должны информировать его заранее, какой тип данных собирается в переменную. Это полностью зависит от вас, так что это хорошая в том, что вам не придется беспокоиться, как много о типизации данных и беспокоиться, что ваши аргументы и так далее. Это также означает, в конечном счете функций в PHP собираетесь быть в состоянии вернуться либо Int большую часть времени, и, возможно, раз в то время они будут возвращать логическое значение, логическое значение FALSE, например, чтобы показать, что что-то пошло не так. Это дает нам некоторый потенциал роста, но и сделает нас вроде дизайна немного ленивее, когда дело доходит до ввода данных. Что еще иметь в виду здесь? Переменные выглядят вполне устраивает, так что $ S = "привет, мир". Это, возможно, выводимой из предыдущего примера, и у нас есть другой тип цикла. Это одно мы на самом деле видим раз в то время, так как это очень удобно, Еогеасп построить. В этом случае цикл по каждому элементу происходит внутри его скобками 3 слова как правило, $ То первое, что и массив вы хотите перебрать членов, Затем буквально ключевое слово, а затем, наконец, другой переменной имя, которое вы получаете на выбор. Это может быть Foo, Bar, или элемент, и то, что эта конструкция делает , если массив $ содержит 10 элементов на каждой итерации этого массива, простите, на каждой итерации этого цикла переменную элемент будет обновляться первым элементом массива, то второй элемент массива, то третий элемент массива, тем самым устраняя необходимость сделать немного раздражает квадратных обозначение кронштейна и $ Я для того, чтобы индекс в массиве. PHP делает все это за вас и на каждой итерации просто вручает вам следующий элемент из массива без необходимости знать или заботиться о его числовое расположению индекса. И тогда, наконец, на данный момент, есть еще одна особенность PHP что это будет очень полезно, особенно когда мы начинаем программирования в Интернете, и это известно как ассоциативный массив. Массивов, что мы знаем до сих пор, как 20 секунд назад и в течение последних 8 недель массивы с числовыми индексами, рода традиционных массивов, где индексы целых чисел, 0, 1, 2, на всем пути вверх. Ассоциативные массивы являются гораздо более мощным. Они позволяют иметь произвольные клавиши, произвольных индексов и произвольные значения. В то время как в традиционных массивов это 0, 1, 2, в ассоциативный массив, вы можете иметь индекс или ключ Foo, значением которого является бар. Вы можете иметь еще один ключ, имя которого Баз и значение которого qux. Опять же, глупые компьютерные науки общие имена переменных здесь, но дело в том, что этот массив не имеет кронштейн 0 или кронштейн 1. Это вместо того, придется Foo кронштейн и кронштейн Баз. Это намного более универсальны в том, что мы собираемся, чтобы иметь возможность сопоставить слова с другими словами, ключи со значениями совершенно произвольно, и мы собираемся, чтобы иметь возможность получить эти значения обратно в фиксированное время потому что под капотом, что ассоциативный массив действительно представляет собой хэш-таблицу. Напомним, что хеш-таблица позволяет разместить в некоторых входных хотели положить в слова Давида, если вы хотите, чтобы вставить Давида в некий словарь, и тогда вы получите обратно некоторое значение обычно. В случае правописания, истинным или ложным. Дэвид или что слово или нет в словаре. Ассоциативный массив, на самом деле просто хэш-таблицы, но это гораздо более удобным воплощением его. Как мы увидим, это будет, чтобы позволить нам сделать некоторые вещи Очень, очень легко. Давайте взглянем на некоторые основные PHP примеры и посмотрим, что мы можем сделать с этим языком. Позвольте мне идти вперед и открывать в нашей исходный каталог сегодня файл с именем hello1.php. Этот файл больше комментариев, чем реальный код, так что позвольте мне на самом деле удалить все комментарии из файла и представить Вам возможно, самый простой PHP программу прямо здесь. 5 линий, а некоторые из них являются пробелы, так что заметить некоторые ключевые различия здесь. Файл называется hello1.php. Самая первая строка, хотя, , означает, что именно для моего PHP кода. Давайте посмотрим, как управлять этим. Я собираюсь вернуться в свою окне терминала здесь. Я собираюсь пойти в мою PHP директорию. Обратите внимание, что у нас есть целая куча файлов, первый из которых является hello.php. Позвольте мне идти вперед и выполнить это, hello1.php, введите. Доступ запрещен. Хорошо. Как мы зафиксированы такие вещи, как это в прошлом? Что это? >> [Неразборчиво ответ студента] Нам нужна читать и писать, но позвольте мне сделать LS-л. Помните об этом несколько загадочно выход которого hello1 кажется, для чтения и записи мной но читается всеми остальными. Оказывается, это на самом деле не является шагом в правильном направлении. Разница, опять же, с интерпретируемый язык это вы не запустите программу напрямую. Вы, а не работать переводчиком и передать его код что вы написали так что он может интерпретировать это строка за строкой. В этом случае переводчик или программу, которую я на самом деле хотят работать буквально называется PHP. Где-то на этом жестком диске аппарата есть программа написал кто-то другой называется PHP, или на ОС Windows php.exe. Что я буду делать здесь, я буду реально работать PHP но дать ему в качестве аргумента командной строки кода, который я написал, и тогда я буду масштаб и нажмите ввод. Она работает моя программа для меня, сверху вниз, слева направо. Позвольте мне идти вперед и открывать небольшие отклонения от этого. В hello2.php заметить, что это слишком в основном комментарии, поэтому позвольте мне избавиться от тех, как отвлечение, и то, что явно отличается сейчас об этом файле? Там эта новая линия, несколько загадочным на самом верху. В строке 1 это #! / Бен / PHP. Бен является Конвенция о Linux и Mac OS для двоичных файлов, так / бен означает, что это папка, содержащая кучу файлы , который запрограммирован, одним из которых является PHP. #! по прозвищу притон, , которая является быстрым способом сказать это, и что это означает является то, что, когда вы запустите эту программу теперь есть намек на начало файла , которая говорит компьютеру, что переводчик в использовании. Это становится немного раздражает, если вы должны были рассказать своим пользователям и клиентам "Эй, мы написали эту программу под названием hello1.php". Все, что вам нужно сделать, это навсегда запуска PHP, а затем имя этой программы. Честно говоря, было бы просто приятнее работать hello1.php, И действительно, мы можем, если мы делаем следующее. Позвольте мне идти вперед и делать LS-л, а уведомление в hello2 это еще только чтения и записи , а затем читать читать, так что я пока не могу это сделать, hello2.php. Но мы ввели это очень кратко последнее время, команда CHMOD. Если я CHMOD + х, который означает, что все плюс Исполнимость, , а затем hello2.php, а затем сделать LS-л снова замечаем, что изменилось. Один из них, Linux показывает мне имя файла в зеленую, чтобы передать идею что это исполняемый файл, но что еще более важно, на левой стороне заметить, что бит, представляющий х исполняемых в настоящее время установлена. Что это означает теперь это я могу запустить ./hello2.php как обычно, нажмите ввод, и из-за притон в самом начале файла это намек, опять же, Linux, которая говорит использовать этот переводчик, чтобы запустить этот файл. Не беспокойтесь о заставляя пользователя вводить его на самом деле. И что приятно сейчас это вроде не имеет отношения к моим клиентам или друзьям какой язык я написал эту программу, поэтому я могу идти вперед с мв и переименовать эту вещь hello2, например. И теперь, если я ./hello2 и уменьшение моя программа продолжает работать. Эти файловые расширения человеческих конвенции, что это необходимо что-то вроде Clang и сделать, кто смотрит на них. Но для PHP, я мог бы назвать это ничего расширение файла я хочу. Я мог бы обмануть мир, думая, что я действительно хорошо Ruby, и я мог бы написать hello2.rb, а затем запустить это, и вуаля, теперь у меня есть версия Ruby, которая является полной ложью. Но расширений файлов, не имеют смысла если файл является исполняемым и имеет специальную этом намек на начало файла. Теперь, как и в сторону, позвольте мне показать вам быстро версии 3, которая является своего рода полезный трюк знать. В hello3 я сделал что-то немного неправильно что я буду обновлять онлайн исходным кодом. В версии 3 и получается, что на большинстве компьютеров Linux есть программа под названием окр для окружающей среды, и что вы можете делать здесь, если вы не знаете, где PHP установлен на локальный жесткий диск, потому что это действительно может меняться в зависимости от компьютера что кто-то использует, ENV просто говорит работать ENV, , который находится на большинстве систем, и выяснить, где PHP есть. Просто обычный прием, поэтому вам не придется беспокоиться о выяснить, где программа. Но если вы заботитесь, чтобы выяснить, где программа и вы не заботился до сих пор Вы можете использовать которую команда. Позвольте мне масштаб и тип которых PHP, и обратите внимание, он говорит мне, что это на самом деле в USR / бен / PHP. Это своего рода ложь. Это находится также в мусорное ведро. Это просто показывает мне первый удар. Если вы когда-нибудь задавались вопросом, где Clang есть, что Clang, который в USR / бен / лязг, , которые делают, USR / бен / сделать, и что это значит, все это время Вы могли вводить USR / бен / лязг ввести для запуска Clang, но это вроде утомительной, чтобы сделать это, поэтому некоторые папки как USR / бен и бен предполагаются по умолчанию так что компьютер знает, искать в них для вас. Любые вопросы по написанию супер, супер просто Hello программы Всемирного В PHP, а затем запустить его? Потому что сейчас мы начнем внедрять более убедительным синтаксиса. Ладно, здесь мы идем. Эти программы, которые мы видели на самом деле все из них раньше. Если я открываю, например, давайте сделаем beer1.php, Мы не пройдет через несколько версий, но то, что я сделал был я сел и вылил ее или преобразованы мой C код, код PHP здесь. Большинство из верхней части файла комментарии здесь. Оказывается, есть еще одна новая функция, мы должны называть Readline. GetString, напомним, от недели 0 вперед было CS50 вещь. PHP поставляется со своей собственной удобной функцией называется Readline , что занимает 1 аргумент, который определяет строки что вы хотите показать пользователю, и то, что делает Readline оно возвращает все, что пользователь набирает дюйма В этом случае, я объявлении переменной $ п. Я хранении в нем возвращаемого значения Readline После запроса пользователя с этой строкой. Просто для резервного копирования, чтобы фактически выполнить эту вещь, отпусти меня впереди и запустить PHP beer1.php. Сколько бутылок будет? Давайте просто сделать 2 в этот раз. Enter. Вот и все. Программа является функционально идентичны версии C от недели назад. Но синтаксически давайте посмотрим, что по-другому. После того как я получаю Int от пользователя заметили, что я делаю несколько ошибок, а если п составляет менее 1 я ушел, и я распечатать извините сообщение пользователю и выход с 1. Это тоже немного отличается.  В C Что же нам делать? В C мы вернулись 1. В PHP вы выйдете с 1, который откровенно, я думаю, немного более интуитивным потому что вы буквально выходе из программы. Ладно, а затем сюда раздражает песни идентичны синтаксически за исключением переменной, так что здесь, в строке 24 вперед заметит моего цикла почти то же самое, но у меня есть $ в передней части я и п, и что также отсутствует строка 26, которые мы имели в прошлом при объявлении переменной я? Там нет тип. Это неверно в PHP сказать Int. Вы просто не нужно этого делать. Компьютер, РНР достаточно умен, чтобы понимать, что если вы положите номер в $ I он будет относиться к нему как номер для вас. А потом здесь мы вилку в $ я, $ I $ - 1. Все, что то же самое, а затем здесь мы делаем "Ничего себе, это раздражает" Printf , а затем выйти (0). Опять же, вынос в том, что даже если мы собираемся провести относительно мало времени на PHP, конечно, против того, что мы сделали на C, это почти то же самое, и так, что мы будем делать сегодня и на следующей неделе и за это действительно сосредоточиться на некоторых из новых идей. Просто чтобы посмотреть, что еще одна вещь делает перевод более из C, это было супер просто программа, которую мы сделали в неделю 1 или 2, что в кубе значение. Но что интересно, в то время об этой программе является то, что введено понятие пользовательского написал функции, которые мы сами писали. Синтаксис в PHP почти то же самое. Вот моя программа наверху. Обратите внимание, опять отсутствует любое понятие основного. Я начинаю писать код, и это то, что собирается получить выполнен интерпретатором. Я распечатайте х теперь 2, по-видимому. Тогда я утверждаю, кубатуры ... Тогда я называю куб функции и передать в $ х и присвоить возвращаемое значение $ х. Тогда я утверждаю, что это кубе, и тогда я говорю об этом, которое, мы надеемся, скажу х сейчас 8. Синтаксис функции в PHP является очень немного другая. Снова хватает возвращаемого типа. Опять же пропавших без вести возвращаемого типа, а также отсутствует, так это то, что другой тип? [Неразборчиво ответ студента] Ну, ладно, это хорошо. Давайте вернемся к этому в секунду. У нас нет, например, INT здесь. Мы не, например, были Int здесь, потому что, опять же, в PHP Вы просто не должны и не должны делать, а там это новое ключевое слово называется функцией. В PHP это почти немного понятнее, потому что, когда вы хотите функция Вы буквально говорят функцию, вы даете ему имя, а затем через запятую если какое-либо из ее аргументов. Нет необходимости говорить, недействительным или что-то в этом роде, а потом вернуться и то же, $ * $ * $. Что же не хватает? Сэмми указал на это здесь. В верхней части файла полностью отсутствует в PHP также является прототипом. Это тоже по дизайну. Языки и переводчики, как PHP умнее, чем когда-либо C В компиляторы, как Clang. Напомним, что Clang, если вы не сообщите ему, что куб существует, если вы не сообщите ему, что Printf существует в виде прототипа с или с # включить, ну, он собирался кричать на вас и даже не компиляции кода. PHP и более современные языки намного умнее, когда дело доходит до этого. Они возьмут на себя прочитать весь код , а затем кричать на вас, только если он находит куб никуда. Это не имеет значения, если куба находится на нижней или верхней или даже в некоторых отдельном файле. PHP и подобных языков в настоящее время достаточно умны, чтобы смотреть в будущее на все, прежде чем считая вас, как допустив ошибку. Где это оставляет нас? Давайте сделаем один пример здесь, в условиях, и если я открываю conditions2.php уведомления тоже Синтаксис здесь почти то же самое. Я использую Readline вместо GetString, но эту линию так же, как и раньше, "Я хотел бы целое, пожалуйста". Я тогда, если условие, иначе, если, а затем другое, но функционально эта программа также идентично тому, что мы сделали недель назад так что если я запускаю эту вещь, PHP из conditions2, и я даю ему номер, как 23 - Я выбрал положительное число. Если я даю ему -1 Я выбрал отрицательное число. Если я даю хорошо 0 действительно взял 0. Так кто же заботится обо всем этом? Ну, один из забавных рода упражнения здесь Для меня по крайней мере, должен был вернуться и посмотреть, как быстро я мог бы осуществлять PSET 5, опечатками PSET. Напомним, что там был этот файл под названием speller.c, и там был файл с именем dictionary.c. То, что я сделал, я как бы потратил несколько минут, и я превратил код C в коде PHP, и мы не будем тратить много времени на спеллер потому как в PSET 5 вы действительно не нужно, чтобы тратить много времени на спеллер себя, потому что ваше внимание было приковано к словарю. Достаточно сказать, что если вы прочитали правописания, Этот файл здесь, это в значительной степени эквивалентно код C мы дали вам для PSET 5. Я только что добавили около $ на местах. Я изменил некоторые имена функций, если они не существуют в PHP. Там одна дополнительная вещь здесь, preg_match, который немного любитель способ делать что-то, но мы вернемся к этому в конце концов. Но в общем, правописания почти идентичны, и если вы посмотрите на самое дно то, что он в конечном итоге выплевывает это здесь, слова с ошибками, слова в словарь, слова в тексте. Ладно, так что интересно сейчас заключается в следующем. В верхней части моего файла Я требующих dictionary.php. Так же, как C # был включают PHP есть специальная функция, называемая требуют что в значительной степени делает то же самое, требует файл с именем dictionary.php. Как я могу идти о реализации PSET 5? Позвольте мне идти вперед и открывать файл здесь. Позвольте мне немного ссылкой здесь. И позвольте мне создать новый файл и начать называть это dictionary.php. Позвольте мне сказать это в другой папке, так что мы можем сделать это жить. А теперь я изменить масштаб изображения Я собираюсь начать свое PHP файлов с открытым кронштейн PHP закрыто кронштейн. И тогда здесь было несколько функций Мне нужно реализовать для PSET 5, так что позвольте мне начать реализацию некоторых из тех, так что функция проверки, которые должны были взять слово в качестве аргумента. Мы будем делать это и вернуться к нему в данный момент. Существовал функции нагрузку, которая состоялась в том, что в качестве аргумента? Словарь, поэтому файл, что я на самом деле хотел, чтобы загрузить. Существовал функции размере, который не принимает аргументов и там была функция-то, что было другим? Unload, который не принимает аргументов либо. Эти 4 функции, что я должен был бы сейчас реализовать в PHP, и то, что я собираюсь сделать, это идти вперед и делать это. Многие из вас использовать хэш-таблицу в PSET 5, так что позвольте мне пойти дальше и создать хэш-таблицы в PHP. Готово. Это дает мне хэш-таблицы. Ну, почему? Один из них, переменная называется $ таблицы, просто чтобы вызвать в воображении идею хэш-таблицы. Квадратные скобки, хотя, напомним, представляют собой что? Массиве, но в массивах PHP не должны быть числовыми индексами. Они также могут быть ассоциативными массивами, которая означает, что вы можете иметь произвольную ключей и значений. Многое, как в PSET 5, те из вас, кто это сделал хэш-таблицы реализаций Вы, вероятно, вставил слово, а затем вставить его в цепочку связанных списков, или вы сохранили значение истина где-то или что-то в этом роде. Вы почему-то вспомнил тот факт, что слово не было. На данный момент, это будет мой хэш-таблицы, И вот теперь идти о реализации функции контроля Мне просто нужно, чтобы заглянуть внутрь этого хэш-таблицы и посмотреть, если слово есть. То, что я собираюсь сделать, это я собираюсь говорить, если- скажем, Исеть, которая является PHP функция, которая буквально означает, набор ключей, так Исеть ($ таблицу [$ словом], и если да, вернуть истинный. Вот и все. Вот PSET 5 в PHP. Ну, справедливости ради, все в порядке. Остальное вернуться ложным, так что это не было. Что на самом деле происходит? Ну, если таблицы или хэш-таблицы здесь в более общем- представляет собой ассоциативный массив, что означает, что вы можете индексировать в него словом, как «слово», и вы должны вернуть некоторое значение. Мы вроде получаю один шаг впереди нас. Было бы отчасти хорошо, если бы мы на самом деле загружается файл первым, так что нагрузка не так просто, но позвольте мне идти вперед и на скорую руку  очень быстро осуществление нагрузки. Позвольте мне идти вперед и сказать словами получает файл словаря. Файл функцию в PHP открывает файл и возвращается к вам массив все слова в этом файле, просто передает их вам. Это была большая боль тоже, не так ли? Теперь по каждому элементу, это наша новая конструкция, Еогеасп ($ слова $ словом). Этот цикл будет начинаться итерации по массиву слов и присвоить переменной $ словом каждое слово в файле от первой до второй к третьей на четвертую все пути так что я не должен делать раздражающие [I] обозначения и тому подобное. И то, что я просто буду делать для каждого из этих слов будет хранить его в моей таблице индексации в таблице , а затем делать так, потому что вспомнить , что слово в моем словаре все, что мне действительно нужно сделать, это своего рода перевернуть немного, и говорят, что это слово в моей хеш-таблица есть, правда. И если его там нет, я не нужно явно положить ложными, в противном случае я бы положил ложно для всех возможных слов во Вселенной. Достаточно для меня просто установить значение индекса истинно, если слово на самом деле в моей хэш-таблицы. Теперь, я резка пару углов здесь, что я буду махать руками на данный момент, но теперь функция загрузки сделано. Я загружаю все слова из файла в массив. Я перебора массива, и для каждого слова в массиве Я подключить его к моей хеш-таблица с 1 строкой кода. Это весело. Вы знаете, как мы можем реализовать размера сейчас? Ну, размер всегда довольно легко, в справедливость. Здесь мы можем просто вернуть кол-во столом. Это довольно легко слишком, подсчитать количество вещей в таблице. Это на самом деле вид не самый эффективный. Я, вероятно, следует иметь переменную размера таким образом, мы можем сделать это В постоянном времени, но это довольно легко. Ох, и затем выгрузить, если мы действительно хотим быть анальный здесь мы можем сказать, что это, как вы выгрузить что-то. Вы просто установить величину, равную пустой массив, и он избавляется от всего, что было там. Не нужно звонить бесплатно. Опять же, я сократить некоторые углы, и я прошу прощения за присвоение проблема множества 5 возможно, в C, но если мы сейчас идти вперед и выполнить это, Я собираюсь на самом деле запустить версию, которую я написал заранее просто так, что я не делал никаких синтаксических ошибок вообще. Позвольте мне идти вперед и работать правописания. Использование то же самое. Вот файл словаря, который только содержит слово Foo. Вот это текстовый файл, который содержит только Foo Bar. Давайте проверки орфографии это, так правописания, используя этот файл словаря на этом текстовом файле. Там один слово с ошибкой, бар, и вуаля. Совершено с PSET 5. Давайте 5-минутный перерыв здесь, и мы вернемся и больше на PHP. Ладно, мы вернулись. Давайте делать-ненавидите меня на некоторое время. Давайте теперь на самом деле увидеть, если это не было положительного на самом деле реализации этой вещи в PHP. Конечно, это заняло 45 секунд, чтобы реализовать. Но давайте идти вперед теперь и запустить вещи. Позвольте мне идти вперед и запустить версию C из правописания, и мы будем запускать его на одном из крупнейших файлов, которая является Библии короля Джеймса. И вот в давайте войдем в нашу папку C, спеллер на короля Джеймса 5-го. Много слов с ошибками. Хорошо, так вот вывод, который вы, вероятно, получили даже если раз немного по-другому, Если вы получили все работает правильно, и так раз в общей сложности для проверки правописания Библии короля Джеймса был 0,38 секунды, так что очень хорошо с помощью этой реализации. Теперь позвольте мне перейти в версии PHP, которую мы только что написали. Позвольте мне выполнить правописания на короля Джеймса. Ой, игнорировать эту ошибку. Я в ту директорию. Speller на короля Джеймса 5-го. Почти готово. Хорошо, проницательный наблюдатель поймет, что был более чем на 3 секунды там. Это и есть истинное время работы. Оказывается, что это занимает время, чтобы плюнуть много текста из из-за буферизации вопросы, но короче говоря, , которая была 3,15 секунды машинного времени, процессорное время, против того, что было минуту назад? Как .3. Я имею в виду, это на порядок медленнее, так где это Смешно замедление приходит? Ну, как это было в случае с большинством любого дизайнерского решения мы сделали в классе за последние 9 недель там почти всегда это компромисс. Иногда только между пространством, иногда между пространством и временем, пространства, времени и усилий в области развития, да и здесь, хотя Мы сохранили огромное количество времени, может быть, потенциально 10-20-30 часов время разработки осуществлении проверки орфографии плетьми его всего за 45 секунд с этим языком Цена, которую мы заплатили то, что это на порядок медленнее, как следствие, и это, как правило, в случае с большинством любой интерпретируемый язык, PHP, Python, Ruby, Pearl или другие которой если вы собираетесь запустить его через переводчика, а он читал код строка за строкой, сверху вниз, слева направо, , что посредник собирается занять некоторое время свое, и что вы чувствовали себя здесь в 3 секунды, а не 0,3 секунды является тот факт, что это посредник, который имеет в буквальном смысле интерпретировать наш код строка за строкой, и не дай бог, если вы находитесь внутри цикла с огромным файл, содержащий сотни тысяч слов. Это накладные собирается добавить и сложить и добавить и сложить. Для такой инструмент, как это, что это, вероятно, не самый лучший язык, чтобы использовать для реализации проверка орфографии, если непосредственность представляет интерес для пользователей, и для вас. Но роскошь, которую мы имеем в данный момент является, если Вы использовать язык, как PHP или много интерпретируемых языков в контексте Web, если на то пошло, у вас есть выгода , что Интернет является намного медленнее, чем большинство компьютеров. У вас есть GHz CPU в компьютере, 2 ГГц, может быть, даже больше в эти дни. Но реальность такова, в интернете существует большое количество задержкой которой для браузера, чтобы поговорить с сервером, хотя мы видели на прошлой неделе , что довольно быстро, половину миллисекунды или так, , что тоже добавляет, и если вы скачиваете вещи, как изображение или фотографию Facebook или получение мгновенных сообщений через болтовню Facebook, Gchat и т.п., все это туда-обратно раз между браузером и сервером начала складывать, что делает ваш конкретный выбор языка во многих случаях Не все, что необходимо, так что вы отлично с помощью немного медленнее языке как PHP или Python или Ruby, но для которых есть огромные расквитаться с вами и вашими коллегами и ваши друзья, потому что вы можете реализовать все так, так намного быстрее. И более того, у вас гораздо меньше риск определенных недостатков в безопасности. Там нет указателей в PHP. Там нет сегментам неисправностей, которые можно легко вызвать таким же образом, вы могли бы в C. С C ты супер близко к оборудованию. С помощью PHP и аналогичных языков ты вроде высоком уровне, так сказать, с большим количеством оборону между вами и то, что происходит на самом деле внутри машины, и это всего лишь компромисс. Мы дошли до точки, имеющие эти более современные, языки высокого уровня как PHP, потому что из уроков, извлеченных в языках, как PHP на C. Но если вы не понимаете, что происходило на под капотом все это время Вы, конечно, не может принимать правильные решения, дизайн, и, конечно, когда дело доходит до работы на месте, как Facebook или Google или любое из этих мест, которые все чаще играют с большими наборами данных даже если вы вернуться назад и сделать СБУЭОБ и работают с некоторыми MD на некоторых больших наборов данных с участием пациентов и врачей и как с помощью правильных инструментов является чрезвычайно убедительным потому что в противном случае ваш анализ некоторых наборов данных может занять секунд, или он может буквально несколько часов. Это только один пример, чтобы не расстроить вас с тем, как приложить гораздо больше усилий это было в C, но, чтобы помочь вам понять, что когда вы реализовать что-то в C Вы действительно понимаете, ни в теории, на самом деле понимают как все, или должен работать, и у вас почти полный контроль за то, что происходит под капотом, и с этих языках более высокого уровня Вы должны отказаться от большего контроля к людям, которые их придумали и могут быть больше по проектным решениям, чем ваш. Но если мы считаем само собой разумеющимся, что производительность не столь важно на веб из-за этих других вопросов, только скорость сети немного медленнее, чем скорость процессоров в любом случае, так что мы можем сортировать позволить себе использовать немного медленнее языке если расквитаться мы может развиваться вещи в 10 раз быстрее или даже больше. Давайте посмотрим, как мы можем начать использовать это. Отпустите меня в папке Среди примеров сегодня называется frosh.ims, и это было на самом деле лично мотивированы тем, что самое первое, что Я написал для веб лет назад после того, CS50 и CS51 был сайт программы Frosh мгновенные сообщения, первокурсник очного спорта, который в то время это было достаточно лет назад, что в то время, не было никаких сайте программы, несмотря на то что Web, и вместо этого был сопровождающий в Wigglesworth согласно которому, если вы хотите зарегистрироваться для игры в волейбол или футбол, или как вы бы заполнить лист бумаги. Затем вы должны идти через двор. Вы бы тогда постучаться в их дверь и слайд в их дверь или руку сопровождающий лист бумаги с вашим именем на ней, действительно ли вы хотите быть капитаном команды, каким видом спорта вы хотели бы сделать, и что общежитии вы были дюйма Это был своего рода старой школы делать вещи, и это было простое возможность автоматизации многих этот процесс. Вы просто зайдите на веб-сайт. Вы набираете что-то дюйма Вы получите подтверждение по электронной почте, и стрелы, вы сделали. Это было самое первое, что я сделал, хотя и в языке под названием Pearl, но это относительно легко сделать в PHP, и это является своего рода представителем проблем вы можете приступить к решению, когда вы можете выразить себя программно и не должны полагаться на такие вещи, как сайты Google или Excel или инструменты, которые передали вам. Вы, ребята, теперь есть возможность сделать что-то вроде этого. Это супер уродливые версию форме, Но давайте просто использовать его для начала разговора которым это примерно то, что форма выглядела лет назад для нас чтобы люди в интернете, чтобы подписаться на Frosh Чат. Мы попросили имя, флажок ли они или не хотел быть капитаном, мужчины или женщины, и что тогда общежитии они были, и тогда они будут представлять эту форму. Давайте сначала посмотрим под капотом на HTML, который представляет эту веб-страницу. Отпустите меня в froshims0, и как в стороне, для PSET 7 Я принимая как должное каталоги и папки, которые я кладу вещи дюйма Мы будем идти Вы через именно там, где материал должен пойти в прибор, который мод команды вы должны работать, так что не волнуйтесь обо всех глупые подробности синхронизации С самого начала идти здесь. Ладно, вот froshims0.php. Позвольте мне прокрутить вниз, и, что любопытно здесь, это PHP файл, но то, что внутри него, ясно? Это целая много HTML, и, действительно, PHP, происхождение действительно были за то, Web-ориентированный язык. Минуту назад мы использовали его для реализации пива, например, условиях, например, привет пример, и это нормально. Вы можете использовать PHP в качестве скриптового языка где сценарий на самом деле просто номенклатуре уделяется быстрой и грязной программы или то, что вы пишете в сценарии или в более общем интерпретируемый язык. PHP это супер полезный для этого, потому что вы видели, как быстро Относительно мы можем нагнетать программ в PHP. Но это был действительно предназначен для использования в сети Интернет, и предназначена для веб-в том смысле, что заметил здесь в верхней части файла Я начинаются с