SlideShare a Scribd company logo
GO: What’s Different ?
Tarun Vashisth
28th Sep 2018
Contents
• Programming Languages
• History
• Challenges
• Concurrency
• Object Oriented Design
• Type system and more
• Presence
• References
Languages
History
• 1950’s: Fortran, Lisp, Algol, Cobol
• 1960-70’s: B, Pascal, C, Prolog, SQL
• 1980’s: C++, Ada, Matlab, Erlang, Perl
• 1990’s(Internet age): Haskell, Python, VB, R, Ruby, Java, PHP,
JavaScript
• 2000’s: ActionScript, C#, D, Groovy, Scala, Clojure, Go, Rust, Kotlin,
Swift
• CULTURE ?
Challenges: Hardware limitations
• A fundamental turn towards concurrency in software
• Well, 3GHz CPUs -> 2004 and today -> MacBookPro@2.7GHz.
Challenges: Hardware limitations
• Resort to multicore
• Cannot scale indefinitely
• Comes with synchronization overhead between the operations.
• Increase transistor per unit area on chip?
Challenges: Multithreaded design
• Traditional programming languages -> 90’s -> traditional single-
threaded processes.
• Multi-threading
• Messy, complicated and expensive.
• Significant setup and teardown costs.
• We cool ?
Challenges: Multithreaded design
• Real problem:
• Concurrent execution
• Threading-locking
• Race conditions
• Deadlocks.
• Go: Designed keeping in mind multiple cores
• Famous paper “Communicating Sequential Processes” by C.A.R.
Hoare
Node.js: I don’t block
• Relatively easy to write and run
• Awesome V8 engine
• Event loop with promises
• NodeJS is single-threaded.
• It cannot directly use multi-core CPUs even though it is possible to
spawn different processes on several threads.
Node.js single threaded model
Go
• 2009 at Google by Rob Pike, Ken Thompson, Robert Griesemer.
• Primary motivation: Shared dislike of C++
• Slow compile times
• Standard Library offers no real support for Unicode
• Code bloat etc..
• Go is targeted as a modern C and especially as a replacement for C++.
Go
• Rethinks the traditional object-oriented development
• Effectively use all of the cores on your expensive server
• Go has a concise syntax with few keywords to memorize
• Fast complier: compiles to machine code
• Built in concurrency. NO to special threading libraries
Go: What's Different ?
Go
• Simple and effective type system
• Garbage collector: don’t have to manage your own memory.
• Spend less time waiting for your project to build
• Looks at the library that you directly include, rather than traversing
the dependencies of all the libraries that are included in the entire
dependency chain like Java, C, and C++.
• Taste: Objected Oriented and Functional Programming
Go: What's Different ?
Concurrency
• Concurrency vs Parallelism ?
• Concurrency: Programming as the composition of independently
executing processes.
• Parallelism: Programming as the simultaneous execution of (possibly
related) computations.
• Concurrency is about dealing with lots of things at once.
• Parallelism is about doing lots of things at once.
• Concurrency is about structure, parallelism is about execution.
Go: What's Different ?
Go supports concurrency
• Go provides:
• concurrent execution (goroutines)
• synchronization and messaging (channels)
• multi-way concurrent control (select)
• Goroutines come with built-in primitives to communicate safely
between themselves (channels).
• A single goroutine can run on multiple threads. Goroutines are
multiplexed into small number of OS threads.
• Goroutine is very cheap: 2kb vs 1MB(Java)
Objected Oriented Design
• No Inheritance ! No multi Inheritance problem.
• Go developers simply embed types to reuse functionality in a design
pattern called composition
• Interface: Allows you to model behavior
Type System and more
• Short variable declaration operator (:=)
• type interface{}
• Structs
• Anonymous function
• defer: To schedule a function call to be executed right after a function
returns.
Type System and more
• Receiver type for method declarations
• Main() and Init()
• Standard library
• Built in Testing, Benchmarking, Packing, Tooling
Presence
• Google
• Uber
• SoundCloud
• Walmart
• Docker
• Bitly
• BBC
• Basecamp
• DigitalOcean
• StackExchange
• Mozilla
• Lyft
• Blockchain
startups
• Facebook
• Twitter
• YouTube
• Apple
• Dropbox
• Github
• Games like Farmville
• IBM
• CoreOS
• GitLab
• InfluxData
• Intel
• Medium
Go: What's Different ?
References:
• https://en.wikipedia.org/wiki/Go_(programming_language)
• https://talks.golang.org
• https://hackernoon.com/why-go-ef8850dc5f3c
• Go in Action by Bill Kennedy
• https://medium.com/exploring-code/why-should-you-learn-go-
f607681fad65
• https://hackernoon.com/golang-or-the-future-of-the-dev-
984c2f145bbe
• https://gist.github.com/ungerik/3731476
THANK YOU

