DAVID J. MALAN: Dus zijn we weer terug. Zodat de high-level topic op dit moment nu is technologie stacks, die niet is een bijzonder technische term, het is meer een catch all voor alle aantal combinaties van technologieën dat je zou kunnen gebruiken om problemen op te lossen. En misschien wel het meest passende manier om te beginnen zou zijn om te kijken naar talen sinds Ik blijf opdreunen van een hele hoop en bijna iedereen in de kamer heeft waarschijnlijk gehoord van ten minste één. En dus waarom niet proberen we te onderscheiden what-- te onderscheiden in de volgende talen en praten kort over als je zou doen kiezen voor een over de ander, hoe zijn ze soort van fundamenteel verschillende, en in het bijzonder als je chatten met ingenieurs, of proberen om te beslissen wie in te huren, of wat implementatie voorstel om greenlight, hoe je eigenlijk zou maken dat soort beslissingen. Dus laten we gewoon rammelen sommige dingen uit. Van de talen die mensen hebben gehoord, wat in je opkomt? C. OK. OK, C ++. Wat is dat? PUBLIEK: Python. DAVID J. MALAN: Python. Uitstekend. Wat nog meer? Visual Basic. Ik hoorde Java. Visual Basic-- alias VB. Java. NET, dat is meer een catch all voor wat is meestal C # als taal in kwestie. En laat me dat noemen. Dus we terug naar die komen. Het spijt me? Sorry? PUBLIEK: SQL. DAVID J. MALAN: Scratch? PUBLIEK: SQL. DAVID J. MALAN: Oh, SQL. OK. SQL. Dus we zullen terugkomen om daadwerkelijk dat--, het is goed-- na de pauze ook. Wat nog meer? PUBLIEK: Oracle. DAVID J. MALAN: So Oracle, geen taal. Eigenlijk zouden ze SQL gebruiken als goed. Dus laten we dat na de pauze ook. En sorry, iets meer dan hier? PUBLIEK: Mathematica. DAVID J. MALAN: Mathematica? OK zeker. En MATLAB is een soort van daar soms. PUBLIEK: R. DAVID J. MALAN: R. Laten we gaan hier. Fortran. Tuurlijk. Oudere school. Fortran. COBOL. Ik gooi BASIC. BASIC. Elke-- PUBLIEK: MATLAB? DAVID J. MALAN: MATLAB. Oh, sla je aan het. Iets? Ik kan denken aan een paar anderen. Ik kan denken aan een paar anderen. En wat was de laatste? PUBLIEK: ASP. DAVID J. MALAN: ASP? Ja. Active Server Pages. Dit zou in het algemeen onder vallen andere talen, soms C #, dus laten we laten dat af. Maar we zullen terug te komen op dat voor kaders en dergelijke. Nog iets anders? PHP is populair. Ruby is een andere. JavaScript, niet te verwarren Java, is een andere. Dat is een soort van een partij. Dus het kan zeker overweldigend zijn, alsof de lijst nog niet is, gewoon om te beginnen om te weten waar je begint. En zo gelukkig, laten we benaderen dit van een paar hoeken. Ten eerste, laten we proberen te categoriseren ten minste enkele van deze talen in twee grote emmers, die doet denken aan het gesprek dat we voor rust hadden, waar we spraken over het compileren, en de broncode, en machine-code, want dat is niet hoe alle talen werken. Dus we zullen rukken uit een paar voorbeelden van-- of tegen de examples-- dat model. En dan, waarom doen we niet praten over de toepassingen dat deze talen worden algemeen gebruikt. En eerlijk gezegd, ook al Dit is een vrij lange lijst, het is slechts een subset van deze lijst die zou je meestal trekken uit deze dagen problemen oplossen. Sommige talen zijn nieuwer dan anderen. Bepaalde talen zijn populairder dan anderen. Dus het is niet alsof je zo'n hebt een overweldigende taak voordat u bij de keuze tussen deze verschillende talen. Dus laten we dit doen. We hadden eerder, broncode, en toen moesten we machine code. Whoops. Het schrijven van het verkeerde woord. Machine code. En we hadden een proces in de midden called-- ja, de compiler. Zodat de compiler. En wat de machine code eigenlijk draait op het einde gaat uw werkelijke CPU. Met andere woorden, door machinecode, I betekent het laagste niveau instructies dat een CPU daadwerkelijk begrijpt. Optellen, aftrekken, verhuizen, opslaan en operaties zoals die. En dus dit is het model voor wat bekend als gecompileerde talen. Misschien niet verrassend. Dus dit is het model voor gecompileerde talen. Maar het blijkt er's andere klasse talen riep geïnterpreteerd languages-- geïnterpreteerd languages-- die iets anders. Je schrijft in broncode, draaien ze via een tolk, en dat de tolk is wat draait op de CPU. Met andere woorden, wat je niet emit is wat, blijkbaar? Machine code. De nullen en enen dat de CPU zelf uiteindelijk begrijpt. Dus in deze eerste versie en talen als C, zoals wij zagen, je schrijft in de broncode dat is een beetje mysterieus, maar in ieder geval het is een soort van het Engels-like en het apparaat minimaal leesbaar als je eenmaal aan wennen. Je loopt het door een compiler en uit je krijgt, uiteindelijk, nullen en enen. Dat een oversimplificatie. Er zijn een aantal andere stappen in. In feite, als je ooit hebt gehoord de term "assembler" dat is een stap voor de nullen en enen. Dat een beetje beter leesbaar, maar nog steeds behoorlijk mysterieus. En dus is er tussenstappen dat zijn in feite, hier aan de hand. Maar de output uiteindelijk is deze nullen en enen. Maar in de geïnterpreteerd wereld, waar je talen die worden geïnterpreteerd talen, je eigenlijk sla die stap. Met andere woorden, bij het schrijven programma, je gewoon direct voer het uit. Je hoeft niet compileren en vervolgens uitvoeren, zoals ik eerder deed. Je schrijft het gewoon en voer het uit. En als je wilt een snelle verandering te maken, je maakt een snelle verandering en voer het. Dus is er geen middelste stap hier. Nu, voor het programma dat ik al eerder schreef, die dit programma "Hello World", je misschien redelijk wonder-- of redelijkerwijs state-- dat was niet dat de tijd consumeren mijn programma samen te stellen. Het lijkt te hebben gedaan, net als dat. En er is de grafische versies van compilers. Ik ben met behulp van een zeer geheimzinnige versie, maar je kon een afspeelknop hit en dat zou eigenlijk doen de compilatie voor u. Ik heb het programma samengesteld en vervolgens nogmaals, het uit te voeren, heb ik dit gewoon doen. En het uitgangen aan de linkerkant is er, "Hello!" Dat lijkt niet al die verlieslatend. Maar als je programma's meer dan één, twee, drie, vier, vijf regels lang, het kan nemen veel meer seconden te compileren. Soms zelfs minuten of nogal wat tijd om te compileren. Immers, een deel van de 's werelds grootste producten zijn zaken als besturingssystemen, Microsoft Word, Microsoft Excel, daarvan die honderdduizenden of zelfs miljoenen regels code lang, en die niet alleen direct uit te voeren. Bovendien, op het web, het is tegenwoordig in de mode te gebruiken gewoon geïnterpreteerde talen, voor een deel omdat je kan een verandering als de ontwikkelaar te maken en dan gewoon meteen herladen de browser pagina en direct het resultaat zien. Enzovoort HTML, maar niet een programmeertaal, is een taal die wordt geïnterpreteerd. En we zagen dat hetzelfde effect gisteren. U herladen alleen de pagina na het maken van een verandering van Cloud9 en-- voila-- zie je een nieuw resultaat. Dus wat is het verschil? In HTML, rappel, hadden we geopend HTML, open hoofd, openen de titel, in de buurt titel, dicht hoofd open lichaam, enzovoort. We hadden al deze tags die we behoorlijk veel gezegd, vertel de browser wat te doen. Hey browser, hier komt een HTML-pagina. Hey browser, hier komt de titel. Hey browser, hier komt een aantal tekst die vet moet zijn. En dan is het tegenovergestelde vertellen. Hey browser, dat is het voor de vetgedrukt tekst. Hey browser, dat is het voor het lichaam. Enzovoorts. En wat is een browser? Een browser is slechts een tolk. Het is een programma dat iemand als Microsoft of Google heeft geschreven, waarvan het doel in het leven is lees een taal, die bekend staat als HTML, en interpreteren. Boven naar beneden, van links naar rechts. En elke keer dat de browser ziet geopend beugel, de titel, in de buurt beugel moet interpreteren in die zin, oh, dat betekent dat ik moet deze woorden weg te zetten hier boven in de browser. Dus het doet precies wat de HTML-code zegt. Maar er is geen nullen en enen. Er is geen compilatie. Je hebt het niet te doen. De browser heeft het niet gedaan. Het is gewoon niet bij betrokken. Dus in de geest van deze voortdurende onderwerpen, vandaag en gisteren, dat lijkt een prachtige functie. U bespaart uw code en dan gewoon draaien of interpreteren. Er is geen tussenliggende stappen. Zeker is er een prijs? Kunnen niet allemaal positieve kanten. Dus wat zou dat kosten zijn? PUBLIEK: Space. DAVID J. MALAN: Space. Zo zeker. In de gecompileerde wereld, je hebt niet alleen de originele broncode, bent u ook het creëren en dan vermoedelijk besparing de machine code-- de nullen en ones-- en dat is moet nemen bepaalde hoeveelheid ruimte. Absoluut. Dus het kost je meer ruimte. Ja? PUBLIEK: Browsers misschien interpreteren anders. DAVID J. MALAN: Browsers misschien interpreteren het anders. Dat is waar. Maar ik weet niet of ik ben comfortabele claimen dat komt omdat het wordt uitgelegd. Dat is meer gewoon omdat het een implementatie van een taal dat zelf dubbelzinnigheden. Dus laten we niet helemaal bevestigen die ene, maar goed voorgevoel. Wat anders zou de prijs te betalen? Andrew? PUBLIEK: Je bent een combinatie van twee stappen, zodat u dus hebben toenemende complexiteit ook. DAVID J. MALAN: The complex-- de toename van complexiteit wanneer? Voor wie? PUBLIEK: Dus, in de tolk stap, bent u het combineren van de tolk en compiler voor slechts de aanloop to-- DAVID J. MALAN: Ah, OK. Ironisch genoeg, het is waarschijnlijk een beetje eenvoudiger de interpreter voeren, hoewel het lijkt opbrengst positieve kanten van dit gemak. Dus misschien waar. Maar het soort hangt, I wil zeggen op de taal en over de wijze waarop zij gingen over de uitvoering ervan. Er kan veel meer complexiteit, feitelijk, in de compiler, gewoon omdat je moet gaan uit iets zo hoog niveau om iets te zo laag niveau. Maar een goede gedachte. Dus zet een andere manier, een gecompileerd programma, toen omgezet in deze nullen en enen, komt in de taal dat de CPU spreekt terwijl in deze kant van de wereld, het programma dat u hebt geschreven, de code die u hebt geschreven, nooit echt wordt omgezet in de feitelijke taal de computer spreekt. De nullen en enen. Het blijft in de oorspronkelijke, menselijker vriendelijke, meer leesbare taal. Dus wat zou de implicatie zijn daar, als je niet echt moeite het omzetten van uw programma om de taal dat de onderliggende computer spreekt? PUBLIEK: Might niet iets te begrijpen? DAVID J. MALAN: Might iets niet begrijpt. En dat kan claim-- als het niet begreep iets, dat is een bug of een gebrek van functie in de tolk. Zodat zou zijn van een fout dan een kostenpost. Doelgroep: U heeft toegang om de broncode? DAVID J. MALAN: Er is een goede. Dus een nadeel hier is dat je lijkt toegang hebben. U, de eindgebruiker, kan lijken op hebben toegang tot de broncode. En dat is niet altijd waar. Maar het is waar in het geval van JavaScript, die we zullen kijken na de pauze vandaag, die is een geïnterpreteerde programmeertaal die je schrijft in de broncode. Maar dat de broncode wordt overgedragen van uw server naar de browser en loopt in de browser van de mens. Dus hier kon ze gewoon open de venster, zoals ik heb gedaan in Chrome, en kijk naar het, zoals we onszelf keek gisteren met Google. Het is misschien een beetje te kijken onbegrijpelijk maar het is er. Dus dat is absoluut een prijs betaald. PUBLIEK: Prestaties hit? DAVID J. MALAN: Yeah. En dat is de andere biggie. Er is een performance hit. Omdat u dit middelste man, die zelf is een programma tussen u en de CPU, in tegenstelling gewoon voeding van deze ruwe nullen en enen in de CPU, er is een performance hit die je nemen met een geïnterpreteerde taal. Zodanig dat willekeurig een programma dat zou een seconde te nemen voor gebruik op een computer of een minuut om te draaien op een computer hier, misschien 10 seconden of 10 nemen minuten uitgevoerd op een computer in. Het is over het algemeen niet van plan te zijn dat veel van een difference-- factor 10-- want er is optimalisaties die je kunt doen. Maar het is bijna altijd langzamer. Nu, de keerzijde van die zorg is dat goed computers, elk 12 tot 18 months-- volgens De wet van Moore, om zo te speak-- zijn gewoon sneller en sneller krijgen. Ik heb meer en meer schijfruimte. Ik heb meer en meer RAM-geheugen. Wie geeft er echt om? En dat is een soort van een redelijk argument. Inderdaad, een van de redenen waarom we langzamer kunnen tolereren geïnterpreteerd talen is omdat wij mensen niet echt merken. De computers gekregen net zo verdomd snel. Overwegende dat terug in de dag, in het bijzonder toen hardware was veel meer beperkt, je had minder van alles, het was veel duurder dus alles kosten meer, nou dan je echt wilde squeeze out zoveel prestaties als je kon. Dat vereist schriftelijk een lager niveau, als je wil, met een gecompileerde taal. Dus doe je neemt deze voorstelling hit. Maar over het algemeen, de positieve kanten lijken de moeite waard deze dagen te zijn. Goed, behalve de intellectuele eigendom kwestie. Dat soort leesbaarheid van de code, zullen we terug te komen wanneer we kijken naar JavaScript. Dus laten we proberen te categoriseren ten minste enkele van deze. Dus onder de gecompileerde talen, we zou hebben C, C ++, soort, sorta, Java, hoewel het een beetje een uitzondering, voor redenen waarom ik zal je laten zien in slechts een moment. C # zou op deze lijst. We kijken naar meer precies op de meer moderne talen. Okee. En dat lijkt genoeg daar. Overwegende dat aan deze kant van het hek, we kunnen JavaScript en Python hebben, en PHP en Ruby. En is dat genoeg voor de meer recente? Dat voelt als genoeg voor nu. OK. En dan dot dot dot, omdat de lijst is eindeloos. En in feite, als we willen gewoon krijgen een gevoel van dit-- Wikipedia, gecompileerde talen. Ik gok dat we een krijgen veel meer uitputtende lijst. Dus hier gaan we. Dus hier is een veel meer volledige lijst. En ik hoopte dat iemand zou D denk als een taal, omdat die ook bestaat, maar ze stopten bij D lijkt. Hoewel er eigenlijk misschien wel een E. Oh, eigenlijk, moet dit op de lijst van deze dagen. Swift is eigenlijk een taal die Apple uitgevonden dat nu gebruikt, steeds dus, in iPhone ontwikkeling. Maar we zullen terug te komen op dat met onze discussie van de mobiele in slechts een klein beetje ook. Dus Swift ook. En dan als we naar geïnterpreteerd language-- geïnterpreteerd language-- dan is hier een nog langere lijst ook. Dus als je gewoon google en kijk op Wikipedia voor deze, je zult allerlei talen te bekijken. Maar het doel is, voor vandaag echt, net komt erop neer dat misschien is dit kwestie van de intellectuele eigendom en leesbaarheid door de eindgebruiker en de prestaties, is een biggie ook. Dus bij deze talen, laat me zien als we u kunnen geven slechts enkele voorbeelden van talen. We willen niet te gaan door alle talen eindeloos. Heb je je ooit afgevraagd wat een bepaalde taal eruit ziet? We zagen een moment geleden. Waarom gaan we niet nemen een koppel van kenmerken verzoeken. Wie wil om te zien wat andere taal eruit ziet? Ja. PUBLIEK: Java. DAVID J. MALAN: Java. Okee. Dus laten we naar Java. En alleen maar om u een sample-- geven we konden al deze uitschrijven, maar het zou sneller alleen maar om kijken naar iemand anders voorbeeldcode. Okee. Dus dit is een goed voorbeeld? Whoops. OK. Dus hier is de Java-versie van de programma dat ik al eerder schreef, "Hello World." Dus Java, zul je vaak zie de "class." keyword Dan heb je een naam daarna te zien. Je ziet accolades zoals we eerder zagen, en soms gaan ze op de dezelfde lijn, soms ook andere lijnen, het is een soort van een persoonlijke beslissing. Je ziet zoekwoorden als "Publiek" "static", "ongeldig". Maar we zagen "main." "Main" is over het algemeen de naam van de standaardfunctie of de standaard stuk code die wordt uitgevoerd in een programma. "Draad." Wat hebben we bedoelen met touwtje eerder? Ik gebruikte het soort terloops. Een string is wat? Een woord. Het is net als een reeks tekens. Individuele tekens, terug naar rug aan rug, meestal in een array, zoals we hebben besproken. En in feite, zie deze syntax Hier zijn de twee haken? Dat betekent, hey computer, hier komt een array van strings. De beugel vierkante notatie vaak gebruikt om aan te geven dat. En dan kun je waarschijnlijk neem een ​​guess-- wat betekent dit gemarkeerd stuk code waarschijnlijk doen? Publiek: De output? DAVID J. MALAN: Yeah. Hij drukt iets naar het scherm. Dus "systeem" is een soort van een verwijzing naar uw computer. "Uit" betekent dat uw computer uitgang of het scherm. Dus "System.out.print ln" betekent waarschijnlijk? "Ln". Print lijn die programmeurs als schijnbaar spellen sommige woorden uit in hun geheel en nemen snelkoppelingen met andere woorden. Maar "ln" is lijn, zo druk lijn. Dus het wordt afgedrukt "Hello Wereld! ", Gevolgd door een nieuwe regel. Dus dat is het. Maar Java is wat ze zullen call-object-georiënteerd. En inderdaad, om er maar een te geven paar andere definities er zijn, dat je misschien zie, in het algemeen, is er zijn vele verschillende soorten talen, maar de meest voorkomende zijn procedurele of imperatieve talen. Er zijn functionele talen, zonder nochtans betekenen dat anderen zijn niet-functioneel. En dan is er Objectgeoriënteerde talen. En dit is misschien wel de beste indeling van de meeste talen dat je ooit zou kiezen voor sort van een typisch commercieel project. Dit zou te veel zijn, Ik denk dat, van het gat van een rat naar beneden te gaan, om te proberen uit te leggen de verschillende verschillen. Maar de talen we hebben dus far-- C gezien is een procedurele of een imperatieve taal. Meer recent uitgevonden talen de neiging om, sorry, objectgeoriënteerde, waardoor ze andere eigenschappen om hen. Kan ik het uitleggen op deze manier? Laten we er niet eens naar beneden gaan. Object-georiënteerde middelen u kunt implement-- U kunt de echte wereld te modelleren iets effectiever. De mensheid, na verloop van tijd, heeft bedacht, wow, het zou leuk zijn als mijn taal zou zijn had deze functie of die functie. En dat is waarom we hebben zo vele talen in de wereld. Redelijke mensen, slimme mensen, het eens of oneens en altijd een soort van komen samen op het ontwikkelen van nieuwe talen allemaal samen. Case in point. Apple uitgevonden Swift in hoop van vermoedelijk verlagen de bar om iPhone ontwikkeling, omdat de vorige language-- genoemd Objective-C, waardoor ook op onze lijst hier-- was veel meer geheimzinnig en nog veel moeilijker om de geest rond te wikkelen. En als de programmering wordt steeds aantoonbaar toegankelijker en meer in het algemeen door mensen zelfs aangenomen minder technisch, de goal-- het is een zeer moedige doel om te proberen verlaag de toetredingsdrempel door het maken van talen zelf gemakkelijker aan de slag met, maar niet minder krachtig noodzakelijk. En één andere taal. Waarom gaan we niet een kijkje nemen bij zoiets als Python, die is heel erg in de mode deze dagen. Python. Monster programma. Laten we eens kijken. "Hello World" talen. Laten we dit doen. "Hallo Wereld." Laten we eens zien of dit geeft ons een mooi voorbeeld. OK. Dus dit is eigenlijk wel leuk. Dus als je ooit google "Hello World", die toevallig een van de eerste programma's ooit in een moderne taal geschreven, net als een proof of concept, kunt u zien allerlei implementaties van deze. Sommige van deze talen Ik heb niet eens gehoord. Maar je kunt see-- laten we naar Basic, degene die ik jaren geleden geleerd, voor een deel. Dit was een leuke taal, omdat je moest, als programmeur, nummer al uw lijnen. Niet in tegenstelling tot wat ik was het doen toen ik aan het schrijven was pseudocode op de gele document eerder voor binary search, voor het zoeken van een telefoonboek. En dus, als je wilde om te gaan naar een andere lijn, zou je letterlijk typt, ga naar 10, of ga naar 20. En als je het schrijven van lijnen, de conventie was te doen, dit is lijn 10, Dit is lijn 20, is dit lijn 30, 40, met niets ertussen, waardoor het geven van jezelf wat ruimte als je besluit, wacht eens even, Ik moet een aantal toegevoegd meer code ergens. Je had nog een soort van negen kansen om knijp die tussen uw programma voordat je moest handmatig hernummeren alles. Dus dit is een soort van wat ik bedoel als ik zeg dat de wereld is gekomen met nieuwe functies. Ergens langs de manier waarop iemand besefte, jongen dit is dom. Dit is gewoon het creëren werken voor de programmeur. Zodat hij of zij gewoon een soort van ingebouwde een nieuwe laag op de top van dat zodat je geen zorgen te maken over welke lijn de nummers van uw code eigenlijk op. Dus wanneer kunt u ervoor kiezen één taal of een andere? Nou ja, welke van deze talen heb je de neiging te horen over de meest in je eigen wereld tegenwoordig? Laten we drop-down Objective-C ook. PUBLIEK: C #. DAVID J. MALAN: C #. Dus laat me kleur. Hebben we onze andere kleur ergens? Dus C #. En wat weet u over C #? Alles wat de lente voor de geest? PUBLIEK: Het is een programmeertaal. DAVID J. MALAN: Het is een programmeertaal. OK. Dat is waar. Dus we hebben het over C #. C # vaak wordt gebruikt Windows-omgevingen, dus als je het schrijven van Microsoft-software voor Windows, is C # zeer vaak gebruikt, of het nu voor desktop software, of zelfs telefoon software op Windows-telefoons, Als je die hebt gehad, of op het web, zelfs ook. En in feite, misschien Kareem bovengenoemde ASP eerder? Dus er is ook deze dingen riep kaders, die we kunnen introduceren in het verlengde daarvan. Frameworks, zoals ASP. Staat voor Active Server Pages. En dit is code en een manier van programmeren dat algemeen gemakkelijker naar web-based applicaties te schrijven. Met andere woorden, zou het super zijn, super irritant om een ​​website te schrijven in de taal C die we hebben eerder gezien, want je zou moeten print + F gebruiken, je zou hebben om dat zoekwoord gebruiken "Main" en de accolades. Veel van de geheimzinnige syntax en aanpak uit te voeren iets dat vrij complex. Een webpagina. En zo andere talen zijn geëvolueerd om dat soort dingen gemakkelijker te maken. En op hun beurt, hebben de mensen komen met kaders, een soort gereedschap die u kunt gebruiken die het nog gemakkelijker om webpagina's te schrijven. Dus bijvoorbeeld om dit veel concreter, laat me open te stellen maar een tekstbestand voor een moment. En je zou gisteren herinneren dat we iets gezegd als, dit is een webpagina. HTML. Sluit HTML. Laat ik sla de kop en gewoon doen het lichaam hier. Stel dat ik wilde schrijf niet "Hello World" maar 'Hallo David, "waar David is de naam van de ingelogde gebruiker. Wat iets als ASP zal doen, of JSP-- dat is Java server pages-- of een aantal andere frameworks is ze niet talen, per se. Ze zijn net als extra software die u zou installeren in uw omgeving die net het makkelijker om programma te maken. Dus bijvoorbeeld plaats hoeft zoiets als "hallo, printf (" David ")" of iets dat soort van co-mingling-- de aard van de code die we hebben gezien before-- je zou iets veel eenvoudiger te doen, zoals "de naam%." En dus deze kaders, zoals ASP-- en ik kan me niet herinneren wanneer ik krijg de syntaxis precies goed voor ASP. JSP is een little-- is dit recht? Dus met ASP, is soort van een speciale syntax dat sommige ontwikkelaars hebben besloten dit kan mensen helpen. En ik kan beknopter uitdrukken placeholders, bijvoorbeeld. Net zet hier een waarde, waarbij deze naam waarde niet N-A-M-E, het is enige waarde opgeslagen in daar. Dus "naam" in deze context, we zouden een variabele noemen. Algebra heeft variabelen zoals x en y en z. Programmeurs gebruiken variabelen die meer beschrijvende dan x, y en z, typisch. Dus "naam" zou letterlijk een soort zijn geheugen container voor iets als D-A-V-I-D, voor mijn naam, of wie dan ook anders is ingelogd op de website. En dus dit is het soort gemak je krijgt met bepaalde omgevingen. Dus C # en iets als ASP zou zeer gewoonlijk worden gebruikt in een Windows wereld, of voor zijn desktop software of web server, vooral als uw servers zijn op hun beurt Microsoft Windows en Microsoft IIS-- of Internet Information Server, als ik het acroniem right-- dat is Microsoft's webserver. Dus wat andere talen zijn mensen bekend zijn met, of heb je ooit gehoord vaker dan niet? Publiek: Ik weet dat Python's een soort van een populaire [ONVERSTAANBAAR]. DAVID J. MALAN: Zeer populair. Dus Python hier wordt zeer vaak gebruikt in wetenschappelijke toepassingen of data wetenschap, waar je veel van de gegevens die u wilt analyseren en u wilt gebruik maken van een programmeertaal voor het. R kan gewoonlijk te hanteren ook, in een statistische context. Maar Python heeft zoveel functies ingebouwd. Zoveel extra bibliotheken, als mensen zeggen. Bibliotheken zijn slechts verzamelingen code die andere mensen schreef dat u, zodat u kunt gebruiken hoeft niet die wielen opnieuw uit te vinden. En zo Python is zeer vaak gebruikt in data biotechnologische toepassingen. Maar het is ook zeer vaak gebruikt in web applicaties. U kunt implementeren van een dynamische website met behulp van Python. En door de dynamische website, I bedoel niet alleen statische content zoals wij gemaakt gisteren, door gewoon moeilijk codering in de Latijnse tekst en andere dergelijke zaken, maar de mogelijkheid om in te loggen, de mogelijkheid om te kopen iets, de mogelijkheid om te controleren met uw winkelwagentjes, of iets dergelijks. Dat alles vereist dynamiek en u need some taal als een van hen. Publiek: Dus heeft Python eigen extensie, vergelijkbaar met graag [ONVERSTAANBAAR] DAVID J. MALAN: Het doet. Dus in de wereld van de Python, Django is een zeer populaire framework voor Python. WSGI is een ander mechanisme dat soort van verschillende van deze maar vergelijkbaar in de geest. Het is een add-on die u toelaat Python code uit te voeren op een server. Er is other-- ja. Dus zullen we deze kaders noemen. En het is een beetje een mishandeling. Dit is meer van een web-server-technologie. Maar we zullen het simpel te houden en zet Het in deze kolom toch. OK. WSGI. WSGI. Een ander thing-- en eigenlijk, laat ik stel voor dat aan zijn eigen column, want ik zou schreeuwen tegen mezelf ze in dezelfde emmer. Laten we dit in server features, laten we zeggen. Dat is niet een technische term. Dus hier zijn we misschien WSGI. Er is CGI, die een ouder techniek voor het serveren talen zoals Perl of PHP, of sommige anderen. Nogmaals, ik heb deze voorwaarden genoemd niet zozeer om hen een soort van ingrain, maar zo dat als je ziet hen is het iets je gewoon google om meer te lezen. Er is geen echte sap een aantal van deze dingen. Maar laten we teruggaan naar de talen. We spraken over C #, Python. Wat anders zou je gebruiken voor web programmeren van deze dagen? Laten we focussen op dat nog steeds. PUBLIEK: PHP. DAVID J. MALAN: PHP. En laten we terug naar die ene komen. Dus PHP wordt zeer vaak gebruikt. PHP heeft de neiging om een ​​slechte rap te krijgen. Het begon als een taal geïmplementeerd door mensen die misschien per se niet de beste taal ontwerpers. En dus kan je allerlei gelezen artikelen over hoe slecht PHP is online. En dit is helaas een manifestatie deels van alleen de religieuze debatten dat uitbarsten onder programmeurs. En dit is iets de moeite waard om in het achterhoofd, vanuit een zakelijk perspectief, dat het is heel gemakkelijk om technische mensen alles werkte met om hun adviezen over bepaalde dingen. En het betekent niet noodzakelijk dat degene schreeuwen het hardst of met de sterkste, kwaadste mening heeft gelijk. Een heleboel keer, het is echt gewoon doet er niet toe. En dus mensen zijn gewoon ruzie ongeacht hun eigen vooroordelen of comfortzones zijn. En dus je moet houden dat in het achterhoofd bij het maken van een beslissing, die net omdat iemand zegt: dit de juiste taal het werk, dat waar zou kunnen zijn, maar ook gewoon zou kunnen zijn is het de juiste taal binnen hun eigen vaardigheid instellen of comfort zone. Dat is niet slecht, maar u dient zich te realiseren dat er een verband is er zou kunnen zijn. Er zijn een aantal objectieve verkeerde uitspraken, zoals C is de verkeerde taal te gebruiken deze dagen voor de uitvoering van websites bijna altijd. Maar het is niet onredelijk zeggen dat een van deze zijn verkeerd dat we tot nu toe hebben omcirkeld. PHP is gegaan door vele versies. Dus talen hebben de neiging om versie hebt nummers in verband met hen. PHP is aan, denk ik, versie 7 nu, dus het is er al geruime tijd. En zoals talen krijgen nieuwere, ze krijgen vaak nieuwe functies. Maar je moet rekening houden met deze te zijn want als uw website is geweest geïmplementeerd in versie 7 van PHP, maar je probeert om uw website uit te voeren, of misschien heb je uitbesteed de ontwikkeling van uw code aan iemand anders en ze mailen het aan u of stuur het naar u en ze zeggen, hier, zet deze op uw webserver, Als uw webserver is een paar jaren outdated-- of het nu je eigen server of een web host-- het is misschien niet echt uit te voeren. Dus dit zijn de soorten van de dingen die iemand moet zich bewust van te zijn bij het upgraden van een site of de uitvoering van het voor de eerste keer. Ik JavaScript hoorde eerder. Dus JavaScript is een interessant een op zich in beginsel client-side, zoals we zullen zien na de pauze, die betekent dat het draait in de browser van de gebruiker. Maar je kunt ook lopen JavaScript deze dagen met behulp van een zogenaamde Node.js, waarbij Node.js is een mechanisme voor het uitvoeren van JavaScript-code server-side, in plaats van het gebruik van Python, of PHP, of andere dergelijke talen. JavaScript is bijzonder geschikt voor chat applicaties en real-time toepassingen, terwijl PHP is niet een grote taal voor de uitvoering van iets zoals een chat-server, waar de gebruikers verbonden te blijven met het constant. PHP is meer een bezoek me een keer, terug te krijgen een resultaat, en klik vervolgens op een andere link sommige seconden of minuten vanaf nu. Overwegende Node.js en JavaScript kan worden meer voor permanente verbindingen gebruikt. Andere talen die u vermoedt worden vaak gebruikt voor het web spullen? PUBLIEK: Zou jQuery zijn een kader? DAVID J. MALAN: Goede vraag. Noch. Ik zou jQuery noemen een bibliotheek, waar de wederom een ​​bibliotheek is gewoon een stelletje code dat iemand anders heeft geschreven die over het algemeen lost aantal storingen maakt het hopelijk gemakkelijker voor u om uw werk te doen. En laat me u een voorbeeld van dit in de context van de baan. In de context van de baan er deze taal, JavaScript, dat we later zullen zien, waarbij je misschien iets als dit-- zeggen "Document.getElementById." En wat heb ik noem het gisteren? Ten eerste, denk ik, was de unieke ID ik gaf een element die eruit zag als dit. "P id =" eerste ">" en toen moesten we zoals "lorem ipsum", et cetera. Dus als ik een programma in te schrijven JavaScript om een ​​of andere manier te manipuleren, verander de webpagina's die we speelden met gisteren, Ik zou dit gebruiken gemarkeerde regel code op die specifieke stukje HTML te krijgen uit mijn pagina die specifieke knooppunt, zoals we zullen noemen. In jQuery, in plaats van het schrijven dit, dat is rauw JavaScript code-- net uit de doos, dat is hoe je schrijf het-- zou je in plaats daarvan alleen maar zeggen, "#eerste." Dat is equivalent. En dus alleen gebaseerd op deze zeer geheimzinnige Bijvoorbeeld, wat misschien is het argument voor het gebruik van jQuery? Waarom zou een ontwikkelaar gebruik maken van een bibliotheek als jQuery, op basis van deze geïsoleerde voorbeeld, misschien? PUBLIEK: Minder code. DAVID J. MALAN: Yeah. Het is minder code. Het is gewoon sneller te typen. Het contrapunt is dat het lijkt enger. Je kunt niet echt lezen van links naar rechts. In feite, want het is meestal punctuatie nu in plaats van de werkelijke woorden, Ik kan soort afleiden dat "Document.getElementById" krijgt een element uit het document door zijn ID. Ik kan echt geen dergelijk gebruik mnemonics van dit ding hier. Dus het is een afweging. Er is een verfijning die komt vaak met behulp van bibliotheken, met name zoals jQuery. Maar de realiteit is jQuery heeft soort van uitgegroeid tot een de facto standaard, zodat bijna iedereen deze dagen die JavaScript-code schrijft maakt gebruik van jQuery of zoiets leuk vinden, en niet langer schrijft zo'n verbose uitdrukkingen als , want nogmaals, de mensheid heeft geleerd, wow, dat was soort van een gemiste kans om ons leven gemakkelijker te maken. Dus mensen maken hun leven gemakkelijker te maken. Goede vraag. Andere talen te overwegen. Ik zou zeggen dat het midden van deze lijst Ruby is heel populair. En zo in de wereld van Ruby, is er een raamwerk genaamd Rails, die erg populair is. Dus Ruby on Rails is een gebruikte uitdrukking. Ook in deze wereld, laat me cirkel Java voor web stuff, waar in de wereld van Java je zou JSP of Java hebben Servlets, die een gemeenschappelijke technologie. En dit is gewoon weer manieren om die taal in een serveromgeving. Dus wat betekent dit? Als u een fysiek hebt server, zou je letterlijk downloaden van de web server software en installeer het op een zodanige wijze dat u ondersteuning voor een van deze kaders, waarmee je kon op zijn beurt gebruik maken van één of meer van deze talen. En in werkelijkheid, als u zich aanmeldt voor zoals een webhost of een deel van de cloud diensten die wij spraken gisteren, vaak het spul net wordt geleverd met de configuratie machine voor u. Je hoeft niet nodig om deze handmatig in te stellen. Maar als je dat deed, dit is waar de rol van de systeembeheerder, om zo te zeggen, in het spel komt. Hij of zij daadwerkelijk zou doen dit soort dingen voor u, of de zogenaamde master zou dit vaak voor u doen. Okee. Heeft u vragen over een aantal van deze hier? Of mogelijkheden op alles te vragen over talen? Frameworks? Dan laat ik me even slechts één andere bibliotheek Dat is ook heel gebruikelijk deze dagen. Deze lijst kan oneindig doorgaan. En deze bibliotheek is een soort van te beginnen uit de gratie te vallen. Het is al rond. Het werd gepopulariseerd door Twitter voor bepaalde tijd. En nu tal van websites, veel ontwikkelaars gebruiken. Maar nieuwe dingen komen out en langs komen. Maar laat ik geef je een gevoel van wat het betekent om een ​​bibliotheek te gebruiken. Dus nogmaals, JavaScript is een zeer populaire taal. CSS of Cascading Style Sheets, hebben we gesproken over gisteren. Ook dat is alomtegenwoordig. Niemand maakt een webpagina vandaag zonder gebruik van HTML en CSS minimaal. Maar het is niet altijd gemakkelijk om bepaalde dingen te doen. En dus laat me gaan naar getbootstrap.com. Whoops. Dat is niet de manier waarop we spellen. Getbootstrap.com, die gaat me te leiden naar de landing page van deze bibliotheek. Dus ze royaal noemen zelf een kader, dat is een soort van een soort van eerlijke, maar ik zou nog steeds het noemen meer een bibliotheek dan een kader. Maar dit zijn slechts discutabel semantiek. Laat me gaan om hun tab CSS en laat me gaan naar iets als dit. Dus herinneren wat onze formulieren keek zoals gisteren op Cloud9? Het was behoorlijk lelijk. Old school knoppen. Ik denk dat de knop was grijs door standaard. En alles was echt geformatteerd heel slordig. Dus als u wilt dat uw webformulieren te kijken een beetje nicer-- laat me in te zoomen hier. En mooier ik eigenlijk alleen maar bedoel zeer nitpicky esthetiek. Dus zien hoe de e-mail box moet er een afgeronde rechthoekige hoeken aan. Dus het is een beetje schoner daar. Merk op dat het woord e-mail is daar tot ik begin te typen en dan gaat het weg. Dus dat is een leuke feature. Merk op hoe het ding is een soort van gloeiende mooi, die een aantal van deze u gratis te krijgen van uw browser, maar dit is ook bibliotheken, code dat andere mensen geschreven dat u dit geven. Iets zoals dit geeft me mijn wachtwoord. Deze knop is een beetje sexier dan de standaard. Zeer veel nu in zwang. Sinds iOS 7 of zo, de wereld heeft gekregen zeer vlak, terwijl de wereld gehad veel slagschaduwen, veel reflecties op de pictogrammen. Net als in de kleding wereld, er is modetrends die komen en gaan. Nu is alles plat op je telefoon. In feite, knoppen op je iPhone zijn nu slechts blauwe links. Er is niet vaak eens ronde knoppen. Dus dit zijn slechts dingen die verder gaan in en uit van Vogue, en dus dit is hoe je misschien een meer modern uitziende webformulier. Toetsen. Dus Bootstrap heeft veel mooie knoppen. Dus als je wilt blauwe knopen, groene knoppen, blauw, oranje, rood. Bootstrap maakt het makkelijker om deze dingen te doen. Dit zijn het soort dingen dat je kon absoluut gisteren hebben gedaan met CSS en met HTML, maar het is gewoon een pijn in de nek. En dus in plaats, wat zou Bootstrap moet je doen is iets als dit. Als je wilt dat een button-- blijkt dit is een HTML-tag we niet gebruiken yesterday-- en u wilt kijken als deze groene knop, je letterlijk geef het een klasse, die hadden we praten over gisteren, van "btn btn-succes." Waarom die woorden? Twitter, de auteurs van Bootstrap, kwam met die woorden. Ze konden hebben opgeroepen ze wat ze willen. Maar wat je nu krijgt is iemand anders bij Twitter, in dit geval, heeft bedacht hoe maak je een knop kijken mooi en schoon en groen. Ze verpakt die functionaliteit in een CSS-klasse, genaamd "btn" en "btn-succes", zodat ieder van ons kan gebruik het nu zonder zelfs maar te denken over het. Dus ze hebben weg geabstraheerd het begrip groene knop zodat we niet zorgen te maken over de uitvoering ervan onszelf. We kunnen eigenlijk richten op de uitvoering dingen van belang voor ons. Als we hier scroll naar beneden. Foutmeldingen op het scherm. Soms wil je een klein bericht weergegeven op de bovenkant van de browser. Elk van ons kan dit doen met een aantal inspanning, na de les van gisteren, maar waarom zou je de moeite? Dat is zo'n oninteressant esthetische detail. Laten we staan ​​op de schouders van Bootstrap en men geve ons van dit soort dingen, waar we letterlijk, een rode doos te krijgen, hoeft alleen een paragraaf te doen tag met een klasse van-- sorry. "BG-gevaar" zou ons geven dit roodachtige box plaats. Laten we nu naar de meer interessante dingen. Als ik ga terug naar de top van deze pagina en ga naar Componenten, nu de wereld wordt nog interessanter. Bijvoorbeeld, heel gebruikelijk is drop-down menu's als deze. Dit zou een absoluut zijn pijn te implementeren. En het was niet zo lang geleden dat we programmeurs zouden deze uitvoering soorten menu's vanaf nul. Maar het is een dergelijk gemeenschappelijk paradigma dat bibliotheken als Bootstrap geef je de mogelijkheid om een ​​te maken drop-down menu veel, veel gemakkelijker. Er is niet een manier om het te doen, maar als ik lees de documentatie Ik wil zien dat, OK, moet ik gebruiken deze HTML als ik wil een drop-down menu die zich gedraagt ​​als dat. Op dezelfde manier, laten we naar de knop drop-down. Dus dit is zelfs liefhebber. Als ik wil dat dit eruit ziet als een knop maar dat kleine driehoekje betekent Ik zou klik erop en krijg dit menu, is het gebruik van een taal JavaScript genoemd. En we kunnen allemaal uit te voeren dit in JavaScript. Maar nogmaals, dit is een wiel je wilt niet opnieuw uit te vinden. Je wil gewoon om het opstijgen de plank bibliotheek voor. Laten we naar iets zoals vooruitgang bars. Dus zoiets als dit is een soort van cool. Als je ooit een vooruitgang hebben gezien bar te bewegen over het scherm, uitvoering die vaak is gewoon een spinning icoon. In feite, net als een terzijde, laat ik ga naar Ajax-- wat is het? Ajax info? Whoops. Ajaxinfo. Laat me herinneren het adres. Daar gaan we. Dus als je ooit wat animatie heb gezien terwijl de pagina wordt geladen, of denken, of op te slaan, of het creëren van iets, je misschien zoals animaties zoals deze te zien. Dus laten we eens kijken naar iets zoals deze hier, en laten we kiezen voor een voorgrondkleur van groen, die een soort vriendelijke voelt. Kan ik dit op? Kom op. OK. We zullen gewoon gaan met rode omdat dat is wat we krijgen. Dus hier hebben we het. Dus als je dit ooit hebt gezien op een scherm, waarbij plotseling verschijnt en vervolgens plotseling verdwijnt, wat is dat is de uitvoering van die? Nou, dit is gewoon een GIF. G-I-F. En dit is een geanimeerde bestand, dat betekent gewoon het is als een oude school stripboek. Er is gewoon een heleboel verschillende frames die gaan [STOTTEREN] en gewoon herhalen. En het is het creëren van de illusie van beweging. Dus zodra een pagina wordt gedaan laden of iets te doen, wat doet een programmeur doen? Nou ja, hij of zij verbergt alleen deze afbeelding. Dus al een voortgangsbalk is een soort of graag een film die je kijkt. Je bent een soort van niet bewust van het feit dat het om het even wat eigenlijk niet doet, het is gewoon bewegen. En dan, wanneer het klaar vordert, zij verbergen ze gewoon of uitzetten. En dat is de magie dat gaat daar op. Bootstrap geeft u iets een beetje liefhebber, waarbij je kan eigenlijk zie je een percentage als het gaat, maar ook het is gewoon soort van een eenvoudige animatie. Laten we eens kijken naar een aantal definitieve complexere voorbeelden. Zoiets als een modaal. Weet iemand wat een modaal is? Een modaal venster meestal een die wordt verondersteld de controle over de voorgrond te nemen en voorkomen dat u iets anders te doen. Het soort dwingt de gebruiker aandacht naar het midden van het scherm, vergrendeling ze uit, meestal, van al het andere. Dus als ik te lanceren deze demo, de scherm wordt over het algemeen grijs. Nou, hoe kunnen we het grijs? Nou ja, we waarschijnlijk gewoon veranderde de achtergrondkleur zoals wij deden gisteren of zoiets. Misschien is het een overlay dat semi-transparant. En nu merk je kunt doen buitensporige dingen zoals dit. Dus als je ooit op een knop en willen een beetje pop uit te verschijnen, je kan dat doen. En dus who cares over all-- ja? Publiek: Dus met Bootstrap, om het te krijgen opgenomen, is het zo eenvoudig als gisteren we hebben de pagina CSS-stijlen? DAVID J. MALAN: Inderdaad. Echt goede vraag. Laat me gaan naar de slag. En ja. Het enige wat je hoeft te doen om gebruik Bootstrap is in wezen kopiëren en plak deze drie lange rijen code in de bovenkant van je eigen web-page-- het hoofd van uw page-- en je bent up and running. En er zijn verschillende manieren om , maar dit zou de eenvoudigste. Dus wat is behulpzaam over dit alles? Nou, als je niet zo veel de uitvoerder van een website maar je probeert om het te ontwerpen, of wilt u iemand te bieden met draadframe diagrammen zogezegd, of vertolkingen van wat er net kunstenaar je wilt doen, ik, om deze dag, zal vaak naar een site als Bootstrap, waar als ik willen something-- implementeren zoals onlangs op de campus we wilden implementeren een web-based tool voor het navigeren Harvard studiegids, waardoor het makkelijker voor studenten om te bladeren door middel van cursussen en cursussen toe te voegen boodschappenlijstje, om zo te zeggen, van de soort te beslissen wat ze wilden nemen. Ik probeerde voor te stellen voor mijzelf, welke ingrediënten zou we willen gebruiken om dit te bouwen? Wat zou de user interface zijn? En net kijken door een site als deze of andere dergelijke bibliotheek plaatsen, kunt u inspiratie op te doen, want wow, Ik kan deze widget en deze widget gebruiken, en deze widget. En dan echt wat de programmeur begint te doen, vooral in deze dagen in dit meer moderne wereld van het web programmeren, is de programmering is in toenemende mate over elkaar bedrading dingen. Soort van het nemen van deze uit de kast, deze uit de kast, dit uit de kast, en u zijn de slimme al die punten te verbinden, maar uiteindelijk iets op te bouwen door weer staande op de schouders van anderen, zodat je niet beschikt over een maand te besteden implementeren van een domme drop down menu, dat is eigenlijk moeilijk om te doen als je wilt dat het werken op Chrome, en IE en Firefox, en eventuele aantal andere browsers. Dit is de reden waarom er deze rijke commerciële en open source software industrie. PUBLIEK: Betekent Bootstrap bijgewerkt en je moet dan uw links? DAVID J. MALAN: Het doet. Nou, ja, het doet. Bootstrap is momenteel bij versie 3.3.6. En in het algemeen wat je zou doen-- dit is eigenlijk het vermelden waard. Er is wat er over het algemeen bekend als semantische versiebeheer systeem in de wereld. Niet iedereen doet dit. Maar als je versienummers hebt gezien die van het formulier x.y.z-- dus bijvoorbeeld de eerste versie van een programma kunnen zijn 1.0.0. Of als het heel erg beta, of zelfs alfastatus, die gebruikt betekent op eigen risico, het is niet echt klaar voor prime time, je zou zelfs beginnen 0.0.1 of een dergelijke aanwijzing. Maar als software begint bij versie 1.0, of gelijkwaardig 1.0.0, typisch, wat is gebruikelijk deze dagen-- hoewel niet omnipresent-- is als een bedrijf of een individuele programmeur fixes enkele bug in een stukje software die echt was een bug, waarvan de correctie mag niet impact die je bij all-- het niet verandert het gedrag van het programma, het is gewoon iets repareert dat werkte niet properly-- zou je meestal werken daar de z-waarde. Wat betekent dat iemand als Kareem kon gewoon gaan in zijn website, blindelings veranderen het versienummer van 1.0.0 naar 1.0.1, opslaan, het schip, en in principe niet te bang te zijn dat hij gewoon gebroken zijn website als gevolg van sommige gebrek aan functionaliteit, omdat er iets anders brak. Ondertussen, als ik de programmeur of een bedrijf waren een aantal belangrijke maken verandering die functionaliteit toevoegt, Ik zou ons kunnen updaten naar 1.1.0 omdat ik eigenlijk ben gedragsverandering van de bibliotheek. Ik geef je misschien meer functionaliteit. Tot slot, als ik eigenlijk fundamenteel software wijzigen zodat veel dat het zal breken vele gebruikers websites of applicaties, dan ben ik verplicht, in dit model, om Ook een upgrade van de grote versie nummer, die een brekende verandering. Met andere woorden, zou ik heb beëindigde steun voor die daling down menu. Dus als u een upgrade naar 2.0, de helft uw website zouden kunnen stoppen met werken. En dit is een soort van een signaal aan de gemeenschap met betrekking tot wat er die betrokken zijn bij het maken van een upgrade. Een goede gelegenheid om te verhogen. Andere vragen? Okee. Nou laten we eens kijken naar een laatste onderwerp in dit segment programmering technologie stacks, namelijk met betrekking tot mobiel. Dus in de wereld van mobiele telefoons vandaag de dag je have-- en iPads, en oppervlakken, en al die soorten van devices-- je hebt veel keuzes als het gaat om de uitvoering een applicatie of een website voor mobiele apparaten van uw klant. Dus gewoon aan de staat voor de hand liggende, misschien deze dagen, welke de platforms te ontwikkelen voor in de mobiele ruimte? Welke apparaten wilt u misschien ondersteunen bij uw app of website? PUBLIEK: Apple. DAVID J. MALAN: OK. Dus Apple-apparaten. dat betekent dus de iPhone, en dat betekent iPad, en misschien zelfs de iPod. Wat nog meer? Olivier? PUBLIEK: Android. DAVID J. MALAN: Android. OK. Dus Android-telefoons, Android tablets, de Android market is zelfs Messier because-- en zelfs Apple wordt steeds rommelig. Overwegende Once upon a time iPhone was een bepaalde grootte, en iPad was een bepaalde grootte, en iPod was een bepaalde grootte, nu we hebben iPad Mini's, en de dunne kinderen, en de iPhone 6 Plus en 6. Het wordt een puinhoop. Het wordt de Android wereld. En ik zeg dit met een soort rollende mijn ogen, want uit een ontwikkelaar perspectief, het is een pijn in de nek wanneer je hoeft niet Steve Jobs ' visioen van absolute controle over al deze specificaties. Apple heeft nog steeds omdat ze degene bouw van de hardware. Maar het is een mooi ding, als Ik ben een software ontwikkelaar, gewoon weet dat mijn iPhone zal altijd om dit grote, omdat zijn dat betekent dat ik altijd weet hoeveel scherm onroerend goed ik heb. Dus als ik wil een icoon te zetten in de linker bovenhoek, het gaat om in exact dezelfde plaats op het apparaat van elke klant. Maar in de wereld van de iPhone 6s en iPhone 6 Pluspunten en in de wereld van Android telefoons, het is allemaal over de kaart. En zo maakt het moeilijker om programma dingen, vooral user interfaces, want nu heb je om te beginnen met het regelen van je user interfaces relatief, niet absoluut. En hetzelfde is uitgekomen op browsers geweest, en desktops en laptops voor de jaren omdat je, natuurlijk, hebben verschillende schermformaten. Wat nog meer? Je zou kunnen oppervlakken hebben, zoals van Microsoft. Je zou kunnen hebben-- PUBLIEK: Windows phone. DAVID J. MALAN: Wat is dat? PUBLIEK: Windows phone. DAVID J. MALAN: Ja. Dus ramen telefoons nog steeds te vinden. Soort soort van BlackBerrys, maar ze blijven proberen. En dan trossen van andere apparaten. Dus voor het grootste deel, laten we zeggen dat deze zijn degenen tot ongeveer zorg op dit moment. Zeker is dat de Apple spul, zeker de Android spul, en onder Windows, zoals oppervlakte tablets lijken te vangen op vrij goed. En dus onder die apparaten, als je wilt uitrollen, laten we zeggen, een mobiele aanwezigheid voor uw bedrijf, welke soorten van ontwerpbeslissingen heb je te maken? Nou, we al gezegd in de Apple wereld, er ten minste twee talen die doorgaans worden gebruikt. Eén was wat genoemd? PUBLIEK: Objective-C. DAVID J. MALAN: Yeah. Dus Objective-C, dat is de oudere. Het is ook de taal die veel Mac toepassingen nog geschreven. Dan is de andere nieuwere was? PUBLIEK: Swift. DAVID J. MALAN: Swift. En dat zijn de aard van de twee om te weten te imponeren mensen. Dan in de Android wereld, Welke taal heeft Android gebruiken? PUBLIEK: C #? PUBLIEK: Java. DAVID J. MALAN: Java is de taal van "du jour." In de Windows-wereld, zeker, we zullen zeggen C # in dat geval. Dus al is dit soort vervelend, want wat is de afhaalmaaltijd voor een bedrijf eigenaar of iemand die net wil de uitrol van een mobiel aanwezigheid? Zoals, verdomme? Zoals, als ik wil steunen een vrij brede basis van gebruikers, Ik heb om te schrijven, zo lijkt het, drie afzonderlijke applicaties. Een in een van deze talen, een in Java, een in C #. En zelfs als ik wil de functionaliteit identiek te zijn, het maakt niet uit. Ik moet toch anders te gebruiken talen omdat Apple en Microsoft, Google en alle ondersteunende verschillende omgevingen. En dit is een uitdaging voor jaren. Terug in de dag, toen mensen gebruikt om software te kopen op een computer op te slaan in krimpfolie verpakte dozen, zou je ofwel moeten bereiken voor de Mac plank, of voor-- misschien is dit zeer kleine Mac shelf-- of de grotere Windows plank en koop wat software. En heel vaak, was er niet eens alles voor je op de Mac plank. Waarom? Nou, bedrijven besloten of 90% van de wereld, 95% van de wereld heeft pc's, waarom eens de moeite de uitvoering dingen op Mac OS? Als aside-- totaal digression-- waarom is het dat Mac lijkt zo ongevoelig voor virussen, en wormen en bedreigingen van de veiligheid? Is Apple beter in dit? Beter in het houden van computers veilig? Doelgroep: Kleinere publiek? DAVID J. MALAN: Dat is waarschijnlijk de grotere beetje aan. Dus de vele gebruikers van Macs hebben lang beweerd, oh, gebruik dan een Mac, je immuun voor virussen en wormen, en al deze dingen die lang hebben geteisterd pc's. Dat zou kunnen zijn omdat Apple heeft betere programmeurs en ze schrijven betere software, of de besturingssysteem is beter ontworpen. Misschien, maar waarschijnlijk niet. Het is waarschijnlijk dat als je een 12-jarige, of een 30 iets soort van thuis zitten schrijven kwaadaardige software over te nemen de wereld, je gaat om te gaan na de veel grotere doelgroep. De 95% van de wereld die misschien worden met Windows of een varianten daarvan. Dus er is een beetje aan beide zijden. Maar om hun creditcard, Apple, bij mijn weten, heeft niet echt aangeprezen zichzelf als meer veilig, omdat je gewoon uitnodigen drama als u die claim te maken, zou ik denken. Okee. Zonder al te ver naar beneden dat, hoe kunnen we dit oplossen? Moet je kopen of moet je betalen drie verschillende mensen te ontwikkelen je apps? Kies je een over de ander? Wat moet je begeleiden denk hierbij denk je? Kareem? Nee. Iemand anders. PUBLIEK: Kom met de hardware. DAVID J. MALAN: Kom met de hardware? Wat bedoelt u? Publiek: voor de milieu. [ONHOORBAAR] DAVID J. MALAN: Dus dat is waar. Maar uw klanten, Ondertussen zou iPhones hebben, ze zouden kunnen Android-telefoons, ze kunnen tabletten door Microsoft hebben. Dus hoe kan je een mobiele strategie voor al deze verschillende gebruikers? Het lijkt erop dat als het kost, laten we zeggen $ 1000 om een ​​iPhone te maken toepassing, het gaat tot kost je $ 2000 te maken een iPhone-applicatie en een Android-applicatie, of $ 3000 ook ondersteuning voor Windows-apparaten ook. Dat is waarschijnlijk een hele understatement, en het misschien niet eens is een lineair verband als dat. Publiek: Als u wilt een app of niet kunt u reageren website. DAVID J. MALAN: Goed. PUBLIEK: Of u kunt een native app. DAVID J. MALAN: Yeah. Dus met al deze context hier, we hebben gesproken over wat mensen zouden native applicaties noemen. Dat applicaties die geschreven in de taal van dat apparaat. Dus inheemse Objective-C of Swift code, of in Java of C #. Wat betekent dat wanneer je downloaden, laten we zeggen Snapchat, een populaire toepassing, of wanneer u downloaden Facebook voor een telefoon, u downloadt ofwel de versie geschreven voor uw iPhone, of geschreven voor je Android telefoon, of geschreven voor uw ondergrond. Maar er is een alternatief. Als Olivier werd zinspelend op, kunt u daadwerkelijk gebruik maken van HTML 5 in plaats daarvan, met behulp van wat heet een web applicatie, waarbij je gewoon implementeren van uw mobiele aanwezigheid en enige functionaliteit. Wat bedoel ik door mobiele aanwezigheid? Net als uw website die uw heeft contactgegevens, een lijst van alle uw producten, misschien heeft een winkelcentrum kar, misschien verkopen je dingen doorheen. Wat uw toepassing ook is, je implementeren, niet in Objective-C, of Swift, of Java of C #, maar in HTML 5, die de taal die we bekeken was op gisteren, JavaScript en CSS. En wat is er leuk is aan deze drie is dat om ze te draaien, je gewoon wat stukje software nodig? PUBLIEK: Een webbrowser. DAVID J. MALAN: Een web browser. En het beste wat ik weet, al deze apparaten worden geleverd met webbrowsers, zodat de gebruiker niet hoeft te installeert iets speciaals. Dus je kunt gewoon vertellen je publiek, uw klanten, ga naar acme.com in uw browser en je zult gewoon hebben een web-based ervaring die nog steeds vult het scherm, maar je hoeft geen zorgen te maken over al deze kosten en dit alles complexiteit. Maar zeker er zal met een vangst hier te zijn, toch? Vooral als ik erop wijzen dat een paar jaar geleden, de eerste versie de mobiele applicatie van Facebook was meestal een HTML 5-toepassing. En ze hebben, meer onlangs, opnieuw geïmplementeerd is in de andere toepassingen. Dus waarom zou je niet meteen willen zeggen, Nou, natuurlijk gaan we dit doen? Wat zou de verborgen kosten zijn? PUBLIEK: Prestaties. DAVID J. MALAN: Prestaties? Wat bedoel je? Publiek: De inheemse app heeft meer prestaties. DAVID J. MALAN: Dus dat is waar, voor een paar redenen. We kunnen het antwoord te simpel. En herinneren aan onze bespreking van geïnterpreteerd versus gecompileerde talen. Dit is HTML 5 en met het, alleen maar om duidelijk, JavaScript-- vaak geschreven JS-- en CSS zijn allemaal geïnterpreteerde talen, hoewel alleen JavaScript is een programmeertaal. Enzovoort versus daarvan, dat sommige worden samengesteld, althans deze drie: Objective-C, Java en C # - deze, in theorie, moet gewoon sneller. Maar er is een andere werkelijkheid voor-- PUBLIEK: Functionaliteiten? DAVID J. MALAN: Wat is dat? PUBLIEK: Functionaliteiten. DAVID J. MALAN: Functionaliteit? Hoe komt het? PUBLIEK: Gebruik de camera van je telefoon of iets dergelijks. U kunt die met de browser te gebruiken. DAVID J. MALAN: Precies. Ze sec-- PUBLIEK: [ONVERSTAANBAAR] DAVID J. MALAN: Dat is een goeie. Er zijn functies die komen met mobiele telefoons vandaag de dag die niet, door het ontwerp, voor de veiligheid redenen, toegankelijk voor webbrowsers. Omdat het soort zou zijn een griezelige ding als net op het moment u bezoekt google.com, of cnn.com, of enige website.com, dat die website heeft de macht om te zetten op uw camera, neem een ​​foto van jou, en gebruik het dan. Maar je zou niet willen dat een willekeurige website die u bezoekt voor de eerste keer die-orgaan. En dus wat telefoon fabrikanten doorgaans doen is dat ze toegang te weigeren gewoon dat soort informatie een browser, wat betekent dat je kan de camera niet uit te voeren. Je kunt niet implementeren push-notificaties, de piepjes die je krijgt op je scherm met korte berichten. En inderdaad, ook GPS is enige soort van de soort beschikbaar voor webbrowsers. Als u ooit, op een laptop of op een mobiel apparaat, trok zoiets misschien cnn.com, maar ook lokaal nieuws stations hebben de neiging om dit te doen, wordt u gevraagd vaak met een message-- foxnews.com wil uw locatie weten. Keuren of te weigeren. Nou, de browser probeert toegang te krijgen uw GPS-informatie van uw telefoon. Maar gelukkig Microsoft, en Apple en Google hebben besloten dat aanvoelt als Het is nuttig situatie, we willen Google Maps en andere instrumenten om te werken, maar we willen niet om mensen buiten te kruipen door gewoon waardoor een website om dit te doen. Dus laten we een soort van meet halverwege en de gebruiker vragen. Maar dat is niet per se het geval met hardware, zoals de camera en met push kennisgevingen en dergelijke, dus je zou kunnen hebben om offeren bepaalde functies. Maar ook de prestaties. Het wordt steeds minder merkbaar tegenwoordig, misschien LTE aanslaat en sneller internet snelheden op telefoons, maar u kunt soort het verschil voelen. Net als een web-based applicatie voelt gewoon langzamer normaalgesproken dan een native applicatie, deels omdat een web-based applicatie per definitie is op internet. Het is in gesprek met de servers op het web. En als uw netwerkverbinding traag, zelfs scrollen langzaam zou kunnen zijn. Maar een native applicatie, je hebt al pre-downloaded-- waarschijnlijk wanneer je thuis uit de app store, of je op zijn minst pre-gedownloade het in zijn geheel eerder, ongeacht uw snelheid van de verbinding-- en zo nu heb je alle bits die je over het algemeen nodig. Behalve misschien een aantal gegevens die afkomstig is van een server. Dus dit zijn trade-offs hier. Er is een soort van een middelbare compromis, in feite. En ik denk dat je-- PUBLIEK: Gebruik de data offline. In de native apps, kunt u [ONVERSTAANBAAR] DAVID J. MALAN: Absoluut. Dus er is de offline kwestie, dat is echt vervelend als je wat spel of het gebruik niet kan spelen sommige software alleen maar omdat je bent in een kelder ergens of in een lift. Een native applicatie is veerkrachtig met een hogere kans tegen dat, de veronderstelling dat u alle gegevens die u nodig ter plaatse. Dus er is een derde optie hier. En laten we het spectrum trekken inheemse app hier en web app hier. En wat zit er in het midden is iets called-- en ik denk dat je zou kunnen hebben gebruikte het woord voor, misschien? Hybrid applicatie. En zoals het woord al zegt, het is iets in het midden. Het is een soort van een webapplicatie en het is een soort van een native applicatie. En wat betekent dit? Het blijkt er zijn frameworks-- een term uit earlier-- software te gebruiken die andere mensen hebben geschreven voor elk van deze platforms. Deze en nog andere apparaten. In feite, laat me gaan naar PhoneGap, dat een dergelijk kader dat ik geloven Adobe bezit nu. Laat me gaan naar de slag. Laten we eens kijken. Kijken of ik een lijst van tools kunnen zien. Hardware. Ermee beginnen. PhoneGap hardware. Laten we eens kijken. PhoneGap hardware toegang. Eens kijken of we iets kunnen vinden grafiek dat ze vroeger hadden. Dit is op een andere site. Is dit nuttig? Nee. Dat is gonna verspillen van onze tijd daar. PhoneGap hardware. Devices. Device API. Nee, ze hebben het verplaatst. PhoneGap. Laten we een laatste blik op deze en kijken of ik kan laten zien. Ermee beginnen. Installeer PhoneGap. Installeer mobiele app. Kom op. Ze hebben alles gereorganiseerd. Okee. Oh oke. Nou, daar gaan we. Dit is niet zo verhelderend, maar dit is wat ik was een beetje zoek. Dus PhoneGap is een raamwerk dat u gratis kunt downloaden die u sommige starter code wezen. Dus sommige code die ze hebben geschreven dat betekent niet veel van alles te doen. Maar wat het geeft je in wezen gelijk van een aanvraag die net zet een grote rechthoek op het scherm van de gebruiker. Het maakt niet een URL-balk, zoals een browser, niet een adres te zetten. Het zet gewoon een grote rechthoek. En u configureert deze grote rechthoek, onder de motorkap, eigenlijk naar acme.com, of misschien m.acme.com, voor mobile.acme.com, maar de gebruiker niet weet ze zijn op dat adres. Het enige wat ze zien is de De inhoud van de webpagina. Maar wat er leuk is aan dit wezen een hybride app is dat wat PhoneGap en andere bedrijven geven u is Ze geven je een beetje van de code in Objective-C of Swift, of een klein stukje code in Java, of een beetje van code in C #, en wezen alles wat je hoeft te leveren is minimaal de -adres van uw web-based applicatie. En dan deze bundel allemaal samen en je hebben ofwel toegang tot uw site via het internet, of je zelfs een lokale cache kopiëren in de toepassing, en dan uw aanvraag bespaart u in iPhone-formaat, Android-telefoon formaat, oppervlak indeling of willekeurig aantal andere inrichtingen. Je uploadt elk van deze versies naar de Google Play Store, naar de App Store, aan de Windows Store, enzovoort. En nu, kunt u al uw publiek downloaden echt een native app, zij het grootste deel van de code was geschreven door iemand anders, maar de inhoud van die inheemse applicatie vandaan komen, meestal, uw eigen website. Dus je blijft het schrijven van uw website in HTML, JavaScript en CSS. Dus waarom deze lijnen vervagen? Waarom een ​​hybride toepassing dat is een soort van inheemse, maar ook soort van web-based? Wat is het hele punt van het toevoegen van deze complexiteit? Ik bedoel, zelfs nog steeds, alleen van blik via deze pagina, Aan de slag 'voelt als het heeft een heleboel stappen voor mij te doen voordat ik can-- PUBLIEK: Herbruikbaarheid? DAVID J. MALAN: Herbruikbaarheid? Wat bedoelt u? PUBLIEK: Van de broncode. Zodat dezelfde code wordt uitgevoerd op de verschillende platforms. DAVID J. MALAN: Yeah. PUBLIEK: [ONVERSTAANBAAR] DAVID J. MALAN: Perfect. Als de tijd is krap en als je hebben niet zo veel developers-- misschien heb je een ontwikkelaar en hij of zij zeker weet niet al deze environments-- zeker niet goed, en zeker niet kunnen programma in alle drie tegelijk en het schip van drie producten in de termijn voor één, U kunt hem of haar op te bouwen alles in HTML en JavaScript en CSS, en dan leren een klein beetje over native apps, net genoeg om te downloaden een kader als dit, aan en upload uw product alle verschillende app stores zodat je nu een native applicatie. Dus dat lijkt een win-win, maar nogmaals, om duidelijk te zijn, Wat zijn de mogelijke kosten of de valkuilen? PUBLIEK: Prestaties? DAVID J. MALAN: Yeah. Prestaties. Het is moeilijk om verbaal te beschrijven. Dus als je gewoon op geloof een mobiele applicatie, een webapplicatie meestal uit te voeren langzamer. Het is misschien niet helemaal goed uitzag, want in de iPhone, en Android-telefoons, en Windows-apparaten, is er altijd een soort van standaard uiterlijk en voelen alle knoppen en de menu's. En bedrijven in het web, kunt proberen die esthetica benaderen met bibliotheken, zoals Bootstrap, maar de user-- een scherpzinnige user-- zal weten dat er iets niet helemaal goed hier. En dat is prima, misschien dat is geen big deal. Maar de prestaties kwestie absoluut is een big deal. Native applicaties zal de neiging om gewoon zijn veel sneller reageert en dus beter. En ja, wat dan zou kunnen zijn het beste van beide werelden? Als je in het bijzonder een kleine vennootschap of een kleine groep, je hoeft niet over de middelen om een ​​app te ontwikkelen in parallel Op alle drie de platformen, en eerlijk gezegd, voelt dat is een slecht idee toch want als je het uit te rollen en op alle drie tegelijk te realiseren, we moeten een aantal functies toegevoegd of iets anders gedaan, nu je moet het in te repareren drie plaatsen, niet een. Wat is misschien wel de optimale strategie hier over het algemeen, indien de middelen en tijd zijn strak? PUBLIEK: Just do it op iOS. DAVID J. MALAN: Dat is niet onredelijk. iPhones, althans in de US, zijn super populair. Android lijkt nog steeds dominant te hebben marktaandeel, wereldwijd, in het algemeen. Dus je bent niet noodzakelijk representatief van het geheel van de wereld geweest. Maar dat is absoluut een beslissing. Ik bedoel, op de campus hier I denk dat sommige gruwelijke nummer of het percentage studenten hebben iPhones en Android-telefoons niet. Maar in het buitenland, het is een soort van het tegenovergestelde. Dus u beslissen op basis van uw publiek. Hoe weet je wat je publiek heeft? Nou ja, leerden we een truc gisteren. Je kon hen vragen. Als u een vast publiek je kunt ze een enquêteformulier te sturen. Of je kan gewoon doen wat? PUBLIEK: Google Analytics? DAVID J. MALAN: Wat is dat? PUBLIEK: Google Analytics. DAVID J. MALAN: Google Analytics. Ja. Of nog een soort van technisch, net kijken naar je eigen webserver logs. Want wat gebeurt er elke keer dat een browser, of laptop, desktop of telefoon een bezoek aan uw website? Ze sturen dat HTTP-header die shows u welke browser en besturingssysteem ze gebruiken. Dus je kunt afleiden, met een grote kans, wat uw demografische gebruikt op die manier en vervolgens aan te passen. Dus stel dat is onaanvaardbaar. Dat is een beetje slecht voor het bedrijfsleven als Android-gebruikers kunnen niet onze widgets te kopen. PUBLIEK: Of je nu ga opladen of niet? DAVID J. MALAN: Of je gaat op te laden? Dus OK, je krijgt waar je voor betaalt. PUBLIEK: Of uw app is gaat vrij zijn of dat het gonna-- DAVID J. MALAN: OK. Dus misschien kun je terugverdienen kosten die manier, of--? Publiek: Ik las een studie ooit gezegd dat het meer Apple gebruikers betalen voor apps versus-- DAVID J. MALAN: Dat is waar omdat ze al meer betalen voor hun apparaten. Dus niet onredelijk een veronderstelling. PUBLIEK: [ONVERSTAANBAAR] DAVID J. MALAN: OK. Dus als ze meer bereid zijn te betalen, vervolgens naar de hel met de Android-gebruikers. Ze zijn niet van plan om betalen ons iets toch. We kunnen net zo goed richten onze prioriteiten, in ieder geval voor de eerste paar maanden of een jaar, op iOS. Totally redelijk. Wat is een meer inclusieve strategie dan dat? Maybe-- wat is dat? PUBLIEK: [ONVERSTAANBAAR] DAVID J. MALAN: Een expensive-- dus misschien meer investeren in-- doorgaan. Publiek: Ja. Gewoon een mobiele website. DAVID J. MALAN: Dus doe een mobiele website en niet zelfs zorgen te maken over deze complexiteit. Of misschien een redelijke strategie, die zelfs Facebook nam, is gestart met een hybride toepassing omdat het niet dat veel moeilijker te doen dan dit. Je hoeft alleen om wat te lezen documentatie en erachter te komen hoe om dingen te uploaden naar de App Store. Dus misschien begin je met dit, zodat op dag één, U kunt al uw gebruikers te ondersteunen. En dan, net als Facebook en andere bedrijven hebben gedaan, als je de middelen, je hebt de mensen, waarom ga je niet opnieuw te implementeren alleen de iOS applicatie. Je hebt nog steeds voor elk wat wils, ook al is het een inferieure ervaring misschien met de hybride toepassing. Maar je kunt geleidelijk uitrollen en vervang je korte termijn maatregelen van de hybride apps met je meer native applicaties. Publiek: Maar met een hybride app zullen toegang hebben tot mobiele functies hebben? DAVID J. MALAN: Niet per se. Dus misschien maakt u een bewuste beslissing vroeg op, kunt u alleen foto's op de upload inheemse iPhone applicatie voor Facebook, maar niet op de Android-applicatie, aanvankelijk bijvoorbeeld. En dat is een beetje een leugentje om bestwil, want webapplicaties hebben meer beperkingen dan hybride toepassingen blijkt uit, en als we de documentatie voor PhoneGap en dingen leuk vinden, mensen zijn gekomen met manieren naar web-based applicaties te geven toegang tot de camera, zolang je gebruikt een hybride toepassing. Hoe werkt dat? Omdat de hybride toepassing, per definitie, heeft een stukje code in Objective-C, en Swift, en Java, of in C #, het kan toegang tot de hardware. Niet per se alles, maar het zou heel goed het geval dat je hebt voldoende toegang tot de camera te krijgen, zelfs voor Android-platforms, voor bijvoorbeeld doordat gekunstelde voorbeeld. Nog andere vragen? Okee. Waarom gaan we niet nemen onze 15 minuten pauze hier. We zullen hervatten op drie met een definitieve kijk naar web programmeren, databases, en Javascript.