Why did Google Develop Go?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
so why did google develop go the short answer is because they needed a specialized language that did something specific to their needs this is not unusual by the way software development companies individuals even on occasion like in the case of guido when he created python companies will create languages programming languages because they have very particular use cases that would help them so in the case of google they needed a language that would make it easier for them to do what they need to do and that's processed the internet for their web pages a lot of string manipulations so yes you can do string manipulations in many other languages including c although c plus plus string manipulation apparently is the pits uh so i've been told from friends of mine are quite well versed in the c plus game anyhow so i'm going to jump into this article here and i'll comment a long way this article points to a larger question or a larger lesson that's it a larger lesson that i've been trying to convey on the youtubes here uh yeah so let's jump into it just in case you don't know who i am i'm uncle steph i'm 169 years old i've been writing software for about 200 years at least that's what my mind tells me all right so why did google develop gold so um i'm not going to read this whole thing basically he talks about how in the past in the 80s computers were so slow application compilation was very slow so you'd have a farm of computers to build uh an app that you wrote code for and you had to wait till the next day to get your result google has a similar situation apparently because they have such large and complex processing needs so google builds things that are so ridiculously huge but it's still like that in 27 still like the 1980s for google in that they have to wait a while according to this guy it takes five hours to rebuild chrome from scratch even on a big fat i7 system the pain of compile time on these builds hurts so much that google has invented build tools that separate the dependency analysis and compiling just to gain a few percent in build time using conventional languages so let me comment that as well so you may be saying yourself why would you build an entire new language to just save a few percentage well that's it if you're a very large organization where uh you have huge numbers of people working for you and you have huge number of users and you've got a lot of work to do that few percentage point advantage that a new tool a new piece of software a new programming language can deliver is worth it of course if you're just building a typical system but 99.99999 of us will be building these few percentages of advantage won't really have any impact on you and that's where python comes in for example python is a dog slow an old drunk dog slow language like an old dog that had too much to drink and is trying to walk down the street that's pretty much how fast python runs but where python shines and why it's on many indexes the most popular language out there is because it's right time speed the ease at which you can write python code is significant it is significant and so they're willing to sacrifice many people are willing to sacrifice runtime speed and efficiency for right time speed and efficiency uh because in their use cases which is 99.99999 of us that write time speed advantage is worth much much more than runtime speed advantage otherwise everybody would be writing everything in assembly or c if runtime speed was that important in some cases it is if you're google maybe you're building a game engine maybe you're building the core aspect or the core part of your ai yeah then you're gonna need some runtime speed but for most of us right time speed is more important that's why you have higher level much slower languages like python like javascript like php uh et cetera et cetera java but people use to build things anyhow let me go back to the article and we'll get down a bit more go is designed for a quick compilation without the need for dependency checking so it addresses the build pane so basically they built gold part first and foremost so that they can build quicker according to this guy google's other problem is string processing google reads and analyzes a lot of web pages which are text files yeah that's the google bot right they do a lot of string manipulation so it pays for this to be really efficient and let me just comment on that very quickly apparently apparently according to my friend who's a very very experienced c plus and c coder he says string manipulation c plus plus is the dogs is the dogs which surprise me because so much of modern programming is about string manipulation especially you're doing web apps and so on it's all about string manipulation anyhow google built a rich library string functions into go garbage collecting make strings and go simple to think about and efficient in ways some of the string libraries are not i'm talking to you c plus plus committee everybody thinks their language excuse me everybody thinks they are a language designer microsoft apple had their own languages microsoft c sharp vb apple swift comes to mind google decided they needed their own i guess then facebook joined the proprietary language party leaving only poor homely amazon alone at the language dance i don't know if that's the case but who cares as a language design go is not unreasonable it does what it says on the tin it's not in any way innovative but certainly well designed for a very specific use case so there you go as i said use case specific one of the other lessons i'm trying to teach the interwebs is that there is no such thing as a bad programming language with perhaps the exception of ruby other than that shiny language the uh all the languages have their pros and cons they do and you as a developer just will choose the right language in the right stack and the right libraries and like the right frameworks if applicable given the needs of the job when i was freelancing that's what i would do i would walk into a gig and i would sit down with the client and say okay what do you got here and i would evaluate the job and based on the needs of their job their infrastructure investment et cetera et cetera et cetera i would choose a language sometimes i learned our entirely new language just for that particular project so larger lesson here to take away you cannot learn a bad language you cannot learn a bad language it's all job specific and besides all these languages share very similar properties and traits so if you learn java c sharp c sharp would be easy to jump over javascript would be even easy to jump over go has good concurrency support which is essential for a language design after 2002 and for companies who have a million servers waiting to be spun up but it's not breaking new ground in concurrency concurrency is basically the ability for programming language to fire off multiple processes at the same time non-convert languages send a command and before command number two could process command number one have to complete before command number three could go forward command number two had to complete whereas with concurrent languages and goals not certainly not the only one you can fire off many requests many processes at the same time so they all are working in parallel it just allows for a lot more speed that's why you have multi a lot of cores on cpus each core can do its own thing independent of the others so he summarizes go equals c plus strings plus garbage collections plus concurrency if you want to build really big programs to analyze the whole freaking internet go would be a pretty good choice for you so this got a lot nine and a half thousand upvotes i thought it was worthy so if you want to find this article on quora they make it hard to send urls just search for this why did google develop go or search for this guy's name he gets a lot of publisher publish writer forbes oh so he writes for forbes anyway so there you go so one of the things i try to teach on the youtubes and elsewhere is that first of all languages are you can't learn a bad language it all depends on the type of work you want to do and where you happen to live different areas of the world will have certain languages that are popular et cetera um i also wanted to bring up the fact that there is an overemphasis by far this to the point i call it an urban myth the wmds the wmd of the programming world are data structures and algorithms they are the wmds what do i mean by that it's fake for most of us that you have to be a master at algorithms and a master of data structures to be an effective programmer it's just as it's fake to say you have to be great at math to be a great developer for 99.99999 percent of us and the jobs that we do data structures and algorithms are very unimportant beyond the basics any beginners course will teach you the basics of data structures collection types and hash maps primitives et cetera et cetera these are basic data types and algorithms is how you operate on these data types there's there's patterns and you can implement but you can go down a very deep rabbit hole that makes sense if you're google where you are processing huge amounts of data where efficiencies and algorithms efficiencies and data structures can have a a significant impact in terms of the speed and the efficiency of your application but most of us are not doing that for 99.999 percent of programmers what's far more important than data structures and algorithms are beyond the basics are refactoring skills good architectural design skills basic good coding best coding practices you know you know naming conventions uh understanding how to use repos that kind of stuff so there's too much of an emphasis on that now certain places where you go they're going to test you based on algorithms now it makes sense that they teach test your algorithm data structure skills if they are a search engine or if they're doing maybe some big data analysis something requires highly efficient code so that you can run through the data effectively maybe ai engines or something but beyond that it doesn't matter and if you're not sure i'm telling the true if you think about python python as i said in other videos maybe even this video python is a dog slow language in terms of run time python is like a drunk nine-year-old dog trying to walk down the street it is slow but depending on the index you look at python is either the most popular or in the top three most popular programming languages in the world so you have to ask yourself if python is so popular but it runs like a old drunk dog walking down the street in the winter time how does that make any sense i thought speed is everything here's one of my rules steph's rules one step rules anyway right time speed the speed at which you can write and produce your code is far more important for most of us than runtime speed i say that again how fast and how expressive a language is like python very expressive php very expressive javascript very expressive how fast you can write the program is far more important than how fast the code actually runs why because most of us our requirements don't even come close to reaching the limits of what in terms of what these programming languages can do in terms of speed because uh the bandwidth that we operate on now is incredibly powerful fast big pipes big internet and the language themselves become more efficient that's also true but uh more importantly the server computers and the client computers and even our phones even our cell phones are so powerful now in fact even though uh c plus plus code will run circles around python at runtime like it's not even in the same ballpark you won't see a difference uh when you actually see the code run on a phone or a typical computer or server because the cert the computers are so fast so yeah as an example maybe c plus plus will process you know a string a particular string operation in one tenth of a second and python takes it one second so it's one tenth of speed but are you gonna see a difference between one tenth and one second no anyway i hope that helps interesting stories uh it's always good to look at reality and to get an understanding of how things actually work in the real world if you're wondering i'm uncle steph so i'm a developer i developed the studio web platform which is used in schools all over north america and different parts of the world and i actually mentor developers including some of the most successful developers walking around today we'll talk soon bye
Info
Channel: Stefan Mischook
Views: 1,688
Rating: 5 out of 5
Keywords: developervlogs, developermentoring
Id: jyefcD8k32k
Channel Id: undefined
Length: 14min 55sec (895 seconds)
Published: Wed Oct 06 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.