More Related Content

PPTX
Ruby and Security
Carl Sampson, CSSLP
 
PPTX
Ruby, the language of devops
Rob Kinyon
 
PDF
Making CLI app in ruby
Huy Do
 
PDF
Ruby in office time reboot
Kentaro Goto
 
PDF
Jslab rssh: JS as language platform
Ruslan Shevchenko
 
PPTX
Rubykaigi 2017-nishimotz-v6
Takuya Nishimoto
 
PDF
Join the dart side of webdevelopment reloaded
Claudio d'Angelis
 
PDF
JRuby: Pushing the Java Platform Further
Charles Nutter
 
Ruby and Security
Carl Sampson, CSSLP
 
Ruby, the language of devops
Rob Kinyon
 
Making CLI app in ruby
Huy Do
 
Ruby in office time reboot
Kentaro Goto
 
Jslab rssh: JS as language platform
Ruslan Shevchenko
 
Rubykaigi 2017-nishimotz-v6
Takuya Nishimoto
 
Join the dart side of webdevelopment reloaded
Claudio d'Angelis
 
JRuby: Pushing the Java Platform Further
Charles Nutter
 

What's hot (20)

PDF
iOS UI debugging
davidolesch
 
PDF
Scala.io
Diego Pacheco
 
PDF
Bringing Concurrency to Ruby - RubyConf India 2014
Charles Nutter
 
PDF
Cookpad Hackarade #04: Create Your Own Interpreter
mametter
 
PDF
Ci. Drupal Camp Berlin 2014
Yuriy Gerasimov
 
PDF
Enjoy Ruby Programming in IDE and TypeProf
mametter
 
KEY
TSSJS 2011 - JRuby
Charles Nutter
 
PDF
AppDays Pordenone 2014: Web App Engineering With Dart
Claudio d'Angelis
 
PDF
An introduction to go programming language
Technology Parser
 
PPTX
Microsoft Azure DocumentDB - Global Azure Bootcamp 2016
Sunny Sharma
 
PDF
Isomorphic Kotlin
Benjamin Snider
 
PDF
Our wish to Flowtype
Teppei Sato
 
PDF
Introduction to protocol buffer
Tim (文昌)
 
PPTX
From .NET Core 3, all the rest will be legacy
Rick van den Bosch
 
PPTX
The Future of Node - @rvagg - NodeConf Christchurch 2015
rvagg
 
PDF
A Type-level Ruby Interpreter for Testing and Understanding
mametter
 
PDF
Introduction to Kotlin coroutines
Roman Elizarov
 
PDF
A Quick Tour of JVM Languages
Stefane Fermigier
 
PDF
How to create/improve OSS products and its community
SATOSHI TAGOMORI
 
iOS UI debugging
davidolesch
 
Scala.io
Diego Pacheco
 
Bringing Concurrency to Ruby - RubyConf India 2014
Charles Nutter
 
Cookpad Hackarade #04: Create Your Own Interpreter
mametter
 
Ci. Drupal Camp Berlin 2014
Yuriy Gerasimov
 
Enjoy Ruby Programming in IDE and TypeProf
mametter
 
TSSJS 2011 - JRuby
Charles Nutter
 
AppDays Pordenone 2014: Web App Engineering With Dart
Claudio d'Angelis
 
