Motivations History Principles Language Gommunity Success stories Conclusion. Let s Go! A brief introduction to Google s new language.

Similar documents
Go Forth and Code. Jonathan Gertig. CSC 415: Programing Languages. Dr. Lyle

Develop your Embedded Applications Faster: Comparing C and Golang. Marcin Pasinski Mender.io

Don t Go Java! Edition 2019

developed ~2007 by Robert Griesemer, Rob Pike, Ken Thompson open source

The Awesomeness of Go. Igor Lankin DevFest Karlsruhe, Nov 2016


Go Tutorial. To do. A brief, gentle intro to Go. Next Networking. q Today

Go on NetBSD (and pkgsrc!) A modern systems programming language 23 March Benny Siegert Google Switzerland; The NetBSD Foundation

Using the Go Programming Language in Practice

Rheinisch-Westfälische Technische Hochschule Aachen. Lehrstuhl für Datenmanagement und -exploration Prof. Dr. T. Seidl. Proseminar.

Let s Go! Akim D le, Etienne Renault, Roland Levillain. June 8, TYLA Let s Go! June 8, / 58

The Go Programming Language. Frank Roberts

Go Cheat Sheet. Operators. Go in a Nutshell. Declarations. Basic Syntax. Hello World. Functions. Comparison. Arithmetic. Credits

Jython. An introduction by Thinh Le

EL2310 Scientific Programming

Course and Unix Intro

THE GO PROGRAMMING LANGUAGE CHARACTERISTICS AND CAPABILITIES

Introduzione a Go e RPC in Go

Go Tutorial. Arjun Roy CSE 223B, Spring 2017

Erlang and Go (CS262a, Berkeley Fall 2016) Philipp Moritz

Outline. Introduction Concepts and terminology The case for static typing. Implementing a static type system Basic typing relations Adding context

Go Programming. Russ Cox and Rob Pike May 20, 2010

EL2310 Scientific Programming

Introduction to the Go Programming Language

Go vs. Swift: The Languages of The Modern Tech Giants

Remote Procedure Call

Programming Language Basics

Mario Oschwald -

go get my/vulnerabilities Green threads are not eco friendly threads

CS Prof J.P.Morrison

Embedded type method, overriding, Error handling, Full-fledged web framework, 208 Function defer, 31 panic, 32 recover, 32 33

Go for Java Developers

Future Web App Technologies

Backend Web Frameworks

ActiveNET. #202, Manjeeraa Plaza, Ameerpet, HYD

Lecture 4: Golang Programming. Lecturer: Prof. Zichen Xu

TYPES, VALUES AND DECLARATIONS

New Parallel Programming Languages for Optimization Research

4. INFORMATION SCIENCE AND ENGINEERING

Developer Internship Opportunity at I-CC

Manual Java Update Mac Developer Package

The State of Python. and the web. Armin Ronacher

Matt Butcher Matt Farina

82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide

Physics 2660: Fundamentals of Scientific Computing. Lecture 3 Instructor: Prof. Chris Neu

Introduction (1) COMP 520: Compiler Design (4 credits) Alexander Krolik MWF 13:30-14:30, MD 279

Pierce Ch. 3, 8, 11, 15. Type Systems

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca

Remote Invocation. To do. Request-reply, RPC, RMI. q Today q. q Next time: Indirect communication

Contents of Lecture 3

Introduction To C#.NET

Look at all these toys!

Web Development for Dinosaurs An Introduction to Modern Web Development

Go Language September 2016

Show and Tell. 1. Plan 9 Things (brief) 2. An Extensible Compiler for Systems Programming. Russ Cox 1127 Show and Tell April 19, 2005

CPSC 3740 Programming Languages University of Lethbridge. Data Types

Python Documentation For Windows Xp 32 Bit Full Version

Protocol Buffers, grpc

Go Circuit: Distributing the Go Language and Runtime. Petar Maymounkov

Modern Web Application Development. Sam Hogarth

