1 00:00:00,000 --> 00:00:01,291 >> DAVID J. MALAN: Så vi är tillbaka. 2 00:00:01,291 --> 00:00:03,050 Så hög nivå ämne just nu nu 3 00:00:03,050 --> 00:00:06,440 är teknik stackar, vilket inte en särskilt teknisk term, 4 00:00:06,440 --> 00:00:09,960 det är mer av en fångst alla för alla antal kombinationer av teknik 5 00:00:09,960 --> 00:00:11,840 som du kan använda för att lösa problem. 6 00:00:11,840 --> 00:00:14,850 Och kanske den mest passande sätt att börja 7 00:00:14,850 --> 00:00:18,110 skulle vara att titta på språk sedan Jag håller rabbla en massa 8 00:00:18,110 --> 00:00:21,000 och de flesta alla i rummet har förmodligen hört talas om åtminstone en. 9 00:00:21,000 --> 00:00:25,730 >> Och så varför inte vi försöker att urskilja Vad-- skilja dessa språk 10 00:00:25,730 --> 00:00:28,932 och kort tala om när du skulle välja en över den andra, hur de är 11 00:00:28,932 --> 00:00:30,890 sorts i grunden olika, och i synnerhet 12 00:00:30,890 --> 00:00:34,830 när du chattar med ingenjörer, eller försöker bestämma vem att anställa, 13 00:00:34,830 --> 00:00:37,652 eller vad genomförandet förslag till greenlight, 14 00:00:37,652 --> 00:00:39,860 hur du faktiskt skulle göra dessa typer av beslut. 15 00:00:39,860 --> 00:00:41,890 >> Så låt oss bara rattle vissa saker. 16 00:00:41,890 --> 00:00:45,300 Av de språk som människor har hört talas om, vad som kommer att tänka på? 17 00:00:45,300 --> 00:00:48,030 C. OK. 18 00:00:48,030 --> 00:00:48,757 OK, C ++. 19 00:00:48,757 --> 00:00:51,400 20 00:00:51,400 --> 00:00:51,990 Vad är det? 21 00:00:51,990 --> 00:00:52,390 >> PUBLIK: Python. 22 00:00:52,390 --> 00:00:53,348 >> DAVID J. MALAN: Python. 23 00:00:53,348 --> 00:00:55,330 Excellent. 24 00:00:55,330 --> 00:00:57,000 Vad annars? 25 00:00:57,000 --> 00:00:58,810 Visual Basic. 26 00:00:58,810 --> 00:01:01,100 Jag hörde Java. 27 00:01:01,100 --> 00:01:02,610 Visuell Basic-- a.k.a. 28 00:01:02,610 --> 00:01:03,150 VB. 29 00:01:03,150 --> 00:01:03,650 Java. 30 00:01:03,650 --> 00:01:07,294 31 00:01:07,294 --> 00:01:12,810 NET, som är mer av en fångst alla för det är oftast C # som språk 32 00:01:12,810 --> 00:01:13,770 i fråga. 33 00:01:13,770 --> 00:01:14,770 Och låt mig nämna att. 34 00:01:14,770 --> 00:01:15,900 Så vi ska återkomma till det. 35 00:01:15,900 --> 00:01:17,560 Jag är ledsen? 36 00:01:17,560 --> 00:01:18,170 Förlåt? 37 00:01:18,170 --> 00:01:19,877 >> PUBLIK: SQL. 38 00:01:19,877 --> 00:01:20,876 DAVID J. MALAN: Scratch? 39 00:01:20,876 --> 00:01:21,610 PUBLIK: SQL. 40 00:01:21,610 --> 00:01:22,610 DAVID J. MALAN: Åh, SQL. 41 00:01:22,610 --> 00:01:23,110 OK. 42 00:01:23,110 --> 00:01:23,750 SQL. 43 00:01:23,750 --> 00:01:29,510 Så vi ska återkomma till that-- faktiskt, Det är good-- efter paus också. 44 00:01:29,510 --> 00:01:30,572 Vad annars? 45 00:01:30,572 --> 00:01:32,530 >> PUBLIK: Oracle. 46 00:01:32,530 --> 00:01:34,670 >> DAVID J. MALAN: Så Orakel, inte ett språk. 47 00:01:34,670 --> 00:01:36,560 Egentligen skulle de använda SQL också. 48 00:01:36,560 --> 00:01:38,360 Så låt oss sätta det efter pausen liksom. 49 00:01:38,360 --> 00:01:39,744 Och ledsen, något över här? 50 00:01:39,744 --> 00:01:40,660 PUBLIK: Mathematica. 51 00:01:40,660 --> 00:01:41,390 DAVID J. MALAN: Mathematica? 52 00:01:41,390 --> 00:01:42,303 OK, visst. 53 00:01:42,303 --> 00:01:46,150 54 00:01:46,150 --> 00:01:49,180 Och MATLAB är typ av på det ibland. 55 00:01:49,180 --> 00:01:50,060 >> PUBLIK: R. 56 00:01:50,060 --> 00:01:51,755 >> DAVID J. MALAN: R. Låt oss gå hit. 57 00:01:51,755 --> 00:01:54,710 58 00:01:54,710 --> 00:01:55,210 Fortran. 59 00:01:55,210 --> 00:01:55,880 Säker. 60 00:01:55,880 --> 00:01:57,910 Äldre skolan. 61 00:01:57,910 --> 00:01:59,390 Fortran. 62 00:01:59,390 --> 00:02:01,550 COBOL. 63 00:02:01,550 --> 00:02:02,410 Jag ska kasta ut BASIC. 64 00:02:02,410 --> 00:02:05,990 65 00:02:05,990 --> 00:02:08,539 GRUNDLÄGGANDE. 66 00:02:08,539 --> 00:02:09,390 Vilken som helst-- 67 00:02:09,390 --> 00:02:10,352 >> PUBLIK: MATLAB? 68 00:02:10,352 --> 00:02:11,310 DAVID J. MALAN: MATLAB. 69 00:02:11,310 --> 00:02:12,248 Åh, slå dig till det. 70 00:02:12,248 --> 00:02:15,370 71 00:02:15,370 --> 00:02:15,870 Vad som helst? 72 00:02:15,870 --> 00:02:18,700 Jag kan tänka mig ett par andra. 73 00:02:18,700 --> 00:02:21,876 Jag kan tänka mig några andra. 74 00:02:21,876 --> 00:02:22,792 Och vad var det sista? 75 00:02:22,792 --> 00:02:23,970 >> PUBLIK: ASP. 76 00:02:23,970 --> 00:02:25,030 >> DAVID J. MALAN: ASP? 77 00:02:25,030 --> 00:02:26,100 Ja. 78 00:02:26,100 --> 00:02:27,100 Active Server Pages. 79 00:02:27,100 --> 00:02:30,270 Det skulle i allmänhet faller under andra språk, ibland C #, 80 00:02:30,270 --> 00:02:32,040 så låt oss lämna det av. 81 00:02:32,040 --> 00:02:35,510 Men vi kommer tillbaka till det för ramar och sådant. 82 00:02:35,510 --> 00:02:36,290 Något annat? 83 00:02:36,290 --> 00:02:39,020 PHP är populärt. 84 00:02:39,020 --> 00:02:41,710 Ruby är en annan. 85 00:02:41,710 --> 00:02:48,230 JavaScript inte att förväxla med Java, är en annan. 86 00:02:48,230 --> 00:02:49,570 Det är lite av en hel del. 87 00:02:49,570 --> 00:02:53,590 >> Så det kan vara säkert överväldigande, som om listan är inte redan 88 00:02:53,590 --> 00:02:55,650 bara för att börja veta var du ska börja. 89 00:02:55,650 --> 00:02:58,130 Och så lyckligtvis, låt oss närma sig detta från några vinklar. 90 00:02:58,130 --> 00:03:03,520 Låt oss först försöka att kategorisera åtminstone några av dessa språk 91 00:03:03,520 --> 00:03:06,790 i två breda hinkar, som påminner om samtalet vi hade före paus, 92 00:03:06,790 --> 00:03:09,630 där vi pratade om att sammanställa, och källkod, och maskinkod, 93 00:03:09,630 --> 00:03:11,440 eftersom det är inte hur alla språk fungerar. 94 00:03:11,440 --> 00:03:15,640 Så vi ska plocka ut några exempel of-- eller kontra examples-- till den modellen. 95 00:03:15,640 --> 00:03:18,490 >> Och då, varför inte vi tala om ansökningarna 96 00:03:18,490 --> 00:03:20,390 att dessa språk används i allmänhet för. 97 00:03:20,390 --> 00:03:22,840 Och ärligt talat, även om detta är en ganska lång lista, 98 00:03:22,840 --> 00:03:26,320 det är bara en delmängd av denna lista som du normalt skulle dra av dessa dagar 99 00:03:26,320 --> 00:03:27,220 att lösa problem. 100 00:03:27,220 --> 00:03:29,150 Vissa språk är nyare än andra. 101 00:03:29,150 --> 00:03:31,170 Vissa språk är mer populära än andra. 102 00:03:31,170 --> 00:03:34,370 Så det är inte som du har en sådan en överväldigande uppgift innan du 103 00:03:34,370 --> 00:03:36,970 när man beslutar bland dessa olika språk. 104 00:03:36,970 --> 00:03:40,110 >> Så låt oss göra detta. 105 00:03:40,110 --> 00:03:45,870 Vi hade tidigare, källkod, och sedan hade vi maskinkod. 106 00:03:45,870 --> 00:03:48,590 107 00:03:48,590 --> 00:03:49,400 Hoppsan. 108 00:03:49,400 --> 00:03:50,910 Skriva fel ord. 109 00:03:50,910 --> 00:03:52,740 Maskinkod. 110 00:03:52,740 --> 00:03:57,549 Och vi hade någon process i mitten called-- ja, kompilatorn. 111 00:03:57,549 --> 00:03:58,215 Så kompilatorn. 112 00:03:58,215 --> 00:04:00,760 113 00:04:00,760 --> 00:04:03,910 >> Och vad maskinkoden faktiskt körs på i slutändan 114 00:04:03,910 --> 00:04:05,680 kommer att bli din faktiska CPU. 115 00:04:05,680 --> 00:04:09,660 Med andra ord, av maskinkod, I : den lägsta instruktioner 116 00:04:09,660 --> 00:04:11,330 att en CPU faktiskt förstår. 117 00:04:11,330 --> 00:04:15,100 Addition, subtraktion, flyttning, spara och operationer som. 118 00:04:15,100 --> 00:04:19,700 Och så detta är en modell för vad som är allmänt känd som kompilerade språk. 119 00:04:19,700 --> 00:04:21,000 Kanske inte så förvånande. 120 00:04:21,000 --> 00:04:23,550 >> Så detta är modellen för kompilerade språk. 121 00:04:23,550 --> 00:04:25,970 Men det visar sig att det finns En annan klass av språk 122 00:04:25,970 --> 00:04:32,650 kallas tolkas languages-- tolkas languages-- 123 00:04:32,650 --> 00:04:34,030 som är något annorlunda. 124 00:04:34,030 --> 00:04:41,660 Du skriver i källkoden, kör dem genom en tolk, 125 00:04:41,660 --> 00:04:45,440 och att tolken är vad körs på processorn. 126 00:04:45,440 --> 00:04:50,120 Med andra ord, vad du gör inte Emit är vad, tydligen? 127 00:04:50,120 --> 00:04:50,980 Maskinkod. 128 00:04:50,980 --> 00:04:54,290 De nollor och ettor att CPU själv i slutändan förstår. 129 00:04:54,290 --> 00:04:59,780 >> Så i denna första version och språk som C, som vi såg, 130 00:04:59,780 --> 00:05:02,040 du skriver i källkoden det är lite hemligt, 131 00:05:02,040 --> 00:05:05,300 men åtminstone är det slags engelsk-liknande och det är åtminstone läsbar 132 00:05:05,300 --> 00:05:06,780 När du vänjer sig. 133 00:05:06,780 --> 00:05:10,100 Du kör den genom en kompilator och ut du får i slutändan, ettor och nollor. 134 00:05:10,100 --> 00:05:11,340 >> Att en förenkling. 135 00:05:11,340 --> 00:05:12,839 Det finns några andra steg i det. 136 00:05:12,839 --> 00:05:15,530 I själva verket, om du någonsin har hört termen "assembler" 137 00:05:15,530 --> 00:05:17,990 det är ett steg före de nollor och ettor. 138 00:05:17,990 --> 00:05:20,949 Att lite mer lättläst, men fortfarande ganska svårbegripliga. 139 00:05:20,949 --> 00:05:23,740 Och så finns det mellansteg som i själva verket händer här. 140 00:05:23,740 --> 00:05:26,360 Men utgången, i slutändan, är dessa nollor och ettor. 141 00:05:26,360 --> 00:05:28,990 >> Men i den tolkade värld, där du har 142 00:05:28,990 --> 00:05:32,680 språk som tolkas språk, du faktiskt hoppa över det steget. 143 00:05:32,680 --> 00:05:36,010 Med andra ord, när du skriver en program, du bara omedelbart köra det. 144 00:05:36,010 --> 00:05:38,960 Du behöver inte kompilera det och sedan köra det, som jag gjorde förut. 145 00:05:38,960 --> 00:05:41,132 Du skriver det bara och köra det. 146 00:05:41,132 --> 00:05:44,340 Och om du vill göra en snabb förändring, du göra en snabb förändring och köra det. 147 00:05:44,340 --> 00:05:46,640 Så det finns inget mellansteg här. 148 00:05:46,640 --> 00:05:50,840 >> Nu, för det program jag skrev tidigare, som var här "Hello World" -programmet, 149 00:05:50,840 --> 00:05:53,660 du kanske rimligen wonder-- eller skäligen 150 00:05:53,660 --> 00:05:58,570 state-- det var inte den tiden krävande att kompilera mitt program. 151 00:05:58,570 --> 00:06:00,337 Det verkar ha gjort det bara sådär. 152 00:06:00,337 --> 00:06:02,170 Och det finns grafiska versioner av kompilatorer. 153 00:06:02,170 --> 00:06:05,270 Jag använder en mycket svårbegripliga version, men du kan slå en play-knappen 154 00:06:05,270 --> 00:06:07,887 och det skulle faktiskt göra sammanställningen för dig. 155 00:06:07,887 --> 00:06:10,720 Jag har sammanställt programmet och sedan igen, för att köra den, jag gör just detta. 156 00:06:10,720 --> 00:06:13,820 Och det utgångar till vänster där, "Hej!" 157 00:06:13,820 --> 00:06:15,530 Det verkar inte allt som betungande. 158 00:06:15,530 --> 00:06:19,920 Men när dina program mer än bara en, två, tre, 159 00:06:19,920 --> 00:06:25,470 fyra, fem rader långa, kan det ta betydligt fler sekunder att sammanställa. 160 00:06:25,470 --> 00:06:28,310 Ibland till och med minuter eller en hel del tid att sammanställa. 161 00:06:28,310 --> 00:06:30,480 Trots allt, en del av den världens största produkter 162 00:06:30,480 --> 00:06:35,040 är saker som operativsystem, Microsoft Word, Microsoft Excel, 163 00:06:35,040 --> 00:06:39,070 som kan vara hundratusentals eller till och med miljontals rader kod lång, 164 00:06:39,070 --> 00:06:41,300 och de som inte gör det bara direkt genomföra. 165 00:06:41,300 --> 00:06:44,560 >> Dessutom, på webben, är det blivit populärt att använda 166 00:06:44,560 --> 00:06:47,600 helt enkelt tolkade språk, delvis eftersom du 167 00:06:47,600 --> 00:06:50,570 kan göra en förändring som utvecklare och sedan bara omedelbart ladda 168 00:06:50,570 --> 00:06:52,570 sidans och omedelbart se resultatet. 169 00:06:52,570 --> 00:06:56,160 Och så HTML, utan ett programmeringsspråk, 170 00:06:56,160 --> 00:06:58,860 är ett språk som är tolkas. 171 00:06:58,860 --> 00:07:00,770 Och vi såg att samma effekt i går. 172 00:07:00,770 --> 00:07:04,070 Du ladda bara sidan efter att ha gjort en förändring i Cloud9 och-- voila-- 173 00:07:04,070 --> 00:07:05,560 du ser ett nytt resultat. 174 00:07:05,560 --> 00:07:07,090 >> Så vad är skillnaden här? 175 00:07:07,090 --> 00:07:13,190 I HTML, minns, hade vi öppna HTML, öppen huvud, öppen titel, nära titel, 176 00:07:13,190 --> 00:07:15,250 nära huvudet, öppen kropp, och så vidare. 177 00:07:15,250 --> 00:07:19,149 Vi hade alla dessa taggar som vi ganska mycket sagt, tala om för webbläsaren vad man ska göra. 178 00:07:19,149 --> 00:07:20,690 Hej webbläsare, här kommer en HTML-sida. 179 00:07:20,690 --> 00:07:22,170 Hej webbläsare, här kommer titeln. 180 00:07:22,170 --> 00:07:24,429 Hej webbläsare, här kommer några text som ska vara fet. 181 00:07:24,429 --> 00:07:25,720 Och sedan berätta det motsatta. 182 00:07:25,720 --> 00:07:27,330 Hej webbläsare, som är det för fetstil text. 183 00:07:27,330 --> 00:07:28,830 Hej webbläsare, det är det för kroppen. 184 00:07:28,830 --> 00:07:29,740 Och så vidare. 185 00:07:29,740 --> 00:07:31,130 >> Och så vad är en webbläsare? 186 00:07:31,130 --> 00:07:33,170 En webbläsare är bara en tolk. 187 00:07:33,170 --> 00:07:36,090 Det är ett program som någon som Microsoft eller Google har skrivit, 188 00:07:36,090 --> 00:07:39,160 vars syfte i livet är att läsa ett språk, som kallas HTML, 189 00:07:39,160 --> 00:07:39,890 och tolka den. 190 00:07:39,890 --> 00:07:41,290 Uppifrån och ned, från vänster till höger. 191 00:07:41,290 --> 00:07:46,880 Och varje gång webbläsaren ser öppen fäste, titel, nära fästet, 192 00:07:46,880 --> 00:07:48,960 det ska tolka det på så sätt, åh, att 193 00:07:48,960 --> 00:07:52,490 innebär att jag ska lägga dessa ord sätt upp här på toppen av webbläsaren. 194 00:07:52,490 --> 00:07:55,700 >> Så det bara gör vad HTML-koden säger. 195 00:07:55,700 --> 00:07:57,240 Men det finns inga nollor och ettor. 196 00:07:57,240 --> 00:07:58,250 Det finns ingen sammanställning. 197 00:07:58,250 --> 00:07:58,890 Du inte gjorde det. 198 00:07:58,890 --> 00:07:59,931 Webbläsaren har inte gjort det. 199 00:07:59,931 --> 00:08:01,710 Det är bara inte inblandad. 200 00:08:01,710 --> 00:08:05,890 >> Så i en anda av dessa pågående ämnen, i dag och i går, 201 00:08:05,890 --> 00:08:08,400 det verkar vara en underbar funktion. 202 00:08:08,400 --> 00:08:11,410 Du sparar din kod och sedan bara köra det eller tolka det. 203 00:08:11,410 --> 00:08:13,790 Det finns inga mellansteg. 204 00:08:13,790 --> 00:08:15,690 Visst finns det en kostnad? 205 00:08:15,690 --> 00:08:16,810 Kan inte alla vara upsides. 206 00:08:16,810 --> 00:08:19,964 Så vad kan denna kostnad vara? 207 00:08:19,964 --> 00:08:20,940 >> PUBLIK: Space. 208 00:08:20,940 --> 00:08:22,370 >> DAVID J. MALAN: Space. 209 00:08:22,370 --> 00:08:23,370 Så säker. 210 00:08:23,370 --> 00:08:26,920 I den kompilerade världen, har du inte bara den ursprungliga källkoden, 211 00:08:26,920 --> 00:08:29,657 du också skapa och då förmodligen att spara 212 00:08:29,657 --> 00:08:31,740 maskinen code-- den nollor och ones-- och det är 213 00:08:31,740 --> 00:08:33,870 fick ta upp en viss mängd utrymme. 214 00:08:33,870 --> 00:08:34,429 Absolut. 215 00:08:34,429 --> 00:08:35,765 Så det kostar dig mer utrymme. 216 00:08:35,765 --> 00:08:39,289 217 00:08:39,289 --> 00:08:39,789 Ja? 218 00:08:39,789 --> 00:08:43,280 >> Målgrupp: Webbläsare kanske tolka på olika sätt. 219 00:08:43,280 --> 00:08:46,770 >> DAVID J. Malan: Webbläsare kan tolka det annorlunda. 220 00:08:46,770 --> 00:08:48,622 Det är sant. 221 00:08:48,622 --> 00:08:50,330 Men jag är inte säker på att jag bekväm hävdar 222 00:08:50,330 --> 00:08:51,840 det beror på att det är tolkas. 223 00:08:51,840 --> 00:08:56,340 Det är mer bara för att det är ett genomförande av ett språk 224 00:08:56,340 --> 00:08:58,050 som i sig själv har oklarheter. 225 00:08:58,050 --> 00:09:01,570 Så låt oss inte riktigt bekräfta att en, men bra föraning. 226 00:09:01,570 --> 00:09:03,103 Vad kan vara det pris som betalas? 227 00:09:03,103 --> 00:09:03,602 Andrew? 228 00:09:03,602 --> 00:09:05,912 >> PUBLIK: Du kombinerar två steg, så att du därför 229 00:09:05,912 --> 00:09:08,300 har ökande komplexitet samt. 230 00:09:08,300 --> 00:09:11,040 >> DAVID J. MALAN: Den complex-- ökningen i komplexitet där? 231 00:09:11,040 --> 00:09:12,270 För vem? 232 00:09:12,270 --> 00:09:16,748 >> PUBLIK: Så, i tolken steg, du kombinera tolken 233 00:09:16,748 --> 00:09:19,120 och kompilator för bara leder upp att-- 234 00:09:19,120 --> 00:09:21,100 >> DAVID J. MALAN: Ah, OK. 235 00:09:21,100 --> 00:09:25,240 Ironiskt nog är det förmodligen lite enklare att genomföra tolken, 236 00:09:25,240 --> 00:09:29,530 även om det tycks avkastnings Nackdelar med denna bekvämlighet. 237 00:09:29,530 --> 00:09:30,550 Så möjligen sant. 238 00:09:30,550 --> 00:09:32,716 Men det slags beror jag skulle säga, på språket 239 00:09:32,716 --> 00:09:35,720 och om hur de gick om att genomföra den. 240 00:09:35,720 --> 00:09:38,535 Det kan vara en mycket mer komplicerad, faktiskt, i kompilatorn, 241 00:09:38,535 --> 00:09:41,410 bara för att du måste gå från något så hög nivå att något 242 00:09:41,410 --> 00:09:42,560 så låg nivå. 243 00:09:42,560 --> 00:09:45,340 Men en bra tanke. 244 00:09:45,340 --> 00:09:50,770 >> Så med andra ord, ett kompilerat program, när den slås in i dessa nollor och ettor, 245 00:09:50,770 --> 00:09:54,470 hamnar på det språk att processorn talar, 246 00:09:54,470 --> 00:09:57,850 medan det i den här sidan av värld, det program du har skrivit, 247 00:09:57,850 --> 00:10:02,527 koden du har skrivit, aldrig får omvandlas i själva språket 248 00:10:02,527 --> 00:10:03,360 datorn talar. 249 00:10:03,360 --> 00:10:04,190 De nollor och ettor. 250 00:10:04,190 --> 00:10:08,480 Det stannar i den ursprungliga, mer mänsklig vänlig, mer lättläst språk. 251 00:10:08,480 --> 00:10:11,720 Så vad kan vara underförstått där, inte om du gör faktiskt 252 00:10:11,720 --> 00:10:15,020 bry konvertera din programmet till mycket språket 253 00:10:15,020 --> 00:10:18,013 att den underliggande dator talar? 254 00:10:18,013 --> 00:10:19,780 >> PUBLIK: kanske inte förstå något? 255 00:10:19,780 --> 00:10:21,170 >> DAVID J. MALAN: Might inte förstår något. 256 00:10:21,170 --> 00:10:23,297 Och det kan claim-- om det inte förstod 257 00:10:23,297 --> 00:10:25,880 något, det är en bugg eller brist av funktionen i tolken. 258 00:10:25,880 --> 00:10:28,544 Så det skulle vara mer av ett misstag än en kostnad. 259 00:10:28,544 --> 00:10:30,419 >> PUBLIK: Du har tillgång till källkoden? 260 00:10:30,419 --> 00:10:31,877 DAVID J. MALAN: Det finns en bra. 261 00:10:31,877 --> 00:10:34,140 Så en nackdel här är att du tycks ha tillgång. 262 00:10:34,140 --> 00:10:37,006 Du, slutanvändaren, kan tyckas ha tillgång till källkoden. 263 00:10:37,006 --> 00:10:38,130 Och det är inte alltid sant. 264 00:10:38,130 --> 00:10:39,660 Men det är sant i Vid JavaScript 265 00:10:39,660 --> 00:10:41,660 som vi ska titta på efter pausen i dag, vilket 266 00:10:41,660 --> 00:10:45,720 är ett tolkat programmeringsspråk att du skriver i källkoden. 267 00:10:45,720 --> 00:10:48,890 >> Men att källkoden får överföras från servern till webbläsaren 268 00:10:48,890 --> 00:10:51,392 och körs i den mänskliga webbläsare. 269 00:10:51,392 --> 00:10:54,350 Så här kunde hon bara öppna fönster, som jag har gjort i Chrome, 270 00:10:54,350 --> 00:10:57,740 och titta på det, som vi själva sneglade på igår med Google. 271 00:10:57,740 --> 00:11:00,420 Det kan se lite obegripligt men det är där. 272 00:11:00,420 --> 00:11:03,482 Så det är absolut en betalkurs. 273 00:11:03,482 --> 00:11:04,565 PUBLIK: Performance hit? 274 00:11:04,565 --> 00:11:05,020 DAVID J. MALAN: Ja. 275 00:11:05,020 --> 00:11:06,260 Och det är den andra biggie. 276 00:11:06,260 --> 00:11:07,380 Det finns en föreställning hit. 277 00:11:07,380 --> 00:11:10,100 Eftersom du har detta mellanhand, som själv 278 00:11:10,100 --> 00:11:13,740 är ett program, mellan dig och CPU, i motsats 279 00:11:13,740 --> 00:11:17,880 att bara mata dessa råa nollor och ettor in i CPU, 280 00:11:17,880 --> 00:11:21,060 Det finns en föreställning hit som du ta med ett tolkat språk. 281 00:11:21,060 --> 00:11:24,240 Så att, godtyckligt, ett program som kan ta en sekund 282 00:11:24,240 --> 00:11:27,840 att köras på en dator eller en minut för att köras på en dator här, 283 00:11:27,840 --> 00:11:32,059 kan ta 10 sekunder eller 10 minuter att köra på en dator här. 284 00:11:32,059 --> 00:11:35,100 Det är i allmänhet inte kommer att vara att mycket av en difference-- faktor 10-- 285 00:11:35,100 --> 00:11:36,808 eftersom det finns optimeringar du kan göra. 286 00:11:36,808 --> 00:11:38,680 Men det är nästan alltid långsammare. 287 00:11:38,680 --> 00:11:43,070 Nu, baksidan till denna oro är att, väl datorer, var 12 288 00:11:43,070 --> 00:11:45,970 till 18 months-- enligt Moores lag, så att speak-- 289 00:11:45,970 --> 00:11:47,600 bara blir snabbare och snabbare. 290 00:11:47,600 --> 00:11:48,750 Jag har mer och mer diskutrymme. 291 00:11:48,750 --> 00:11:49,791 Jag har mer och mer RAM-minne. 292 00:11:49,791 --> 00:11:50,620 Vem bryr sig egentligen? 293 00:11:50,620 --> 00:11:52,328 >> Och det är lite av en rimligt argument. 294 00:11:52,328 --> 00:11:55,740 I själva verket en av anledningarna till varför vi kan tolerera långsammare 295 00:11:55,740 --> 00:11:58,480 tolkas språk är därför vi människor inte riktigt märker. 296 00:11:58,480 --> 00:12:00,690 Datorerna har blivit precis så jäkla fort. 297 00:12:00,690 --> 00:12:04,520 Medan tillbaka i dag, särskilt när hårdvara var mycket mer begränsad, 298 00:12:04,520 --> 00:12:06,860 du hade mindre av allt, det var mycket dyrare 299 00:12:06,860 --> 00:12:10,570 så allt kostar mer, ja då du verkligen ville pressa ut 300 00:12:10,570 --> 00:12:12,590 så mycket prestanda som du kan. 301 00:12:12,590 --> 00:12:16,400 Men det krävs att skriva på en lägre nivå, om man så vill, 302 00:12:16,400 --> 00:12:18,090 med ett kompilerat språk. 303 00:12:18,090 --> 00:12:20,830 >> Så du tar denna prestation hit. 304 00:12:20,830 --> 00:12:24,780 Men generellt, de upsides verkar vara värt det i dessa dagar. 305 00:12:24,780 --> 00:12:26,850 Väl, med undantag för den intellektuell egendom fråga. 306 00:12:26,850 --> 00:12:28,641 Denna typ av läsbarhet av koden kommer vi 307 00:12:28,641 --> 00:12:30,640 komma tillbaka till när vi tittar på JavaScript. 308 00:12:30,640 --> 00:12:33,140 >> Så låt oss försöka kategori åtminstone några av dessa. 309 00:12:33,140 --> 00:12:41,650 Så bland de kompilerade språk, vi skulle ha C, C ++, sort av, sorta, Java, 310 00:12:41,650 --> 00:12:48,120 även om det är lite av ett undantag, för skäl som jag ska visa dig på bara ett ögonblick. 311 00:12:48,120 --> 00:12:51,540 C # skulle vara på denna lista. 312 00:12:51,540 --> 00:12:54,930 Vi tittar på mer på bara de mer moderna språk. 313 00:12:54,930 --> 00:12:55,430 Okej. 314 00:12:55,430 --> 00:12:56,804 Och det verkar som många där. 315 00:12:56,804 --> 00:13:03,500 Medan på denna sida av stängslet, vi kan ha JavaScript och Python, 316 00:13:03,500 --> 00:13:08,040 och PHP och Ruby. 317 00:13:08,040 --> 00:13:13,640 Och är det tillräckligt för de nyare dem? 318 00:13:13,640 --> 00:13:15,410 Det känns gott för nu. 319 00:13:15,410 --> 00:13:16,330 OK. 320 00:13:16,330 --> 00:13:18,760 Och sedan dot dot dot, eftersom listan är oändlig. 321 00:13:18,760 --> 00:13:22,300 >> Och faktum är att om vi vill bara få en känsla av this-- Wikipedia, 322 00:13:22,300 --> 00:13:24,130 kompilerade språk. 323 00:13:24,130 --> 00:13:27,150 Jag gissar att vi kan få en betydligt mer uttömmande. 324 00:13:27,150 --> 00:13:27,910 Så här går vi. 325 00:13:27,910 --> 00:13:30,620 Så här är en mycket mer uttömmande. 326 00:13:30,620 --> 00:13:34,150 Och jag hoppades att någon skulle gissa D som ett språk, eftersom det också finns, 327 00:13:34,150 --> 00:13:37,747 men de stannade vid D det verkar. 328 00:13:37,747 --> 00:13:39,330 Även om det faktiskt kan vara en E. 329 00:13:39,330 --> 00:13:41,496 >> Åh, faktiskt, bör detta vara på listan dessa dagar. 330 00:13:41,496 --> 00:13:47,460 Swift är faktiskt en språk som Apple uppfann 331 00:13:47,460 --> 00:13:50,302 som nu används i allt högre grad så, i iPhone-utveckling. 332 00:13:50,302 --> 00:13:52,260 Men vi kommer tillbaka till att med vår diskussion 333 00:13:52,260 --> 00:13:54,090 mobil i bara lite också. 334 00:13:54,090 --> 00:13:55,260 Så Swift liksom. 335 00:13:55,260 --> 00:13:57,540 >> Och sedan om vi går till tolkas language-- 336 00:13:57,540 --> 00:14:05,010 tolkas language-- så här är en ännu längre lista också. 337 00:14:05,010 --> 00:14:07,260 Så om du bara google och titta på Wikipedia för dessa, 338 00:14:07,260 --> 00:14:09,231 ser du alla typer av språk. 339 00:14:09,231 --> 00:14:10,980 Men syftet är, för i dag egentligen bara 340 00:14:10,980 --> 00:14:13,680 kokar ner till kanske detta frågan om immateriella rättigheter 341 00:14:13,680 --> 00:14:18,200 och läsbarhet av slutanvändaren och till prestanda, är en annan biggie samt. 342 00:14:18,200 --> 00:14:21,080 >> Så bland dessa språk, Låt mig se om vi kan ge dig 343 00:14:21,080 --> 00:14:24,487 bara några exempel av språk. 344 00:14:24,487 --> 00:14:26,820 Vi vill inte gå igenom alla språk i all oändlighet. 345 00:14:26,820 --> 00:14:29,720 Har du någonsin undrat vad en visst språk ser ut? 346 00:14:29,720 --> 00:14:31,562 Vi såg en stund sedan. 347 00:14:31,562 --> 00:14:33,520 Varför vi inte ta ett par av funktionen förfrågningar. 348 00:14:33,520 --> 00:14:35,380 Vem skulle vilja se vad annat språk ser ut? 349 00:14:35,380 --> 00:14:35,620 Ja. 350 00:14:35,620 --> 00:14:36,150 >> PUBLIK: Java. 351 00:14:36,150 --> 00:14:36,540 >> DAVID J. MALAN: Java. 352 00:14:36,540 --> 00:14:37,040 Okej. 353 00:14:37,040 --> 00:14:38,504 Så låt oss gå till Java. 354 00:14:38,504 --> 00:14:42,300 355 00:14:42,300 --> 00:14:44,900 Och bara för att ge dig en sample-- vi kunde skriva ut alla dessa, 356 00:14:44,900 --> 00:14:47,670 men det skulle vara snabbare bara för att titta på någon annans exempelkod. 357 00:14:47,670 --> 00:14:48,170 Okej. 358 00:14:48,170 --> 00:14:50,330 Så är detta ett bra exempel? 359 00:14:50,330 --> 00:14:52,040 Hoppsan. 360 00:14:52,040 --> 00:14:52,540 OK. 361 00:14:52,540 --> 00:14:58,810 Så här är Java-versionen av program jag skrev tidigare, "Hello World". 362 00:14:58,810 --> 00:15:01,900 >> Så Java, kommer du ofta se sökordet "klass." 363 00:15:01,900 --> 00:15:03,779 Då ser du några namn efter det. 364 00:15:03,779 --> 00:15:05,570 Du ser klammerparenteser som vi såg tidigare, 365 00:15:05,570 --> 00:15:08,153 och ibland går de på samma linje, ibland andra linjer, 366 00:15:08,153 --> 00:15:09,734 det är typ av ett personligt beslut. 367 00:15:09,734 --> 00:15:11,900 Du ser sökord som "Allmänheten", "statisk", "tomrum". 368 00:15:11,900 --> 00:15:13,790 Men vi såg "main". "Main" är i allmänhet 369 00:15:13,790 --> 00:15:17,220 namnet på den förvalda funktionen eller standard bit av koden som 370 00:15:17,220 --> 00:15:18,760 blir köras i ett program. 371 00:15:18,760 --> 00:15:19,330 >> "Sträng." 372 00:15:19,330 --> 00:15:20,850 Vad vi menar med sträng tidigare? 373 00:15:20,850 --> 00:15:23,480 Jag använde den typ av lättvindigt. 374 00:15:23,480 --> 00:15:25,100 En sträng är vad? 375 00:15:25,100 --> 00:15:25,601 Ett ord. 376 00:15:25,601 --> 00:15:27,058 Det är som en följd av tecken. 377 00:15:27,058 --> 00:15:29,810 Enskilda tecken, tillbaka till rygg mot rygg, vanligen i en array, 378 00:15:29,810 --> 00:15:30,690 som vi har diskuterat. 379 00:15:30,690 --> 00:15:34,700 Och i själva verket ser denna syntax Här är de två hakparenteser? 380 00:15:34,700 --> 00:15:39,210 Det innebär, hej dator, här kommer en array med strängar. 381 00:15:39,210 --> 00:15:42,636 Torget hakparenteser är används ofta för att beteckna att. 382 00:15:42,636 --> 00:15:44,510 Och då kan du förmodligen ta en guess-- vad 383 00:15:44,510 --> 00:15:46,580 gör detta markeras bit av koden förmodligen göra? 384 00:15:46,580 --> 00:15:49,737 385 00:15:49,737 --> 00:15:50,639 >> PUBLIK: Utgången? 386 00:15:50,639 --> 00:15:51,090 >> DAVID J. MALAN: Ja. 387 00:15:51,090 --> 00:15:52,506 Den skriver något på skärmen. 388 00:15:52,506 --> 00:15:57,070 Så "system" är ett slags hänvisning till datorn. 389 00:15:57,070 --> 00:15:59,620 "Out" betyder att datorns utgång eller skärmen. 390 00:15:59,620 --> 00:16:04,450 Så "system.out.print ln" betyder antagligen? 391 00:16:04,450 --> 00:16:05,570 "Ln." 392 00:16:05,570 --> 00:16:09,570 Skriv linje som programmerare som till synes stava vissa ord ur 393 00:16:09,570 --> 00:16:11,820 i sin helhet och ta genvägar med andra ord. 394 00:16:11,820 --> 00:16:13,260 Men "ln" är linje, så skrivraden. 395 00:16:13,260 --> 00:16:17,370 Så det skriver ut "Hej World! ", Följt av en ny rad. 396 00:16:17,370 --> 00:16:18,300 >> Så det är det. 397 00:16:18,300 --> 00:16:21,150 Men Java är vad de kommer att samtalsobjektorienterad. 398 00:16:21,150 --> 00:16:23,440 Och faktiskt, bara för att ge en par andra definitioner 399 00:16:23,440 --> 00:16:26,420 det som du kan se, i allmänhet, det 400 00:16:26,420 --> 00:16:30,600 finns många olika typer av språk, men det vanligaste 401 00:16:30,600 --> 00:16:37,830 är förfarandet eller imperativa språk. 402 00:16:37,830 --> 00:16:41,600 Det är funktionella språk, vilket gör inte 403 00:16:41,600 --> 00:16:43,790 innebära att andra är icke-funktionell. 404 00:16:43,790 --> 00:16:47,740 Och så finns det objektorienterade språk. 405 00:16:47,740 --> 00:16:51,170 Och det är kanske det bästa kategorisering av de flesta språk 406 00:16:51,170 --> 00:16:56,445 som du någonsin skulle välja för slags av ett typiskt kommersiellt projekt. 407 00:16:56,445 --> 00:16:58,910 >> Detta skulle vara för mycket av, Jag tror på en råtta hål 408 00:16:58,910 --> 00:17:01,620 att gå ner, för att försöka förklara de olika skillnader. 409 00:17:01,620 --> 00:17:04,599 Men språk vi har sett alltså far-- C 410 00:17:04,599 --> 00:17:07,680 är en procedur eller en imperativt språk. 411 00:17:07,680 --> 00:17:11,200 På senare tid har uppfunnit språk tenderar att vara, ledsen, 412 00:17:11,200 --> 00:17:14,430 objektorienterad, vilket innebär de har andra funktioner till dem. 413 00:17:14,430 --> 00:17:18,130 414 00:17:18,130 --> 00:17:19,430 Kan jag förklara det på det här sättet? 415 00:17:19,430 --> 00:17:20,950 Låt oss inte ens gå ner. 416 00:17:20,950 --> 00:17:25,200 >> Objektorienterade medel du kan implement-- 417 00:17:25,200 --> 00:17:27,930 du kan modellera den verkliga världen lite mer effektivt. 418 00:17:27,930 --> 00:17:29,722 Mänskligheten, med tiden, har räknat ut, wow, 419 00:17:29,722 --> 00:17:32,430 det skulle vara trevligt om mitt språk hade den här funktionen eller den funktionen. 420 00:17:32,430 --> 00:17:34,830 Och det är därför vi har så många språk i världen. 421 00:17:34,830 --> 00:17:37,670 Förnuftiga människor, smarta människor, eller avstyrka 422 00:17:37,670 --> 00:17:41,000 och alltid sorts möts på utveckla nya språk tillsammans. 423 00:17:41,000 --> 00:17:41,660 >> Typexempel. 424 00:17:41,660 --> 00:17:45,260 Apple uppfann Swift i hopp om förmodligen sänka 425 00:17:45,260 --> 00:17:47,950 baren till iPhone utveckling, eftersom den tidigare language-- 426 00:17:47,950 --> 00:17:51,080 kallas Objective-C, som skulle kunna också vara på vår lista här-- 427 00:17:51,080 --> 00:17:54,190 var mycket mer svårbegripliga och mycket svårare att linda ett sinne runt. 428 00:17:54,190 --> 00:17:57,690 Och som programmering blir utan tvekan mer tillgängliga och mer allmänt 429 00:17:57,690 --> 00:18:00,580 antogs av människor även mindre tekniskt, den goal-- 430 00:18:00,580 --> 00:18:04,160 Det är en mycket tapper mål att försöka sänka inträdeshinder genom att göra 431 00:18:04,160 --> 00:18:07,400 språken själva lättare att komma igång med, 432 00:18:07,400 --> 00:18:09,430 men inte mindre kraftfull nödvändigtvis. 433 00:18:09,430 --> 00:18:10,560 >> Och ett annat språk. 434 00:18:10,560 --> 00:18:14,110 Varför vi inte ta en titt på något som Python, 435 00:18:14,110 --> 00:18:18,090 vilket är mycket i ropet dessa dagar. 436 00:18:18,090 --> 00:18:19,570 Pytonorm. 437 00:18:19,570 --> 00:18:20,464 Exempel på program. 438 00:18:20,464 --> 00:18:24,600 439 00:18:24,600 --> 00:18:26,700 Låt oss se. 440 00:18:26,700 --> 00:18:28,790 "Hello World" språk. 441 00:18:28,790 --> 00:18:30,180 Nu gör vi det. 442 00:18:30,180 --> 00:18:33,625 "Hej världen." 443 00:18:33,625 --> 00:18:35,375 Låt oss se om detta ger oss ett bra exempel. 444 00:18:35,375 --> 00:18:39,450 445 00:18:39,450 --> 00:18:39,950 OK. 446 00:18:39,950 --> 00:18:41,283 Så detta är faktiskt ganska kul. 447 00:18:41,283 --> 00:18:43,330 Så om du någonsin google "Hello World", som 448 00:18:43,330 --> 00:18:47,000 råkar vara en av de första programmen som skrivits i ett modernt språk, 449 00:18:47,000 --> 00:18:51,830 precis som en proof of concept, kan du se alla möjliga implementeringar av detta. 450 00:18:51,830 --> 00:18:54,240 >> Några av dessa språk Jag har inte ens hört talas om. 451 00:18:54,240 --> 00:18:59,770 Men du kan see-- låt oss gå till Basic, den jag lärde år sedan, delvis. 452 00:18:59,770 --> 00:19:02,720 Detta var en rolig språk eftersom du tvungen att, eftersom programmeraren, antal 453 00:19:02,720 --> 00:19:03,710 alla dina linjer. 454 00:19:03,710 --> 00:19:05,626 Inte olikt vad jag var gör när jag skrev 455 00:19:05,626 --> 00:19:08,380 pseudokod på den gula dokument tidigare för binär sökning, 456 00:19:08,380 --> 00:19:09,580 för att söka en telefonbok. 457 00:19:09,580 --> 00:19:11,810 >> Och så, om du ville att gå till en annan linje, 458 00:19:11,810 --> 00:19:15,780 du bokstavligen skulle skriva, gå till 10, eller gå till 20. 459 00:19:15,780 --> 00:19:19,110 Och om du skriver linjer, konvention var att göra, är denna linje 10, 460 00:19:19,110 --> 00:19:22,545 Detta ligger i linje 20, är ​​denna linje 30, 40, med ingenting i mellan, 461 00:19:22,545 --> 00:19:25,170 vilket ger dig ett visst utrymme om du bestämmer dig, vänta en minut, 462 00:19:25,170 --> 00:19:27,230 Jag borde ha lagt några mer kod någonstans. 463 00:19:27,230 --> 00:19:30,960 Du hade fortfarande sorts nio chanser att pressa det mellan programmet 464 00:19:30,960 --> 00:19:33,020 innan du var tvungen att manuellt numrera allt. 465 00:19:33,020 --> 00:19:35,470 >> Så det här är typ av vad jag menar när jag säger att världen har kommit upp 466 00:19:35,470 --> 00:19:36,303 med nya funktioner. 467 00:19:36,303 --> 00:19:39,364 Någonstans på vägen någon insåg detta är pojke dum. 468 00:19:39,364 --> 00:19:41,280 Detta är bara att skapa arbeta för programmeraren. 469 00:19:41,280 --> 00:19:44,200 Så att han eller hon bara typ av inbyggda ett nytt lager ovanpå det 470 00:19:44,200 --> 00:19:46,910 så att du inte behöver oroa om vilken linje nummer koden 471 00:19:46,910 --> 00:19:48,570 är faktiskt på. 472 00:19:48,570 --> 00:19:54,940 >> Så när kan du välja ett eller annat språk? 473 00:19:54,940 --> 00:19:56,690 Jo, vilka av dessa språk gör du tenderar 474 00:19:56,690 --> 00:20:00,960 att höra om de mest din egen värld dessa dagar? 475 00:20:00,960 --> 00:20:02,680 Låt oss släppa ner Objective-C också. 476 00:20:02,680 --> 00:20:06,416 477 00:20:06,416 --> 00:20:07,739 >> PUBLIK: C #. 478 00:20:07,739 --> 00:20:08,530 DAVID J. MALAN: C #. 479 00:20:08,530 --> 00:20:10,310 Så låt mig färg. 480 00:20:10,310 --> 00:20:13,190 Har vi vår andra färg någonstans? 481 00:20:13,190 --> 00:20:14,550 Så C #. 482 00:20:14,550 --> 00:20:16,390 Och vad vet du om C #? 483 00:20:16,390 --> 00:20:18,940 Allt kommer att tänka? 484 00:20:18,940 --> 00:20:20,707 >> PUBLIK: Det är ett programmeringsspråk. 485 00:20:20,707 --> 00:20:22,540 DAVID J. MALAN: Det är en programmeringsspråk. 486 00:20:22,540 --> 00:20:23,200 OK. 487 00:20:23,200 --> 00:20:24,690 Det är sant. 488 00:20:24,690 --> 00:20:26,440 Så vi pratar om C #. 489 00:20:26,440 --> 00:20:29,230 C # tenderar att användas i Windows-miljöer, 490 00:20:29,230 --> 00:20:33,550 så om du skriver programvara från Microsoft för Windows, är C # mycket vanligt, 491 00:20:33,550 --> 00:20:38,560 oavsett om det är för datorprogramvara, eller även telefonens programvara på Windows-telefoner, 492 00:20:38,560 --> 00:20:41,820 om du har haft dem, eller på webben med alltför. 493 00:20:41,820 --> 00:20:44,642 Och i själva verket, kanske Kareem nämnda ASP tidigare? 494 00:20:44,642 --> 00:20:46,600 Så det finns också dessa saker som kallas ramar, 495 00:20:46,600 --> 00:20:51,040 som vi kan införa i förlängningen. 496 00:20:51,040 --> 00:20:53,280 Ramar, som ASP. 497 00:20:53,280 --> 00:20:55,740 Står för Active Server Pages. 498 00:20:55,740 --> 00:20:59,880 Och detta är kod och ett sätt att programmera 499 00:20:59,880 --> 00:21:03,490 som i allmänhet gör det lättare att skriva webbaserade applikationer. 500 00:21:03,490 --> 00:21:07,530 Med andra ord, skulle det vara super, super irriterande att skriva en webbplats 501 00:21:07,530 --> 00:21:09,469 i språket C, som vi har sett förut, 502 00:21:09,469 --> 00:21:12,510 eftersom du skulle behöva använda tryck + F, du skulle behöva använda sökordet 503 00:21:12,510 --> 00:21:13,940 "Main" och klammerparenteserna. 504 00:21:13,940 --> 00:21:16,720 En hel del svårbegripliga syntax och förhållningssätt för att genomföra 505 00:21:16,720 --> 00:21:19,195 något som är relativt komplicerad. 506 00:21:19,195 --> 00:21:20,240 En webbsida. 507 00:21:20,240 --> 00:21:23,800 >> Och så andra språk har utvecklats att göra denna typ av sak lättare. 508 00:21:23,800 --> 00:21:26,890 Och i sin tur, har folk kommit upp med ramar, typ av verktyg 509 00:21:26,890 --> 00:21:30,520 som du kan använda som gör det ännu enklare att skriva webbsidor. 510 00:21:30,520 --> 00:21:33,070 Så till exempel, för att göra så mycket mer konkret, 511 00:21:33,070 --> 00:21:36,390 Låt mig öppna upp bara en textfil för ett ögonblick. 512 00:21:36,390 --> 00:21:39,380 >> Och du kanske kommer ihåg igår att vi sagt något 513 00:21:39,380 --> 00:21:41,210 liknande, detta är en webbsida. 514 00:21:41,210 --> 00:21:42,300 HTML. 515 00:21:42,300 --> 00:21:45,340 Stäng HTML. 516 00:21:45,340 --> 00:21:48,500 Låt mig hoppa över huvudet och bara göra kroppen här. 517 00:21:48,500 --> 00:21:52,810 Antag att jag ville skriver inte "Hello World" 518 00:21:52,810 --> 00:21:57,020 men "Hej David", där David är namnet på den inloggade användaren. 519 00:21:57,020 --> 00:22:00,270 Vad något liknande ASP kommer att göra, eller JSP-- 520 00:22:00,270 --> 00:22:04,060 vilket är Java server pages-- eller ett antal andra ramverk 521 00:22:04,060 --> 00:22:05,435 är de inte språk i sig. 522 00:22:05,435 --> 00:22:07,351 De är precis som ytterligare programvara som du 523 00:22:07,351 --> 00:22:10,490 skulle installera i din miljö att bara göra det lättare att programmera. 524 00:22:10,490 --> 00:22:15,670 >> Så till exempel, snarare än att behöva göra något som "Hej, printf (" David ")" 525 00:22:15,670 --> 00:22:17,510 eller något som är typ av samarbete mingling-- 526 00:22:17,510 --> 00:22:20,840 den typ av kod vi har sett before-- du skulle göra något mycket enklare, 527 00:22:20,840 --> 00:22:26,190 som "name%." 528 00:22:26,190 --> 00:22:28,660 Och så dessa ramar, som ASP-- och jag 529 00:22:28,660 --> 00:22:31,212 minns inte om jag får syntax lagom för ASP. 530 00:22:31,212 --> 00:22:33,100 JSP är en little-- är detta rätt? 531 00:22:33,100 --> 00:22:36,500 >> Så med ASP, är detta typ av en speciell syntax 532 00:22:36,500 --> 00:22:39,830 att vissa utvecklare har beslutat detta kan hjälpa människor ut. 533 00:22:39,830 --> 00:22:43,000 Och jag kan uttrycka mer kortfattat platshållare, till exempel. 534 00:22:43,000 --> 00:22:47,187 Som sätter ett värde här, där detta värde namn är inte N-A-M-E, 535 00:22:47,187 --> 00:22:48,520 det är något värde lagrat där. 536 00:22:48,520 --> 00:22:50,728 Så "namn," i detta sammanhang, vi skulle kalla en variabel. 537 00:22:50,728 --> 00:22:52,760 Algebra har variabler som x, och y och z. 538 00:22:52,760 --> 00:22:56,021 Programmerare använder variabler som är mer beskrivande än x, y och z, 539 00:22:56,021 --> 00:22:56,520 typiskt. 540 00:22:56,520 --> 00:23:01,020 Så "namn" skulle bokstavligen vara något slags minne behållare för något liknande 541 00:23:01,020 --> 00:23:05,440 D-A-V-I-D, för mitt namn, eller vem annars är loggas in på webbplatsen. 542 00:23:05,440 --> 00:23:09,300 >> Och så detta är den typ av bekvämlighet du får med vissa miljöer. 543 00:23:09,300 --> 00:23:14,220 Så C # och något som ASP skulle mycket vanligen användas i en Windows-världen, 544 00:23:14,220 --> 00:23:16,460 oavsett om dess skrivbordet programvara eller webbserver, 545 00:23:16,460 --> 00:23:21,490 särskilt om dina servrar är i sin tur Microsoft Windows och Microsoft 546 00:23:21,490 --> 00:23:25,810 IIS-- eller Internet Information Server, om jag får förkortningen right-- 547 00:23:25,810 --> 00:23:27,800 som är Microsofts webbserver. 548 00:23:27,800 --> 00:23:30,820 >> Så vad andra språk är folk bekanta med, 549 00:23:30,820 --> 00:23:35,228 eller har du hört talas om oftare än sällan? 550 00:23:35,228 --> 00:23:38,262 >> PUBLIK: Jag vet att Pythons typ av en populär [OHÖRBART]. 551 00:23:38,262 --> 00:23:39,470 DAVID J. MALAN: Mycket populär. 552 00:23:39,470 --> 00:23:45,490 Så Python här används ofta i vetenskapliga program eller data 553 00:23:45,490 --> 00:23:48,330 vetenskap, där du har en hel del av data som du vill analysera 554 00:23:48,330 --> 00:23:50,413 och du vill använda en programmeringsspråk för den. 555 00:23:50,413 --> 00:23:53,640 R kan vanligtvis användas för att samt, i en statistisk sammanhang. 556 00:23:53,640 --> 00:23:56,400 Men Python har så många funktioner inbyggda. 557 00:23:56,400 --> 00:23:58,850 Så många extra bibliotek, som folk säger. 558 00:23:58,850 --> 00:24:01,260 >> Bibliotek är bara samlingar kod som andra människor 559 00:24:01,260 --> 00:24:04,218 skrev att du kan använda så att du behöver inte uppfinna dessa hjul. 560 00:24:04,218 --> 00:24:07,430 Och så Python är mycket vanligt används inom datavetenskapliga program. 561 00:24:07,430 --> 00:24:09,930 Men det är också mycket vanligt används i webbapplikationer. 562 00:24:09,930 --> 00:24:12,780 Du kan genomföra en dynamisk webbplats med hjälp av Python. 563 00:24:12,780 --> 00:24:15,210 >> Och genom dynamisk webbplats, jag innebär inte bara statiskt innehåll 564 00:24:15,210 --> 00:24:19,530 som vi skapade i går, genom bara hårt kodning i den latinska texten 565 00:24:19,530 --> 00:24:21,820 och andra sådana saker, utan snarare förmågan 566 00:24:21,820 --> 00:24:25,367 att logga in, förmågan att köpa något, förmågan att checka ut 567 00:24:25,367 --> 00:24:26,950 med dina shoppingvagnar eller liknande. 568 00:24:26,950 --> 00:24:30,590 Allt detta kräver dynamik och du behöver något språk som en av dem. 569 00:24:30,590 --> 00:24:35,060 >> PUBLIK: Så gör Python har sin egen utvidgning, liknande gillar [OHÖRBART] 570 00:24:35,060 --> 00:24:36,060 DAVID J. MALAN: Det gör det. 571 00:24:36,060 --> 00:24:42,250 Så i en värld av Python, är Django en mycket populär ram för Python. 572 00:24:42,250 --> 00:24:46,520 WSGI är en annan mekanism som är sorts skiljer sig från detta 573 00:24:46,520 --> 00:24:47,640 men i samma anda. 574 00:24:47,640 --> 00:24:52,200 Det är ett tillägg som gör att du att köra Python-kod på en server. 575 00:24:52,200 --> 00:24:53,950 Det finns other-- ja. 576 00:24:53,950 --> 00:24:57,250 Så dessa vi kallar ramar. 577 00:24:57,250 --> 00:24:58,870 Och det är lite av ett missbruk. 578 00:24:58,870 --> 00:25:00,920 Detta är mer av en webbserver teknik. 579 00:25:00,920 --> 00:25:04,610 Men vi kommer att hålla det enkelt och sätta det i denna kolumn ändå. 580 00:25:04,610 --> 00:25:05,780 >> OK. 581 00:25:05,780 --> 00:25:07,850 WSGI. 582 00:25:07,850 --> 00:25:09,020 WSGI. 583 00:25:09,020 --> 00:25:12,100 En annan thing-- och faktiskt, låt mig flytta den till sin egen kolumn, 584 00:25:12,100 --> 00:25:17,000 eftersom jag skulle skrika på mig själv för sätta dem i samma hink. 585 00:25:17,000 --> 00:25:24,910 Låt oss sätta detta i servern funktioner, låt oss säga. 586 00:25:24,910 --> 00:25:26,710 Det är inte en teknisk term. 587 00:25:26,710 --> 00:25:29,180 >> Så här kan vi vara WSGI. 588 00:25:29,180 --> 00:25:32,580 Det finns CGI, som är en äldre teknik för att betjäna upp språk 589 00:25:32,580 --> 00:25:35,890 som Perl eller PHP, eller några andra. 590 00:25:35,890 --> 00:25:39,000 Återigen, jag har nämnt dessa villkor inte så mycket att sorts ingrain dem, 591 00:25:39,000 --> 00:25:40,749 men så att om du ser dem är det något 592 00:25:40,749 --> 00:25:42,130 du helt enkelt google för att läsa mer. 593 00:25:42,130 --> 00:25:46,110 Det finns ingen riktig juice till några av dessa saker. 594 00:25:46,110 --> 00:25:47,850 >> Men låt oss gå tillbaka till språk. 595 00:25:47,850 --> 00:25:50,499 Vi pratade om C #, Python. 596 00:25:50,499 --> 00:25:52,790 Vad kan du använda för webbprogrammering dessa dagar? 597 00:25:52,790 --> 00:25:54,302 Låt oss fokusera på det fortfarande. 598 00:25:54,302 --> 00:25:55,247 >> PUBLIK: PHP. 599 00:25:55,247 --> 00:25:56,080 DAVID J. MALAN: PHP. 600 00:25:56,080 --> 00:25:57,413 Och låt oss återkomma till den. 601 00:25:57,413 --> 00:25:59,310 Så PHP är mycket vanligt förekommande. 602 00:25:59,310 --> 00:26:01,560 PHP tenderar att få en dålig rap. 603 00:26:01,560 --> 00:26:05,790 Det började som ett språk genomförts av folk som kanske inte nödvändigtvis 604 00:26:05,790 --> 00:26:06,960 de bästa formgivarna språk. 605 00:26:06,960 --> 00:26:11,290 Och så du kan läsa alla sorters artiklar online om hur illa PHP är. 606 00:26:11,290 --> 00:26:13,660 Och tyvärr är detta en manifestation, delvis 607 00:26:13,660 --> 00:26:18,727 av bara religiösa debatter att få ett utbrott bland programmerare. 608 00:26:18,727 --> 00:26:20,560 Och detta är något värt att hålla i minnet, 609 00:26:20,560 --> 00:26:24,410 ur ett affärsperspektiv, att det är väldigt lätt för tekniska personer 610 00:26:24,410 --> 00:26:26,900 att få alla arbetat med deras synpunkter på vissa saker. 611 00:26:26,900 --> 00:26:29,566 Och det betyder inte nödvändigtvis att en skriker de starkaste 612 00:26:29,566 --> 00:26:31,870 eller med den starkaste, argaste åsikt är rätt. 613 00:26:31,870 --> 00:26:34,100 Många gånger är det verkligen bara spelar ingen roll. 614 00:26:34,100 --> 00:26:37,970 >> Och så att folk bara argumentera vad sina egna fördomar eller komfortzoner. 615 00:26:37,970 --> 00:26:40,760 Och så du bör hålla detta i åtanke när du gör 616 00:26:40,760 --> 00:26:42,622 ett beslut, som bara eftersom någon säger 617 00:26:42,622 --> 00:26:45,080 detta är rätt språk för jobbet, kan det vara sant, 618 00:26:45,080 --> 00:26:48,350 men det är också bara kan vara att det är rätt språk inom sin egen skicklighet 619 00:26:48,350 --> 00:26:49,267 ställa in eller komfortzon. 620 00:26:49,267 --> 00:26:52,600 Vilket inte är dåligt, men du bör inse att det kan finnas något sammanhang där. 621 00:26:52,600 --> 00:26:54,440 Det finns några sakliga felaktiga påståenden, 622 00:26:54,440 --> 00:26:59,080 som C är fel språk att använda dessa dagar för att genomföra webbplatser 623 00:26:59,080 --> 00:27:00,520 nästan alltid. 624 00:27:00,520 --> 00:27:03,370 Men det är inte orimligt att säga att något av dessa 625 00:27:03,370 --> 00:27:05,700 är fel att vi har inringad hittills. 626 00:27:05,700 --> 00:27:08,180 >> PHP har gått igenom många versioner. 627 00:27:08,180 --> 00:27:11,310 Så språk tenderar att ha version tal i samband med dem. 628 00:27:11,310 --> 00:27:15,390 PHP är upp till, tror jag, version 7 nu, så det har funnits ganska länge. 629 00:27:15,390 --> 00:27:18,270 Och som språk få nyare, de ofta få nya funktioner. 630 00:27:18,270 --> 00:27:22,510 Men du måste vara medveten om detta för om din webbplats har varit 631 00:27:22,510 --> 00:27:27,539 genomföras i version 7 av PHP men du försöker köra din webbplats, 632 00:27:27,539 --> 00:27:29,830 eller kanske du har lagt ut utvecklingen av koden 633 00:27:29,830 --> 00:27:31,960 till någon annan och de post det till dig eller skicka den till dig 634 00:27:31,960 --> 00:27:33,960 och de säger, här, sätta detta på din webbserver, 635 00:27:33,960 --> 00:27:36,610 Om din webbserver är några år outdated-- om det är 636 00:27:36,610 --> 00:27:39,465 din egen server eller ett webb host-- det kanske faktiskt inte köra. 637 00:27:39,465 --> 00:27:41,340 Så det är dessa typer saker som någon 638 00:27:41,340 --> 00:27:44,067 måste vara uppmärksam på vid uppgradering en webbplats 639 00:27:44,067 --> 00:27:45,650 eller genomföra den för första gången. 640 00:27:45,650 --> 00:27:46,900 >> Jag hörde JavaScript tidigare. 641 00:27:46,900 --> 00:27:50,570 Så JavaScript är en intressant ett i det att den är i allmänhet 642 00:27:50,570 --> 00:27:53,030 klientsidan, som vi ser efter pausen, som 643 00:27:53,030 --> 00:27:55,000 innebär att det körs i användarens webbläsare. 644 00:27:55,000 --> 00:27:58,400 Men du kan också köra JavaScript dessa dagar 645 00:27:58,400 --> 00:28:03,450 med hjälp av något som kallas Node.js, där Node.js 646 00:28:03,450 --> 00:28:08,000 är en mekanism för att köra JavaScript-kod serversidan, 647 00:28:08,000 --> 00:28:12,430 istället för att använda Python, eller PHP eller andra sådana språk. 648 00:28:12,430 --> 00:28:17,820 >> JavaScript är särskilt väl lämpad för chattprogram och realtid 649 00:28:17,820 --> 00:28:22,050 applikationer, medan PHP är inte bra språk för att genomföra något 650 00:28:22,050 --> 00:28:25,050 som en chattserver, där användarna hålla kontakten med den hela tiden. 651 00:28:25,050 --> 00:28:28,760 PHP är mer av ett besök mig en gång, får tillbaka ett resultat, 652 00:28:28,760 --> 00:28:31,790 och sedan klicka på en annan länk några sekunder eller minuter från nu. 653 00:28:31,790 --> 00:28:36,020 Medan Node.js och JavaScript kan vara används mer för beständiga anslutningar. 654 00:28:36,020 --> 00:28:40,840 Andra språk som du misstänker används ofta för webb saker? 655 00:28:40,840 --> 00:28:42,800 >> PUBLIK: Skulle jQuery vara en ram? 656 00:28:42,800 --> 00:28:44,050 >> DAVID J. MALAN: Bra fråga. 657 00:28:44,050 --> 00:28:44,700 Varken. 658 00:28:44,700 --> 00:28:51,210 Jag skulle vilja kalla jQuery bibliotek, där återigen ett bibliotek är bara en massa kod 659 00:28:51,210 --> 00:28:53,250 att någon annan har skrivit att i allmänhet 660 00:28:53,250 --> 00:28:56,390 löser en del problem som gör det förhoppningsvis lättare 661 00:28:56,390 --> 00:28:57,760 för dig att göra ditt jobb. 662 00:28:57,760 --> 00:29:00,820 Och låt mig göra ett exempel på detta i samband med banan. 663 00:29:00,820 --> 00:29:03,910 >> Inom ramen av banan finns det detta språk, JavaScript, 664 00:29:03,910 --> 00:29:06,690 att vi kommer att se senare, varigenom man kan säga något i stil med this-- 665 00:29:06,690 --> 00:29:10,060 "Document.getElementById." 666 00:29:10,060 --> 00:29:11,490 Och vad jag kallar det igår? 667 00:29:11,490 --> 00:29:16,800 Först tror jag, var det unika ID jag gav ett element som såg ut så här. 668 00:29:16,800 --> 00:29:23,110 "P id =" första ">" och sedan hade vi liknande "lorem ipsum", et cetera. 669 00:29:23,110 --> 00:29:28,210 Så om jag skriver ett program i JavaScript för att på något sätt manipulera, 670 00:29:28,210 --> 00:29:30,830 ändra webbsidor som vi lekte med igår, 671 00:29:30,830 --> 00:29:33,010 Jag skulle använda detta markerade kodrad 672 00:29:33,010 --> 00:29:38,700 att få den speciella utdrag av HTML från min sida, den särskilda nod, 673 00:29:38,700 --> 00:29:39,680 som vi kallar det. 674 00:29:39,680 --> 00:29:44,540 >> Men i jQuery, istället för att skriva detta, vilket är rå JavaScript code-- 675 00:29:44,540 --> 00:29:48,870 bara ur lådan, det är hur man skriva det-- du skulle i stället bara säga, 676 00:29:48,870 --> 00:29:50,260 "#först." 677 00:29:50,260 --> 00:29:52,330 Det är likvärdiga. 678 00:29:52,330 --> 00:29:56,040 Och så bara grundar sig på detta mycket svårbegripliga exempel, vad kanske 679 00:29:56,040 --> 00:29:57,870 är argumentet för att använda jQuery? 680 00:29:57,870 --> 00:30:01,390 681 00:30:01,390 --> 00:30:05,111 Varför skulle en utvecklare använda ett bibliotek som jQuery, baserat på denna isolerade exempel 682 00:30:05,111 --> 00:30:05,610 kanske? 683 00:30:05,610 --> 00:30:06,335 >> PUBLIK: Mindre kod. 684 00:30:06,335 --> 00:30:06,780 >> DAVID J. MALAN: Ja. 685 00:30:06,780 --> 00:30:07,530 Det är mindre kod. 686 00:30:07,530 --> 00:30:09,070 Det är bara snabbare att skriva. 687 00:30:09,070 --> 00:30:11,690 Den counter är att det ser mer skrämmande. 688 00:30:11,690 --> 00:30:13,540 Du kan inte riktigt läsa det från vänster till höger. 689 00:30:13,540 --> 00:30:16,730 I själva verket, eftersom det är mest skiljetecken nu i stället för faktiska ord, 690 00:30:16,730 --> 00:30:20,950 Jag kan typ av dra slutsatsen att "Document.getElementById" får 691 00:30:20,950 --> 00:30:23,640 ett element från dokumentet genom dess ID. 692 00:30:23,640 --> 00:30:26,750 Jag kan verkligen använda något sådant mnemonics från denna sak här. 693 00:30:26,750 --> 00:30:27,680 >> Så det är en avvägning. 694 00:30:27,680 --> 00:30:30,763 Det finns en finess som kommer ofta med hjälp av biblioteken, särskilt 695 00:30:30,763 --> 00:30:31,440 som jQuery. 696 00:30:31,440 --> 00:30:34,700 Men verkligheten är jQuery har snäll av att bli en de facto-standard, 697 00:30:34,700 --> 00:30:38,110 så att nästan alla dessa dagar som skriver JavaScript-kod 698 00:30:38,110 --> 00:30:41,520 använder jQuery eller något gillar det, och inte längre skriver 699 00:30:41,520 --> 00:30:45,200 sådan mångordiga uttryck som detta, eftersom igen, mänskligheten 700 00:30:45,200 --> 00:30:47,850 har lärt sig, wow, det var typ av en missad möjlighet 701 00:30:47,850 --> 00:30:49,030 att göra våra liv enklare. 702 00:30:49,030 --> 00:30:51,140 Så människor göra deras liv enklare. 703 00:30:51,140 --> 00:30:53,310 Bra fråga. 704 00:30:53,310 --> 00:30:55,870 >> Andra språk att överväga. 705 00:30:55,870 --> 00:30:58,660 Jag skulle vilja säga bland denna Listan Ruby är ganska populär. 706 00:30:58,660 --> 00:31:01,310 Och så i världen av Ruby, det finns en ram 707 00:31:01,310 --> 00:31:03,590 kallas Rails, som är mycket populär. 708 00:31:03,590 --> 00:31:06,880 Så Ruby on Rails är en vanligen används uttryck. 709 00:31:06,880 --> 00:31:10,330 Även i denna värld, låt mig cirkel Java för webben saker, 710 00:31:10,330 --> 00:31:14,160 där i världen av Java du kanske har JSP eller Java 711 00:31:14,160 --> 00:31:18,450 Servlets, vilket är en vanlig teknik. 712 00:31:18,450 --> 00:31:22,560 Och detta är bara igen sätt att använda att språket i en servermiljö. 713 00:31:22,560 --> 00:31:23,520 >> Så vad betyder det? 714 00:31:23,520 --> 00:31:25,770 Om du har en fysisk server, skulle du bokstavligen 715 00:31:25,770 --> 00:31:30,510 ladda webbserverprogrammet och installera den på ett sådant sätt 716 00:31:30,510 --> 00:31:33,510 att du har stöd för en av dessa ramar, som du 717 00:31:33,510 --> 00:31:37,260 kan i sin tur med en eller flera av dessa språk. 718 00:31:37,260 --> 00:31:40,260 Och i verkligheten, om du registrerar dig för som ett webbhotell eller en del av molnet 719 00:31:40,260 --> 00:31:41,968 tjänster som vi talat om igår, ofta 720 00:31:41,968 --> 00:31:44,885 saker bara kommer med maskinens konfiguration för dig. 721 00:31:44,885 --> 00:31:46,510 Du behöver inte ställa in det manuellt. 722 00:31:46,510 --> 00:31:51,040 Men om du gjorde, det är där rollen av systemadministratören, så att säga, 723 00:31:51,040 --> 00:31:51,860 kommer in i bilden. 724 00:31:51,860 --> 00:31:54,151 Han eller hon faktiskt skulle göra denna typ av saker för dig, 725 00:31:54,151 --> 00:31:58,510 eller den så kallade webmaster skulle ofta göra det åt dig. 726 00:31:58,510 --> 00:31:59,010 Okej. 727 00:31:59,010 --> 00:32:03,300 Eventuella frågor om några av dessa här? 728 00:32:03,300 --> 00:32:06,690 Eller möjligheter på alla för att fråga om språk? 729 00:32:06,690 --> 00:32:09,500 Ramar? 730 00:32:09,500 --> 00:32:11,530 Låt mig presentera bara ett annat bibliotek 731 00:32:11,530 --> 00:32:13,150 det är också mycket vanligt i dessa dagar. 732 00:32:13,150 --> 00:32:15,340 Denna lista skulle kunna fortsätta oändligt. 733 00:32:15,340 --> 00:32:19,140 >> Och detta bibliotek är typ av börjar falla i onåd. 734 00:32:19,140 --> 00:32:19,850 Det har funnits. 735 00:32:19,850 --> 00:32:22,040 Den populariserades av Twitter under en tid. 736 00:32:22,040 --> 00:32:24,470 Och nu massor av webbplatser, massor av utvecklare använder den. 737 00:32:24,470 --> 00:32:26,629 Men nya saker kommer ut och kommer tillsammans. 738 00:32:26,629 --> 00:32:29,420 Men låt mig bara ge dig en känsla av vad det innebär att använda ett bibliotek. 739 00:32:29,420 --> 00:32:32,250 Så återigen, är JavaScript en mycket populär språk. 740 00:32:32,250 --> 00:32:35,340 CSS, eller Cascading Style Sheets, Vi pratade om igår. 741 00:32:35,340 --> 00:32:36,600 Det är också allestädes närvarande. 742 00:32:36,600 --> 00:32:40,130 Ingen gör en webbsida idag utan att använda HTML och CSS minimalt. 743 00:32:40,130 --> 00:32:42,510 Men det är inte alltid lätt att göra vissa saker. 744 00:32:42,510 --> 00:32:46,281 >> Och så låt mig gå till getbootstrap.com. 745 00:32:46,281 --> 00:32:46,780 Hoppsan. 746 00:32:46,780 --> 00:32:48,280 Det är inte hur vi stava. 747 00:32:48,280 --> 00:32:52,410 Getbootstrap.com, vilket kommer att leda mig 748 00:32:52,410 --> 00:32:56,140 till målsidan för detta bibliotek. 749 00:32:56,140 --> 00:32:59,720 Så de generöst ringa sig en ram, som 750 00:32:59,720 --> 00:33:02,032 är typ av typ av rättvisa, men jag skulle fortfarande kalla det 751 00:33:02,032 --> 00:33:03,490 mer av ett bibliotek än en ram. 752 00:33:03,490 --> 00:33:05,760 Men dessa är bara diskutabel semantik. 753 00:33:05,760 --> 00:33:12,360 Låt mig gå till deras CSS flik och Låt mig gå till ungefär så här. 754 00:33:12,360 --> 00:33:15,450 >> Så minns vad våra former såg som går på Cloud9? 755 00:33:15,450 --> 00:33:16,370 Det var ganska fult. 756 00:33:16,370 --> 00:33:17,320 Old school knappar. 757 00:33:17,320 --> 00:33:20,420 Jag tror att knappen var grå av standard. Och allt var verkligen 758 00:33:20,420 --> 00:33:22,420 formaterad ganska messily. 759 00:33:22,420 --> 00:33:26,940 Så om du vill att dina webbformulär för att se lite nicer-- låt mig in här. 760 00:33:26,940 --> 00:33:30,050 >> Och trevligare jag egentligen bara betyda mycket nitpicky estetik. 761 00:33:30,050 --> 00:33:35,390 Så märker hur e-rutan måste det en rundad rektangulär hörn till det. 762 00:33:35,390 --> 00:33:37,010 Så det är lite renare där. 763 00:33:37,010 --> 00:33:40,770 Lägg märke till att ordet e-post är där tills jag börjar skriva 764 00:33:40,770 --> 00:33:41,797 och sedan försvinner. 765 00:33:41,797 --> 00:33:43,130 Så det är en trevlig liten funktion. 766 00:33:43,130 --> 00:33:46,046 Lägg märke till hur saken är typ av glödande fint, som en del av detta kan du 767 00:33:46,046 --> 00:33:49,069 få gratis från din webbläsare, men en del av detta är också bibliotek, 768 00:33:49,069 --> 00:33:51,360 kod som andra människor har skrivit att ge dig detta. 769 00:33:51,360 --> 00:33:53,480 >> Något som det här ger mig mitt lösenord. 770 00:33:53,480 --> 00:33:58,480 Den här knappen är lite sexigare än standard. Mycket i ropet just nu. 771 00:33:58,480 --> 00:34:03,570 Ända sedan iOS 7 eller så, Världen har blivit mycket platt, 772 00:34:03,570 --> 00:34:09,000 medan världen tidigare haft massor av skuggor, massor 773 00:34:09,000 --> 00:34:11,040 reflektioner på ikoner. 774 00:34:11,040 --> 00:34:14,170 Ungefär som i kläder världen, Det finns modetrender som kommer och går. 775 00:34:14,170 --> 00:34:16,190 Nu är allt är platt på din telefon. 776 00:34:16,190 --> 00:34:19,159 >> I själva verket, knapparna på din iPhone är nu bara blå länkar. 777 00:34:19,159 --> 00:34:21,000 Det är inte ofta ens cirkulära knappar. 778 00:34:21,000 --> 00:34:22,791 Så det är bara saker att gå in och ut 779 00:34:22,791 --> 00:34:26,659 av modet, och så detta är hur du kan göra en mer modern ser webbformulär. 780 00:34:26,659 --> 00:34:27,159 Knappar. 781 00:34:27,159 --> 00:34:29,190 Så Bootstrap har massor av vackra knappar. 782 00:34:29,190 --> 00:34:33,639 Så om du vill blå knappar, gröna knappar, blått, orange, röd. 783 00:34:33,639 --> 00:34:35,840 Bootstrap gör det lättare att göra dessa saker. 784 00:34:35,840 --> 00:34:38,131 Det är den typen av saker att du kan absolut 785 00:34:38,131 --> 00:34:41,840 har gjort igår med CSS och med HTML, men det är bara en smärta i nacken. 786 00:34:41,840 --> 00:34:44,840 Och så i stället, vad Bootstrap skulle har du gör är något sådant. 787 00:34:44,840 --> 00:34:48,960 >> Om du vill ha en button-- visar sig detta är en HTML-tagg som vi inte använder yesterday-- 788 00:34:48,960 --> 00:34:53,070 och du vill att det ska se ut så här gröna knappen 789 00:34:53,070 --> 00:34:57,380 du bokstavligen bara ge det en klass, som vi talade om i går, 790 00:34:57,380 --> 00:34:59,710 av "btn btn-framgång." 791 00:34:59,710 --> 00:35:00,971 >> Varför dessa ord? 792 00:35:00,971 --> 00:35:03,470 Twitter, författarna till Bootstrap, kom upp med dessa ord. 793 00:35:03,470 --> 00:35:05,428 De kunde ha ringt dem vad de vill. 794 00:35:05,428 --> 00:35:08,480 Men vad du får nu är någon annan på Twitter, i det här fallet, 795 00:35:08,480 --> 00:35:12,360 har räknat ut hur gör man en knappen ser trevligt och ren och grön. 796 00:35:12,360 --> 00:35:15,580 De förpackade upp denna funktion i en CSS-klass, som kallas "BTN" 797 00:35:15,580 --> 00:35:19,790 och "btn-framgång", så att någon av oss kan nu använda det utan att ens tänka på 798 00:35:19,790 --> 00:35:20,290 Det. 799 00:35:20,290 --> 00:35:22,880 Så de har abstraherat bort begreppet en grön knapp 800 00:35:22,880 --> 00:35:25,320 så att vi inte behöver bry sig om genomföra det själva. 801 00:35:25,320 --> 00:35:28,520 Vi kan faktiskt fokusera på att genomföra saker av intresse för oss. 802 00:35:28,520 --> 00:35:30,902 >> Om vi ​​rulla ned här. 803 00:35:30,902 --> 00:35:32,110 Felmeddelanden på skärmen. 804 00:35:32,110 --> 00:35:35,440 Ibland du vill ha lite meddelande att visas på toppen av webbläsaren. 805 00:35:35,440 --> 00:35:39,729 Någon av oss kan göra detta med några ansträngning, efter gårdagens lektion, 806 00:35:39,729 --> 00:35:40,770 men varför skulle du bry? 807 00:35:40,770 --> 00:35:42,540 Det är en sådan ointressant estetisk detalj. 808 00:35:42,540 --> 00:35:44,248 Låt oss stå på axlarna av Bootstrap 809 00:35:44,248 --> 00:35:49,440 och låt dem ge oss saker som detta, där vi bokstavligen, att få en röd ruta, 810 00:35:49,440 --> 00:35:53,220 bara att göra ett stycke tagg med en klass of-- ledsen. 811 00:35:53,220 --> 00:35:57,307 "BG-fara" skulle ge oss denna rödaktiga rutan istället. 812 00:35:57,307 --> 00:35:59,140 Nu går vi till mer intressanta saker. 813 00:35:59,140 --> 00:36:02,950 Om jag går tillbaka till toppen av denna sida och gå till komponenter, 814 00:36:02,950 --> 00:36:05,380 nu världens blir mer intressant. 815 00:36:05,380 --> 00:36:08,826 Till exempel, mycket vanligt är rullgardinsmenyer som denna. 816 00:36:08,826 --> 00:36:11,560 Detta skulle vara en absolut smärta att genomföra. 817 00:36:11,560 --> 00:36:13,610 Och det var inte så länge sedan att vi programmerare 818 00:36:13,610 --> 00:36:16,490 skulle behöva genomföra dessa typer av menyer från scratch. 819 00:36:16,490 --> 00:36:20,800 >> Men det är en sådan gemensam paradigm att bibliotek som Bootstrap 820 00:36:20,800 --> 00:36:25,230 bara ge dig möjlighet att göra en rullgardinsmenyn långt, långt lättare. 821 00:36:25,230 --> 00:36:27,850 Det finns ingen väg att göra det, men om jag läser dokumentationen 822 00:36:27,850 --> 00:36:32,100 Jag skulle se det, OK, ska jag använda denna HTML om jag vill ha en rullgardinsmeny 823 00:36:32,100 --> 00:36:34,030 som beter sig så. 824 00:36:34,030 --> 00:36:36,690 >> På samma sätt, låt oss gå till knappen falla ner. 825 00:36:36,690 --> 00:36:38,470 Så det här är ännu snyggare. 826 00:36:38,470 --> 00:36:41,800 Om jag vill att detta skall se ut som en knapp men det lilla triangel betyder 827 00:36:41,800 --> 00:36:44,080 Jag ska klicka på det och få denna meny, här 828 00:36:44,080 --> 00:36:45,760 är att använda ett språk som kallas JavaScript. 829 00:36:45,760 --> 00:36:47,470 Och vi kan alla genomföra detta i JavaScript. 830 00:36:47,470 --> 00:36:49,720 Men återigen, är detta ett hjul du inte vill att uppfinna. 831 00:36:49,720 --> 00:36:52,700 Du vill bara ta bort det hyllan bibliotek för detta. 832 00:36:52,700 --> 00:36:58,145 >> Låt oss gå till något som förlopps. 833 00:36:58,145 --> 00:36:59,770 Så något som detta är ganska häftigt. 834 00:36:59,770 --> 00:37:02,910 Om du någonsin sett en utveckling bar rör sig över skärmen, 835 00:37:02,910 --> 00:37:06,380 genomförande som ofta är bara en snurrande ikon. 836 00:37:06,380 --> 00:37:10,200 I själva verket, precis som en sidoreplik, låt mig gå till Ajax-- vad är det? 837 00:37:10,200 --> 00:37:10,710 Ajax information? 838 00:37:10,710 --> 00:37:11,720 Hoppsan. 839 00:37:11,720 --> 00:37:13,035 Ajaxinfo. 840 00:37:13,035 --> 00:37:14,800 Låt mig komma ihåg adressen. 841 00:37:14,800 --> 00:37:15,820 Det går vi. 842 00:37:15,820 --> 00:37:19,850 >> Så om du någonsin har sett några animation medan sidan laddas, eller tänker, 843 00:37:19,850 --> 00:37:25,410 eller spara, eller skapa något, du kan se sådana animationer som dessa. 844 00:37:25,410 --> 00:37:28,800 Så låt oss titta på något som den här här, 845 00:37:28,800 --> 00:37:33,550 och låt oss välja en förgrundsfärg av grön, vilket känns lite vänligt. 846 00:37:33,550 --> 00:37:34,545 Kan jag klickar på? 847 00:37:34,545 --> 00:37:35,500 Kom en. 848 00:37:35,500 --> 00:37:36,000 OK. 849 00:37:36,000 --> 00:37:38,930 Vi ska bara gå med rött eftersom det är vad vi får. 850 00:37:38,930 --> 00:37:40,250 Så här har vi det. 851 00:37:40,250 --> 00:37:43,940 >> Så om du någonsin sett detta på en skärm, varvid plötsligt dyker upp och sedan 852 00:37:43,940 --> 00:37:47,550 plötsligt försvinner, vad är det som är att genomföra det? 853 00:37:47,550 --> 00:37:48,970 Tja, detta är bara en GIF. 854 00:37:48,970 --> 00:37:52,850 G-I-F. Och detta är en animerad fil, vilket betyder bara 855 00:37:52,850 --> 00:37:54,327 det är som en gammal skola serietidning. 856 00:37:54,327 --> 00:37:57,160 Det är bara en massa olika ramar som går [stamning] 857 00:37:57,160 --> 00:37:58,085 och bara upprepa. 858 00:37:58,085 --> 00:38:00,090 Och det är att skapa illusion av rörelse. 859 00:38:00,090 --> 00:38:03,070 >> Så snart som en sida är gjort lastning eller göra något, 860 00:38:03,070 --> 00:38:04,610 vad gör en programmerare göra? 861 00:38:04,610 --> 00:38:07,500 Jo, han eller hon bara döljer den här bilden. 862 00:38:07,500 --> 00:38:11,536 Så alla en förloppsindikator är är typ av som en film du tittar på. 863 00:38:11,536 --> 00:38:14,660 Du slags omedveten om det faktum att det faktiskt inte gör något, 864 00:38:14,660 --> 00:38:15,940 det är bara flytta. 865 00:38:15,940 --> 00:38:19,150 >> Och sedan, när det är gjort framsteg, de bara gömma den eller stänga av den. 866 00:38:19,150 --> 00:38:21,115 Och det är allt det magiska som pågår där. 867 00:38:21,115 --> 00:38:22,770 Bootstrap ger dig något lite snyggare, 868 00:38:22,770 --> 00:38:25,030 där du kan faktiskt se en procentsats som det går, 869 00:38:25,030 --> 00:38:27,840 men det är också bara sorts av en enkel animation. 870 00:38:27,840 --> 00:38:32,250 >> Låt oss titta på några slutliga mer komplexa exempel här. 871 00:38:32,250 --> 00:38:35,526 Något som en modal. 872 00:38:35,526 --> 00:38:36,900 Vet någon vad en modal är? 873 00:38:36,900 --> 00:38:39,880 874 00:38:39,880 --> 00:38:42,550 En modal fönster är i allmänhet en som är tänkt 875 00:38:42,550 --> 00:38:46,880 att ta kontroll över förgrunden och hindra dig från att göra något annat. 876 00:38:46,880 --> 00:38:50,290 Det tvingar slags användarens uppmärksamhet på mitten av skärmen, 877 00:38:50,290 --> 00:38:52,290 låsa ut dem, typiskt, allt annat. 878 00:38:52,290 --> 00:38:55,830 >> Så om jag startar denna demonstration, Skärmen kommer i allmänhet att bli grå. 879 00:38:55,830 --> 00:38:57,060 Nå, hur gör vi det grå? 880 00:38:57,060 --> 00:38:59,080 Tja, vi förmodligen bara ändrade bakgrundsfärgen 881 00:38:59,080 --> 00:39:01,060 som vi gjorde igår eller något sådant. 882 00:39:01,060 --> 00:39:03,490 Kanske är det ett över att halvtransparent. 883 00:39:03,490 --> 00:39:06,320 Och nu märker att du kan göra tjusiga saker som detta. 884 00:39:06,320 --> 00:39:09,930 Så om du någonsin klicka på en knapp och vill ha lite pop ut att visas, 885 00:39:09,930 --> 00:39:10,710 det kan du göra. 886 00:39:10,710 --> 00:39:12,340 Och så vem bryr sig om all-- ja? 887 00:39:12,340 --> 00:39:15,791 >> PUBLIK: Så med Bootstrap, att få det införlivade, 888 00:39:15,791 --> 00:39:21,002 är det så enkelt som som igår vi gjorde sida CSS-format? 889 00:39:21,002 --> 00:39:21,960 DAVID J. MALAN: Faktiskt. 890 00:39:21,960 --> 00:39:22,835 Riktigt bra fråga. 891 00:39:22,835 --> 00:39:24,480 Låt mig gå till Komma igång. 892 00:39:24,480 --> 00:39:26,090 Och ja. 893 00:39:26,090 --> 00:39:30,920 Allt du behöver göra för att Användningen Bootstrap är väsentligen kopiera 894 00:39:30,920 --> 00:39:35,910 och klistra in dessa tre långa rader av kod i toppen av din egen web page-- 895 00:39:35,910 --> 00:39:38,892 huvudet på din page-- och du är igång. 896 00:39:38,892 --> 00:39:41,850 Och det finns olika sätt att göra det skulle men detta vara det enklaste. 897 00:39:41,850 --> 00:39:45,190 >> Vad är bra om allt detta? 898 00:39:45,190 --> 00:39:47,524 Tja, om du inte så mycket genomförare av en webbplats 899 00:39:47,524 --> 00:39:50,106 men du försöker att utforma den, eller om du vill ge någon 900 00:39:50,106 --> 00:39:53,220 med tråd ram diagram, så att säga, eller bara konstnärens återgivningar av vad 901 00:39:53,220 --> 00:39:56,080 du vill göra, jag, att detta dag, ofta kommer att gå till en webbplats 902 00:39:56,080 --> 00:39:58,660 som Bootstrap, där om jag vill genomföra something-- 903 00:39:58,660 --> 00:40:02,290 som nyligen på campus vi ville genomföra 904 00:40:02,290 --> 00:40:06,170 ett webbaserat verktyg för att navigera Harvards kurskatalog, 905 00:40:06,170 --> 00:40:08,770 vilket gör det lättare för studenter att bläddra genom kurser 906 00:40:08,770 --> 00:40:10,930 och lägga till kurser till inköpslista, så att säga, 907 00:40:10,930 --> 00:40:13,070 att typ av avgöra vad de ville ta. 908 00:40:13,070 --> 00:40:16,252 >> Jag försökte föreställa själv, vilka ingredienser skulle 909 00:40:16,252 --> 00:40:17,460 vi vill använda för att bygga detta? 910 00:40:17,460 --> 00:40:19,050 Vad skulle användargränssnittet bli? 911 00:40:19,050 --> 00:40:22,800 Och bara tittar genom en webbplats som detta eller andra sådana biblioteks platser, 912 00:40:22,800 --> 00:40:26,560 du kan få inspiration, eftersom wow, Jag kan använda denna widget, och denna widget, 913 00:40:26,560 --> 00:40:27,330 och denna widget. 914 00:40:27,330 --> 00:40:29,080 Och sedan verkligen vad programmeraren startar 915 00:40:29,080 --> 00:40:32,800 att göra, särskilt i dessa dagar i detta modernare värld av webbprogrammering, 916 00:40:32,800 --> 00:40:35,827 är programmering blir allt om ledningar saker tillsammans. 917 00:40:35,827 --> 00:40:38,910 Sorts tar detta från hyllan, detta från hyllan, denna från hyllan, 918 00:40:38,910 --> 00:40:41,954 och du är den smarta ett för att ansluta alla dessa punkter, 919 00:40:41,954 --> 00:40:45,120 men i slutändan bygga något genom att återigen stående på axlarna av andra, 920 00:40:45,120 --> 00:40:49,370 så att du inte tillbringa en månad genomföra en dum rullgardinsmenyn, 921 00:40:49,370 --> 00:40:52,080 vilket är faktiskt svårt att göra om du vill att det ska fungera på Chrome, 922 00:40:52,080 --> 00:40:55,220 och IE och Firefox, och helst antal andra webbläsare. 923 00:40:55,220 --> 00:40:59,060 Detta är anledningen till att det är denna rika programvara kommersiell och öppen källkod 924 00:40:59,060 --> 00:41:01,220 industrin. 925 00:41:01,220 --> 00:41:06,810 >> PUBLIK: Så gör Bootstrap uppdateras och du måste sedan uppdatera dina länkar? 926 00:41:06,810 --> 00:41:07,820 >> DAVID J. MALAN: Det gör det. 927 00:41:07,820 --> 00:41:09,090 Jo, det gör det. 928 00:41:09,090 --> 00:41:12,540 Bootstrap är för närvarande på version 3.3.6. 929 00:41:12,540 --> 00:41:16,720 Och i allmänhet vad du skulle do-- detta är faktiskt värt att nämna. 930 00:41:16,720 --> 00:41:19,200 Det är vad som är allmänt känd som en semantisk versioning 931 00:41:19,200 --> 00:41:20,160 systemet i världen. 932 00:41:20,160 --> 00:41:21,320 Inte alla gör detta. 933 00:41:21,320 --> 00:41:26,410 >> Men om du har sett versionsnummer som är på formen x.y.z-- 934 00:41:26,410 --> 00:41:30,240 så till exempel den första versionen ett program kan vara 1.0.0. 935 00:41:30,240 --> 00:41:34,970 Eller om det är mycket, mycket beta, eller även alfa status, vilket innebär användning 936 00:41:34,970 --> 00:41:37,620 på egen risk, är det inte verkligen redo för bästa sändningstid, 937 00:41:37,620 --> 00:41:42,080 du kan även starta 0.0.1 eller någon sådan benämning. 938 00:41:42,080 --> 00:41:47,260 Men om programvara börjar version 1,0, eller ekvivalent 1.0.0, 939 00:41:47,260 --> 00:41:50,530 typiskt, vad är vanligt i dessa days-- men inte omnipresent-- är 940 00:41:50,530 --> 00:41:53,520 om ett företag eller en individuella programmerare korrigeringar 941 00:41:53,520 --> 00:41:56,140 några fel i någon bit programvara som verkligen 942 00:41:56,140 --> 00:42:01,620 var en bugg, vars korrigering inte inverkan du på all-- det inte ändras 943 00:42:01,620 --> 00:42:03,940 programmets beteende, det bara fixar något 944 00:42:03,940 --> 00:42:06,580 som inte fungerade properly-- du skulle typiskt 945 00:42:06,580 --> 00:42:08,890 uppdatera z-värdet där. 946 00:42:08,890 --> 00:42:12,900 Vilket innebär att någon som Kareem kan helt enkelt gå in hans hemsida, 947 00:42:12,900 --> 00:42:19,470 blint ändra versionsnummer från 1.0.0 till 1.0.1, spara det, skicka den, 948 00:42:19,470 --> 00:42:21,880 och i teorin, inte behöva oroar sig för att han bara har brutit 949 00:42:21,880 --> 00:42:24,430 hans webbplats på grund av viss brist på funktionalitet, 950 00:42:24,430 --> 00:42:25,870 eftersom något annat gick sönder. 951 00:42:25,870 --> 00:42:28,740 >> Under tiden, om jag programmerare eller något företag 952 00:42:28,740 --> 00:42:35,500 skulle göra några betydande förändring som tillför funktionalitet, 953 00:42:35,500 --> 00:42:40,320 Jag kan uppdatera oss till 1.1.0 eftersom jag faktiskt 954 00:42:40,320 --> 00:42:42,200 förändra beteendet hos biblioteket. 955 00:42:42,200 --> 00:42:44,470 Jag ger dig kanske mer funktionalitet. 956 00:42:44,470 --> 00:42:48,490 Slutligen, om jag skulle faktiskt i grunden förändra programmet så 957 00:42:48,490 --> 00:42:54,380 mycket att det kommer att bryta många användares webbplatser eller applikationer, 958 00:42:54,380 --> 00:42:59,550 då jag måste, i denna modell, till uppgradera större versionsnummer också, 959 00:42:59,550 --> 00:43:01,059 vilket är en brott förändring. 960 00:43:01,059 --> 00:43:03,725 Med andra ord, kan jag ha avvecklad stöd för dem droppe 961 00:43:03,725 --> 00:43:04,350 menyn. 962 00:43:04,350 --> 00:43:07,790 Så om du uppgraderar till 2,0, halv din webbplats kan sluta fungera. 963 00:43:07,790 --> 00:43:10,950 Och detta är en slags signal till samhället om vad som är 964 00:43:10,950 --> 00:43:13,223 inblandade i att göra en uppgradering. 965 00:43:13,223 --> 00:43:16,710 966 00:43:16,710 --> 00:43:18,020 Ett bra tillfälle att höja. 967 00:43:18,020 --> 00:43:18,718 Andra frågor? 968 00:43:18,718 --> 00:43:21,761 969 00:43:21,761 --> 00:43:22,260 Okej. 970 00:43:22,260 --> 00:43:26,945 Nå, låt oss ta en titt på en slutlig ämne i detta segment av programmering 971 00:43:26,945 --> 00:43:30,640 teknik stackar, nämligen i samband med mobil. 972 00:43:30,640 --> 00:43:36,232 >> Så i en värld av mobiltelefoner i dag du have-- och iPads, och ytor, 973 00:43:36,232 --> 00:43:37,940 och alla dessa typer av devices-- du har 974 00:43:37,940 --> 00:43:40,950 en hel del alternativ när det gäller att genomföra 975 00:43:40,950 --> 00:43:47,270 ett program eller en webbplats för kundens mobila enheter. 976 00:43:47,270 --> 00:43:51,570 Så bara för att ange uppenbara, kanske dessa dagar, 977 00:43:51,570 --> 00:43:54,960 vad är plattformar utveckla i den mobila rymden? 978 00:43:54,960 --> 00:43:59,650 Vilka enheter kanske du vill stöd med appen eller hemsida? 979 00:43:59,650 --> 00:44:00,317 >> PUBLIK: Apple. 980 00:44:00,317 --> 00:44:01,108 DAVID J. MALAN: OK. 981 00:44:01,108 --> 00:44:01,820 Så Apple-enheter. 982 00:44:01,820 --> 00:44:06,740 Så det betyder iPhone, och att betyder iPad, och kanske till och med iPod. 983 00:44:06,740 --> 00:44:07,627 Vad annars? 984 00:44:07,627 --> 00:44:11,006 985 00:44:11,006 --> 00:44:11,505 Olivier? 986 00:44:11,505 --> 00:44:11,970 >> PUBLIK: Android. 987 00:44:11,970 --> 00:44:13,111 >> DAVID J. MALAN: Android. 988 00:44:13,111 --> 00:44:13,610 OK. 989 00:44:13,610 --> 00:44:17,335 Så Android-telefoner, Android tabletter, Android marknaden 990 00:44:17,335 --> 00:44:21,240 är ännu smutsigare because-- och även Apple blir rörigt. 991 00:44:21,240 --> 00:44:23,960 Medan en gång iPhone var en viss storlek, 992 00:44:23,960 --> 00:44:26,560 och iPad var en viss storlek, och iPod var en viss storlek, nu 993 00:44:26,560 --> 00:44:33,420 Vi har iPad Mini och den tunna ettor och iPhone 6 Plus och 6. 994 00:44:33,420 --> 00:44:34,407 Det blir en enda röra. 995 00:44:34,407 --> 00:44:35,740 Det blir Android världen. 996 00:44:35,740 --> 00:44:39,030 >> Och jag säger detta med slags rullande mina ögon eftersom det från en utvecklares 997 00:44:39,030 --> 00:44:41,680 perspektiv, är det en smärta i nacken när 998 00:44:41,680 --> 00:44:45,686 du inte har Steve Jobs vision av absolut kontroll 999 00:44:45,686 --> 00:44:47,060 över alla dessa specifikationer. 1000 00:44:47,060 --> 00:44:49,726 Apple gör fortfarande eftersom de är de som bygger hårdvaran. 1001 00:44:49,726 --> 00:44:52,690 Men det är en bra sak, om Jag är en programutvecklare, 1002 00:44:52,690 --> 00:44:54,520 att bara veta att min iPhone kommer alltid 1003 00:44:54,520 --> 00:44:56,850 att vara så här stor, eftersom det betyder att jag vet alltid 1004 00:44:56,850 --> 00:44:58,847 hur mycket skärmyta jag har. 1005 00:44:58,847 --> 00:45:01,180 Så om jag vill sätta en ikon i det övre vänstra hörnet, 1006 00:45:01,180 --> 00:45:04,530 det kommer att vara i exakt samma placera på varje enskild kund enhet. 1007 00:45:04,530 --> 00:45:07,140 >> Men i världen av iPhone 6s och iPhone 6 plussidan 1008 00:45:07,140 --> 00:45:10,570 och i världen av Android telefoner, det är över hela kartan. 1009 00:45:10,570 --> 00:45:13,580 Och så det gör det svårare att programmera saker, speciellt användargränssnitt, 1010 00:45:13,580 --> 00:45:18,270 för nu måste du börja ordna dina användargränssnitt relativt, inte 1011 00:45:18,270 --> 00:45:19,730 absolut. 1012 00:45:19,730 --> 00:45:23,524 Och samma har varit sant i webbläsare, och stationära datorer och bärbara datorer för år 1013 00:45:23,524 --> 00:45:25,690 eftersom du, naturligtvis, har olika skärmstorlekar. 1014 00:45:25,690 --> 00:45:26,189 >> Vad annars? 1015 00:45:26,189 --> 00:45:30,170 Du kanske har ytor, som från Microsoft. 1016 00:45:30,170 --> 00:45:31,270 Du kanske have-- 1017 00:45:31,270 --> 00:45:32,270 PUBLIK: Windows-telefon. 1018 00:45:32,270 --> 00:45:32,816 DAVID J. MALAN: Vad är det? 1019 00:45:32,816 --> 00:45:33,570 PUBLIK: Windows-telefon. 1020 00:45:33,570 --> 00:45:34,403 DAVID J. MALAN: Ja. 1021 00:45:34,403 --> 00:45:37,570 Så Windows-telefoner kan fortfarande hittas. 1022 00:45:37,570 --> 00:45:41,840 Typ av typ av Blackberrys, men de fortsätter att försöka. 1023 00:45:41,840 --> 00:45:43,900 Och sedan klasar av andra enheter. 1024 00:45:43,900 --> 00:45:48,020 Så för det mesta, låt oss säger dessa är de 1025 00:45:48,020 --> 00:45:49,520 bry sig om just nu. 1026 00:45:49,520 --> 00:45:51,890 Visst Apple grejer, säkert Android saker, 1027 00:45:51,890 --> 00:45:55,640 och bland Windows liknande yta tabletter verkar vara att fånga på ganska bra. 1028 00:45:55,640 --> 00:45:58,030 >> Och så bland dessa enheter, Om du vill rulla ut, 1029 00:45:58,030 --> 00:46:02,677 låt oss säga, en mobil närvaro för företag, vilka typer av designbeslut 1030 00:46:02,677 --> 00:46:03,510 har du att göra? 1031 00:46:03,510 --> 00:46:06,350 Tja, vi redan sagt i Apple världen, 1032 00:46:06,350 --> 00:46:08,790 det finns åtminstone två språk som typiskt används. 1033 00:46:08,790 --> 00:46:10,260 En kallades vad? 1034 00:46:10,260 --> 00:46:11,260 >> PUBLIK: Objective-C. 1035 00:46:11,260 --> 00:46:11,560 >> DAVID J. MALAN: Ja. 1036 00:46:11,560 --> 00:46:13,600 Så Objective-C, vilket är den äldre. 1037 00:46:13,600 --> 00:46:17,720 Det är också det språk som många Mac applikationer fortfarande skriven i. 1038 00:46:17,720 --> 00:46:18,964 Sedan den andra nyare var? 1039 00:46:18,964 --> 00:46:19,630 PUBLIK: Swift. 1040 00:46:19,630 --> 00:46:20,590 DAVID J. MALAN: Swift. 1041 00:46:20,590 --> 00:46:23,900 Och de är den typ av två att veta att imponera folk. 1042 00:46:23,900 --> 00:46:28,238 Sedan i Android världen, Vilket språk betyder Android använder? 1043 00:46:28,238 --> 00:46:30,618 >> PUBLIK: C #? 1044 00:46:30,618 --> 00:46:31,570 >> PUBLIK: Java. 1045 00:46:31,570 --> 00:46:34,230 >> DAVID J. MALAN: Java är språket i "du jour." 1046 00:46:34,230 --> 00:46:37,950 I Windows-världen, säker, vi säger C # i det fallet. 1047 00:46:37,950 --> 00:46:40,590 Så redan detta är en typ av irriterande, eftersom det är 1048 00:46:40,590 --> 00:46:43,070 takeaway för ett företag ägare eller någon som bara 1049 00:46:43,070 --> 00:46:44,570 vill rulla ut en mobil närvaro? 1050 00:46:44,570 --> 00:46:45,220 Liksom, fan det? 1051 00:46:45,220 --> 00:46:48,590 Liksom, om jag vill stödja en ganska bred användarbas, 1052 00:46:48,590 --> 00:46:52,180 Jag måste skriva, verkar det, tre separata applikationer. 1053 00:46:52,180 --> 00:46:55,630 En i ett av dessa språk, en i Java, en i C #. 1054 00:46:55,630 --> 00:46:59,620 Och även om jag vill funktionaliteten att vara identiska, det spelar ingen roll. 1055 00:46:59,620 --> 00:47:02,940 Jag behöver fortfarande att använda olika språk eftersom Apple och Microsoft, 1056 00:47:02,940 --> 00:47:06,084 och Google allt stöd olika miljöer. 1057 00:47:06,084 --> 00:47:07,750 Och det har varit en utmaning för år. 1058 00:47:07,750 --> 00:47:10,100 Tillbaka i dag, då folk brukade köpa programvara 1059 00:47:10,100 --> 00:47:12,230 vid en datorbutik i krympa inslagna rutor, 1060 00:47:12,230 --> 00:47:14,470 skulle du antingen måste nå för Mac hyllan, 1061 00:47:14,470 --> 00:47:19,040 eller for-- kanske detta mycket liten Mac shelf-- eller större Windows hyllan 1062 00:47:19,040 --> 00:47:19,980 och köpa vissa program. 1063 00:47:19,980 --> 00:47:22,813 Och mycket ofta, det fanns inte ens något för dig på Mac hyllan. 1064 00:47:22,813 --> 00:47:23,430 Varför? 1065 00:47:23,430 --> 00:47:26,900 Tja, beslutade företag om 90% av världen, 95% av världens 1066 00:47:26,900 --> 00:47:31,180 har datorer, varför ens bry genomföra saker på Mac OS? 1067 00:47:31,180 --> 00:47:34,370 >> Som en aside-- totalt digression-- varför är det 1068 00:47:34,370 --> 00:47:40,960 att Mac verkar så ogenomtränglig för virus, och maskar och säkerhetshot? 1069 00:47:40,960 --> 00:47:44,040 Är Apple bättre på detta? 1070 00:47:44,040 --> 00:47:45,934 Bättre på att hålla datorer säkra? 1071 00:47:45,934 --> 00:47:47,750 >> PUBLIK: Mindre publik? 1072 00:47:47,750 --> 00:47:50,720 >> DAVID J. MALAN: Det är förmodligen den större bit till den. 1073 00:47:50,720 --> 00:47:54,740 Så många användare av Mac har länge hävdat, oh, använder en Mac, 1074 00:47:54,740 --> 00:47:57,630 du kommer att bli immun mot virus, och maskar och alla dessa saker 1075 00:47:57,630 --> 00:47:59,180 som länge har plågat datorer. 1076 00:47:59,180 --> 00:48:02,050 Det kan bero på att Apple har bättre programmerare 1077 00:48:02,050 --> 00:48:05,250 och de skriver bättre programvara, eller Operativsystemet var bättre utformade. 1078 00:48:05,250 --> 00:48:06,870 Kanske, men förmodligen inte. 1079 00:48:06,870 --> 00:48:10,840 >> Det är förmodligen att när du är 12 år gammal, eller en 30 något 1080 00:48:10,840 --> 00:48:13,510 sorts sitta hemma skrift skadliga program att ta över 1081 00:48:13,510 --> 00:48:17,480 världen, kommer du att gå efter den mycket större målgrupp. 1082 00:48:17,480 --> 00:48:20,590 95% av världen som kanske köra Windows eller någon 1083 00:48:20,590 --> 00:48:21,740 varianter därav. 1084 00:48:21,740 --> 00:48:23,800 Så det är lite på båda sidor. 1085 00:48:23,800 --> 00:48:25,710 Men för sin kredit, Apple, såvitt jag vet, 1086 00:48:25,710 --> 00:48:28,270 har inte riktigt tippad själva som vara säkrare, 1087 00:48:28,270 --> 00:48:32,110 eftersom du bara inbjudande drama om du gör detta påstående, skulle jag tro. 1088 00:48:32,110 --> 00:48:32,610 >> Okej. 1089 00:48:32,610 --> 00:48:36,490 Utan att bli alltför långt ner det, hur löser vi det här? 1090 00:48:36,490 --> 00:48:39,670 Måste man köpa eller har du att betala tre olika personer för att utveckla 1091 00:48:39,670 --> 00:48:41,540 appar? 1092 00:48:41,540 --> 00:48:42,870 Har du välja en framför den andra? 1093 00:48:42,870 --> 00:48:45,460 Vad ska styra din tänker tror du? 1094 00:48:45,460 --> 00:48:47,960 1095 00:48:47,960 --> 00:48:48,460 Kareem? 1096 00:48:48,460 --> 00:48:51,001 1097 00:48:51,001 --> 00:48:51,500 Nej. 1098 00:48:51,500 --> 00:48:54,190 Någon annan. 1099 00:48:54,190 --> 00:48:56,885 >> PUBLIK: Just kommit med hårdvaran. 1100 00:48:56,885 --> 00:48:58,510 DAVID J. MALAN: Kom med hårdvaran? 1101 00:48:58,510 --> 00:48:59,533 Vad menar du? 1102 00:48:59,533 --> 00:49:01,282 >> PUBLIK: För miljö. [OHÖRBAR] 1103 00:49:01,282 --> 00:49:04,867 1104 00:49:04,867 --> 00:49:06,200 DAVID J. MALAN: Så det är sant. 1105 00:49:06,200 --> 00:49:09,280 Men dina kunder, Samtidigt kan ha iPhone, 1106 00:49:09,280 --> 00:49:13,530 De kanske har Android-telefoner, de kan ha tabletter som gjorts av Microsoft. 1107 00:49:13,530 --> 00:49:19,040 Så hur har du en mobil strategi för alla dessa olika användare? 1108 00:49:19,040 --> 00:49:23,320 Det verkar som om det kostar, låt oss säga $ 1000 för att göra en iPhone 1109 00:49:23,320 --> 00:49:25,940 ansökan, kommer det att kosta $ 2000 för att göra 1110 00:49:25,940 --> 00:49:29,250 en iPhone-applikation och en Android, eller $ 3000 1111 00:49:29,250 --> 00:49:31,407 att också stödja Windows-enheter också. 1112 00:49:31,407 --> 00:49:33,990 Det är förmodligen ganska drift, och det kanske inte ens 1113 00:49:33,990 --> 00:49:36,050 vara en linjär relation som. 1114 00:49:36,050 --> 00:49:41,065 >> PUBLIK: Om du vill ha en app eller inte kan du lyhörd hemsida. 1115 00:49:41,065 --> 00:49:41,940 DAVID J. MALAN: Bra. 1116 00:49:41,940 --> 00:49:46,255 PUBLIK: Eller så kan du ha en inbyggd app. 1117 00:49:46,255 --> 00:49:47,130 DAVID J. MALAN: Ja. 1118 00:49:47,130 --> 00:49:50,260 Så i allt detta sammanhang här, vi har talat om vad 1119 00:49:50,260 --> 00:49:53,190 folk skulle kalla infödda applikationer. 1120 00:49:53,190 --> 00:49:58,040 Det är program som är skrivna i modersmål av den enheten. 1121 00:49:58,040 --> 00:50:02,190 Så infödda Objective-C eller Swift kod, eller i Java eller i C #. 1122 00:50:02,190 --> 00:50:06,900 Vilket innebär att när du laddar ner, låt oss säger snapchat, en populär applikation, 1123 00:50:06,900 --> 00:50:10,060 eller när du laddar ner Facebook för en telefon, 1124 00:50:10,060 --> 00:50:13,270 du hämtar antingen version skriven för din iPhone, 1125 00:50:13,270 --> 00:50:16,830 eller skriven för din Android-telefon, eller skriven för din yta. 1126 00:50:16,830 --> 00:50:18,500 >> Men det finns ett alternativ. 1127 00:50:18,500 --> 00:50:26,020 Som Olivier syftade till Du kan faktiskt använda HTML 5 1128 00:50:26,020 --> 00:50:33,440 i stället, med hjälp av vad som kallas en bana applikation, där du helt enkelt 1129 00:50:33,440 --> 00:50:35,940 implementera mobil närvaro och någon funktionalitet. 1130 00:50:35,940 --> 00:50:37,030 Vad menar jag med mobil närvaro? 1131 00:50:37,030 --> 00:50:39,800 Precis som din webbplats som har din kontaktinformation, en förteckning över alla 1132 00:50:39,800 --> 00:50:43,049 dina produkter, kanske det har en shopping vagn, kanske du säljer saker genom det. 1133 00:50:43,049 --> 00:50:46,850 Oavsett din ansökan är du genomföra det, inte i Objective-C, 1134 00:50:46,850 --> 00:50:51,200 eller Swift, eller Java eller C #, men i HTML 5, som var det språk vi såg 1135 00:50:51,200 --> 00:50:55,470 vid igår, med JavaScript och CSS. 1136 00:50:55,470 --> 00:50:58,700 >> Och vad är trevligt om de tre är att köra dem, 1137 00:50:58,700 --> 00:51:01,981 du behöver bara vad mjukvara? 1138 00:51:01,981 --> 00:51:02,980 PUBLIK: En webbläsare. 1139 00:51:02,980 --> 00:51:04,229 DAVID J. MALAN: En webbläsare. 1140 00:51:04,229 --> 00:51:07,610 Och det bästa jag vet, alla dessa enheter levereras med webbläsare, 1141 00:51:07,610 --> 00:51:10,480 så att användaren inte har måste installera något speciellt. 1142 00:51:10,480 --> 00:51:12,920 Så du kan bara berätta din publik, dina kunder, 1143 00:51:12,920 --> 00:51:16,590 gå till acme.com i ditt webbläsare och du ska bara 1144 00:51:16,590 --> 00:51:19,730 har en webbaserad erfarenhet som fortfarande fyller hela skärmen, 1145 00:51:19,730 --> 00:51:25,100 men du behöver inte oroa dig för alla Dessa kostnader och alla denna komplexitet. 1146 00:51:25,100 --> 00:51:28,600 Men visst det kommer att finnas en hake här, eller hur? 1147 00:51:28,600 --> 00:51:31,740 Speciellt om jag påpeka att ett par år sedan, 1148 00:51:31,740 --> 00:51:35,700 den allra första versionen av Facebooks mobila applikation 1149 00:51:35,700 --> 00:51:38,810 var mestadels en HTML 5 program. 1150 00:51:38,810 --> 00:51:42,490 Och de har, mer nyligen implementerats det 1151 00:51:42,490 --> 00:51:44,700 i deras andra applikationer. 1152 00:51:44,700 --> 00:51:46,990 >> Så varför skulle du inte omedelbart vill säga, 1153 00:51:46,990 --> 00:51:49,190 väl, naturligtvis ska vi göra detta? 1154 00:51:49,190 --> 00:51:51,560 Vad kan de dolda kostnaderna vara? 1155 00:51:51,560 --> 00:51:52,477 >> PUBLIK: Performance. 1156 00:51:52,477 --> 00:51:53,643 DAVID J. MALAN: Performance? 1157 00:51:53,643 --> 00:51:54,567 Hur menar du? 1158 00:51:54,567 --> 00:52:01,040 >> PUBLIK: Personen App har mer prestanda. 1159 00:52:01,040 --> 00:52:03,850 >> DAVID J. MALAN: Så det är sant, för ett par skäl. 1160 00:52:03,850 --> 00:52:05,270 Vi kan oversimplify svaret. 1161 00:52:05,270 --> 00:52:08,061 Och minns vår diskussion om tolkas mot kompilerade språk. 1162 00:52:08,061 --> 00:52:12,030 Detta är HTML 5 och med det, bara för att vara klar, JavaScript-- skriven vanligen 1163 00:52:12,030 --> 00:52:15,880 JS-- och CSS är alla tolkade språk, 1164 00:52:15,880 --> 00:52:21,020 även om endast JavaScript är ett programmeringsspråk. 1165 00:52:21,020 --> 00:52:25,820 >> Och så mot dessa, som en del av dessa sammanställs, åtminstone dessa three-- 1166 00:52:25,820 --> 00:52:29,990 Objective-C, Java och C # - dessa, i teorin, bara bör vara snabbare. 1167 00:52:29,990 --> 00:52:31,670 Men det finns en annan verklighet for-- 1168 00:52:31,670 --> 00:52:32,440 >> PUBLIK: Funktioner? 1169 00:52:32,440 --> 00:52:32,830 >> DAVID J. MALAN: Vad är det? 1170 00:52:32,830 --> 00:52:34,060 >> Målgrupp: Funktioner. 1171 00:52:34,060 --> 00:52:34,570 >> DAVID J. MALAN: Funktionalitet? 1172 00:52:34,570 --> 00:52:35,070 Hur så? 1173 00:52:35,070 --> 00:52:37,305 PUBLIK: Använd kameran av telefonen eller något. 1174 00:52:37,305 --> 00:52:41,471 Du kan använda dem med webbläsaren. 1175 00:52:41,471 --> 00:52:42,470 DAVID J. MALAN: Exakt. 1176 00:52:42,470 --> 00:52:43,011 De sec-- 1177 00:52:43,011 --> 00:52:45,034 PUBLIK: [OHÖRBART] 1178 00:52:45,034 --> 00:52:46,700 DAVID J. MALAN: Det är en annan bra. 1179 00:52:46,700 --> 00:52:49,230 Det finns funktioner som kommer med mobiltelefoner i dag 1180 00:52:49,230 --> 00:52:53,840 som inte är, genom sin konstruktion, för säkerhet skäl, tillgängliga för webbläsare. 1181 00:52:53,840 --> 00:52:56,410 Eftersom det skulle vara typ av en obehagligt sak om bara när 1182 00:52:56,410 --> 00:53:00,710 du besöker google.com, eller cnn.com, eller någon website.com, 1183 00:53:00,710 --> 00:53:04,490 att den webbplatsen har befogenhet att vända på kameran, ta en bild av dig, 1184 00:53:04,490 --> 00:53:06,010 och sedan använda den. 1185 00:53:06,010 --> 00:53:09,280 Men du skulle inte ha en slumpmässig webbplats att du besöker för första gången 1186 00:53:09,280 --> 00:53:10,690 att ha denna förmåga. 1187 00:53:10,690 --> 00:53:13,460 >> Och så vad telefon tillverkare typiskt göra 1188 00:53:13,460 --> 00:53:17,230 är de bara neka åtkomst till den sortens information 1189 00:53:17,230 --> 00:53:20,650 till en webbläsare, vilket innebär att du kan inte genomföra kameran. 1190 00:53:20,650 --> 00:53:24,180 Du kan inte genomföra push-meddelanden, Ljudet som du får på skärmen 1191 00:53:24,180 --> 00:53:26,120 med korta meddelanden. 1192 00:53:26,120 --> 00:53:31,350 Och i själva verket är även GPS enda typ av slags tillgängliga för webbläsare. 1193 00:53:31,350 --> 00:53:34,140 Om du någonsin på en bärbar dator eller på en mobil enhet, 1194 00:53:34,140 --> 00:53:38,770 drog upp något som kanske CNN.com, men också lokala nyheter stationer 1195 00:53:38,770 --> 00:53:43,890 tenderar att göra detta uppmanas du ofta med en message-- foxnews.com 1196 00:53:43,890 --> 00:53:45,170 vill veta var du befinner dig. 1197 00:53:45,170 --> 00:53:46,610 Godkänna eller avslå. 1198 00:53:46,610 --> 00:53:52,070 >> Tja, är webbläsaren försöker komma åt din GPS-informationen från telefonen. 1199 00:53:52,070 --> 00:53:54,740 Men tack och lov Microsoft, och Apple och Google 1200 00:53:54,740 --> 00:53:57,330 har beslutat att känns Det är en bra situation, 1201 00:53:57,330 --> 00:53:59,461 Vi vill Google Maps och andra verktyg för att arbeta, 1202 00:53:59,461 --> 00:54:02,710 men vi vill inte krypa ut folk genom att bara göra det möjligt en webbplats för att göra detta. 1203 00:54:02,710 --> 00:54:05,934 Så låt oss slags träffas halvvägs och uppmana användaren. 1204 00:54:05,934 --> 00:54:08,850 Men det är inte nödvändigtvis fallet med all hårdvara, som kameran 1205 00:54:08,850 --> 00:54:10,680 och med tryck meddelanden och liknande, 1206 00:54:10,680 --> 00:54:13,650 så du kan behöva offra vissa funktioner. 1207 00:54:13,650 --> 00:54:15,100 Men prestanda också. 1208 00:54:15,100 --> 00:54:18,020 Det blir mindre märkbar idag, kanske 1209 00:54:18,020 --> 00:54:22,400 som LTE fångster och snabbare internet hastigheter på telefoner, 1210 00:54:22,400 --> 00:54:24,110 men du kan slags känna skillnaden. 1211 00:54:24,110 --> 00:54:28,190 Som en webbaserad applikation bara känns långsammare, typiskt, 1212 00:54:28,190 --> 00:54:31,100 än en ursprungliga programmet, delvis eftersom en webbaserad applikation 1213 00:54:31,100 --> 00:54:32,680 per definition är på internet. 1214 00:54:32,680 --> 00:54:35,610 Det talar till servrarna på webben. 1215 00:54:35,610 --> 00:54:39,590 Och om din nätverksanslutning är långsam, även rulla kan vara långsam. 1216 00:54:39,590 --> 00:54:43,710 >> Men en ursprungliga programmet, har du redan före downloaded-- förmodligen 1217 00:54:43,710 --> 00:54:45,680 när du var hemma från App Store, 1218 00:54:45,680 --> 00:54:47,900 eller du åtminstone pre-nedladdade det i sin helhet 1219 00:54:47,900 --> 00:54:49,640 tidigare oavsett din anslutning Byggd 1220 00:54:49,640 --> 00:54:52,530 och så nu har du alla bitar som du vanligtvis behöver. 1221 00:54:52,530 --> 00:54:55,090 Utom kanske vissa uppgifter som kommer från en server. 1222 00:54:55,090 --> 00:54:57,130 >> Så dessa är avvägningar här. 1223 00:54:57,130 --> 00:54:59,980 Det är lite av en mellan kompromiss, faktiskt. 1224 00:54:59,980 --> 00:55:00,907 Och jag tror dig-- 1225 00:55:00,907 --> 00:55:02,895 >> PUBLIK: Använd data offline. 1226 00:55:02,895 --> 00:55:06,355 I den inhemska program, kan du [OHÖRBART] 1227 00:55:06,355 --> 00:55:07,480 DAVID J. MALAN: Absolut. 1228 00:55:07,480 --> 00:55:09,730 Så det är offline frågan, vilket är verkligen irriterande 1229 00:55:09,730 --> 00:55:13,120 om du inte kan spela vissa spel eller användning vissa program bara för att du är 1230 00:55:13,120 --> 00:55:15,110 i en källare någonstans eller i en hiss. 1231 00:55:15,110 --> 00:55:18,700 En ursprungliga programmet är elastisk med högre sannolikhet mot att 1232 00:55:18,700 --> 00:55:20,990 förutsatt att du har alla data du behöver lokalt. 1233 00:55:20,990 --> 00:55:22,900 >> Så det finns ett tredje alternativ här. 1234 00:55:22,900 --> 00:55:30,270 Och låt oss dra spektrum som native app här och webbapp här. 1235 00:55:30,270 --> 00:55:32,460 Och vad som finns i mitten är något called-- 1236 00:55:32,460 --> 00:55:35,410 och jag tror att du kan ha använde ordet innan, kanske? 1237 00:55:35,410 --> 00:55:37,170 Hybrid ansökan. 1238 00:55:37,170 --> 00:55:40,980 Och som ordet antyder, det är något i mitten. 1239 00:55:40,980 --> 00:55:46,230 Det är lite av en webbapplikation och det är lite av en ursprungliga programmet. 1240 00:55:46,230 --> 00:55:47,690 >> Och vad betyder det? 1241 00:55:47,690 --> 00:55:51,750 Det visar sig att det finns frameworks-- att använda en term från earlier-- programvara 1242 00:55:51,750 --> 00:55:55,860 att andra människor har skrivit för var och en av dessa plattformar. 1243 00:55:55,860 --> 00:55:57,500 Dessa och ytterligare andra anordningar. 1244 00:55:57,500 --> 00:56:02,390 I själva verket, låt mig gå till PhoneGap, vilket är en sådan ram som jag 1245 00:56:02,390 --> 00:56:04,520 tror Adobe äger nu. 1246 00:56:04,520 --> 00:56:07,830 Låt mig gå till Komma igång. 1247 00:56:07,830 --> 00:56:09,430 Låt oss se. 1248 00:56:09,430 --> 00:56:12,450 Se om jag kan se en lista över verktyg. 1249 00:56:12,450 --> 00:56:13,150 Hårdvara. 1250 00:56:13,150 --> 00:56:15,845 Att komma igång. 1251 00:56:15,845 --> 00:56:17,570 PhoneGap hårdvara. 1252 00:56:17,570 --> 00:56:18,672 >> Låt oss se. 1253 00:56:18,672 --> 00:56:23,459 PhoneGap hårdvara tillgång. 1254 00:56:23,459 --> 00:56:26,125 Låt mig se om vi kan hitta en liten diagram som de brukade ha. 1255 00:56:26,125 --> 00:56:29,170 1256 00:56:29,170 --> 00:56:31,640 Detta är på en annan plats. 1257 00:56:31,640 --> 00:56:32,525 Är detta bra? 1258 00:56:32,525 --> 00:56:33,030 Nej. 1259 00:56:33,030 --> 00:56:36,330 Det är gonna avfall vår tid. 1260 00:56:36,330 --> 00:56:40,185 PhoneGap hårdvara. 1261 00:56:40,185 --> 00:56:40,685 Enheter. 1262 00:56:40,685 --> 00:56:45,190 1263 00:56:45,190 --> 00:56:48,030 Device API. 1264 00:56:48,030 --> 00:56:49,270 Nej, de har flyttat det. 1265 00:56:49,270 --> 00:56:50,070 >> PhoneGap. 1266 00:56:50,070 --> 00:56:54,964 Låt oss gå en sista titt på detta och se om jag kan visa dig. 1267 00:56:54,964 --> 00:56:55,630 Att komma igång. 1268 00:56:55,630 --> 00:56:58,160 1269 00:56:58,160 --> 00:56:59,020 Installera PhoneGap. 1270 00:56:59,020 --> 00:57:02,310 1271 00:57:02,310 --> 00:57:03,270 Installera mobilappen. 1272 00:57:03,270 --> 00:57:04,320 Kom igen. 1273 00:57:04,320 --> 00:57:07,220 1274 00:57:07,220 --> 00:57:08,580 De har omorganiseras allt. 1275 00:57:08,580 --> 00:57:09,750 Okej. 1276 00:57:09,750 --> 00:57:11,370 Åh, okej. 1277 00:57:11,370 --> 00:57:12,550 Tja, här går vi. 1278 00:57:12,550 --> 00:57:16,130 Detta är inte så upplysande, men Detta är vad jag var typ av ute efter. 1279 00:57:16,130 --> 00:57:20,940 >> Så PhoneGap är ett ramverk som du kan ladda ner gratis som ger dig 1280 00:57:20,940 --> 00:57:22,750 några startkoden, i huvudsak. 1281 00:57:22,750 --> 00:57:26,600 Så en del kod som de har skrivit som inte göra mycket av någonting. 1282 00:57:26,600 --> 00:57:29,610 Men vad det ger dig väsentligen är ekvivalent 1283 00:57:29,610 --> 00:57:34,910 av ett program som bara sätter en stor rektangel på användarens skärm. 1284 00:57:34,910 --> 00:57:38,040 Det spelar ingen sätta en adressfältet, som en webbläsare, inte sätta en adress. 1285 00:57:38,040 --> 00:57:39,650 Det sätter bara en stor rektangel. 1286 00:57:39,650 --> 00:57:43,230 Och du konfigurerar denna stora rektangel, under huven, 1287 00:57:43,230 --> 00:57:50,780 att faktiskt gå till acme.com, eller kanske m.acme.com, för mobile.acme.com, 1288 00:57:50,780 --> 00:57:52,910 men användaren inte vet de är på den adressen. 1289 00:57:52,910 --> 00:57:55,520 Allt de ser är innehållet på webbsidan. 1290 00:57:55,520 --> 00:57:59,822 >> Men vad är trevligt om denna varelse en hybrid app är att det PhoneGap 1291 00:57:59,822 --> 00:58:03,030 och andra företag ger dig är de ger dig en liten bit av kod 1292 00:58:03,030 --> 00:58:05,760 i Objective-C eller Swift, eller en liten bit av kod i Java, 1293 00:58:05,760 --> 00:58:08,320 eller en liten bit av kod i C #, och i huvudsak 1294 00:58:08,320 --> 00:58:12,990 allt du behöver för att ge är minimalt den adressen till din webbaserad applikation. 1295 00:58:12,990 --> 00:58:15,750 Och då du bunt detta alla tillsammans och du 1296 00:58:15,750 --> 00:58:20,670 har det antingen få tillgång till webbplats via Internet, 1297 00:58:20,670 --> 00:58:24,060 eller du ens cache en lokal kopiera inne i programmet, 1298 00:58:24,060 --> 00:58:28,690 och sedan spara din ansökan i iPhone-format, Android 1299 00:58:28,690 --> 00:58:32,030 format, yta format, eller vilket som helst antal andra anordningar. 1300 00:58:32,030 --> 00:58:34,960 >> Du laddar upp var och en av dessa versioner till Google Play Store, 1301 00:58:34,960 --> 00:58:37,690 till App Store, till Windows Store, och så vidare. 1302 00:58:37,690 --> 00:58:41,570 Och nu kan du ha alla dina publiken hämta verkligen en infödd app, 1303 00:58:41,570 --> 00:58:44,250 även om det mesta av koden var skriven av någon annan, 1304 00:58:44,250 --> 00:58:49,090 men innehållet i den infödda app alla kommer ifrån, vanligtvis din egen hemsida. 1305 00:58:49,090 --> 00:58:53,950 Så du fortsätta skriva din webbplats i HTML, JavaScript och CSS. 1306 00:58:53,950 --> 00:58:56,400 >> Så varför oskärpa dessa rader? 1307 00:58:56,400 --> 00:59:00,240 Varför har en hybrid ansökan det är typ av infödda, men också 1308 00:59:00,240 --> 00:59:02,569 typ av webbaserade? 1309 00:59:02,569 --> 00:59:04,610 Vad är hela poängen med lägga till denna komplexitet? 1310 00:59:04,610 --> 00:59:07,180 Jag menar, även fortfarande, bara från ögna igenom denna sida, 1311 00:59:07,180 --> 00:59:11,790 Komma igång guiden känns det har fått en hel del steg för mig 1312 00:59:11,790 --> 00:59:13,514 att göra innan jag can-- 1313 00:59:13,514 --> 00:59:14,430 PUBLIK: Återanvändning? 1314 00:59:14,430 --> 00:59:14,960 DAVID J. MALAN: Återanvändning? 1315 00:59:14,960 --> 00:59:15,618 Vad menar du? 1316 00:59:15,618 --> 00:59:16,826 >> PUBLIK: av källkoden. 1317 00:59:16,826 --> 00:59:19,438 Så samma kod skulle köras på alla de olika plattformarna. 1318 00:59:19,438 --> 00:59:20,313 DAVID J. MALAN: Ja. 1319 00:59:20,313 --> 00:59:21,188 PUBLIK: [OHÖRBART] 1320 00:59:21,188 --> 00:59:23,200 1321 00:59:23,200 --> 00:59:24,200 DAVID J. MALAN: Perfect. 1322 00:59:24,200 --> 00:59:26,930 Om tiden är knapp och om du har inte så många developers-- 1323 00:59:26,930 --> 00:59:28,900 kanske du har en utvecklare och han eller hon säkert 1324 00:59:28,900 --> 00:59:31,050 vet inte alla dessa environments-- absolut inte bra, 1325 00:59:31,050 --> 00:59:33,341 och säkert kan inte programmet i alla tre samtidigt 1326 00:59:33,341 --> 00:59:35,970 och skicka tre produkter i tidsfristen för en, 1327 00:59:35,970 --> 00:59:40,360 Du kan få honom eller henne att bygga allt i HTML och JavaScript och CSS, 1328 00:59:40,360 --> 00:59:43,260 och sedan lära en liten liten lite om inhemska program, 1329 00:59:43,260 --> 00:59:45,930 precis tillräckligt för att ladda ner en ram som denna, 1330 00:59:45,930 --> 00:59:48,750 att sedan ladda upp din produkt till alla de olika app butiker 1331 00:59:48,750 --> 00:59:51,700 så att du nu har en ursprungliga programmet. 1332 00:59:51,700 --> 00:59:54,090 >> Så det verkar vara en win-win, men återigen, att vara tydlig, 1333 00:59:54,090 --> 00:59:56,540 Vilka är de potentiella kostnader eller gotchas? 1334 00:59:56,540 --> 01:00:00,292 1335 01:00:00,292 --> 01:00:01,209 >> PUBLIK: Performance? 1336 01:00:01,209 --> 01:00:02,083 DAVID J. MALAN: Ja. 1337 01:00:02,083 --> 01:00:02,959 Prestanda. 1338 01:00:02,959 --> 01:00:04,250 Det är svårt att beskriva verbalt. 1339 01:00:04,250 --> 01:00:07,590 Så om du bara ta på tro en mobil applikation, 1340 01:00:07,590 --> 01:00:11,430 en webbapplikation kommer typiskt utföra långsammare. 1341 01:00:11,430 --> 01:00:16,500 Det kanske inte ser helt rätt, eftersom i iPhone, och i Android-telefoner, 1342 01:00:16,500 --> 01:00:19,210 och Windows-enheter, det finns alltid ett slags standardutseende 1343 01:00:19,210 --> 01:00:21,780 och känner till alla de knappar och menyer. 1344 01:00:21,780 --> 01:00:25,160 >> Och företag i banan, kan prova att närma dessa estetik 1345 01:00:25,160 --> 01:00:28,329 med bibliotek som Bootstrap, men user-- en skicklig user-- 1346 01:00:28,329 --> 01:00:30,620 kommer att veta att något är inte riktigt rätt här. 1347 01:00:30,620 --> 01:00:32,510 Och det är bra, kanske det är inte en stor sak. 1348 01:00:32,510 --> 01:00:35,500 Men prestandaproblem absolut är en stor sak. 1349 01:00:35,500 --> 01:00:39,400 Native applikationer tenderar att bara vara mycket mer lyhörd och därför 1350 01:00:39,400 --> 01:00:39,946 bättre. 1351 01:00:39,946 --> 01:00:42,070 Och så, vad händer då kanske det bästa av båda världar? 1352 01:00:42,070 --> 01:00:44,584 Om du är särskilt en liten företag eller en liten grupp, 1353 01:00:44,584 --> 01:00:47,000 du inte har resurser att utveckla en app parallellt 1354 01:00:47,000 --> 01:00:50,480 på alla tre plattformar, och ärligt talat, känns som att det är en dålig idé ändå 1355 01:00:50,480 --> 01:00:53,526 eftersom om du rulla ut och på alla tre samtidigt realisera, 1356 01:00:53,526 --> 01:00:56,400 vi borde ha lagt till några funktioner eller gjort något annorlunda, nu 1357 01:00:56,400 --> 01:00:59,530 du måste fixa det i tre platser, inte en. 1358 01:00:59,530 --> 01:01:02,390 Vad är kanske den optimala strategi här övergripande, 1359 01:01:02,390 --> 01:01:04,130 om resurser och tid är stram? 1360 01:01:04,130 --> 01:01:06,420 >> PUBLIK: Gör det på iOS. 1361 01:01:06,420 --> 01:01:08,390 >> DAVID J. MALAN: Det är inte orimligt. 1362 01:01:08,390 --> 01:01:10,670 iPhones, åtminstone i den USA, är super populär. 1363 01:01:10,670 --> 01:01:13,820 Android verkar fortfarande ha dominerande marknadsandel globalt, övergripande. 1364 01:01:13,820 --> 01:01:16,740 Så du är inte nödvändigtvis representativa 1365 01:01:16,740 --> 01:01:19,210 av helheten av jordklotet denna vecka. 1366 01:01:19,210 --> 01:01:21,180 Men det är absolut ett beslut. 1367 01:01:21,180 --> 01:01:23,620 Jag menar, på campus här jag tror vissa avskyvärda nummer 1368 01:01:23,620 --> 01:01:26,600 eller procent av studenter har iPhone och inte Android-telefoner. 1369 01:01:26,600 --> 01:01:28,490 Men utomlands, är det slags tvärtom. 1370 01:01:28,490 --> 01:01:30,040 Så du bestämmer baserat på din målgrupp. 1371 01:01:30,040 --> 01:01:31,990 Hur vet du vad din publik har? 1372 01:01:31,990 --> 01:01:34,080 >> Tja, lärde vi ett trick igår. 1373 01:01:34,080 --> 01:01:35,060 Du kan be dem. 1374 01:01:35,060 --> 01:01:37,910 Om du har en företagsintern publik du kan skicka dem en enkät formulär. 1375 01:01:37,910 --> 01:01:39,172 Eller så kan du bara göra vad? 1376 01:01:39,172 --> 01:01:40,076 >> PUBLIK: Google Analytics? 1377 01:01:40,076 --> 01:01:40,680 >> DAVID J. MALAN: Vad är det? 1378 01:01:40,680 --> 01:01:41,876 >> PUBLIK: Google Analytics. 1379 01:01:41,876 --> 01:01:43,250 DAVID J. MALAN: Google Analytics. 1380 01:01:43,250 --> 01:01:43,750 Ja. 1381 01:01:43,750 --> 01:01:46,970 Eller ännu slags tekniskt, bara titta på dina egna webbservrar loggar. 1382 01:01:46,970 --> 01:01:49,100 För vad händer varje gång en webbläsare, 1383 01:01:49,100 --> 01:01:51,880 om laptop, stationär eller telefon besöker din webbplats? 1384 01:01:51,880 --> 01:01:56,847 De skickar att HTTP-huvudet som visar du vilken webbläsare och operativsystem de använder. 1385 01:01:56,847 --> 01:02:00,180 Så du kan sluta med hög sannolikhet, vad din demografiska använder det sättet 1386 01:02:00,180 --> 01:02:01,410 och sedan justera. 1387 01:02:01,410 --> 01:02:03,030 >> Så antar att det är oacceptabelt. 1388 01:02:03,030 --> 01:02:07,760 Det blir liksom dåligt för företag om Android-användare kan inte köpa våra widgets. 1389 01:02:07,760 --> 01:02:10,942 >> PUBLIK: Oavsett om du är kommer ut eller inte? 1390 01:02:10,942 --> 01:02:12,900 DAVID J. MALAN: Oavsett om du kommer att ta betalt? 1391 01:02:12,900 --> 01:02:14,900 Så OK, du får vad du betalar för. 1392 01:02:14,900 --> 01:02:18,400 >> PUBLIK: Oavsett om din app är gonna vara gratis eller om det är gonna-- 1393 01:02:18,400 --> 01:02:19,530 >> DAVID J. MALAN: OK. 1394 01:02:19,530 --> 01:02:21,920 Så kanske man kan ta igen kostnader på det sättet, eller--? 1395 01:02:21,920 --> 01:02:26,195 >> PUBLIK: Jag läste en studie gång att nämnda mer Apple-användare betalar för appar versus-- 1396 01:02:26,195 --> 01:02:28,320 DAVID J. MALAN: Det är sant eftersom de är redan 1397 01:02:28,320 --> 01:02:29,640 betala mer för sina enheter. 1398 01:02:29,640 --> 01:02:31,295 Så inte orimligt ett antagande. 1399 01:02:31,295 --> 01:02:32,170 >> PUBLIK: [OHÖRBART] 1400 01:02:32,170 --> 01:02:34,439 1401 01:02:34,439 --> 01:02:35,230 DAVID J. MALAN: OK. 1402 01:02:35,230 --> 01:02:38,667 Så om de är mer villiga att betala, sedan till helvetet med Android-användare. 1403 01:02:38,667 --> 01:02:40,500 De kommer inte att betala oss något ändå. 1404 01:02:40,500 --> 01:02:43,499 Vi skulle lika gärna kunna fokusera våra prioriteringar, åtminstone under de första månaderna 1405 01:02:43,499 --> 01:02:44,810 eller ett år, på iOS. 1406 01:02:44,810 --> 01:02:46,240 Helt rimligt. 1407 01:02:46,240 --> 01:02:48,558 Vad är en mer inkluderande strategi än så? 1408 01:02:48,558 --> 01:02:53,740 1409 01:02:53,740 --> 01:02:54,960 Maybe-- vad är det? 1410 01:02:54,960 --> 01:02:57,040 >> PUBLIK: [OHÖRBART] 1411 01:02:57,040 --> 01:03:00,142 >> DAVID J. MALAN: En mer expensive-- så kanske investera mer in-- gå vidare. 1412 01:03:00,142 --> 01:03:00,767 PUBLIK: Ja. 1413 01:03:00,767 --> 01:03:02,050 Bara en mobil webbplats. 1414 01:03:02,050 --> 01:03:03,966 >> DAVID J. MALAN: Så gör en mobila webbplats och inte 1415 01:03:03,966 --> 01:03:05,440 ens oroa denna komplexitet. 1416 01:03:05,440 --> 01:03:07,970 Eller kanske en rimlig strategi, som även Facebook tog, 1417 01:03:07,970 --> 01:03:10,890 är att börja med en hybrid ansökan eftersom det inte 1418 01:03:10,890 --> 01:03:13,582 så mycket svårare att göra detta än detta. 1419 01:03:13,582 --> 01:03:16,040 Du behöver bara läsa några dokumentation och räkna ut hur 1420 01:03:16,040 --> 01:03:17,480 att ladda upp saker till App Store. 1421 01:03:17,480 --> 01:03:19,670 Så kanske du börjar med detta, så att på dag ett, 1422 01:03:19,670 --> 01:03:21,112 du kan stödja alla användare. 1423 01:03:21,112 --> 01:03:23,570 Och sedan, precis som Facebook och andra företag har gjort, 1424 01:03:23,570 --> 01:03:25,330 när du har resurser, du har människor, 1425 01:03:25,330 --> 01:03:27,660 varför inte du åter implementera bara iOS ansökan. 1426 01:03:27,660 --> 01:03:31,460 Du har fortfarande något för alla, även om det är en sämre upplevelse 1427 01:03:31,460 --> 01:03:33,330 kanske, med hybrid ansökan. 1428 01:03:33,330 --> 01:03:36,770 Men du kan gradvis rulla ut och byta ut kort sikt 1429 01:03:36,770 --> 01:03:40,280 åtgärder för hybrid program med dina mer inhemska program. 1430 01:03:40,280 --> 01:03:44,090 >> PUBLIK: Men med en hybrid app du kommer att ha tillgång till mobila funktioner? 1431 01:03:44,090 --> 01:03:45,440 >> DAVID J. MALAN: Inte nödvändigtvis. 1432 01:03:45,440 --> 01:03:47,810 Så kanske du gör en medvetet beslut tidigt, 1433 01:03:47,810 --> 01:03:51,930 du kan bara ladda upp bilder på infödd iPhone applikation för Facebook, 1434 01:03:51,930 --> 01:03:56,060 men inte på Android, initialt, till exempel. 1435 01:03:56,060 --> 01:04:00,600 Och det är lite av en vit lögn eftersom webbapplikationer har fler restriktioner 1436 01:04:00,600 --> 01:04:03,620 än hybrid applikationer visar det sig ut, och om vi läser dokumentationen 1437 01:04:03,620 --> 01:04:07,260 för PhoneGap och saker som det, folk har kommit upp med vägar 1438 01:04:07,260 --> 01:04:11,110 att ge webbaserade applikationer åtkomst till kameran, 1439 01:04:11,110 --> 01:04:13,310 så länge du använder en hybrid ansökan. 1440 01:04:13,310 --> 01:04:14,214 >> Hur fungerar det? 1441 01:04:14,214 --> 01:04:16,130 Eftersom hybriden tillämpning, per definition, 1442 01:04:16,130 --> 01:04:19,600 har en bit kod i Objective-C, och Swift, och Java eller i C #, 1443 01:04:19,600 --> 01:04:20,920 den kan komma åt hårdvaran. 1444 01:04:20,920 --> 01:04:24,590 Inte nödvändigtvis allt, men det kan mycket väl 1445 01:04:24,590 --> 01:04:27,310 vara så att du har tillräckligt tillgång för att få kameran, 1446 01:04:27,310 --> 01:04:32,960 även för Android plattformar för Exempelvis i den contrived exempel. 1447 01:04:32,960 --> 01:04:35,515 >> Alla andra frågor? 1448 01:04:35,515 --> 01:04:36,279 Okej. 1449 01:04:36,279 --> 01:04:38,070 Varför tar vi inte vår 15 minuters paus här. 1450 01:04:38,070 --> 01:04:44,060 Vi kommer att fortsätta på tre med en slutlig titta på webbprogrammering, databaser, 1451 01:04:44,060 --> 01:04:45,910 och Java. 1452 01:04:45,910 --> 01:04:48,877