일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Go
- 건프라
- 음각몰드
- Griffiths
- mopria
- 양자역학
- driverless
- doom-emacs
- go언어
- 리플렉션
- 엘리스배열
- emacs
- 터미널
- Go 언어
- 벤치마크
- Golang
- 바로코
- md600alpha
- mistel md600 alpha
- 체리적축저소음
- 고양이책
- eslip
- 키보드
- nil
- mf642cdw
- 다이어트
- 패널라인
- Reflection
- 이맥스
- 스플릿키보드
- Today
- Total
목록컴퓨터/GoLang (16)
Meandering Trajectory
09-go-chan.html Go에 대한 인상 Go 언어는 처음에 걸었던 기대와 달리 약간 실망스럽다. 문법이 난잡하게 느껴지고 그래서 Go 언어로 작성된 프로그램도 지져분하게 느끼진다. 혁신적으로 보이는 특징도 별로 안 보인다. 21세기에 설계된 언어로 작성된 프로그램에서 세그멘테이션 폴트 에러를 보는 것도 별로 유쾌하지 않고 말이지.하지만 한가지 맘에 드는 것이 있다. 그것은 Go 루틴과 채널이다. 이 둘을 빼면 Go는 그냥 그저 그런 명령형 언어였을 것이다. 이번 포스팅에서는 채널에 대해 간략히 살펴보려고 한다. Go 루틴과 채널 C와 같은 전통적인 프로그래밍 언어에서 쓰이던 스레드 대신, Go 언어는 동시성 프로그램밍을 위해 Go 루틴이라는 특이한 기능을 제공한다. Go 루틴을 이용해 작성된 프로..
이전 포스팅에서 리플렉션에 대한 아주 간략한 설명을 했다. 이번 글에서는 간단한 예제 코드를 통해 리플렉션이 어떻게 유용한지 알아보도록 하자. 1 import "reflect" 2 3 var methodMap map[string]reflect.Method 4 5 func initMethodMap(i interface{}) { 6 methodMap = make(map[string]reflect.Method) 7 8 t := reflect.TypeOf(i) 9 for idx := 0; idx < t.NumMethod(); idx++ { 10 m := t.Method(idx) 11 methodMap[m.Name] = m 12 } 13 }initMethodMap 함수는 임의의 구조체 변수를 입력 파라미터로 받은..
리플렉션(reflection)의 사전적 의미는 '반사'다.컴퓨터 프로그래머에게 리플렉션은 이런 사전적 의미 외에 다른 의미가 하나 더 있다. 그들 업계에서 통용되는 리플렉션은 프로그램이 실행 중에 프로그램에 포함된 타입과 메서드에 대한 정보를 조회하고 이렇게 얻은 정보를 바탕으로 메서드 실행까지도 할 수 있도록 해주는 기능이다.사람이 자신의 얼굴을 잘 보려면 거울에 비춰(reflection)봐야 한다. 그런데 프로그램이 스스로에 대한 정보를 실행 중에 알아네는 행동 역시 거울에 비춰보는 행위와 유사하다고 볼 수 있으니 그야말로 적절한 용어선택이다.이렇게 아는 척을 했지만 내가 업계적 의미의 리플렉션을 알게 된 것은 사실은 불과 며칠 전이다. 예기인 즉슨 Go로 된 오픈소스 소프트웨어의 코드를 읽다가 뭔가..
Go 언어를 배운지 얼마 안 돼서 무언가를 말하기는 조심스럽지만... 몇몇 장단점이 눈에 띈다.Go 루틴이라든지 채널 같은 동시성 프로그래밍 언어를 위한 기능들은 신선하다. 그리고 네이티브 바이너리로 컴파일되는 언어치고는 방대한 양의 라이브러리를 제공한다는 점 역시 좋아 보인다. 반면 너져분하게 느껴지는 문법이라든지 import한 패키지의 코드가 모두 실행 파일에 포함되어 실행파일 크기가 지나치게 커진다든지 하는 문제는 실망스럽다.그러던 와중에 Go 언어로 작성한 프로그램의 성능이 어떨지 궁급해서 좀 찾아봤다. 공정한 비교(?)를 위해 Garbage Collection (GC)을 이용하는 Java와 비교한 벤치마크를 살펴봤다. 놀랍게도 네이티브 코드로 컴파일되는 언어임에도 결과는 그리 신통치 못하다.벤치..
C는 몇몇 스크립팅 언어를 제외하면 프로그래머가 된 이후로 내가 사실상 유일하게 사용했던 언어다. 최근에 프로그래머로서의 삶을 시작했던 회사를 떠나게 됐다. 이직한 회사는 전혀 C를 사용하지 않는 회사다.이직한 회사의 주요 개발 언어는 Go다. Go는 구글에서 개발한 언어로 이 언어가 지원하는 독특한 동시성 프로그래밍 기능인 고루틴 외에 유닉스의 아버지 켄 탐슨(Ken Thomson)과 벨연구소의 유닉스 개발팀의 일원인었던 랍 파이크(Rob Pike)가 직접 개발에 참여한 것으로 잘 알려져 있다.일을 하려면 배워야 하니 리눅스에서 Go로 이것저것을 해 보다가 특이한 점을 발견했다. 빌드된 실행파일에 C 라이브러리(libc)나 POSIX 스레드 라이브러리(libpthred)와 같은 필수적인 것 이외에 링크..