일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Golang
- 바로코
- 엘리스배열
- 키보드
- nil
- Griffiths
- 벤치마크
- 양자역학
- Go
- 프라파손
- mf642cdw
- 다이어트
- 고양이책
- 리플렉션
- Go 언어
- 패널라인
- mopria
- 이맥스
- 체리적축저소음
- Reflection
- 터미널
- magicsculpt
- driverless
- 건프라
- emacs
- mistel md600 alpha
- 음각몰드
- go언어
- 스플릿키보드
- md600alpha
- Today
- Total
Meandering Trajectory
리플렉션(reflection)의 사전적 의미는 '반사'다.컴퓨터 프로그래머에게 리플렉션은 이런 사전적 의미 외에 다른 의미가 하나 더 있다. 그들 업계에서 통용되는 리플렉션은 프로그램이 실행 중에 프로그램에 포함된 타입과 메서드에 대한 정보를 조회하고 이렇게 얻은 정보를 바탕으로 메서드 실행까지도 할 수 있도록 해주는 기능이다.사람이 자신의 얼굴을 잘 보려면 거울에 비춰(reflection)봐야 한다. 그런데 프로그램이 스스로에 대한 정보를 실행 중에 알아네는 행동 역시 거울에 비춰보는 행위와 유사하다고 볼 수 있으니 그야말로 적절한 용어선택이다.이렇게 아는 척을 했지만 내가 업계적 의미의 리플렉션을 알게 된 것은 사실은 불과 며칠 전이다. 예기인 즉슨 Go로 된 오픈소스 소프트웨어의 코드를 읽다가 뭔가..
Go 언어를 배운지 얼마 안 돼서 무언가를 말하기는 조심스럽지만... 몇몇 장단점이 눈에 띈다.Go 루틴이라든지 채널 같은 동시성 프로그래밍 언어를 위한 기능들은 신선하다. 그리고 네이티브 바이너리로 컴파일되는 언어치고는 방대한 양의 라이브러리를 제공한다는 점 역시 좋아 보인다. 반면 너져분하게 느껴지는 문법이라든지 import한 패키지의 코드가 모두 실행 파일에 포함되어 실행파일 크기가 지나치게 커진다든지 하는 문제는 실망스럽다.그러던 와중에 Go 언어로 작성한 프로그램의 성능이 어떨지 궁급해서 좀 찾아봤다. 공정한 비교(?)를 위해 Garbage Collection (GC)을 이용하는 Java와 비교한 벤치마크를 살펴봤다. 놀랍게도 네이티브 코드로 컴파일되는 언어임에도 결과는 그리 신통치 못하다.벤치..
코딩으로 먹고 살기 시작한 이후로 난 항상 시스템 프로그래머였다. 제대로 사용할 수 있는 언어는 C 뿐이고 Emacs와 Vim으로 코딩을 했다. 디버깅은 gdb나 dbx를 이용했고 빌드에는 Make나 Jam을 이용해왔다. 내가 이런 도구들을 이용해 buffer cache나 IO 관련 버그를 디버깅하며 허우적데는 동안 세상은 너무나 많이 변했다. 가장 큰 사건은 자바스크립트의 폭발적인 발전이 아닐까. 내가 자바 스크립트에 대해 처음 알았을 때만 해도 여러 문제들 때문에 이 언어는 천덕꾸러기 취급을 받고는 했었다. 그러나 AJAX가 끝내주는니 어쩌느니 하는 말이 나오더니... 크롬 V8 JavaScript Engine이 나오면서 실행 성능이 진일보했다는 말이 들려왔다. 최근에는 Node.js가 나오면서 자바..