Тёмный

The Why of Go 

InfoQ
Подписаться 229 тыс.
Просмотров 174 тыс.
50% 1

InfoQ Dev Summit Boston, a two-day conference of actionable advice from senior software developers hosted by InfoQ, will take place on June 24-25, 2024 Boston, Massachusetts.
Deep-dive into 20+ talks from senior software developers over 2 days with parallel breakout sessions. Clarify your immediate dev priorities and get practical advice to make development decisions easier and less risky.
Register now: bit.ly/47tNEWv
--------------------------------------------------------------------------------------------------------------------------------------
Download the slides & audio at InfoQ: bit.ly/2pK6Uwi
Carmen Andoh provides the historical context around the technical decisions of the Go language to better understand its concurrency primitives, garbage collection, and small standard library.
This presentation was recorded at QCon San Francisco 2017.
For more awesome presentations on innovator and early adopter topics check InfoQ’s selection of talks from conferences worldwide bit.ly/2tm9loz

Наука

Опубликовано:

 

26 мар 2018

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 144   
@karltraunmuller7048
@karltraunmuller7048 6 лет назад
Excellent talk. I like it when things are put into context.
@Bkgoodman11
@Bkgoodman11 2 года назад
The whole part about "simplicity" was almost jaw dropping. "I thought it was just me"...
@goffe2282
@goffe2282 2 года назад
Nice talk. I was looking for a Go talk that I could have on in the background while cooking. This was the perfect level for me. When I have time to sit down and watch source code in front of a computer then I'll do that. Really nice talk.
@kamilziemian995
@kamilziemian995 3 года назад
Excellent talk. It expleins very well why programmers need language like Go.
@ismaelgrahms
@ismaelgrahms 10 месяцев назад
Excellent talk
@anvarichn
@anvarichn 3 года назад
Brilliant!
@CO8848_2
@CO8848_2 4 года назад
This video got me thinking about a lot of things, very interesting to think of the design choices.
@CO8848_2
@CO8848_2 4 года назад
So go combines the best of event and threads because it has thread programming model (not callbacks as in event loop) but channels and green threads are much faster than mutex locks and system calls in threads. That took a long time to come out, I think.
@foljs5858
@foljs5858 4 года назад
Unfortunately green threads are not the be all end all - they have their own issues. Early Java had them, and abandoned them. Other newer languages too, e.g. Rust tried them and opted for actual threads too.
@mayuraitavadekar7968
@mayuraitavadekar7968 2 года назад
Static Typed like Java and C++. Faster than Java on every benchmark. Faster compile time than C++. Readability like Python. Go is absolutely great language.
@TroenderTass
@TroenderTass 2 года назад
Yeah right. No generics, inefficient utility-functions for basic things like finding the length of a slice, horrible code origanization (everything that has to do with text, both io and basic strings is containted in the same module), insanly rigid and basic concurrency model, and it's simply just ugly, like python. Who the hell would put Python in the cathergory of great programing languages. Also, nil everywhere. It has no exception nor error handling so you have to return errors everywhere and check for them. To even suggest it is a great language, what were you thinking? At best, it is an ok tool for small apps for people who like corky weird stuff that is very imperfect in nature. The this needs to stay as a niche and never ever be considered in real app development.
@uziboozy4540
@uziboozy4540 2 года назад
Rust > Go
@blu3_enjoy
@blu3_enjoy 2 года назад
@@uziboozy4540 rust is pozzed
@pubsvm7355
@pubsvm7355 2 года назад
@@TroenderTass What do you prefer over it?
@praveens2272
@praveens2272 2 года назад
@@pubsvm7355 ☕ my dear friend
@tonygair
@tonygair 2 года назад
Fantastic!
@nonya69
@nonya69 Год назад
Excellent!!!!!
@osamaa.h.altameemi5592
@osamaa.h.altameemi5592 4 года назад
this talk is on another level.
@AeroPR
@AeroPR 2 года назад
Amazing talk
@bikramsarkar8544
@bikramsarkar8544 2 года назад
Very Informative
@DOPEBEATZBOYS
@DOPEBEATZBOYS 4 года назад
no one in the room laughed at the lougle joke smfh
@ezengondolkozom3700
@ezengondolkozom3700 5 лет назад
This has some programmingcirclejerk potential.
@BattousaiHBr
@BattousaiHBr 3 года назад
the 1st rule of PCJ is you don't talk about PCJ outside of PCJ.
@AlqGo
@AlqGo 5 лет назад
Thank google-ness for 1.25 speed!
@taliluvhengo5928
@taliluvhengo5928 5 лет назад
1.25? Noob! Pros go 2X
@hipstergod
@hipstergod 5 лет назад
@@taliluvhengo5928 2x??? Amateur, gods use video speed controller chome plug in get on the 3x speed or more, time has invaluable don't waste it watching things at 2x
@taliluvhengo5928
@taliluvhengo5928 5 лет назад
@@hipstergod haha cool. Will check it out
@pengdu7751
@pengdu7751 4 года назад
same. I set it to 1.25 and then forgot that it's already at 1.25
@Skorps1811
@Skorps1811 4 года назад
God bless you sir, I was about to close the video :D
@evolagenda
@evolagenda Год назад
Loved this
@AIMBOTKATFISH
@AIMBOTKATFISH 2 года назад
I wonder what she would say about async/await in NodeJS. Seems a bit more forgiving than callbacks.
@AhmedTahagg
@AhmedTahagg 5 месяцев назад
32:37 I am confused, I tried this. The zero value of a map is nil! If you try to insert things it will panic (kind of like a null pointer exception waiting to happen)
@atikenny
@atikenny 6 лет назад
Amazing talk!
@rtukpe
@rtukpe 3 года назад
Loved this. Made me realise why some things in Go exist and don't exist
@blacknirvana2605
@blacknirvana2605 4 года назад
Thank you, _Lady from 1983_. Great talk.
@Zamicol
@Zamicol 5 лет назад
Thank you for taking the time to make this talk. Great work!
@KrishnaDasPC
@KrishnaDasPC 3 года назад
From my experience I do not trust nodejs at the server side, you can't sleep peacefully with it. One of the bulk excel generation done in PHP was taking too much time even more than 45 mins , exact same thing rewritten in Go took only 50 seconds to complete. Also deployment is easy as we need only single binary, also binary size is very small in size compared to Java. But frameworks in Go is still not mature as in Java or other popular languages so you have to write lot of code yourself compared to them. But once written it will run super fast.
@manit77
@manit77 3 года назад
True about node. Java is so bloated and being run by oracle is a big turn off for a lot of developers.
@arunabraham9382
@arunabraham9382 2 года назад
I might wonder what made it so slow. Have you tried the same with swoole Coroutine?
@justinhj1
@justinhj1 5 лет назад
With regards to utf-8 it's not always the best. utf-32 is better if you are working with a lot text in some Asian languages for example, since every character is the same width meaning you can index into an array and know where the characters are. You can't do that with utf8 and utf16.
@rk-lu6ob
@rk-lu6ob 3 года назад
tbh, you very rarely need to pick a character by its absolute index or offset. Most real world text processing tasks need iteration, one character at a time, and in this case there's almost no difference. For UTF-8 it would require a bit more processing (like calculating whether it's the last byte of the character) but it's negligible and can be hidden in the iterator logic. Go's range does exactly that (in the form of "for _, c := range str" where c gets the next rune aka unicode character) and it's implemented in the language syntax itself, not even in the standard library.
@gerardgauthier4876
@gerardgauthier4876 5 лет назад
All programming languages are built-up abstractions over a set of basic operations. Choosing a programming language is accepting the abstractions presented in that language... Everything else is religion.
@needlessoptions
@needlessoptions 5 лет назад
Well said broski
@mgmartin51
@mgmartin51 4 года назад
All religions are built-up myths over a basic set of life questions. Choosing a religion is accepting the myths presented in that religion. Everything else is programming.
@dracoford755
@dracoford755 4 года назад
Gerard Gauthier absolutely not, metalanguages and LISP dialects operate are entirely different than static languages. The difference between dynamic and static languages; intermediate verifiers and proof oracles, makes each language a different ‘flavor’ of the IPS
@dgusev
@dgusev 2 года назад
Wrong, "accepting the abstractions" is a way not a whole story, there are much more properties to consider. You have a very narrow understanding of the subject.
@gerardgauthier4876
@gerardgauthier4876 2 года назад
@@dracoford755 Oh yeah! I keep forgetting that LISP resides in the realm of magic and not algorithms and hardware. Like I said... religion.
@ultimategotea
@ultimategotea 4 года назад
Nowadays, the core war has been pumping those thread count #s up QUICK (i.e 64 cores on a single dye w/ 2 threads per core on a DESKTOP CPU WITH DESKTOP TEMPERATURES).
@AaronMartinColby
@AaronMartinColby 5 лет назад
Great talk. History is important. Ignore the troll haters.
@cshri123
@cshri123 3 года назад
Lovely video . Excellent explanation
@alexzahui6801
@alexzahui6801 3 года назад
Insightful talk. thanks
@just1689
@just1689 5 лет назад
Wow. What a great talk. Thanks for sharing!
@infoq
@infoq 5 лет назад
If you are interested in more content about Go you can check out the dedicated page on InfoQ www.infoq.com/golang
@TheSurvivor1963
@TheSurvivor1963 Год назад
OOP didn't start with Smalltalk, it started with Simula-67 already in 1960s.
@KozLoTV
@KozLoTV 3 года назад
Impressive talk!
@StefanoBozzoni
@StefanoBozzoni 5 лет назад
Completely agree with evrything! compliments!
@jujijiju6929
@jujijiju6929 2 года назад
On a tangential note, there's a project called OpenResty which takes nginx and embeds the lua programming language's LuaJIT into it and gives you a few different slots where you can plug in your code. I've been using it to serve a small website with this and it works like magic. It's probably not the right solution for everything, but it's neat for a lot of things.
@jonbikaku6133
@jonbikaku6133 8 месяцев назад
Bruh
@belearnt3902
@belearnt3902 2 года назад
Hi all, what do you think the future of GO? should i learn it and change my stack to GO?
@alexisfibonacci
@alexisfibonacci 8 месяцев назад
You don't have to change your stack. Have it as one of your tools.
@mmuschalik
@mmuschalik 5 лет назад
There are not many videos that try to defend Go. So I appreciate this. I must say, I'm still not convinced, I'm skeptical. I could just as much use another language and turn off language features with a build plugin. OK, maybe concurrency is good in Go, but green threads are not unique to Go, nothing new there. Please enlighten me.
@kamilziemian995
@kamilziemian995 3 года назад
How Carmen Andoh say in this talk "Go isn't about revolution. It's about simplicity.", I think this pretty well sums Go. If you need language that is clean, simple, elegant Go can be very good choice. If you want something new, you need to check other languages. "I could just as much use another language and turn off language features with a build plugin." I guess that createors will respons along this line. "Yes, you can. But this is unelegant workaround, also can be very unstable. We want elegant language from the start.".
@BattousaiHBr
@BattousaiHBr 3 года назад
you are correct, but simply "turning features off" is not really something you can expect when dealing with someone else's code. the point of go's forced simplicity is meant to facilitate maintainability and readability, not only when revisiting your own code 1 year later but also to pick up other people's code.
@LoneIgadzra
@LoneIgadzra 3 года назад
Just try it. Simple language, way more than the sum of its parts. Learning it is more exciting than you would think. It doesn't need defending.
@alexisfibonacci
@alexisfibonacci 8 месяцев назад
Go to other languages is like comparing CISC to RISC or is it RISC to CISC?😊
@_stanlymathai
@_stanlymathai 2 года назад
You're not paid to program, you're not even paid to maintain someone else's program, you're paid to deliver solutions to the business.
@jamalyusuf7502
@jamalyusuf7502 5 лет назад
Carmen gets it - go is what the world needs today.
@MR-cf7xi
@MR-cf7xi 4 года назад
All the Go's 21st Century Characteristics was addressed by Erlang in 80's \0/ Heck maybe Joe Armstrong was a time travel!
@recklessroges
@recklessroges 4 года назад
A good PHP programmer can, (with a little effort) become an adequate golang programmer. (I doubt that they would ever manage to become a good Erlang programmer.) If amazing things like Erlang, Haskell and Scheme were easy then we wouldn't need the {idiot} "languages" for children like PHP and node.js
@TheDesvendador
@TheDesvendador 3 года назад
​@@recklessroges care to elaborate why these are "children" languages? you know that there are billion dollar companies running on this langs, right?
@marcinborawski7033
@marcinborawski7033 4 года назад
Thank you for this talk, very insightful.
@commel
@commel 11 месяцев назад
The Genealogy tree moves Javascript as a sideline of Java. Besides the name similarity there are not futher similiarities than both are coded in textform...
@jneiberger
@jneiberger 5 лет назад
I just stumbled across this video because I'm dipping my toe into the Golang waters. I don't know who this is, but she is a fantastic teacher. I love listening to someone who can explain WHY something is the way it is. That makes it so much more accessible.
@einsof1232
@einsof1232 3 года назад
All that problems was solved with Erlang. No one give love to Erlang that make me sad 😞
@rhakka
@rhakka 2 года назад
People give props to Erlang all the time. That’s a lot different than saying others should use it. I would personally say Elixir is more receivable by a wider audience but it still doesn’t have as much weight behind it or anybody pushing it or … essentially marketing.
@NicholasMaietta
@NicholasMaietta 6 лет назад
Finally!!! I get to be first with a video comment!! Took years to get to this point.
@neuemage
@neuemage 6 лет назад
oh yeah this channel is so crowded
@LetsFixThatError
@LetsFixThatError 5 лет назад
_lol_
@AlqGo
@AlqGo 5 лет назад
Oof!
@34Spare34
@34Spare34 4 года назад
Kinda fun that there is no php on the map.
@betims
@betims 4 года назад
why?
@marcusbrsp
@marcusbrsp 3 года назад
Spaghetti code language
@kernv0llig
@kernv0llig 3 года назад
Not in the map but she talks about it. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-bmZNaUcwBt4.html
@blackhatson13
@blackhatson13 3 года назад
god bless her
@HiddenUsename
@HiddenUsename 4 месяца назад
@20:35 did she really say "a new idea of a callback"?! LOL
@JonathanRintala
@JonathanRintala 4 года назад
Cool idea 🔥
@mohamedhajr5370
@mohamedhajr5370 5 лет назад
Amazing talk, thank you so much.
@FritzFeuerbacher
@FritzFeuerbacher 4 года назад
You can see that Go was influenced by Modula-2, which also started out as a systems programming language.
@kamilziemian995
@kamilziemian995 3 года назад
I think it is so great that Go DOESN'T have things like pointers arithmetics.
@RyanMartinRAM
@RyanMartinRAM 3 года назад
Go has pointers.
@kamilziemian995
@kamilziemian995 3 года назад
@@RyanMartinRAM Yes of course, you can just write p := &i to get pointer p. But it dosen't have pointer arithmetics so code like varArray := [3]int{0, 1, 2} p := &varArray p = p + 2 shouldn't work.
@khuongduy1897
@khuongduy1897 5 лет назад
WOW!
@xinyueou4857
@xinyueou4857 5 лет назад
She stopped right at the point that she was supposed to tell us how better goroutine is compared to other thread model. Guess we need to read it ourselves, but then why I am watching this.
@JudgeFredd
@JudgeFredd 5 лет назад
Interesting speech
@LeetMath
@LeetMath 5 лет назад
tbh i think the gopher picture is kind of ugly (pls don’t be mad lol)
@mr_vazovski
@mr_vazovski 4 года назад
She has an impressive ability to talk while saying nothing. But I've still watched the full 48 minutes.
@storyjaam
@storyjaam 3 года назад
Wow. That’s what I was thinking 😂
@storyjaam
@storyjaam 3 года назад
She hasn’t provided any coherent logic behind WHY. Yet the talk seems interesting 😝
@ksceriath8346
@ksceriath8346 5 лет назад
"Before I get started, I guess my name is Carmen..." O_o
@kevincasey2036
@kevincasey2036 5 лет назад
TLDR: hype appeal to authority it should be faster than a JVM straw man assumptions about simplicity
@samifouad
@samifouad 3 года назад
This is not just a great talk.. it's one of THE GREATEST TALKS EVER. So well researched. So well presented. So well argued. If this was a Go file, we need to import "reaction" and use StandingOvation(). Thank you.
@zenshinsuru
@zenshinsuru 5 лет назад
don't waste your time. there is no concrete argument here. it's frankly all over the place. I came here looking for reasons to like go, she didn't help. What I would like to know: - In practice, what exactly are the benefits of green threads over async programming? I have never used green threads before so I'm very curious about how it actually works in practice. - How to handle errors? I do not exaggerate when I say I find it extremely tedious to check errors. This not only slows down my productivity, it also results in very complex code. There must be a better way of doing this (I'm a fan of how rust handles errors).
@LaPingvino
@LaPingvino 4 года назад
Hello Zen Shinmae. About your first question, they both solve different problems and you can actually implement many concurrency models in Go. Language supported green threads however create a common language for implementing many concurrency models, it's a productive system together with channels, and they enable you to write your code synchronous first. It's encouraged in Go to write all your code synchronous when possible, which makes it trivial to make sure it's correct. Then making it work async is something you can do really simple with the Go language support, similarly to running a task in the background in Bash. About errors, it's tedious but extremely necessary, and it avoids your code blowing up all over the place. That said, your prayers are heard and a first implementation of a less tedious way of handling errors without giving up the safety Go errors give is in the works for Go 1.14. But also, Go errors are just values, so you can program with them and handle them however you want. Rob Pike has a great article about this. It all boils down to many things she said in her talk, but you will have to try out and experience the difference to know that she is not talking nonsense.
@CO8848_2
@CO8848_2 4 года назад
You clearly missed the point
@manit77
@manit77 3 года назад
You're right. But to her defence, she's more on the business development side of things and not the design and architect side. Her speech is more like a college essay and presentation.
@polymix2971
@polymix2971 3 года назад
I agree, simplicity makes way and gets you to do the thing you want to do instead of having to deal with side issues. You would have to be either a complete egomaniac or an idiot to fight against it or not see it in that way. Ultimately as programmers we all just want to get to the meat as fast as possible.
@user-vu2fd7iw9z
@user-vu2fd7iw9z 3 года назад
我听不懂啊
@harshitsaini15
@harshitsaini15 4 года назад
Hmmm ... Nice
@flexairz
@flexairz 4 года назад
Go Rust!
@ChunkyChest
@ChunkyChest 5 лет назад
wait, no ternary WAIT WUT?
@ezengondolkozom3700
@ezengondolkozom3700 5 лет назад
Rust people be like 😂😂👌
@TheMrKeksLp
@TheMrKeksLp 3 года назад
@@ezengondolkozom3700 To be fair we have all control flow as expressions :D
@unvexis
@unvexis 4 года назад
Lol, I made it to 6:00 and decided that was enough.
@Snickersnack329
@Snickersnack329 5 лет назад
This talk seems to exude arrogance. I was surprised to hear the “appeal to authority” logical fallacy right up front. If go is designed for our new world of multi core and massive parallelism, why does this new and simple language devolve into the sync module and locking primitives to solve difficult problems? Why go?
@Loppy2345
@Loppy2345 4 года назад
TLDR: GO is simple
@recklessroges
@recklessroges 4 года назад
I think everything said here is correct, (and even if it isn't, with the massive weight of google behind golang, it is unstoppable,) and I don't mind that. {Please golang, save us from the lame duck that Gosling gave us.}
@kvbc5425
@kvbc5425 11 месяцев назад
why is no one laughing, what is this audience
@Glicerol
@Glicerol 5 лет назад
Is goal of this presentation to convince developers to use go? Is it about go ? I see bunch of random historical and "captain obvious" facts which does not tell exactly "why to use Go:" :) This is presentation about everything and nothing. You can use this presentation, just change arguments to proof that any language is better than others. It's kind of typical to pepople who have some higher technology overview, they dont understand whats going on but they want to sell some idea. She has good presentaiton skills but I have feeling that she is going to sell me something I dont need. As a fan of go language I dont give a shit :) Lost 40 minutes.
@jinushaun
@jinushaun 5 лет назад
Was this the first time the speaker saw this presentation? Time and time again, the speaker did not seem to know what was coming up in the next slide? So many mistakes. Very distracting.
@neuemage
@neuemage 6 лет назад
Came here for the memes, where are the memes?
@Cygnus0lor
@Cygnus0lor 5 лет назад
Fuck you and the memes
@LeetMath
@LeetMath 5 лет назад
pokemon GO to the polls
@jdelouche
@jdelouche 3 года назад
I am soooo happy not being part of this world.
@TheCuttingKing
@TheCuttingKing 4 года назад
Worst talk I've ever seen. So much bla bla no actual content. It's titled 'The Why of Go' not 'The great big history of everything surrounding Go but nothing about go itself' Good talk would have been: Show problem > show solution > explain solution > contrast solution with alternatives > Conclude and that's what Go is for. This kind of back and forth was a waste of time.
@vapon
@vapon 2 года назад
ok, c++ it is then.
@GlitchedBlox
@GlitchedBlox 4 года назад
I don't like the video. Stayed for the delorean.
@user-sq1ns3td9q
@user-sq1ns3td9q Год назад
One word for this talk Generic
@dmitrifedorov1023
@dmitrifedorov1023 4 года назад
Don't waste your time watching this. Whatever she (and everyone else) is telling, the real reason behind using Go is the lack of C/C++ skills. Look at the slide at 11:47: all five points she makes is the manifestation of a C/C++ programmer's incompetence. And her smug presentation style is really annoying.
@letscode5367
@letscode5367 4 года назад
Agree with you sir ☺
@ThePandaGuitar
@ThePandaGuitar 3 года назад
Good luck with your C++ servers and your dangling pointers mate.
@manit77
@manit77 3 года назад
It's not a great speech but that wasn't her entire point.
@mona.supremacy
@mona.supremacy 3 года назад
1. - "The real reason..." How do you know that? Your fragile ego of a self-claimed C++ guru doesn't automatically makes it "real". 2. Apart of your passion to some nerdish stuff and eltism of all kinds, your whole point makes no sense here (again), hence Go has NEVER been positioned as one to replace C/C++. That's why: Go: readability; maintaiability, fast compile/deployment time, simplicity, robustness etc Vs C++: relatively hard to read; HARD to maintain; slow to compile and a way harder to deploy(no single-file binary privilege); R E D U N D E N T ; extremely easy to break things etc * Go has a GC which makes using it for performance-critical parts of an app even more absurdish. 3. Your ignorance multiplied by arrogance is really annoying, not the talk she gave. 4. Go is the reason I'm going to spend more time enjoying my life, instead of sitting in a shape of an S debugging some 30-y-o legacy code 🤣🤣🤣
@TheMrKeksLp
@TheMrKeksLp 3 года назад
C and C++ are definitely not the answer to write correct and safe programs simply. Whether Go delivers on that promise is an entirely different topic but the motivation behind it is more than justified
@jajosheni1968
@jajosheni1968 3 года назад
she is so full of hate , chillout
@purpinkn
@purpinkn Год назад
Try importing a file from a subfolder. Oh wait, you can't.
Далее
Building a Bank with Go
53:22
Просмотров 117 тыс.
Design Microservice Architectures the Right Way
48:30
Просмотров 706 тыс.
Rob Pike: What Golang Got Right & Wrong
29:23
Просмотров 117 тыс.
zig is the future of programming. here's why.
9:34
Просмотров 197 тыс.
Юмор AirPods Max 😃
0:36
Просмотров 20 тыс.
#miniphone
0:16
Просмотров 1 млн
Ноутбук БЕЗ ЭКРАНА!
0:54
Просмотров 61 тыс.