InthatlanguageisJavaScriptDaysstreamisgoingtobe a littleonthebasicsides.
We'reonlygoingtobecoveringtheverybasics.
ThesyntaxwilldosomebasicDommanipulation, andthenwe'llloadboot, strapupwithJavaScriptandtake a lookathowitchangesonceweactuallystartintegratingthatversusjusttheCSSpartofbootstrapshots.
Everybodyinthechat.
Wehave a bunchofpeoplethataresuperexcited, apparentlytolearnjavascripttoday.
Kept a kindofmellowUm, thefolksthat I justmentionedputtogetheranawesomeIfyouhaven't watchedthelastdreamthatcookieclickerstreamwheretheyputtogetherthatgame, thathappybirthdaygamewassuperawesome.
We'regonnaoutputthattodolistsowecanshowcasethingslike a raiseondheforeach.
Andthenwe'regoingtogointomaking a versionofthetodolistinthedom.
Soactuallyusingitwiththingslikedocumentcreateelement, a penchildactuallyintegratingJavaScriptwiththevisualsoftheHTMLsothatwecanactuallystartlookingatdynamicwebsitecontentcreation.
Theywanttocreatethattodolist, willfire a bootstrapwilltake a lookatsomeofthecomponents.
Let's take a lookathowtheychangeoncetheactuallyseethepostopjobscriptintegratedonthatwillprobablybeitfortoday.
So, forexample, I couldcounseldotlogwhatever I want.
If I let's seeif I ifJakeworriesloadedinhere, itlookslikeitissoDollarSignistypicallyJakeworrieswhatJakeWorryisassignedtoondhe.
Mostotherlibrariesdon't reallymesswiththat.
Itlookslikeif I'm notmistaken, that's this.
F meansthatthat's a functioninJava.
ScriptsetofObjectsareFunctionsIt's kindof a weirdthing, butJavascriptlookslikehasloadedJakeworryhereinthiscontext.
Um, andyoucoulddo a wholebunchofstuff, getcounseledout, logmynameif I wantedThiocold, Timlikethatanditdoesoutput.
Colton, I could, uh, I coulddo 1234 EachfunctioncouncildotLogonthisactuallyshouldtakeinan e confidante.
Luckeithershouldworkif I'm notmistaken.
Uh, mighthavemissedthatcouncildotleOh, did I?
Oh, did I missthisup?
Maybeit's Travis.
Normally, thisshouldwork.
I mighthavescrewedthisup.
Oh, the, uhrightthis.
Let's trythat.
Herewego.
Youcanseethat I'vedoneinfederationoveranarray.
Thisissortof a thingthatyoumighthaveseenifyou'recomingfromCS 50 andyoulookedatseaorotherlanguageslikePython, wehavelistsyoucanactuallyliterateover a listusingthisfunctioncalledforeach.
We'lltake a lookatthatinthenearfuture.
Butyoucanseethat I haveoutputinmyWebbrowserandtheabilitytosortofcreatecode, youknow, usingan i.
D.
That's notterriblygreat, a sortoftexteditor.
That's notparticularlygreat, causeit's kindofthisismorelike a what's called a rebel.
Soread, evaluate, printandloopwhereit's sortofallowsyoutoonelineat a time.
Butgenerallythisisnotsomethingthatyouwoulddofor a largeprogram.
Thisisonlyfortesting.
Generallyspeaking, um, letmegoaheadand, um, readthechathere, so I nevergottounderstandsomeone.
KinshasnevergottounderstandthatDomthing.
Can't waittogetthethingdone.
Yes, sothedawnwilltake a lookatthatdocument.
Objectmodelisjust a wayofrepresenting.
It's thewaytheWebbrowsersortofrepresentsyourWebpageinmemoryin a tree.
Andsowe'llseehowthathowthatworks, atleastintermsofhowwecanmanipulateitusingsomebasicfunctionsthatare a partofmostWebbrowsers, comewithallthesefunctionsbydefault.
AndsothatiswhatDomscriptingis.
Justanotherantiantiplayer.
I justturnthisdream.
Whatisyourqualifications?
Doyouhaveanyreference?
I mean, sorry.
Letmereadtherestofit.
SayingthisisCS 50 is a boldstatement.
Interesting.
Um, so I'vebeenprogrammingformaybe 11 12 yearsnow.
But I amnot a Javascriptexpert, notevennearlyclose.
But I completelyunderstandyouryourquestionthere.
Um, I justdon't wantotherpeopletothinktheyget a goodeducation, buttheguydoesnotknowanyinteresting.
Soitbringsupthequestionofhowdoyoudefinequalification, I suppose, inthedomaininwhichyou'renecessarilylookingtogettutelage.
So I wouldsayifsomebodywereaskingmetomaybeteachthemhowtodevelopanenterpriselevelapplicationinJavascript, a friendandmaybesomethingbuiltinreactthatscaledtomillionsofendusers.
I certainlyprobablywouldn't bequalifiedtodosomethinglikethatbecause I haven't necessarilydevelopedanythinglikethatorhavetheinsightanddoessomethinglikethatandallthedesignconsiderations.
Butifyou'relookingformaybesomethingalongthelinesofjustshowingpeoplehowtogetstarted, thebasics, howtothinkintermsofbasicprogrammingandcomputation, I wouldsaythat's somethingthatsomebodywiththerightlevelofexperienceiscertainlycapableofdoing, andthat's prettymuchthebestthat I atleastpersonallycanoffer.
Butmanyofthefolksthat I workwithhave, I wouldsayacademically, morequalificationstonightiscertainlyDavidatleasthas a PhDand, uh, on a sandalatthis 0.20 yearsofteachingexperience.
Soitjustdependsonyourperspective, I supposeifyou're a softwareengineer, um, andarelookingtogetsomevalueoutofthisdream, youprobablywon't becauseyouyourselfprobablyhavethesamelevelifnotMaurlevelofexperiencethan I do.
But, um, youknow, it's allrelativeattheendoftheday, aslongaswecanhopefullygetsomepeoplebootstrappedintothebasicsofJavascript, interactingwithWebpages, makingsomesimpleAPS, thenwe'llconsider a successcurrentlytaking a diplomaingamedevelopment, saysTempusStation.
Um, gamedevelopmentiskindof a specializedbeast, but I wouldsaythatformyexperience, havinggeneralsoftwareandapplicationdevelopmenttransfersovertogamedevelopmentgamesaresortof a verymonstroustypeofapplicationthatwith a lotofcomplications, especiallywhenyou'redealingwithrealtimefeedbacktoyourendusersonday, reliablefeedbackyouknownothavingstutteringframes.
There's a lotofdesigndecisionsthatgointoimplementingengines, moderngameengines, thingslikeunityandunriel.
Anditcouldbetough.
Two.
Itcouldbetoughdesigninggamesonmakingthemfeelgoodin a waythat's notgenerallyapproachedinotherrealmsofsoftwaredevelopment.
So I don't know.
I wouldsaythatgamesareprobably a specialclassofapplicationdevelopment.
Um, butyeah, justanotherantiantiplayer.
Okay, thatsoundsgood.
I likethathonestanswer.
I thinksettingup a shortdescriptionforthisdreamaboutyouandwhoyouarewouldgreatlybenefitnewviewerstoknowwhattoexpect.
I I'm I don't feelsortofpleased, youknow, sortoffurtheringthatkindofexpectation.
I thinkweshoulddefinitelypushexpectationsandtryingnewthingsexperimentasmuchaswecanonBean.
There's plentyofchannelswhichdon't evendo a lotofgamedevelopment.
Youknowallofthejustchattingchannelsinwhich, actually, sofarthestreamhasfollowedthatformat, I thinkmorestrictlybutbutyetshowsyourbrowserhistoriesis a blackwidowoneHey, thisis a testaccount.
Youknow, justfortherecord, astheysay, 12 years, I'llnevercatchup.
No, absolutely.
Youwilldefinitelycatchupand 12 years.
I saythat.
And I meansomeyearsarebetterthanothers.
Youcouldbeprogrammingfor 12 yearsandhave a yearwhereyou'rekindofjustlike, notreallylearning a lot.
Andthenyoucanhave a yearwhereyou'rejustreallyfocusedonlearningandgettingnew, gettingcomfortablethroughenvironments, newlibraries, newlanguages, newtools.
New, uh, newmathematicalframeworks.
So 12 yearsiskindof a relativethingissomeone's twoyearsspentwellmightbemorevaluablethansomeone's 12 yearsspentpoorlyandbeingsurroundedbytheincrediblysmartpeoplehereatHarvard.
It's becomeveryclearhowtruethatistome.
Generalquestion, saysRaccoon.
Whywouldoneusean I.
D.
E over a texteditorandviceversa?
IdeaslikeEclipseoffersomuchfunctionality, so I don't understandwhysomeonewoulduse a texteditorinstead, I thinkitcomesdowntopersonaltaste.
Ultimately, itdependsonwhereyoucouldbemostproductiveandwhereyoucanenjoy a programmingthemost.
I personallypreferdevelopinginthe S code.
And I'm gonnafireupthe S codenow, justsothatwecanatleastsortofgetonestepinthedirectionofactuallyprogrammingon.
And I'm actuallygonnajustdragthisrightonovertoheresothatitopensup.
I likethe S code.
I liketextEditorisgenerallyspeakingmorethanideaspersonally, but I can't arguewiththefactthatideaslikeEclipse, likenetbeanslikeIntelAjay, offer a tonoffunctionalitytodevelopersthatareworkingespeciallyinstaticallytypedenvironments, theJavabased R C sharpbasedenvironments.
HavingcodecompletionandIntel a senseandothersortoffeatureslikethatprofilinganddebuggingfunctionalities.
Superusefulwhenyourprogrammingin a staticallytypelanguageandyouwanttogetthemostperformancemachinegamedevelopment.
That's where I'veseenitthemost.
Butit's usedallacrosstheboard.
Um, I usedideasfor a longtime, andthen I endedupfindingthat I didn't likehowheavyweighttheywere.
There's somuchmagicgoingon.
I likebeingclosetomycodeandclosetotheprocess, thedevelopmentprocess.
Andso I personallyenjoyprogramminginthenightin a texteditorand V s codeandGSCodekindofhas a hybridsortof I d functionality.
Ithasdebuggingfunctionality.
Ithas a greatpluginsystem.
Um, ithasn't tell a sense.
Soyougetcodesignaturesortofstuffoffthegateandvariablecompletionand a lotofreallycoolstuffbuiltintoitthatyoudon't getwithsomethingverysimple.
A simpletexteditor, Um, butit's it's ultimatelyreallyuptoyou.
I wouldsay.
Dowhatyoufeelbetterwithifyougetmoreproductivityoutofan I d.
Usean I d.
IfyouenjoyusingsomethinglikeSublimeor V S CodeorVimor E Max, thenusethosebecauseultimatelyyoubeingmoreproductiveiswhat's mostimportant.
Butthat's anexcellentquestion.
Thanks I couldn't buryforthequestion.
Thegamezonesaysyoushouldignorethetrollsinthechat, and I wouldn't recommendthechatbeonthescreen.
Thisisgoodstuff.
Andeventheyoungstudentscangetsomethingoutofthis, um, toveertoyourpoint, I wouldsay I wouldsay a, uh, trollscanbepoisonous, but I don't thinkthequestionaskedaboutwas a troll.
I thinkheactuallywas.
Theyactuallywerebringinguphonestconcern.
Andso I actuallydon't mindquestionslikethat, questionsthatsortofaskforaccountabilityandforcredentialsandsortofthatsortofthing.
I thinkpeoplehaveeveryrighttobeconcernedaboutthisandarecuriousandreallywanttoknow.
Aretheygetting a goodamountofvalueoutofthepeopletherewatching?
Cantheyexpecttobetaughtthecorrectinformation?
Andcertainly I mightgetthingswrong, buthopefully, atleastbyteachingthesestreamswell, get a senseofhowyoucangoout.
AtleastfigurethingsoutonyourownandgetthesenseofhowtoprogramandGoogleandstackoverflowandallsortsofotherresources, uh, tocarryyouintoyourtrainingas a Webdeveloperoranyotherdevelopergamedeveloper.
Perhapsifyoupaidattentiontothegamedevelopmentstreams, If I'm trainedin C++, howeasyisittopickupotherlanguages?
I'veheardpeoplesayit's easyallthetime, but I havemydoubts.
Languageshas a 1,000,000 differentthesyntacticalthingsyoucandowithit.
Ithasn't a tremendouslyexpansivestandardlibrary.
It's a veryeasylanguagetoscrewupinbecauseitdoesallowmanualmemorymanagement, althoughwithsmartpointers, youcansortofcircumventthat.
To a degree, I'm not a C plusplusexpert.
Sodowntherabbitholeof C++, I can't necessarilyvouch.
Butifyou'regoodat c++ thanalmost, I wouldsayanyotherprogramminglanguagesisprobablyprettyapproachable, somethinglikeJavascriptsandlikeiPhone.
Ifyou'renotusedtodynamicprogramminglanguages, itmightbe a bitof a cultureshockforyoutogoinfrom c++ or C toeenvironment, whereyoujusthavetosaveourequalsbar.
There's a lotofsortof, um, differentwaysofthinkingindynamicversusstaticallytypelanguages.
So I wouldsayProbablydipyourtoe a littlebit, trypython, maybefirstpythons a veryapproachablelanguage, thenlearnJavaScript, thenlearnedRuby.
Maybeifthat's somethingofinteresttoyou.
Lotsoflanguages, lotsofparadigms.
What's theprerequisite?
Beforelearning, JavaScriptaskedto a car.
Notreallymuchof a formalprerequisite.
I wouldsayhavingsomeprogrammingexperiencewillbehelpful, butwe'regoingtosortofassumetheverybasics, andactuallyattheexpensearetosortofpreventusfromtakingtoolongtoactuallygettingintocodingstuff.
Let's dotheveryfirststepintoactuallygetting a jobscript, app, upandrunningjobsgetprogramupandrunning, andthat's havinganindexthatHTMLtohoistourjob a scriptintoandactuallyrunit.
Thethingthat I likeabout V s codein a lotofmoderntexteditorsandwe'veshownthisonstreambeforeisthatyoucanusethesimplehtmlfivestartingpoint, forexample, inthe S Codeorsomeanalogandanothertexteditor.
Andif I hittab, noticethatnow I sortofhavethisfullybuiltoutbasicHTMLtemplatethat I canthenfilloutasneededsowe'lljustsaythisisgonnabeJavascripttestoneright.
Anditalreadyadded a scripttagwhichwehaven't reallytaken a lookatbefore.
Notesthatwehave, forexample, a stylesheettag, a linktagwhichisreferencing a style.
Shecalledme a NaziSS.
Wehaven't madethat, soit's justkindofassumingwe'regonnaaddthatit's alreadysortofaddedthismaindotJsbithereinthescripttag, I startedtosay, Oh, um, I'm assumingthatthere's gonnabe a mainthat J.
S andthesamefolder, but I haven't createdyet, soit's notgonnaactuallydoanything.
Andsoall I needtodoinordertosortoffulfillthatisjustrightmaindotCSSherenewfilemaindotJshere.
Um, sohereinindexdothtml, I havethislinkThisreferencetoMainJsIt's hereinmyhead, althoughwe'llseethatthisisn't necessarilygreatforVanillaJavascript.
Ifyou'reifyou'renotdoingtherightthingstoensurethatthingsgetloadedintherightorder, we'llsortofseethatherein a second, um, inMainethat J s wecando a fewinterestingthings.
Sotheveryfirstthingthat I'm goingtodois I'm justgonnawritealertHelloworld, whichissortofliketheanalogof, I guess, sayinghelloworldinpythonwithprintAndwecoulddoitwithconsuldotlogaswell.
But I'm goingtojustdo a simplealertthatsaysHelloworldandloadthepage.
Let's goaheadandloadthispageup.
Once I dothat, youcanseethatthisisn't somethingthatwereallyhavethecapabilityofdoingbefore.
Wereallydidn't havemuchdynamism, youknow, thatwaspossiblebefore, andthisis a brandnewsortofthing.
Whyareactuallyprogramminghasgotexcellentplugandsupport, ButAdamhasmuchofthesamefeaturesandevensomeothercoolfancyfeaturesthat V s codedoesn't havetomyknowledgelikecollaborativeediting, which I thoughtwasreallycool.
See, forexample, languageslikeJavascriptactuallyveryeasytoat a glancepartslike, forexample, if I weretowritehereinmymaindotJscodeif I wantedtoraid a functionthatsometwointegersif I saidfunctionssomethattookan X and A y all I havetodoisjustsay, return X plus y semicolon.
Um, I wouldsayincertainsenses, Yes, you'llbegettingusedtodynamicallytypeprogramminglanguagesrightoffthegate.
Andthismightbe a challengeifyoudecidetoworkfor a morestructuredprograminglanguagelike C or C plusPlusorJobor C Sharp, whereexpectedtoknowhowtotypeyou'revariables.
Um, butlearninghowtoprogramfundamentally, I thinkyoucanlearnwhetheryou'reusing a dynamiclanguageorecstaticallytypelanguage, eventhefolksthatmighthavelearned.
See, forexample, thefolkslearningassemblybeforethemmighthavetalkeddownonthosefolksforlearning a languagethat, tothem, was a higherlevelabstraction.
Right, becauseanassemblyyou'rebasicallytalkingwithyourCPU, plusorminus a levelofabstractionwiththewith C you'reactuallyattractingontopofassembly.
Soyou'remissingoutonsomeofthethingsthatyouneedtoworryaboutinassemblythatyoudon't needtoworryaboutin C inpythonandinJavaScriptandinsomeotherdynamicallytypelanguageslikeLouis, you'remissingoutonsomeofthethingsthatyouneedtoworryaboutinSeethatyoudon't needtoworryaboutinthoselanguages.
Ultimately, I thinkgetencompassingviewofprogrammingghettoghetto, learnhowtoprogramin a dynamiclanguage, learnabout a programandecstaticallytypelanguage.
I thinkprimarilyjustbecausethemytheories, becausethepoolofdevelopersissolargethat a lotofpeoplearejustkindofgettingtiredofsomeofthesetbacksofJavascriptHence s six, whichisthemoremodernversionofJavascriptsortofrefiningthelanguageonbeingbroadcastingitout, refiningit, usingdevelopingtoolsliketheenginefornode.
I wouldsaytherearesomeweirdeccentricitiesofJavascriptthatyou'llhavetogetusedto.
I wouldsay, probablyit's I wouldadvisemaybelearningPythonfirst.
Ifyou'regonnalearn a dynamiclanguage, I personallikePythonmore.
I feellikeit's more.
It's engineered a littlebitbetter.
But, um, youknow, it's uptoyou.
Really?
Justdowhateveryoufeellikedoing.
Um, okay, letmejustmakesurethat I havecomeupherewiththechat.
There's a lotofchatmessages, whichisawesome.
I don't wanttotakeuptoomuchtimejustbecause I I know.
Somefolkswereeagertodivein, butmanysomelookslikesomefolkstalkingabouttheir C and C plusplusknowledgeSouthAfricaasks, WillyoueverdopythonKiviinyourstream?
It's veryinteresting.
Heavilydocumented, Hardtolearn.
I builtanappleCannotimplementgarbagecollection.
Pythonkitty.
I'm actuallynotsurewhatthatis.
PythonKivi.
A crossplatformpythonframeworkfor a neweyedevelopment.
Ifyoureallygetpeoplesupposedtodoinspiteofallthecrazythingsthathas, likeconstructors D structures, copy, move, constructors.
Orperhapsbecauseofthis, I think C++ isprobablythelanguagethatmademethinkthemostabouthowthingsrunatboththelowerlevelinaboutlanguagesyntax.
Sojustanotherantiantiplayer I thinkhe's talkingabout, I think, Andre.
SoweknowAndres, not a trollorjust a veryactivememberofourcommunity.
Thedifferencewithconstructorsand C plusplusforotherprogramminglanguagesthattherearemultipleversionsofit, thatyouhavetosortofhardcodeandspecifyinadditiontothingslike D structures.
And I thinkthat's wherehewas, sortof, um, sortoflayingoutthedifferencebetweenmaybe C plusplusanotherlanguage.
Mostprogramminglanguagesdon't specify D structures.
C++ iskindofuniqueinthatcontext.
I haven't lookedatlanguageslikerust, ergo, um, toseeiftheydo.
I knowGoactuallydoesn't reallyhave a traditionalobjectmodelinandofitselfonandrust I'm nottoofamiliarwith.
Butmostoftheobjectorientedprogramminglanguage, especiallyinthedynamicallytypelandscapejusthave a oneconstructor, likeinpython.
Um, yeah, I wouldsaykindoffallsinto a grayarea, butyeah, I wouldsayit.
ISS, umusewhatarecalledprototypes, whichis a wayforanobjecttoconstructitselftoreference a oneobjectthatyou'vealreadycreated, whichiskindofactingas a class.
It's a veryoddsortofwayofdoingit, butit I thinkittechnicallyspeakingisanobjectorientedprogramminglanguage.
Andwiththe S six, theyaddedclasssyntax.
Soyoucanactuallyspecify a classinsteadof a prototype.
Andtheymadeit a littlebitsimilartohowyoumore.
Somewhat?
I woulddosomethingin, forexample, pythonor c++ versushowyouwoulddoitpreviously, whereyouhavetodefine a prototypeinallofthesortoffunctionsthereafter.
Um, itcouldget a littlebitodd.
Um, C++ isanextensionof C.
Giveme a garbagecollectionthreatoverhavingtoallocateand d allocatememory.
Ifyouwanttobein a mobileappdeveloper, ifyouwanttobe a webdeveloper, ifyouwannabe a gamedeveloperifyouwanttobe a systemsdeveloper, um, ifyouwanttoprogramaregreenknowsifyouwannabe a microcontrollerdeveloper, youtofindwhatyoulikeandactuallymakestuffandmakecomplicatedthingsandtheydon't havenecessarilyneededthis.
Um, I wantedtoprogramgames, so I boughtbooksongames.
I read, Ah, howenginesatthetimeandthisisabout 10 yearsagowereworking.
Um, 10 or 11 yearsago I gotintounity.
I learnedhowunityworks.
I gotintoloveto d.
I readtutorials.
I triedtounderstandfundamentallywhatgoesonlayerbylayerofabstraction, andeventuallyyousortoffillinallthesegaps, especiallythingslikeStackOverflowandGoogleandallofthegreatbooksthatareout.