An introduction to go programming language
Technology Parser
 
Microsoft Azure DocumentDB - Global Azure Bootcamp 2016
Sunny Sharma
 
Isomorphic Kotlin
Benjamin Snider
 
Our wish to Flowtype
Teppei Sato
 
Introduction to protocol buffer
Tim (文昌)
 
From .NET Core 3, all the rest will be legacy
Rick van den Bosch
 
The Future of Node - @rvagg - NodeConf Christchurch 2015
rvagg
 
A Type-level Ruby Interpreter for Testing and Understanding
mametter
 
Introduction to Kotlin coroutines
Roman Elizarov
 
A Quick Tour of JVM Languages
Stefane Fermigier
 
How to create/improve OSS products and its community
SATOSHI TAGOMORI
 
Ad

Similar to Go: What's Different ? (20)

PDF
Introduction to Go
zhubert
 
KEY
Why ruby and rails
Reuven Lerner
 
PPTX
T4T Training day - NodeJS
Tim Sommer
 
PDF
Open Source SQL Databases
Emanuel Calvo
 
PDF
Go - A Key Language in Enterprise Application Development?
C4Media
 
PDF
Starting from scratch in 2017
Stefano Bonetta
 
PDF
High-Performance Computing with C++
JetBrains
 
PDF
Clojurescript slides
elliando dias
 
PDF
GoLang - Why It Matters
rahul
 
PDF
High Performance Systems in Go - GopherCon 2014
Derek Collison
 
PDF
Monorepo at Pinterest
Suman Karumuri
 
PDF
Clojure in real life 17.10.2014
Metosin Oy
 
PPTX
Kotlin Multiplatfom In Action
Marko Mitic
 
KEY
SSJS, NoSQL, GAE and AppengineJS
Eugene Lazutkin
 
PDF
Kotlin Multiplatfom In Action
Marko Mitic
 
KEY
Pulsar
Eugene Lazutkin
 
PPTX
Node Architecture.pptx
Ahmed Hassan
 
PDF
cadec-2017-golang
TiNguyn863920
 
PPTX
A deep dive into python and it's position in the programming landscape.pptx
Murugan Murugan
 
PDF
GWT Jug Stuttgart
hbraun
 
Introduction to Go
zhubert
 
Why ruby and rails
Reuven Lerner
 
T4T Training day - NodeJS
Tim Sommer
 
Open Source SQL Databases
Emanuel Calvo
 
Go - A Key Language in Enterprise Application Development?
C4Media
 
Starting from scratch in 2017
Stefano Bonetta
 
High-Performance Computing with C++
JetBrains
 
Clojurescript slides
elliando dias
 
GoLang - Why It Matters
rahul
 
High Performance Systems in Go - GopherCon 2014
Derek Collison
 
Monorepo at Pinterest
Suman Karumuri
 
Clojure in real life 17.10.2014
Metosin Oy
 
Kotlin Multiplatfom In Action
Marko Mitic
 
SSJS, NoSQL, GAE and AppengineJS
Eugene Lazutkin
 
Kotlin Multiplatfom In Action
Marko Mitic
 
Node Architecture.pptx
Ahmed Hassan
 
cadec-2017-golang
TiNguyn863920
 
A deep dive into python and it's position in the programming landscape.pptx
Murugan Murugan
 
GWT Jug Stuttgart
hbraun
 
Ad

Recently uploaded (20)

PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
The Future of Artificial Intelligence (AI)
Mukul
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 

