Is Go for you? - GoSG
-
0:05 - 0:07good evening again this is the first time
-
0:07 - 0:11I'm seeing this okay I'm holding it up
-
0:11 - 0:15this is a gopher Singapore edition so
-
0:15 - 0:22gopher Merlion and the title of my talk
-
0:22 - 0:25if I speak it quickly
-
0:25 - 0:29oops stay
-
0:29 - 0:32nvm it doesn't want to
-
0:32 - 0:33title of my talk if you speak it quickly
-
0:33 - 0:38is Go for you? That's a pun there.
-
0:44 - 0:47All of us have limited mental capacity
-
0:48 - 0:52budget some of us can keep more things
-
Not Syncedlimited mind budget
-
Not Syncedin our mind some of us can keep less
-
Not Syncedthings in our mind but you know in all
-
Not Syncedcases it's limited so what do you mean
-
Not Syncedby mine budget if you know how to drive
-
Not Synceda car it's instinctive
-
Not Syncedyou still know you still need to know
-
Not Syncedwhere you're going so that consumes
-
Not Syncedenergy and mine budget so the point I'm
-
Not Syncedtrying to ask is what are your current
-
Not Syncedskills what you currently do today and
-
Not Syncedwhat you want to do tomorrow so for
-
Not Syncedexample if I currently write stuff for
-
Not Syncedthe web
-
Not Syncedtypically web front-ends I know
-
Not SyncedJavaScript quite well by definition but
-
Not SyncedI want to write back-end stuff around
-
Not Syncedthe right back-end servers I want to
-
Not Syncedwrite API service your look you know
-
Not Syncedbecause you can write back-end stuff in
-
Not SyncedJavaScript it's called no GS you still
-
Not Syncedneed to know about the rules of writing
-
Not SyncedAPI servers you still need to learn
-
Not Syncedabout that domain but you don't have to
-
Not Syncedlearn a new language because learning
-
Not Syncednew stuff consumes mine budget and it's
-
Not Synceddifficult
-
Not Syncedbefore coming to go I used to write in
-
Not SyncedJava so I know Java quite well and I
-
Not Syncedwant to write web front-ends well you
-
Not Syncedcan write web front-ends in Java it's
-
Not Syncednot impossible but it's like using that
-
Not Syncedto pull out nails so the point I'm
-
Not Syncedtrying to say
-
Not Syncedthe final point I'm trying to make is
-
Not Syncedyou need to have the right tools so what
-
Not Syncedis goal good for so hammer is good for
-
Not Syncedhammering in stuff that cow hammer is
-
Not Syncednot good for pulling out nails go is
-
Not Syncedgood for writing cloud services back-end
-
Not Syncedservice it's good for being well this is
-
Not Synceddebatable but those people who have
-
Not Syncedwritten in go think it's actually quite
-
Not Syncedsimple to read and understand it's good
-
Not Syncedfor having this thing funny thing called
-
Not Syncedimplicit interface satisfaction which
-
Not SyncedI'll talk about in a while it's got
-
Not Syncedfantastic concurrency and my favorite
-
Not Syncedfeature its Java done right it's
-
Not Syncedcross-platform
-
Not SyncedSogo is somewhat familiar that's the
-
Not Syncedfirst line hello will in go if you
-
Not Syncedignore the funny fmt in the capital case
-
Not Syncedit's not a class print line it just goes
-
Not Syncedway of denoting a public variable you
-
Not Syncedsee it's pretty much the same across
-
Not Syncedmany many different languages so goal is
-
Not Syncedsomewhat familiar and therefore somewhat
-
Not Syncedeasy to learn in fact go about design to
-
Not Syncedbe easy to learn anybody who comes from
-
Not Synceda Java environment or c-lite language
-
Not Syncedwill find go somewhat familiar go is
-
Not Synceddefinitely type safe I like to I like to
-
Not Syncedput up this example do you think this
-
Not Syncedcome this program will run do you think
-
Not Syncedthis program will compile really compile
-
Not Syncedit won't even compile let's try how many
-
Not Syncedof you have run your presentations
-
Not Syncedbefore I'm going to run the presentation
-
Not Syncedand let's read their messages go error
-
Not Syncedmessages are not too bad actually
-
Not Syncedso what it's done is taken this HTML fed
-
Not Syncedit into a temporary file called compiled
-
Not Synced0 dot go and the compiler complained
-
Not Syncedcannot use B type string in an integer
-
Not Syncedfor assignment can you do in JavaScript
-
Not Syncedyes or no yes let's prove it and you put
-
Not Synceddown a microphone
-
Not Syncedso I is definitely okay thank you my
-
Not Syncedanything so I is definitely an integer
-
Not Syncednow I is a string
-
Not Syncedjavascript is bad truffles I'm starting
-
Not Synceda flame war here actually not true
-
Not Syncedjavascript is a pretty good language now
-
Not Syncedin a godo so let's talk about go alright
-
Not Syncedthis one is not so obvious how strongly
-
Not Syncedtypesafe is go
-
Not Syncedwhy type safety at all but let's let's
-
Not Syncedlook at this code and let's see whether
-
Not Syncedit will compile at all
-
Not SyncedI declare a type called mynum as an
-
Not Syncedinteger and over here I declare a
-
Not Syncedvariable I it's of type my num and I
-
Not Syncedassign it the value two over here I
-
Not Syncedassign a variable J of type int integer
-
Not Syncedof value three can I assign I and J in
-
Not SyncedJava cannot can in ogs definitely can
-
Not Syncedbingo
-
Not SyncedNo let's see the error message some of
-
Not Syncedyou already guessed answer's no let's
-
Not Syncedlook at error message
-
Not Syncedcannot use type J cannot use J type
-
Not Syncedinteger as type mine um so my num
-
Not Syncedeven though was derived from an integer
-
Not Syncedis a separate typing goal so it is very
-
Not Syncedvery very strongly typed and this is
-
Not Syncedvery useful if you write big code if you
-
Not Syncedwrite code that is shared with loads of
-
Not Syncedprogrammers it's also very useful for
-
Not Syncedcode you have written years ago this is
-
Not Syncedthe equivalent of keeping everything in
-
Not Syncedits right place and the right place for
-
Not Syncedeverything but there's always two sides
-
Not Syncedto a coin keeping everything in the
-
Not Syncedright place takes a lot of time a lot of
-
Not Syncedbookkeeping nodejs
-
Not Syncedallows you to throw things all the place
-
Not Synceda teenager's bedroom nodejs is like a
-
Not Syncedteenager's bedroom go is like a
-
Not Syncedwell-kept well-groomed house so strong
-
Not Syncedstatic typing allows you to catch most
-
Not Syncederrors at compile time and the runtime
-
Not Syncedis quite predictable in other words
-
Not Syncedafter compiling and you deploy
-
Not Syncedproduction you can expect predictable
-
Not Syncedperformance but the flip side of it is
-
Not Syncedif you are trying to throw a no-show to
-
Not Syncedget a short script a language like
-
Not Syncednodejs Python or Ruby is much more
-
Not Syncedappropriate so guess the message is what
-
Not Synceddo you want to do what you already know
-
Not Syncedand what you want to do in the future so
-
Not Synceddecide whether you want to learn go let
-
Not Syncedme try to convince you that go is worth
-
Not Syncedlearning so go has implicitly satisfied
-
Not Syncedinterfaces those come in from Java know
-
Not Syncedabout Java interfaces go tries to keep
-
Not Syncedkeeping a house in order
-
Not Syncedstatic typing strong static typing more
-
Not Syncedpleasant so over here I declare an
-
Not Syncedinterface type it's called one D fire
-
Not Syncedand it's got one
-
Not Syncedthat in it called quantify and quantify
-
Not Syncedit takes nothing and returns an integer
-
Not Syncedso over here I declare another type my
-
Not SyncedSDR or my string it's derived from type
-
Not Syncedstring and it also has a quantify method
-
Not Syncednow how do I know there is a method this
-
Not Syncedfunny syntax which go created the way
-
Not Syncedyou read this line means quantify is a
-
Not Syncedmethod of s of type my string which
-
Not Syncedreturns an integer that's how you read
-
Not Syncedit so basically it's a matter of my
-
Not Syncedstring it says print that means printer
-
Not Syncedscreen quantifying s and was s its
-
Not Syncedlength of s it returns the length of s
-
Not Syncedas the funny has a final value this is
-
Not Syncedjust a side effect you just print out
-
Not Syncedthe string now I declare another type
-
Not Syncedcalled
-
Not Syncedmy int and it's derived from integer and
-
Not Syncedto quantify this integer I did tell me
-
Not Syncedwhether it's positive negative or zero
-
Not Syncedthat simple code for that so let's cut
-
Not Syncedto the chase
-
Not Syncedwell this code were let's go to line by
-
Not Syncedline
-
Not Syncedthat's just a print statement this line
-
Not Syncedis interesting
-
Not Syncedoh by the way go has this funny reversed
-
Not Synceddeclaration syntax so a variable Q is of
-
Not Syncedtype quantifier that's why it means it
-
Not Syncedis not quantifier is of type 2 it's the
-
Not Syncedother way around so variable Q is of
-
Not Syncedtype quantifier so the quantifier has a
-
Not Syncedquantified method Q equals my int 3 now
-
Not Syncedthat's another funny go Lang go language
-
Not Syncedsyntax all he's saying is victory and
-
Not Syncedmake it my it so I'm casting 3 to my end
-
Not Syncedthink of it like a constructor in Java
-
Not Syncedso that's a constructor kind of thing
-
Not Syncedprint queue 25 so 3 is a numeric it's
-
Not Syncedpositive so should be 1 I guess so
-
Not SyncedQ equals my string ABC and the length of
-
Not SyncedABC is 3 so we run this program the
-
Not Syncedfirst one should be 1 the second one
-
Not Syncedshould be 3 let's check it out and sure
-
Not Syncedenough it is 1 in 3 now
-
Not Syncedlet me edit my presentation and rerun it
-
Not Syncedanybody learn how to edit your
-
Not Syncedpresentation and rerun it let's change
-
Not Syncedthis to a minus four let's editing my
-
Not Syncedpresentation this is written in go by
-
Not Syncedthe week
-
Not Syncedreal cool stuff and let's run it again
-
Not Syncedso now it shows up as minus one can
-
Not Syncedeverybody at a backseater bottom rows
-
Not Syncedgood now no surprise if I change it to
-
Not Syncedzero it should be zero let's run it and
-
Not Syncedit shows up as zero if I change this to
-
Not Synceda four letter word maybe a five letter
-
Not Syncedword it just returns the length of the
-
Not Syncedstring now I'm going to show you goes
-
Not Syncedsee you routes anybody know see here
-
Not Syncedgood what do you think will happen here
-
Not Synced0x20 a see that's a hexadecimal number
-
Not Syncedwhat do you think what happened you
-
Not Syncedvolunteers shout out your answer really
-
Not Syncedwill one character well let's try it on
-
Not Syncedquantifying euro 0x20 AC is the Unicode
-
Not Syncedfor Euro the Euro symbol and the Euro
-
Not Syncedsymbol is a single character string and
-
Not Syncedit says 3 because the signal character
-
Not Syncedstring is actually an integer and it's
-
Not Syncedof length 3 really confusing stuff but
-
Not Syncedhere are the things they will trip you
-
Not Syncedup it's sea routes
-
Not Syncedalright why is this useful why are these
-
Not Syncedcar interfaces useful now let's say I
-
Not Syncedhave another type call exam paper and
-
Not Syncedexam paper you submitted it as Syrian
-
Not SyncedDom I shouldn't use Microsoft should use
-
Not SyncedGoogle stuff anyway that's the URL for
-
Not Syncedmy exam paper submission and let's say
-
Not Syncedexam paper is to create me quantify how
-
Not Synceddo you test this car stuff it's
-
Not Synceddifficult right it's gonna make a
-
Not Syncedservice call go out to the Internet
-
Not Syncedgrab the real exam paper and try to test
-
Not Syncedit and that's not very predictable the
-
Not Syncedinternet connection may be down I may
-
Not Syncedhave changed my exam my exam submission
-
Not Syncedbut I can have fake exam paper to HTTP
-
Not Synceddoes not matter dot see you in the doc
-
Not Syncedit never makes the internet call but
-
Not Syncedfake exam paper because it
-
Not Syncedsatisfies quantify it works and it's
-
Not Syncedgreat for testing so this is how I use
-
Not Syncedinterfaces all the time but this way of
-
Not Synceddefining interfaces is very very useful
-
Not Syncedbecause in Java or similar languages you
-
Not Syncedmust say this class implements this and
-
Not Syncedyou may find that the implements may be
-
Not Syncedimplements ABCD efg until Zach a very
-
Not Syncedvery long string of implements in go
-
Not Syncedthere is no implements cuit it's
-
Not Syncedimplicit implementation so long as it's
-
Not Syncedgot a quantifier method it works the
-
Not Syncedmost fantastic example of this is IO
-
Not Syncedreader and IO writer you can print line
-
Not Syncedto a database because it I all right I
-
Not Syncedwill read ok so that is the second
-
Not Syncedreason why go is such a good language if
-
Not SyncedI'm losing any of you if you want us any
-
Not Syncedquestions just shout out interrupt me
-
Not Syncedyes
-
Not Syncedso Java has if you have a functional
-
Not Syncedinterface yeah Java it onwards has
-
Not Syncedfunction interfaces and the question is
-
Not Syncedif you use the functional interface of
-
Not SyncedJava you have this kind of capability
-
Not Syncedsort of right and how is it different
-
Not Syncedfrom the Java interface well I like to
-
Not Syncedthink go start the refers Java copied it
-
Not Syncedbut here that's actually a very good
-
Not Syncedquestion
-
Not Syncedgo JavaScript and I'm sorry
-
Not Syncedleave go office JavaScript nodejs Java
-
Not SyncedKotlin all the new modern languages if
-
Not Syncedyou hear one of the authors of go speak
-
Not Syncedhis name is Robert by interesting
-
Not Syncedspeaker he says all these languages are
-
Not Syncedbecoming more and more alike they're
-
Not Syncedgetting more and more features Java is
-
Not Syncedgetting functional features node.js is
-
Not Syncedtrying to get classes so all these
-
Not Syncedlanguages are converging more or less
-
Not Syncedthe same language perhaps it differs
-
Not Syncedslightly different syntax who is
-
Not Synceddifferent go is very very limited I'd
-
Not Syncedwant to use this word but it is quite
-
Not Syncedrelevant limited stupid basic language
-
Not Syncedit is designed so that anybody coming
-
Not Syncedfrom a C language can look at it and
-
Not Syncedsolve kind of understand it it's
-
Not Synceddesigned so that you can write code that
-
Not Syncedis efficient that compiles quickly and
-
Not Syncedwhen you look at here five years later
-
Not Syncedyou can still understand it so goal is
-
Not Synceddesigned somewhat like Python what
-
Not Synceddesign Python was designed to be clear
-
Not Syncedand easily readable so many people have
-
Not Syncedactually come from Python to go
-
Not Syncedwhy because Python is really slow global
-
Not Syncedinterpreter lock
-
Not SyncedI came to go not from Python but from
-
Not SyncedRuby the rubies are fantastic language
-
Not Syncedit makes developers like me who write in
-
Not SyncedRuby very happy it's a very very fun
-
Not Syncedlanguage but but but yes group global
-
Not Syncedinterpreter lock it's really slow but
-
Not Syncedthat wasn't my issue it was fast enough
-
Not SyncedRuby was fast enough for me but Ruby
-
Not Syncedcode because it was so fun to write when
-
Not Syncedyou look at it five years later what am
-
Not SyncedI trying to write here go tries to
-
Not Syncedcircumvent that problem by anyway let's
-
Not Syncedgo to goes the feature which I want to
-
Not Syncedtalk about which is concurrency which is
-
Not Syncedsomething which for a person new to
-
Not Syncedprogramming finds it really hard and for
-
Not Syncedperson who does JavaScript finds it
-
Not Syncedquite hard as well so over here I
-
Not Synceddeclare a function let's call plus and
-
Not Syncedall it does for event however prints
-
Not Syncedthe plus sign that's all it does after
-
Not Syncedone second it Blin prints another plus
-
Not Syncedforever and ever
-
Not Syncedhere we have basically the same routine
-
Not Syncedbut it brings out a period brings out a
-
Not Synceddot okay
-
Not Syncedmost of us when we start out writing
-
Not Syncedcode we write code like this this this
-
Not Syncedone compiled so
-
Not Syncedlet's run it like this this one compiled
-
Not Syncedit all it's got some real error message
-
Not Syncedabout to execute select so I'm about to
-
Not Syncedexecute select fatal all goroutines are
-
Not Syncedsleep deadlock which means there is
-
Not Syncedsomething in NGO called a goroutine and
-
Not Syncedhis detected deadlock and its crash the
-
Not Syncedprogram and it's exited so okay let's
-
Not Syncedmake the program work
-
Not Syncedlet's fix me ok let's run + let's run
-
Not Syncedthis program ok pluses are running but
-
Not Syncedmy aim is to run + and go at the same
-
Not Syncedtime concurrently so as a beginner
-
Not Syncedprogrammer I would do that of course
-
Not Synceddo you think that will never work
-
Not Syncedno why
-
Not Synceda sequential execution plus is holding
-
Not Syncedon to the CPU I just want to let go
-
Not Syncedlet's prove it yes plus is hogging the
-
Not SyncedCPU doesn't want to let go it doesn't
-
Not Syncedlet go any time to run it all okay I am
-
Not Syncedthe creator I'm the right of this
-
Not Syncedprogram now dot can run correct yeah
-
Not Synceddon't runs by one go and plus and dot to
-
Not Syncedrun at the same time how do I do that
-
Not Syncedanybody we got go experts here come on
-
Not Syncedah yes the goalkeeper do ah start a go
-
Not Syncedroutine let's do that
-
Not SyncedI added three characters g/o and a space
-
Not Syncedand I've turned a regular routine into a
-
Not Syncedgo routine in the routine that doesn't
-
Not Syncedblock let's prove it hey it doesn't
-
Not Syncedblock it works but hold on this part the
-
Not Syncedcode is not executing this particle
-
Not Syncedwhich says about to execute select is
-
Not Syncednot executing how do I get that to
-
Not Syncedexecute as well
-
Not Syncedoh you guys are learning fast
-
Not Syncedput another make dot a go routine so
-
Not Syncedlet's do that
-
Not Syncedbang now there's something interesting
-
Not Syncedhere this comes from printing lying go
-
Not Syncedconcurrency this comes from about to
-
Not Syncedexecute select and then the pluses and
-
Not Synceddots what is actually happened here is
-
Not Syncedthe program ran put that into the
-
Not Syncedbackground it's running independently in
-
Not Syncedthe background put that in a background
-
Not Syncedthat took a few hundred microseconds
-
Not Syncedfraction of a millisecond so in a
-
Not Syncedfraction of a millisecond or maybe a
-
Not Syncedmillisecond later the print line
-
Not Syncedexecuted and I needed to put this select
-
Not Syncedhere select here select is a statement
-
Not Syncedwhich actually tries to determine which
-
Not Syncedgrow routine is ready to run but if I
-
Not Syncedremove that select if I remove the wait
-
Not Syncedforever what do you think will happen
-
Not Syncedthe program would actually the program
-
Not Syncedwould terminate
-
Not Syncedwhat happened to my goal routines if
-
Not Syncedmain terminates the core routines
-
Not Synceddominate let's prove that
-
Not Syncedso no more select it's commented out and
-
Not Syncedby the way the double slash if you've
-
Not Syncednot figured it out its comment
-
Not Syncedprogram exited no dots no plus so that's
-
Not Syncedanother feature of go
-
Not Syncedit has garbage collected the goal
-
Not Syncedroutines goal is a garbage collector
-
Not Syncedlanguage with a very very very
-
Not Syncedperformant garbage collector those
-
Not Syncedpeople coming from Java every now and
-
Not Syncedthen when the garbage collector collects
-
Not Syncedgarbage it stops the world the whole
-
Not Syncedsystem stops go garbage collector used
-
Not Syncedto be like that as well stop the world
-
Not Syncedfor a few hundred milliseconds the
-
Not Syncedlatest version or go stops the world for
-
Not Synceda few hundred microseconds so it doesn't
-
Not Syncedreally stop the world alright
-
Not Syncedthose people who know JavaScript will
-
Not Syncedknow no js' that's nothing new
-
Not Syncedno Jas has concurrency as well so let's
-
Not Syncedprove it I'll put it here
-
Not Syncedf12 to get console
-
Not Syncedso over here I've defined two JavaScript
-
Not Syncedfunctions function plus and function dot
-
Not Syncedand this is very JavaScript every 1000
-
Not Syncedmilliseconds lakh to the console a plus
-
Not Syncedevery 1000 milliseconds log to the
-
Not Syncedconsole a - no - a dot so when I run
-
Not Syncedthat well pluses go on to pluses four
-
Not Syncedpluses five pluses go on and on
-
Not Syncedif I run dot if I can type
-
Not Syncednow you got plus and dot's so javascript
-
Not Syncedcan do what go to us mind budget if you
-
Not Syncedknow JavaScript do you want to learn go
-
Not Syncedokay was it the same sort of sort of the
-
Not Syncedsame what I just did in my in my web
-
Not Syncedbrowser was I made use of a web worker
-
Not Syncedwhich will consume this is roughly
-
Not Syncedequivalent to one java thread which is
-
Not Syncedroughly equivalent to one operating
-
Not Syncedsystem-level thread so if my computer
-
Not Syncedhas four cores it can run four threats
-
Not Syncedat the same time at the same time you
-
Not Syncedcan have many many threads like an when
-
Not Syncedyou run for them at the same time a go
-
Not Syncedroutine is not blind the JavaScript web
-
Not Syncedworker know a goroutine well a million
-
Not Syncedgo routines can share one thread
-
Not Syncedsomebody actually did a demo a million
-
Not Syncedgo routine share one thread so it's a
-
Not Syncedvery simple very lightweight go routine
-
Not Syncedalmost does nothing but still a million
-
Not Syncedgo routines can say one thread and on a
-
Not Syncedfork or machine you get four million go
-
Not Syncedroutines so the next point I'll make is
-
Not Syncedah after Java II guess guess who the
-
Not Syncedcoffee
-
Not Syncedguess who do you copy the coffee go the
-
Not Syncedideas are very old the ideas are very
-
Not Syncedvery old right goroutine is actually not
-
Not Syncedthe correct word to use it's correct in
-
Not Syncedgo by it came from paper called
-
Not Syncedconcurrently concurrent sequential
-
Not Syncedprocesses it's called co-routines
-
Not Syncedspelled with a c' nobody paid attention
-
Not Syncedto co-routines except for the line for a
-
Not Syncedlong long time
-
Not Syncedright then goal came out and say
-
Not Syncedco-routines are cool and I'm gonna brand
-
Not Syncedthem goroutines and then everybody
-
Not Syncedstarted saying hmm Cortland once it as
-
Not Syncedwell
-
Not SyncedJava wants it as well so all these
-
Not Syncedlanguages are becoming known as the same
-
Not Syncedlanguage with different syntax they're
-
Not Syncedgetting features before coming to go yes
-
Not SyncedRudy as a Jordi no I programmed in Java
-
Not Syncedand I was looking for better Java so I
-
Not Syncedthought Scala is good
-
Not SyncedScala is an extremely powerful language
-
Not Synceddon't get me wrong it can do everything
-
Not Syncedyou can write dsls domain-specific
-
Not Syncedlanguages in Java it is so big that I
-
Not Syncedcan't read my code after one week I can
-
Not Syncedbe so undisciplined there I cannot read
-
Not Syncedmy own code after one week that is color
-
Not Syncedanyway
-
Not Syncedhow good is gos concurrency that's
-
Not Syncedthat's another thing I want to highlight
-
Not Syncedabout goal is course concurrency good go
-
Not Syncedis design the birthplace of goal was
-
Not Syncedactually Google we are at its birthplace
-
Not Syncedthe organization not here but
-
Not Syncedorganization and goal was invented the
-
Not Syncedstory goes when you're trying to compile
-
Not Synceda big C++ program that big C++ program
-
Not Syncedtook about 40 minutes to compile they
-
Not Syncedcompile the equivalent program in go and
-
Not Syncedit took less than a minute few seconds
-
Not Syncedbut compiled time is one thing how
-
Not Syncedperformin is it this is a whole web
-
Not Syncedbrowser in go now those people working
-
Not Syncedin no job no GSA say I can have Express
-
Not Syncedand I can write a similarly short web
-
Not Syncedbrowser in three lines or four lines or
-
Not Syncedtwo lines
-
Not Syncedlet's besides the point the point is can
-
Not Syncedno GS perform on my really crappy laptop
-
Not Synced11,000 requests per second with almost
-
Not Syncedno optimization well go optimization
-
Not Syncedcompared with nginx same laptop running
-
Not Synceda static website all it does is serve
-
Not Syncedhello well it came out with about the
-
Not Syncedsame 10,000 requests per second 11,000
-
Not Syncedrequests the second it's within the
-
Not Syncedarrow pens right what I'm trying to say
-
Not Syncedhere is for beginner who knows nothing
-
Not Syncedabout OS tuning who knows nothing about
-
Not Syncedconcurrency you can write code that's
-
Not Syncedproduction-ready
-
Not Syncedas good as engineer
-
Not Syncedso goal is designed for heavy-duty
-
Not Syncedback-end service production-ready
-
Not Syncedback-end service a really good really
-
Not Syncedperformant easy to read easy to extend
-
Not Syncedback-end service and my favorite feature
-
Not Syncedof all Java done right if you use pure
-
Not Syncedgo in other words you don't link against
-
Not Syncedthe C library you can link go against a
-
Not SyncedCLI breathe that's called C go if we
-
Not Synceddon't use Seco or use Windows specific
-
Not Synceddll's or Mac specific libraries you can
-
Not Syncedall you need to do to cross compile the
-
Not SyncedGnostic oh you go enable equals zero
-
Not Syncedturn off Seco specify an operating
-
Not Syncedsystem windows I've got clients that
-
Not Syncedinsist on using Windows what they do no
-
Not Syncednear windows old windows 386 windows now
-
Not Syncedx64 go Buell hello well it generates an
-
Not Syncedexe file a windows 386 exe file let's
-
Not Syncedlook at the complete list
-
Not SyncedHayek's
-
Not SyncedWow Android Darwyn what's dragonfly
-
Not Synceddon't know what dragonfly is FreeBSD
-
Not Syncedsome funny always called illumos I don't
-
Not Syncedknow about it
-
Not Syncedah this is really really really
-
Not Syncedinteresting javascript was a web
-
Not Syncedassembly yes cool can compile to the
-
Not SyncedJavaScript web assembly binaries and
-
Not Syncedthese people are using it because they
-
Not Syncedwant to play games on the web browser
-
Not Syncedand go a so performin they put a whole
-
Not Syncedgame engine in the web assembly with
-
Not Syncedwith physics and everything in there
-
Not Syncednice target before go is just another
-
Not Syncedtarget it targets all these platforms my
-
Not Syncedplatform happens be Linux AMD 64 so
-
Not Syncedlet's go back another presentation
-
Not Syncedif you won a coat download the whole
-
Not Syncedpresentation download its there soohyun
-
Not Syncedgithub lots of other presentations there
-
Not Syncedas well but this one is there and you
-
Not Syncedcan run your presentation like I ran my
-
Not Syncedpresentation thanks for listening thank
-
Not Syncedyou questions comments flamewars yes
-
Not Syncedokay the question was usually
-
Not Syncedmachine-learning folks used something
-
Not Syncedlike Python and Python is a fantastic
-
Not Syncedlanguage for machine learning because
-
Not SyncedPython was written by dude over in
-
Not SyncedRussell my pronouncing that name all
-
Not Syncedwrong
-
Not Syncedhe's a mathematics professor so before
-
Not Syncedtensorflow came out you had numpy and
-
Not SyncedPython was an absolutely great language
-
Not Syncedin that area go is not it's not a
-
Not Syncedmachine language optimized language is
-
Not Syncedthe wrong tool to use go for machine
-
Not Syncedlanguage but go is very very good for
-
Not Synceddata engineering before you can do
-
Not Syncedmachine learning you need to get your
-
Not Synceddata in shape you need to clean your
-
Not Synceddata so go has data flow libraries which
-
Not Syncedcan clean up massive amounts of data
-
Not Syncedreally quickly but not the actual
-
Not Syncedmachine learning itself any other
-
Not Syncedquestions comments reactions you like go
-
Not Syncedis it worth learning yes okay my friend
-
Not Syncedhere has a difficult question for me he
-
Not Syncedpromised me a difficult question doesn't
-
Not Syncedmatter repeat your question yes
-
Not Synced[Music]
-
Not Syncedokay okay I guess I guess you can
-
Not Syncedsummarize the question is summarized the
-
Not Syncedquestion is can you share pine can you
-
Not Syncedshare memory effectively if you got
-
Not Syncedsixty instances of the same thing can
-
Not Syncedyou share memory sort of kind of it will
-
Not Syncedeat up it will be 60 times the memory
-
Not Syncedokay
-
Not Syncedso let's answer actually is a very very
-
Not Syncedgood question
-
Not Syncedlet me attack let me attack the first
-
Not Syncedquestion first let me address the first
-
Not Syncedquestion first go binaries can get
-
Not Syncedpretty big pretty fast that hello world
-
Not Syncedwas about one to two megabytes why is it
-
Not Syncedso big why is a hello world almost two
-
Not Syncedmegabytes
-
Not Syncedyes when you write a Java class
-
Not SyncedHelloWorld in Java class and the class
-
Not Syncedfile is a few hundred bytes a go
-
Not Syncedexecutable is a few megabytes almost two
-
Not Syncedmegabytes but the Java file can run on
-
Not Syncedits own you need the JVM which is 50
-
Not Syncedmegabytes or more the last time I
-
Not Syncedchecked the entire JVM for go the entire
-
Not Syncedgo runtime is embedded in the binary the
-
Not Syncedentire go runtime the handles go
-
Not Syncedroutines the entire go runtime that does
-
Not Syncedall this smart implicit interfaces
-
Not Syncedentire go runtime that does strong
-
Not Syncedstatic types is embedded in that one or
-
Not Syncedtwo megabytes in the hello world so most
-
Not Syncedgo binaries are self-contained most HTTP
-
Not Syncedis not self-contained but you can make
-
Not Syncedit self-contained and can make a pure
-
Not Syncedcoding net HTTP or the net library
-
Not Syncedactually makes use of the operating
-
Not Syncedsystems resolver library which means
-
Not Syncedit's a time I'm a clear link library and
-
Not Syncedmany pure go operas don't like it so
-
Not Syncedthey turn off see go and you can produce
-
Not Synceda pure goal binary and that consumes
-
Not Syncedmaybe about five megabytes to eight
-
Not Syncedmegabytes the entire web browser
-
Not Syncedresolver stack so that's why gold
-
Not Syncedbinaries can get big quite fast the
-
Not Syncedentire docker binary was written in go
-
Not Syncedand it's about fifty megabytes I think
-
Not Syncedright so really really huge projects
-
Not Syncedlike docker kubernetes cube control cube
-
Not SyncedCTL they win roughly tens of megabytes
-
Not Syncedwhen you deploy a goal binary in a
-
Not Synceddocker container I don't use Alpine
-
Not Syncedbecause I guess I just used from scratch
-
Not Syncedin docker terms from scratch means start
-
Not Syncedwith an empty container empty docker
-
Not Syncedcontainer and in my go binary is five
-
Not Syncedmegabytes my docker containers five
-
Not Syncedmegabytes really tiny docker containers
-
Not Syncedso the mantra for goal is don't
-
Not Syncedcommunicate by sharing memory right
-
Not Synceddon't communicate by sharing memory
-
Not Syncedshare memory by communicating so
-
Not Syncedeverything in goal is independent and
-
Not Syncedunshared non share you communicate
-
Not Syncedacross different processes using
-
Not Syncedchannels any other comments questions
-
Not Syncedreactions if not I think Xiao Zhang yes
-
Not Syncedyes I've used a patch a benchmark to
-
Not Syncedtest the let me repeat the question for
-
Not Syncedthe audience the question was is go now
-
Not Syncedbecause that hello world was static
-
Not Syncedcontent static web browsers everybody
-
Not Syncedknows it's blazingly fast right any any
-
Not Syncedperson can write a fast static web
-
Not Syncedbrowser the question was is go the right
-
Not Syncedtool for IO intensive dynamic content
-
Not Syncedand absolutely that's the purpose of
-
Not Syncedgoal it's designed to have very very
-
Not Syncedfast io intensive stuff if if everything
-
Not Syncedis compute intensive like video encoding
-
Not Syncedgo will not be very effective because
-
Not Syncedthe compute or CPU resource hungry
-
Not Syncedprocess will grab the CPU but if it is
-
Not SyncedIO intensive go is the perfect fit much
-
Not Syncedmuch much better than no GS know GS
-
Not Syncedrocked the world because it multiplexed
-
Not Synceda lot of i/o intensive process
-
Not Syncedon two one thread go multiplex the same
-
Not Syncedthing actually cause some copy no GS in
-
Not Syncedtheir sense but knock not one trip on
-
Not Syncedall available threads if you have a 64
-
Not Syncedcore CPU 64 processes can be called the
-
Not Syncedtask versus one process in no js' and
-
Not Syncedyet that yes ok take two days
-
Not SyncedI'll just because need ok
-
Not Syncedgo good for writing back in service
-
Not Synced. go is fantastic for writing back-end
-
Not Syncedservice second question is cool
-
Not Syncedresource-hungry does go require a lot of
-
Not Syncedresources like Java for example in the
-
Not Syncedanswer is no go is very very efficient
-
Not Syncednext to see in terms of efficiency if C
-
Not Syncedwas the ghost and there is one it uses
-
Not Synced100% go would use maybe of 110% maybe
-
Not Syncedhundred five percent so it is very very
-
Not Syncedresource efficient thank you
-
Not Synced[Applause]
- Title:
- Is Go for you? - GoSG
- Description:
-
Speaker: Siu Yin
Exploring why and if you should learn Go, covering Go's strengths: Strong static typing, implicitly satisfied interfaces & concurrency
Siu Yin is a regular GoSG speaker and runs his own MediaTech company using Golang.
Event Page: https://www.meetup.com/golangsg/events/266039423/
Produced by Engineers.SG
Recorded by: - Video Language:
- English
- Duration:
- 45:38
Estee Tey edited English subtitles for Is Go for you? - GoSG | ||
Estee Tey edited English subtitles for Is Go for you? - GoSG | ||
Estee Tey edited English subtitles for Is Go for you? - GoSG | ||
Estee Tey edited English subtitles for Is Go for you? - GoSG |