David J. MALAN: So moet ons te kort. So het die hoë-vlak onderwerp op die oomblik nou is tegnologie stapels, wat nie 'n besonder tegniese term, dit is meer van 'n vangs al vir enige aantal kombinasies van tegnologie wat jy kan gebruik om probleme op te los. En miskien die mees gepaste manier om te begin sou wees om te kyk na tale sedert Ek hou huppelend af 'n hele klomp en die meeste mense in die kamer het waarskynlik gehoor van ten minste een. En so hoekom nie ons probeer om te onderskei what-- onderskei hierdie tale en praat kortliks oor wanneer jy wil kies een oor die ander, hoe dit is soort fundamenteel anders, en veral wanneer jy gesels met ingenieurs, of probeer om te besluit wie om te huur, of wat implementering voorstel om GREENLIGHT, hoe jy eintlik sou maak hierdie soort besluite te neem. So laat ons net rammel 'n paar dinge af. Van die tale mense gehoor, wat opkom? C. OK. OK, C ++. Wat is dit? Publiek: Python. David J. Malan Python. Uitstekende. Wat nog? Visual Basic. Ek het gehoor Java. Visuele Basic-- ook bekend as VB. Java. NET, wat is meer van 'n vangs al vir wat gewoonlik C # as die taal bevraagteken. En laat my vertel dat noem. So sal ons terug na wat kom. Ek is jammer? Jammer? Publiek: SQL. David J. MALAN: Scratch? Publiek: SQL. David J. MALAN: Ag, SQL. OK. SQL. So sal ons terugkom om werklik that--, dis good-- na die breek sowel. Wat nog? Publiek: Oracle. David J. MALAN: So Oracle, nie 'n taal. Eintlik sou hulle SQL te gebruik sowel. Kom ons stel dit na die breek sowel. En jammer, iets hier? Publiek: Mathematica. David J. Malan Mathematica? OK, seker. En MATLAB is 'n soort van op daar soms. Publiek: R. David J. MALAN: R. Kom ons gaan oor hier. Fortran. Seker. Ouer skool. Fortran. COBOL. Ek sal gooi basiese. BASIESE. Any-- Publiek: MATLAB? David J. MALAN: MATLAB. O, het julle dit. Enigiets? Ek kan dink aan 'n paar ander. Ek kan dink aan 'n paar ander. En wat was die laaste? Publiek: ASP. David J. MALAN: ASP? Ja. Active Server Pages. Wat oor die algemeen sou onder val ander tale, soms C #, so laat ons laat dit af. Maar ons sal terug te kom na wat vir raamwerke en so. Enigiets anders? PHP is gewild. Ruby is 'n ander. JavaScript, moet nie verwar word met Java, is 'n ander. Dit is soort van 'n baie. So dit kan beslis oorweldigend wees, asof die lys is nog nie, net om te begin om te weet waar jy begin. En so gelukkig, kom ons benader dit van 'n paar hoeke. Eerstens, laat ons probeer om te kategoriseer ten minste 'n paar van hierdie tale in twee breë emmers, wat herinner aan die gesprek wat ons voor pouse het, waar het ons gepraat oor die samestelling, en bron kode, en masjien-kode, want dit is nie hoe alle tale werk. So ons sal pluk uit paar voorbeelde of-- of teen-examples-- daardie model. En dan, hoekom het ons nie praat oor die aansoeke dat hierdie tale is oor die algemeen gebruik word vir. En eerlik, selfs al dit is 'n mooi lang lys, dit is net 'n subset van hierdie lys wat sou jy tipies trek uit hierdie dae om probleme op te los. Sekere tale is nuwer as ander. Sekere tale meer gewild as ander. So dit is nie soos wat jy so het 'n oorweldigende taak voor jy wanneer jy moet besluit onder hierdie verskillende tale. So laat ons dit doen. Ons het vroeër, bronkode, en dan het ons masjien kode. Oeps. Skryf die verkeerde woord. Masjienkode. En ons het 'n paar proses in die middel called-- ja, die samesteller. So het die samesteller. En wat die masjien kode eintlik loop op die ou end gaan jou werklike CPU wees. Met ander woorde, deur masjien kode, ek beteken die laagste vlak instruksies dat 'n SVE eintlik verstaan. Optel, aftrek, skuif, red, en bedrywighede soos dit. En so is dit die model vir wat algemeen bekend as saamgestel tale. Miskien nie verbasend. So dit is die model vir saamgestel tale. Maar dit blyk daar is 'n ander klas van tale genoem vertolk languages-- geïnterpreteer languages-- wat effens anders. Jy skryf in bronkode, hardloop hulle deur 'n tolk, en dat tolk is wat loop op die CPU. Met ander woorde, wat jy doen nie stoot is wat, glo? Masjienkode. Die nulle en ene wat die SVE self uiteindelik verstaan. So in hierdie eerste weergawe en tale soos C, soos ons gesien het, jy skryf in bronkode dit is 'n bietjie arcane, maar ten minste dit is soort van Engels-agtige en dit is ten minste leesbaar Sodra jy daaraan gewoond te raak. Jy voer dit deur 'n samesteller en uit jy uiteindelik nulle en ene. Dat 'n oorvereenvoudiging. Daar is 'n paar ander stappe in daar. In werklikheid, as jy nog ooit gehoor die term "saamsteltaal," dit is 'n stap voor die nulle en ene. Dat 'n bietjie meer leesbaar, maar nog steeds mooi arcane. En dus is daar tussen stappe wat, in werklikheid, hier aan die gang. Maar die uitset, uiteindelik, is hierdie nulle en ene. Maar in die geïnterpreteer wêreld, waar jy tale wat vertolk tale, wat jy eintlik slaan wat stap. Met ander woorde, wanneer jy skryf 'n program, jy moet net dadelik hardloop nie. Jy hoef nie saam te stel dit en dan loop dit, soos ek al voorheen gedoen. Jy skryf dit net en voer dit uit. En as jy 'n vinnige verandering te maak, jy maak 'n vinnige verandering en tik dit. Daar is dus geen middel stap hier. Nou, vir die program wat ek geskryf het vroeër, wat hierdie program "Hello World", jy dalk redelik wonder-- of dalk redelik state-- dit was nie die tyd beslag op my program saam te stel. Dit blyk dat dit gedoen het net soos dit. En daar is grafiese weergawes van opstellers. Ek gebruik 'n baie arcane weergawe, maar jy kan 'n toneelstuk knoppie getref en dit sou eintlik doen die samestelling vir jou. Ek het die program saamgestel en dan weer, om dit uit te voer, ek doen dit net. En wat dit uitset na links daar, "Hello!" Dit lyk nie of alles wat beswarende. Maar wanneer jou programme meer as net een, twee, drie, vier, vyf lyne lank, dit kan neem veel meer sekondes om te stel. Soms selfs minute of nogal 'n bietjie van die tyd om saam te stel. Na alles, 'n paar van die wêreld se grootste produkte is dinge soos bedryfstelsels, Microsoft Word, Microsoft Excel, wat dalk honderde duisende of selfs miljoene reëls van die kode lang, en diegene doen nie net onmiddellik uit te voer. Verder op die web, dit is geword mode om te gebruik eenvoudig geïnterpreteer tale, gedeeltelik omdat julle kan 'n verandering as die ontwikkelaar te maak en dan net onmiddellik herlaai die leser bladsy en dadelik sien die resultaat. En so HTML, terwyl dit nie 'n programmeertaal, is 'n taal wat is geïnterpreteer. En ons sien dat dieselfde uitwerking gister. Jy herlaai net die bladsy nadat 'n verandering in Cloud9 and-- voila-- sien jy 'n nuwe gevolg. So, wat is die verskil hier? In HTML, onthou, het ons oop HTML, oop kop, Ope, naby titel, naby kop oop liggaam, en so meer. Ons het al hierdie etikette dat ons mooi veel gesê, vertel die leser wat om te doen. Hey leser, hier kom 'n HTML-bladsy. Hey leser, hier kom die titel. Hey leser, hier kom 'n paar teks wat vet moet wees. En dan is die teenoorgestelde sê vir julle. Hey leser, dit is dit vir die vet gesig teks. Hey leser, dit is dit vir die liggaam. En dies meer. En so what is 'n leser? 'N leser is net 'n tolk. Dit is 'n program wat iemand soos Microsoft of Google geskryf het, wie se doel in die lewe is om lees 'n taal, bekend as HTML, en interpreteer dit. Bo na onder, links na regs. En enige tyd die leser sien oop bracket, titel, naby bracket, dit moet interpreteer dat as betekenis, o, wat beteken dat ek moet hierdie woorde weg te sit hier aan die bokant van die leser. Sodat dit presies wat die HTML-kode sê. Maar daar is geen nulle en ene. Daar is geen samestelling. Jy het dit nie gedoen nie. Die leser het dit nie gedoen nie. Dit is net nie betrokke is. So in die gees van hierdie deurlopende onderwerpe, vandag en gister, wat lyk na 'n wonderlike funksie wees. Jy slaan jou kode en dan net loop of te interpreteer. Daar is geen intermediêre stappe. Waarlik, daar is 'n koste? Kan nie almal upsides. So, wat kan dit koste wees? Publiek: Space. David J. MALAN: Space. So, seker. In die saamgestel wêreld, jy het nie net die oorspronklike bronkode, jy ook die skep en dan vermoedelik spaar die masjien code-- die nulle en ones-- en dis het om te neem 'n paar bedrag van die ruimte. Absoluut. So dit kos jou meer ruimte. Ja? Publiek: Browsers mag interpreteer anders. David J. MALAN: Browsers mag interpreteer dit anders. Dit is waar. Maar ek is nie seker ek is gemaklik beweer dit is omdat dit geïnterpreteer. Dit is meer net omdat dit 'n implementering van 'n taal wat self teenstrydighede. So laat ons nie heeltemal bevestig dat 'n mens nie, maar 'n goeie vermoede. Wat anders kan die prys betaal? Andrew? Gehoor: Jy kombinasie twee stappe, sodat jy dus het toenemende kompleksiteit sowel. David J. MALAN: Die complex-- die toename in kompleksiteit waar? Vir wie? Publiek: So, in die tolk stap, is jy die kombinasie van die tolk en samesteller vir net die aanloop aan- David J. MALAN: Ag, OK. Ironies genoeg, is dit waarskynlik 'n bietjie makliker om die tolk te implementeer, selfs al sou dit lyk opbrengs upsides van hierdie gerief. So moontlik waar. Maar dit soort hang, ek sou sê, op die taal en oor hoe hulle gaan oor die uitvoering daarvan. Daar kan 'n baie meer kompleksiteit, eintlik, in die samesteller, net omdat jy moet gaan uit iets so 'n hoë-vlak om iets so 'n lae-vlak. Maar 'n goeie gedagte. So 'n ander manier, 'n saamgestel program, wanneer verander in hierdie nulle en ene, beland in die taal dat die SVE praat, terwyl dit in hierdie kant van die wêreld, die program wat jy geskryf het, die kode wat jy geskryf het, nooit werklik kry omskep in die werklike taal die rekenaar praat. Die nulle en ene. Dit bly in die oorspronklike, meer menslike vriendelike, meer leesbare taal. So, wat kan die implikasie wees daar, as jy nie eintlik pla die omskakeling van jou program om die heel taal dat die onderliggende rekenaar praat? Publiek: dalk nie iets verstaan? David J. MALAN: Mag iets nie verstaan ​​nie. En dit kan claim-- As dit nie verstaan ​​nie iets, dit is 'n fout of 'n gebrek van funksie in die tolk. So dit sou meer van wees 'n fout as 'n koste. Gehoor: Jy moet toegang om die bronkode? David J. MALAN: Daar is 'n goeie een. So 'n nadeel hier is jy blyk om toegang te hê. Jy, die eindgebruiker, lyk na het toegang tot die bronkode. En dit is nie altyd waar nie. Maar dit is waar in die geval van JavaScript, wat ons sal kyk na na die breek vandag, wat is 'n vertolk programmeertaal dat jy skryf in bronkode. Maar dit bronkode kry oorgedra van jou bediener na die leser en loop in die leser die menslike se. So hier kan sy net oop die venster, soos ek doen in Chrome, en daarna kyk, as ons onsself kyk na gister met Google. Dit mag dalk 'n bietjie kyk onverstaanbaar, maar dit is daar. So dit is absoluut 'n prys betaal. Publiek: Performance treffer? David J. MALAN: Ja. En dit is die ander hoë piet. Daar is 'n prestasie treffer. Omdat jy hierdie middelman, wat op sy beurt is 'n program, tussen jou en die CPU, in teenstelling om net voed hierdie rou nulle en ene in die CPU, daar is 'n prestasie treffer wat jy neem met 'n geïnterpreteer taal. Sodanig dat, na willekeur, 'n program wat kan 'n sekonde neem uit te voer op 'n rekenaar of 'n minuut uit te voer op 'n rekenaar hier, dalk 10 sekondes of 10 neem minute om te loop op 'n rekenaar hier. Dit is oor die algemeen nie van plan om te wees wat n groot deel van 'n difference-- faktor van 10-- want daar is optimalisaties wat jy kan doen. Maar dit is byna altyd stadiger. Nou, die ander kant om dit kommer is dat, wel rekenaars, elke 12 tot 18 months-- volgens Moore se wet, om so te speak-- is net vinniger en vinniger kry. Ek het al hoe meer spasie op die hardeskyf. Ek het al hoe meer RAM. Wie gee om regtig? En dit is soort van 'n redelike argument. Trouens, een van die redes Daarom het ons stadiger kan verdra geïnterpreteer tale is omdat Ons mense het nie regtig sien. Die rekenaars gekry net so darn vinnig. AANGESIEN terug in die dag, veral wanneer hardeware is baie meer beperk, jy het minder van alles, dit was baie duurder sodat alles kos meer, sowel as jy regtig wou uit te druk soveel prestasie as wat jy kon. Maar dit vereis skriftelik by 'n laer vlak, as jy wil, met 'n saamgestel taal. So doen jy neem hierdie prestasie treffer. Maar oor die algemeen, die upsides lyk die moeite werd deesdae te wees. Wel, behalwe vir die intellektuele eiendom kwessie. Daardie soort van leesbaarheid van die kode is, sal ons kom terug na wanneer ons kyk na JavaScript. So kom ons probeer om te kategoriseer ten minste 'n paar van hulle nie. So onder die saamgestel tale, ons sou C het, C ++, kinda, Sorta, Java, Hoewel dit 'n bietjie van 'n uitsondering, vir redes wat ek sal jou wys in net 'n oomblik. C # sou wees op hierdie lys. Ons sal kyk na meer op net die meer moderne tale. Alles reg. En dit lyk asof baie daar. AANGESIEN aan hierdie kant van die heining, Ons kan JavaScript, en Python het, en PHP, en Ruby. En is dit genoeg vir die meer onlangse kinders? Dit voel soos baie nou. OK. En dan dot dot dot, aangesien die lys is eindeloos. En in werklikheid, as ons wil net kry 'n gevoel van this-- Wikipedia, saamgestel tale. Ek vermoed dat ons 'n te kry veel meer volledige lys. So hier gaan ons. So hier is 'n baie meer volledige lys. En ek het gehoop iemand sou D raai as 'n taal, want dit ook bestaan, maar hulle het by D wil dit voorkom asof. Hoewel daar eintlik kan wees 'n E. Ag, eintlik, moet dit wees op die lys deesdae. Swift is eintlik 'n taal wat Apple uitgevind wat nou gebruik word, al hoe meer ja, ten iPhone ontwikkeling. Maar ons sal terug te kom na dat ons met ons bespreking van mobiele in net 'n bietjie so goed. So Swift sowel. En dan as ons na geïnterpreteer language-- geïnterpreteer language-- dan hier is 'n nog langer lys sowel. So as jy net google en kyk op Wikipedia vir hierdie, jy allerhande tale te sien. Maar die doel is, vir vandag werklik, net kom daarop neer dat miskien is dit kwessie van intellektuele eiendom en gelees deur die eindgebruiker en om prestasie, is nog 'n krisis nie so goed. So onder hierdie tale, laat my kyk of ons jou kan gee net 'n paar voorbeelde van tale. Ons wil nie te gaan deur al die tale eindeloos. Het jy al ooit gewonder wat 'n sekere taal lyk? Ons het sien 'n oomblik gelede. Hoekom het ons nie neem 'n paar van funksie versoeke. Wie wil om te sien wat ander taal lyk? Ja. Publiek: Java. David J. Malan Java. Alles reg. So laat ons gaan na Java. En net om jou 'n sample-- gee Ons kan al hierdie uitskryf, maar dit sal vinniger net om kyk na iemand anders se voorbeeld kode. Alles reg. Dit is dus 'n goeie voorbeeld? Oeps. OK. So hier is die Java weergawe van die program wat ek geskryf het vroeër, "Hello World". So Java, sal jy dikwels sien die "klas." navraag Dan sal jy 'n paar name daarna kyk. Jy sal sien krullerige draadjies soos ons gesien het voordat, en soms gaan hulle op die dieselfde lyn, soms ander lyne, Dit is soort van 'n persoonlike besluit. Jy sal sien sleutelwoorde soos "Openbare", "statiese", "leemte." Maar ons het sien "hoof." "Main" is oor die algemeen die naam van die standaard funksie of die standaard deel van kode wat kry hardloop in 'n program. "String." Wat het ons bedoel met tou vroeër? Ek gebruik dit soort terloops. 'N string is wat? N woord. Dit is soos 'n reeks karakters. Individuele karakters, terug na rug aan rug, gewoonlik in 'n skikking, soos ons het bespreek. En in werklikheid, sien hierdie sintaksis Hier is die twee vierkantige hakies? Dit beteken, hey rekenaar, hier kom 'n verskeidenheid van snare. Die bracket vierkante notasie wat algemeen gebruik word om aan te dui dat. En dan kan jy seker neem 'n guess-- wat beteken dit uitgelig stuk van kode waarskynlik doen? Gehoor: Die uitset? David J. MALAN: Ja. Dit druk iets op die skerm. So "stelsel" is 'n soort van 'n verwysing na jou rekenaar. "Uit" beteken dat jou rekenaar se uitset of die skerm. So "system.out.print ln" beteken waarskynlik? "In." Druk lyn wat programmeerders soos om blykbaar spel 'n paar woorde uit in hul geheel en neem kortpaaie met ander woorde. Maar "In" is lyn, so druk lyn. So dit druk uit "Hallo Wêreld! "Gevolg deur 'n nuwe reël. So dit is dit. Maar Java is wat hulle sal oproep objekgeoriënteerde. En inderdaad, net om 'n gee paar ander definisies daar wat jy moontlik sien, in die algemeen, is daar is baie verskillende tipes van tale, maar die mees algemene is prosedurele of noodsaaklik tale. Daar is funksionele tale, wat nie beteken dat ander funksionele. En dan is daar Objekgeoriënteerde tale. En dit is dalk die beste kategorisering van die meeste tale wat jy ooit sou kies vir tipe van 'n tipiese kommersiële projek. Dit sou te veel wees, Ek dink, van gat 'n rot se om af te gaan, om te probeer om te verduidelik die verskillende verskille. Maar die tale Ons het dus far-- C gesien is 'n proses of 'n noodsaaklik taal. Meer onlangs uitgevind tale is geneig om te wees, jammer, objekgeoriënteerde, wat beteken hulle het ander funksies aan hulle. Kan ek verduidelik dit op hierdie manier? Laat ons nie eens daar af te gaan. Objekgeoriënteerde middel jy kan implement-- jy kan die werklike wêreld te modelleer 'n bietjie meer effektief. Die mensdom, met verloop van tyd, het uitgepluis het, wow, dit lekker wees as my taal sou wees het hierdie funksie of daardie funksie. En dit is hoekom ons so baie tale in die wêreld. Redelike mense, slim mense, saamstem of verskil en altyd soort van bymekaar kom op die ontwikkeling van nuwe tale almal saam. Goeie voorbeeld hiervan. Apple uitgevind Swift in hoop van vermoedelik verlaag die bar te iPhone ontwikkeling, omdat die vorige language-- genoem Objective-C, wat kan ook op ons lys here-- was baie meer arcane en veel moeiliker om 'n mens se verstand om te draai. En as programmeertaal steeds waarskynlik meer toeganklik en meer in die algemeen deur mense selfs aangeneem minder tegniese, die goal-- dit is 'n baie dapper doel om te probeer om verlaag die versperring vir toetrede deur die tale self makliker om te begin met, maar nie minder kragtige noodwendig. En 'n ander taal. Hoekom het ons nie 'n blik op iets soos Python, wat baie in die mode deesdae. Python. Voorbeeld program. Kom ons sien. "Hello World" tale. Kom ons doen dit. "Hello Wêreld." Kom ons kyk of dit gee ons 'n mooi voorbeeld. OK. So dit is eintlik soort van pret. So as jy ooit google "Hello World", wat gebeur met een van die eerste programme ooit in 'n moderne taal geskryf, net soos 'n bewys van die konsep, kan jy sien allerhande implementering van hierdie. Sommige van hierdie tale Ek het nie eens gehoor van. Maar jy kan see-- laat ons gaan na Basiese, die een wat ek jare gelede geleer het, in 'n deel. Dit was 'n prettige taal omdat jy moes, soos die programmeerder, aantal al jou lyne. Nie in teenstelling met wat ek was doen wanneer ek skryf pseudokode op die geel dokument vroeër vir binêre soek, vir soek 'n telefoon boek. En so, as jy wou om te gaan na 'n ander lyn, sou jy letterlik tik, gaan na 10, of gaan na 20. En as jy wil skryf lyne, die konvensie was om te doen, dit is lyn 10, dit is lyn 20, dit is lyn 30, 40, met niks tussenin, daardeur gee jouself 'n paar kamer As jy besluit, wag 'n minuut, Ek moet 'n paar het bygevoeg meer-kode iewers. Jy het nog soort van nege kanse om druk wat tussen jou program voordat jy moes met die hand hernommer alles. So dit is 'n soort van wat ek bedoel as ek sê die wêreld het gekom met 'n nuwe funksies. Iewers langs die pad iemand besef, seun dit is dom. Dit is net die skep van werk vir die programmeerder. Sodat hy of sy net soort gebou 'n nuwe laag op die top van dat sodat jy nie hoef te bekommer oor wat reëlnommers jou kode is eintlik op. So wanneer kan jy kies een taal of 'n ander? Wel, wat van hierdie tale is jy geneig om te hoor oor die meeste in jou eie wêreld deesdae? Kom ons drop down Objective-C te. Publiek: C #. David J. MALAN: C #. So laat my kleur. Het ons ons ander kleur iewers? So C #. En wat weet jy van C #? Enigiets lente na vore? Publiek: Dit is 'n programmeertaal. David J. MALAN: Dit is 'n programmeertaal. OK. Dit is waar. So ons praat oor C #. C # geneig om gebruik te word in Windows omgewings, So as jy wil skryf Microsoft sagteware vir Windows, is C # baie algemeen gebruik word, of dit nou vir desktop sagteware, of selfs telefoon sagteware op Windows fone, As jy daardie gehad het, of op die web selfs ook. En in die waarheid, miskien Kareem genoemde ASP vroeër? So is daar ook hierdie dinge genoem raamwerke, wat ons kan stel deur uitbreiding. Raamwerke, soos ASP. Staan vir Active Server Pages. En dit is die kode en 'n manier van programmering wat oor die algemeen maak dit makliker web-gebaseerde programme te skryf. Met ander woorde, sou dit super wees, super irriterende na 'n webwerf skryf in die taal C wat Ons het voorheen gesien, want jy sal moet druk + F gebruik, jy wil hê om die navraag te gebruik "Hoof" en die krullerige draadjies. Baie arcane sintaksis en benadering te implementeer iets wat redelik kompleks. 'N webblad. En so ander tale ontwikkel om daardie soort van ding makliker te maak. En op sy beurt, het mense kom met raamwerke, soort gereedskap wat jy kan gebruik wat dit nog makliker om webblaaie te skryf. So byvoorbeeld, om te maak hierdie baie meer konkrete, laat my oop te stel net 'n tekslêer vir 'n oomblik. En jy mag gister onthou dat ons iets gesê soos, dit is 'n web bladsy. HTML. Sluit HTML. Laat my slaan die kop en net nie die liggaam hier. Veronderstel dat ek wou skryf nie "Hello World" maar "Hallo David," waar Dawid is die Naam van die tans aangemeld gebruiker. Wat so iets ASP sal doen, of JSP-- wat is Java-bediener pages-- of enige aantal ander raamwerke is hulle nie tale, per se. Hulle is net soos addisionele sagteware wat jou sou installeer in jou omgewing dat dit net makliker om die program te maak. So byvoorbeeld, eerder as om te doen iets soos "Hallo, printf (" Dawid ")" of iets wat soort mede-mingling-- die aard van die kode wat ons before-- gesien jy sal iets baie makliker doen, soos "naam%." En so hierdie raamwerke, soos ASP-- en ek kan nie onthou of ek kry die sintaksis net reg vir ASP. JSP is 'n little-- is dit reg? So met ASP, dit is soort van 'n spesiale sintaksis dat sommige ontwikkelaars het besluit hierdie dalk mense help. En ek kan nie meer helder te formuleer plekhouers byvoorbeeld. Soos sit 'n waarde hier, waar hierdie naam waarde is nie N-A-M-E, dis 'n bietjie waarde gestoor in daar. So "naam," in hierdie konteks, Ons sal 'n veranderlike te bel. Algebra het veranderlikes soos x en y, en z. Programmeerders gebruik veranderlikes wat meer beskrywende as x, y, en z, tipies. So "naam" sou letterlik 'n soort wees geheue houer vir iets soos D-A-V-ek-D, want my Naam, of wie ook al anders is aangeteken in die webwerf. En so is dit die soort gerief jy met sekere omgewings. So C # en iets soos ASP sou baie algemeen gebruik word in 'n Windows wêreld, hetsy vir sy lessenaar sagteware of webbediener, veral as jou bedieners is op sy beurt Microsoft Windows en Microsoft IIS-- of Internet Information Bediener, as ek die afkorting right-- wat Microsoft se webbediener. So, wat ander tale is mense vertroud is met, of het jy al gehoor van meer dikwels as nie? Publiek: Ek weet dat Python se soort van 'n gewilde [onhoorbaar]. David J. Malan baie gewild. So Python hier is baie dikwels gebruik in wetenskaplike programme of data wetenskap, waar jy 'n baie data wat jy wil om te ontleed en jy wil 'n gebruik programmeertaal daarvoor. R kan algemeen gebruik word vir daardie sowel in 'n statistiese konteks. Maar Python het so baie funksies gebou in. Soveel addisionele biblioteke, soos mense sê. Biblioteke is net versamelings van kode wat ander mense geskryf dat jy, sodat jy kan gebruik hoef nie aan dié wiele te herontwerp. En so Python is baie algemeen gebruik in data wetenskap aansoeke. Maar dit is ook baie algemeen gebruik in web programme. Jy kan implementeer 'n dinamiese webwerf met Python. En deur dinamiese webwerf, ek beteken nie net statiese inhoud soos ons geskep gister deur net hard kodering in die Latynse teks en ander sulke dinge, maar eerder die vermoë om aan te meld, die vermoë om te koop iets, die vermoë om te kyk na met jou shopping carts, en dies meer. Al wat vereis dinamika en jy moet 'n paar taal soos een van hulle. Publiek: So maak Python het sy eie uitbreiding, soortgelyk aan hou [onhoorbaar] David J. MALAN: Dit maak. So in die wêreld van 'n afgestorwene, Django is 'n baie gewilde raamwerk vir Python. WSGI is nog 'n meganisme wat soort verskil van dié maar soortgelyke in gees. Dit is 'n add-on wat toelaat dat jy om Python-kode uitgevoer word op 'n bediener. Daar is other-- ja. So sal hierdie ons raamwerke noem. En dit is 'n bietjie van 'n misbruik. Dit is meer van 'n web bediener tegnologie. Maar ons sal dit eenvoudig te hou en sit dit in hierdie kolom nietemin. OK. WSGI. WSGI. Nog 'n thing-- en eintlik, laat my voorstel dat sy eie kolom want ek sou skree myself vir sit hulle in dieselfde emmer. Kom ons sit dit in bediener funksies, kom ons sê. Dit is nie 'n tegniese term. So hier is ons dalk WSGI. Daar is CGI, wat 'n ouer tegniek vir die versorging up tale soos Perl of PHP, of 'n paar ander. Weereens, ek het hierdie terme genoem nie soseer om hulle soort ingeworteld, maar so dat as jy kyk hulle dit iets jy net google om meer te lees. Daar is geen werklike sap sommige van hierdie dinge. Maar laat ons teruggaan na die tale. Ons het gepraat oor C #, Python. Wat anders kan jy gebruik vir webprogrammeertalen deesdae? Kom ons fokus op wat nog. Publiek: PHP. David J. MALAN: PHP. En laat ons terug na daardie een kom. So PHP is baie algemeen gebruik word. PHP is geneig om 'n slegte rap kry. Dit het begin as 'n taal geïmplementeer deur mense wat miskien noodwendig nie die beste taal ontwerpers. En so kan jy allerhande lees artikels oor hoe sleg PHP is aanlyn. En ongelukkig is dit 'n manifestasie, in die deel, van net die godsdienstige debatte wat uitbars onder programmeerders. En dit is iets wat die moeite werd om in gedagte te hou, van 'n besigheid perspektief, wat Dit is baie maklik vir tegniese mense al gewerk met om hul menings oor sekere dinge. En dit beteken nie noodwendig dat die een skree die hardste of met die sterkste, kwaadste mening is reg. Daar is baie keer is dit regtig net maak nie saak. En so mense is net die argument wat ook al hul eie vooroordele of gemaksone is. En so moet jy hou wat in ag geneem word wanneer 'n besluit, wat net omdat iemand sê dit is die regte taal vir die werk, wat dalk waar wees, maar dit ook self regverdig kan wees dit is die reg taal binne hul eie vaardigheid stel of gemaksone. Wat is nie sleg nie, maar jy moet besef dat daar 'n paar konteks daar mag wees. Daar is 'n paar objektief verkeerde stellings, soos C is die verkeerde taal te gebruik deesdae vir die implementering van webtuistes amper altyd. Maar dit is nie onredelik om te sê dat enige van hierdie is verkeerd dat ons tot dusver het omkring. PHP het deurgegaan baie weergawes. So tale is geneig om weergawe het nommers wat verband hou met hulle. PHP is aan, dink ek, weergawe 7 nou, so dit is al vir 'n geruime tyd. En as tale kry nuwer, hulle kry dikwels nuwe funksies. Maar jy moet in gedagte hou hierdie te wees want as jou webwerf is geïmplementeer in weergawe 7 van PHP, maar jy probeer om jou webwerf te voer, of miskien het jy het uitgekontrakteer die ontwikkeling van jou kode om iemand anders en hulle pos dit is vir jou of stuur dit aan jou en hulle sê: hier, sit hierdie op jou webbediener, As jou web bediener is 'n paar jaar outdated-- of dit nou jou eie bediener of 'n web host-- dit kan nie eintlik hardloop. So dit is die soort van die dinge wat iemand moet bedag te wees wanneer die opgradering van 'n webwerf of die uitvoering daarvan vir die eerste keer. Ek JavaScript gehoor vroeër. So JavaScript is 'n interessante een in die sin dat dit is oor die algemeen kliënt kant, as ons sal sien na die breek, wat beteken dit loop in die leser van die gebruiker. Maar jy kan ook hardloop JavaScript deesdae die gebruik van iets genoem Node.js, waar Node.js is 'n meganisme vir die uitvoer JavaScript-kode bediener kant, in plaas van die gebruik van Python, of PHP, of ander soortgelyke tale. JavaScript is besonder goed geskik vir chat programme en real time programme, terwyl PHP is nie 'n groot taal vir die implementering van iets soos 'n chat-bediener, waar gebruikers bly verbind om dit voortdurend. PHP is meer van 'n besoek my een keer, terug te kry 'n resultaat, en kliek 'n ander skakel 'n paar sekondes of minute van nou af. AANGESIEN Node.js en JavaScript kan wees meer vir volgehoue ​​konneksies gebruik. Ander tale wat jy vermoed word algemeen gebruik vir web dinge? Publiek: Sou jQuery 'n raamwerk? David J. MALAN: Goeie vraag. Nie. Ek sou jQuery noem 'n biblioteek, waar weer 'n biblioteek is net 'n klomp van die kode dat iemand anders geskryf wat oor die algemeen los 'n paar probleme wat maak dit hopelik makliker vir jou om jou werk te doen. En laat ek doen 'n voorbeeld van dit in die konteks van die web. In die konteks van die web is daar ' hierdie taal, JavaScript, dat ons later sal sien, waardeur jy dalk iets soos this-- sê "Document.getElementById." En wat het ek noem dit gister? In die eerste plek dink ek, was die unieke ID ek het om 'n element wat lyk soos hierdie. "P id =" eerste ">" en dan het ons soos "Lorem Ipsum," ensovoorts. So as ek 'n program in te skryf JavaScript om een ​​of ander manier te manipuleer, verander die webblaaie wat ons speel met gister, Ek sou dit gebruik gemerkte reël van die kode om daardie spesifieke HTML-kry uit my bladsy, wat veral knoop, soos ons dit sal noem. Maar in jQuery, in plaas van die skryf hierdie, wat rou JavaScript code-- net uit die boks, dit is hoe jy skryf it-- jy wil plaas net sê, "#first." Dit is ekwivalent. En so net op grond van hierdie baie arcane byvoorbeeld wat dalk is die argument vir die gebruik van jQuery? Waarom sou 'n ontwikkelaar te gebruik 'n biblioteek soos jQuery, gebaseer op die geïsoleerde voorbeeld, miskien? Publiek: Minder kode. David J. MALAN: Ja. Dit is minder kode. Dis net vinniger te tik. Die kontrapunt is dat dit lyk vreesaanjaend. Jy kan regtig nie lees dit van links na regs. Trouens, want dit is meestal punktuasie nou in plaas van die werklike woorde, Ek kan soort aflei dat "Document.getElementById" kry 'n element van die dokument deur sy ID. Ek kan regtig nie so gebruik geheue hulpjes uit hierdie ding hier. Dit is dus 'n kompromis. Daar is 'n gesofistikeerdheid wat kom dikwels met behulp van biblioteke, veral soos jQuery. Maar die werklikheid is jQuery het soort van 'n de facto standaard, sodat byna almal hierdie dae wat JavaScript-kode skryf gebruik jQuery of iets dit wil hê, en nie meer skryf so 'n uitgebreide uitdrukkings soos hierdie, want weer, die mensdom geleer het, wow, dit was soort van 'n gemiste kans om ons lewens makliker te maak. So mens maak hul lewens makliker te maak. Goeie vraag. Ander tale te oorweeg. Ek sou sê onder hierdie lys Ruby is baie gewild. En so in die wêreld van Ruby, is daar 'n raamwerk genoem Rails, wat baie gewild is. So Ruby on Rails is 'n algemeen gebruik uitdrukking. Ook in hierdie wêreld, laat my sirkel Java vir web dinge, waar in die wêreld van Java jy dalk JSP, of Java het Servlets, wat is 'n algemene tegnologie. En dit is net weer maniere om dat taal binne 'n bediener omgewing. So wat beteken dit? As jy 'n fisiese het bediener, sou jy letterlik laai die web bediener-sagteware en installeer dit op so 'n manier dat jy ondersteuning vir een van hierdie raamwerke, waarmee jy kon op sy beurt gebruik een of meer van hierdie tale. En in werklikheid, as jy inteken vir soos 'n web host of 'n paar van die wolk dienste wat ons gepraat oor gister, dikwels die dinge net kom met die opset masjien se vir jou. Jy hoef nie om dit op die hand te stel. Maar as jy het, dit is waar die rol stelsel administrateur, om so te praat, kom in die spel. Hy of sy eintlik wil doen hierdie soort dinge vir jou, of die sogenaamde webmeester sou dit dikwels te doen vir jou. Alles reg. Enige vrae oor sommige van hierdie hier? Of enige geleenthede op al te vra oor tale? Raamwerke? laat my dan stel net een ander biblioteek dit is ook baie algemeen deesdae. Hierdie lys kan oneindig aangaan. En hierdie biblioteek is 'n soort van begin in onguns te val. Dit was rondom. Dit is gewild gemaak deur Twitter vir 'n geruime tyd. En nou baie webwerwe, baie ontwikkelaars gebruik. Maar nuwe dinge kom uit en saam kom. Maar laat ek net gee jou 'n gevoel van wat dit beteken om 'n biblioteek te gebruik. So weer, JavaScript is 'n baie gewilde taal. CSS, of Cascading Style Sheets, Ons het gepraat oor gister. Dit is ook alomteenwoordig. Niemand maak 'n webblad vandag sonder die gebruik van HTML en CSS minimaal. Maar dit is nie altyd maklik nie om sekere dinge te doen. En so laat my gaan na getbootstrap.com. Oeps. Dit is nie hoe ons spel. Getbootstrap.com, wat gaan my lei om die landing page vir hierdie biblioteek. Sodat hulle mildelik noem self 'n raamwerk wat is 'n soort van soort eerlike, maar ek sou nog steeds noem dit meer van 'n biblioteek as 'n raamwerk. Maar dit is net onseker semantiek. Laat my gaan na hul blad CSS en dat ek kan gaan om iets soos hierdie. So onthou wat ons vorms gekyk soos gister op Cloud9? Dit was 'n bietjie lelik. Ou skool knoppies. Ek dink die knoppie was grys deur verstek. En alles was regtig geformateer nogal morsig. So as jy wil hê dat jou web vorms te kyk 'n bietjie nicer-- laat my in te zoem hier. En deur mooier ek eintlik net beteken baie nitpicky estetika. So sien hoe die e-posbus daar 'n afgeronde vierkantige hoeke om dit te. Dit is dus 'n bietjie skoner daar. Let daarop dat die woord e-pos is daar totdat ek begin tik en dan gaan dit weg. So dit is 'n mooi klein funksie. Let op hoe die ding is 'n soort van gloei mooi, wat 'n paar van hierdie jy kry vir vry van jou browser, maar 'n paar van hierdie is ook biblioteke, kode wat ander mense het geskryf dat jy dit gee. Iets soos hierdie gee my my wagwoord. Hierdie knoppie is 'n bietjie sexier as die verstek. Baie nou in die mode. Sedert IOS 7 of so, die wêreld gekry het baie plat, terwyl die wêreld voor het baie oorskadu, baie refleksies op ikone. Baie soos in die klere wêreld, daar is modeneigings wat kom en gaan. Nou is alles plat op jou selfoon. Trouens, knoppies op jou iPhone is nou net blou skakels. Daar is nie dikwels selfs omsendbrief knoppies. So dit is net dinge wat gaan in en uit van die mode, en so dit is hoe jy dalk 'n meer moderne soek web vorm. Knoppies. So Skoenlus het baie mooi knoppies. So as jy wil blou knoppies, groen knoppies, blou, oranje, rooi. Bootstrap maak dit makliker om hierdie dinge te doen. Dit is die soort van dinge dat jy kan absoluut gister gedoen het met CSS en met HTML, maar dit is net 'n pyn in die nek. En so in plaas, wat Skoenlus sou het jy doen, is iets soos hierdie. As jy wil 'n button-- blyk dit is 'n HTML-tag het ons nie gebruik yesterday-- en jy wil dit om te kyk soos hierdie groen knoppie, jy letterlik net gee dit 'n klas, wat ons gedoen het oor gister, van "BTN BTN-sukses." Hoekom hierdie woorde? Twitter, die skrywers van Skoenlus, vorendag gekom met die woorde. Hulle kon genoem hulle enigiets wat hulle wil. Maar wat jy nou kry is iemand anders op Twitter, in hierdie geval, het uitgepluis het hoe maak jy 'n knoppie te kyk mooi en skoon en groen. Hulle verpak up wat funksionaliteit in 'n CSS klas, met die naam "BTN" en "BTN-sukses," sodat enigeen van ons kan gebruik dit nou sonder om eers te dink oor Dit. So het hulle weg onttrek die idee van 'n groen knoppie sodat ons nie hoef te bekommer oor uitvoering daarvan self. Ons kan eintlik fokus op die implementering van dinge van belang is vir ons. As ons blaai hier af. Fout boodskappe op die skerm. Soms wil jy 'n bietjie boodskap verskyn op die top van die leser. Enige van ons kan dit doen met 'n paar inspanning, ná les gister, Maar hoekom sou jy pla? Dit is so 'n vervelige estetiese detail. Kom ons staan ​​op die skouers van Skoenlus en laat hulle ons van dinge soos hierdie, waar ons letterlik, 'n rooi blokkie te kry, moet net 'n paragraaf te doen tag met 'n klas of-- jammer. "BG-gevaar" sou ons gee hierdie rooierige boks plaas. Kom ons gaan na die meer interessante dinge. As ek gaan terug na die top van hierdie bladsy en gaan na komponente, Nou is die wêreld kry meer interessant. Byvoorbeeld, baie algemeen is drop down menu soos hierdie. Dit sou 'n absolute wees pyn te implementeer. En dit was nie so lank gelede dat ons programmeerders sou hê om dit te implementeer soorte spyskaarte van nuuts af. Maar dit is so 'n algemene paradigma dat biblioteke soos Skoenlus net gee jou die vermoë om 'n te maak drop down menu ver, ver makliker. Daar is geen een manier om dit te doen, maar as ek lees die dokumentasie Ek sou sien dat, OK, moet ek gebruik hierdie HTML as ek wil 'n drop down menu wat optree soos dit. Net so, kom ons gaan na knoppie drop down. So dit is selfs liefhebber. As ek wil dit lyk soos 'n knoppie maar daardie klein driehoek beteken Ek moet kliek op dit en kry hierdie kieslys, hierdie is die gebruik van 'n taal JavaScript genoem. En ons kan almal implementeer hierdie in JavaScript. Maar weereens, dit is 'n wiel jy nie wil hê om uit te vind. Jy wil net om dit af te neem die rak biblioteek hiervoor. Kom ons gaan na iets soos vorder bars. So iets is gaaf. As jy al ooit 'n vordering gesien bar te beweeg oor die skerm, implementering wat dikwels is net 'n spin-ikoon. Trouens, net soos 'n eenkant, laat my na Ajax-- wat is dit? Ajax inligting? Oeps. Ajaxinfo. Laat my dink aan die adres. Daar gaan ons. So as jy ooit 'n animasie gesien terwyl die bladsy laai, of dink, of spaar, of om iets te skep, jy kan so 'animasies as hierdie, sien. So kom ons kyk na iets soos hierdie een hier, en laat ons kies 'n voorgrond kleur van groen, watter soort vriendelike voel. Kan ek hierdie klik? Kom een. OK. Ons sal net gaan met rooi omdat dit is wat ons kry. So hier het ons dit. So as jy ooit hierdie gesien het op 'n skerm, waardeur skielik blyk en dan skielik verdwyn, wat dit dit is die implementering van wat? Wel, dit is net 'n GIF. G-ek-F. En dit is 'n geanimeerde lêer, wat net beteken dit is soos 'n ou skool strokiesprent. Daar is net 'n klomp van die verskillende rame wat gaan [hakkel] en net herhaal. En dit is die skep van die illusie van beweging. So gou as 'n bladsy gedoen word laai of om iets te doen, Wat doen 'n programmeerder doen? Wel, hy of sy huide net hierdie beeld. So was dan al 'n progress bar is is soort van soos 'n fliek wat jy kyk. Jy is soort van onbewus van die feit dat dit niks eintlik doen, dit is net beweeg. En dan, wanneer dit gedoen vorder, hulle steek dit net of dit kan afskakel. En dit is al wat die magie wat gaan daar aan. Bootstrap gee jou iets wat 'n bietjie liefhebber, waardeur jy kan eintlik sien 'n persentasie as dit gaan, maar ook dit is net soort van 'n eenvoudige animasie. Kom ons kyk na 'n paar finale meer komplekse voorbeelde hier. Iets soos 'n modale. Is daar iemand weet wat 'n modale is? A modale venster is oor die algemeen een wat veronderstel is om beheer oor die voorgrond te neem en verhoed dat jy enigiets anders doen. Dit soort van dwing die gebruiker se aandag aan die middel van die skerm, sluit hulle uit, tipies, van alles. So as ek van stapel te stuur hierdie demo, die skerm sal oor die algemeen grys geword. Wel, hoe kan ons dit grys? Wel, ons waarskynlik net verander die agtergrond soos wat dit gister of iets soos dit. Miskien is dit 'n overlay dat semi-deursigtige. En nou sien wat jy kan doen fancy dinge soos hierdie. So as jy ooit klik op 'n knoppie en wil 'n bietjie pop uit te verskyn, jy kan dit doen. En so wat omgee all-- ja? Publiek: So met Skoenlus, om dit te kry opgeneem, is dit so eenvoudig soos soos gister Ons het die bladsy CSS style? David J. MALAN: Inderdaad. Regtig 'n goeie vraag. Laat my gaan na die slag. En ja. Al wat jy hoef te doen ten einde gebruik Skoenlus is in wese kopieer en plak hierdie drie lang rye van kode in die top van jou eie web page-- die hoof van jou page-- en jy so gou as moontlik. En daar is verskillende maniere om dit te doen dit, maar dit sou die eenvoudigste wees. So, wat is nuttig oor al hierdie dinge? Wel, as jy nie soveel die implementeerder van 'n webwerf maar jy probeer om dit te ontwerp, of jy wil iemand te voorsien met 'n draad raam diagramme, so te sê, of weergawes van wat net kunstenaar se wat jy wil doen, ek, om hierdie dag, sal dikwels gaan na 'n webwerf soos Skoenlus, waar as ek wil something-- implementeer soos onlangs op die kampus Ons wou implementeer 'n web-gebaseerde hulpmiddel vir die opgevolg Harvard se kursus katalogus, maak dit makliker vir studente om te blaai deur kursusse en kursusse by te voeg inkopielys, om so te praat, soort besluit wat hulle wou neem. Ek het probeer om te dink vir myself, wat bestanddele sou ons wil gebruik om hierdie te bou? Wat sou die gebruikerskoppelvlak wees? En net kyk deur 'n site soos hierdie of ander sulke biblioteek webwerwe, jy kan inspirasie kry, want Sjoe, Ek kan hierdie widget, en hierdie widget gebruik, en hierdie widget. En dan regtig wat die programmeerder begin om te doen, veral in hierdie dae in hierdie meer moderne wêreld van die web ontwikkeling, is programme is toenemend oor mekaar bedrading dinge. Soort van die neem van hierdie van die rak af, hierdie van die rak af, dit van die rak af, en jy wat die slim een om al daardie punte te verbind, maar uiteindelik iets te bou deur weer staan ​​op die skouers van ander, sodat jy nie 'n maand spandeer implementering van 'n dom drop down menu, wat eintlik moeilik om te doen as jy wil hê dit moet werk op Chrome, en Internet Explorer en Firefox, en enige aantal ander blaaiers. Dit is waarom daar is hierdie ryk kommersiële en open source sagteware industrie sowel. Publiek: So maak Skoenlus kry opgedateer en jy moet dan werk jou skakels? David J. MALAN: Dit maak. Wel, ja, dit doen. Bootstrap is tans op weergawe 3.3.6. En oor die algemeen wat jy sou do-- dit is eintlik noemenswaardig. Daar is wat oor die algemeen bekend as 'n semantiese weergawes stelsel in die wêreld. Nie almal doen dit. Maar as jy weergawe nommers gesien wat van die vorm x.y.z-- So byvoorbeeld, die eerste weergawe van 'n program kan wees 1.0.0. Of as dit is baie, baie beta, of selfs Alpha status, wat gebruik beteken op eie risiko, dit is nie werklik gereed vir die eerste keer, jy kan selfs begin 0.0.1 of 'n sodanige aanwysing. Maar as sagteware begin by weergawe 1.0, of anders gestel 1.0.0, Tipies, wat algemeen hierdie days-- maar nie omnipresent-- is Indien 'n maatskappy of 'n individuele programmeerder fixes sommige fout in 'n stuk sagteware wat werklik was 'n fout, waarvan die regstelling moet nie impak wat jy op all-- dit nie verander nie gedrag van die program, dit net fixes iets wat nie werk nie properly-- jy sou tipies werk daar die z waarde. Wat beteken iemand soos Kareem kon net gaan in sy webwerf, blindelings verander die weergawe vanaf 1.0.0 tot 1.0.1, stoor dit, stuur dit, en in teorie, nie te bekommerd dat hy net gebreek sy webwerf as gevolg van sommige gebrek aan funksionaliteit, omdat iets anders gebreek. Intussen, as ek die programmeerder of 'n maatskappy was om 'n paar belangrike maak verandering wat funksionaliteit voeg, Ek kan ons te werk om 1.1.0 want ek eintlik is verandering van die gedrag van die biblioteek. Ek gee jou dalk meer funksies. Ten slotte, as ek eintlik fundamenteel die sagteware te verander sodat veel dat dit sal breek baie gebruikers webwerwe of aansoeke, dan is ek verplig, in hierdie model, te te gradeer die groot weergawe nommer, wat 'n verbreking verandering. Met ander woorde, kan ek beëindigde ondersteuning vir diegene druppel down menu. So as jy 'n upgrade na 2.0, 'n halwe jou webwerf kan ophou werk. En dit is 'n soort van 'n sein om die gemeenskap oor wat is wat betrokke is by die maak van 'n opgradering. 'N Goeie geleentheid om in te samel. Ander vrae? Alles reg. Wel, laat ons 'n blik op 'n finale onderwerp in hierdie segment van ontwikkeling van tegnologie stapels, naamlik met betrekking tot selfone. So in die wêreld van selfone vandag jy have-- en iPads, en oppervlaktes, en al die soorte van devices-- jy 'n baie keuses wanneer dit kom by die implementering 'n aansoek of 'n webwerf vir mobiele toestelle jou kliënt. Dus net aan die staat voor die hand liggend, miskien deesdae, wat die platforms om ontwikkel in die mobiele ruimte? Wat toestelle wil jy dalk ondersteun met jou program of webwerf? Publiek: Apple. David J. MALAN: OK. So Apple toestelle. dit beteken dus iPhone, en dat beteken iPad, en miskien selfs iPod. Wat nog? Olivier? Publiek: Android. David J. Malan Android. OK. So Android fone, Android tablette, die Android mark is selfs Messier because-- en selfs Apple steeds deurmekaar. AANGESIEN eens op 'n tyd iPhone was 'n sekere grootte, en iPad was 'n sekere grootte, en iPod was 'n sekere grootte, nou Ons het iPad Mini, en die dun kinders en die iPhone 6 Plus en 6. Dit is besig om 'n gemors. Dit is besig om die Android wêreld. En ek sê dit met soort van rollende my oë, want van 'n ontwikkelaar se perspektief, is dit 'n pyn in die nek toe jy hoef nie Steve Jobs se visie van absolute beheer oor al hierdie spesifikasies. Apple doen steeds omdat hulle die kinders bou van die hardeware. Maar dit is 'n mooi ding, as Ek is 'n sagteware ontwikkelaar, om net te weet dat my iPhone is altyd iets hierdie groot, want nie wat beteken dat ek altyd weet hoeveel skerm Real Estate wat ek het. So as ek wil 'n ikoon stel in die boonste linkerkantste hoek, dit gaan wees in presies dieselfde plaas op die toestel elke kliënt se behoefte. Maar in die wêreld van die iPhone 6s en iPhone 6 Plussen en in die wêreld van Android selfone, dit is alles oor die kaart. En so gaan dit maak dit moeiliker om program dinge, veral gebruikerkoppelvlakke, want nou het jy om te begin reël jou gebruikerkoppelvlakke relatief, nie absoluut. En dieselfde is waar oor blaaier nie, en desktops en skootrekenaars vir jare omdat jy, natuurlik, verskillende skerm groottes. Wat nog? Jy kan oppervlaktes het, soos Microsoft. Jy kan have-- Publiek: Windows selfoon. David J. MALAN: Wat is dit? Publiek: Windows selfoon. David J. MALAN: Ja. So vensters fone kan nog gevind word. Soort soort Blackberrys, maar hulle hou probeer. En dan trosse ander toestelle. So vir die grootste deel, laat ons sê dit is hulle om oor te sorg op die oomblik. Sekerlik die Apple dinge, beslis die Android dinge, en onder Windows, soos oppervlak tablette blyk te wees vang op baie goed. En so onder die toestelle, As jy wil om uit te rol, kom ons sê, 'n mobiele teenwoordigheid vir jou maatskappy, watter soort van ontwerp besluite doen wat jy hoef te maak? Wel, ons het reeds gesê in die Apple wêreld, Daar is ten minste twee tale wat tipies gebruik word. Een is wat genoem word? Publiek: Objective-C. David J. MALAN: Ja. So Objective-C, wat is die ouer een. Dit is ook die taal wat baie Mac aansoeke word nog in geskrewe. Toe die ander nuwer een was? Publiek: Swift. David J. MALAN: Swift. En dit is die soort twee weet te beïndruk mense. Toe ek in die Android wêreld, Watter taal Android gebruik? Publiek: C #? Publiek: Java. David J. Malan Java is die taal van "du jour." In die Windows wêreld, seker, ons sal sê C # in daardie geval. So al hierdie is 'n soort van irriterende, want wat is die afhaal vir 'n besigheid eienaar of iemand wat net wil uitrol n mobiele teenwoordigheid? Soos, damn dit? Soos, as ek wil ondersteun 'n taamlike breë basis van gebruikers, Ek het om te skryf, wil dit voorkom, drie afsonderlike programme. Een in een van hierdie tale, een in Java, een in C #. En selfs as ek wil die funksie identies te wees, beteken dit nie saak nie. Ek moet nog steeds verskillende gebruik tale omdat Apple en Microsoft, en Google al steun verskillende omgewings. En dit het 'n uitdaging vir die jaar. Terug in die dag, wanneer mense gebruik om sagteware te koop op 'n rekenaar winkel in krimp toegedraai bokse, sou jy het om bereik vir die Mac rak, of for-- miskien hierdie baie klein Mac shelf-- of die groter Windows rak en koop 'n paar sagteware. En baie dikwels, was daar nie eens alles vir jou op die Mac rak. Hoekom? Wel, maatskappye het besluit as 90% van die wêreld, 95% van die wêreld het rekenaars, waarom selfs die moeite implementering van die dinge wat op Mac OS? As 'n aside-- n totale digression-- hoekom is dit dat Mac lyk so dig om virusse, en wurms, en sekerheidsbedreigings? Is Apple beter hieroor Beter te hou rekenaars te beveilig? Publiek: Kleiner gehoor? David J. MALAN: Dis waarskynlik die groter bietjie om dit te. So het die baie gebruikers van Mac het lank beweer, o, gebruik 'n Mac, jy immuun teen virusse wees, en wurms, en al hierdie dinge wat al lank geteister rekenaars. Dit kan wees as gevolg van Apple het 'n beter programmeerders en hulle skryf beter sagteware, of die bedryfstelsel is beter ontwerp. Miskien, maar waarskynlik nie. Dit is waarskynlik dat wanneer jy 'n 12-jarige, of 'n 30 iets soort van by die huis sit skryfwerk kwaadwillige sagteware om oor te neem die wêreld, jy gaan om te gaan na die veel groter teikengehoor. Die 95% van die wêreld wat dalk word met Windows of 'n variante daarvan. Daar is dus 'n bietjie aan beide kante. Maar om hul krediet, Apple, na my wete, het nie regtig beskou hulself as meer veilig, aangesien jy net nooi drama as julle wat aanspraak maak, sou ek dink. Alles reg. Sonder om te ver af dat, hoe doen ons dit op te los? Doen wat jy hoef te koop of te doen wat jy hoef te betaal drie verskillende mense te ontwikkel jou programme? Het jy kies een oor die ander? Wat moet jou te lei dink hier dink jy? Kareem? Nope. Iemand anders. Publiek: kom net met die hardeware. David J. MALAN: Kom met die hardeware? Wat bedoel jy? Publiek: Vir die omgewing. [Onhoorbaar] David J. MALAN: So dit is waar. Maar jou kliënte, Intussen kan iPhones het, hulle kan Android selfone het, het hulle dalk tablette gemaak deur Microsoft het. So hoe kan jy 'n mobiele strategie vir al hierdie verskillende gebruikers? Dit blyk dat indien dit kos, kom ons sê $ 1000 tot 'n iPhone maak aansoek, gaan dit om kos jou $ 2000 te maak 'n iPhone aansoek en 'n Android aansoek, of $ 3,000 om ook te ondersteun Windows toestelle sowel. Dit is waarskynlik nogal 'n understatement, en dit kan selfs nie 'n lineêre verwantskap soos dit. Publiek: As jy 'n program wil hê of nie, kan jy reageer webwerf. David J. MALAN: Goed. Publiek: Of jy kan 'n inheemse app het. David J. MALAN: Ja. So in al hierdie konteks hier, Ons het gepraat oor wat mense sou inheemse aansoeke noem. Dit is programme wat geskryf is in die moedertaal van die toestel. So moedertaal Objective-C of Swift kode, of in Java, of in C #. Wat beteken wanneer jy dit aflaai, laat ons sê Snapchat, 'n gewilde program, of wanneer jy dit aflaai Facebook vir 'n selfoon, jy die aflaai van óf die weergawe geskryf vir jou iPhone, of geskryf vir jou Android-selfoon, of geskryf vir jou oppervlak. Maar daar is 'n alternatief. Soos Olivier is met verwysing na, jy kan eintlik gebruik HTML 5 In plaas daarvan, die gebruik van wat is bekend as 'n web aansoek, waardeur jy net implementeer jou selfoon teenwoordigheid en enige funksie. Wat bedoel ek met mobiele teenwoordigheid? Soos jou webwerf wat jou het kontakbesonderhede, 'n lys van al jou produkte, miskien is dit 'n winkelsentrum wa dalk verkoop jy dinge daardeur. Wat jou aansoek is, jy implementeer, nie in Objective-C, of Swift, of Java, of C #, maar in HTML 5, wat die taal wat ons gekyk het gister, met JavaScript en CSS. En wat is lekker oor daardie drie is dat hulle hardloop, jy net wat stuk sagteware nodig? Publiek: 'n webblaaier. David J. MALAN: 'n webblaaier. En die beste wat ek weet, al hierdie toestelle kom met webblaaiers, sodat die gebruiker het nie ' installeer iets spesiaals. So jy kan net vertel jou gehoor, jou kliënte, gaan na acme.com in jou leser en jy sal net 'n web-gebaseerde ervaring wat nog vul die skerm, maar jy hoef nie te bekommerd wees oor al hierdie koste en al hierdie dinge kompleksiteit. Maar seker daar gaan 'n vangs hier wees, reg? Veral as ek daarop wys wat 'n paar jaar gelede, die heel eerste weergawe van mobiele aansoek Facebook se was meestal 'n HTML 5 aansoek. En hulle het meer onlangs, reimplemented dit in hul ander programme. So hoekom sou jy nie onmiddellik wil sê, Wel, natuurlik ons ​​gaan om dit te doen? Wat kan die verborge koste wees? Publiek: Prestasie. David J. Malan Performance? Hoe meen jy? Gehoor: Die inheemse app meer prestasie. David J. MALAN: So dit is ware, vir 'n paar redes. Ons kan die antwoord eenvoudig vir. En onthou ons bespreking van vertolk teenoor saamgestel tale. Dit is HTML 5 en daarmee, net om te wees duidelike, JavaScript-- algemeen geskryf JS-- en CSS is al geïnterpreteer tale, selfs al is net JavaScript is 'n programmeertaal. En so teenoor hierdie, wat sommige van hierdie saamgestel, ten minste hierdie three-- Doel-C, Java en C # - hierdie, in teorie, moet net vinniger wees. Maar daar is nog 'n werklikheid for-- Publiek: functionaliteiten? David J. MALAN: Wat is dit? Publiek: funksies. David J. MALAN: Funksionaliteit? Hoe so? Publiek: Gebruik die kamera af jou selfoon of iets. Jy kan diegene met die leser te gebruik. David J. MALAN: Presies. Hulle is sec-- Gehoor: [onhoorbaar] David J. MALAN: Dis 'n goeie een. Daar is eienskappe wat kom met selfone vandag wat nie deur ontwerp, vir veiligheid redes, toeganklik vir webblaaiers. Want dit soort sou wees 'n grillerige ding as net wanneer jy besoek google.com, of cnn.com, of enige website.com, dat die webwerf het die mag om te draai op jou kamera, neem 'n foto van jou, en gebruik dit dan. Maar jy wil nie 'n ewekansige webwerf wat jy besoek vir die heel eerste keer daardie vermoë het. En so what selfoon vervaardigers gewoonlik doen is hulle toegang ontken net om daardie soort van inligting om 'n leser, wat beteken dat jy kan die kamera nie te implementeer. Jy kan nie implementeer deurstuurkennisgewings, die biep wat jy op jou skerm met 'n kort boodskappe. En in werklikheid, selfs GPS is slegs soort van soort beskikbaar vir webblaaiers. As jy al ooit op 'n skootrekenaar of op 'n selfoon, opgetrek iets soos miskien cnn.com, maar ook plaaslike nuus stasies is geneig om dit te doen, jy gevra word dikwels met 'n message-- foxnews.com wil jou plek te leer ken. Goed te keur of te ontken. Wel, die leser probeer om toegang te verkry jou GPS inligting van jou selfoon. Maar gelukkig Microsoft, en Apple en Google besluit wat voel soos dit is 'n nuttige situasie, Ons wil Google Maps en ander gereedskap om te werk, maar ons wil nie mense uit kruip deur net sodat 'n webwerf om dit te doen. So laat ons soort ontmoet halfpad en gevra die gebruiker. Maar dit is nie noodwendig die geval met alle hardeware, soos die kamera en met druk kennisgewings en dies meer, so jy mag hê om offer sekere funksies. Maar ook prestasie. Dit is besig om minder opvallend deesdae, miskien soos LTE vang op en vinniger internet spoed op selfone, maar jy kan soort van voel die verskil. Soos 'n web-gebaseerde program voel net stadiger, tipies, as 'n inheemse aansoek, deels omdat 'n web-gebaseerde program per definisie is op die internet. Dit is in gesprek met die bedieners op die web. En as jou netwerkverbinding is stadig, selfs blaai stadig kan wees. Maar 'n boorling aansoek, moet jy reeds pre-downloaded-- waarskynlik toe jy by die huis uit die App Store, of jy ten minste 'n pre-afgelaai dit in sy geheel vroeër, ongeag jou verband speed-- en so nou het jy al die stukkies wat jy oor die algemeen nodig. Behalwe miskien 'n paar data wat afkomstig is van 'n bediener. So dit is kompromieë hier. Daar is soort van 'n middel kompromie, in werklikheid. En ek dink you-- Publiek: Gebruik die data op die regte pad. In die inheemse apps, kan jy [onhoorbaar] David J. MALAN: Absoluut. Daar is dus die regte pad kwessie, Dit is regtig irriterende As jy 'n paar spel of gebruik nie kan speel Sommige sagteware net omdat jy in 'n kelder iewers of in 'n hysbak. 'N boorling aansoek is veerkragtig met 'n hoër waarskynlikheid teen daardie, neem aan jy het al die data wat jy nodig het plaaslik. Daar is dus 'n derde opsie hier. En laat ons die spektrum te trek as inheemse app hier en web artikels hier. En wat is in die middel is iets called-- en ek dink jy mag hê gebruik die woord voor, miskien? Hybrid aansoek. En as die woord impliseer, dit is iets wat in die middel. Dit is soort van 'n web-program en Dit is soort van 'n inheemse aansoek. En wat beteken dit? Dit blyk daar frameworks-- 'n term uit earlier-- sagteware te gebruik wat ander mense geskryf het vir elkeen van hierdie platforms. Hierdie en nog ander toestelle. Trouens, dat ek kan gaan om PhoneGap, Dit is een so 'n raamwerk wat ek glo Adobe besit nou. Laat my gaan na die slag. Kom ons sien. Kyk of ek 'n lys van gereedskap kan sien. Hardware. Aan die gang kom. PhoneGap hardeware. Kom ons sien. PhoneGap hardeware toegang. Laat my sien of ons 'n bietjie kan vind kaart wat hulle gebruik het. Dit is op 'n ander site. Is dit nuttig? Geen. Dis nou mors ons tyd daar. PhoneGap hardeware. Toestelle. Toestel API. Nee, hulle het dit verskuif. PhoneGap. Kom ons gaan 'n laaste blik op hierdie en kyk of ek jou kan wys. Aan die gang kom. Installeer PhoneGap. Installeer foon. Kom. Hulle het alles herorganiseer. Alles reg. Ag, alles reg. Wel, hier gaan ons. Dit is nie al wat insiggewend, maar dit is wat ek is soort van op soek na. So PhoneGap is 'n raamwerk wat jou kan aflaai gratis wat gee jou sommige voorgereg kode, in wese. So 'n paar kode wat hulle geskryf het dit beteken nie veel van enigiets doen. Maar wat dit gee jou in wese is die ekwivalent van 'n program wat net sit 'n groot reghoek op die skerm van die gebruiker. Dit maak nie 'n URL bar, soos 'n leser, nie 'n adres het. Dit plaas net 'n groot reghoek. En jy instel hierdie groot reghoek, onder die enjinkap, om werklik te gaan na acme.com, of dalk m.acme.com, vir mobile.acme.com, maar die gebruiker nie weet hulle is op daardie adres. Al wat hulle sien, is die inhoud van die webblad. Maar wat is lekker oor hierdie wese 'n hibriede inligting is dat dit wat PhoneGap en ander maatskappye gee jou is hulle gee jou 'n bietjie van die kode in Objective-C of Swift, of 'n bietjie van die kode in Java, of 'n bietjie van die kode in C #, en in wese, al wat jy hoef te voorsien is minimaal die adres van jou web-gebaseerde program. En dan is dit bundel jy almal saam en jy het dit óf toegang tot jou webwerf via die internet, of jy selfs kas 'n plaaslike kopieer binne die aansoek, en dan jou aansoek spaar jou in iPhone formaat, Android-selfoon formaat, oppervlak-formaat, of enige aantal ander toestelle. Jy laai elk van dié weergawes om die Google Play-winkel, om die App Store, om die Windows Store, en dies meer. En nou kan jy al jou gehore aflaai werklik 'n inheemse app, hoewel die meeste van die kode was geskryf deur iemand anders, maar die inhoud van daardie inheemse app al vandaan kom, tipies, jou eie webwerf. So jy aanhou skryf jou webwerf in HTML, JavaScript, en CSS. So hoekom hierdie lyne vervaag? Hoekom het 'n baster aansoek dit is soort van inheemse, maar ook soort web-gebaseerde? Wat is die hele punt van die toevoeging van hierdie kompleksiteit? Ek bedoel, selfs nog net uit skrams deur middel van hierdie bladsy, die slag gids voel Dit het 'n hele klomp van die stappe vir my om te doen voordat ek can-- Publiek: Herbruikbaar Heid? David J. Malan Herbruikbaar Heid? Wat bedoel jy? Publiek: Van die bronkode. So dieselfde kode sal loop op al die verskillende platforms. David J. MALAN: Ja. Gehoor: [onhoorbaar] David J. MALAN: Perfect. As die tyd is styf en as jy nie dat baie developers-- Miskien het jy 'n ontwikkelaar en hy of sy beslis weet nie al hierdie environments-- beslis nie goed, en beslis nie kan program in al drie gelyktydig en die skip drie produkte in die tyd wat toegelaat word vir een, jy kan hom of haar te bou alles in HTML en JavaScript en CSS, en dan leer om 'n klein bietjie bietjie oor inheemse apps, net genoeg om af te laai 'n raamwerk soos hierdie, om dan laai jou produk te al die verskillende artikels winkels sodat jy nou 'n boorling aansoek. So dit lyk soos 'n wen-wen, maar weer, om duidelik te wees, wat die potensiaal koste of die gotchas? Publiek: Performance? David J. MALAN: Ja. Prestasie. Dit is moeilik om mondelings te beskryf. So as jy net op geloof 'n mobiele aansoek, 'n web-program sal tipies voer stadiger. Dit mag dalk nie heeltemal korrek nie, want in iPhone, en in Android fone, en Windows-toestelle, daar is altyd 'n soort van standaard blik en voel al die knoppies en die spyskaarte. En maatskappye in die web, kan jy probeer aan diegene estetika benader met biblioteke soos Skoenlus, maar die user-- n slim user-- gaan om te weet dat iets is nie heeltemal reg hier. En dit is goed, miskien dit is nie 'n groot deal. Maar die prestasie kwessie absoluut is 'n groot deal. Inheemse aansoeke sal neig om net wees veel meer ontvanklik en dus beter. En so, wat dan dalk die beste van beide wêrelde? As jy veral 'n klein maatskappy of 'n klein groepie, jy nie die hulpbronne het om 'n app in parallel ontwikkel op al drie platforms, en eerlik, voel soos dit is 'n slegte idee in elk geval want as jy dit uitrol en op al drie gelyktydig besef, Ons moet 'n paar kenmerke het bygevoeg of iets anders gedoen, nou moet jy dit in te los drie plekke, nie een nie. Wat is dalk die optimale strategie hier algehele, As hulpbronne en tyd is styf? Publiek: doen dit net op IOS. David J. MALAN: Dit is nie onredelik nie. iPhones, ten minste in die VSA, is super gewild. Android lyk nog dominante hê markaandeel, wêreldwyd, algehele. So jy is nie noodwendig verteenwoordigend van die geheel van die wêreld hierdie week. Maar dit is absoluut 'n besluit. Ek bedoel, op die kampus hier ek dink 'n paar gruwelike nommer of persentasie van voorgraadse het iPhones en nie Android fone. Maar in die buiteland, dit is soort van die teenoorgestelde. So jy besluit op grond van jou gehoor. Hoe weet jy wat jou gehoor het? Wel, het ons geleer 'n truuk gister. Jy kan hulle vra. As jy 'n gevange gehoor jy kan hulle 'n opname vorm stuur. Of jy kan net doen wat? Publiek: Google Analytics? David J. MALAN: Wat is dit? Publiek: Google Analytics. David J. Malan Google Analytics. Ja. Of selfs meer soort van tegnies, net kyk na jou eie webbediener logs. Want wat gebeur elke keer as 'n leser, of laptop, lessenaar of telefoon besoek jou webwerf? Hulle stuur wat HTTP-header wat wys jy wat die leser en OS wat hulle gebruik. So jy kan aflei, met 'n hoë waarskynlikheid, wat jou demografiese gebruik op die manier en dan aan te pas. So dink dis onaanvaarbaar. Dit is soort van sleg vir besigheid as Android gebruikers kan nie ons widgets te koop. Publiek: Of jy nou gaan vra of nie? David J. MALAN: Of jy gaan vra? So OK, jy kry waarvoor jy betaal. Publiek: of jou program gaan vry en of dit gonna-- David J. MALAN: OK. So miskien kan jy verhaal koste wat manier, or--? Publiek: Ek lees 'n studie keer wat gesê meer Apple gebruikers betaal vir programme versus-- David J. MALAN: Dis waar want hulle is reeds meer betaal vir hul toestelle. So nie onredelik 'n aanname. Gehoor: [onhoorbaar] David J. MALAN: OK. So as hulle meer bereid is om te betaal, dan na die hel met die Android-gebruikers. Hulle gaan nie betaal ons niks in elk geval. Ons kan net so goed fokus ons prioriteite, ten minste vir die eerste paar maande of 'n jaar, op IOS. Heeltemal redelike. Wat is 'n meer inklusiewe strategie as dit? Maybe-- wat is dit? Gehoor: [onhoorbaar] David J. MALAN: 'n Meer expensive-- so miskien belê meer in-- voort te gaan. Gehoor: Ja. Net 'n mobiele webwerf. David J. MALAN: Doen 'n mobiele webwerf en nie selfs bekommerd wees oor hierdie kompleksiteit. Of miskien 'n redelike strategie, wat selfs Facebook het, is begin met 'n hibriede aansoek, want dit is nie wat baie moeiliker om dit te doen as dit. Jy moet net 'n paar te lees dokumentasie en uit te vind hoe om dinge te laai na die App Store. So miskien moet jy begin met hierdie, sodat op dag een, jy kan al jou gebruikers te ondersteun. En dan, net soos Facebook en ander maatskappye gedoen het, wanneer jy die hulpbronne, jy het die mense, hoekom doen jy nie weer te implementeer net die IOS aansoek. Jy het nog iets vir almal, selfs al is dit 'n minderwaardige ervaring miskien, met die baster aansoek. Maar jy kan geleidelik uitrol en vervang jou korttermyn maatreëls van die hibriede programme met jou meer inheemse aansoeke. Publiek: Maar met 'n hibriede inligting wat jy sal toegang tot mobiele funksies het? David J. MALAN: Nie noodwendig nie. So miskien het jy 'n bewuste besluit vroeg op, jy kan net foto's op die oplaai moedertaal iPhone aansoek vir Facebook, maar nie op die Android-aansoek, aanvanklik, byvoorbeeld. En dit is 'n bietjie van 'n wit leuen omdat web programme het meer beperkings as hibriede aansoeke dit blyk uit, en as ons lees die dokumentasie vir PhoneGap en dinge soos dit, mense kom met maniere web-gebaseerde programme te gee toegang tot die kamera, so lank as wat jy gebruik 'n hibriede aansoek. Hoe werk dit? Omdat die hibriede aansoek, per definisie, het 'n bietjie van die kode in Objective-C, en Swift en Java, of in C #, dit kan toegang tot die hardeware. Nie noodwendig alles, maar dit kan baie goed wees die geval dat jy genoeg toegang tot die kamera te kry, selfs vir Android platforms, vir Byvoorbeeld, in die sin dat slinks voorbeeld. Enige ander vrae? Alles reg. Hoekom het ons nie neem ons 15 minute breek hier. Ons sal hervat op drie met 'n finale kyk na web ontwikkeling, databasisse, en Javascript.