Go: What's Different ?

  • 1. GO: What’s Different ? Tarun Vashisth 28th Sep 2018
  • 2. Contents • Programming Languages • History • Challenges • Concurrency • Object Oriented Design • Type system and more • Presence • References
  • 4. History • 1950’s: Fortran, Lisp, Algol, Cobol • 1960-70’s: B, Pascal, C, Prolog, SQL • 1980’s: C++, Ada, Matlab, Erlang, Perl • 1990’s(Internet age): Haskell, Python, VB, R, Ruby, Java, PHP, JavaScript • 2000’s: ActionScript, C#, D, Groovy, Scala, Clojure, Go, Rust, Kotlin, Swift • CULTURE ?
  • 5. Challenges: Hardware limitations • A fundamental turn towards concurrency in software • Well, 3GHz CPUs -> 2004 and today -> [email protected].
  • 6. Challenges: Hardware limitations • Resort to multicore • Cannot scale indefinitely • Comes with synchronization overhead between the operations. • Increase transistor per unit area on chip?
  • 7. Challenges: Multithreaded design • Traditional programming languages -> 90’s -> traditional single- threaded processes. • Multi-threading • Messy, complicated and expensive. • Significant setup and teardown costs. • We cool ?
  • 8. Challenges: Multithreaded design • Real problem: • Concurrent execution • Threading-locking • Race conditions • Deadlocks. • Go: Designed keeping in mind multiple cores • Famous paper “Communicating Sequential Processes” by C.A.R. Hoare
  • 9. Node.js: I don’t block • Relatively easy to write and run • Awesome V8 engine • Event loop with promises • NodeJS is single-threaded. • It cannot directly use multi-core CPUs even though it is possible to spawn different processes on several threads.
  • 11. Go • 2009 at Google by Rob Pike, Ken Thompson, Robert Griesemer. • Primary motivation: Shared dislike of C++ • Slow compile times • Standard Library offers no real support for Unicode • Code bloat etc.. • Go is targeted as a modern C and especially as a replacement for C++.
  • 12. Go • Rethinks the traditional object-oriented development • Effectively use all of the cores on your expensive server • Go has a concise syntax with few keywords to memorize • Fast complier: compiles to machine code • Built in concurrency. NO to special threading libraries
  • 14. Go • Simple and effective type system • Garbage collector: don’t have to manage your own memory. • Spend less time waiting for your project to build • Looks at the library that you directly include, rather than traversing the dependencies of all the libraries that are included in the entire dependency chain like Java, C, and C++. • Taste: Objected Oriented and Functional Programming
  • 16. Concurrency • Concurrency vs Parallelism ? • Concurrency: Programming as the composition of independently executing processes. • Parallelism: Programming as the simultaneous execution of (possibly related) computations. • Concurrency is about dealing with lots of things at once. • Parallelism is about doing lots of things at once. • Concurrency is about structure, parallelism is about execution.
  • 18. Go supports concurrency • Go provides: • concurrent execution (goroutines) • synchronization and messaging (channels) • multi-way concurrent control (select) • Goroutines come with built-in primitives to communicate safely between themselves (channels). • A single goroutine can run on multiple threads. Goroutines are multiplexed into small number of OS threads. • Goroutine is very cheap: 2kb vs 1MB(Java)
  • 19. Objected Oriented Design • No Inheritance ! No multi Inheritance problem. • Go developers simply embed types to reuse functionality in a design pattern called composition • Interface: Allows you to model behavior
  • 20. Type System and more • Short variable declaration operator (:=) • type interface{} • Structs • Anonymous function • defer: To schedule a function call to be executed right after a function returns.
  • 21. Type System and more • Receiver type for method declarations • Main() and Init() • Standard library • Built in Testing, Benchmarking, Packing, Tooling
  • 22. Presence • Google • Uber • SoundCloud • Walmart • Docker • Bitly • BBC • Basecamp • DigitalOcean • StackExchange • Mozilla • Lyft • Blockchain startups • Facebook • Twitter • YouTube • Apple • Dropbox • Github • Games like Farmville • IBM • CoreOS • GitLab • InfluxData • Intel • Medium
  • 24. References: • https://en.wikipedia.org/wiki/Go_(programming_language) • https://talks.golang.org • https://hackernoon.com/why-go-ef8850dc5f3c • Go in Action by Bill Kennedy • https://medium.com/exploring-code/why-should-you-learn-go- f607681fad65 • https://hackernoon.com/golang-or-the-future-of-the-dev- 984c2f145bbe • https://gist.github.com/ungerik/3731476