Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
A tour of Go
아꿈사
Go...?
- 2009년 10월말 구글이 발표
- 구글의 앱엔진 탑재
- 드림팀 결성?!
출발 드림팀!
로버트 그리스머스 : 자바 핫스팟 컴파일러, 크
롬 스크립트 엔진
켐톤슨 : 튜링상 수상, Unix , C
롭파이크 : The Practive of Programming, UTF-
8, NewSqeak
첫번째로..
장점은..?
1. GC(garbage collection) + compile
2. Concurrency(병행성)
3. fast(빠름 빠름빠름 LTE)
컴파일러 의존성
의존성 : a.go->b.go->c.go
빌드순서 : c.go->b.go->a.go
Go의 의존성 : a.go를 빌드하는경우 b.go만 참
조
기본헤더파일 필요한 처리
c stdio.h 9개 파일에서 3...
목적은..?
- 개발 초기부터 시스템 개발 분야에 특화된 언
어
- 웹서버, 웹 브라우저, 웹로봇, 검색엔진, 컴파일
러
- 문법은 C의 모습으로
하지만 python의 쉬운 문법도 내꺼
자바의 GC기능도 내꺼
각 개발언어와 기능지원 여부
Go C++ 자바
class x o o
overloading o o o
GC(Garbage
Collector)
o x o
Pointer x o x
Pointer연산 o o x
import /...
HelloWorld
package main
import "fmt"
import "math"
func main() {
fmt.Println("헬로우 월드", math.Pi)
}
HelloWorld
package main
import "fmt"
import "math"
func main() {
fmt.Println("헬로우 월드", math.Pi)
}
import(
"fmt"
"math
)
Functions
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
Multiple results
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := s...
variables with initializers
package main
import "fmt"
var x, y, z int = 1, 2, 3
var c, python, java = true, false, "no!"
f...
variables with initializers
package main
import "fmt"
var x, y, z int = 1, 2, 3 //variable x is integer
var c, python, jav...
for
package main
import "fmt"
func main() {
var sum = 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
for
package main
import "fmt"
func main() {
var sum = 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
sum := 0
For is Go's while
func main() {
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
}
if and else
func printMax( x, y int ) int{
if x < y {
return y
} else {
return x
}
return -1
}
func main(){
fmt.Println(pr...
병렬성과 동시성의 차이
C언어에서의 스레드
- 스레드의 생성-> 1MB의 스택 영역을 할당
- 몇KB~ 2GB(usermdoe, but 3GB)
- 많은 스레드를 만드는 것이 힘듬
- 요청할 때마다 생성
Go에서의 스레드
- 스택을 링크드리스트로 관리
- 공간이 부족하면 스택을 늘여달라고 요청
- 매번 스레드를 생성 X
C언어에서의 스레드간 통신
Go에서의 스레드간 통신
결론
- Go = C + Java + Python
- GC, build dependancy, 동시성, 짱 많이 스레
드 생성
ref
http://golang.org/
마이크로소프트웨어 2011/9~11
A tour of go
A tour of go
Upcoming SlideShare
Loading in …5
×

A tour of go

551 views

Published on

go language

Published in: Technology
  • Be the first to comment

A tour of go

  1. 1. A tour of Go 아꿈사
  2. 2. Go...? - 2009년 10월말 구글이 발표 - 구글의 앱엔진 탑재 - 드림팀 결성?!
  3. 3. 출발 드림팀! 로버트 그리스머스 : 자바 핫스팟 컴파일러, 크 롬 스크립트 엔진 켐톤슨 : 튜링상 수상, Unix , C 롭파이크 : The Practive of Programming, UTF- 8, NewSqeak
  4. 4. 첫번째로.. 장점은..? 1. GC(garbage collection) + compile 2. Concurrency(병행성) 3. fast(빠름 빠름빠름 LTE)
  5. 5. 컴파일러 의존성 의존성 : a.go->b.go->c.go 빌드순서 : c.go->b.go->a.go Go의 의존성 : a.go를 빌드하는경우 b.go만 참 조 기본헤더파일 필요한 처리 c stdio.h 9개 파일에서 360라인 c++ iostream 131 / 25,326 object c carbon/carbon.h 689, 124,730
  6. 6. 목적은..? - 개발 초기부터 시스템 개발 분야에 특화된 언 어 - 웹서버, 웹 브라우저, 웹로봇, 검색엔진, 컴파일 러 - 문법은 C의 모습으로 하지만 python의 쉬운 문법도 내꺼 자바의 GC기능도 내꺼
  7. 7. 각 개발언어와 기능지원 여부 Go C++ 자바 class x o o overloading o o o GC(Garbage Collector) o x o Pointer x o x Pointer연산 o o x import / package o include / namespace o interface o template o nil o null null implicit type conversion x o o
  8. 8. HelloWorld package main import "fmt" import "math" func main() { fmt.Println("헬로우 월드", math.Pi) }
  9. 9. HelloWorld package main import "fmt" import "math" func main() { fmt.Println("헬로우 월드", math.Pi) } import( "fmt" "math )
  10. 10. Functions package main import "fmt" func add(x int, y int) int { return x + y } func main() { fmt.Println(add(42, 13)) }
  11. 11. Multiple results package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main() { a, b := swap("hello", "world") fmt.Println(a, b) }
  12. 12. variables with initializers package main import "fmt" var x, y, z int = 1, 2, 3 var c, python, java = true, false, "no!" func main() { fmt.Println(x, y, z, c, python, java) }
  13. 13. variables with initializers package main import "fmt" var x, y, z int = 1, 2, 3 //variable x is integer var c, python, java = true, false, "no!" func main() { fmt.Println(x, y, z, c, python, java) }
  14. 14. for package main import "fmt" func main() { var sum = 0 for i := 0; i < 10; i++ { sum += i } fmt.Println(sum) }
  15. 15. for package main import "fmt" func main() { var sum = 0 for i := 0; i < 10; i++ { sum += i } fmt.Println(sum) } sum := 0
  16. 16. For is Go's while func main() { sum := 1 for sum < 1000 { sum += sum } fmt.Println(sum) }
  17. 17. if and else func printMax( x, y int ) int{ if x < y { return y } else { return x } return -1 } func main(){ fmt.Println(printMax(2,3)) }
  18. 18. 병렬성과 동시성의 차이
  19. 19. C언어에서의 스레드 - 스레드의 생성-> 1MB의 스택 영역을 할당 - 몇KB~ 2GB(usermdoe, but 3GB) - 많은 스레드를 만드는 것이 힘듬 - 요청할 때마다 생성
  20. 20. Go에서의 스레드 - 스택을 링크드리스트로 관리 - 공간이 부족하면 스택을 늘여달라고 요청 - 매번 스레드를 생성 X
  21. 21. C언어에서의 스레드간 통신
  22. 22. Go에서의 스레드간 통신
  23. 23. 결론 - Go = C + Java + Python - GC, build dependancy, 동시성, 짱 많이 스레 드 생성
  24. 24. ref http://golang.org/ 마이크로소프트웨어 2011/9~11

×