DAVID J. MALAN: Então, estamos de volta. Assim, o alto nível tema no momento agora é pilhas de tecnologia, o que não é um termo técnico particularmente, é mais de uma captura tudo para qualquer número de combinações de tecnologias que você pode usar para resolver problemas. E talvez o mais maneira apropriada de começar seria a olhar para línguas desde Eu continuo despejando um monte e mais todos na sala tem provavelmente já ouviu falar de pelo menos um. E assim por que não tentar distinguir what-- distinguir línguas e falar brevemente sobre quando faria escolher um sobre o outro, como eles são tipo de fundamentalmente diferentes, e especialmente quando você está conversando com os engenheiros, ou tentando decidir quem contratar, ou o que a implementação proposta de luz verde, como é que você realmente fazer esses tipos de decisões. Então vamos chacoalhar algumas coisas fora. Das línguas que as pessoas têm ouviu falar sobre, o que vem à mente? C. OK. OK, C ++. O que é isso? AUDIÊNCIA: Python. DAVID J. MALAN: Python. Excelente. O quê mais? Visual básico. Ouvi Java. Visual a.k.a. Basic-- VB. Java. NET, que é mais de uma captura todos para o que é normalmente C # como a linguagem em questão. E deixe-me mencionar isso. Então, vamos voltar a isso. Eu sinto Muito? Desculpa? AUDIÊNCIA: SQL. DAVID J. MALAN: Scratch? AUDIÊNCIA: SQL. DAVID J. MALAN: Oh, SQL. ESTÁ BEM. SQL. Então, vamos voltar a isso-- na verdade, é boa-- após o intervalo também. O quê mais? AUDIÊNCIA: Oracle. DAVID J. MALAN: Então, Oracle, não uma língua. Na verdade, eles usariam SQL também. Então, vamos colocar que, após a ruptura bem. E desculpe, algo aqui? AUDIÊNCIA: Mathematica. DAVID J. MALAN: Mathematica? OK, claro. E MATLAB é uma espécie de lá às vezes. AUDIÊNCIA: R. DAVID J. MALAN: R. Vamos passar por cima aqui. Fortran. Certo. escola mais velha. Fortran. COBOL. Vou jogar fora BASIC. BASIC. Qualquer-- AUDIÊNCIA: MATLAB? DAVID J. MALAN: MATLAB. Oh, vencê-lo a ele. Qualquer coisa? Não consigo pensar em um par de outros. Eu posso pensar de alguns outros. E qual foi a última? AUDIÊNCIA: ASP. DAVID J. MALAN: ASP? Sim. Active Server Pages. Que, geralmente, cairia sob outras línguas, por vezes, C #, então vamos deixar isso fora. Mas vamos voltar a isso para as estruturas e tal. Algo mais? PHP é popular. Ruby é outra. JavaScript, não deve ser confundida com Java, é outra. Esse é um tipo de um lote. Assim pode ser certamente esmagadora, como se a lista não é já, só para começar a saber onde começar. E assim, felizmente, vamos abordar isso de alguns ângulos. Primeiro, vamos tentar categorizar pelo menos algumas das línguas em duas grandes baldes, que relembram a conversa que tivemos antes das férias, onde falamos sobre a compilação, e código-fonte e código de máquina, porque isso não como está todas as línguas trabalhar. Então, vamos arrancar alguns exemplos de-- ou anti-examples-- a esse modelo. E então, por que não nós falar sobre as aplicações que línguas são geralmente usados ​​para. E, francamente, mesmo que esta é uma lista bastante longa, é apenas um subconjunto desta lista que você normalmente tirar esses dias resolver problemas. Certas línguas são mais novos do que outros. Certas línguas são mais popular do que outros. Então não é como se você tem essa uma tarefa exaustiva antes de ao decidir entre estes vários idiomas. Então, vamos fazer isso. Tivemos anteriormente, o código fonte, e depois tivemos código de máquina. Whoops. Escrever a palavra errada. Código da máquina. E nós tivemos algum processo na meio called-- sim, o compilador. Assim, o compilador. E o que o código de máquina na verdade é executado em no final vai ser o seu CPU real. Em outras palavras, por código de máquina, eu significa o menor nível instruções que realmente compreende uma CPU. Adição, subtração, movimento, salvar, e as operações desse tipo. E por isso este é o modelo para o que é geralmente conhecidas como linguagens compiladas. Talvez não seja surpreendente. Portanto, este é o modelo para linguagens compiladas. Mas acontece que há outra classe de línguas chamado interpretado languages-- interpretados languages-- que são ligeiramente diferentes. Você escreve no código-fonte, execute -los através de um intérprete, e que intérprete é o que é executado na CPU. Em outras palavras, o que você não Emit é o que, aparentemente? Código da máquina. Os zeros e uns que a CPU -se, em última análise compreende. Portanto, nesta primeira versão e linguagens como C, como vimos, você escreve no código fonte que é um pouco misterioso, mas pelo menos é uma espécie de Inglês-like e é, pelo menos legível uma vez que você se acostumar com isso. Você executá-lo através de um compilador e por fora você começa, em última instância, zeros e uns. Que uma simplificação exagerada. Existem alguns outros passos lá. Na verdade, se você já ouviu falar o termo "linguagem assembly" isso é um passo antes os zeros e uns. Que um pouco mais legível, mas ainda bastante misterioso. E então não há etapas intermediárias que são, de fato, acontecendo aqui. Mas a saída, em última análise, São esses zeros e uns. Mas na interpretada mundo, onde você tem línguas que são interpretadas línguas, na verdade você pular essa etapa. Em outras palavras, quando você escreve uma programa, basta executá-lo imediatamente. Você não compilá-lo e em seguida, executá-lo, como eu fiz antes. Você acabou de escrevê-lo e executá-lo. E se você quiser fazer uma mudança rápida, você fazer uma mudança rápida e executá-lo novamente. Portanto, não há meio passo aqui. Agora, para o programa que eu escrevi anteriormente, que foi este programa "Olá Mundo", você pode razoavelmente wonder-- ou possam razoavelmente state-- que não era que o tempo demorado para compilar meu programa. Parece ter feito isso apenas como aquele. E não há gráfica versões de compiladores. Eu estou usando uma versão muito misterioso, mas você pode apertar um botão jogo e que iria realmente fazer a compilação para você. Eu compilei o programa e, em seguida, mais uma vez, para executá-lo, eu só fazer isso. E ele gera na esquerda lá, "Olá!" Isso não parece tão oneroso. Mas quando seus programas são mais do que apenas um, dois, três, quatro, cinco linhas de tempo, pode levar muito mais segundos para compilar. Às vezes até mesmo minutos ou um pouco de tempo para compilar. Apesar de tudo, alguns dos maiores produtos do mundo são coisas como sistemas operacionais, Microsoft Word, Microsoft Excel, que pode ser centenas de milhares ou mesmo milhões de linhas de código de comprimento, e os que não fazer apenas executar imediatamente. Além disso, na web, é -se moda para usar línguas interpretado simplesmente, em parte porque você pode fazer uma mudança como o desenvolvedor e depois é só recarregar imediatamente a página do browser e ver imediatamente o resultado. E assim HTML, embora não uma linguagem de programação, é uma linguagem que é interpretada. E vimos que mesmo efeito ontem. Você apenas recarregar a página depois de fazer uma mudança na Cloud9 e- voila-- você vê um novo resultado. Então, qual é a diferença aqui? Em HTML, recall, tivemos HTML aberta, cabeça aberta, título aberta, perto do título, perto cabeça, corpo aberto, e assim por diante. Tivemos todas essas marcas que muito muito disse, dizer ao navegador o que fazer. Hey navegador, aqui vem uma página HTML. Hey navegador, aqui vem o título. Hey navegador, vem aqui alguns texto que deve ser ousado. E então você diga o contrário. Hey navegador, é isso para o texto negrito. Hey navegador, é isso para o corpo. E assim por diante. E então o que é um navegador? Um navegador é apenas um intérprete. É um programa que alguém como Microsoft ou o Google tem escrito, cujo propósito na vida é ler uma linguagem, conhecido como HTML, e interpretá-lo. De cima para baixo, da esquerda para a direita. E sempre que o navegador vê aberta suporte, título, fim do suporte, ele deve interpretar isso no sentido de, oh, que significa que eu deveria colocar essas palavras maneira -se aqui na parte superior do navegador. Por isso, só faz o que o código HTML diz. Mas não há zeros e uns. Não há nenhuma compilação. Você não fazê-lo. O navegador não fazê-lo. Ele só não está envolvido. Assim, no espírito destes em curso tópicos, hoje e ontem, que parece ser uma característica maravilhosa. Você salvar o seu código e, em seguida, basta executá-lo ou interpretá-lo. Não há etapas intermediárias. Certamente há um custo? Nem todos podem ser upsides. Então, o que pode esse custo ser? AUDIÊNCIA: Space. DAVID J. MALAN: Space. Então, com certeza. No mundo compilado, você tem não apenas o código-fonte original, você também está criando e então presumivelmente poupança a máquina a code-- zeros e ones-- e isso é tem que tomar-se uma certa quantidade de espaço. Absolutamente. Então, ele está custando-lhe mais espaço. Sim? Audiência: navegadores podem interpretar de forma diferente. DAVID J. MALAN: navegadores podem interpretá-lo de forma diferente. Isso é verdade. Mas eu não tenho certeza que estou confortável reivindicando isso é porque ele é interpretado. Isso é mais só porque é uma aplicação de uma língua que se tem ambiguidades. Então não vamos muito confirmar aquele, mas bom palpite. O que mais pode ser o preço pago? Andrew? AUDIÊNCIA: Você está combinando duas etapas, para que, portanto, tem crescente complexidade também. David J. MALAN: A complex-- o aumento da complexidade, onde? Para quem? AUDIÊNCIA: Então, no interpretador etapa, você está combinando o intérprete e compilador para apenas levando-se a-- DAVID J. MALAN: Ah, OK. Ironicamente, é provavelmente um pouco mais simples de implementar do intérprete, mesmo que parece upsides rendimento desta conveniência. Então possivelmente verdadeira. Mas que tipo de depende, I diria que, na linguagem e sobre a forma como eles foram sobre a sua aplicação. Não pode ser muito mais complexidade, na verdade, no compilador, só porque você tem que ir de algo tão de alto nível para algo tão baixo nível. Mas um bom pensamento. Então, dito de outra forma, um programa compilado, quando se transformou em esses zeros e uns, termina-se na linguagem que a CPU fala, Considerando que, neste lado do mundo, o programa que você escreveu, o código que você escreveu, nunca realmente é convertido para o idioma real o computador fala. Os zeros e uns. Ele permanece no original mais humano, amigável linguagem, mais legível. Então, o que pode ser a implicação lá, se você realmente não incomoda converter seu programa para a própria linguagem que o computador subjacente fala? AUDIÊNCIA: Não poderia entender alguma coisa? DAVID J. MALAN: Poder não entender alguma coisa. E isso pode claim-- se ele não entendia alguma coisa, isso é um erro ou falta de recurso no interpretador. De modo que seria mais um erro do que um custo. AUDIÊNCIA: Você tem acesso ao código-fonte? DAVID J. MALAN: Há uma boa. Assim, uma desvantagem é que você pareceria ter acesso. Você, o usuário final, pode parecer ter acesso ao código-fonte. E isso nem sempre é verdade. Mas isso é verdade na caso de JavaScript, que veremos depois a pausa hoje, que é uma linguagem de programação interpretada que você escrever em código fonte. Mas que o código fonte é transferido a partir do servidor para o navegador e é executado no navegador do humano. Então, aqui ela só poderia abrir o janela, como se eu estivesse fazendo no Chrome, e olhar para ele, como nós mesmos olhou para ontem com o Google. Pode parecer um pouco incompreensível, mas ele está lá. Então, isso é absolutamente um preço pago. AUDIÊNCIA: acerto de desempenho? DAVID J. MALAN: Yeah. E essa é a outra pessoa importante. Há um acerto de desempenho. Porque você tem esse homem médio, que por si só é um programa, entre você e a CPU, em oposição apenas para alimentar dessas matérias zeros e uns na CPU, há um acerto de desempenho que você levar com uma linguagem interpretada. De tal modo que, arbitrariamente, um programa que pode demorar um segundo para ser executado em um computador ou um minutos para ser executado em um computador aqui, pode demorar 10 segundos ou 10 minutos para ser executado em um computador aqui. Ele geralmente não vai ser que muito de um fator difference-- de 10-- porque não há otimizações que você pode fazer. Mas é quase sempre mais lento. Agora, o outro lado para que a preocupação é que, bem computadores, cada 12 a 18 de acordo com months-- A lei de Moore, por assim speak-- estão apenas ficando mais rápido e mais rápido. Eu tenho mais e mais espaço em disco. Eu tenho mais e mais memória RAM. Quem realmente se importa? E isso é uma espécie de argumento razoável. Com efeito, uma das razões por isso que podemos tolerar mais lento linguagens interpretadas é porque nós, humanos, não se apercebe. Os computadores têm chegado tão danado rápido. Considerando volta ao dia, especialmente quando o hardware foi muito mais limitado, você tinha menos de tudo, foi muito mais caro por isso tudo custa mais, bem, então você realmente queria espremer tanto desempenho quanto você poderia. Mas isso necessário escrever em um nível mais baixo, se quiserem, com uma linguagem compilada. Então você tomar este impacto no desempenho. Mas, geralmente, os upsides parece valer a pena estes dias. Bem, excepto para o questão da propriedade intelectual. Esse tipo de legibilidade do código, nós vamos voltar a quando olhamos para JavaScript. Então, vamos tentar categorizar pelo menos alguns destes. Assim, entre as linguagens compiladas, nós teria C, C ++, tipo de, sorta, Java, embora seja um pouco de uma exceção, por razões que eu vou lhe mostrar em apenas um momento. C # seria nesta lista. Nós vamos olhar para mais em apenas as linguagens mais modernas. Tudo certo. E isso parece ser muito lá. Considerando deste lado da cerca, poderíamos ter JavaScript e Python, e PHP e Ruby. E é que o suficiente para os mais recentes? Que se sente como uma abundância de agora. ESTÁ BEM. E então dot dot dot, uma vez que a lista é interminável. E, na verdade, se quisermos apenas ter uma noção de isto-- Wikipedia, linguagens compiladas. Eu estou supondo que podemos obter um lista mais exaustiva. Então, vamos lá. Então, aqui está uma lista muito mais exaustiva. E eu estava esperando que alguém poderia imaginar D como língua porque isso também existe, mas eles pararam em D que parece. Embora não pode realmente ser uma E. Oh, na verdade, isso deve estar na lista estes dias. Swift é, na verdade, uma linguagem que a Apple inventou que é usado agora, cada vez mais assim, no desenvolvimento do iPhone. Mas vamos voltar a que, com a nossa discussão de móveis em apenas um pouco também. Então Swift também. E então, se vamos para interpretados language-- interpretados language-- então é aqui uma lista ainda mais tão bem. Então, se você apenas google e olhar na Wikipedia para estes, você verá todos os tipos de línguas. Mas o objectivo é, para hoje realmente, apenas resume-se talvez esta questão da propriedade intelectual e legibilidade pelo usuário final e desempenho, é outra pessoa importante também. Assim, entre línguas, deixe-me ver se podemos dar-lhe apenas algumas amostra de idiomas. Não quero passar por todas as línguas indefinidamente. Você já se perguntou o que é um determinada língua parece? Fizemos ver um momento atrás. Por que não podemos ter um par das solicitações de recursos. Quem gostaria de ver o que outra língua parece? Sim. AUDIÊNCIA: Java. DAVID J. MALAN: Java. Tudo certo. Então vamos para Java. E só para lhe dar uma sample-- poderíamos escrever tudo isso para fora, mas seria mais rápido apenas para olhar para o código de exemplo de outra pessoa. Tudo certo. Portanto, este é um bom exemplo? Whoops. ESTÁ BEM. Então aqui está a versão Java do programa que eu escrevi anteriormente, "Olá mundo". Então, Java, muitas vezes você vai ver a palavra-chave "class". Então você verá algum nome depois disso. Você verá chaves como vimos antes, e às vezes eles vão no mesma linha, por vezes, outras linhas, é uma espécie de uma decisão pessoal. Você verá palavras-chave como "Público", "estático", "vazio". Mas fizemos ver "principal". "Principal" é geralmente o nome da função predefinida ou o bloco padrão de código que é executado em um programa. "Corda." O que queremos dizer com cadeia mais cedo? Usei-o tipo de casualmente. Uma corda é o quê? Uma palavra. É como uma sequência de caracteres. caracteres individuais, de volta à de volta para trás, geralmente em uma matriz, como já discutimos. E, de fato, ver esta sintaxe aqui, os dois colchetes? Isso significa que, hey computador, aqui vem uma matriz de cadeias. A notação colchete é utilizada para indicar que. E então você pode provavelmente tomar uma adivinhar o que faz este destaque pedaço de código, provavelmente, fazer? AUDIÊNCIA: A saída? DAVID J. MALAN: Yeah. Ela imprime alguma coisa para a tela. Assim, "sistema" é uma espécie de referência ao seu computador. "Out" significa que o computador de de saída ou da tela. Assim, "ln System.out.print" provavelmente significa? "LN". linha de impressão que programadores como soletrar algumas palavras aparentemente fora na sua totalidade e tomar atalhos com outras palavras. Mas "ln" é a linha, portanto, linha de impressão. Então, ele imprime "Olá Mundo! ", Seguido por uma nova linha. Então é isso. Mas Java é o que eles vão chamada orientada a objetos. E, de fato, apenas para dar uma par de outras definições lá que você pode ver, em geral, há muitos tipos diferentes de línguas, mas o mais comum são línguas processuais ou imperativas. Existem funcional línguas, o qual não significa que os outros não são funcionais. E depois há linguagens orientadas a objeto. E esta é talvez a melhor categorização da maioria das línguas que você poderia escolher para espécie de um projeto comercial típico. Isso seria demais, Eu acho que, de buraco de um rato para ir para baixo, para tentar explicar as várias diferenças. Mas as línguas nós vimos assim far-- C é um processual ou um linguagem imperativa. Mais recentemente inventado linguagens tendem a ser, desculpe, orientada a objetos, o que significa eles têm outros recursos para eles. Eu posso explicar isso desta forma? Não vamos nem ir até lá. meios orientados a objeto você pode implement-- você pode modelar o mundo real um pouco mais eficaz. A humanidade, ao longo do tempo, descobriu, uau, seria bom se a minha língua tinha esse recurso ou esse recurso. E é por isso que temos até muitas línguas do mundo. As pessoas razoáveis, inteligente pessoas, concordar ou discordar e, invariavelmente, espécie de vir juntos em desenvolvimento de novas linguagens todos juntos. Caso em questão. A Apple inventou Swift em esperanças de redução presumivelmente a barra para o desenvolvimento do iPhone, porque a anterior language-- Objectivo chamado-C, que poderia também estar na nossa lista aqui-- era muito mais misterioso e muito mais difícil para embrulhar a mente ao redor. E como a programação está se tornando indiscutivelmente mais acessíveis e mais amplamente adotada por pessoas mesmo menos técnica, o goal-- É uma meta muito valente para tentar diminuir a barreira de entrada, fazendo as línguas próprias mais fácil para começar com, mas não menos poderosa necessariamente. E uma outra língua. Por que não vamos dar uma olhada em algo como Python, que é muito em voga nos dias de hoje. Python. Exemplo de programa. Vamos ver. "Olá Mundo" línguas. Vamos fazer isso. "Olá Mundo." Vamos ver se isso dá -nos um bom exemplo. ESTÁ BEM. Portanto, esta é realmente divertido. Então, se você google "Olá Mundo", que passa a ser um dos primeiros programas já escrito em uma linguagem moderna, assim como uma prova de conceito, você pode ver todos os tipos de implementações deste. Algumas dessas línguas Eu não tenho sequer ouvido falar. Mas você pode see-- vamos ao básico, o que eu aprendi anos atrás, em parte. Esta era uma língua divertido porque você tinha que, como o programador, número todas as suas linhas. Não ao contrário do que eu estava fazendo quando eu estava escrevendo pseudocódigo no documento amarelo anteriormente para busca binária, para pesquisar um livro de telefone. E assim, se você queria para ir para outra linha, você literalmente digitar, ir para 10, ou ir a 20. E se você estiver escrevendo linhas, os convenção era para fazer, esta é a linha 10, Esta é a linha 20, esta é a linha 30, 40, com nada entre eles, dando-se assim algum espaço se você decidir, espere um minuto, Eu deveria ter acrescentado alguns mais código em algum lugar. Você ainda teve sorte de nove chances de espremer isso em entre seu programa antes você tinha que manualmente renumerar tudo. Portanto, este é o tipo do que eu quero dizer quando eu digo que o mundo surgiu com novos recursos. Em algum lugar ao longo do caminho alguém percebeu, menino isto é estúpido. Esta é apenas a criação de trabalhar para o programador. Assim, ele ou ela só tipo de construção uma nova camada em cima do que de modo que você não precisa se preocupar sobre o que linha de números de seu código é, na verdade. Então, quando você pode escolher uma língua ou outra? Bem, qual destes línguas você tende ouvir falar mais em seu próprio mundo nos dias de hoje? Vamos cair Objective-C também. AUDIÊNCIA: C #. DAVID J. MALAN: C #. Então deixe-me cor. Nós temos a nossa outra cor em algum lugar? Então C #. E o que você sabe sobre C #? Qualquer coisa vêm à mente? AUDIÊNCIA: É uma linguagem de programação. DAVID J. MALAN: É um linguagem de programação. ESTÁ BEM. Isso é verdade. Então, nós estamos falando de C #. C # tende a ser usado na ambientes Windows, por isso, se você está escrevendo software Microsoft para Windows, C # é muito comumente usado, se é para o software desktop, ou mesmo software do telefone em Windows phones, se você já teve aqueles, ou na web, mesmo também. E, na verdade, talvez Kareem ASP mencionado anteriormente? Então há também estes coisas chamadas estruturas, que podemos introduzir, por extensão. Frameworks, como ASP. Suportes para Active Server Pages. E este é código e um modo de programação que, geralmente, faz com que seja mais fácil para escrever aplicações baseadas na web. Em outras palavras, seria super, Super chato para escrever um website em que a linguagem C que já vimos antes, porque você teria que usar de impressão + F, você teria que usar essa palavra-chave "Principal" e as chaves. Um monte de sintaxe arcano e abordagem para implementar algo que é bastante complexo. Uma página web. E assim outros idiomas evoluíram para fazer esse tipo de coisa mais fácil. E, por sua vez, as pessoas vêm-se com os quadros, uma espécie de ferramentas que você pode usar que o tornam ainda mais fácil para escrever páginas da web. Assim, por exemplo, para fazer isso muito mais concreto, deixe-me abrir apenas um arquivo de texto por um momento. E você pode se lembrar de ontem que disse algo como, isto é uma página da web. HTML. Fechar HTML. Deixe-me saltar a cabeça e basta fazer o corpo aqui. Suponha que eu queria escrever não "Olá Mundo" mas "Olá David", onde David é o nome do usuário conectado no momento. Que algo como ASP vai fazer, ou JSP-- que é servidor Java pages-- ou qualquer número de outras estruturas é que eles não são línguas, per se. Eles são como software adicional que você iria instalar em seu ambiente que apenas torná-lo mais fácil de programar. Assim, por exemplo, em vez de ter que fazer algo como "Olá, printf (" David ")" ou algo que é tipo de co-mingling-- o tipo de código que vimos antes-- você faria algo muito mais simples, como "name%." E assim por estas estruturas, como ASP-- e eu Não me lembro se eu estou ficando a sintaxe apenas para a direita para o ASP. JSP é um little-- é esse direito? Assim, com ASP, este é uma espécie de sintaxe especial que alguns desenvolvedores decidiram isso pode ajudar as pessoas. E eu posso expressar de forma mais sucinta espaços reservados, por exemplo. Como colocar um valor aqui, onde este nome valor não é N-A-M-E, é algum valor armazenado lá. Assim, "nome", neste contexto, que chamaríamos de uma variável. Álgebra tem variáveis como x e y, e z. Os programadores usam variáveis ​​que são mais descritivo do que x, y, e z, tipicamente. Assim, "nome" seria literalmente algum tipo de recipiente de memória para algo como D-A-V-I-D, para o meu nome, ou quem outra coisa é registrado no site. E por isso este é o tipo de conveniência você começa com certos ambientes. Então, C # e algo como ASP seria muito geralmente ser usado em um mundo Windows independente da sua área de trabalho software ou servidor web, especialmente se os seus servidores estão por sua vez, Microsoft Windows e Microsoft IIS-- ou Internet Information Server, se eu começar a sigla direita-- que é servidor web da Microsoft. Então, o que outras línguas são pessoas familiarizadas com, ou você já ouviu falar mais frequentemente do que não? AUDIÊNCIA: Eu sei que Python de tipo de um popular [inaudível]. DAVID J. MALAN: Muito popular. Então Python aqui é usado muitas vezes em aplicações científicas ou dados ciência, onde você tem um monte de dados que você deseja analisar e você quiser usar um linguagem de programação para ele. R pode geralmente ser usada para esse assim, num contexto estatístico. Mas Python tem tantos características construído em. Tantos adicional bibliotecas, como as pessoas dizem. As bibliotecas são apenas coleções de código que outras pessoas escreveu que você pode usar para que você não tem que reinventar as rodas. E assim Python é muito comumente usado em aplicações de ciência de dados. Mas também é muito comumente usado em aplicações web. Você pode implementar uma dinâmica site usando Python. E pelo site dinâmico, I teor médio não apenas estática como se criou ontem, por apenas difícil de codificação no texto latino e outras coisas que tais, mas sim a capacidade fazer o login, a capacidade de comprar alguma coisa, a capacidade de verificar com os seus carrinhos de compras, ou semelhantes. Tudo isso exige dinamismo e você precisar de alguma linguagem como um deles. AUDIÊNCIA: Então não Python tem o seu próprio extensão, similar a gostar [inaudível] DAVID J. MALAN: Ele faz. Assim, no mundo de Python, Django é um quadro muito popular para Python. WSGI é outro mecanismo que é tipo de diferente desta mas semelhante em espírito. É um add-on que permite que você para executar código Python em um servidor. Há outro-- sim. Então, esses que chamaremos de frameworks. E é um pouco de um abuso. Esta é mais uma tecnologia de servidor web. Mas nós vamos mantê-lo simples e colocá que nesta coluna, no entanto. ESTÁ BEM. WSGI. WSGI. Outra coisa-- e, na verdade, deixe mover-me que a sua própria coluna, porque eu gritava para mim mesma por colocá-los no mesmo balde. Vamos colocar isso em servidor características, digamos. Isso não é um termo técnico. Então, aqui podemos estar WSGI. Há CGI, que é um mais velho técnica para que serve idiomas como Perl ou PHP, ou alguns outros. Mais uma vez, eu mencionei estes termos não tanto a sorte de incutir-lhes, mas para que se veja -los é algo você simplesmente google para ler mais. Não há real suco para algumas dessas coisas. Mas vamos voltar para as línguas. Falamos sobre C #, Python. O que mais você pode usar para Programação Web nos dias de hoje? Vamos nos concentrar no que ainda. AUDIÊNCIA: PHP. DAVID J. MALAN: PHP. E vamos voltar a esse. Então PHP é muito comumente usado. PHP tende a obter um mau rap. Começou como uma linguagem implementada por pessoas que talvez não eram necessariamente os melhores designers de linguagem. E assim você pode ler todos os tipos de artigos on-line sobre o quão ruim PHP é. E, infelizmente, este é uma manifestação, em parte, de apenas os debates religiosos que irrompem entre os programadores. E isso é algo vale a pena manter em mente, a partir de uma perspectiva de negócios, que é muito fácil para as pessoas técnicas para ficar excitado com a sua opiniões sobre certas coisas. E isso não significa necessariamente que a única gritando o mais alto ou com os mais fortes, opinião angriest é certo. Muitas vezes, ele realmente apenas não importa. E assim as pessoas estão apenas discutindo o que quer seus próprios preconceitos ou zonas de conforto são. E por isso você deve manter isso em mente ao fazer uma decisão, que só porque alguém diz Esta é a linguagem certa para o trabalho, isso pode ser verdade, mas também só poderia ser é a idioma da direita dentro de sua própria habilidade definir ou zona de conforto. Que não é ruim, mas você deve perceber que pode haver algum contexto lá. Existem alguns objectivamente declarações erradas, como C é o idioma errado usar estes dias para implementar sites quase sempre. Mas não é razoável quer dizer que qualquer um desses estão errados que temos circulou até agora. PHP passou por muitas versões. Então línguas tendem a ter versão números que lhes estão associados. PHP é até, penso eu, a versão 7 agora, então tem sido em torno de algum tempo. E como línguas obter mais recente, eles muitas vezes obter novos recursos. Mas você tem que estar atento a isso porque se o seu site tem sido implementados na versão 7 do PHP, mas você está tentando executar o seu site, ou talvez você tenha terceirizado o desenvolvimento de seu código a outra pessoa e eles enviá -lo para você ou enviá-lo para você e eles dizem, aqui, colocar esta no seu servidor web, se o seu servidor web é um pouco anos outdated-- se é seu próprio servidor ou um host-- web ele pode não rodar. Então, esses são os tipos de coisas que alguém precisa estar atento a ao atualizar um site ou implementá-lo pela primeira vez. Ouvi JavaScript anteriormente. Então JavaScript é um interessante uma em que é geralmente do lado do cliente, como veremos após o intervalo, que significa que ele é executado no navegador do usuário. Mas você também pode executar JavaScript nos dias de hoje usando algo chamado Node.js, quando Node.js é um mecanismo para execução código JavaScript do lado do servidor, em vez de usar Python, ou PHP, ou outras línguas. JavaScript é particularmente bem adequado para aplicações de chat e em tempo real aplicações, enquanto PHP não é um grande idioma para implementar algo como um servidor de chat, onde os usuários ficar ligado a ele constantemente. PHP é mais de uma visita me uma vez, voltar resultado, e clique em outro link alguns segundos ou minutos a partir de agora. Considerando Node.js e JavaScript pode ser usado mais para conexões persistentes. Outros idiomas que você suspeita são comumente usados ​​para coisas web? AUDIÊNCIA: Será que jQuery ser um quadro? DAVID J. MALAN: Boa pergunta. Nem. Eu chamaria jQuery biblioteca, onde novamente uma biblioteca é apenas um monte de código que alguém tem escrito que geralmente resolve alguns problemas que torna, esperançosamente, mais fácil para que você possa fazer o seu trabalho. E deixe-me fazer um exemplo de isto no contexto da teia. No contexto da teia não há esta linguagem, JavaScript, que veremos mais tarde, em que você poderia dizer algo como isto-- "Document.getElementById." E o que eu chamá-lo ontem? Em primeiro lugar, penso eu, foi a identificação única que eu dei a um elemento que olhou como este. "P id =" primeira ">" e depois tivemos como "lorem ipsum", et cetera. Então, se eu estivesse escrevendo um programa em JavaScript para manipular de alguma forma, alterar as páginas da web que nós estavam brincando com ontem, Gostaria de usar este linha realçada de código para obter esse trecho particular de HTML de minha página, esse nó particular, como vamos chamá-lo. No entanto, em jQuery, em vez de escrever isso, que é matéria-code-- JavaScript apenas fora da caixa, que é como você escrever ele-- você, ao invés, apenas dizer, "#primeiro." Isso é equivalente. E assim com base apenas nesta mesma exemplo arcano, o que talvez é o argumento para usar jQuery? Por que um desenvolvedor usar uma biblioteca como jQuery, com base neste exemplo isolado, possivelmente? AUDIÊNCIA: Menos código. DAVID J. MALAN: Yeah. É menos código. É apenas mais rápido digitar. O contraponto é que ele se parece mais assustador. Você realmente não pode lê-lo esquerda para a direita. Na verdade, porque é na maior parte pontuação agora em vez de reais palavras, Eu posso tipo de inferir que "Document.getElementById" fica um elemento do documento pelo seu ID. Eu realmente pode usar tal mnemônicos de esta coisa aqui. Portanto, é um trade off. Há uma sofisticação que vem frequentemente com o uso de bibliotecas, especialmente como jQuery. Mas a realidade é jQuery tem uma espécie de tornar-se um padrão de fato, de modo que quase qualquer um destes dias que escreve código JavaScript usa jQuery ou algo como ele, e não escreve mais a expressões tais como verboso isso, porque mais uma vez, a humanidade aprendeu, uau, que foi tipo de uma oportunidade perdida para tornar nossa vida mais fácil. Assim, os seres humanos facilitar suas vidas. Boa pergunta. Outras línguas a considerar. Eu diria que entre esta lista Ruby é bastante popular. E assim no mundo da Ruby, há um quadro chamados Rails, que é muito popular. Então Ruby on Rails é um utilizada a expressão. Também neste mundo, deixe-me círculo Java para o material web, onde no mundo de Java você pode ter JSP, ou Java Servlets, que é uma tecnologia comum. E esta é apenas mais uma vez formas de utilização que a linguagem em um ambiente de servidor. Então o que isso quer dizer? Se você tem um físico servidor, você literalmente fazer o download do software de servidor web e instalá-lo de tal forma que você tem suporte para um dos estas estruturas, com o qual você poderia, por sua vez, utilizar uma ou mais destas línguas. E, na realidade, se você se inscrever para como um host ou alguma da nuvem serviços falamos sobre ontem, muitas vezes as coisas só vem com o configuração da máquina para você. Você não precisa configurá-lo manualmente. Mas se você fez, este é o lugar onde o papel do administrador do sistema, por assim dizer, entra em jogo. Ele ou ela iria realmente fazer esse tipo de coisa para você, ou o chamado webmaster vezes quis fazer isso por você. Tudo certo. Quaisquer perguntas sobre alguns destes aqui? Ou quaisquer oportunidades no todos para perguntar sobre línguas? Frameworks? Então deixe-me apresentar apenas uma outra biblioteca que também é muito comum nos dias de hoje. Esta lista poderia continuar infinitamente. E esta biblioteca é uma espécie de começando a cair em desuso. Tem sido em torno. Foi popularizada por Twitter por algum tempo. E agora muitos sites, muitos desenvolvedores usá-lo. Mas as coisas novas estão chegando para fora e bem vinda. Mas deixe-me dar-lhe um sentido do que significa usar uma biblioteca. Então, novamente, JavaScript uma linguagem muito popular. CSS, ou Cascading Style Sheets, nós falamos sobre ontem. Isso, também, é onipresente. Ninguém faz uma página web hoje sem o uso de HTML e CSS minimamente. Mas nem sempre é fácil de fazer certas coisas. E então deixe-me ir para getbootstrap.com. Whoops. Isso não é assim que soletrar. Getbootstrap.com, que vai me levar para a página de destino para esta biblioteca. Então, eles generosamente chamo -se um quadro, que é uma espécie de espécie de feira, mas eu ainda chamaria isso mais de uma biblioteca de um quadro. Mas estes são apenas semântica discutíveis. Deixe-me ir ao seu guia CSS e deixe-me ir para algo como isto. Então recordar o que nossas formas olhou como ontem em Cloud9? Foi muito feio. botões da velha escola. Eu acho que o botão foi cinza por padrão. E tudo foi realmente formatado muito messily. Então, se você quer que seus formulários web para olhar um pouco nicer-- deixe-me fazer zoom aqui. E por mais agradável que eu realmente apenas significa estética muito detalhista. Então, observe como a caixa de e-mail não tem A arredondado cantos retangulares para ele. Portanto, é um pouco mais limpo lá. Observe que a palavra e-mail é lá até que eu comece a escrever e, em seguida, ele vai embora. Então, isso é um pouco de bom recurso. Observe como a coisa é uma espécie de brilhando muito bem, que algumas dessas você obter gratuitamente a partir do seu navegador, mas alguns isso é também bibliotecas, código que outras pessoas têm escrito que lhe dar isso. Algo assim dá-me minha senha. Este botão é um pouco mais sexy do que a padrão. Muito em voga no momento. Desde iOS 7 ou assim, o mundo ficou muito plana, Considerando que o mundo antes tinha muitas sombras, lotes de reflexões sobre ícones. Muito parecido no mundo do vestuário, há tendências da moda que vêm e vão. Agora tudo é liso em seu telefone. De fato, botões no seu iPhone agora são apenas ligações azuis. Não há, muitas vezes até mesmo botões circulares. Portanto, estas são apenas coisas que entram e saem de moda, e por isso esta é a forma como você pode fazer um formulário web olhar mais moderno. Botões. Então Bootstrap tem muitos belos botões. Então se você quer azuis botões, botões verde, azul, laranja, vermelho. Bootstrap torna mais fácil para fazer essas coisas. Estes são os tipos de coisas que você poderia absolutamente ter feito ontem com CSS e com HTML, mas é apenas uma dor no pescoço. E assim em vez disso, o que faria Bootstrap tem a fazer é algo como isto. Se você quer uma button-- Acontece que este é uma tag HTML, não utilizar yesterday-- e você quer que ele procure como este botão verde, você literalmente apenas dar-lhe uma classe, que fizemos falar sobre ontem, de "btn btn-sucesso". Por essas palavras? Twitter, os autores do Bootstrap, veio com essas palavras. Eles poderiam ter chamado -lhes qualquer coisa que eles querem. Mas o que você está recebendo agora é alguém no Twitter, neste caso, descobriu como é que você faça uma botão bonito e limpo e verde. Eles embalados-se que a funcionalidade em uma classe CSS, chamado de "btn" e "btn-sucesso", de modo que qualquer um de nós pode agora usá-lo sem sequer pensar isto. Então, eles têm abstraída a noção de um botão verde por isso não precisa se preocupar com implementá-lo nós mesmos. Nós podemos realmente concentrar na implementação coisas de interesse para nós. Se rolar para baixo aqui. Mensagens de erro na tela. Às vezes você quer uma pequena mensagem a aparecer no topo do navegador. Qualquer um de nós poderia fazer isso com algum esforço, após a lição de ontem, mas por que você iria se preocupar? Aquele é tal desinteressante detalhe estético. Vamos ficar na ombros de Bootstrap e deixá-los dar-nos coisas como esta, onde nós literalmente, para obter uma caixa vermelha, apenas tem que fazer um parágrafo tag com uma classe de-- pena. "Bg-perigo" nos daria esta caixa avermelhada em vez disso. Agora vamos para o as coisas mais interessantes. Se eu voltar para o topo esta página e ir para Componentes, agora o mundo fica mais interessante. Por exemplo, muito comum é menus suspensos como este. Este seria um absoluto dor de implementar. E não foi por muito tempo atrás que programadores teria que implementar esses tipos de menus a partir do zero. Mas é um paradigma tão comum que as bibliotecas como Bootstrap apenas dar-lhe a capacidade de fazer uma no menu suspenso longe, muito mais facilmente. Não há uma maneira de fazê-lo, mas se eu ler a documentação Gostaria de ver isso, OK, eu devo usar este HTML, se eu quiser um menu suspenso que se comporta assim. Da mesma forma, vamos ao botão drop-down. Então, isso é ainda mais extravagante. Se eu quero isso para se parecer com um botão mas esse pequeno triângulo significa I deve clicar nele e obter este menu, este é usando uma linguagem chamada JavaScript. E todos nós poderíamos implementar isso em JavaScript. Mas, novamente, isso é uma roda você não quer reinventar. Você só quer tirá-lo a biblioteca de prateleira para este. Vamos para algo como barras de progresso. Então, algo como isso é legal. Se você já viu um progresso bar se movendo na tela, implementação que muitas vezes é apenas um ícone de spinning. Na verdade, apenas como um aparte, deixe me ir para Ajax-- o que é? Informação Ajax? Whoops. Ajaxinfo. Deixe-me lembrar o endereço. Aqui vamos nós. Então, se você já viu alguma animação enquanto a página está carregando, ou pensar, ou poupança, ou a criação de algo, você pode ver essas animações como estes. Então, vamos olhar para algo como este aqui, e vamos escolher uma cor de primeiro plano verde, que se sente tipo de amigável. Posso clicar isso? Vem um. ESTÁ BEM. Nós vamos apenas ir com vermelho porque isso é o que está recebendo. Então, aqui temos. Então, se você já viu isso em uma tela, em que de repente ele aparece e, em seguida, desaparece de repente, o que é que está implementando isso? Bem, este é apenas um GIF. G-I-F. E esta é uma animação arquivo, o que significa apenas é como uma história em quadrinhos da velha escola. Há apenas um monte de diferente quadros que vão [gagueira] e apenas repetindo. E isso está criando o ilusão de movimento. Assim, logo que uma página é feito carregar ou fazer algo, o que um programador faria? Bem, ele ou ela simplesmente esconde esta imagem. Então tudo uma barra de progresso é é tipo de gostar de um filme que está assistindo. Você é tipo de alheio ao fato que não está realmente fazendo alguma coisa, é só se mover. E então, quando ele é feito progredindo, eles apenas escondê-lo ou desligá-lo. E isso é toda a magia que está acontecendo lá. Bootstrap dá-lhe algo um pouco mais sofisticado, através do qual você pode realmente ver uma percentagem em que vai, mas isso também é apenas uma espécie de uma animação simples. Vejamos alguns finais mais exemplos complexos aqui. Algo como um modal. Alguém sabe o que é um modal é? Uma janela modal é geralmente um que é suposto para assumir o controle dos novos conhecimentos e impedi-lo de fazer qualquer outra coisa. É uma espécie de força o usuário do a atenção para o centro da tela, prendê-los para fora, normalmente, de tudo o resto. Então, se eu lançar este demo, o tela irá geralmente tornam-se cinza. Bem, como podemos torná-lo cinza? Bem, nós provavelmente apenas mudou a cor de fundo como fizemos ontem ou algo assim. Talvez seja uma sobreposição que semi-transparente. E agora percebe que você pode fazer coisas extravagantes como este. Então, se você clicar em um botão e quer um pouco de pop fora a aparecer, você pode fazer isso. E assim que se preocupa com tudo-- sim? AUDIÊNCIA: Assim, com Bootstrap, para obtê-lo incorporado, é tão simples quanto como ontem fizemos a página de estilos CSS? DAVID J. MALAN: Realmente. Pergunta muito boa. Deixe-me ir para a Introdução. E sim. Tudo que você tem que fazer, a fim de uso Bootstrap é essencialmente copiar e colar esses três longas filas de código na parte superior do seu próprio página-- web a cabeça de seu página-- e você está instalado e funcionando. E há diferentes maneiras de fazer ele, mas isso seria mais simples. Então, o que é útil sobre tudo isso? Bem, se você não é muito o implementador de um website mas você está tentando projetá-lo, ou você deseja fornecer alguém com diagramas de arame, por assim dizer, ou interpretações apenas do artista do que você quer fazer, eu, a este dia, muitas vezes vai para um site como Bootstrap, onde se eu deseja implementar algo-- como recentemente no campus queríamos implementar uma ferramenta baseada na Web para navegar catálogo de cursos da Universidade de Harvard, tornando mais fácil para os estudantes para navegar através de cursos e adicione cursos para lista de compras, por assim dizer, a espécie de decidir o que eles queriam tomar. Eu estava tentando imaginar para mim, o que faria ingredientes nós queremos usar para construir este? O que a interface do usuário ser como? E apenas olhando através de um site como o este ou outros sites de biblioteca, você pode ganhar inspiração, porque wow, Eu posso usar esse widget, e este widget, e este widget. E então realmente o que o programador começa para fazer, especialmente nestes dias neste mais moderno mundo da programação web, é a programação está cada vez mais sobre a fiação coisas juntos. Espécie de tomar este fora da prateleira, esta fora da prateleira, este fora da prateleira, e você ser o inteligente para ligar todos esses pontos, mas, finalmente, construir algo de novo de pé sobre os ombros de outros, para que você não passar um mês implementação de uma queda estúpida de menu para baixo, que é realmente difícil de fazer se você quer que ele para trabalhar no Chrome, e IE e Firefox, e qualquer número de outros navegadores. É por isso que há essa rica software de fonte comercial e aberta indústria também. AUDIÊNCIA: Então não Bootstrap ficar atualizado e você tem que, em seguida, atualizar seus links? DAVID J. MALAN: Ele faz. Bem, sim, ele faz. Bootstrap está atualmente na versão 3.3.6. E geralmente o que você fazer-- este é realmente vale a pena mencionar. Não é o que é geralmente conhecido como um controle de versão semântica sistema em todo o mundo. Nem todo mundo faz isso. Mas se você já viu os números de versão que são da forma x.y.z-- Assim, por exemplo, a primeira versão de um programa pode ser 1.0.0. Ou se é muito, muito beta, ou mesmo status de alfa, o que significa que o uso por sua conta e risco, não é realmente pronto para o horário nobre, você pode até começar 0.0.1 ou algum tal designação. Mas se o software começa em versão 1.0, 1.0.0 ou equivalentemente, normalmente, o que é comum estes dias-- embora não é omnipresent-- se uma empresa ou um correções programador individuais algum bug em alguma peça de software que realmente Foi um erro, cuja correção não deve impacto que a todos-- ele não muda o comportamento do programa, ele só corrige algo que não estava funcionando properly-- você faria normalmente atualizar o valor z lá. O que significa que alguém como Kareem poderia simplesmente entrar em seu website, cegamente mudar o número da versão partir da versão 1.0.0 para 1.0.1, salvá-lo, enviá-lo, e, em teoria, não têm de preocupam-se que ele está apenas quebrado seu site por causa de uma certa falta de funcionalidade, porque algo quebrou. Enquanto isso, se eu o programador ou alguma empresa estavam a fazer algum significativa mudança que adiciona funcionalidade, Eu poderia nos atualizar para 1.1.0 porque eu sou realmente alterar o comportamento da biblioteca. Eu estou dando-lhe talvez mais funcionalidade. Finalmente, se eu fosse, na verdade, mudar fundamentalmente o software para tanto que ele vai quebrar muitos sites de usuários ou aplicativos, então eu sou obrigado, neste modelo, a atualizar o número da versão principal também, que é uma mudança de ruptura. Em outras palavras, eu poderia ter deixou de prestar suporte para aqueles queda down menu. Então, se você atualizar para 2.0, a metade seu site pode parar de funcionar. E esta é uma espécie de sinal para a comunidade, como o que é envolvido em fazer um upgrade. Uma boa oportunidade para levantar. Outras perguntas? Tudo certo. Bem, vamos dar uma olhada em uma final, tópico neste segmento da programação de pilhas de tecnologia, nomeadamente relacionadas com móvel. Assim, no mundo de telefones celulares hoje você have-- e iPads, e superfícies, e todos os tipos de devices-- você tem um monte de opções quando se trata de implementar um aplicativo ou um site para dispositivos móveis do seu cliente. Então, só para indicar o óbvio, talvez nos dias de hoje, quais são as plataformas para desenvolver no espaço móvel? Que dispositivos você pode querer apoiar com a sua aplicação ou site? AUDIÊNCIA: Apple. DAVID J. MALAN: OK. Assim, os dispositivos da Apple. Então isso significa que o iPhone, e que significa iPad, e talvez até mesmo iPod. O quê mais? Olivier? AUDIÊNCIA: Android. DAVID J. MALAN: Android. ESTÁ BEM. telefones para Android, Android comprimidos, o mercado Android é ainda mais confusa porque-- e até mesmo a Apple está se tornando confuso. Considerando once upon a time iPhone era um determinado tamanho, e iPad era um determinado tamanho, e iPod foi um certo tamanho, agora temos Minis do iPad, eo fina queridos, e o iPhone 6 Plus e 6. Está se tornando uma bagunça. Está se tornando o mundo Android. E eu digo isso com tipo de rolamento meus olhos, porque a partir de um desenvolvedor perspectiva, é um dor no pescoço quando você não tem Steve Jobs ' visão de controle absoluto sobre todas estas especificações. Apple ainda faz porque eles são os construindo o hardware. Mas é uma coisa boa, se Eu sou um desenvolvedor de software, apenas sei que o meu iPhone é sempre vai para ser tão grande, porque isso significa que eu sempre saber quanto espaço na tela que eu tenho. Então, se eu quiser colocar um ícone no canto superior esquerdo, ele vai estar na mesma exata colocar no dispositivo de cada cliente. Mas no mundo do iPhone 6s e iPhone 6 Pluses e no mundo do Android telefones, é tudo sobre o mapa. E assim torna-se mais difícil de programa coisas, especialmente interfaces de usuário, porque agora você tem que começar a organizar suas interfaces de utilizador relativamente, não absolutamente. E o mesmo foi verdade em navegadores, e desktops e laptops para os anos porque você, é claro, têm diferentes tamanhos de tela. O quê mais? Você pode ter superfícies, como da Microsoft. Você pode have-- AUDIÊNCIA: Windows phone. DAVID J. MALAN: O que é isso? AUDIÊNCIA: Windows phone. DAVID J. MALAN: Sim. Assim, os telefones com Windows ainda podem ser encontrados. Tipo de tipo de BlackBerrys, mas eles continuam tentando. E então cachos de outros dispositivos. Assim, para a maior parte, vamos dizer que estes são os únicos se preocupar com no momento. Certamente as coisas da Apple, certamente o material Android, e entre o Windows, como comprimidos de superfície parecem estar em recuperação muito bem. E assim entre os dispositivos, se você quer rolar para fora, digamos, uma presença móvel para o seu empresa, que tipos de decisões de design você tem que fazer? Bem, já disse no mundo da Apple, existe pelo menos duas línguas que são normalmente usados. Um deles foi chamado de quê? AUDIÊNCIA: Objective-C. DAVID J. MALAN: Yeah. Então, Objective-C, que é a mais antiga. É também a língua que muitos Mac aplicativos ainda são escritos em. Em seguida, o outro mais novo era? AUDIÊNCIA: Swift. DAVID J. MALAN: Swift. E esses são o tipo de dois para saber para impressionar as pessoas. Em seguida, no mundo Android, que língua Android usar? AUDIÊNCIA: C #? AUDIÊNCIA: Java. DAVID J. MALAN: Java é a linguagem do "du jour". No mundo Windows, com certeza, diremos C # nesse caso. Assim, já este é o tipo de irritante, porque o que é o take-away para um negócio proprietário ou alguém que apenas quer para a implantação de uma presença móvel? Como, caramba? Como, se eu quiser apoiar um bastante ampla base de usuários, Eu tenho que escrever, ao que parece, três aplicações separadas. Um em cada uma dessas línguas, um em Java, um em C #. E mesmo se eu quero a funcionalidade ser idênticos, não importa. Eu ainda preciso usar diferentes línguas porque a Apple e Microsoft, e Google todo o apoio diferentes ambientes. E isso tem sido um desafio para os anos. De volta ao dia, quando as pessoas usadas para comprar software em uma loja de computador em encolher caixas embrulhadas, você teria que alcançar para a prateleira Mac, ou for-- talvez este muito pequeno Mac shelf-- ou prateleira maior do Windows e comprar alguns softwares. E muitas vezes, não havia sequer qualquer coisa para você na prateleira Mac. Por quê? Bem, as empresas decidiram se 90% do mundo, 95% da população mundial tem PCs, por que se preocupar mesmo implementar coisas no Mac OS? Como um total aside-- digression-- por que é Mac que parece tão impermeável aos vírus, e worms e ameaças de segurança? Apple é melhor com isso? Melhor em manter os computadores seguros? AUDIÊNCIA: audiência menor? DAVID J. MALAN: Isso é Provavelmente o maior de bits a ele. Assim, os muitos usuários de Macs têm reivindicado por muito tempo, oh, usar um Mac, você estará imune a vírus, e worms e todas essas coisas que há muito atormentado PCs. Isso pode ser porque a Apple tem melhores programadores e eles escrever melhor software, ou o sistema operacional foi melhor concebido. Talvez, mas provavelmente não. Provavelmente é que quando você está um 12-year-old, ou 30 algo tipo de sentado em casa escrevendo software malicioso para assumir o mundo, você está indo para ir atrás o público-alvo muito maior. O 95% do mundo que pode estar executando o Windows ou algum as suas variantes. Portanto, há um pouco de ambos os lados. Mas, para seu crédito, A Apple, que eu saiba, Não tem realmente elogiado-se como sendo mais seguro, desde que você está apenas convidando o drama se você fazer essa reivindicação, eu acho. Tudo certo. Sem ficar muito longe para baixo que, como é que vamos resolver isso? Você tem que comprar ou você tem que pagar três pessoas diferentes para desenvolver seus aplicativos? Você escolhe um sobre o outro? O que deve orientar a sua aqui pensando que você acha? Kareem? Não. Alguém. AUDIÊNCIA: Basta vir com o hardware. DAVID J. MALAN: Vindo com o hardware? O que você quer dizer? AUDIÊNCIA: Para o meio Ambiente. [INAUDÍVEL] DAVID J. MALAN: Então, isso é verdade. Mas os seus clientes, Enquanto isso, pode ter iPhones, eles poderiam ter telefones Android, eles pode ter comprimidos feitos pela Microsoft. Então como é que você tem uma estratégia móvel Por todas estas diferentes utilizadores? Parece que se ele custa, digamos $ 1.000 para fazer um iPhone aplicação, que vai a custar US $ 2.000 para fazer um aplicativo para iPhone e um aplicativo Android, ou US $ 3.000 também suporta dispositivos do Windows também. Isso é provavelmente um grande eufemismo, e ele pode até não ser uma relação linear assim. Audiência: Se você quer ter um aplicativo ou não, você pode ter o site responsivo. DAVID J. MALAN: Good. AUDIÊNCIA: Ou você pode ter um aplicativo nativo. DAVID J. MALAN: Yeah. Assim, em todo este contexto aqui, nós temos falado sobre o que pessoas chamaria de aplicativos nativos. Isso é aplicações que são escritas na língua nativa desse dispositivo. Então nativa Objective-C ou Swift código, ou em Java, ou C #. O que significa que quando você baixar, vamos dizem Snapchat, uma aplicação popular, ou quando você baixar Facebook para um telefone, você está baixando ou o versão escrita para o seu iPhone, ou por escrito para o seu telefone Android, ou por escrito para a sua superfície. Mas há uma alternativa. Como Olivier estava se referindo, você pode realmente usar HTML 5 em vez disso, usando o que é chamado de web aplicação, em que você simplesmente implementar sua presença móvel e qualquer funcionalidade. O que quero dizer com presença móvel? Como seu site que tem o seu informações de contato, uma lista de todos seus produtos, talvez ele tenha um shopping carrinho, talvez você vender coisas através dele. Seja qual for a sua aplicação é, você implementá-lo, não em Objective-C, ou Swift, ou Java ou C #, mas em HTML 5, que era a língua olhamos na ontem, com JavaScript e CSS. E o que é agradável sobre os três é que para executá-los, você precisa apenas o pedaço de software? AUDIÊNCIA: Um navegador web. DAVID J. MALAN: Um navegador web. E o melhor que eu sei, todos estes dispositivos vêm com navegadores web, para que o usuário não tem que instalar algo especial. Então você pode apenas informar o seu público, seus clientes, ir para ACME.COM em sua navegador e você apenas ter uma experiência baseada na web que ainda enche a tela, mas você não precisa se preocupar com todos estes custos e toda essa complexidade. Mas certamente não vai ser um problema aqui, certo? Especialmente se eu aponto que há alguns anos atrás, a primeira versão do aplicação móvel do Facebook foi principalmente um aplicativo HTML 5. E eles têm, mais recentemente, reimplemented-lo nas suas outras aplicações. Então, por que você não imediatamente quer dizer, Bem, obviamente nós vamos fazer isso? O que pode os custos ocultos ser? AUDIÊNCIA: Performance. DAVID J. MALAN: Performance? O que você quer dizer? Audiência: O aplicativo nativo tem mais performance. DAVID J. MALAN: Para que é verdade, para um par de razões. Podemos simplificar a resposta. E recordar nossa discussão sobre interpretados em relação linguagens compiladas. Este é o HTML 5 e, com ela, apenas para ser claro, JavaScript-- comumente escrito JS-- e CSS são todos linguagens interpretadas, apesar de apenas JavaScript é uma linguagem de programação. E assim contra estes, que alguns destes são compilados, pelo menos, estes three-- Objective-C, Java e C # - estes, em teoria, deve apenas ser mais rápido. Mas há uma outra realidade for-- AUDIÊNCIA: Funcionalidades? DAVID J. MALAN: O que é isso? Audiência: funcionalidades. DAVID J. MALAN: Funcionalidade? Como assim? AUDIÊNCIA: Use a câmera o seu telefone ou algo assim. Você pode usá-los com o browser. DAVID J. MALAN: Exatamente. Eles estão sec-- AUDIÊNCIA: [inaudível] DAVID J. MALAN: Essa é outra boa. Há recursos que vêm com telefones celulares hoje que não são, por design, para a segurança razões, acessíveis a navegadores web. Porque seria tipo de uma coisa assustador se apenas quando você visitar google.com, ou cnn.com ou qualquer website.com, que esse site tem o poder de transformar em sua câmera, tirar uma foto de você, e, em seguida, usá-lo. Mas você não iria querer um site aleatório que você visita pela primeira vez ter essa capacidade. E então o que telefone os fabricantes costumam fazer é que eles simplesmente negar o acesso para esse tipo de informações para um navegador, o que significa que você não pode implementar a câmera. Você não pode implementar as notificações push, os sinais sonoros que você recebe em sua tela com mensagens curtas. E, de fato, mesmo GPS é único tipo do tipo de disponível para navegadores web. Se você já, em um laptop ou em um dispositivo móvel, puxou algo como talvez CNN.com, mas também estações de notícias locais tendem a fazer isso, você será solicitado muitas vezes com um message-- foxnews.com quer saber a sua localização. Aprovar ou negar. Bem, o navegador está tentando acessar sua informação GPS do seu telefone. Mas, felizmente, Microsoft, e Apple e Google decidiram que se sente como é uma situação útil, queremos que o Google Maps e outras ferramentas para o trabalho, mas nós não queremos a rastejar as pessoas para fora por apenas permitindo a qualquer website para fazer isso. Então, vamos espécie de encontro meio e solicitar ao usuário. Mas isso não é necessariamente o caso com todo o hardware, como a câmera e com push notificações e similares, assim você pode ter que sacrificar determinadas características. Mas o desempenho também. É cada vez menos perceptível nos dias de hoje, talvez como LTE sobre as capturas e mais rápido velocidades de internet em telefones, mas você pode tipo de sentir a diferença. Como um aplicativo baseado na web só se sente mais lento, normalmente, que um aplicativo nativo, em parte porque um aplicativo baseado na web por definição, está na internet. Ele está falando com os servidores da web. E se a sua conexão de rede é lento, mesmo a rolagem pode ser lento. Mas um aplicativo nativo, você tem já pré-downloaded-- provavelmente quando estivesse em casa a partir da App Store, ou você pelo menos pré-descarregado -lo em sua totalidade antes, qualquer que seja sua velocidade de conexão-- e agora você tem todo o bits que você geralmente precisa. Exceto talvez alguns dados que vem a partir de um servidor. Então, esses são os trade-offs aqui. Há uma espécie de meio compromisso, na verdade. E eu acho que você-- AUDIÊNCIA: Use os dados offline. Nos aplicativos nativos, você pode [inaudível] DAVID J. MALAN: Absolutamente. Portanto, há a questão off-line, que é realmente irritante Se você não pode jogar algum jogo ou utilização alguns softwares só porque você está em um porão em algum lugar ou em um elevador. Um aplicativo nativo é resiliente com maior probabilidade de encontro que, supondo que você tem todo o dados que você precisa localmente. Portanto, há uma terceira opção aqui. E vamos desenhar o espectro como aplicativo nativo aqui e web app aqui. E o que é no meio é algo called-- e eu acho que você pode ter usou a palavra antes, talvez? aplicação híbrida. E como a palavra indica, é algo no meio. É uma espécie de uma aplicação web e é uma espécie de um aplicativo nativo. E o que isso significa? Acontece que existem frameworks-- para usar um termo de software earlier-- que outras pessoas têm escrito para cada uma dessas plataformas. Estes e ainda outros dispositivos. Na verdade, deixe-me ir para PhoneGap, que é um tal quadro que eu acredito Adobe possui agora. Deixe-me ir para a Introdução. Vamos ver. Veja se eu posso ver uma lista de ferramentas. Hardware. Começando. hardware PhoneGap. Vamos ver. PhoneGap acesso ao hardware. Deixe-me ver se podemos encontrar um pouco gráfico que eles costumavam ter. Isto está em outro site. Isso é útil? Não. Isso vai perder o nosso tempo lá. hardware PhoneGap. Dispositivos. API dispositivo. Não, eles mudaram-lo. PhoneGap. Vamos dar uma última olhada neste e ver se eu posso te mostrar. Começando. Instale PhoneGap. Instalar aplicativo móvel. Vamos. Eles reorganizou tudo. Tudo certo. Oh tudo bem. Bem, aqui vamos nós. Isso não é tudo o que esclarecedor, mas este é o que eu estava tipo de procura. Então PhoneGap é um quadro que você pode baixar de graça que lhe dá algum código inicial, essencialmente. Então, algum código que eles têm escrito que não faz muita coisa. Mas o que lhe dá essencialmente é o equivalente de um aplicativo que apenas coloca um retângulo grande na tela do usuário. Não colocar uma barra de URL, como um navegador, não coloca um endereço. Ele só coloca um grande retângulo. E você configurar esta grande retângulo, debaixo do capô, para realmente ir para acme.com, ou talvez m.acme.com, por mobile.acme.com, mas o usuário não sabe eles estão nesse endereço. Tudo o que vemos é a conteúdo da página web. Mas o que é agradável sobre este ser um aplicativo híbrido é que o que PhoneGap e outras empresas estão dando é eles estão dando-lhe um pouco de código em Objective-C ou Swift, ou um pouco de código em Java, ou um pouco de código em C #, e essencialmente, tudo que você tem para oferecer é minimamente o endereço do seu aplicativo baseado na web. E então você unir este todos juntos e você tê-lo quer aceder ao seu site através da internet, ou você mesmo cache um local, copiar dentro do aplicativo, em seguida, guardar a sua aplicação em formato iPhone, telefone Android formato, formato de superfície, ou qualquer número de outros dispositivos. Você carregar cada uma dessas versões ao Play Store Google, para a App Store, ao Windows Store, e assim por diante. E agora, você pode ter todas as suas o público baixar verdadeiramente um aplicativo nativo, se bem que a maior parte do código estava escrito por outra pessoa, mas o conteúdo do que aplicativo nativo tudo vêm, normalmente, o seu próprio site. Então você continuar a escrever o seu site em HTML, JavaScript e CSS. Então, por que confundem essas fronteiras? Por que ter uma aplicação híbrida que é uma espécie de nativo, mas também tipo de web com base? O que é o ponto inteiro de adicionando essa complexidade? Quer dizer, mesmo assim, só a partir de olhando através desta página, o Guia de Introdução sente como ele tem um monte de etapas para mim para fazer antes de eu can-- AUDIÊNCIA: Reutilização? DAVID J. MALAN: Reutilização? O que você quer dizer? AUDIÊNCIA: do código-fonte. Assim, o mesmo código seria executado em todas as diferentes plataformas. DAVID J. MALAN: Yeah. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Perfeito. Se o tempo está apertado e se você não têm que muitas developers-- talvez você tem um desenvolvedor e ele ou ela certamente não sabe tudo isso environments-- certamente não bem, e, certamente, não é possível programar em todos os três em simultâneo e enviar três produtos em o tempo permitido para um, você pode tê-lo ou construir tudo em HTML e JavaScript e CSS, e, em seguida, aprender um pouco pequena pouco sobre aplicativos nativos, apenas o suficiente para baixar um quadro como este, para, em seguida, enviar o seu produto para todas as várias lojas de aplicações de modo que agora você tem um aplicativo nativo. Assim que parece ser uma win-win, mas, novamente, para ser claro, Quais são os potenciais custos ou as armadilhas? AUDIÊNCIA: Performance? DAVID J. MALAN: Yeah. Atuação. É difícil de descrever verbalmente. Então, se você tomar apenas em fé uma aplicação móvel, uma aplicação web será tipicamente executar mais lentamente. Pode não parecer muito certo, porque no iPhone e em celulares Android, e dispositivos Windows, há sempre uma espécie de aparência padrão e a sensação de todo o botões e os menus. E empresas no web, pode tentar aproximar essas estética com bibliotecas como Bootstrap, mas o user-- um user-- astuto vai saber que algo não está certo aqui. E isso é bom, talvez isso não é um grande negócio. Mas o problema de desempenho absolutamente é um grande negócio. Os aplicativos nativos tendem a apenas ser muito mais sensível e, portanto, melhor. E assim, o que então pode ser o melhor de dois mundos? Se você é especialmente um pequeno empresa ou um pequeno grupo, você não tem os recursos para desenvolver um aplicativo em paralelo em todas as três plataformas, e, francamente, Parece que isso é uma má idéia de qualquer maneira porque se você estendê-lo e sobre todos os três realizar simultaneamente, devemos ter acrescentado algumas características ou feito algo diferente, agora você tem que consertá-lo em três lugares, não um. O que é talvez o melhor aqui estratégia global, se recursos e tempo estão apertados? AUDIÊNCIA: Basta fazê-lo no iOS. DAVID J. MALAN: Isso não é razoável. Capas pelo menos na EUA, são super popular. Android ainda parece ter dominante quota de mercado, a nível mundial, em geral. Então você não está necessariamente representativa da totalidade do globo esta semana. Mas isso é absolutamente um de decisão. Quer dizer, no campus aqui eu acho que algum número atroz ou a percentagem de alunos de graduação têm iPhones e telefones não Android. Mas no exterior, é uma espécie de o oposto. Então você decidir com base em sua audiência. Como você sabe o que seu público tem? Bem, aprendemos um truque ontem. Você poderia perguntar-lhes. Se você tem um público cativo você pode enviar-lhes um formulário de pesquisa. Ou você poderia apenas fazer o quê? AUDIÊNCIA: Google Analytics? DAVID J. MALAN: O que é isso? AUDIÊNCIA: Google Analytics. DAVID J. MALAN: Google Analytics. Sim. Ou ainda mais tipo de técnica, apenas olhar para os seus próprios web servidores logs. Porque o que acontece cada vez que um navegador, se laptop, desktop ou telefone visitar o seu site? Eles enviar o cabeçalho HTTP que mostra o que navegador e sistema operacional que eles estão usando. Assim, você pode inferir, com alta probabilidade, o seu demográfica está usando esse caminho e depois ajustar. Então, acho que isso é inaceitável. Isso é tipo de mau para o negócio se os usuários do Android não pode comprar nossos widgets. Audiência: Se você é vai cobrar ou não? DAVID J. MALAN: Se você vai cobrar? Então, OK, você recebe o que você paga. AUDIÊNCIA: Se seu aplicativo vai ser livre ou se é gonna-- DAVID J. MALAN: OK. Então, talvez você poderia recuperar custos dessa maneira, ou-? AUDIÊNCIA: Eu li um estudo, uma vez que disse mais usuários da Apple pagar por aplicativos versus-- DAVID J. MALAN: Isso é verdade porque eles já estão pagando mais para os seus dispositivos. Assim, não é razoável uma suposição. AUDIÊNCIA: [inaudível] DAVID J. MALAN: OK. Então, se eles estão mais dispostos a pagar, em seguida, para o inferno com os usuários do Android. Eles não vão pagar-nos qualquer coisa de qualquer maneira. Nós também podemos focar nossas prioridades, pelo menos para os primeiros poucos meses ou um ano, no iOS. Totalmente razoável. O que é um mais inclusivo estratégia do que isso? Maybe-- que é isso? AUDIÊNCIA: [inaudível] DAVID J. MALAN: A mais expensive-- talvez por isso investir mais em-- ir em frente. AUDIÊNCIA: É. Apenas um site móvel. DAVID J. MALAN: Então, fazer um website móvel e não mesmo se preocupar com essa complexidade. Ou talvez uma estratégia razoável, que até mesmo Facebook levou, é começar com um híbrido aplicação porque não é muito mais difícil de fazer isso do que isso. Você apenas tem que ler alguns documentação e descobrir como para carregar as coisas para a App Store. Então, talvez você comece com este, de modo que no primeiro dia, você pode apoiar todos os seus usuários. E então, apenas como Facebook e outras empresas têm feito, quando você tem os recursos, você tem as pessoas, por que você não reimplementar apenas o aplicativo iOS. Você ainda tem algo para todos, mesmo que seja uma experiência inferior talvez, com a aplicação híbrido. Mas você pode gradualmente rolar para fora e substituir o seu curto prazo medidas dos aplicativos híbridos com suas aplicações mais nativas. AUDIÊNCIA: Mas com um aplicativo híbrido você terá acesso a recursos móveis? DAVID J. MALAN: Não necessariamente. Então, talvez você fazer uma decisão consciente desde o início, você só pode fazer upload de fotos no iPhone aplicação nativa para o Facebook, mas não sobre a aplicação Android, inicialmente, por exemplo. E isso é um pouco de uma mentira, porque aplicações web têm mais restrições de aplicações híbridas que se transforma para fora, e se ler a documentação para PhoneGap e as coisas como ele, as pessoas vêm-se com formas para dar aplicações baseadas na web acesso à câmera, desde que você está usando uma aplicação híbrida. Como isso funciona? Uma vez que o híbrido aplicação, por definição, tem um pouco de código em Objective-C, e Swift, e Java, ou C #, ele pode acessar o hardware. Não necessariamente tudo, mas poderia muito bem ser o caso que você tem suficiente de acesso para obter a câmera, mesmo para plataformas Android, por exemplo, em que o exemplo artificial. Alguma outra pergunta? Tudo certo. Por que não vamos tomar o nosso 15 minutos de intervalo aqui. Vamos retomar a três com uma final olhar para a programação web, bancos de dados, e Javascript.