[Música tocando] COLUMNA 1: Este é CS50 e este é o fin de semana de sete. Hoxe é quizais onde nós realmente ensinando idiomas. Nós introducimos no último par de semanas HTML e CSS, ningunha das cales son linguaxes de programación. E, de feito, aínda non mirar para case todas as etiquetas que vén con HTML e case todos das propiedades CSS que vén con, iso é medio-lo para HTML e CSS. Nós imos só xeralmente comezar a asumir que comprender as ideas xerais de etiquetas e atributos, e sendo enviado páxinas do cliente ao servidor. Porque hoxe comezamos a mirar para outra linguaxe de programación, PHP. Nós imos facelo super rápido. Non estamos indo para ensinar-lle PHP per se, moi como non aspirar a ensinar-lle C, por si só, pero en vez de programación. E, de feito, un dos obxectivos para este curso non é para ensinar-lle C, ou HTML ou CSS, ou PHP, ou calquera número de outros palabras de zumbido ou siglas, mais si a ciencia da computación e como programar fundamentalmente. E, de feito, hoxe comezan a tomar aquelas rodinhas todo o aínda por voar a través dunha linguaxe PHP chamada, como segue. Aquí está o que esta linguaxe parece. Acontece que non hai necesidade de unha función principal nun programa escrito nunha linguaxe chamada PHP. De xeito que xa soa un pouco máis simple de C, coa que estamos familiarizados. Acontece que se quere declarar unha variable, facelo de forma case idéntica a C. Pero hai claramente unha diferenza aquí cando declarar unha cadea, ou que dúas diferenzas. O que parece diferente? Audiencia: O sinal de dólar. COLUMNA 1: Si, hai dólar asinar, que nunca vimos antes. E o que falta? Si? Audiencia: [inaudível] COLUMNA 1: Si, non hai ningún tipo de datos. Así, verifícase que o PHP é o que nós chamar unha linguaxe feblemente tipada, onde C está fortemente tipado. Vagamente ingresaran só significa que existen diferentes tipos de datos, hai secuencias de caracteres e ints e carrozas. Pero as cifras de ordenadores iso. Vostede o programador humano Non ten que descubrir iso. Entón todo o que tes que facer para declarar unha variable é sinal de dólar, o nome da súa variable e, a continuación, por exemplo, entre comiñas, Ola mundo. Ben, iso é o que un condición parece en PHP. Calquera diferenzas? Non. Entón non é que estes son idénticos. E pode que menos sucursais ou máis ramas, pero as voltas de sintaxe exactamente o mesmo. Expresións booleana pode ser encomendados xuntos. As expresións booleanas pode ser anded xuntos. Aínda ten switches. Mesmo se non ten usado Destes, estes existen en C e son funcionalmente equivalente en PHP. E, de feito, están en PHP un pouco máis forte. En C, só se pode comparar seguro tipos de datos como enteiros e caracteres, Tendo en conta que, en PHP realmente pode comparar cordas pleno desenvolvemento, sen ter de preocuparse dos punteiros e semellantes. Entón aquí está un loop. Este é só pseudocódigo código, se quere. Pero é estruturalmente o mesmo que o C. Aquí está o loop while, un pseudocódigo therefore-- idéntico ao C. Aquí está un tumulto mentres loop-- idénticos. E así hai un tipo de este estándar polo que aquí hai algúns outros sintáctica recursos que estamos realmente indo para ver. De feito, aquí é un bo PHP en forma segundo a cal, se quere facer unha iteración sobre unha matriz, e non queren ir a través do marcos mentais e sintácticas de int i é igual a 0, i menos que n, i, máis que plus-- é só unha morea de sintaxe irritante. Pode falar un pouco máis de forma fluída para cada un números como número, onde neste caso Números do sinal de dólar, eu estou supondo, é como unha matriz de números chamados. E entón eu estou supondo que o número, singular, vai ser unha variable. E PHP vai facer por min como eu facer unha iteración ao longo deste ciclo é, en cada iteración, vai actualizar o número da variable para ser o i-ésimo elemento en números, plural. El só trata sobre todo isto para min. Non hai corchetes, non sinal de dólar, non hai punto e coma. É só un pouco máis simple. Ben, se quere un array, verifícase que vostede pode facer algo moi semellante ao C. A sintaxe é un pouco diferente. Pero aquí está unha matriz chamada dólar asinado números. E eu uso, en PHP, praza soportes, ao parecer. E nós estamos indo a ver estes novo en JavaScript-- aínda outro idioma. Só usar a notación de corchete ter unha lista separada por comas de enteiros, neste caso. Pero que me dá unha matriz. Pero aínda máis poderoso en PHP, temos tamén o que son, en xeral chamado matrices asociativas. E unha morea de linguas ten estes tamén. A cousa sobre matrices C é que os índices para unha matriz, a cousa que usar corchetes, a través do cal acceder elementos, debe ser o que? Audiencia: [inaudível] COLUMNA 1: Eles teñen que ser números ou enteiros, especialmente de cero enriba. Ben, en PHP, e, ao parecer a fóra, noutros idiomas, pode comezar a ter índices que non son numéricos. Pero son realmente palabras ou frases, de xeito que, en vez de tente lembrar onde algo é, é almacenado nunha variable i, realmente pode usar unha palabra e dicir isso-- pode dicir unha palabra como esta. Entón Cita sinal de dólar é a nome dunha variable aquí. Este é un pouco descolados sintaxe iso é asociar dous valor de clave pares para esa variable. En concreto, iso está me dando unha matriz que é de lonxitude 2. Pero os índices non son 0 e 1. Os índices están entre comiñas símbolo e cotización de prezo pecha comiñas. E os valores destes índices, respectivamente, é FB en Facebook e $ 79,53, cando durar Comprobarase un prezo por iso. Que significa iso? Ben, iso significa que en vez de escribir código como este, onde eu adoitaba facer algo como dólar sign-- ou mellor, en C Non tería sequera un sinal de dólar. Quere facer algo como citas e, a continuación, Eu faría soporte i para chegar nalgún arbitrariamente numericamente valor indexado. A partir de hoxe en PHP, se quere obter algún valor, que tipo de ter máis expresividade semántica. Só un xeito elegante de dicir que podemos só chamar as cousas o que son. E se queres comezar en algo símbolo, agora literalmente facer citar símbolo unquote entre corchetes en vez de un mero número. Polo tanto, é unha conveniencia agradable. E iso é unha especie de todo por agora. Hai acios de outros recursos no PHP. E, de feito, PHP vén con a pía da cociña proverbial. Decenas, centos de funcións veñen con PHP-- tantos máis que veu con C. E que non se destina a oprimir, senón axuda- entender que non xa non teñen que escribir código que é unha especie de aquí conceptualmente. Agora, podemos comezar a aproveitar de moito máis avanzados recursos que linguaxes como PHP ten. Polo tanto, non se preocupe mover as cousas na memoria. Non temos que preocuparse malloc e todos estes nivel inferior, detalles poderosas que loitará con, se non loitar con, pset5, pero pode comezar a logo tomar para concedida. De feito, imos escribir un super- programa sinxelo en PHP, deste xeito. Eu estou indo a ir cabeza CS50 IDE aquí, e que eu vou facer é crear un novo ficheiro, que moi simplemente será chamado Hello dot PHP. Entón, en vez de punto c, é será chamado punto PHP. E entón neste ficheiro, Podo comezar a escribir. Pero resulta que o unha cousa que eu teño que saber é que calquera arquivo PHP en xeral, ten comezar por unha sintaxe especial. Similares en espírito á HTML, pero, de novo, PHP é unha linguaxe de programación, non unha linguaxe de reserva. Así, cada ficheiro, e é unha especie mirar estúpido eu admite. Abrir soporte, punto de interrogación, PHP. E iso é só o forma de linguaxe de dicir: hey, ordenador vén aquí algún código escrito nunha linguaxe chamada PHP. E entón, ao final do seu arquivo, fai o tipo de especie de oposto. Non escribe PHP novo, só facer punto de interrogación, soporte de ángulo. E entón calquera cousa que poñer dentro destas dúas marcas, por así dicir, será, ou debería ser, o código PHP. Entón, imos facer algo super sinxelo. Eu estou indo a ir adiante e facer impresión def, Ola mundo, barra invertida n, gardar. E agora a miña liña, eu vou facer, facer hello-- non, eu vou facer, dot cortar Ola. Non, barra punto, hm. Entón, algo é diferente. E, de feito, esta é unha diferenza fundamental entre PHP e linguaxes como C C. foi unha chamada linguaxe compilada. O que isto supón para C para ser compilado? Cal foi a implicación? Si. Audiencia: Escribiu o en código máquina para que puidese ser executado polo ordenador. COLUMNA 1: Exactamente. Temos que primeiro convertela en chamada de código de máquina, ceros e uns, antes que vai realmente ser executable e comprendido polo ordenador. Intel por dentro. Pola CPU no interior do ordenador. PHP, pola contra, é o que se chama unha linguaxe interpretada, que significa que non recompila-lo en ceros e uns, código de máquina, ti, en vez deixalo como código fonte. E ti, en vez pasalo como entrada para un programa, un intérprete que outra persoa escribiu anos, que o entende liña por liña, carácter para o personaxe. Así, noutras palabras, o ser humano por aí, escribiu un programa que vai mirar no seu código liña por liña, e descubrir o que o ordenador debe facer, sen convertelo lo directamente a ceros e uns. Entón, se ve un loop for, este chamado intérprete será como, todo ben, eu debería facer algo de novo e de novo e de novo. Qué debería facer? Déixeme ver a seguinte liña. Déixeme ver a seguinte liña. E realmente interpreta liña a liña. Entón, para executa-lo, eu non uso maquillaxe. Eu non uso barra dot neste caso. I en vez de PHP, que é o nome dun programa, a.k.a. Un intérprete, que é preinstalado en CS50 IDE, e agora eu teño pasar un argumento da liña de comandos, que é simplemente o nome do arquivo que quero interpretar. Ou máis casual, que quero correr. E se eu prema Intro, non temos. Hola Mundo. Agora resulta que eu def impresión usado deliberadamente para nós ponte de C para PHP. A maioría dos programadores PHP, como vai ver, non se molestas mesmo usando print def. Eles só usar unha función chamada impresión, que C non ten. E por iso, se eu executa-lo de novo agora, realmente compórtase se funcionalmente ao mesmo. Non podo usar a porcentaxe s e i por cento e así por diante, pero hai outras formas en PHP de facelo. Pero esta é só a dicir que sintaticamente, excepto algunhas cousas estrañas up superior, e algúns caracteres estraños abaixo no fondo, os conceptos de agora programación nesta outra lingua van ser exactamente o mesmo. De feito, imos facer outro exemplo. Entón, eu estou indo a ir adiante e pecha este ficheiro. Déixeme crear outro que Vou chamar condicións 1 punto PHP. Polo tanto, non cero, xa que o que eu fixen era eu olhei para tras, hai unhas semanas, tivemos un ficheiro chamado condicións de 1 punto C. E o que Que fixen foi converteuse o na miña cabeza, e, aquí no papel, e logo o curso de web, liña por liña en PHP. Así, na versión C, fixemos algo como cadea s recibe obter cadea. Polo tanto, é un pouco diferente facelo en PHP. Pola contra, eu só vou para facer, ou mellor, I podería facer int n recibe chegar int, neste exemplo anterior. Entón, en vez diso, eu vou facer n obtén liña de ler, gustaríame un número enteiro, por favor. Polo tanto, esta é só a miña indicación. E así se ve, e Eu só sei que isto de ler ou ver a función antes, as liñas de función en PHP ler leva un argumento que é un símbolo para o ser humano, eo seu propósito na vida é ler unha liña de texto que el ou ela en tipos. E despois que almacena texto para a variable n. E agora eu podería querer facer algo como eu fixen semanas en coma semana un da clase. Se n é maior que cero, entón, eu vou para prestar sintaxe que acabamos de ver, print def, escolleu un número positivo, n barra invertida. Else if n é igual a cero, eu son indo a ir adiante e dicir: print def, colleu de cero barra invertida n. Senón, o caso debe por suposto ser, print def, escolleu un número negativo. E certamente podemos aplicar a lóxica desa cousa en unha morea de diferentes formas, pero o punto aquí é que sintacticamente, case nada é novo. É só o sinal de dólar e unha nova función e liña de ler. Pero, fundamentalmente, o que hai de novo Agora é que eu estou interpretando isto. Estou pasando como entrada a outro programa. Entón, se eu queira realizar isto, se Non cometer erros, Eu estou indo a executar PHP, de 1 punto condicións PHP, entrar, Eu estou indo a escribir o número 50, e imos asumir por agora funciona. Xa que a lóxica é a mesmo material que unha semana. Todo ben, entón iso é moi underwhelming, non? Poderíamos facelo en calquera número de linguas. Imos facer algo moito máis poderoso. Imos problema acabado definir cinco. Entón, eu estou indo a ir adiante e facelo. Eu estou indo a crear un arquivo chamado dicionario dot PHP e inclinado como pode ser scramble abaixo lotes de notas, as notas só axuda- se está permitido para aplicar problemas definir cinco en PHP. Pero imos ver como rápido agora pode aplicar ese mesmo conxunto de problemas. Entón no dicionario dot PHP, eu vou asumir que xa existe un arquivo no mundo chamado ortográfico. E, de feito, eu fixen iso con antelación, e non imos andar por esta liña por liña, pero se está Curioso quere máis tarde e realmente para involucrar súa mente en torno ao diferenzas entre C e PHP, literalmente comparar o ficheiro, Speller, desde o código fonte de hoxe que vou publicar máis tarde hoxe, contra p set cinco ortográfico punto c que nós dámoslle, e é case a mesma liña por liña. Hai algúns cifrões. Algunhas funcións un pouco diferente. Pero é unha boa forma de sorte de ver como traducir dunha lingua a outra. E é case idéntico liña para liña. Pero eu vou asumir que esta existe, eo que eu vou facer aquí é tentar explotar o seu mente por reimplementar a totalidade do problema axustou cinco xeito máis rápido que fixo ata agora. Así, por exemplo, eu vou primeiro declarar unha variable global chamada size, e configurar-lo igual a cero. Agora iso non é moita economía. As probabilidades son que aplicou tamaño practicamente o mesmo, ou información información, vai esta noite ou mañá, só usando unha variable global chamada tamaño, e define-la igual a cero. Isto non é un particularmente Spoiler incrible. Entón, cales foron os seus datos estruturas de elección, aqueles de vostedes que mergullaron en e ler a especificación, estruturas de datos que ter a maioría de vostedes teñen benvida a utilizar? Unha táboa ou intentar, quizais algunhas variantes. Así, a posta en marcha dunha táboa hash, polo menos, é unha especie de unha morea de liñas de código, non? E non todos poden ser funcional neste momento a semana, pero iso é bo. Porque en PHP, se eu Queres unha táboa hash, feito. Non? Entón, esa variable que eu teño só declarado é, obviamente, chamada táboa sinal de dólar, por introdución antes. Pero realmente só quero, polo ao final do día, unha matriz. Pero non un indexado numericamente array, porque iso é como dúas semanas material, cando falamos de matrices. Quero unha táboa hash. Pero unha táboa hash é realmente só unha forma concreta de dicir: quere unha matriz asociativa. Quere ser capaz de claves asociadas con valores. Chaves con valores. ¿Que é un dicionario, realmente? Ben, é unha morea de claves. Palabras como mazá, pera e plátano, e todas estas palabras inglesas que entregar-lle. E os valores que está efectivamente introducir no seu dicionario ou son certas, ou a ausencia, false. Noutras palabras, está introducindo unha morea de pares de valores clave, mazá, verdade, pera, verdadeira, bananas, é verdade. De xeito que cando recuperar ou ollar Se os datos na súa táboa hash coa súa función de comprobación, que é quere recibir de volta unha resposta, si, eu atope no meu complexo hash de táboa, ou non, non está alí, así que voltar falso. Entón, para facelo, todo o que eu teño é o de datos estrutura como propuxen antes. Eu só teño poder asociar palabras como, entre comiñas, símbolo, cun valor como, é verdade. Polo tanto, hai a miña táboa de hash. Imos realmente usalo. Polo tanto, hai algunhas funcións Necesito aplicar. Eu estou indo a ir adiante e morder fóra dun tamaño función chamada. Non ten argumentos. Non ten que preocuparse a palabra, baleiro, en PHP. Vou simplemente para volver tamaño. E como un aparte, PHP ten este detalle minorly irritante, onde se algo é global, ten que dicir a función en que está a usar que, hey, esa é unha variable global. Entón, menor estupidez, pero ten que facelo, con todo. Así que sobre carga? Eu estou indo a aplicar unha carga función chamada que leva, en nome dun dicionario, así como no problema axustou cinco. E antes de seguir, notar que eu non teño foi bastante escribindo as mesmas cousas. ¿Que é obviamente diferente en PHP sobre como declarar unha función contra C? Si. Audiencia: [inaudível] COLUMNA 1: Ningún tipo de retorno. E, de feito, este é o caso, PHP na medida en que está vagamente ingresaran, Tamén é un pouco desleixado nese sentido. Non especifica como o programador o que esta función devolve. Vostede tería que realmente ollar no código para descubrir iso. Ou ler os comentarios ou a documentación. Entón pros e contras de este tipo de decisións. Pero eu teño que dicir a palabra clave, a función. E cando aprendemos JavaScript nalgunhas semanas imos ver o mesmo de novo, pero é a mesma idea. O nome da función, o seu argumento ou argumentos ou a falta dela, e agora aquí é a posta en marcha. Entón eu vou cortar algúns cantos só para ser dramático por só un momento. Pero eu estou indo a ir adiante e dicir iso. Isto é como eu pode cargar un arquivo nun array. Hai unha función en PHP chamado arquivo. Vostede entrega-lo nome dun ficheiro. El entrégalle de volta unha matriz, dentro de que é cada liña do ficheiro. Desde cero, un, como máximo an menos 1 liñas. É iso aí, non? Non hai ningunha f lectura. Non hai ningunha f get s. Non hai por cento s. Non hai dores de cabeza. Non hai ningunha feof. Todo este material co que foi loitar quizais con p definir catro e cinco, vai. Entón, eu só ler estas liñas en o ficheiro e, a continuación, vostede sabe o que? Se quero iterado a estas palabras, Podo facer, para cada un liñas como liña. Lembre que esta era unha especie de intelixente camiño de iteración sobre unha matriz, índice polo índice, e en cada chamada iteración a liña actual, liña sinal de dólar. E aquí estou indo a ir e dicir táboa, soporte, liña, queda certo. Noutras palabras, é así que eu introducir na miña táboa hash en PHP. Digo táboa sinal de dólar, o que é a miña matriz asociativa que foi baleiro por a liña de código enriba. Entón eu índice para el non, utilizando un número, pero utilizando o literalmente palabra clave que me interesa. Quizais sexa a mazá ou pera ou bananas ou calquera outra cousa, pero especialmente Estou indexación para el coma se proposto anteriormente. Eu tomo o nome do meu matriz asociativa, e entón eu usar entre comiñas no corchetes cunha corda, en vez de un número real. E entón é iso. A función de carga está feito. Xa que loop for, eu coloque todo na táboa de hash. Agora pequeno aviso legal, hai unha algunhas cousas que eu non necesitan de corrección. E a versión Vou publicar en liña terá todos os matices, pero é na maior parte só será algunha comprobación de erros e algúns pequenos axustes. Pero iso é de feito a esencia do mesmo. Se eu agora quero aplicar a función chamada comprobar, que espera un palabra como seu argumento, como eu podería ir sobre como facelo? Ben, eu estou indo simplemente para dicir que, se dentro da miña mesa, a palabra de localización, Se está definido. Así, se hai é-- de feito, xa sabe o que? Vou facelo en un pouco de pseudocódigo. Pero a idea é a mesma. Se iso é igual a true, retorna true. Todo ben. Else-- podes tipo de ver onde este é going-- para voltar falso. Feito. Comprobación é feita. Pretty nice, non? E entón o que é iso realmente chegar? E iso tamén, eu cortar algúns cantos. Olhe a versión en liña para todas as lixeiras diferenzas. Pero esa é a esencia do mesmo. Índice no seu matriz asociativa, a.k.a. Táboa hash, ver se hai un valor alí, se se define como verdadeiro, e se é así, return true. Entón, nós temos reducidos toda a complexidade. Así, tipo de vento da mente, non? Non vou molestar remata-lo con descarga, porque en fact-- Oh, vostede sabe o que? Si, imos remata-lo con descarga. Descargar nunha táboa hash pode parecer como función de descarga, o retorno. OK así que é de descarga. Porque non hai nada para descargar, non? Non hai ningunha malloc. Non explicitamente pedir ao sistema operativo para calquera cousa. Eu só comecei a usar variables. E así que tamén é unha manifestación de características de linguaxes de alto nivel. Entón, de novo, a maior parte dese prazo temos lidado aquí con C. Super baixo nivel. Podes ver a memoria do ordenador. Pode tocar en calquera cousa que tanto na memoria RAM do seu ordenador, para mellor ou para peor. Ata aquí, imos a dar-se ese poder. Pero, meu Deus, mira como moito menos código que escribín. En realidade, se eu non estaba a falar e falando sobre a miña escritura, que sería feito con Neste exemplo hai cinco minutos. Entón o que é o prezo a ser pago? Ben, imos dar un ollo. Imos dar un ollo. Eu estou indo a ir adiante e executar CS50. Deixe-me ir primeiro en exemplos de hoxe onde Eu teño o directorio textos como antes. Eu estou indo a executar a solución que ven con problema axustou cinco chamado Speller, que está na conta de CS50. E eu estou indo a executa-lo en algo grande como a Biblia King James, só para que poidamos realmente poñer o solucións do persoal para a proba. Agora, ás veces, a Internet é un pouco máis lento, un pouco máis rápido, Pode levar un pouco para cambiar. Pero levou un total de .56 segundos corrixir a ortografía da King James Biblia usando a solución de equipo. Entón, moi bo. O seu pode ser moito máis lento, e iso é totalmente bo. Pero é correcto aquí. Entón esta é a solución equipo. Se eu entrar e limpar a versión de PHP. E eu vou facer algo como fermento espectáculo cousa. Nós imos incorporarse o código que escribín antes, polo que é perfectamente correcta. Porque o código que escribín non vai para ser perfectamente correcto só agora. Pero se eu executar a versión do PHP, o que eu teño que desistir de hoxe? Levei cinco minutos para aplicar p axustou cinco, eu afirmo. Cara a un prezo que eu pago? Si. Audiencia: Speed. COLUMNA 1: Speed. Que queres dicir? Audiencia: Vai levar máis tempo. COLUMNA 1: Todo ben. Vexamos. Vai levar máis tempo, non escribir, pero para executalo. Si. Entón, imos tentar iso. Entón aquí eu estou indo a ir adiante e facer PHP do Speller, e porque o ficheiro de chamado ortográfico. Entón eu non estou correndo o dicionario, recall, Estou executando o programa chamado ortográfico. Vou pasar na mesma arquivo, King James o quinto. Está voando. Este podería ser só velocidade a Internet, polo que non ler moito para iso. Pero se sente máis seguro. 1,26 segundos. Agora que aínda é moi maldito rápido, non? E a única razón que me sentín como máis como tres ou catro, ou cinco segundo, iso é só porque Internet estaba sendo lento. O tempo de ordenador pasado foi de 1,26 segundo, contra Creo 0,56. Así, máis de dúas veces máis lenta. Agora que aínda é moi danado rápido, pero é unha manifestación de feito, ese prezo exacto. Porque estamos interpretando no código liña por liña, e este programa PHP é ler o meu top código para abaixo, de esquerda a dereita, ten que facer máis do pensamento. Ten que tipo de converter Lo dentro da propia correspondente á máquina código en tempo real, por así dicir, aínda que os mecanismos son un pouco diferentes. No canto de só para alimentar o Intel CPU os ceros e uns materias que entende nativamente. Entón, absolutamente, mans para abaixo, pagamos un prezo. E código escrito nunha linguaxe como PHP tende a ser máis lento. Pero o meu deus. Entón agora cando deletrear comprobar o meu arquivo, eu gastar un extra de 0,7 ou ben segundos vs 20 horas para aplicar un corrector ortográfico máis rápido, non? É unha especie de un trade-off. E se está só comezando p definir cinco, pode non ser de 20 horas. Pode ser moito menos do que iso. Pero é un trade-off, de verdade. E se está executando o código realmente grande conxuntos de datos, ou mesmo en hardware máis antigo, estes tipos de diferenzas certamente pode sumar. Calquera preguntas ata agora? Si. Audiencia: [inaudível] COLUMNA 1: Sentímolo, pode vostede dicir iso unha vez? Audiencia: [inaudível] COLUMNA 1: Está dando-se tempo. Ben, entón si. Está a aforrar tempo, non ter que recompila-lo, se é iso que está preguntando. E, de feito, en CS50, a maioría dos programas, aínda que leve un pouco para escribir, son relativamente curto. Algunhas decenas, centos de liñas de código, e así eles compilar moi rapidamente. Pero cando comeza escribir programas grandes, como se é Microsoft ou se está Google e escribir realmente grandes programas en C, é C ++ ou similar compilado linguas, podería levar moitos segundos, ou mesmo minutos ou máis para compilar millóns de liñas de código. E hai tamén, que diferenza vai sumar. E, de feito, xa que hoxe transición, mesmo día hoxe, para programación web utilizando PHP, é indo atopalo só tanto máis agradable para escribir código cando non ten que facer estes estúpidos medidas como o cambio ao seu terminal fiestra, tipo de make Ola, re executalo, recargar a fiestra. Só tantos estúpido pasos que mecánicos só estar no camiño de facer o interesante, o traballo divertido. E, de feito nós xogar iso fóra con PHP. E podemos interactuar con máis rapidamente. Si. Audiencia: [inaudível] COLUMNA 1: Por suposto. Podo aclarar o que significa ser interpretado? Cando compilar unha linguaxe como C, que vai para abaixo como dixemos á máquina código, ceros e uns. E Intel decidiu anos, que certos patróns de ceros e uns representan diso, ou resta, ou impresión, ou outras operacións básicas. No mundo dunha linguaxe interpretada como PHP ou JavaScript, ou Python, ou Ruby, ou acios de outros, en vez alguén escribiu un interpreter-- neste caso É tamén chamado de PHP, o mesmo que o Nome do language-- que, esencialmente, ten un gran lazo nel que itera ao longo de todas as liñas de código que alimento-lo como entrada, como Ola dot PHP, ou dicionario dot PHP. E entón pode pensar na súa gran lazo como tendo unha serie de condicións. E esas condicións dicir, se o humano escribiu a palabra chave para, comezar a facer o seu código de novo e de novo. Ou se o humano ten escrito a liña de código, se, só a realizar a súa seguinte liña condicional. Entón, é realmente como interpretar nun sentido humano, liña por liña, e que só leva tempo. Leva sobrecarga. E o que é un preço-- boa question-- pagamos. Entón imos facer outra demo iso é un pouco máis dramático. Hai, eu diría, un estadio isto en 90% de probabilidade de fallar horrible, pero vai sorprender cun 10% de probabilidade. Así, cada ano nós tratamos para facelo, polo cal tentar escribir un programa que pasa por conxunto de problemas cero, para as que ten presentados os números de teléfono e un chea de outras informacións demográficas, e nós programaticamente enviarlle unha mensaxe de texto. E entón o teléfono de todos comeza a apitar ou vibrando, e é só sorprendente, porque ben, ollar para o que os ordenadores poden facer. Isto raramente funciona correctamente ao parecer, en gran parte, porque eu normalmente estar na lista negra polo Gmail ou algún outro servizo para realmente intentando facelo a escala. Pero divertido é tamén, sempre que Non temos todos aquí hoxe, diversión feito a última vez que o tempo tente iso hai dous anos, Eu creo que eu escribín un programa que se sentou nunha iteración de loop sobre todos os alumnos da clase, e cada un deles unha mensaxe de texto, e el dixo algo así como: por que non está na aula? Amor, CS50 bot. Non ten idea de cantos se desculparam e correos electrónicos especie de Dolores Recibín como resposta do n menos 100 persoas que non estaban aquí ese día. E aínda máis divertido, máis vergonzoso story-- vostede sabe, imos poñelas aí. É xa en vídeo de hai uns anos. Así, en breve vai verme escribir un loop for, en que é moi fácil escribir un erro que para circuíto, de tal xeito que por primeira vez a través do lazo, vostede enviar unha mensaxe de texto. A segunda vez a través do lazo I debería enviar unha mensaxe de texto, e, a continuación, máis un texto mensaxe, e un máis. Pero resulta que se comete un erro de dixitación Durante a programación, ás veces pode escribir programas que envían un mensaxe de texto, a continuación, dúas mensaxes de texto, a continuación, tres mensaxes de texto para todos que xa recibiu unha mensaxe de texto. E como vostede sabe, facer algo, algo, algo máis, algo, é grande o dun lote de mensaxes de texto, ou n ao cadrado, ou $ 0,10 nunha mensaxe de texto, US $ 20.000. Afortunadamente eu prema Control-C antes que aconteceu, pero eu teño que polo menos un dos seus antecesores $ 20 para o 200 algunhas mensaxes de texto estrañas que, non só foi para o seu teléfono, pero tamén era como un teléfono flip maior por iso quere empurrado para fóra do seu memoria calquera outro texto persoal mensaxe que tiña realmente chegar. Polo tanto, temos un obxectivo hoxe, para non facelo. Quizais activar o modo avión. Todo ben. Entón, imos entrar nun aquí callled-- programa que chamarei texto dot PHP. E con antelación, eu teño dous ficheiros aquí. Eu fixen un ficheiro a só persoal, que ten toda a información do persoal, todos os nomes na páxina web do curso. E entón por agora eu só poñer algúns números falsos 555-1212. Así, estes non sería realmente ir a calquera lugar. Pero teña en conta o interior deste arquivo CSV, que falamos brevemente antes no contexto ficheiro IO. ¿Que é un ficheiro CSV? Separados por comas variables. E iso é como unha especie de moi base de datos leve, se quere. Hai unha especie de tipo de catro columnas neste ficheiro, e non irregular, pero esencialmente as comas representan columnas no arquivo. A primeira columna é o TF ou o nome do CA. A segunda columna é o seu apelido. Terceira columna é o seu número de teléfono. E cuarta columna aparentemente é-- cuarta columna é, ao parecer, o que? OK, polo que é seu portador. Entón, Verizon, ou Sprint, ou que non. E se eu misspoke anteriormente, CSV. Valores separados por comas CSV é aquí. Entón, o que podo facer iso? Ben, este é só un arquivo de texto grande, e é unha especie de moito tempo, non? Como é que isto vai ser medio aburrido. E verifícase que, porén, que, se eu quere enviar unha mensaxe de texto para, imos Alex dicir aquí. Déixeme entrar no meu navegador e saír do modo de pantalla completa só así podo cambiar. Acontece, veremos si eu entrar aquí, e facer sesión no Gmail, todo ben. Non mire para esta parte. Así comezo a ver. está claro que o livestream pode aínda ver o que estou facendo. Todo ben. Entón aquí é só con Gmail O relato de John Harvard. Entón, se eu queira enviar unha mensaxe de texto para Alex, Podo, claro compoñer unha mensaxe. E ao parecer, e eu teño proba con Alex antes aquí, para que poida engadir un certo dominio nomear aos números de teléfono das persoas, porque non existe no mundo cousas chamado de SMS para enviar correo-e pasarelas. Que é un xeito elegante de dicir todo de nós que teñen teléfonos móbiles que teñen números de teléfono, por suposto, hai probablemente para a súa operadora, un sufixo como en certa Vtext.com para Verizon mensaxe de texto dot com, que pode engadir ao seu número de teléfono persoal propio, e, a continuación, vostede ou amigos, ou os seus pais poden texto que naquel enderezo particular. E Verizon ten un servidor, un correo-e servidor, que ao recibir este correo-e, mira para a parte de número e logo usa calquera maxia especial industria teñen que realmente envialo fóra sobre as ondas de radio para o seu teléfono móbil particular teléfono. Agora, iso é bo porque eu non fago realmente sabe como enviar unha mensaxe de texto ou escribir código aínda para o meu teléfono móbil, e pode facer exactamente isto para un proxecto final, pero de momento todo Eu teño é o meu portátil aquí. Entón, quero iterado que CSV arquivo, liña, por liña, por liña, por liña, coller cada un dos números de teléfono do persoal, e seu operador e programaticamente, concatenar, é dicir, conectar o teléfono número co nome de dominio axeitado e, a continuación, enviar un correo-e. Entón, iso é unha chea de pasos. E boa sorte de facelo en C. É un pesadelo dunha situación para abrir un ficheiro, lelo liña, por liña, por liña, como están a ver, ou pode ver en breve con xogo de problemas cinco, se non problema establecer catro, e logo para concatenar dinamicamente dúas cordas xuntos, porque en C, tomando dúas cordas e combina-los, o que fai minimamente cómpre facer máis probable? Debe declarar máis memoria, non? E preguntar, malloc, podo ter máis memoria? Polo tanto, podo poñer a metade deste aquí, a metade deste aquí. É só tantos pasos. E por ese punto que perdeu interese na pequena demostración estúpida onde fai teléfono Campá de todos. Imos facer este tipo de PHP estilo, polo cal só comezar a usar máis que pía da cociña. E as ideas son fundamentalmente o mesmo, pero nós non temos que preocupar-se moi moito sobre ese nivel inferior. Entón imos ver como eu podería vai facer sobre iso. E só así que eu non fago repetir os erros do pasado, Escribín algunhas notas para min aquí. E imos ver se consigo Camiñemos a través dalgunhas das etapas fundamentais, e, a continuación, por mor do tempo imos pode que algúns cantos cortados ao final. Eu estou indo a ir adiante e facer aberto soporte de PHP para comezar este ficheiro. E eu estou indo a ir adiante e facelo. Identificador de ficheiro, como vai en breve, en realidade, chama unha función chamada f aberto. E recorda se isto abre un arquivo. E a cita, pecha comiñas, r significa que, unha vez máis? Basta abrilo para lectura. Agora en p conxunto para, fixo iso. E tratar podería ser calquera cousa, fu, bar, bas, calquera nome de variable. Pero, xeralmente, un ordenador científico chamaría un ficheiro aberto, dándolle un identificador de ficheiro, algo para coller por así dicir. Eu só vou facer algúns verificación de erros. Polo tanto, se o identificador é falsa, así como no C, eu vou facer algo así como: non puido abrir o ficheiro, barra invertida n. E entón eu só vou para ir adiante e saír. E verifícase, en PHP, Non estou dentro dunha función. Non hai ningunha función principal aquí. Entón eu non volver, per se. Eu saír. Que é esencialmente o mesmo. E eu estou saíndo cun y probablemente. Unha significa só un erro de calquera tipo. É distinto de cero, polo que é un erro. Todo ben, entón se eu estou aquí agora no meu programa abrir o ficheiro. Eu estou indo a ir adiante e declarar unha matriz denominada enderezos, e en C Eu tería que saber o tamaño da matriz de antelación, non? Ou eu tería que declarar esta é un punteiro, e despois usar malloc. E, a continuación, cada vez que leo mediante outra liña no arquivo, Estou indo a necesidade de malloc máis memoria, malloc máis memoria. Isto é unha dor no pescozo. E, por sorte, PHP e Ruby, e Python e JavaScript, que vai medrar súas matrices para ti automaticamente. Non máis malloc. Non hai máis a xestión de memoria. O ordenador coida diso. Pero o prezo que paga. É un pouco máis lento. E para un programa como este nós non imos notar. Nós imos enviar 100 mensaxes de texto. Por exemplo, non vai sentir iso. É realmente só comeza a importa lingua da súa elección cando os seus datos ou dos seus programas obter moito considerable, como será o caso, de xeito máis co noso material baseado na web. Pero, por agora, imos seguir adiante. Mentres botan hai unha función en C chamada f obter CSV. Arquivo obter CSV, que leva un identificador de ficheiro como argumento, e el pasa, a continuación, liña por liña, por liña, para ler nunha fileira. El só le unha liña de texto do ficheiro. Pero o que é agradable sobre esta función, non só entregar-me unha liña de texto. Procura por esas vírgulas e analiza a liña. E para analizar a liña significa dividir que en determinados valores neste contexto. Noutras palabras, o sinal de dólar liña é unha variable que é me vai dar unha morea de índices. Este será o primeira columna na miña CSV. Este será o segundo columna, este vai ser o terceiro, e este será o cuarto. Porque recall, e non o Excel cooperar a última vez que fixen iso, pero se eu baixar equipo dot CSV. Uups, non renomear. Se eu baixar equipo dot CSV, e probe abrila, Eu xa registered-- oh I Non está a actualización Excel desde a última vez. Vai ver que, en equipo dot CSV, eu teño catro columnas. Entón, cando lin o primeira liña para Abby aquí, dólar sinal liña 0 é Abby, dólar sinal de liña é Lyons, dólar sinal liña dous é o número dela, e, a continuación, portadora do seu teléfono. Entón, iso é todo. E iso é bo, porque eu Non ten que descubrir agora fóra onde todos estes son realmente comas. Entón, eu estou indo a ir adiante e facelo, xa que a definición, Eu vou dicir que o seu nome é en soporte de liña cero, como prometido. E eu vou grab-- e de feito, xa sabe o que? Eu non estou indo a preocuparse o seu nome, neste caso. Vou mantelo simple. Eu vou facer o seu número é en soporte de liña dous, eu creo. E o seu portador estaba onde? Fileira de tres pisos ,. Entón, nada novo alí. É só de cero a indexación nunha matriz. E agora, eu vou facer o seguinte. O transportista é igual a igual a AT & T-- Eu só vou ter un loop-- Quero crear unha mensaxe enderezo que se parece con isto. Será 617-555-1212 no, o que é, text.ATT.net, é o que quero facer. Entón, como podo facer iso? Eu vou facer o seguinte. Enderezo será o seu número, e agora, deixe-me ir adiante e facelo. Esta é unha sintaxe descolados. Podería facer o truco por cento s, pero realmente pode só facelo. Entón iso é algo PHP, pero imos considerar o que estou facendo. Dólares asinar enderezo en á esquerda, só unha variable. Déame unha variable. Non teño para especificar o tipo. PHP vai descubrir iso. No lado dereito, cal é o tipo de datos desa cousa toda en da dereita? Parece que unha cadea, porque non hai dobre cita na extrema esquerda e extrema dereita. Agora hai algúns descolados nova sintaxe aquí. Hai as claves, eo número cifrão. Pero bótalle un adiviñar o que é que a sintaxe probablemente dicindo PHP para facer por min? Si. Só ten que introducir o valor alí. Polo tanto, non por cento s. Poderíamos usar impresión f ou s f impresión ou algo parecido, pero PHP e unha morea de linguaxes de alto nivel, vai ver que podería facer o mesmo funcionalmente, quizais seis xeitos diferentes. E así comeza a facer unha cuestión de deseño ou estilo. Polo tanto, esta é só unha forma ollar enigmático de dicir, me dea un enderezo de correo electrónico, pero o plugin en número entre esas claves. E as claves non vai acabar no enderezo final. Agora podemos ignorar algúns dos estas liñas por mor do tempo. Así, se un transportista é igual é igual a verHorizon-- whoops, Verizon-- quero facer algo moi semellante, onde a dirección está, Cita, pecha comiñas, número text.ATT.net. E entón eu podo facer o mesmo tipo de cousa para o resto das operadoras. Pero eu vou facer punto, punto, punto de momento. E agora imos supor que Quero engadir matriz, empurrar. Quero engadir á matriz, chamados de enderezos. Este enderezo, é dicir como engadir algo a unha matriz en PHP. Non é preciso facer malloc. Non ten para cambiar o tamaño da matriz. Acaba de dicir matriz, pulo. O que quere para o conxunto push-- quere empurrar algo sobre? Enderezos. O que quere empurrar para enderezos? Enderezo. E, de feito, se realmente quere ser intelixente, un pouco de azucre sintático para iso, por así dicir, que significa só como pode facelo no o xeito máis bonita, sería para facelo. Isto tamén ten o efecto de crecemento a matriz de enderezos por un tamaño, e, a continuación, que plop adicional enderezo de correo-e para el. Si. Audiencia: [inaudível] COLUMNA 1: Un erro de dixitación no máis se-- oh, portador. Está ben. Tamén non vai gusta do meu fracaso en aplicar parte deste programa máis tarde. Pero grazas por captura. Un erro. Grazas. Queremos que este sexa Vtext.com. Si. Todo ben. Entón onde é que isto déixanos? Nós escribir o código para abrir o ficheiro. Temos un loop para iterado sobre as liñas no ficheiro. Temos código que engade ao meu matriz, un de cada vez, o correctamente enderezo de correo-e formatado. Entón, todo o que realmente falta é enviar un correo electrónico para cada unha destas persoas. Entón eu fun adiante e preparouse me deste xeito. O que eu vou facer aquí é-- e imos dalle saltar algún código real, que se parece con isto. Entón aquí é o pre-cocido versión que escribín anteriormente. E noten que eu rematar implantación de Sprint. Eu rematar de execución T-Mobile. Eu rematar a implantación Virgin Mobile. E eu vou desculpar con antelación. Hai algunhas compañías que algúns alumnos da clase ten que eu non me incomoda enumerando na condición de aquí. Así, non todos os textos van saír. Pero imos ver o que máis eu teño que facer. Eu pechar o ficheiro, pode como en p definir catro. E esta é a nova sintaxe. E nós imos ver un pouco bit desta ao longo do tempo, especialmente con p definir sete e oito. Pero esta é a sintaxe para crear un tipo especial de estrutura. Acontece aí, é unha biblioteca que ven con PHP, chamado sistema de correo PHP. O seu propósito na vida é programaticamente enviar correos electrónicos. Código É alguén escribiu que fai máis doado para nós para enviar correos electrónicos, polo que non ten que manter indo e volvendo a Gmail, e colando en enderezos de correo electrónico das persoas. Hai unha morea de liñas aquí que, honestamente, eu medio que copiou e pegado a partir da documentación. E, de feito, se está Curioso, eu deixei todo das URLs da documentación no código que imos publicar máis tarde. E teña en conta que, entre as cousas que estou facendo é, eu estou dicindo a esta biblioteca, usar o servidor de Gmail, non? SMTP falamos brevemente sobre cando estaban en Yale sobre ser correo simple protocolo de transferencia. É que o protocolo servidores utilizados para enviar correo-e, e that's-- Gmail ten un deses. Un porto, que é o número de porto TCP. É bo se non vin 587 antes. Só sei que a partir da documentación. Aquí está o meu nome de usuario. Vou usar o bot CF50. E nun momento, eu estou indo só para escriba o contrasinal actual do bot. E, a continuación, para abaixo aquí, teña en conta o que permanece. Eu definir o meu enderezo de para ser bot no CS50.net. Eu creo que non vai se arrepender enviando unha mensaxe de texto para 800 persoas que di, sinto a súa falta, bot amor CS50, quizais para os que non podería facelo hoxe. E entón, en liña 76, o que fago? Este tipo de miradas como C. Polo tanto, para i é igual a 0, n equals-- agora contar é nova. Acontece que, se quere obter o número de cousas nunha matriz, non ten que lembrar máis. Pode só pedir a un función chamada conta, e el vai che dicir cantas enderezos están nesa matriz. E entón eu estou indo a engadir a dirección para o correo-e. E sei que iso usando a documentación. Hai unha función de dirección add. E agora conta que hai é unha peza de sintaxe. Xa vimos que antes en C. similares en espírito. Podes pensar en sinal de dólar O correo como a variable, o que é. Pero é unha estrutura en que non só propiedades, variables se quere. Pero parece que en PHP, que é unha programación orientada a obxecto linguaxe, como Java, se tomou APCS. Sinal de dólar e, se quere a-- Tamén ten funcións no interior do mesmo, ou métodos. Entón, iso quere dicir que sistema de correo especial PHP biblioteca, se eu teño unha variable do mesmo, se quero chamar unha función que que vén con biblioteca, para fins de hoxe, só sei que use a notación de frecha. Non hai ningunha notación de punto. É só a frecha. Pero iso non é un punteiro. É só prestado de sintaxe do C. Entón chame engadir a dirección dentro obxecto desta biblioteca ou variable. Todo ben. Esta é a liña máxica. É así que eu enviar un correo-e. Isto é o equivalente do oco Gmail, escribindo o para fóra, e bater enviar. Pero vai a enviar xa enviar correo-e a este enderezo, con este corpo, do bot CS50. E agora a liña de chave. Esta liña foi ausente en 2011 como cando penso que este último intentou. Esta liña hai, por suposto, limpa os enderezos. Entón, loxicamente, se eu non limpar a dirección despois de cada iteración, o primeiro enviar correo-e ou mensaxe de texto vai Alice, o segundo vai Alicia e Bob, o terceiro vai Alicia e Bob e Charlie, de aí o erro moi caro Eu fixen este ano. Entón imos ver. Hai algunha pregunta antes de enviar a todos un texto mensaxe con 10 por cento de probabilidade? Algunha pregunta? Todo ben. Imos me entrar aquí e cambio o contrasinal para o que debe funcionar, probablemente vai estar na lista negra do Gmail. Así, non poden ir todos a fóra, xa que probablemente Non me gusta de nós o envío de correos electrónicos 800 nun bucle dunha vez. Sempre que non se comportamento particularmente humano. Oh, eu vou cambiar algo. Alí enriba, eu estou indo a sent-- cambiar o ficheiro para estudantes dot CSV. E eu non vou abrir iso, pero esta é unha ficheiro CSV idéntica non 100 empregados, pero só 800 alumnos, de Harvard, Yale porque Ten outubro receso esta semana. E parece que un tipo de cousa idiota facendo ao texto todos eles por que eles non están en clase no vacacións. Está ben. Só estudantes de Harvard hoxe dentro dese ficheiro. E agora imos volver na miña fiestra de terminal. Estou un pouco nervioso. OK, entón agora eu estou indo a ir ao directorio, e dot texto PHP PHP. Como case un voluntario valente? Entón eu non quero iso para min. OK, imos cara arriba. Cal é o teu nome? MAYA: Maya. COLUMNA 1: Maya. Imos cara arriba, Maya. Todo ben. A ver se funciona. Engada o meu propio enderezo de correo-e no file-- meu propio número de teléfono no arquivo, de xeito que espero que eu vou conseguir un tamén. Encantado de coñecerte. MAYA: Do mesmo xeito. COLUMNA 1: Entón todo o que tes que facer é prema Intro para enviar 800 mensaxes de texto, se eu non romper. Niza. Pode levar un pouco, estatisticamente, ata chegar a un correo electrónico address-- unha mensaxe de texto que é no cuarto agora. Imos relaxarse ​​e ver. Audiencia: [asubío] COLUMNA 1: Ah, si. Audiencia: Oh, Gotcha. COLUMNA 1: Para esta lazos é-- non é lento por mor do PHP. Esta é lento porque Gmail é nós de iguais e non deixar-nos enviar máis de como unha mensaxe por segundo. Algo? Iso foi unha cousa difícil para min para probar a casa con só eu e meu un teléfono, entón. É que espero que a partir do botón Si? Non? Diga que si. Non? É de correo? Inábil. Aceptar. Case seguro de que funciona aínda. Uh oh. Eles black-- oh, agarde un minuto. Oh, vostede sabe o que? Un momento por favor. Só Maya e I-- Mia, foi? MAYA: Maya. COLUMNA 1: Maya, van sabe o que eu fixen de malo aquí. Oh, agarde un minuto. Eu creo que eu só enviou 100 mensaxes de texto para 555-1212. Espera. Non podo gañar calquera ano. Aceptar. Maya? Solucionar isto na post-produción. Dammit! Tras enderezo. OK, stand by. Desculpe. É doloroso cada ano. OK, un momento. Iso é bo. Vou no canto de facelo. De enderezos Impresión. OK, stand by. Imprimir enderezos, soporte i. Si, me gusta diso. Dólar sign-- OK eu vou explicar o que eu son facendo nun momento, despois de que eu realizar este. Cada ano. OK, aquí imos nós. Teño apenas-- e eu non quero para mostrar o número de teléfono de todos, pero Maya pode confirmar cun aceno de cabeza, que ve todo o mundo número de teléfono na clase que vou copiar un programa chamado Gmail. E se en Gmail, o que queremos dicir? Bótote de menos. Amor-- iso non é de min. Eu aínda non chegou enviar aínda. Entón, imos adiante e facer iso, se podo facer zoom. Aceptar. Entón, eu estou usando un programa chamado Gmail agora. Se Maya, desexa prema no botón Enviar, imos simular o que código debería ter feito. Algo? [Bip] Audiencia: Yep. COLUMNA 1: Si? Salvación? Audiencia: Yep. COLUMNA 1: Miss ti. E eu vou mandar para fóra o resto. Mandei metade porque eu non creo que Gmail deixaría os pasar. Entón lembre, hoxe é o día que aprendeu que podo usar Gmail. Iso foi horrible. Un gran aplauso para Maya. Grazas. Todo ben, entón. que [Bip] Temos algúns sinais sonoros, si? Todo ben. Agora eu estou indo a obter 700 realmente correos electrónicos infelices costas dos compañeiros de clase. Así, polo menos imos ver se isto valeu a pena. Entón, o que deu mal? Vou descubrir o que deu mal despois do feito, pero basta ollar o quão doado que era para facer iso en PHP. Entón o que podemos realmente facer agora que temos esta expresividade do PHP. Isto foi-- que foi horrible. Todo ben. Entón era iso que debería saír. Tanto me estaba probando esta mañá no meu teléfono, pantalla real do meu teléfono. Pero agora imos considerar o por en realidade estamos introducindo todas estas cousas en primeiro lugar. Así, o obxectivo non é escribir estes programas que son escritos na liña de comandos, non? Entón eu escribín un simple Ola programa, escribín un pequeno programa que fai condicionais, e usada unha liña de lectura e así por diante. E, en teoría, só escribín un programa que enviou a fóra 800 mensaxes de texto, máis ou menos 800. E que o programa era todo aínda corren na liña de comandos. E iso, por suposto, é non a web, non? A meta agora é comezar a utilizalo o que eu reivindico é unha máis doado de usar lingua, atrévome a dicir que a máis linguaxe potente en termos dos recursos que veñen con el, para comezar escribindo código que xera páxinas web. Así última vez e, a semana pasada, falamos de HTTP e HTML. E o que é agradable sobre HTML é que non é só texto puro. E o texto está certamente algo que pode imprimir, literalmente, chamando a impresión f función ou a función de impresión. E, de feito, é o que se PHP agora vai permitir facer. Así, entre os exemplos ter no código fonte de hoxe, Ademais a parte do código que engada alí enriba hai pouco, temos programas como este, por exemplo. Froshims, ou Freshman Intramural Sports, era, en realidade, un dos primeiros extracurriculars Eu me envolvín con anos. E o meu compañeiro de cuarto e eu, con algunhas outras nenos no campus, usado para executar o programa froshims. Estou recibindo miñas mensaxes de texto agora. Agora, para que, de volta ao día, de xeito que este 1996 foi máis ou menos, houbo unha internet, pero non había alí process-- houbo web para froshims. E por iso, se quería para rexistrar a fútbol ou voleibol ou calquera outra cousa, ía cubrir esa cousa chamado un anaco de papel, e ía atravesar Harvard curro, e deslize- no slot de correo do Proctor, que estaba en Wigglesworth, un dos dormitorios. E iso que estaba rexistrado. E el ou ela faría logo compoñer unha mensaxe para ti manualmente, así como eu só fixen aquí con Maya, e entón será confirmado como sendo rexistrado. Polo tanto, este foi como baixo colgado froito, por así dicir. Era unha especie de estúpido que que estabamos usando a este papel. Eu quería que nós fósemos capaces só para ir dun sitio web, ou ter os calouros ir nunha web, cadastre-se para o deporte, e só automatizar unha morea desas cousas poñendo os seus nomes e correos electrónicos etc. nunha base de datos. E, de feito, a primeira versión do sitio web, usando HTML super feo, pode ter coma algo así. De feito, foi, irónicamente, máis embaraçoso bonito que esta de volta entón. Pero eu usei unha linguaxe de programación. Non PHP, mais si chamado Perl, que é unha linguaxe máis vello, pero moi semellante en espírito. E eu só completamente ensinoulle a min mesmo. E el me levou un tempo para descubrir iso, facendo moitas preguntas de amigos. Pero as ideas alí eran exactamente o mesmo. Porque o que o PHP foi realmente deseñado para non é o material de liña de comandos nós só vai co, pero para programación web. Realmente amarre na súa característica definida para a web, como segue. Este é froshims. E se eu quixese cadastre-se deste xeito, iso é moi feo, certamente, pero deixe-me ir adiante e ser un alumno menos cómodo, e calquera deporte para Matthews, prema en Register. O que quero ser capaz de facer é enviar información dun formulario, non ao servidor de Google como fixemos a última vez, completamente trampas usando o seu motor, I quero aplicar o meu propio código motor. O que significa escribir PHP código que vive nunha URL que os datos do formulario pode ser sometido. E entón o seu código, escrito en PHP nun servidor, Pode entón responder a esta entrada do usuario. Como o seu nome, ou nivel de confort, ou dormitorio, e, a continuación, facer algo con el. Neste caso, eu só estupidamente imprimiu como texto, que non é tan fermosa. Pero podería certamente imaxinar, se coñeces HTML, e en breve vai saber como xerar HTML con impresión f, e de impresión, e funcións similares, certamente pode xerar unha páxina web máis fermosa que di: David hey, que agora está rexistrado. Es menos cómodo estudante de Matthews, non? Pode só usar unha morea de% ses, ou as claves e sinal de dólar notación usei hai pouco, a xerar texto que é máis user friendly que este. Entón imos dar un ollo a un presente de arquivo. Froshim de cero punto PHP parece con isto. Cando recargar CS50 IDE, de cero froshim parece iso. Este é nulo froshim punto PHP. E o que observa sobre este ficheiro? Audiencia: [inaudível] COLUMNA 1: Sentímolo, un pouco máis alto? Audiencia: [inaudível] É todo en HTML. E, de feito, que é, porque o que é interesante sobre o PHP é que foi deseñado ser, para mellor ou para peor, entremeadas con código HTML. E, de feito, aínda que esta arquivo, froshim de cero punto PHP ten un comentario PHP superior del, é todo só HTML. Pero por outra banda, se eu abrir, imos digamos, cadastre-se de cero punto PHP, que só ten un gran comentario na parte superior. Isto tamén parece case enteiramente como HTML, excepto para o que? Liña, o que, 21 looks un pouco raro. Pero repare en que eu estou entrando en modo PHP co soporte aberto signo de interrogación PHP. Entón eu teño algunhas cousas. E, a continuación, ao final da liña Teño case, signo de interrogación PHP. E iso é o que quero dicir con mesturados. Podes escribir HTML que acaba quere que o servidor para cuspir. Pero se quere facer algo parcialmente dinámica través da páxina, como introducir o meu nome ou dormitorio ou nivel de confort, Podo usar unha función como a copia r, que é imprimir recursiva, o que significa só imprimir esta variable, formato-lo como sexa. Non é realmente para propósitos humanos, é só con fins de diagnóstico ou depuración. Entón é así que eu fixen iso. Se eu en vez de ir froshims dous dot PHP notar que a acción deste xeito É un usuario de cero punto como PHP old-- o anterior era realmente. Pero está rexistrado dous dot PHP. Entón, imos ollar como este compórtase de forma un pouco diferente. Se eu entrar en versión dous. Aquí, se eu rexistrar como David, menos cómodo, de dormitorio de Mathews, rexístrese se. Entón, esta vez dixo, rexístranse, non realmente. Imos ver o que eu fixen aquí. Se eu ollar para rexistro de dous puntos PHP, iso ten algún código PHP. É un pouco máis limpo, aínda aínda envolve un pouco longo nesta liña. Observe aquí. I imprimir meu tag HTML, miña marca de cabeza, miña tag title, a cabeza, o corpo. E entón eu comezo a dicir cousas como que entre en modo de PHP. E así que tag, soporte aberto PHP-- signo de interrogación PHP di, hey, servidor, execute-- interpretar o seguinte material como PHP ata ver a marca de fin. E aínda que pode non saber calquera PHP outro que xa viu ata agora, pode tipo de ler iso moi intuitivamente. Se o nome está baleiro, ou o confort é baleiro, ou dormitorio está baleiro, o que fago? O que digo para o usuario? Ten que proporcionar o seu nome, confort, e aloxamento, e así por diante. Senón, eu digo que é rexistrado, así, non realmente. E eu non digo realmente porque non hai base de datos. Eu non estou facendo nada cos datos. Estou só xoga-la fóra con fins de demostración. Agora eu tipo de aforrado ao longo da liña 22. Hai máis de sintaxe alí, pero sinal de dólar subliñado post é ben interesante. E iso é o que é agradable sobre PHP. No PHP ten o que son chamados algunhas variables globais super. Son unha especie de aínda máis importante que as variables globais. E estes, todo en maiúsculas como tal, ven con PHP. Entón se ten un servidor que ten un servidor web instalado, como o Apache, e instalar o idioma soporte para PHP, de súpeto Pode comezar a usar estes super- variables globais no seu código. E o que é agradable sobre PHP é que se só gravar un arquivo que remata en dot PHP, poñelas nun servidor web, e despois que enviar un formulario para el vía que marca a acción e unha etiqueta de formulario, ese atributo acción no forma tag, PHP e web figuras completamente fóra como coller todos estes pares de chaves de valor fóra do URL como cuestión marca q é igual a gatos, vai descubrir como q e gatos. Se enviar unha foto ou un nome de usuario, ou un contrasinal para gustar Facebook, PHP descubrirá para ti onde todos os datos é. E ela só vai entregá- vostede unha matriz asociativa chamado dólar post signo subliñado, ou sinal de dólar subliñar obter, dependendo se está usando GET ou POST submissões. E ela só vai entregar-lle unha variable global super, de xeito que, se quere obter o nome que o usuario enviou vía web que forma, literalmente só dicir o nome da variable global super, multimedia, unquote, nome. E citas, confort unquote, e multimedia, dormitorio pecha comiñas. E nós imos ser capaces de facer isto e moito máis con PHP. E aínda que este foi unha mirada turbilhão no que fai, imos mergullar máis a próxima semana. Imos introducir unha base de datos de xeito que é, en realidade, comezará a aplicar based-- seu propio e-comercio como o sitio web no tempo só unha semana. Entón, imos ver se a próxima vez, e espero que teña as mensaxes de texto. Bye. [Música tocando] [APERTURA DE PORTA] COLUMNA 2: Hey. COLUMNA 3: Cal é? COLUMNA 2: O que está facendo? COLUMNA 3: Traballo nun conxunto de problemas. COLUMNA 2: Nice. Cinco elevados. [HIGH FIVE] Que é-- uh, o que está facendo aquí? COLUMNA 3: Só colgando para fóra. Acaba de volver da academia. Eu non podería axudar, pero notar cando gama fived, que ten mans moi duro. Ir á academia? COLUMNA 2: Non. Non. COLUMNA 3: Cara, mira moi grande. O que é malo, porque todo o mundo sabe 8-ball é o gran home no campus. Alta e cinco. COLUMNA 2: Uh, non. Non, eu creo que eu son bo. Eu creo que eu son bo.