Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/2Cs3wyC.
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. Filmed at qconsf.com.
Carmen Andoh is a software engineer on the Build Infrastructure team at Travis CI. She was the first scholarship recipient for Gophercon in 2015, where she was first introduced to Go, and hasn't looked back.
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Â
The Why of Go
1. The Why of Go21st Century Programming Languages Track, Qcon SF
Carmen Andoh
2. InfoQ.com: News & Community Site
âą Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
âą 250,000 senior developers subscribe to our weekly newsletter
âą Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
âą Post content from our QCon conferences
âą 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
âą 96 deep dives on innovative topics packed as downloadable emags and
minibooks
âą Over 40 new content items per week
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
go-concurrency-gc
3. Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
29. â too simple / lack of syntactic sugar
â no generics
â bad dependency management
â stuck in 70/80's
â error handling
â no unused imports
â too opinionated
â too verbose
â no ternary operator
â no macros or
templates
https://github.com/ksimka/go-is-not-good
30.
31.
32. âGo programming language was conceived as an answer to
some of the problems we were seeing developing software
infrastructure at Google. The computing landscape today is
almost unrelated to the environment in which the languages
being used, mostly C++, Java, and Python, had been created.
The problems introduced by multicore processors,
networked systems, massive computation clusters, and
the web programming model were being worked around
rather than addressed head-on.
33. âGo programming language was conceived as an answer to
some of the problems we were seeing developing software
infrastructure at Google. The computing landscape today is
almost unrelated to the environment in which the languages
being used, mostly C++, Java, and Python, had been created.
The problems introduced by multicore processors,
networked systems, massive computation clusters, and
the web programming model were being worked around
rather than addressed head-on.
34. âGo programming language was conceived as an answer to
some of the problems we were seeing developing software
infrastructure at Google. The computing landscape today is
almost unrelated to the environment in which the languages
being used, mostly C++, Java, and Python, had been created.
The problems introduced by multicore processors,
networked systems, massive computation clusters, and
the web programming model were being worked around
rather than addressed head-on.
35. âGo programming language was conceived as an answer to
some of the problems we were seeing developing software
infrastructure at Google. The computing landscape today is
almost unrelated to the environment in which the languages
being used, mostly C++, Java, and Python, had been created.
The problems introduced by multicore processors,
networked systems, massive computation clusters, and
the web programming model were being worked around
rather than addressed head-on.
36. âGo programming language was conceived as an answer to
some of the problems we were seeing developing software
infrastructure at Google. The computing landscape today is
almost unrelated to the environment in which the languages
being used, mostly C++, Java, and Python, had been created.
The problems introduced by multicore processors,
networked systems, massive computation clusters, and
the web programming model were being worked around
rather than addressed head-on.
37. Moreover, the scale has changed: todayâs server programs
comprise tens of millions of lines of code, are worked on by
hundreds or even thousands of programmers, and are
updated literally every day. To make matters worse, build time
have stretched to many minutes, even hours, even
languages,on large compilation clusters,â
38. Moreover, the scale has changed: todayâs server programs
comprise tens of millions of lines of code, are worked on by
hundreds or even thousands of programmers, and are
updated literally every day. To make matters worse, build time
has stretched to many minutes, even hours, on large
compilation clustersâ
39. Moreover, the scale has changed: todayâs server programs
comprise tens of millions of lines of code, are worked on by
hundreds or even thousands of programmers, and are
updated literally every day. To make matters worse, build time
has stretched to many minutes, even hours, on large
compilation clustersâ
40. â multicore processors
â networked systems
â massive computation
clusters
â web programming model
â hundreds or even
thousands of programmers
â large compilation clusters
94. When the three of us [Ken Thompson, Rob Pike, and Robert
Griesemer] got started, it was pure research. The three of us got
together and decided that we hated C++. [laughter] ... [Returning
to Go,] we started off with the idea that all three of us had to be
talked into every feature in the language, so there was no
extraneous garbage put into the language for any reason.
97. Memory Locality
Java
No value types
Everything Allocated
Canât return multiple values
Go
Structs
True Value types
compact object layout
No object headers
98. Memory Locality
Java
No value types
Everything Allocated
Canât return multiple values
Go
Structs
True Value types
compact object layout
No object headers
UTF-8
99. Memory Locality
Java
No value types
Everything Allocated
Canât return multiple values
Go
Structs
True Value types
compact object layout
No object headers
UTF-8UTF-16
100. Memory Locality
Java
No value types
Everything Allocated
Canât return multiple values
Go
Structs
True Value types
Compact object layout
No object headers
Lazy initialization of
collections
UTF-8UTF-16
104. Memory Locality (conclusion)
â Go gives programmers the tools to talk about memory
efficiently if they need it.
â Flexible
â Memory management (not an all-or-nothing like in C++ or
Rust)
106. Readability
â Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible,
you are, by definition, not smart enough to debug it. ââââBrian
Kernighan
115. â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.â
- Dave Cheney
125. Software Engineering
Software Engineering vs Programming
Software Engineering = Programming integrated over time.
Engineering is what happens when things need to live longer and influence of
time starts creeping in. -Titus Winters
126. Software Engineering
Software Engineering vs Programming
Software Engineering = Programming integrated over time.
Engineering is what happens when things need to live longer and influence of
time starts creeping in. -Titus Winters
All this complexity is fundamentally a different flavor than programming.
128. Software Engineering
focus on sustaining engineering (readability)
continuance of many different engineers over a long period of time
129. Software Engineering
focus on sustaining engineering (readability)
continuance of many different engineers over a long period of time
clear module boundaries
130. Software Engineering
focus on sustaining engineering (readability)
continuance of many different engineers over a long period of time
clear module boundaries
keeping import dependencies between packages linear, thus keeping compile
times down.
133. âSimplicity is a great virtue but it requires hard work to achieve it
and education to appreciate it. And to make matters worse:
complexity sells better.â
â Edsger W. Dijkstra