Principles of Programming Languages. Lecture Outline

JavaScript: Introduction, Types

PHP 1. Introduction Temasek Polytechnic

Let's Play... Try to name the databases described on the following slides...

Overview. Lab 5: Collaborative Filtering and Recommender Systems. Assignment Preparation. Data

Creating an Online Catalogue Search for CD Collection with AJAX, XML, and PHP Using a Relational Database Server on WAMP/LAMP Server

Introduction to RPC, Apache Thrift Workshop. Tomasz Powchowicz


Upload to your web space (e.g., UCSC) Due this Thursday 4/8 in class Deliverable: Send me an with the URL Grading:

understanding

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca

The Python Scripting Language. Slides (mostly) by: Bob Dowling Presented by: Bruce Beckles University of Cambridge Computing Service

Distributed Systems. 02r. Go Programming. Paul Krzyzanowski. TA: Yuanzhen Gu. Rutgers University. Fall 2015

run your own search engine. today: Cablecar

CSCI-1680 RPC and Data Representation John Jannotti

Android Validation Xml Against Schema Visual Studio 2010

Welcome to CS50 section! This is Week 10 :(

Introduction to Rust. CC-BY Mozilla. Jonathan Pallant

grpc - A solution for RPCs by Google Distributed Systems Seminar at Charles University in Prague, Nov 2016 Jan Tattermusch - grpc Software Engineer

Piqi-RPC. Exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP. Friday, March 25, 2011

The Impact of Django. Armin Ronacher. djangocon europe 2011

Data serialisation. Introduction

STEAM Clown Productions. Python lab. Binary Register. STEAM Clown & Productions Copyright 2017 STEAM Clown. Page 1

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University

Introduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy

Introduction to Python. Didzis Gosko

Programmin Languages/Variables and Storage

Ruby Programming Professional Made Easy 2nd Edition: Expert Ruby Programming Language Success In A Day For Any Computer User (Ruby, HTML, C

12.1 Introduction OpenCV4Android SDK Getting the SDK

Today. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview

APIs and API Design with Python

Getting Started with Memcached. Ahmed Soliman

COS 333: Advanced Programming Techniques

DB2 Express-C University Program

SERVICE TECHNOLOGIES 1

22c:111 Programming Language Concepts. Fall Types I

Release Notes. KeyView Filter SDK. Contents. Version Revision 0

CSC231 C Tutorial Fall 2018 Introduction to C

Java Applets, etc. Instructor: Dmitri A. Gusev. Fall Lecture 25, December 5, CS 502: Computers and Communications Technology

Final Exam. 12 December 2018, 120 minutes, 26 questions, 100 points

Transcription:

Let s Go! A brief introduction to Google s new language Aurélien Dumez Inria Bordeaux - Sud-Ouest aurelien.dumez@inria.fr Tuesday, October 2nd 2012

Content - 1/2 1 2 3 4 Characteristics SDK vs Examples Packages

Content - 2/2 5 6 7

Web dev : fast, efficient, secure, low requirements PHP : «a fractal of bad design» Python : too many solutions : django, flask, karrigell, nagare, pylons, pyramid, turbogears, web2py, web.py, zope... and Python 3? Perl : not my favourite language Ruby : (on Rails) last try (2008) was not conclusive Java : does not suit my needs Other solutions : what do you suggest?

Web dev : fast, efficient, secure, low requirements PHP : «a fractal of bad design» Python : too many solutions : django, flask, karrigell, nagare, pylons, pyramid, turbogears, web2py, web.py, zope... and Python 3? Perl : not my favourite language Ruby : (on Rails) last try (2008) was not conclusive Java : does not suit my needs Other solutions : what do you suggest?

Web dev : fast, efficient, secure, low requirements PHP : «a fractal of bad design» Python : too many solutions : django, flask, karrigell, nagare, pylons, pyramid, turbogears, web2py, web.py, zope... and Python 3? Perl : not my favourite language Ruby : (on Rails) last try (2008) was not conclusive Java : does not suit my needs Other solutions : what do you suggest?

Web dev : fast, efficient, secure, low requirements PHP : «a fractal of bad design» Python : too many solutions : django, flask, karrigell, nagare, pylons, pyramid, turbogears, web2py, web.py, zope... and Python 3? Perl : not my favourite language Ruby : (on Rails) last try (2008) was not conclusive Java : does not suit my needs Other solutions : what do you suggest?

Designers Robert Griesemer (V8 JS Engine, Java HotSpot...) Rob Pike (Bell Labs, Unix, Plan 9, Inferno, Limbo...) Ken Thompson (Bell Labs, Unix, Plan 9, B, UTF-8...) Milestones Nov. 2009 : new public open source project 28-03-2012 : version 1 25-04-2012 : version 1.0.1 13-06-2012 : version 1.0.2

Designers Robert Griesemer (V8 JS Engine, Java HotSpot...) Rob Pike (Bell Labs, Unix, Plan 9, Inferno, Limbo...) Ken Thompson (Bell Labs, Unix, Plan 9, B, UTF-8...) Milestones Nov. 2009 : new public open source project 28-03-2012 : version 1 25-04-2012 : version 1.0.1 13-06-2012 : version 1.0.2

Designers Robert Griesemer (V8 JS Engine, Java HotSpot...) Rob Pike (Bell Labs, Unix, Plan 9, Inferno, Limbo...) Ken Thompson (Bell Labs, Unix, Plan 9, B, UTF-8...) Milestones Nov. 2009 : new public open source project 28-03-2012 : version 1 25-04-2012 : version 1.0.1 13-06-2012 : version 1.0.2

According to the Go Team «Here at Google, we believe programming should be fast, productive, and most importantly, fun. That s why we re excited to open source an experimental new language called Go. Go combines the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++. Typical builds feel instantaneous ; even large binaries compile in just a few seconds. And the compiled code runs close to the speed of C. Go lets you move fast.» Robert Griesemer, Rob Pike, Ken Thompson, Ian Taylor, Russ Cox, Jini Kim and Adam Langley 11 november 2009

- Characteristics Characteristics SDK vs Examples Packages Compiled language Strongly typed (no implicit type conversions) Low level (pointers) Garbage collector Not object-oriented No exception management Native concurrency support (goroutines and channels) Good standard library (Python s spirit) UTF-8 support, even in source files (var héhé int = 42) braces but implicite semicolons (vicious traps!) On the web, seek for «golang»

- Characteristics Characteristics SDK vs Examples Packages Compiled language Strongly typed (no implicit type conversions) Low level (pointers) Garbage collector Not object-oriented No exception management Native concurrency support (goroutines and channels) Good standard library (Python s spirit) UTF-8 support, even in source files (var héhé int = 42) braces but implicite semicolons (vicious traps!) On the web, seek for «golang»

- Characteristics Characteristics SDK vs Examples Packages Compiled language Strongly typed (no implicit type conversions) Low level (pointers) Garbage collector Not object-oriented No exception management Native concurrency support (goroutines and channels) Good standard library (Python s spirit) UTF-8 support, even in source files (var héhé int = 42) braces but implicite semicolons (vicious traps!) On the web, seek for «golang»

- SDK Characteristics SDK vs Examples Packages GNU/Linux, OS X, Windows and FreeBSD (and source) BSD license Unzip and start coding, no cumbersome install go build : run the compiler go fmt : standard code formatting go doc : browse the doc (web server available) go install : install a package go get : download and install a package go test : lightweight unit-testing

- SDK Characteristics SDK vs Examples Packages GNU/Linux, OS X, Windows and FreeBSD (and source) BSD license Unzip and start coding, no cumbersome install go build : run the compiler go fmt : standard code formatting go doc : browse the doc (web server available) go install : install a package go get : download and install a package go test : lightweight unit-testing

- SDK Characteristics SDK vs Examples Packages GNU/Linux, OS X, Windows and FreeBSD (and source) BSD license Unzip and start coding, no cumbersome install go build : run the compiler go fmt : standard code formatting go doc : browse the doc (web server available) go install : install a package go get : download and install a package go test : lightweight unit-testing

- vs Characteristics SDK vs Examples Packages Go variables var i int int i structures type st struct {i int struct st { int i; c byte} char c; }; loops for i:=1; i<=10; i++ {} for (i=1; i<=10; i++) {} conditionals if i > 0 {} else {} if (i>0) {} else {} functions func f(in int) int {} int f(int in) {} C

- vs Characteristics SDK vs Examples Packages Go variables var i int int i structures type st struct {i int struct st { int i; c byte} char c; }; loops for i:=1; i<=10; i++ {} for (i=1; i<=10; i++) {} conditionals if i > 0 {} else {} if (i>0) {} else {} functions func f(in int) int {} int f(int in) {} C

Characteristics SDK vs Examples Packages - example 1 of 1337 package main import " fmt" func swap( a int, b int) (int, int) { return b, a } func main () { fmt.println(swap (1, 2)) }

Characteristics SDK vs Examples Packages - 1335 examples left func cp( to, from string) ( written int64, err os. Error) { } src, err2 := os.open(from, os.o_rdonly, 0) if err2!= nil { return } defer src. Close () dst, err2 := os.open(to, os. O_WRONLY os.o_create, 0644) if err2!= nil { return } defer dst. Close () return io.copy(dst, src)

Characteristics SDK vs Examples Packages - Examples - Interfaces type T struct { i int } func ( p * T) Get () int { return p. i } func (p *T) Put(v int) { p.i = v } var t T t.put (2) fmt.println(t.get ())

Characteristics SDK vs Examples Packages - Examples - Web package main import (" net/ http" "io" " code. google. com/p/ go. net/ websocket ") func EchoServer ( ws * websocket. Conn) { io. Copy(ws, ws); } func main () { http. Handle("/ echo", websocket. Handler( EchoServer )); err := http. ListenAndServe (":12345", nil); if err!= nil { panic( err) } }

- Some packages Characteristics SDK vs Examples Packages Archive/Compress tar, zip, bzip2, gzip Net/Web http, html, cgi, smtp Strings regexp, strconv, unicode Crypto/Hash aes, elliptic, sha1, x509 Encoding base64, csv, json, xml System os, syscall, syslog

- Some packages Characteristics SDK vs Examples Packages Archive/Compress tar, zip, bzip2, gzip Net/Web http, html, cgi, smtp Strings regexp, strconv, unicode Crypto/Hash aes, elliptic, sha1, x509 Encoding base64, csv, json, xml System os, syscall, syslog

Official Website www.golang.org Google Group groups.google.com Go Projects godashboard.appspot.com Go Lang Community Wiki code.google.com Books Learning Go (CC BY-NC-SA) An Introduction to Programming in Go (CC BY 3.0)

Official Website www.golang.org Google Group groups.google.com Go Projects godashboard.appspot.com Go Lang Community Wiki code.google.com Books Learning Go (CC BY-NC-SA) An Introduction to Programming in Go (CC BY 3.0)

Canonical : backend infrastructure BBC World News : backend for different games Argonne National Laboratory : platform for computation, storage, and distribution of scientific data (Shock)

Canonical : backend infrastructure BBC World News : backend for different games Argonne National Laboratory : platform for computation, storage, and distribution of scientific data (Shock)

Good language for system and network programming Young language : How stable is the specification? Several libraries for one task, no library for another one Enthusiastic community but many projects start and die quickly Go is used internally in Google : more precisely?

Good language for system and network programming Young language : How stable is the specification? Several libraries for one task, no library for another one Enthusiastic community but many projects start and die quickly Go is used internally in Google : more precisely?

Thank you, any questions?