DAVID J. MALAN: Så vi är tillbaka. Så hög nivå ämne just nu nu är teknik stackar, vilket inte en särskilt teknisk term, det är mer av en fångst alla för alla antal kombinationer av teknik som du kan använda för att lösa problem. Och kanske den mest passande sätt att börja skulle vara att titta på språk sedan Jag håller rabbla en massa och de flesta alla i rummet har förmodligen hört talas om åtminstone en. Och så varför inte vi försöker att urskilja Vad-- skilja dessa språk och kort tala om när du skulle välja en över den andra, hur de är sorts i grunden olika, och i synnerhet när du chattar med ingenjörer, eller försöker bestämma vem att anställa, eller vad genomförandet förslag till greenlight, hur du faktiskt skulle göra dessa typer av beslut. Så låt oss bara rattle vissa saker. Av de språk som människor har hört talas om, vad som kommer att tänka på? C. OK. OK, C ++. Vad är det? PUBLIK: Python. DAVID J. MALAN: Python. Excellent. Vad annars? Visual Basic. Jag hörde Java. Visuell Basic-- a.k.a. VB. Java. NET, som är mer av en fångst alla för det är oftast C # som språk i fråga. Och låt mig nämna att. Så vi ska återkomma till det. Jag är ledsen? Förlåt? PUBLIK: SQL. DAVID J. MALAN: Scratch? PUBLIK: SQL. DAVID J. MALAN: Åh, SQL. OK. SQL. Så vi ska återkomma till that-- faktiskt, Det är good-- efter paus också. Vad annars? PUBLIK: Oracle. DAVID J. MALAN: Så Orakel, inte ett språk. Egentligen skulle de använda SQL också. Så låt oss sätta det efter pausen liksom. Och ledsen, något över här? PUBLIK: Mathematica. DAVID J. MALAN: Mathematica? OK, visst. Och MATLAB är typ av på det ibland. PUBLIK: R. DAVID J. MALAN: R. Låt oss gå hit. Fortran. Säker. Äldre skolan. Fortran. COBOL. Jag ska kasta ut BASIC. GRUNDLÄGGANDE. Vilken som helst-- PUBLIK: MATLAB? DAVID J. MALAN: MATLAB. Åh, slå dig till det. Vad som helst? Jag kan tänka mig ett par andra. Jag kan tänka mig några andra. Och vad var det sista? PUBLIK: ASP. DAVID J. MALAN: ASP? Ja. Active Server Pages. Det skulle i allmänhet faller under andra språk, ibland C #, så låt oss lämna det av. Men vi kommer tillbaka till det för ramar och sådant. Något annat? PHP är populärt. Ruby är en annan. JavaScript inte att förväxla med Java, är en annan. Det är lite av en hel del. Så det kan vara säkert överväldigande, som om listan är inte redan bara för att börja veta var du ska börja. Och så lyckligtvis, låt oss närma sig detta från några vinklar. Låt oss först försöka att kategorisera åtminstone några av dessa språk i två breda hinkar, som påminner om samtalet vi hade före paus, där vi pratade om att sammanställa, och källkod, och maskinkod, eftersom det är inte hur alla språk fungerar. Så vi ska plocka ut några exempel of-- eller kontra examples-- till den modellen. Och då, varför inte vi tala om ansökningarna att dessa språk används i allmänhet för. Och ärligt talat, även om detta är en ganska lång lista, det är bara en delmängd av denna lista som du normalt skulle dra av dessa dagar att lösa problem. Vissa språk är nyare än andra. Vissa språk är mer populära än andra. Så det är inte som du har en sådan en överväldigande uppgift innan du när man beslutar bland dessa olika språk. Så låt oss göra detta. Vi hade tidigare, källkod, och sedan hade vi maskinkod. Hoppsan. Skriva fel ord. Maskinkod. Och vi hade någon process i mitten called-- ja, kompilatorn. Så kompilatorn. Och vad maskinkoden faktiskt körs på i slutändan kommer att bli din faktiska CPU. Med andra ord, av maskinkod, I : den lägsta instruktioner att en CPU faktiskt förstår. Addition, subtraktion, flyttning, spara och operationer som. Och så detta är en modell för vad som är allmänt känd som kompilerade språk. Kanske inte så förvånande. Så detta är modellen för kompilerade språk. Men det visar sig att det finns En annan klass av språk kallas tolkas languages-- tolkas languages-- som är något annorlunda. Du skriver i källkoden, kör dem genom en tolk, och att tolken är vad körs på processorn. Med andra ord, vad du gör inte Emit är vad, tydligen? Maskinkod. De nollor och ettor att CPU själv i slutändan förstår. Så i denna första version och språk som C, som vi såg, du skriver i källkoden det är lite hemligt, men åtminstone är det slags engelsk-liknande och det är åtminstone läsbar När du vänjer sig. Du kör den genom en kompilator och ut du får i slutändan, ettor och nollor. Att en förenkling. Det finns några andra steg i det. I själva verket, om du någonsin har hört termen "assembler" det är ett steg före de nollor och ettor. Att lite mer lättläst, men fortfarande ganska svårbegripliga. Och så finns det mellansteg som i själva verket händer här. Men utgången, i slutändan, är dessa nollor och ettor. Men i den tolkade värld, där du har språk som tolkas språk, du faktiskt hoppa över det steget. Med andra ord, när du skriver en program, du bara omedelbart köra det. Du behöver inte kompilera det och sedan köra det, som jag gjorde förut. Du skriver det bara och köra det. Och om du vill göra en snabb förändring, du göra en snabb förändring och köra det. Så det finns inget mellansteg här. Nu, för det program jag skrev tidigare, som var här "Hello World" -programmet, du kanske rimligen wonder-- eller skäligen state-- det var inte den tiden krävande att kompilera mitt program. Det verkar ha gjort det bara sådär. Och det finns grafiska versioner av kompilatorer. Jag använder en mycket svårbegripliga version, men du kan slå en play-knappen och det skulle faktiskt göra sammanställningen för dig. Jag har sammanställt programmet och sedan igen, för att köra den, jag gör just detta. Och det utgångar till vänster där, "Hej!" Det verkar inte allt som betungande. Men när dina program mer än bara en, två, tre, fyra, fem rader långa, kan det ta betydligt fler sekunder att sammanställa. Ibland till och med minuter eller en hel del tid att sammanställa. Trots allt, en del av den världens största produkter är saker som operativsystem, Microsoft Word, Microsoft Excel, som kan vara hundratusentals eller till och med miljontals rader kod lång, och de som inte gör det bara direkt genomföra. Dessutom, på webben, är det blivit populärt att använda helt enkelt tolkade språk, delvis eftersom du kan göra en förändring som utvecklare och sedan bara omedelbart ladda sidans och omedelbart se resultatet. Och så HTML, utan ett programmeringsspråk, är ett språk som är tolkas. Och vi såg att samma effekt i går. Du ladda bara sidan efter att ha gjort en förändring i Cloud9 och-- voila-- du ser ett nytt resultat. Så vad är skillnaden här? I HTML, minns, hade vi öppna HTML, öppen huvud, öppen titel, nära titel, nära huvudet, öppen kropp, och så vidare. Vi hade alla dessa taggar som vi ganska mycket sagt, tala om för webbläsaren vad man ska göra. Hej webbläsare, här kommer en HTML-sida. Hej webbläsare, här kommer titeln. Hej webbläsare, här kommer några text som ska vara fet. Och sedan berätta det motsatta. Hej webbläsare, som är det för fetstil text. Hej webbläsare, det är det för kroppen. Och så vidare. Och så vad är en webbläsare? En webbläsare är bara en tolk. Det är ett program som någon som Microsoft eller Google har skrivit, vars syfte i livet är att läsa ett språk, som kallas HTML, och tolka den. Uppifrån och ned, från vänster till höger. Och varje gång webbläsaren ser öppen fäste, titel, nära fästet, det ska tolka det på så sätt, åh, att innebär att jag ska lägga dessa ord sätt upp här på toppen av webbläsaren. Så det bara gör vad HTML-koden säger. Men det finns inga nollor och ettor. Det finns ingen sammanställning. Du inte gjorde det. Webbläsaren har inte gjort det. Det är bara inte inblandad. Så i en anda av dessa pågående ämnen, i dag och i går, det verkar vara en underbar funktion. Du sparar din kod och sedan bara köra det eller tolka det. Det finns inga mellansteg. Visst finns det en kostnad? Kan inte alla vara upsides. Så vad kan denna kostnad vara? PUBLIK: Space. DAVID J. MALAN: Space. Så säker. I den kompilerade världen, har du inte bara den ursprungliga källkoden, du också skapa och då förmodligen att spara maskinen code-- den nollor och ones-- och det är fick ta upp en viss mängd utrymme. Absolut. Så det kostar dig mer utrymme. Ja? Målgrupp: Webbläsare kanske tolka på olika sätt. DAVID J. Malan: Webbläsare kan tolka det annorlunda. Det är sant. Men jag är inte säker på att jag bekväm hävdar det beror på att det är tolkas. Det är mer bara för att det är ett genomförande av ett språk som i sig själv har oklarheter. Så låt oss inte riktigt bekräfta att en, men bra föraning. Vad kan vara det pris som betalas? Andrew? PUBLIK: Du kombinerar två steg, så att du därför har ökande komplexitet samt. DAVID J. MALAN: Den complex-- ökningen i komplexitet där? För vem? PUBLIK: Så, i tolken steg, du kombinera tolken och kompilator för bara leder upp att-- DAVID J. MALAN: Ah, OK. Ironiskt nog är det förmodligen lite enklare att genomföra tolken, även om det tycks avkastnings Nackdelar med denna bekvämlighet. Så möjligen sant. Men det slags beror jag skulle säga, på språket och om hur de gick om att genomföra den. Det kan vara en mycket mer komplicerad, faktiskt, i kompilatorn, bara för att du måste gå från något så hög nivå att något så låg nivå. Men en bra tanke. Så med andra ord, ett kompilerat program, när den slås in i dessa nollor och ettor, hamnar på det språk att processorn talar, medan det i den här sidan av värld, det program du har skrivit, koden du har skrivit, aldrig får omvandlas i själva språket datorn talar. De nollor och ettor. Det stannar i den ursprungliga, mer mänsklig vänlig, mer lättläst språk. Så vad kan vara underförstått där, inte om du gör faktiskt bry konvertera din programmet till mycket språket att den underliggande dator talar? PUBLIK: kanske inte förstå något? DAVID J. MALAN: Might inte förstår något. Och det kan claim-- om det inte förstod något, det är en bugg eller brist av funktionen i tolken. Så det skulle vara mer av ett misstag än en kostnad. PUBLIK: Du har tillgång till källkoden? DAVID J. MALAN: Det finns en bra. Så en nackdel här är att du tycks ha tillgång. Du, slutanvändaren, kan tyckas ha tillgång till källkoden. Och det är inte alltid sant. Men det är sant i Vid JavaScript som vi ska titta på efter pausen i dag, vilket är ett tolkat programmeringsspråk att du skriver i källkoden. Men att källkoden får överföras från servern till webbläsaren och körs i den mänskliga webbläsare. Så här kunde hon bara öppna fönster, som jag har gjort i Chrome, och titta på det, som vi själva sneglade på igår med Google. Det kan se lite obegripligt men det är där. Så det är absolut en betalkurs. PUBLIK: Performance hit? DAVID J. MALAN: Ja. Och det är den andra biggie. Det finns en föreställning hit. Eftersom du har detta mellanhand, som själv är ett program, mellan dig och CPU, i motsats att bara mata dessa råa nollor och ettor in i CPU, Det finns en föreställning hit som du ta med ett tolkat språk. Så att, godtyckligt, ett program som kan ta en sekund att köras på en dator eller en minut för att köras på en dator här, kan ta 10 sekunder eller 10 minuter att köra på en dator här. Det är i allmänhet inte kommer att vara att mycket av en difference-- faktor 10-- eftersom det finns optimeringar du kan göra. Men det är nästan alltid långsammare. Nu, baksidan till denna oro är att, väl datorer, var 12 till 18 months-- enligt Moores lag, så att speak-- bara blir snabbare och snabbare. Jag har mer och mer diskutrymme. Jag har mer och mer RAM-minne. Vem bryr sig egentligen? Och det är lite av en rimligt argument. I själva verket en av anledningarna till varför vi kan tolerera långsammare tolkas språk är därför vi människor inte riktigt märker. Datorerna har blivit precis så jäkla fort. Medan tillbaka i dag, särskilt när hårdvara var mycket mer begränsad, du hade mindre av allt, det var mycket dyrare så allt kostar mer, ja då du verkligen ville pressa ut så mycket prestanda som du kan. Men det krävs att skriva på en lägre nivå, om man så vill, med ett kompilerat språk. Så du tar denna prestation hit. Men generellt, de upsides verkar vara värt det i dessa dagar. Väl, med undantag för den intellektuell egendom fråga. Denna typ av läsbarhet av koden kommer vi komma tillbaka till när vi tittar på JavaScript. Så låt oss försöka kategori åtminstone några av dessa. Så bland de kompilerade språk, vi skulle ha C, C ++, sort av, sorta, Java, även om det är lite av ett undantag, för skäl som jag ska visa dig på bara ett ögonblick. C # skulle vara på denna lista. Vi tittar på mer på bara de mer moderna språk. Okej. Och det verkar som många där. Medan på denna sida av stängslet, vi kan ha JavaScript och Python, och PHP och Ruby. Och är det tillräckligt för de nyare dem? Det känns gott för nu. OK. Och sedan dot dot dot, eftersom listan är oändlig. Och faktum är att om vi vill bara få en känsla av this-- Wikipedia, kompilerade språk. Jag gissar att vi kan få en betydligt mer uttömmande. Så här går vi. Så här är en mycket mer uttömmande. Och jag hoppades att någon skulle gissa D som ett språk, eftersom det också finns, men de stannade vid D det verkar. Även om det faktiskt kan vara en E. Åh, faktiskt, bör detta vara på listan dessa dagar. Swift är faktiskt en språk som Apple uppfann som nu används i allt högre grad så, i iPhone-utveckling. Men vi kommer tillbaka till att med vår diskussion mobil i bara lite också. Så Swift liksom. Och sedan om vi går till tolkas language-- tolkas language-- så här är en ännu längre lista också. Så om du bara google och titta på Wikipedia för dessa, ser du alla typer av språk. Men syftet är, för i dag egentligen bara kokar ner till kanske detta frågan om immateriella rättigheter och läsbarhet av slutanvändaren och till prestanda, är en annan biggie samt. Så bland dessa språk, Låt mig se om vi kan ge dig bara några exempel av språk. Vi vill inte gå igenom alla språk i all oändlighet. Har du någonsin undrat vad en visst språk ser ut? Vi såg en stund sedan. Varför vi inte ta ett par av funktionen förfrågningar. Vem skulle vilja se vad annat språk ser ut? Ja. PUBLIK: Java. DAVID J. MALAN: Java. Okej. Så låt oss gå till Java. Och bara för att ge dig en sample-- vi kunde skriva ut alla dessa, men det skulle vara snabbare bara för att titta på någon annans exempelkod. Okej. Så är detta ett bra exempel? Hoppsan. OK. Så här är Java-versionen av program jag skrev tidigare, "Hello World". Så Java, kommer du ofta se sökordet "klass." Då ser du några namn efter det. Du ser klammerparenteser som vi såg tidigare, och ibland går de på samma linje, ibland andra linjer, det är typ av ett personligt beslut. Du ser sökord som "Allmänheten", "statisk", "tomrum". Men vi såg "main". "Main" är i allmänhet namnet på den förvalda funktionen eller standard bit av koden som blir köras i ett program. "Sträng." Vad vi menar med sträng tidigare? Jag använde den typ av lättvindigt. En sträng är vad? Ett ord. Det är som en följd av tecken. Enskilda tecken, tillbaka till rygg mot rygg, vanligen i en array, som vi har diskuterat. Och i själva verket ser denna syntax Här är de två hakparenteser? Det innebär, hej dator, här kommer en array med strängar. Torget hakparenteser är används ofta för att beteckna att. Och då kan du förmodligen ta en guess-- vad gör detta markeras bit av koden förmodligen göra? PUBLIK: Utgången? DAVID J. MALAN: Ja. Den skriver något på skärmen. Så "system" är ett slags hänvisning till datorn. "Out" betyder att datorns utgång eller skärmen. Så "system.out.print ln" betyder antagligen? "Ln." Skriv linje som programmerare som till synes stava vissa ord ur i sin helhet och ta genvägar med andra ord. Men "ln" är linje, så skrivraden. Så det skriver ut "Hej World! ", Följt av en ny rad. Så det är det. Men Java är vad de kommer att samtalsobjektorienterad. Och faktiskt, bara för att ge en par andra definitioner det som du kan se, i allmänhet, det finns många olika typer av språk, men det vanligaste är förfarandet eller imperativa språk. Det är funktionella språk, vilket gör inte innebära att andra är icke-funktionell. Och så finns det objektorienterade språk. Och det är kanske det bästa kategorisering av de flesta språk som du någonsin skulle välja för slags av ett typiskt kommersiellt projekt. Detta skulle vara för mycket av, Jag tror på en råtta hål att gå ner, för att försöka förklara de olika skillnader. Men språk vi har sett alltså far-- C är en procedur eller en imperativt språk. På senare tid har uppfunnit språk tenderar att vara, ledsen, objektorienterad, vilket innebär de har andra funktioner till dem. Kan jag förklara det på det här sättet? Låt oss inte ens gå ner. Objektorienterade medel du kan implement-- du kan modellera den verkliga världen lite mer effektivt. Mänskligheten, med tiden, har räknat ut, wow, det skulle vara trevligt om mitt språk hade den här funktionen eller den funktionen. Och det är därför vi har så många språk i världen. Förnuftiga människor, smarta människor, eller avstyrka och alltid sorts möts på utveckla nya språk tillsammans. Typexempel. Apple uppfann Swift i hopp om förmodligen sänka baren till iPhone utveckling, eftersom den tidigare language-- kallas Objective-C, som skulle kunna också vara på vår lista här-- var mycket mer svårbegripliga och mycket svårare att linda ett sinne runt. Och som programmering blir utan tvekan mer tillgängliga och mer allmänt antogs av människor även mindre tekniskt, den goal-- Det är en mycket tapper mål att försöka sänka inträdeshinder genom att göra språken själva lättare att komma igång med, men inte mindre kraftfull nödvändigtvis. Och ett annat språk. Varför vi inte ta en titt på något som Python, vilket är mycket i ropet dessa dagar. Pytonorm. Exempel på program. Låt oss se. "Hello World" språk. Nu gör vi det. "Hej världen." Låt oss se om detta ger oss ett bra exempel. OK. Så detta är faktiskt ganska kul. Så om du någonsin google "Hello World", som råkar vara en av de första programmen som skrivits i ett modernt språk, precis som en proof of concept, kan du se alla möjliga implementeringar av detta. Några av dessa språk Jag har inte ens hört talas om. Men du kan see-- låt oss gå till Basic, den jag lärde år sedan, delvis. Detta var en rolig språk eftersom du tvungen att, eftersom programmeraren, antal alla dina linjer. Inte olikt vad jag var gör när jag skrev pseudokod på den gula dokument tidigare för binär sökning, för att söka en telefonbok. Och så, om du ville att gå till en annan linje, du bokstavligen skulle skriva, gå till 10, eller gå till 20. Och om du skriver linjer, konvention var att göra, är denna linje 10, Detta ligger i linje 20, är ​​denna linje 30, 40, med ingenting i mellan, vilket ger dig ett visst utrymme om du bestämmer dig, vänta en minut, Jag borde ha lagt några mer kod någonstans. Du hade fortfarande sorts nio chanser att pressa det mellan programmet innan du var tvungen att manuellt numrera allt. Så det här är typ av vad jag menar när jag säger att världen har kommit upp med nya funktioner. Någonstans på vägen någon insåg detta är pojke dum. Detta är bara att skapa arbeta för programmeraren. Så att han eller hon bara typ av inbyggda ett nytt lager ovanpå det så att du inte behöver oroa om vilken linje nummer koden är faktiskt på. Så när kan du välja ett eller annat språk? Jo, vilka av dessa språk gör du tenderar att höra om de mest din egen värld dessa dagar? Låt oss släppa ner Objective-C också. PUBLIK: C #. DAVID J. MALAN: C #. Så låt mig färg. Har vi vår andra färg någonstans? Så C #. Och vad vet du om C #? Allt kommer att tänka? PUBLIK: Det är ett programmeringsspråk. DAVID J. MALAN: Det är en programmeringsspråk. OK. Det är sant. Så vi pratar om C #. C # tenderar att användas i Windows-miljöer, så om du skriver programvara från Microsoft för Windows, är C # mycket vanligt, oavsett om det är för datorprogramvara, eller även telefonens programvara på Windows-telefoner, om du har haft dem, eller på webben med alltför. Och i själva verket, kanske Kareem nämnda ASP tidigare? Så det finns också dessa saker som kallas ramar, som vi kan införa i förlängningen. Ramar, som ASP. Står för Active Server Pages. Och detta är kod och ett sätt att programmera som i allmänhet gör det lättare att skriva webbaserade applikationer. Med andra ord, skulle det vara super, super irriterande att skriva en webbplats i språket C, som vi har sett förut, eftersom du skulle behöva använda tryck + F, du skulle behöva använda sökordet "Main" och klammerparenteserna. En hel del svårbegripliga syntax och förhållningssätt för att genomföra något som är relativt komplicerad. En webbsida. Och så andra språk har utvecklats att göra denna typ av sak lättare. Och i sin tur, har folk kommit upp med ramar, typ av verktyg som du kan använda som gör det ännu enklare att skriva webbsidor. Så till exempel, för att göra så mycket mer konkret, Låt mig öppna upp bara en textfil för ett ögonblick. Och du kanske kommer ihåg igår att vi sagt något liknande, detta är en webbsida. HTML. Stäng HTML. Låt mig hoppa över huvudet och bara göra kroppen här. Antag att jag ville skriver inte "Hello World" men "Hej David", där David är namnet på den inloggade användaren. Vad något liknande ASP kommer att göra, eller JSP-- vilket är Java server pages-- eller ett antal andra ramverk är de inte språk i sig. De är precis som ytterligare programvara som du skulle installera i din miljö att bara göra det lättare att programmera. Så till exempel, snarare än att behöva göra något som "Hej, printf (" David ")" eller något som är typ av samarbete mingling-- den typ av kod vi har sett before-- du skulle göra något mycket enklare, som "name%." Och så dessa ramar, som ASP-- och jag minns inte om jag får syntax lagom för ASP. JSP är en little-- är detta rätt? Så med ASP, är detta typ av en speciell syntax att vissa utvecklare har beslutat detta kan hjälpa människor ut. Och jag kan uttrycka mer kortfattat platshållare, till exempel. Som sätter ett värde här, där detta värde namn är inte N-A-M-E, det är något värde lagrat där. Så "namn," i detta sammanhang, vi skulle kalla en variabel. Algebra har variabler som x, och y och z. Programmerare använder variabler som är mer beskrivande än x, y och z, typiskt. Så "namn" skulle bokstavligen vara något slags minne behållare för något liknande D-A-V-I-D, för mitt namn, eller vem annars är loggas in på webbplatsen. Och så detta är den typ av bekvämlighet du får med vissa miljöer. Så C # och något som ASP skulle mycket vanligen användas i en Windows-världen, oavsett om dess skrivbordet programvara eller webbserver, särskilt om dina servrar är i sin tur Microsoft Windows och Microsoft IIS-- eller Internet Information Server, om jag får förkortningen right-- som är Microsofts webbserver. Så vad andra språk är folk bekanta med, eller har du hört talas om oftare än sällan? PUBLIK: Jag vet att Pythons typ av en populär [OHÖRBART]. DAVID J. MALAN: Mycket populär. Så Python här används ofta i vetenskapliga program eller data vetenskap, där du har en hel del av data som du vill analysera och du vill använda en programmeringsspråk för den. R kan vanligtvis användas för att samt, i en statistisk sammanhang. Men Python har så många funktioner inbyggda. Så många extra bibliotek, som folk säger. Bibliotek är bara samlingar kod som andra människor skrev att du kan använda så att du behöver inte uppfinna dessa hjul. Och så Python är mycket vanligt används inom datavetenskapliga program. Men det är också mycket vanligt används i webbapplikationer. Du kan genomföra en dynamisk webbplats med hjälp av Python. Och genom dynamisk webbplats, jag innebär inte bara statiskt innehåll som vi skapade i går, genom bara hårt kodning i den latinska texten och andra sådana saker, utan snarare förmågan att logga in, förmågan att köpa något, förmågan att checka ut med dina shoppingvagnar eller liknande. Allt detta kräver dynamik och du behöver något språk som en av dem. PUBLIK: Så gör Python har sin egen utvidgning, liknande gillar [OHÖRBART] DAVID J. MALAN: Det gör det. Så i en värld av Python, är Django en mycket populär ram för Python. WSGI är en annan mekanism som är sorts skiljer sig från detta men i samma anda. Det är ett tillägg som gör att du att köra Python-kod på en server. Det finns other-- ja. Så dessa vi kallar ramar. Och det är lite av ett missbruk. Detta är mer av en webbserver teknik. Men vi kommer att hålla det enkelt och sätta det i denna kolumn ändå. OK. WSGI. WSGI. En annan thing-- och faktiskt, låt mig flytta den till sin egen kolumn, eftersom jag skulle skrika på mig själv för sätta dem i samma hink. Låt oss sätta detta i servern funktioner, låt oss säga. Det är inte en teknisk term. Så här kan vi vara WSGI. Det finns CGI, som är en äldre teknik för att betjäna upp språk som Perl eller PHP, eller några andra. Återigen, jag har nämnt dessa villkor inte så mycket att sorts ingrain dem, men så att om du ser dem är det något du helt enkelt google för att läsa mer. Det finns ingen riktig juice till några av dessa saker. Men låt oss gå tillbaka till språk. Vi pratade om C #, Python. Vad kan du använda för webbprogrammering dessa dagar? Låt oss fokusera på det fortfarande. PUBLIK: PHP. DAVID J. MALAN: PHP. Och låt oss återkomma till den. Så PHP är mycket vanligt förekommande. PHP tenderar att få en dålig rap. Det började som ett språk genomförts av folk som kanske inte nödvändigtvis de bästa formgivarna språk. Och så du kan läsa alla sorters artiklar online om hur illa PHP är. Och tyvärr är detta en manifestation, delvis av bara religiösa debatter att få ett utbrott bland programmerare. Och detta är något värt att hålla i minnet, ur ett affärsperspektiv, att det är väldigt lätt för tekniska personer att få alla arbetat med deras synpunkter på vissa saker. Och det betyder inte nödvändigtvis att en skriker de starkaste eller med den starkaste, argaste åsikt är rätt. Många gånger är det verkligen bara spelar ingen roll. Och så att folk bara argumentera vad sina egna fördomar eller komfortzoner. Och så du bör hålla detta i åtanke när du gör ett beslut, som bara eftersom någon säger detta är rätt språk för jobbet, kan det vara sant, men det är också bara kan vara att det är rätt språk inom sin egen skicklighet ställa in eller komfortzon. Vilket inte är dåligt, men du bör inse att det kan finnas något sammanhang där. Det finns några sakliga felaktiga påståenden, som C är fel språk att använda dessa dagar för att genomföra webbplatser nästan alltid. Men det är inte orimligt att säga att något av dessa är fel att vi har inringad hittills. PHP har gått igenom många versioner. Så språk tenderar att ha version tal i samband med dem. PHP är upp till, tror jag, version 7 nu, så det har funnits ganska länge. Och som språk få nyare, de ofta få nya funktioner. Men du måste vara medveten om detta för om din webbplats har varit genomföras i version 7 av PHP men du försöker köra din webbplats, eller kanske du har lagt ut utvecklingen av koden till någon annan och de post det till dig eller skicka den till dig och de säger, här, sätta detta på din webbserver, Om din webbserver är några år outdated-- om det är din egen server eller ett webb host-- det kanske faktiskt inte köra. Så det är dessa typer saker som någon måste vara uppmärksam på vid uppgradering en webbplats eller genomföra den för första gången. Jag hörde JavaScript tidigare. Så JavaScript är en intressant ett i det att den är i allmänhet klientsidan, som vi ser efter pausen, som innebär att det körs i användarens webbläsare. Men du kan också köra JavaScript dessa dagar med hjälp av något som kallas Node.js, där Node.js är en mekanism för att köra JavaScript-kod serversidan, istället för att använda Python, eller PHP eller andra sådana språk. JavaScript är särskilt väl lämpad för chattprogram och realtid applikationer, medan PHP är inte bra språk för att genomföra något som en chattserver, där användarna hålla kontakten med den hela tiden. PHP är mer av ett besök mig en gång, får tillbaka ett resultat, och sedan klicka på en annan länk några sekunder eller minuter från nu. Medan Node.js och JavaScript kan vara används mer för beständiga anslutningar. Andra språk som du misstänker används ofta för webb saker? PUBLIK: Skulle jQuery vara en ram? DAVID J. MALAN: Bra fråga. Varken. Jag skulle vilja kalla jQuery bibliotek, där återigen ett bibliotek är bara en massa kod att någon annan har skrivit att i allmänhet löser en del problem som gör det förhoppningsvis lättare för dig att göra ditt jobb. Och låt mig göra ett exempel på detta i samband med banan. Inom ramen av banan finns det detta språk, JavaScript, att vi kommer att se senare, varigenom man kan säga något i stil med this-- "Document.getElementById." Och vad jag kallar det igår? Först tror jag, var det unika ID jag gav ett element som såg ut så här. "P id =" första ">" och sedan hade vi liknande "lorem ipsum", et cetera. Så om jag skriver ett program i JavaScript för att på något sätt manipulera, ändra webbsidor som vi lekte med igår, Jag skulle använda detta markerade kodrad att få den speciella utdrag av HTML från min sida, den särskilda nod, som vi kallar det. Men i jQuery, istället för att skriva detta, vilket är rå JavaScript code-- bara ur lådan, det är hur man skriva det-- du skulle i stället bara säga, "#först." Det är likvärdiga. Och så bara grundar sig på detta mycket svårbegripliga exempel, vad kanske är argumentet för att använda jQuery? Varför skulle en utvecklare använda ett bibliotek som jQuery, baserat på denna isolerade exempel kanske? PUBLIK: Mindre kod. DAVID J. MALAN: Ja. Det är mindre kod. Det är bara snabbare att skriva. Den counter är att det ser mer skrämmande. Du kan inte riktigt läsa det från vänster till höger. I själva verket, eftersom det är mest skiljetecken nu i stället för faktiska ord, Jag kan typ av dra slutsatsen att "Document.getElementById" får ett element från dokumentet genom dess ID. Jag kan verkligen använda något sådant mnemonics från denna sak här. Så det är en avvägning. Det finns en finess som kommer ofta med hjälp av biblioteken, särskilt som jQuery. Men verkligheten är jQuery har snäll av att bli en de facto-standard, så att nästan alla dessa dagar som skriver JavaScript-kod använder jQuery eller något gillar det, och inte längre skriver sådan mångordiga uttryck som detta, eftersom igen, mänskligheten har lärt sig, wow, det var typ av en missad möjlighet att göra våra liv enklare. Så människor göra deras liv enklare. Bra fråga. Andra språk att överväga. Jag skulle vilja säga bland denna Listan Ruby är ganska populär. Och så i världen av Ruby, det finns en ram kallas Rails, som är mycket populär. Så Ruby on Rails är en vanligen används uttryck. Även i denna värld, låt mig cirkel Java för webben saker, där i världen av Java du kanske har JSP eller Java Servlets, vilket är en vanlig teknik. Och detta är bara igen sätt att använda att språket i en servermiljö. Så vad betyder det? Om du har en fysisk server, skulle du bokstavligen ladda webbserverprogrammet och installera den på ett sådant sätt att du har stöd för en av dessa ramar, som du kan i sin tur med en eller flera av dessa språk. Och i verkligheten, om du registrerar dig för som ett webbhotell eller en del av molnet tjänster som vi talat om igår, ofta saker bara kommer med maskinens konfiguration för dig. Du behöver inte ställa in det manuellt. Men om du gjorde, det är där rollen av systemadministratören, så att säga, kommer in i bilden. Han eller hon faktiskt skulle göra denna typ av saker för dig, eller den så kallade webmaster skulle ofta göra det åt dig. Okej. Eventuella frågor om några av dessa här? Eller möjligheter på alla för att fråga om språk? Ramar? Låt mig presentera bara ett annat bibliotek det är också mycket vanligt i dessa dagar. Denna lista skulle kunna fortsätta oändligt. Och detta bibliotek är typ av börjar falla i onåd. Det har funnits. Den populariserades av Twitter under en tid. Och nu massor av webbplatser, massor av utvecklare använder den. Men nya saker kommer ut och kommer tillsammans. Men låt mig bara ge dig en känsla av vad det innebär att använda ett bibliotek. Så återigen, är JavaScript en mycket populär språk. CSS, eller Cascading Style Sheets, Vi pratade om igår. Det är också allestädes närvarande. Ingen gör en webbsida idag utan att använda HTML och CSS minimalt. Men det är inte alltid lätt att göra vissa saker. Och så låt mig gå till getbootstrap.com. Hoppsan. Det är inte hur vi stava. Getbootstrap.com, vilket kommer att leda mig till målsidan för detta bibliotek. Så de generöst ringa sig en ram, som är typ av typ av rättvisa, men jag skulle fortfarande kalla det mer av ett bibliotek än en ram. Men dessa är bara diskutabel semantik. Låt mig gå till deras CSS flik och Låt mig gå till ungefär så här. Så minns vad våra former såg som går på Cloud9? Det var ganska fult. Old school knappar. Jag tror att knappen var grå av standard. Och allt var verkligen formaterad ganska messily. Så om du vill att dina webbformulär för att se lite nicer-- låt mig in här. Och trevligare jag egentligen bara betyda mycket nitpicky estetik. Så märker hur e-rutan måste det en rundad rektangulär hörn till det. Så det är lite renare där. Lägg märke till att ordet e-post är där tills jag börjar skriva och sedan försvinner. Så det är en trevlig liten funktion. Lägg märke till hur saken är typ av glödande fint, som en del av detta kan du få gratis från din webbläsare, men en del av detta är också bibliotek, kod som andra människor har skrivit att ge dig detta. Något som det här ger mig mitt lösenord. Den här knappen är lite sexigare än standard. Mycket i ropet just nu. Ända sedan iOS 7 eller så, Världen har blivit mycket platt, medan världen tidigare haft massor av skuggor, massor reflektioner på ikoner. Ungefär som i kläder världen, Det finns modetrender som kommer och går. Nu är allt är platt på din telefon. I själva verket, knapparna på din iPhone är nu bara blå länkar. Det är inte ofta ens cirkulära knappar. Så det är bara saker att gå in och ut av modet, och så detta är hur du kan göra en mer modern ser webbformulär. Knappar. Så Bootstrap har massor av vackra knappar. Så om du vill blå knappar, gröna knappar, blått, orange, röd. Bootstrap gör det lättare att göra dessa saker. Det är den typen av saker att du kan absolut har gjort igår med CSS och med HTML, men det är bara en smärta i nacken. Och så i stället, vad Bootstrap skulle har du gör är något sådant. Om du vill ha en button-- visar sig detta är en HTML-tagg som vi inte använder yesterday-- och du vill att det ska se ut så här gröna knappen du bokstavligen bara ge det en klass, som vi talade om i går, av "btn btn-framgång." Varför dessa ord? Twitter, författarna till Bootstrap, kom upp med dessa ord. De kunde ha ringt dem vad de vill. Men vad du får nu är någon annan på Twitter, i det här fallet, har räknat ut hur gör man en knappen ser trevligt och ren och grön. De förpackade upp denna funktion i en CSS-klass, som kallas "BTN" och "btn-framgång", så att någon av oss kan nu använda det utan att ens tänka på Det. Så de har abstraherat bort begreppet en grön knapp så att vi inte behöver bry sig om genomföra det själva. Vi kan faktiskt fokusera på att genomföra saker av intresse för oss. Om vi ​​rulla ned här. Felmeddelanden på skärmen. Ibland du vill ha lite meddelande att visas på toppen av webbläsaren. Någon av oss kan göra detta med några ansträngning, efter gårdagens lektion, men varför skulle du bry? Det är en sådan ointressant estetisk detalj. Låt oss stå på axlarna av Bootstrap och låt dem ge oss saker som detta, där vi bokstavligen, att få en röd ruta, bara att göra ett stycke tagg med en klass of-- ledsen. "BG-fara" skulle ge oss denna rödaktiga rutan istället. Nu går vi till mer intressanta saker. Om jag går tillbaka till toppen av denna sida och gå till komponenter, nu världens blir mer intressant. Till exempel, mycket vanligt är rullgardinsmenyer som denna. Detta skulle vara en absolut smärta att genomföra. Och det var inte så länge sedan att vi programmerare skulle behöva genomföra dessa typer av menyer från scratch. Men det är en sådan gemensam paradigm att bibliotek som Bootstrap bara ge dig möjlighet att göra en rullgardinsmenyn långt, långt lättare. Det finns ingen väg att göra det, men om jag läser dokumentationen Jag skulle se det, OK, ska jag använda denna HTML om jag vill ha en rullgardinsmeny som beter sig så. På samma sätt, låt oss gå till knappen falla ner. Så det här är ännu snyggare. Om jag vill att detta skall se ut som en knapp men det lilla triangel betyder Jag ska klicka på det och få denna meny, här är att använda ett språk som kallas JavaScript. Och vi kan alla genomföra detta i JavaScript. Men återigen, är detta ett hjul du inte vill att uppfinna. Du vill bara ta bort det hyllan bibliotek för detta. Låt oss gå till något som förlopps. Så något som detta är ganska häftigt. Om du någonsin sett en utveckling bar rör sig över skärmen, genomförande som ofta är bara en snurrande ikon. I själva verket, precis som en sidoreplik, låt mig gå till Ajax-- vad är det? Ajax information? Hoppsan. Ajaxinfo. Låt mig komma ihåg adressen. Det går vi. Så om du någonsin har sett några animation medan sidan laddas, eller tänker, eller spara, eller skapa något, du kan se sådana animationer som dessa. Så låt oss titta på något som den här här, och låt oss välja en förgrundsfärg av grön, vilket känns lite vänligt. Kan jag klickar på? Kom en. OK. Vi ska bara gå med rött eftersom det är vad vi får. Så här har vi det. Så om du någonsin sett detta på en skärm, varvid plötsligt dyker upp och sedan plötsligt försvinner, vad är det som är att genomföra det? Tja, detta är bara en GIF. G-I-F. Och detta är en animerad fil, vilket betyder bara det är som en gammal skola serietidning. Det är bara en massa olika ramar som går [stamning] och bara upprepa. Och det är att skapa illusion av rörelse. Så snart som en sida är gjort lastning eller göra något, vad gör en programmerare göra? Jo, han eller hon bara döljer den här bilden. Så alla en förloppsindikator är är typ av som en film du tittar på. Du slags omedveten om det faktum att det faktiskt inte gör något, det är bara flytta. Och sedan, när det är gjort framsteg, de bara gömma den eller stänga av den. Och det är allt det magiska som pågår där. Bootstrap ger dig något lite snyggare, där du kan faktiskt se en procentsats som det går, men det är också bara sorts av en enkel animation. Låt oss titta på några slutliga mer komplexa exempel här. Något som en modal. Vet någon vad en modal är? En modal fönster är i allmänhet en som är tänkt att ta kontroll över förgrunden och hindra dig från att göra något annat. Det tvingar slags användarens uppmärksamhet på mitten av skärmen, låsa ut dem, typiskt, allt annat. Så om jag startar denna demonstration, Skärmen kommer i allmänhet att bli grå. Nå, hur gör vi det grå? Tja, vi förmodligen bara ändrade bakgrundsfärgen som vi gjorde igår eller något sådant. Kanske är det ett över att halvtransparent. Och nu märker att du kan göra tjusiga saker som detta. Så om du någonsin klicka på en knapp och vill ha lite pop ut att visas, det kan du göra. Och så vem bryr sig om all-- ja? PUBLIK: Så med Bootstrap, att få det införlivade, är det så enkelt som som igår vi gjorde sida CSS-format? DAVID J. MALAN: Faktiskt. Riktigt bra fråga. Låt mig gå till Komma igång. Och ja. Allt du behöver göra för att Användningen Bootstrap är väsentligen kopiera och klistra in dessa tre långa rader av kod i toppen av din egen web page-- huvudet på din page-- och du är igång. Och det finns olika sätt att göra det skulle men detta vara det enklaste. Vad är bra om allt detta? Tja, om du inte så mycket genomförare av en webbplats men du försöker att utforma den, eller om du vill ge någon med tråd ram diagram, så att säga, eller bara konstnärens återgivningar av vad du vill göra, jag, att detta dag, ofta kommer att gå till en webbplats som Bootstrap, där om jag vill genomföra something-- som nyligen på campus vi ville genomföra ett webbaserat verktyg för att navigera Harvards kurskatalog, vilket gör det lättare för studenter att bläddra genom kurser och lägga till kurser till inköpslista, så att säga, att typ av avgöra vad de ville ta. Jag försökte föreställa själv, vilka ingredienser skulle vi vill använda för att bygga detta? Vad skulle användargränssnittet bli? Och bara tittar genom en webbplats som detta eller andra sådana biblioteks platser, du kan få inspiration, eftersom wow, Jag kan använda denna widget, och denna widget, och denna widget. Och sedan verkligen vad programmeraren startar att göra, särskilt i dessa dagar i detta modernare värld av webbprogrammering, är programmering blir allt om ledningar saker tillsammans. Sorts tar detta från hyllan, detta från hyllan, denna från hyllan, och du är den smarta ett för att ansluta alla dessa punkter, men i slutändan bygga något genom att återigen stående på axlarna av andra, så att du inte tillbringa en månad genomföra en dum rullgardinsmenyn, vilket är faktiskt svårt att göra om du vill att det ska fungera på Chrome, och IE och Firefox, och helst antal andra webbläsare. Detta är anledningen till att det är denna rika programvara kommersiell och öppen källkod industrin. PUBLIK: Så gör Bootstrap uppdateras och du måste sedan uppdatera dina länkar? DAVID J. MALAN: Det gör det. Jo, det gör det. Bootstrap är för närvarande på version 3.3.6. Och i allmänhet vad du skulle do-- detta är faktiskt värt att nämna. Det är vad som är allmänt känd som en semantisk versioning systemet i världen. Inte alla gör detta. Men om du har sett versionsnummer som är på formen x.y.z-- så till exempel den första versionen ett program kan vara 1.0.0. Eller om det är mycket, mycket beta, eller även alfa status, vilket innebär användning på egen risk, är det inte verkligen redo för bästa sändningstid, du kan även starta 0.0.1 eller någon sådan benämning. Men om programvara börjar version 1,0, eller ekvivalent 1.0.0, typiskt, vad är vanligt i dessa days-- men inte omnipresent-- är om ett företag eller en individuella programmerare korrigeringar några fel i någon bit programvara som verkligen var en bugg, vars korrigering inte inverkan du på all-- det inte ändras programmets beteende, det bara fixar något som inte fungerade properly-- du skulle typiskt uppdatera z-värdet där. Vilket innebär att någon som Kareem kan helt enkelt gå in hans hemsida, blint ändra versionsnummer från 1.0.0 till 1.0.1, spara det, skicka den, och i teorin, inte behöva oroar sig för att han bara har brutit hans webbplats på grund av viss brist på funktionalitet, eftersom något annat gick sönder. Under tiden, om jag programmerare eller något företag skulle göra några betydande förändring som tillför funktionalitet, Jag kan uppdatera oss till 1.1.0 eftersom jag faktiskt förändra beteendet hos biblioteket. Jag ger dig kanske mer funktionalitet. Slutligen, om jag skulle faktiskt i grunden förändra programmet så mycket att det kommer att bryta många användares webbplatser eller applikationer, då jag måste, i denna modell, till uppgradera större versionsnummer också, vilket är en brott förändring. Med andra ord, kan jag ha avvecklad stöd för dem droppe menyn. Så om du uppgraderar till 2,0, halv din webbplats kan sluta fungera. Och detta är en slags signal till samhället om vad som är inblandade i att göra en uppgradering. Ett bra tillfälle att höja. Andra frågor? Okej. Nå, låt oss ta en titt på en slutlig ämne i detta segment av programmering teknik stackar, nämligen i samband med mobil. Så i en värld av mobiltelefoner i dag du have-- och iPads, och ytor, och alla dessa typer av devices-- du har en hel del alternativ när det gäller att genomföra ett program eller en webbplats för kundens mobila enheter. Så bara för att ange uppenbara, kanske dessa dagar, vad är plattformar utveckla i den mobila rymden? Vilka enheter kanske du vill stöd med appen eller hemsida? PUBLIK: Apple. DAVID J. MALAN: OK. Så Apple-enheter. Så det betyder iPhone, och att betyder iPad, och kanske till och med iPod. Vad annars? Olivier? PUBLIK: Android. DAVID J. MALAN: Android. OK. Så Android-telefoner, Android tabletter, Android marknaden är ännu smutsigare because-- och även Apple blir rörigt. Medan en gång iPhone var en viss storlek, och iPad var en viss storlek, och iPod var en viss storlek, nu Vi har iPad Mini och den tunna ettor och iPhone 6 Plus och 6. Det blir en enda röra. Det blir Android världen. Och jag säger detta med slags rullande mina ögon eftersom det från en utvecklares perspektiv, är det en smärta i nacken när du inte har Steve Jobs vision av absolut kontroll över alla dessa specifikationer. Apple gör fortfarande eftersom de är de som bygger hårdvaran. Men det är en bra sak, om Jag är en programutvecklare, att bara veta att min iPhone kommer alltid att vara så här stor, eftersom det betyder att jag vet alltid hur mycket skärmyta jag har. Så om jag vill sätta en ikon i det övre vänstra hörnet, det kommer att vara i exakt samma placera på varje enskild kund enhet. Men i världen av iPhone 6s och iPhone 6 plussidan och i världen av Android telefoner, det är över hela kartan. Och så det gör det svårare att programmera saker, speciellt användargränssnitt, för nu måste du börja ordna dina användargränssnitt relativt, inte absolut. Och samma har varit sant i webbläsare, och stationära datorer och bärbara datorer för år eftersom du, naturligtvis, har olika skärmstorlekar. Vad annars? Du kanske har ytor, som från Microsoft. Du kanske have-- PUBLIK: Windows-telefon. DAVID J. MALAN: Vad är det? PUBLIK: Windows-telefon. DAVID J. MALAN: Ja. Så Windows-telefoner kan fortfarande hittas. Typ av typ av Blackberrys, men de fortsätter att försöka. Och sedan klasar av andra enheter. Så för det mesta, låt oss säger dessa är de bry sig om just nu. Visst Apple grejer, säkert Android saker, och bland Windows liknande yta tabletter verkar vara att fånga på ganska bra. Och så bland dessa enheter, Om du vill rulla ut, låt oss säga, en mobil närvaro för företag, vilka typer av designbeslut har du att göra? Tja, vi redan sagt i Apple världen, det finns åtminstone två språk som typiskt används. En kallades vad? PUBLIK: Objective-C. DAVID J. MALAN: Ja. Så Objective-C, vilket är den äldre. Det är också det språk som många Mac applikationer fortfarande skriven i. Sedan den andra nyare var? PUBLIK: Swift. DAVID J. MALAN: Swift. Och de är den typ av två att veta att imponera folk. Sedan i Android världen, Vilket språk betyder Android använder? PUBLIK: C #? PUBLIK: Java. DAVID J. MALAN: Java är språket i "du jour." I Windows-världen, säker, vi säger C # i det fallet. Så redan detta är en typ av irriterande, eftersom det är takeaway för ett företag ägare eller någon som bara vill rulla ut en mobil närvaro? Liksom, fan det? Liksom, om jag vill stödja en ganska bred användarbas, Jag måste skriva, verkar det, tre separata applikationer. En i ett av dessa språk, en i Java, en i C #. Och även om jag vill funktionaliteten att vara identiska, det spelar ingen roll. Jag behöver fortfarande att använda olika språk eftersom Apple och Microsoft, och Google allt stöd olika miljöer. Och det har varit en utmaning för år. Tillbaka i dag, då folk brukade köpa programvara vid en datorbutik i krympa inslagna rutor, skulle du antingen måste nå för Mac hyllan, eller for-- kanske detta mycket liten Mac shelf-- eller större Windows hyllan och köpa vissa program. Och mycket ofta, det fanns inte ens något för dig på Mac hyllan. Varför? Tja, beslutade företag om 90% av världen, 95% av världens har datorer, varför ens bry genomföra saker på Mac OS? Som en aside-- totalt digression-- varför är det att Mac verkar så ogenomtränglig för virus, och maskar och säkerhetshot? Är Apple bättre på detta? Bättre på att hålla datorer säkra? PUBLIK: Mindre publik? DAVID J. MALAN: Det är förmodligen den större bit till den. Så många användare av Mac har länge hävdat, oh, använder en Mac, du kommer att bli immun mot virus, och maskar och alla dessa saker som länge har plågat datorer. Det kan bero på att Apple har bättre programmerare och de skriver bättre programvara, eller Operativsystemet var bättre utformade. Kanske, men förmodligen inte. Det är förmodligen att när du är 12 år gammal, eller en 30 något sorts sitta hemma skrift skadliga program att ta över världen, kommer du att gå efter den mycket större målgrupp. 95% av världen som kanske köra Windows eller någon varianter därav. Så det är lite på båda sidor. Men för sin kredit, Apple, såvitt jag vet, har inte riktigt tippad själva som vara säkrare, eftersom du bara inbjudande drama om du gör detta påstående, skulle jag tro. Okej. Utan att bli alltför långt ner det, hur löser vi det här? Måste man köpa eller har du att betala tre olika personer för att utveckla appar? Har du välja en framför den andra? Vad ska styra din tänker tror du? Kareem? Nej. Någon annan. PUBLIK: Just kommit med hårdvaran. DAVID J. MALAN: Kom med hårdvaran? Vad menar du? PUBLIK: För miljö. [OHÖRBAR] DAVID J. MALAN: Så det är sant. Men dina kunder, Samtidigt kan ha iPhone, De kanske har Android-telefoner, de kan ha tabletter som gjorts av Microsoft. Så hur har du en mobil strategi för alla dessa olika användare? Det verkar som om det kostar, låt oss säga $ 1000 för att göra en iPhone ansökan, kommer det att kosta $ 2000 för att göra en iPhone-applikation och en Android, eller $ 3000 att också stödja Windows-enheter också. Det är förmodligen ganska drift, och det kanske inte ens vara en linjär relation som. PUBLIK: Om du vill ha en app eller inte kan du lyhörd hemsida. DAVID J. MALAN: Bra. PUBLIK: Eller så kan du ha en inbyggd app. DAVID J. MALAN: Ja. Så i allt detta sammanhang här, vi har talat om vad folk skulle kalla infödda applikationer. Det är program som är skrivna i modersmål av den enheten. Så infödda Objective-C eller Swift kod, eller i Java eller i C #. Vilket innebär att när du laddar ner, låt oss säger snapchat, en populär applikation, eller när du laddar ner Facebook för en telefon, du hämtar antingen version skriven för din iPhone, eller skriven för din Android-telefon, eller skriven för din yta. Men det finns ett alternativ. Som Olivier syftade till Du kan faktiskt använda HTML 5 i stället, med hjälp av vad som kallas en bana applikation, där du helt enkelt implementera mobil närvaro och någon funktionalitet. Vad menar jag med mobil närvaro? Precis som din webbplats som har din kontaktinformation, en förteckning över alla dina produkter, kanske det har en shopping vagn, kanske du säljer saker genom det. Oavsett din ansökan är du genomföra det, inte i Objective-C, eller Swift, eller Java eller C #, men i HTML 5, som var det språk vi såg vid igår, med JavaScript och CSS. Och vad är trevligt om de tre är att köra dem, du behöver bara vad mjukvara? PUBLIK: En webbläsare. DAVID J. MALAN: En webbläsare. Och det bästa jag vet, alla dessa enheter levereras med webbläsare, så att användaren inte har måste installera något speciellt. Så du kan bara berätta din publik, dina kunder, gå till acme.com i ditt webbläsare och du ska bara har en webbaserad erfarenhet som fortfarande fyller hela skärmen, men du behöver inte oroa dig för alla Dessa kostnader och alla denna komplexitet. Men visst det kommer att finnas en hake här, eller hur? Speciellt om jag påpeka att ett par år sedan, den allra första versionen av Facebooks mobila applikation var mestadels en HTML 5 program. Och de har, mer nyligen implementerats det i deras andra applikationer. Så varför skulle du inte omedelbart vill säga, väl, naturligtvis ska vi göra detta? Vad kan de dolda kostnaderna vara? PUBLIK: Performance. DAVID J. MALAN: Performance? Hur menar du? PUBLIK: Personen App har mer prestanda. DAVID J. MALAN: Så det är sant, för ett par skäl. Vi kan oversimplify svaret. Och minns vår diskussion om tolkas mot kompilerade språk. Detta är HTML 5 och med det, bara för att vara klar, JavaScript-- skriven vanligen JS-- och CSS är alla tolkade språk, även om endast JavaScript är ett programmeringsspråk. Och så mot dessa, som en del av dessa sammanställs, åtminstone dessa three-- Objective-C, Java och C # - dessa, i teorin, bara bör vara snabbare. Men det finns en annan verklighet for-- PUBLIK: Funktioner? DAVID J. MALAN: Vad är det? Målgrupp: Funktioner. DAVID J. MALAN: Funktionalitet? Hur så? PUBLIK: Använd kameran av telefonen eller något. Du kan använda dem med webbläsaren. DAVID J. MALAN: Exakt. De sec-- PUBLIK: [OHÖRBART] DAVID J. MALAN: Det är en annan bra. Det finns funktioner som kommer med mobiltelefoner i dag som inte är, genom sin konstruktion, för säkerhet skäl, tillgängliga för webbläsare. Eftersom det skulle vara typ av en obehagligt sak om bara när du besöker google.com, eller cnn.com, eller någon website.com, att den webbplatsen har befogenhet att vända på kameran, ta en bild av dig, och sedan använda den. Men du skulle inte ha en slumpmässig webbplats att du besöker för första gången att ha denna förmåga. Och så vad telefon tillverkare typiskt göra är de bara neka åtkomst till den sortens information till en webbläsare, vilket innebär att du kan inte genomföra kameran. Du kan inte genomföra push-meddelanden, Ljudet som du får på skärmen med korta meddelanden. Och i själva verket är även GPS enda typ av slags tillgängliga för webbläsare. Om du någonsin på en bärbar dator eller på en mobil enhet, drog upp något som kanske CNN.com, men också lokala nyheter stationer tenderar att göra detta uppmanas du ofta med en message-- foxnews.com vill veta var du befinner dig. Godkänna eller avslå. Tja, är webbläsaren försöker komma åt din GPS-informationen från telefonen. Men tack och lov Microsoft, och Apple och Google har beslutat att känns Det är en bra situation, Vi vill Google Maps och andra verktyg för att arbeta, men vi vill inte krypa ut folk genom att bara göra det möjligt en webbplats för att göra detta. Så låt oss slags träffas halvvägs och uppmana användaren. Men det är inte nödvändigtvis fallet med all hårdvara, som kameran och med tryck meddelanden och liknande, så du kan behöva offra vissa funktioner. Men prestanda också. Det blir mindre märkbar idag, kanske som LTE fångster och snabbare internet hastigheter på telefoner, men du kan slags känna skillnaden. Som en webbaserad applikation bara känns långsammare, typiskt, än en ursprungliga programmet, delvis eftersom en webbaserad applikation per definition är på internet. Det talar till servrarna på webben. Och om din nätverksanslutning är långsam, även rulla kan vara långsam. Men en ursprungliga programmet, har du redan före downloaded-- förmodligen när du var hemma från App Store, eller du åtminstone pre-nedladdade det i sin helhet tidigare oavsett din anslutning Byggd och så nu har du alla bitar som du vanligtvis behöver. Utom kanske vissa uppgifter som kommer från en server. Så dessa är avvägningar här. Det är lite av en mellan kompromiss, faktiskt. Och jag tror dig-- PUBLIK: Använd data offline. I den inhemska program, kan du [OHÖRBART] DAVID J. MALAN: Absolut. Så det är offline frågan, vilket är verkligen irriterande om du inte kan spela vissa spel eller användning vissa program bara för att du är i en källare någonstans eller i en hiss. En ursprungliga programmet är elastisk med högre sannolikhet mot att förutsatt att du har alla data du behöver lokalt. Så det finns ett tredje alternativ här. Och låt oss dra spektrum som native app här och webbapp här. Och vad som finns i mitten är något called-- och jag tror att du kan ha använde ordet innan, kanske? Hybrid ansökan. Och som ordet antyder, det är något i mitten. Det är lite av en webbapplikation och det är lite av en ursprungliga programmet. Och vad betyder det? Det visar sig att det finns frameworks-- att använda en term från earlier-- programvara att andra människor har skrivit för var och en av dessa plattformar. Dessa och ytterligare andra anordningar. I själva verket, låt mig gå till PhoneGap, vilket är en sådan ram som jag tror Adobe äger nu. Låt mig gå till Komma igång. Låt oss se. Se om jag kan se en lista över verktyg. Hårdvara. Att komma igång. PhoneGap hårdvara. Låt oss se. PhoneGap hårdvara tillgång. Låt mig se om vi kan hitta en liten diagram som de brukade ha. Detta är på en annan plats. Är detta bra? Nej. Det är gonna avfall vår tid. PhoneGap hårdvara. Enheter. Device API. Nej, de har flyttat det. PhoneGap. Låt oss gå en sista titt på detta och se om jag kan visa dig. Att komma igång. Installera PhoneGap. Installera mobilappen. Kom igen. De har omorganiseras allt. Okej. Åh, okej. Tja, här går vi. Detta är inte så upplysande, men Detta är vad jag var typ av ute efter. Så PhoneGap är ett ramverk som du kan ladda ner gratis som ger dig några startkoden, i huvudsak. Så en del kod som de har skrivit som inte göra mycket av någonting. Men vad det ger dig väsentligen är ekvivalent av ett program som bara sätter en stor rektangel på användarens skärm. Det spelar ingen sätta en adressfältet, som en webbläsare, inte sätta en adress. Det sätter bara en stor rektangel. Och du konfigurerar denna stora rektangel, under huven, att faktiskt gå till acme.com, eller kanske m.acme.com, för mobile.acme.com, men användaren inte vet de är på den adressen. Allt de ser är innehållet på webbsidan. Men vad är trevligt om denna varelse en hybrid app är att det PhoneGap och andra företag ger dig är de ger dig en liten bit av kod i Objective-C eller Swift, eller en liten bit av kod i Java, eller en liten bit av kod i C #, och i huvudsak allt du behöver för att ge är minimalt den adressen till din webbaserad applikation. Och då du bunt detta alla tillsammans och du har det antingen få tillgång till webbplats via Internet, eller du ens cache en lokal kopiera inne i programmet, och sedan spara din ansökan i iPhone-format, Android format, yta format, eller vilket som helst antal andra anordningar. Du laddar upp var och en av dessa versioner till Google Play Store, till App Store, till Windows Store, och så vidare. Och nu kan du ha alla dina publiken hämta verkligen en infödd app, även om det mesta av koden var skriven av någon annan, men innehållet i den infödda app alla kommer ifrån, vanligtvis din egen hemsida. Så du fortsätta skriva din webbplats i HTML, JavaScript och CSS. Så varför oskärpa dessa rader? Varför har en hybrid ansökan det är typ av infödda, men också typ av webbaserade? Vad är hela poängen med lägga till denna komplexitet? Jag menar, även fortfarande, bara från ögna igenom denna sida, Komma igång guiden känns det har fått en hel del steg för mig att göra innan jag can-- PUBLIK: Återanvändning? DAVID J. MALAN: Återanvändning? Vad menar du? PUBLIK: av källkoden. Så samma kod skulle köras på alla de olika plattformarna. DAVID J. MALAN: Ja. PUBLIK: [OHÖRBART] DAVID J. MALAN: Perfect. Om tiden är knapp och om du har inte så många developers-- kanske du har en utvecklare och han eller hon säkert vet inte alla dessa environments-- absolut inte bra, och säkert kan inte programmet i alla tre samtidigt och skicka tre produkter i tidsfristen för en, Du kan få honom eller henne att bygga allt i HTML och JavaScript och CSS, och sedan lära en liten liten lite om inhemska program, precis tillräckligt för att ladda ner en ram som denna, att sedan ladda upp din produkt till alla de olika app butiker så att du nu har en ursprungliga programmet. Så det verkar vara en win-win, men återigen, att vara tydlig, Vilka är de potentiella kostnader eller gotchas? PUBLIK: Performance? DAVID J. MALAN: Ja. Prestanda. Det är svårt att beskriva verbalt. Så om du bara ta på tro en mobil applikation, en webbapplikation kommer typiskt utföra långsammare. Det kanske inte ser helt rätt, eftersom i iPhone, och i Android-telefoner, och Windows-enheter, det finns alltid ett slags standardutseende och känner till alla de knappar och menyer. Och företag i banan, kan prova att närma dessa estetik med bibliotek som Bootstrap, men user-- en skicklig user-- kommer att veta att något är inte riktigt rätt här. Och det är bra, kanske det är inte en stor sak. Men prestandaproblem absolut är en stor sak. Native applikationer tenderar att bara vara mycket mer lyhörd och därför bättre. Och så, vad händer då kanske det bästa av båda världar? Om du är särskilt en liten företag eller en liten grupp, du inte har resurser att utveckla en app parallellt på alla tre plattformar, och ärligt talat, känns som att det är en dålig idé ändå eftersom om du rulla ut och på alla tre samtidigt realisera, vi borde ha lagt till några funktioner eller gjort något annorlunda, nu du måste fixa det i tre platser, inte en. Vad är kanske den optimala strategi här övergripande, om resurser och tid är stram? PUBLIK: Gör det på iOS. DAVID J. MALAN: Det är inte orimligt. iPhones, åtminstone i den USA, är super populär. Android verkar fortfarande ha dominerande marknadsandel globalt, övergripande. Så du är inte nödvändigtvis representativa av helheten av jordklotet denna vecka. Men det är absolut ett beslut. Jag menar, på campus här jag tror vissa avskyvärda nummer eller procent av studenter har iPhone och inte Android-telefoner. Men utomlands, är det slags tvärtom. Så du bestämmer baserat på din målgrupp. Hur vet du vad din publik har? Tja, lärde vi ett trick igår. Du kan be dem. Om du har en företagsintern publik du kan skicka dem en enkät formulär. Eller så kan du bara göra vad? PUBLIK: Google Analytics? DAVID J. MALAN: Vad är det? PUBLIK: Google Analytics. DAVID J. MALAN: Google Analytics. Ja. Eller ännu slags tekniskt, bara titta på dina egna webbservrar loggar. För vad händer varje gång en webbläsare, om laptop, stationär eller telefon besöker din webbplats? De skickar att HTTP-huvudet som visar du vilken webbläsare och operativsystem de använder. Så du kan sluta med hög sannolikhet, vad din demografiska använder det sättet och sedan justera. Så antar att det är oacceptabelt. Det blir liksom dåligt för företag om Android-användare kan inte köpa våra widgets. PUBLIK: Oavsett om du är kommer ut eller inte? DAVID J. MALAN: Oavsett om du kommer att ta betalt? Så OK, du får vad du betalar för. PUBLIK: Oavsett om din app är gonna vara gratis eller om det är gonna-- DAVID J. MALAN: OK. Så kanske man kan ta igen kostnader på det sättet, eller--? PUBLIK: Jag läste en studie gång att nämnda mer Apple-användare betalar för appar versus-- DAVID J. MALAN: Det är sant eftersom de är redan betala mer för sina enheter. Så inte orimligt ett antagande. PUBLIK: [OHÖRBART] DAVID J. MALAN: OK. Så om de är mer villiga att betala, sedan till helvetet med Android-användare. De kommer inte att betala oss något ändå. Vi skulle lika gärna kunna fokusera våra prioriteringar, åtminstone under de första månaderna eller ett år, på iOS. Helt rimligt. Vad är en mer inkluderande strategi än så? Maybe-- vad är det? PUBLIK: [OHÖRBART] DAVID J. MALAN: En mer expensive-- så kanske investera mer in-- gå vidare. PUBLIK: Ja. Bara en mobil webbplats. DAVID J. MALAN: Så gör en mobila webbplats och inte ens oroa denna komplexitet. Eller kanske en rimlig strategi, som även Facebook tog, är att börja med en hybrid ansökan eftersom det inte så mycket svårare att göra detta än detta. Du behöver bara läsa några dokumentation och räkna ut hur att ladda upp saker till App Store. Så kanske du börjar med detta, så att på dag ett, du kan stödja alla användare. Och sedan, precis som Facebook och andra företag har gjort, när du har resurser, du har människor, varför inte du åter implementera bara iOS ansökan. Du har fortfarande något för alla, även om det är en sämre upplevelse kanske, med hybrid ansökan. Men du kan gradvis rulla ut och byta ut kort sikt åtgärder för hybrid program med dina mer inhemska program. PUBLIK: Men med en hybrid app du kommer att ha tillgång till mobila funktioner? DAVID J. MALAN: Inte nödvändigtvis. Så kanske du gör en medvetet beslut tidigt, du kan bara ladda upp bilder på infödd iPhone applikation för Facebook, men inte på Android, initialt, till exempel. Och det är lite av en vit lögn eftersom webbapplikationer har fler restriktioner än hybrid applikationer visar det sig ut, och om vi läser dokumentationen för PhoneGap och saker som det, folk har kommit upp med vägar att ge webbaserade applikationer åtkomst till kameran, så länge du använder en hybrid ansökan. Hur fungerar det? Eftersom hybriden tillämpning, per definition, har en bit kod i Objective-C, och Swift, och Java eller i C #, den kan komma åt hårdvaran. Inte nödvändigtvis allt, men det kan mycket väl vara så att du har tillräckligt tillgång för att få kameran, även för Android plattformar för Exempelvis i den contrived exempel. Alla andra frågor? Okej. Varför tar vi inte vår 15 minuters paus här. Vi kommer att fortsätta på tre med en slutlig titta på webbprogrammering, databaser, och Java.