David J. MALAN: quindi siamo indietro. Così ad alto livello argomento al momento ora è stack tecnologici, che non è un termine particolarmente tecnica, è più di una cattura tutti per qualsiasi numero di combinazioni di tecnologie che è possibile utilizzare per risolvere i problemi. E forse il più modo appropriato per iniziare sarebbe da guardare lingue dal Continuo a snocciolare un intero gruppo e la maggior parte tutti nella stanza ha probabilmente sentito di almeno uno. E allora perché non proviamo a distinguere Cosa-- distinguere queste lingue e parlare brevemente quando si farebbe scegliere uno sopra l'altro, come sono sorta di fondamentalmente diverso, e in particolare quando si sta chattando con gli ingegneri, o cercando di decidere chi assumere, o cosa implementazione proposta di GreenLight, come si dovrebbe effettivamente fare questo tipo di decisioni. Così facciamo solo Rattle alcune cose fuori. Tra le lingue le persone hanno sentito parlare, che cosa viene in mente? C. OK. OK, C ++. Cos'è quello? PUBBLICO: Python. David J. MALAN: Python. Eccellente. Cos'altro? Visual Basic. Ho sentito Java. Visiva Basic-- pseudonimo VB. Giava. NET, che è più di una cattura tutto per ciò che è di solito C # come linguaggio in questione. E lasciatemi dire che. Quindi ci torneremo a questo. Mi dispiace? Scusate? PUBBLICO: SQL. David J. MALAN: Scratch? PUBBLICO: SQL. David J. MALAN: Oh, SQL. OK. SQL. Quindi torneremo a che-- in realtà, è buono-- dopo la pausa pure. Cos'altro? PUBBLICO: Oracle. David J. MALAN: Così Oracle, non è una lingua. In realtà avrebbero utilizzare SQL pure. Quindi cerchiamo di mettere che dopo la rottura pure. E mi dispiace, qualcosa qui? PUBBLICO: Mathematica. David J. MALAN: Mathematica? Ok sicuro. E MATLAB è un po ' lì a volte. AUDIENCE: R. David J. MALAN: R. Andiamo qui. Fortran. Sicuro. vecchia scuola. Fortran. COBOL. Io buttare fuori BASIC. DI BASE. Qualsiasi-- PUBBLICO: MATLAB? David J. MALAN: MATLAB. Oh, si batte per essa. Qualsiasi cosa? Mi vengono in mente un paio di altri. Mi vengono in mente pochi altri. E quello che è stata l'ultima? PUBBLICO: ASP. David J. MALAN: ASP? Sì. pagine server attivo. Che in genere cadrebbe sotto altre lingue, a volte C #, quindi lasciamo che fuori. Ma torneremo a quella per le strutture e così via. Qualunque altra cosa? PHP è molto popolare. Ruby è un'altra. JavaScript, non confondere con Java, è un altro. Questo è il tipo di molto. Così può essere certamente schiacciante, come se l'elenco non è già, solo per cominciare a sapere dove iniziare. E così per fortuna, cerchiamo di avvicinarsi a questo da alcuni angoli. In primo luogo, cerchiamo di categorizzare almeno alcuni di questi linguaggi in due secchi larghe, che ricordano la conversazione che abbiamo avuto prima della pausa, dove abbiamo parlato di compilazione, e il codice sorgente, e codice macchina, perché non è come tutte le lingue di lavoro. Quindi dovremo strappare alcuni esempi di-- o contro-examples-- a quel modello. E allora, perché non parlare delle applicazioni che nelle lingue sono generalmente utilizzati per. E, francamente, anche se questa è una lista piuttosto lunga, è solo un sottoinsieme di questo elenco che è in genere trarre da questi giorni per risolvere i problemi. Alcune lingue sono più recenti rispetto ad altri. Alcune lingue sono più popolari di altri. Quindi non è come si dispone di tale un compito enorme prima di al momento di decidere tra queste varie lingue. Quindi cerchiamo di fare questo. Abbiamo avuto in precedenza, il codice sorgente, e poi abbiamo avuto codice macchina. Ops. Scrivendo la parola sbagliata. codice macchina. E abbiamo avuto qualche processo in Medio called-- sì, il compilatore. Quindi il compilatore. E che il codice macchina in realtà viene eseguito su alla fine sta per essere la CPU reale. In altre parole, per codice macchina, I intendono le istruzioni di livello più basso che una CPU in realtà capisce. Addizione, sottrazione, spostare, salvare e operazioni del genere. E così questo è il modello per ciò che è generalmente noto come linguaggi compilati. Forse non a caso. Quindi questo è il modello per linguaggi compilati. Ma si scopre c'è un'altra classe di lingue chiamato interpretato languages-- interpretato languages-- che sono leggermente diversi. Si scrive nel codice sorgente, eseguire loro attraverso un interprete, e che è interprete ciò che viene eseguito sulla CPU. In altre parole, ciò che non lo fai Emit è quello che, a quanto pare? codice macchina. Gli zeri e quelli che la CPU si capisce alla fine. Quindi, in questa prima versione e linguaggi come C, come abbiamo visto, si scrive nel codice sorgente che è un po 'arcano, ma almeno è una specie di inglese-like ed è almeno leggibile una volta che ci si abitua ad esso. Si esegue attraverso un compilatore e fuori si ottiene, in ultima analisi, zero e uno. Che una semplificazione eccessiva. Ci sono alcuni altri passi in là. In realtà, se hai mai sentito parlare il termine "linguaggio assembly," questo è un passo prima le zero e uno. Che un po 'più leggibile, ma ancora piuttosto arcano. E così non c'è passaggi intermedi che sono, in realtà, sta succedendo qui. Ma l'uscita, infine, è queste zero e uno. Ma nella interpretato mondo, dove si ha lingue che vengono interpretati lingue, è in realtà saltare questo passo. In altre parole, quando si scrive un il programma, basta eseguirlo immediatamente. Non si compila e quindi eseguirlo, come ho fatto prima. Basta scrivere ed eseguirlo. E se si vuole fare un cambiamento rapido, si apporta una modifica rapida ed esegue nuovamente esso. Quindi non c'è nessun punto di mezzo qui. Ora, per il programma che ho scritto in precedenza, che era il programma "Ciao Mondo", si potrebbe ragionevolmente wonder-- o ragionevolmente potrebbe state-- che non era che il tempo consumare per compilare il mio programma. E sembra aver fatto proprio così. E c'è grafica versioni di compilatori. Sto utilizzando una versione molto arcana, ma si potrebbe colpire un pulsante di riproduzione e che sarebbe effettivamente fare la compilazione per voi. Ho compilato il programma e poi ancora una volta, per eseguirlo, faccio solo questo. E si trasmette a sinistra, "Ciao!" Non mi sembra tutto ciò che oneroso. Ma quando i programmi sono più di uno, due, tre, lungo quattro, cinque linee, si può prendere molto più secondi per la compilazione. A volte anche minuti o un po 'di tempo per la compilazione. Dopo tutto, alcuni dei più grandi prodotti del mondo sono cose come sistemi operativi, Microsoft Word, Microsoft Excel, che potrebbe essere centinaia di migliaia o addirittura milioni di righe di codice lunghe, e quelli che non si limitano immediatamente eseguire. Inoltre, sul web, è diventato di moda da usare lingue semplicemente interpretati, in parte perché si può fare un cambiamento come lo sviluppatore e poi basta ricaricare subito la pagina del browser e vedere immediatamente il risultato. E così HTML, pur non un linguaggio di programmazione, è un linguaggio che è interpretato. E abbiamo visto che lo stesso effetto ieri. È appena stata ricaricata la pagina dopo aver effettuato un cambiamento di Cloud9 e- voila-- si vede un nuovo risultato. Allora, qual è la differenza qui? In HTML, richiamo, avevamo aperto HTML, testa aperta, titolo aperto, vicino titolo, vicino testa, corpo aperto, e così via. Abbiamo avuto tutti questi tag che abbiamo abbastanza molto Detto questo, dire al browser che cosa fare. Ehi del browser, ecco che arriva una pagina HTML. Ehi del browser, ecco che arriva il titolo. Ehi del browser, ecco che arriva un po ' testo che deve essere in grassetto. E poi si dice il contrario. Ehi del browser, il gioco è fatto per il testo grassetto. Ehi del browser, questo è tutto per il corpo. E così via. E così quello che è un browser? Un browser è solo un interprete. Si tratta di un programma che qualcuno come Microsoft o Google ha scritto, il cui scopo nella vita è quello di leggere una lingua, noto come HTML, e interpretarlo. Dall'alto in basso, da sinistra a destra. E ogni volta che il browser vede aperto staffa, titolo, chiudere la staffa, si deve interpretare tale nel senso, oh, che Mezzi devo mettere queste parole modo qui nella parte superiore del browser. Così fa solo quello che dice il codice HTML. Ma non ci sono zero e uno. Non c'è compilazione. Non l'avete fatto. Il browser non lo ha fatto. Non è solo coinvolto. Quindi, nello spirito di questi continua argomenti, oggi e di ieri, che sembra essere una caratteristica meravigliosa. Si salva il codice e poi basta eseguirlo o interpretarlo. C'è senza passaggi intermedi. Sicuramente c'è un costo? Non può essere tutti aspetti positivi. Così che cosa potrebbe che essere il costo? PUBBLICO: Spazio. David J. MALAN: Spazio. Così sicuro. Nel mondo compilata, avete non solo il codice sorgente originale, si sta creando anche e quindi presumibilmente risparmio la macchina code-- la zeri e ones-- e questo è ottenuto di prendere una certa quantità di spazio. Assolutamente. Così si sta costando più spazio. Sì? Pubblico: browser potrebbero interpretare in modo diverso. David J. Malan: browser potrebbero interpretare in modo diverso. Questo è vero. Ma io non sono sicuro di essere confortevole sostenendo che è perché è interpretato. Questo è più solo perché è una implementazione di una lingua che si è ambiguità. Quindi cerchiamo di non del tutto confermare che uno, ma buona impressione. Che altro potrebbe essere il prezzo pagato? Andrea? PUBBLICO: Si sta combinando due fasi, in modo da quindi, avere crescente complessità pure. David J. MALAN: Il complex-- l'aumento della complessità dove? Per chi? PUBBLICO: Quindi, l'interprete passo, si sta unendo l'interprete e compilatore per appena portano a-- David J. MALAN: Ah, ok. Ironia della sorte, è probabilmente un po ' semplice da implementare l'interprete, anche se sembrerebbe aspetti positivi di rendimento di questa convenienza. Così forse vero. Ma che tipo di dipende, io direbbe, sulla lingua e su come sono andati sull'implementazione di esso. Non ci può essere molto di più di complessità, in realtà, nel compilatore, solo perché si deve andare da qualcosa di così alto livello a qualcosa così basso livello. Ma un buon pensiero. Quindi, in altre parole, un programma compilato, quando si gira in questi zero e uno, finisce nella lingua che la CPU parla, che in questa parte del mondo, il programma che hai scritto, il codice che hai scritto, in realtà mai viene convertito in linguaggio attuale il computer parla. Gli zero e uno. Rimane in originale, più umano amichevole, il linguaggio più leggibile. Quindi, quale potrebbe essere l'implicazione lì, se non in realtà disturbare la conversione programma per il linguaggio molto che il computer sottostante parla? PUBBLICO: potrebbe non capire qualcosa? David J. MALAN: Might Non capire qualcosa. E che può claim-- se non ha capito qualcosa, che sia un bug o mancanza della caratteristica nell'interprete. Quindi sarebbe più un errore che un costo. PUBBLICO: Si ha accesso al codice sorgente? David J. MALAN: C'è una buona. Quindi, un rovescio della medaglia qui si è sembrerebbe avere accesso. Si, l'utente finale, potrebbe sembrare avere accesso al codice sorgente. E questo non è sempre vero. Ma è vero nel caso di JavaScript, che vedremo dopo la pausa di oggi, che è un linguaggio di programmazione interpretato che si scrive nel codice sorgente. Ma che il codice sorgente viene trasferito dal server al browser e corre nel browser del umano. Così qui si potrebbe semplicemente aprire la finestra, come ho fatto in Chrome, e guardare, come noi stessi guardò ieri con Google. Potrebbe sembrare un po ' incomprensibile ma è lì. Ecco, questo è assolutamente uno prezzo pagato. PUBBLICO: calo di prestazioni? David J. MALAN: Sì. E questo è l'altro grosso. C'è un calo di prestazioni. Perché hai questo uomo di mezza, che si è un programma, tra l'utente e la CPU, in contrapposizione a solo alimentando queste prime zero e uno nella CPU, c'è un calo di prestazioni che si portare con un linguaggio interpretato. Tale che, arbitrariamente, un programma che potrebbe prendere uno secondo per l'esecuzione su un computer o uno minuto per girare su un elaboratore qui, potrebbe richiedere 10 secondi o 10 minuti per funzionare su un computer qui. Non è in genere sta per essere tale tanto di un fattore di difference-- 10-- perché non c'è ottimizzazioni si può fare. Ma è quasi sempre più lento. Ora, il rovescio della medaglia di questa preoccupazione è che, ben computers, ogni 12 a 18 months-- secondo le la legge di Moore, per così speak-- sono solo sempre più veloce. Ho più e più spazio su disco. Ho più e più RAM. A chi importa veramente? E questo è una specie di argomento ragionevole. Infatti, uno dei motivi il motivo per cui siamo in grado di tollerare più lento interpretati lingue è perché noi esseri umani non si nota. I computer hanno ottenuto solo così maledettamente veloce. Mentre di nuovo nel corso della giornata, in particolare quando l'hardware è stato molto più limitato, si aveva meno di tutto, era molto più costoso quindi tutto costa di più, beh, allora si voleva davvero per spremere tanto le prestazioni quanto si poteva. Ma quella richiesta scrivendo a un livello inferiore, se si vuole, con un linguaggio compilato. Così si prende questo calo di prestazioni. Ma in generale, i pregi sembrano essere la pena in questi giorni. Ebbene, tranne per il questione della proprietà intellettuale. Questo tipo di leggibilità del codice, ci tornare a quando guardiamo JavaScript. Quindi cerchiamo di categorizzare almeno alcuni di questi. Così tra i linguaggi compilati, abbiamo avrebbe C, C ++, un po ', sorta, Java, anche se è un po 'di un'eccezione, per ragioni che vi mostrerò in un attimo. C # sarebbe in questa lista. Vedremo più da soli i linguaggi più moderni. Tutto ok. E questo sembra un sacco lì. Mentre su questo lato della barricata, potremmo avere JavaScript e Python, e PHP e Ruby. Ed è che sufficiente per quelli più recenti? Che si sente come un sacco per ora. OK. E poi puntini puntini, dal momento che la lista è infinita. Ed infatti, se vogliamo solo ottenere un senso di questo-- Wikipedia, linguaggi compilati. Sto cercando di indovinare che possiamo ottenere un Lista di gran lunga più esaustivo. Quindi qui si va. Quindi, ecco un elenco molto più esaustivo. E speravo che qualcuno avrebbe indovinare D come un linguaggio, perché ciò che esiste anche, ma si fermarono a D sembrerebbe. Anche se ci potrebbe in realtà essere un E. Oh, in realtà, questo dovrebbe essere sulla lista di questi giorni. Swift è in realtà un lingua che Apple ha inventato che è ora utilizzato, sempre più così, in fase di sviluppo iPhone. Ma torneremo a che con la nostra discussione di mobili in appena un po 'pure. Così Swift pure. E poi se andiamo a interpretato Language, interpretato Language, allora ecco un elenco ancora più lungo pure. Quindi, se solo Google e cercare su Wikipedia per questi, vedrete tutti i tipi di lingue. Ma lo scopo è, per oggi in realtà, solo si riduce a forse questo questione della proprietà intellettuale e leggibilità da parte dell'utente finale e prestazioni, è un altro disperatevi pure. Così fra queste lingue, fammi vedere se siamo in grado di darvi solo qualche esempio delle lingue. Non vogliamo passare per tutte le lingue all'infinito. Vi siete mai chiesti che cosa un certa lingua assomiglia? Abbiamo visto un momento fa. Perché non prendiamo una coppia di richieste di funzionalità. Chi vorrebbe vedere cosa altra lingua assomiglia? Sì. PUBBLICO: Java. David J. MALAN: Java. Tutto ok. Quindi andiamo a Java. E proprio per darvi un campione-- potremmo scrivere tutti questi fuori, ma sarebbe più veloce solo guardare il codice di esempio di qualcun altro. Tutto ok. Quindi questo è un buon esempio? Ops. OK. Così qui è la versione Java del programma che ho scritto in precedenza, "Ciao Mondo". Così Java, spesso si vedere la parola chiave "classe". Poi si vedrà qualche nome dopo. Vedrete parentesi graffe come abbiamo visto prima, e talvolta vanno in stessa linea, a volte altre linee, è una specie di una decisione personale. Vedrete parole chiave come "Pubblico", "statico", "vuoto". Ma abbiamo fatto vedere "principale". "Main" è generalmente il nome della funzione di default o il pezzo di codice che di default viene eseguito in un programma. "Corda." Cosa abbiamo intendiamo per stringa di prima? L'ho usato sorta di indifferenza. Una stringa è che cosa? Una parola. È come una sequenza di caratteri. caratteri individuali, torna a back to back, di solito in un array, come abbiamo discusso. E in effetti, vedere questa sintassi Qui, i due parentesi quadre? Ciò significa che, ehi di computer, qui arriva un array di stringhe. La notazione parentesi quadra è comunemente usato per denotare che. E allora si può probabilmente prendere un guess-- cosa fa questo evidenziato pezzo di codice probabilmente fare? PUBBLICO: L'uscita? David J. MALAN: Sì. Esso stampa qualcosa sullo schermo. Così "sistema" è una sorta di un riferimento al computer. "Out" significa che il computer di uscita o lo schermo. Così "System.out.print ln" probabilmente significa? "Ln". linea di stampa che i programmatori, come di precisare a quanto pare alcune parole fuori nella loro interezza e prendere i collegamenti con le altre parole. Ma "ln" è la linea, così la linea di stampa. Quindi esso stampa "Ciao Mondiale! ", Seguito da una nuova linea. Così il gioco è fatto. Ma Java è ciò che faranno chiamata object-oriented. E infatti, proprio per dare un paio di altre definizioni lì che si potrebbe vedere, in generale, ci sono molti diversi tipi di lingue, ma i più comuni sono linguaggi procedurali o imperativi. Ci sono funzionali lingue, che non significa che gli altri sono non funzionali. E poi c'è orientati agli oggetti lingue. E questo è forse il migliore categorizzazione della maggior parte delle lingue che si sarebbe mai scegliere per l'ordinamento di un progetto commerciale tipico. Questo sarebbe troppo, Penso, foro di un topo a scendere, per cercare di spiegare le varie differenze. Ma le lingue abbiamo visto così far-- C è una procedura o un linguaggio imperativo. Più di recente inventato lingue tendono ad essere, mi dispiace, object-oriented, il che significa essi hanno altre caratteristiche a loro. Posso spiegare in questo modo? Cerchiamo di non addirittura andare laggiù. mezzi orientata agli oggetti è possibile implement-- è possibile modellare il mondo reale un po 'più efficace. L'umanità, nel corso del tempo, ha capito, wow, sarebbe bello se la mia lingua ha avuto questa funzione o quella caratteristica. Ed è per questo che abbiamo così molte lingue del mondo. Le persone ragionevoli, intelligente persone, d'accordo o meno e invariabilmente sorta di venire insieme su lo sviluppo di nuovi linguaggi tutti insieme. Caso in questione. Apple ha inventato Swift in speranza di abbassamento presumibilmente la barra per lo sviluppo iPhone, perché il Language, precedente chiamato Objective-C, che potrebbe essere anche sulla nostra lista qui-- era molto più arcana e molto più difficile per avvolgere la mente intorno. E come la programmazione sta diventando probabilmente più accessibile e più in generale adottato da persone anche meno tecnico, il goal-- si tratta di un obiettivo molto coraggioso per cercare di abbassare la barriera all'ingresso rendendo le lingue stessi più facile per iniziare con, ma non per questo meno potente necessariamente. E un'altra lingua. Perché non diamo uno sguardo a qualcosa come Python, che è molto in voga in questi giorni. Pitone. Esempio di programma. Vediamo. lingue "Ciao Mondo". Facciamolo. "Ciao mondo." Vediamo se questo dà noi un bell'esempio. OK. Quindi, questo è in realtà tipo di divertimento. Quindi, se mai google "Ciao Mondo", che sembra essere uno dei primi programmi mai scritto in un linguaggio moderno, proprio come una prova di concetto, si può vedere tutti i tipi di implementazioni di questo. Alcune di queste lingue Non ho nemmeno sentito parlare. Ma si può see-- andiamo a base, quello che ho imparato anni fa, in parte. Questo è stato un linguaggio divertente perché si dovuto, come programmatore, numero di tutte le linee. Non diversamente da quello che ero facendo quando stavo scrivendo pseudocodice sul documento gialla in precedenza per la ricerca binaria, per la ricerca di una rubrica telefonica. E così, se si voleva per andare in un'altra linea, si sarebbe letteralmente digitare, andare a 10, o andare a 20. E se si sta scrivendo le linee, i convenzione era da fare, questa è la linea 10, questa è la linea 20, questa è la riga 30, 40, con niente in mezzo, dando così un bel po 'camera se si decide, aspetta un minuto, Ho dovuto aggiungere un po ' più codice da qualche parte. Si aveva ancora una sorta di nove possibilità di spremere che nel tra il programma prima si doveva manualmente rinumerare tutto. Quindi questo è una specie di ciò che intendo quando dico il mondo ha messo a punto con nuove funzionalità. Da qualche parte lungo la strada qualcuno realizzato, ragazzo questo è stupido. Questa è solo la creazione di lavorare per il programmatore. Così lui o lei solo tipo di costruzione un nuovo livello in cima a quello in modo che non ci si deve preoccupare su quale linea numeri il codice è in realtà su. Così, quando potreste scegliere una lingua o di un altro? Ebbene, quale di questi lingue Tendi a sentir parlare di più in il proprio mondo in questi giorni? Facciamo discesa Objective-C troppo. PUBBLICO: C #. David J. MALAN: C #. Quindi, mi permetta di colore. Dobbiamo il nostro altro colore da qualche parte? Così C #. E che ne sai di C #? Tutto ciò che la primavera in mente? PUBBLICO: E 'un linguaggio di programmazione. David J. MALAN: Si tratta di una linguaggio di programmazione. OK. Questo è vero. Quindi stiamo parlando di C #. C # tende ad essere utilizzato in ambienti Windows, quindi se si sta scrivendo il software Microsoft per Windows, C # è molto comunemente usato, se è per software desktop, o anche software del telefono su telefoni Windows, se hai avuto quelli, o sul web, anche troppo. E infatti, forse Kareem menzionata ASP in precedenza? Quindi c'è anche questi cose chiamate quadri, che possiamo introdurre per estensione. Quadri, come ASP. I montanti per le pagine di server attivo. E questo è codice e un modo di programmazione che generalmente rende più facile per scrivere applicazioni web based. In altre parole, sarebbe super, super-fastidioso per scrivere un sito web nel linguaggio C che abbiamo visto prima, perché si dovrebbe utilizzare la stampa + F, si dovrà usare quella parola chiave "Principale" e le parentesi graffe. Un sacco di sintassi arcana e l'approccio per implementare qualcosa che è piuttosto complesso. Una pagina web. E così altre lingue si sono evoluti per fare questo genere di cose più facili. E a sua volta, le persone hanno escogitato con quadri, una sorta di strumenti che è possibile utilizzare tale renderlo ancora più facile da scrivere pagine web. Così, per esempio, per rendere questo molto più concreto, mi permetta di aprire solo un file di testo per un momento. E si potrebbe ricordare ieri che abbiamo detto qualcosa come, questa è una pagina web. HTML. Chiudi HTML. Mi permetta di saltare la testa e basta fare il corpo qui. Supponiamo che volevo scrivere non "Ciao Mondo" ma "Ciao David", dove David è il nome dell'utente attualmente connesso utente. Che qualcosa di simile ASP farà, o JSP-- che è il server Java pages-- o un numero qualsiasi di altri framework è che non sono lingue, di per sé. Sono proprio come software aggiuntivo che si sarebbe installare nel vostro ambiente che appena rendono più facile da programmare. Così, per esempio, invece di avere a che fare qualcosa come "ciao, printf (" David ")" o qualcosa che è tipo di co-mingling-- il tipo di codice che abbiamo visto before-- si potrebbe fare qualcosa di molto più semplice, come "nome%." E così questi quadri, come ASP-- e io Non ricordo se mi sto la sintassi giusto per ASP. JSP è un little-- è questo diritto? Quindi, con ASP, è una sorta di sintassi speciale che alcuni sviluppatori hanno deciso questo potrebbe aiutare le persone. E posso esprimere più succintamente segnaposto, per esempio. Come mettere un valore qui, dove questo nome valore non è N-A-M-E, si tratta di un certo valore memorizzato in là. Quindi, "nome", in questo contesto, noi chiameremmo una variabile. Algebra ha variabili come x e y, z. I programmatori usano variabili che sono più descrittivo di x, y, z, tipicamente. Quindi, "nome" sarebbe letteralmente essere un qualche tipo di contenitori di memoria per qualcosa di simile D-A-V-I-D, per il mio nome, o chiunque il resto è effettuato l'accesso al sito web. E così questo è il tipo di convenienza si ottiene con certi ambienti. Quindi, C # e qualcosa come ASP sarebbe molto comunemente essere utilizzato in un mondo di Windows, sia per la sua scrivania software o web server, soprattutto se i server sono a loro volta esegue Microsoft Windows e Microsoft IIS-- o Internet Information Server, se ottengo l'acronimo destra- che è web server di Microsoft. Così che cosa altre lingue sono persone che hanno familiarità con, o avete sentito parlare di più spesso che non? PUBBLICO: So che Python tipo di un popolare [INCOMPRENSIBILE]. David J. MALAN: Molto popolare. Quindi, Python qui viene utilizzato molto spesso in applicazioni scientifiche o dati scienza, dove si ha un sacco di dati che si desidera analizzare e si desidera utilizzare un linguaggio di programmazione per esso. R può comunemente essere usato per questo così, in un contesto statistico. Ma Python ha così tanti caratteristiche costruito in. Tanti aggiuntivo biblioteche, come si dice. Le biblioteche sono solo raccolte di codice che altre persone ha scritto che è possibile utilizzare in modo che non c'è bisogno di reinventare quelle ruote. E così Python è molto comunemente utilizzati in applicazioni scientifiche dati. Ma è anche molto comunemente utilizzato in applicazioni web. È possibile implementare una dinamica sito web utilizzando Python. E dal sito web dinamico, I contenuto medio non solo statica come abbiamo creato ieri, da solo difficile codifica nel testo latino e altre cose del genere, ma piuttosto la capacità effettuare il login, la possibilità di acquistare qualcosa, la capacità di approfittare con i vostri carrelli della spesa, o simili. Tutto questo richiede dinamismo e si bisogno di un certo linguaggio come uno di loro. PUBBLICO: Così fa Python dispone di un proprio estensione, simile a come [INAUDIBLE] David J. MALAN: lo fa. Così nel mondo di Python, Django è un quadro molto popolare per Python. WSGI è un altro meccanismo che è sorta di diverso da questo ma simili nello spirito. Si tratta di un add-on che permette per eseguire codice Python su un server. C'è other-- sì. Quindi questi chiameremo quadri. Ed è un po 'di un abuso. Questo è più di una tecnologia server web. Ma noi terremo semplice e mettere in questa colonna comunque. OK. WSGI. WSGI. Un altro cosa-- e in realtà, lascia Mi sposto che, per la propria colonna, perché vorrei urlare a me stesso per mettendoli nello stesso bucket. Mettiamo questo al server caratteristiche, diciamo. Questo non è un termine tecnico. Così qui potremmo essere WSGI. C'è CGI, che è un vecchio tecnica per servire fino lingue come Perl o PHP, o alcuni altri. Anche in questo caso, ho già detto questi termini non tanto per una sorta di loro ingrain, ma in modo che se si vede loro è qualcosa semplicemente google per leggere di più. Non c'è vero succo per alcune di queste cose. Ma torniamo alle lingue. Abbiamo parlato di C #, Python. Che altro potreste usare per Programmazione Web in questi giorni? Concentriamoci su quello ancora. PUBBLICO: PHP. David J. MALAN: PHP. E torniamo a quello. Così PHP è molto comunemente usato. PHP tende ad ottenere una cattiva reputazione. E 'iniziato come un linguaggio implementato da persone che forse non erano necessariamente i migliori progettisti di linguaggi. E così si può leggere tutti i tipi di articoli online su quanto male PHP è. E purtroppo, questo è una manifestazione, in parte, di appena dibattiti religiosi che scoppiano tra i programmatori. E questo è qualcosa vale la pena tenere a mente, da una prospettiva di business, che è molto facile per i tecnici per ottenere tutti lavorato con loro opinioni su certe cose. E non significa necessariamente che quello urlare più forte o con la più forte, opinione angriest è giusto. Un sacco di volte, in realtà semplicemente non importa. E così le persone sono solo discutendo qualunque loro pregiudizi o zone di comfort sono. E così si dovrebbe tenere questo in mente quando si effettua una decisione, che proprio perché qualcuno dice questo è il linguaggio giusto per il lavoro, che potrebbe essere vero, ma anche appena potrebbe essere che è il lingua giusta all'interno della propria abilità impostare o zona di comfort. Che non è male, ma si dovrebbe capire che ci potrebbe essere qualche contesto lì. Ci sono alcuni oggettivamente dichiarazioni errate, come C è il linguaggio sbagliato usare in questi giorni per i siti web attuazione quasi sempre. Ma non è irragionevole dire che uno di questi sono sbagliato che abbiamo cerchiato finora. PHP è passato attraverso molte versioni. Così lingue tendono ad avere la versione numeri ad essi associati. PHP è fino a, credo, la versione 7 ora, così è stato in giro per un bel po 'di tempo. E come lingue diventano più recente, spesso ottengono nuove funzionalità. Ma bisogna essere consapevoli di questo perché se il vostro sito è stato implementato in versione 7 di PHP, ma si sta cercando di eseguire il vostro sito web, o forse hai in outsourcing lo sviluppo del codice a qualcun altro e posta a voi o inviare a voi e dicono, qui, mettere questo sul vostro server web, se il server web si trova a pochi anni outdated-- che si tratti di proprio server o un host-- web non potrebbe effettivamente eseguito. Quindi questi sono i tipi di cose che qualcuno ha bisogno di essere consapevoli di durante l'aggiornamento di un sito o attuazione per la prima volta. Ho sentito JavaScript in precedenza. Così JavaScript è un interessante uno in quanto è generalmente lato client, come vedremo dopo la pausa, che significa che viene eseguito nel browser dell'utente. Ma si può anche eseguire JavaScript in questi giorni usando una cosa chiamata Node.js, dove Node.js è un meccanismo di funzionamento codice JavaScript lato server, invece di usare Python, o PHP, o altre lingue. JavaScript è particolarmente adatto per le applicazioni di chat e in tempo reale applicazioni, considerando che PHP non è un grande lingua per attuare qualcosa come un server di chat, dove gli utenti rimanere in contatto con esso costantemente. PHP è più di una visita di me una volta, tornare un risultato, e quindi fare clic su un altro collegamento un po ' secondi o minuti da ora. Mentre Node.js e JavaScript può essere usato più per le connessioni persistenti. Altre lingue che si sospetta sono comunemente usati per le cose web? PUBBLICO: Sarebbe jQuery essere un quadro? David J. MALAN: Buona domanda. Nessuno dei due. Chiamerei jQuery una biblioteca, dove ancora una volta una libreria è solo un mucchio di codice che qualcun altro ha scritto che in genere risolve alcuni problemi che rende, si spera, più facile per voi per fare il vostro lavoro. E mi permetta di fare un esempio di ciò nel contesto del web. Nel contesto del web c'è questo linguaggio, JavaScript, che vedremo in seguito, per cui si potrebbe dire qualcosa di simile questo-- "Document.getElementById." E che cosa ho chiamo ieri? In primo luogo, credo, è stato l'ID univoco ho dato ad un elemento che si presentava così. "P id =" prima ">" e poi abbiamo avuto come "ipsum lorem", eccetera. Quindi, se dovessi scrivere un programma in JavaScript per manipolare in qualche modo, modificare le pagine web che abbiamo stavano giocando con ieri, Vorrei usare questo riga evidenziata di codice per ottenere quel particolare frammento di codice HTML dalla mia pagina, quel particolare nodo, come noi chiameremo. Tuttavia, in jQuery, invece di scrivere questo, che è crudo code-- JavaScript appena fuori dalla scatola, è così che si scrivere it-- si sarebbe invece solo dire, "#primo." Questo è equivalente. E così basati esclusivamente su tale molto Esempio arcano, cosa forse è l'argomento per l'utilizzo di jQuery? Perché uno sviluppatore avrebbe usato una libreria come jQuery, sulla base di questo esempio isolato, forse? PUBBLICO: meno codice. David J. MALAN: Sì. E 'meno codice. E 'solo più veloce da digitare. Il contrappunto è che sembra più paura. Non si può davvero leggere da sinistra a destra. Infatti, perché è principalmente punteggiatura ora invece di effettive parole, Posso tipo di dedurre che "Document.getElementById" ottiene un elemento dal documento dal suo ID. Sono davvero in grado di utilizzare tale mnemonica di questa cosa qui. Quindi è un compromesso. C'è una sofisticazione che deriva spesso con l'utilizzo di librerie, in particolare come jQuery. Ma la realtà è jQuery è tipo di diventare un standard de facto, in modo che quasi tutti questi giorni che scrive codice JavaScript utilizza jQuery o qualcosa simile, e scrive non è più un verbose espressioni come questo, perché ancora una volta, l'umanità ha imparato, wow, che era sorta di un'occasione persa per rendere la vita più facile. Così gli esseri umani fanno la vita più facile. Buona domanda. Altre lingue da considerare. Direi che tra questa lista Ruby è molto popolare. E così nel mondo della Ruby, c'è un quadro chiamati Rails, che è molto popolare. Quindi, Ruby on Rails è un comunemente usato espressione. Anche in questo mondo, mi permetta cerchio Java per roba web, dove nel mondo di Java si potrebbe avere JSP o Java Servlet, che è una tecnologia comune. E questo è solo ancora modi di utilizzo che il linguaggio in un ambiente server. Che cosa significa? Se hai un fisico Server, si farebbe letteralmente scaricare il software del server Web e installarlo in modo tale di avere il supporto per uno dei questi framework, con il quale si potrebbe, a sua volta, utilizzare uno o più di queste lingue. E in realtà, se ti iscrivi per come un host web o di alcuni dei cloud servizi abbiamo parlato ieri, spesso la roba appena viene fornito con il la configurazione della macchina per voi. Non è necessario impostare questa funzione manualmente. Ma se avete fatto, questo è dove il ruolo di amministratore di sistema, per così dire, entra in gioco. Lui o lei sarebbe in realtà fare questo genere di cose per voi, o il cosiddetto webmaster Spesso sarebbe fare questo per voi. Tutto ok. Tutte le domande su alcuni di questi qui? O qualsiasi opportunità a tutto per chiedere di lingue? Quadri? Allora mi permetta di introdurre solo un altra libreria questo è anche molto comune in questi giorni. Questo elenco potrebbe continuare all'infinito. E questo è una specie di biblioteca cominciando a cadere in disgrazia. E 'stato in giro. E 'stato reso popolare da Twitter per qualche tempo. E ora un sacco di siti web, un sacco di sviluppatori lo usano. Ma le cose nuove sono in arrivo fuori e venendo. Ma lasciate che vi dia un senso di che cosa significa utilizzare una libreria. Quindi, di nuovo, JavaScript è un linguaggio molto popolare. CSS o Cascading Style Sheets, abbiamo parlato ieri. Anche questo è onnipresente. Nessuno fa una pagina web di oggi senza l'utilizzo di HTML e CSS in minima parte. Ma non è sempre facile di fare certe cose. E così mi permetta di andare a getbootstrap.com. Ops. Questo non è il modo in cui incantesimo. Getbootstrap.com, che sta per portare me alla pagina di destinazione per questa libreria. Così hanno generosamente chiamano essi stessi un quadro, che è una specie di specie di fiera, ma vorrei ancora chiamarla più di una libreria di un quadro. Ma questi sono solo semantica discutibili. Lasciatemi andare alla loro scheda CSS e lasciami andare a qualcosa di simile. Quindi, ricordare ciò che i nostri moduli guardarono come ieri su Cloud9? E 'stato abbastanza brutto. pulsanti vecchia scuola. Credo che il pulsante era grigio da predefinito. E tutto era davvero formattato piuttosto disordinatamente. Quindi, se si desidera che i moduli web a guardare un po 'nicer-- let me lo zoom in qui. E da più bello io davvero solo significa estetica molto nitpicky. Così notare come la casella di posta elettronica ci ha arrotondato angoli rettangolari ad esso. Quindi è un po 'più pulito lì. Si noti che la parola e-mail è lì fino a quando mi metto a digitare e poi va via. Ecco, questo è un po 'bella caratteristica. Si noti come la cosa è un po ' incandescente bene, che alcuni di voi questo ottenere gratuitamente dal tuo browser, ma alcune di queste è anche librerie, codice che altre persone hanno scritto che questo danno. Qualcosa come questo mi dà la mia password. Questo pulsante è un po 'più sexy rispetto alla predefinito. Molto in voga in questo momento. Da quando iOS 7 o giù di lì, la mondo ha ottenuto molto piatto, mentre il mondo prima di allora un sacco di ombre, un sacco di riflessioni sulle icone. Proprio come nel mondo dell'abbigliamento, c'è tendenze della moda che vanno e vengono. Ora tutto è piatta sul telefono. In realtà, i pulsanti sul tuo iPhone ora sono solo link blu. Non c'è spesso anche pulsanti circolari. Quindi, queste sono solo le cose che andare dentro e fuori di Vogue, e quindi questo è come si potrebbe fare una più moderna forma di web alla ricerca. Pulsanti. Così Bootstrap ha un sacco di belle pulsanti. Quindi, se volete pulsanti blu, bottoni verdi, blu, arancio, rosso. Bootstrap facilita di fare queste cose. Questi sono i tipi di cose che si poteva assolutamente hanno fatto ieri con i CSS e con HTML, ma è solo un dolore al collo. E così, invece, che cosa sarebbe Bootstrap dispone che fai è qualcosa di simile. Se si desidera un button-- scopre questo è un tag HTML non abbiamo usato yesterday-- e si desidera guardare in questo modo tasto verde, letteralmente solo dargli una lezione, cosa che abbiamo fatto parlare di ieri, di "btn BTN-successo". Perché quelle parole? Twitter, di Bootstrap gli autori, si avvicinò con queste parole. Avrebbero potuto chiamato loro tutto quello che vogliono. Ma che cosa stai ricevendo ora è qualcun altro a Twitter, in questo caso, ha capito come si fa a fare un pulsante di aspetto gradevole e pulita e verde. Hanno confezionato up che la funzionalità in una classe CSS, denominata "btn" e "BTN-successo", in modo che nessuno di noi può ora usarlo senza nemmeno pensarci esso. Così hanno estratta via la nozione di un pulsante verde quindi non abbiamo a cuore attuazione noi stessi. Possiamo in realtà concentrarsi sull'attuazione cose di interesse per noi. Se scorriamo qui. Messaggi di errore sullo schermo. A volte si vuole un po messaggio a comparire sulla parte superiore del browser. Chiunque di noi potrebbe fare questo con un po ' sforzo, dopo la lezione di ieri, ma perché si preoccuparsi? Questo è un tale poco interessante dettaglio estetico. Alziamoci in spalle di Bootstrap e far loro ci danno le cose come questo, dove abbiamo letteralmente, per ottenere una scatola rossa, solo fare un paragrafo tag con una classe di-- dispiace. "Bg-pericolo" darebbe noi la casella rossastro, invece. Ora andiamo al le cose più interessanti. Se torno in cima questa pagina e andare a Componenti, ora il mondo si fa più interessante. Per esempio, molto comune è menu a discesa come questo. Questo sarebbe un assoluto il dolore da implementare. E non è stato così a lungo fa che abbiamo programmatori avrebbe dovuto attuare tali tipi di menu da zero. Ma è un paradigma così comune che le biblioteche come Bootstrap solo vi darà la possibilità di fare una menu a discesa molto, molto più facilmente. Non c'è un modo per farlo, ma se ho letto la documentazione Vorrei vedere che, OK, devo usare questo HTML se voglio un menu a discesa che si comporta come tale. Allo stesso modo, andiamo a pulsante a discesa. Quindi, questo è ancora più elaborato. Se io voglio che questo aspetto di un tasto ma quel piccolo triangolo significa Dovrei cliccare su di esso e ottenere questo menu, questa è usando un linguaggio chiamato JavaScript. E tutti potremmo implementare questo in JavaScript. Ma di nuovo, questa è una ruota non si vuole reinventare. Hai voglia di toglierlo biblioteca scaffale per questo. Andiamo a qualcosa come barre di avanzamento. Quindi, qualcosa di simile a questo è una specie di fresco. Se hai mai visto un progresso barra in movimento attraverso lo schermo, attuazione che spesso è solo un'icona di filatura. Infatti, proprio come un a parte, lasciare andare a Ajax-- cosa si tratta? Ajax informazioni? Ops. Ajaxinfo. Permettetemi di ricordare l'indirizzo. Ecco quà. Quindi, se avete mai visto qualche animazione mentre il caricamento della pagina, o pensare, o il salvataggio, o la creazione di qualcosa, potrebbe vedere tali animazioni come queste. Quindi diamo un'occhiata a qualcosa come questo qui, e cerchiamo di scegliere un colore di primo piano verde, che si sente tipo di amichevole. Posso fare clic su questo? Vieni uno. OK. Ci basta andare con rosso perché questo è quello che stiamo ottenendo. Quindi qui abbiamo. Quindi, se avete mai visto questo su uno schermo, per cui improvvisamente appare e poi improvvisamente scompare, ciò che è esso che è applicazione di tale? Beh, questo è solo un GIF. G-I-F. E questo è un animato file, che significa semplicemente è come una vecchia scuola di fumetti. C'è solo un mucchio di diverso frame che sono in corso [balbuzie] e solo ripetendo. Ed è la creazione del illusione del movimento. Quindi, non appena una pagina è fatta caricare o fare qualcosa, cosa fa un programmatore fare? Beh, lui o lei appena nasconde questa immagine. Quindi tutto una barra di avanzamento è è una specie di come un film che si sta guardando. Sei una sorta di ignari del fatto che non è in realtà fare nulla, è solo in movimento. E poi, quando è fatto progredire, hanno appena nascondono o spegnerla. E questo è tutta la magia che sta succedendo lì. Bootstrap vi dà qualcosa di un po 'di fantasia, per cui si può effettivamente vedere una percentuale come va, ma troppo è appena sorta di una semplice animazione. Diamo un'occhiata ad alcune finale altri esempi complessi qui. Qualcosa di simile a un modale. Qualcuno sa che cosa un modale è? Una finestra modale è generalmente uno che si suppone di prendere il controllo del primo piano e impedire di fare qualsiasi altra cosa. E 'sorta di forza per l'utente attenzione al centro dello schermo, bloccandoli out, tipicamente, di tutto il resto. Quindi, se io lancio questa demo, il schermo generalmente diventerà grigio. Beh, come facciamo è grigio? Ebbene, noi probabilmente solo cambiato il colore di sfondo come abbiamo fatto ieri o qualcosa di simile. Forse è un overlay che semi-trasparente. E ora notate che si può fare cose di fantasia come questo. Quindi, se mai cliccare su un pulsante e vogliono un po 'di pop fuori a comparire, ce la puoi fare. E così che si preoccupa per tutto-- sì? PUBBLICO: Quindi, con Bootstrap, per farlo incorporato, è il più semplice come ieri abbiamo fatto la pagina di stili CSS? David J. MALAN: Infatti. Davvero buona domanda. Lasciatemi andare alla Guida introduttiva. E sì. Tutto quello che dovete fare per uso Bootstrap è essenzialmente copiare e incollare queste tre lunghe file di codice nella parte superiore del proprio web page-- la testa del vostro page-- e sei attivo e funzionante. E ci sono diversi modi di fare , ma questa sarebbe la più semplice. Così che cosa è utile di tutto questo? Beh, se non sei tanto il realizzatore di un sito web ma si sta cercando di progettare, o se si vuole fornire a qualcuno con diagrammi wire frame, per così dire, o consegne solo dell'artista di ciò che si vuole fare, io, a questo giorno, spesso andare in un sito come Bootstrap, dove se io desidera implementare something-- come di recente nel campus abbiamo voluto implementare uno strumento web based per la navigazione catalogo dei corsi di Harvard, rendendo più facile per gli studenti per navigare attraverso corsi e aggiungere i corsi di lista della spesa, per così dire, al tipo di decidere che cosa volevano prendere. Stavo cercando di immaginare per me stesso, quali ingredienti sarebbe vogliamo usare per costruire questo? Quale sarebbe l'interfaccia utente come? E proprio guardando attraverso un sito come questo o altri tali siti biblioteche, si può trarre ispirazione, perché wow, Posso usare questo widget, e questo widget, e questo widget. E poi davvero quello il programmatore avvia da fare, soprattutto in questi giorni in questo altro mondo moderno di programmazione web, è la programmazione è sempre più A proposito di cablaggio cose insieme. Una specie di prendere questo al largo della piattaforma, questo al largo della piattaforma, questo al largo della piattaforma, e voi di essere quello intelligente per collegare tutti quei puntini, ma alla fine costruire qualcosa di nuovo da in piedi sulle spalle di altri, in modo da non spendere un mese attuazione di una goccia stupido menù a tendina, che è in realtà difficile da fare se si vuole farlo funzionare su Chrome, e IE e Firefox, ed eventuali numero di altri browser. Questo è il motivo per cui non vi è questo ricco software commerciale e open source industria così. PUBBLICO: Così fa Bootstrap si aggiorna e si deve quindi aggiornare i link? David J. MALAN: lo fa. Beh, sì, lo fa. Bootstrap è attualmente alla versione 3.3.6. E in generale quello che si fare-- questo è in realtà degno di nota. C'è ciò che è generalmente conosciuto come un controllo delle versioni semantica sistema al mondo. Non tutti fa questo. Ma se avete visto i numeri di versione che sono di forma x.y.z-- così, per esempio, la prima versione di un programma potrebbe essere 1.0.0. O se è molto, molto beta o anche lo stato alpha, il che significa che l'uso a proprio rischio, non è davvero pronto per il debutto, si potrebbe anche iniziare 0.0.1 o qualche tale designazione. Ma se il software si avvia alla versione 1.0, 1.0.0 o equivalentemente, In genere, ciò che è comune questi days-- anche se non è omnipresent-- se una società o di un correzioni programmatore singoli alcuni bug in qualche pezzo di software che realmente è stato un errore, la cui correzione non dovrebbe si impatto a tutto-- non cambia comportamento del programma, solo risolve qualcosa che non funzionava properly-- si farebbe in genere aggiornare il valore z lì. Il che significa una persona come Kareem potrebbe semplicemente andare nel suo sito web, cambiare alla cieca il numero di versione da 1.0.0 a 1.0.1, salvarlo, nave esso, e in teoria, non devono temono che ha appena rotto il suo sito web a causa di una certa mancanza di funzionalità, perché qualcos'altro si è rotto. Nel frattempo, se il programmatore o qualche azienda dovevano fare qualche significativo cambiamento che aggiunge funzionalità, Io ci potrei aggiornare 1.1.0 perché sono in realtà modificare il comportamento della biblioteca. Ti sto dando forse più funzionalità. Infine, se dovessi davvero radicalmente il software in modo tanto che si romperà molti utenti siti web o applicazioni, allora io sono obbligato, in questo modello, per aggiornare il numero di versione principale troppo, che è una modifica sostanziale. In altre parole, potrei avere alcun supporto per coloro goccia menu a discesa. Quindi, se si esegue l'aggiornamento a 2.0, la metà il vostro sito potrebbe smettere di funzionare. E questa è una sorta di un segnale per la comunità come a ciò che è coinvolti nel fare un aggiornamento. Una buona occasione per rilanciare. Altre domande? Tutto ok. Bene diamo uno sguardo a quello finale argomento in questo segmento di programmazione di stack tecnologici, cioè legati al mobile. Così nel mondo dei telefoni cellulari di oggi si have-- e iPad, e le superfici, e tutti quei generi di devices-- avete un sacco di scelte quando si tratta di attuare un'applicazione o un sito web per i dispositivi mobili del cliente. Quindi, solo per indicare il evidenti, forse in questi giorni, quali sono le piattaforme a sviluppare per nello spazio mobile? Quali dispositivi si potrebbe desiderare di sostenere con la vostra applicazione o sito web? PUBBLICO: Apple. David J. MALAN: OK. Così dispositivi Apple. Quindi questo significa che iPhone, e che significa iPad, e forse anche iPod. Cos'altro? Olivier? PUBBLICO: Android. David J. MALAN: Android. OK. Così i telefoni Android, Android compresse, l'Android Market è anche messier perchè-- e anche Apple sta diventando disordinato. Mentre c'era una volta iPhone era una certa dimensione, e iPad era una certa dimensione, e iPod era una certa dimensione, ora abbiamo iPad Mini, e la sottile quelli, e l'iPhone 6 Plus e 6. Sta diventando un disastro. Sta diventando il mondo Android. E lo dico con una sorta di laminazione i miei occhi perché dal di uno sviluppatore prospettiva, è un dolore al collo quando non si dispone di Steve Jobs ' visione del controllo assoluto su tutte queste specifiche. Apple fa ancora perché sono quelli costruire l'hardware. Ma è una bella cosa, se Sono uno sviluppatore di software, a poco sapere che il mio iPhone sta andando sempre per essere così grande perché questo significa che so sempre quanto bene immobile dello schermo che ho. Quindi, se voglio mettere un'icona nell'angolo in alto a sinistra, che sta per essere nella stessa identica immettere sul dispositivo di ogni singolo cliente. Ma nel mondo di iPhone 6s e iPhone 6 Pluses e nel mondo di Android telefoni, è tutta la mappa. E così rende più difficile da programmare le cose, soprattutto le interfacce utente, perché ora si deve iniziare a sistemare le interfacce utente relativamente, non assolutamente. E lo stesso è stato vero su browser, e desktop e laptop per anni perché, naturalmente, avere diverse dimensioni dello schermo. Cos'altro? Si potrebbe avere superfici, come da Microsoft. Potresti avere-- PUBBLICO: Windows phone. David J. MALAN: Che cos'è? PUBBLICO: Windows phone. David J. MALAN: Sì. Così telefoni Windows può ancora essere trovato. Tipo di sorta di BlackBerry, ma continuare a provare. E poi mazzi di altri dispositivi. Così, per la maggior parte, facciamo dicono che questi sono quelli a cura di in questo momento. Certamente la roba Apple, certamente la roba Android, e tra di Windows, come compresse di superficie sembrano essere prendendo piede abbastanza bene. E così tra quei dispositivi, se si vuole stendere, diciamo, una presenza mobile per il tuo società, che tipo di decisioni di progettazione Non si deve fare? Beh, abbiamo già detto nel mondo di Apple, vi è almeno due lingue che sono tipicamente utilizzati. Uno era chiamato cosa? PUBBLICO: Objective-C. David J. MALAN: Sì. Così Objective-C, che è il più vecchio. E 'anche la lingua che molti Mac le applicazioni sono ancora scritte in. Poi l'altra nuova era? PUBBLICO: Swift. David J. MALAN: Swift. E queste sono il tipo di due per capire per impressionare la gente. Poi, nel mondo Android, Che lingua fa uso di Android? PUBBLICO: C #? PUBBLICO: Java. David J. MALAN: Java è il linguaggio di "du jour". Nel mondo di Windows, certo, diremo C # in questo caso. Quindi già questo è una specie di fastidioso, perché ciò che è l'asporto per un business proprietario o qualcuno che ha appena vuole stendere una presenza mobile? Come, dannazione? Come, se voglio sostenere una base di utenti piuttosto ampio, Devo scrivere, sembrerebbe, tre applicazioni separate. Uno in una di queste lingue, uno in Java, uno in C #. E anche se voglio la funzionalità identici, non importa. Ho ancora bisogno di utilizzare diversi lingue perché Apple e Microsoft, e Google tutto il supporto diversi ambienti. E questa è stata una sfida per anni. Indietro nel giorno, in cui chi è abituato a comprare software in un negozio di computer in shrink scatole avvolti, si dovrebbe attuare una politica raggiungere per il ripiano Mac, o for-- forse questo piccolo Mac shelf-- o la più grande piattaforma di Windows e acquistare alcuni software. E molto spesso, non c'era nemmeno qualsiasi cosa per te sullo scaffale Mac. Perché? Ebbene, le aziende hanno deciso se il 90% del mondo, 95% del mondo ha PC, perché preoccuparsi anche attuazione di cose su Mac OS? Come un totale aside-- digression-- perché è che Mac sembra così impermeabile ai virus, e worm e minacce alla sicurezza? Apple è meglio a questo? Meglio a mantenere computer protetti? PUBBLICO: pubblico più piccolo? David J. MALAN: Ecco probabilmente il più grande bit ad esso. Così i molti utenti di Mac hanno a lungo sostenuto, oh, usare un Mac, sarete immuni ai virus, e worm e tutte queste cose che hanno a lungo afflitto PC. Questo potrebbe essere perché Apple ha programmatori migliori e scrivono software migliore, o il sistema operativo è stato progettato meglio. Forse, ma probabilmente non. E 'probabilmente che quando sei un 12-year-old, o 30 qualcosa sorta di seduta a scrivere a casa software dannoso di prendere in consegna il mondo, si sta andando ad andare dopo il target di riferimento molto più grande. Il 95% del mondo che potrebbe essere in esecuzione Windows o qualche sue varianti. Quindi c'è un po 'su entrambi i lati. Ma a loro credito, Apple, a mia conoscenza, non si è veramente se stessi propagandato come più sicura, dal momento che si sta solo invitando dramma se si effettua tale affermazione, penserei. Tutto ok. Senza entrare troppo in basso che, come possiamo risolvere questo problema? Avete acquistare o avete a pagare tre persone diverse per sviluppare le tue applicazioni? Si fa a scegliere uno sopra l'altro? Quello che dovrebbe guidare il vostro pensando qui ne pensi? Kareem? No. Qualcun altro. PUBBLICO: Basta venire con l'hardware. David J. MALAN: Vieni con l'hardware? Cosa intendi? PUBBLICO: Per la ambiente. [INAUDIBLE] David J. MALAN: In modo che è vero. Ma i clienti, Nel frattempo, potrebbe avere iPhone, che potrebbero avere i telefoni Android, che potrebbe avere compresse fatte da Microsoft. Così come si dispone di una strategia mobile per tutti questi diversi utenti? Sembrerebbe che se costa, diciamo $ 1.000 a fare un iPhone applicazione, sta andando a costare $ 2.000 a rendere un'applicazione per iPhone e un applicazione Android, o $ 3000 per supportare anche i dispositivi Windows pure. Questo è probabilmente piuttosto un eufemismo, e non potrebbe anche essere una relazione lineare del genere. PUBBLICO: Se si desidera avere un app o Non, si può avere il sito reattivo. David J. MALAN: Good. PUBBLICO: Oppure si può avere una applicazione nativa. David J. MALAN: Sì. Quindi, in tutto questo contesto qui, abbiamo parlato di quello che chiamerebbero applicazioni native. Cioè le applicazioni che sono scritte nella lingua nativa di quel dispositivo. Così nativo Objective-C o Swift codice o in Java, o in C #. Il che significa che quando si scarica, diamo dire Snapchat, una popolare applicazione, o quando si scarica Facebook per un telefono, si sta scaricando sia il versione scritta per il vostro iPhone, o scritta per il vostro telefono Android, o scritta per la superficie. Ma c'è un'alternativa. Come Olivier alludeva, si può effettivamente utilizzare HTML 5 invece, utilizzando quello che viene chiamato un web applicazione, per cui è sufficiente implementare la presenza mobile e qualsiasi funzionalità. Quello che voglio dire con presenza mobile? Come il vostro sito web che ha la tua informazioni di contatto, un elenco di tutti i vostri prodotti, forse ha un carrello carrello, forse si vendono le cose attraverso di essa. Qualunque sia la vostra applicazione è, attuarlo, non in Objective-C, o Swift, o Java o C #, ma in HTML 5, che era la lingua abbiamo guardato a ieri, con JavaScript e CSS. E ciò che è bello di quelli tre è che per eseguirli, è necessario solo ciò che pezzo di software? PUBBLICO: Un browser web. David J. MALAN: un browser web. E il migliore che conosco, tutti questi dispositivi sono dotati di browser web, quindi l'utente non ha dovuto installare qualcosa di speciale. Così si può semplicemente dire al vostro pubblico, i clienti, andare a acme.com nel vostro browser e ti basta avere una esperienza web based che riempie ancora lo schermo, ma non si deve preoccupare tutti questi costi e tutta questa complessità. Ma sicuramente ci sta per essere un fermo qui, giusto? Soprattutto se faccio notare che un paio di anni fa, la prima versione di applicazione mobile di Facebook era soprattutto un'applicazione HTML 5. E hanno, più Di recente, è reimplementato nelle altre applicazioni. Allora, perché non è vero subito voglio dire, Beh, ovviamente stiamo andando a fare questo? Quali potrebbero essere i costi nascosti essere? PUBBLICO: Performance. David J. MALAN: prestazioni? In che modo vuoi dire? PUBBLICO: L'applicazione nativa ha più prestazioni. David J. MALAN: In modo che è vero, per un paio di motivi. Siamo in grado di semplificare eccessivamente la risposta. E richiamare la nostra discussione interpretato contro linguaggi compilati. Questo è HTML 5 e con essa, solo per essere chiaro, Javascript-- comunemente scritto JS-- e CSS sono tutti linguaggi interpretati, anche se solo JavaScript è un linguaggio di programmazione. E così contro questi, che alcuni di questi sono compilati, almeno questi sulle tre ruote Objective-C, Java e C # - questi, in teoria, deve solo essere più veloce. Ma c'è un'altra realtà for-- PUBBLICO: Funzionalità? David J. MALAN: Che cos'è? Pubblico: funzionalità. David J. MALAN: Funzionalità? Come mai? AUDIENCE: Utilizzare la fotocamera il vostro telefono o qualcosa del genere. È possibile utilizzare quelli con il browser. David J. MALAN: Esattamente. Stanno sec-- PUBBLICO: [INAUDIBLE] David J. MALAN: Questo è un altro buono. C'è caratteristiche che vengono con i telefoni cellulari di oggi che non sono, di progettazione, di sicurezza motivi, accessibili ai browser web. Perché sarebbe sorta di una cosa raccapricciante, se proprio quando si visita google.com, o cnn.com, o qualsiasi website.com, che quel sito ha il potere di trasformare sulla fotocamera, scattare una foto di te, e quindi utilizzarlo. Ma non si vuole un sito web casuale che si visita per la prima volta di avere questa capacità. E così quello che il telefono produttori in genere fare è semplicemente negare l'accesso a questo tipo di informazioni a un browser, il che significa non può attuare la telecamera. Non si può implementare le notifiche push, i segnali acustici che si ottiene sullo schermo con brevi messaggi. E infatti, anche il GPS è unico tipo di una sorta di disposizione dei browser web. Se hai mai, su un computer portatile o su un dispositivo mobile, tirato su qualcosa come forse CNN.com, ma anche stazioni di notizie locali tendono a fare questo, viene richiesto spesso con un message-- foxnews.com vuole sapere la vostra posizione. Approvare o rifiutare. Ebbene, il browser sta tentando di accedere le informazioni GPS dal telefono. Ma per fortuna Microsoft, e Apple e Google hanno deciso che si sente come si tratta di una situazione utile, vogliamo Google Maps e altri strumenti per lavorare, ma non vogliamo che a strisciare la gente fuori semplicemente consentendo a qualsiasi sito web per fare questo. Quindi cerchiamo di specie di raduno a metà strada e richiedere all'utente. Ma questo non è necessariamente il caso con tutto l'hardware, come la fotocamera e con la spinta notifiche e simili, quindi potrebbe essere necessario sacrificare alcune caratteristiche. Ma le prestazioni anche. Sta diventando meno evidente al giorno d'oggi, forse come LTE catture e veloce velocità di internet sui telefoni, ma è possibile tipo di sentire la differenza. Come una applicazione web based appena si sente più lento, in genere, di una applicazione nativa, in parte perché una applicazione web based per definizione su internet. E 'parlando ai server sul web. E se la connessione di rete è lento, anche lo scorrimento potrebbe essere lenta. Ma un'applicazione nativa, avete già pre-downloaded-- probabilmente quando eri a casa da App Store, o almeno pre-scaricato nella sua interezza in precedenza, qualunque sia la vostra speed-- collegamento e così ora avete tutto il bit che in genere si ha bisogno. Tranne forse alcuni dati che viene da un server. Quindi questi sono compromessi qui. C'è una specie di mezzo compromesso, infatti. E penso che you-- AUDIENCE: Utilizzare la linea dati. Nelle applicazioni native, è possibile [INAUDIBLE] David J. MALAN: Assolutamente. Quindi c'è il problema non in linea, che è davvero fastidioso se non si può giocare a qualche gioco o l'uso alcuni software solo perché sei in una cantina da qualche parte o in un ascensore. Una applicazione nativa è resiliente con una maggiore probabilità contro che, supponendo di avere tutte le dati necessari a livello locale. Quindi non vi è una terza opzione qui. E cerchiamo di disegnare lo spettro come app nativa qui e web app qui. E cosa c'è nel mezzo è qualcosa called-- e penso che si potrebbe avere usato la parola prima, forse? applicazione ibrida. E come suggerisce la parola, è qualcosa nel mezzo. E 'una specie di un'applicazione web e è una specie di un'applicazione nativa. E che cosa significa? Si scopre ci sono frameworks-- per usare un termine da software earlier-- che altre persone hanno scritto per ognuna di queste piattaforme. Questi ed altri dispositivi ancora. In realtà, lasciami andare a PhoneGap, che è uno tale quadro che crede Adobe possiede ora. Lasciatemi andare alla Guida introduttiva. Vediamo. Vedere se riesco a vedere un elenco di strumenti. Hardware. Iniziare. hardware PhoneGap. Vediamo. accesso all'hardware PhoneGap. Fammi vedere se possiamo trovare un po ' grafico che hanno usato per avere. Questo è un altro sito. È utile? No. Ecco andando sprecare il nostro tempo. hardware PhoneGap. Dispositivi. API dispositivo. No, hanno spostato esso. PhoneGap. Andiamo un ultimo sguardo a questo e vedere se posso mostrarvi. Iniziare. Installare PhoneGap. Installare app mobile. Dai. Hanno riorganizzato tutto. Tutto ok. Oh, va bene. Bene, qui andiamo. Questo non è così illuminante, ma questo è quello che era una sorta di cercando. Così PhoneGap è un framework che si possibile scaricare gratuitamente che ti dà del codice di avviamento, in sostanza. Così alcuni codice che hanno scritto che non fa molto di niente. Ma che cosa gli dà in sostanza è l'equivalente di un'applicazione che mette solo grande rettangolo sullo schermo dell'utente. Non mettere una barra degli indirizzi, come un del browser, non mette un indirizzo. E 'appena mette un grande rettangolo. E si configura questa grande rettangolo, sotto la cappa, di andare effettivamente a acme.com, o forse m.acme.com, per mobile.acme.com, ma l'utente non conosce sono a quell'indirizzo. Tutto quello che vedono è il contenuto della pagina web. Ma ciò che è bello di questo essere una applicazione ibrida è che ciò che PhoneGap e altre società stanno dando voi è che si sta dando un po 'di codice in Objective-C o Swift, o un po 'di codice in Java, o un po 'di codice in C #, ed essenzialmente, tutto ciò che dovete fornire è minimamente la indirizzo della vostra applicazione web based. E poi si bundle questo tutti insieme e si hanno neanche accedere al sito via Internet, o ancora di memorizzare nella cache locale copiare all'interno dell'applicazione, e quindi si salva l'applicazione in formato iPhone, telefono Android formato, il formato di superficie, o qualsiasi numero di altri dispositivi. Si carica ciascuna di queste versioni per il Play Store di Google, ad App Store, al Windows Store, e così via. E ora, si può avere tutto il vostro il pubblico scaricare veramente una applicazione nativa, sebbene la maggior parte del codice era scritto da qualcun altro, ma il contenuto di quella app nativa tutto provengono da, di solito, il proprio sito web. Così si continua a scrivere il tuo sito web in HTML, JavaScript e CSS. Allora, perché sfocatura queste righe? Perché avere una applicazione ibrida che una specie di nativo, ma anche tipo di web based? Qual è il punto di l'aggiunta di questa complessità? Voglio dire, anche ancora, proprio da guardando attraverso questa pagina, Guida introduttiva si sente come che ha un sacco di passi per me fare prima can-- PUBBLICO: Riusabilità? David J. MALAN: Riusabilità? Cosa intendi? AUDIENCE: del codice sorgente. Quindi lo stesso codice verrebbe eseguito su tutte le diverse piattaforme. David J. MALAN: Sì. PUBBLICO: [INAUDIBLE] David J. MALAN: Perfetto. Se il tempo è stretto e se si non hanno che molti developers-- forse ne hai uno sviluppatore e lui o lei certamente non sa tutte queste environments-- certamente non bene, e certamente non può programma in tutti e tre contemporaneamente e spedire tre prodotti in il tempo consentito per uno, si può avere lui o lei costruire tutto in HTML e JavaScript e CSS, e poi imparare un po 'piccolo po 'di applicazioni native, appena sufficiente per scaricare un quadro come questo, per poi caricare il tuo prodotto tutte le varie app store in modo che ora avete un'applicazione nativa. In modo che sembra come una win-win, ma ancora una volta, per essere chiari, Quali sono i potenziali i costi o le trucchi? PUBBLICO: prestazioni? David J. MALAN: Sì. Prestazione. E 'difficile da descrivere a parole. Quindi, se si prende in fede una applicazione mobile, una applicazione web sarà tipicamente eseguire più lentamente. Potrebbe non sembrare abbastanza giusto, perché in iPhone, e in telefoni Android, e dispositivi Windows, non c'è sempre una sorta di aspetto di default e si sentono a tutti i pulsanti ei menu. E le aziende del web, possono provare ravvicinare tali estetica con le librerie come Bootstrap, ma il user-- un user-- astuta sta per sapere che qualcosa non è del tutto proprio qui. E va bene, forse questo non è un grosso problema. Ma il problema di prestazioni assolutamente è un grosso problema. applicazioni native tenderanno a solo essere molto più reattivo e quindi meglio. E così, quello che poi potrebbe essere Il meglio dei due mondi? Se sei un piccolo particolare società o di un piccolo gruppo, non si hanno le risorse di sviluppare un'applicazione in parallelo su tutte e tre le piattaforme, e francamente, si sente come questa è una cattiva idea in ogni caso perché se si tira fuori e su tutti e tre allo stesso tempo si rendono conto, avremmo dovuto aggiunto alcune caratteristiche o fatto qualcosa di diverso, ora si deve risolvere il problema in tre posti, non uno. Qual è forse l'ottimale la strategia complessiva qui, se le risorse e il tempo sono stretti? PUBBLICO: Basta farlo su iOS. David J. MALAN: Questo non è irragionevole. iPhones, almeno nel Stati Uniti, siamo super popolare. Android sembra ancora avere dominante quota di mercato, a livello globale, nel complesso. Quindi non si è necessariamente rappresentativo della totalità del globo questa settimana. Ma questo è assolutamente uno decisione. Voglio dire, nel campus qui pensare qualche numero atroce o la percentuale di studenti universitari avere iPhone e telefoni Android non. Ma all'estero, è una specie di l'opposto. Così si decide, sulla base di pubblico. Come fai a sapere ciò che il pubblico ha? Bene, abbiamo imparato un trucco ieri. Si potrebbe chiedere loro. Se si dispone di un pubblico in cattività è possibile inviare loro una forma di indagine. Oppure si può semplicemente fare che cosa? PUBBLICO: Google Analytics? David J. MALAN: Che cos'è? PUBBLICO: Google Analytics. David J. MALAN: Google Analytics. Sì. O ancora di più una sorta di vista tecnico, solo guardare il proprio web server log. Perché ciò che accade ogni volta un browser, se laptop, desktop o telefono visitare il tuo sito web? Mandano che HTTP che spettacoli che cosa browser e sistema operativo che state utilizzando. Così si può dedurre, con alta probabilità, ciò che il vostro demografico sta usando in questo modo e quindi regolare. Quindi supponiamo che è inaccettabile. Questo è una sorta di male per il business, se Gli utenti Android non possono comprare i nostri widget. PUBBLICO: Che tu sia andando carica o no? David J. MALAN: Sia si sta andando a pagare? Quindi OK, si ottiene quello che si paga. PUBBLICO: Se la vostra applicazione è gonna essere libero o se è gonna-- David J. MALAN: OK. Così forse si potrebbe recuperare i costi in questo modo, or--? PUBBLICO: Ho letto uno studio, una volta che ha detto più utenti di Apple pagare per le applicazioni versus-- David J. MALAN: Questo è vero perché sono già pagare di più per i loro dispositivi. Quindi non irragionevole una supposizione. PUBBLICO: [INAUDIBLE] David J. MALAN: OK. Quindi, se sono più disposti a pagare, poi al diavolo gli utenti Android. Non stanno andando a noi pagare nulla comunque. Potremmo anche mettere a fuoco le nostre priorità, almeno per i primi mesi o un anno, su iOS. Totalmente ragionevole. Che cosa è un più inclusiva strategia di così? Maybe-- che cos'è? PUBBLICO: [INAUDIBLE] David J. MALAN: A più expensive-- così forse investire di più dentro-- andare avanti. PUBBLICO: Sì. Basta un sito web mobile. David J. MALAN: così fanno un sito web mobile e non anche preoccuparsi di questa complessità. O forse una strategia ragionevole, che anche Facebook ha preso, si inizia con un ibrido applicazione perché non è che molto più difficile per fare questo di questo. Basta leggere alcuni documentazione e capire come per caricare le cose per l'App Store. Così forse si inizia con questo, in modo che il primo giorno, si può sostenere tutti gli utenti. E poi, proprio come Facebook e altre aziende hanno fatto, quando si hanno le risorse, si hanno le persone, perche 'non re-implementare solo l'applicazione iOS. Hai ancora qualcosa per tutti, anche se è un'esperienza inferiore forse, con l'applicazione ibrida. Ma si può gradualmente stendere e sostituire il breve termine misure delle applicazioni ibride con le applicazioni più native. Pubblico: Ma con un ibrido app avranno accesso alle funzioni di telefonia mobile? David J. MALAN: Non necessariamente. Così forse si effettua una consapevole decisione nella fase iniziale, si può solo caricare le foto sul applicazione iPhone nativa per Facebook, ma non l'applicazione Android, inizialmente, per esempio. E questo è un po 'una bugia, perché applicazioni web hanno più restrizioni di applicazioni ibride si trasforma fuori, e se si legge la documentazione per PhoneGap e cose del genere, le persone hanno escogitato modi per dare applicazioni basate su web accesso alla telecamera, fino a quando si sta utilizzando un'applicazione ibrida. Come funziona? Perché l'ibrido applicazione, per definizione, ha un po 'di codice in Objective-C, e Swift, e Java, o in C #, si può accedere all'hardware. Non necessariamente tutto, ma potrebbe molto bene essere il caso che avete l'accesso sufficiente per ottenere la macchina fotografica, anche per le piattaforme Android, per esempio, in tale esempio forzato. Qualsiasi altra domanda? Tutto ok. Perché non prendiamo la nostra 15 minuti di pausa qui. Ci riprendiamo a tre con una finale guarda programmazione web, banche dati, e Javascript.