IT 를 하며 C, C++, Java, Objective C, JavaScript 와 같은 프로그래밍 언어를 배우고 사용해왔지만 어떠한 언어이든 최고의 언어는 없으며 내가 해야하는 업무나 개발에 최적의 언어만이 있었고, 또 그 업무가 바뀌면 언어는 업무를 위한 수단에 불과하지 않았다.
그럼에도 불구하고 천여개가 넘는 언어들이 생겨나고 또 인정받는 이유는 분명 그 언어가 목표하는 시장이 있으며 그 시장에서 필요로 하는 “효과”를 잘 보여주었기 때문이었다.
Go 언어 또한 목표로 하는 시장이 분명히 있으며, C/C++, Java, JavaScript, PHP, Swift 등등 셀 수 없이 많은 언어들을 제치고 “언어의 왕좌”를 차지하려는 목적으로 개발된 것은 아니다.
프로그래밍 언어들이 갖는 특성은 모두 제각각이며 언어의 절대적 우열을 가리기 위한 잣대란 존재하지 않는다. 아래 비교자료들은 재미삼아 보는것을 권장하며, 무엇보다 “목적에 맞는 언어”를 선택하는데에 시간을 투자하고, Go 언어 또한 이후 강좌들을 통해 직접 그 장점과 단점을 체감하며 “자신이 느끼는 언어 활용 적합 용도”를 찾기를 바란다.
[인기도에 따른 언어 비교]
RedMonk 의 2016년 1월 프로그래밍 언어 Ranking 이다.
X 축은 Github 내 Project 들이 즐겨 사용하고있는 언어, Y 축은 Stack Overflow 에서의 언어 Tag 를 통한 인기도이다. 두가지를 합쳐보면 최종 Top 10 인기순위는
1 JavaScript
2 Java
3 PHP
4 Python
5 C#
5 C++
5 Ruby
8 CSS
9 C
10 Objective-C
11 Shell
12 Perl
13 R
14 Scala
15 Go
15 Haskell
17 Swift
18 Matlab
19 Clojure
19 Groovy
19 Visual Basic
정도가 된다. Go 언어는 15위에 Rank 했다.
Go 언어가 실질적으로 활용되기 시작한 2011년 부터 보면 5년 남짓 된 언어이며, 이를 감안한다면 다른 언어들 대비 상당히 빠른 속도로 확산되고 있다는것을 알 수 있다.
하지만 여전히 JavaScript, Java, PHP, Python, C/C++ 과 같은 전통적인 언어들이 최상위권에 위치한다. 위 언어들 중 JavaScript, PHP, Python 은 Script 언어이다. 태생 목적과 동작방식 자체가 다르기때문에 이를 직접 비교하는것은 무리일듯 하다. (JavaScript 는 Node.js 를 만나 Java 나 C/C++, Go 가 목적하는 영역과 상당부분의 교집합이 생겨나긴 했다)
아래 자료는 Anderson 과 Retting 의 Fannkuch 라는 이름의 벤치마크 점수이다.
이 벤치마크는 긴 수열을 주고 정렬 작업과 Checksum 작업을 n! 만큼 하는 알고리즘을 수행하는 형태이다. 결과는 최종 수행 시간, 사용한 메모리와 CPU 등이다.
× | source code | secs | KB | gz | cpu | cpu load |
---|---|---|---|---|---|---|
1.0 | C gcc #5 | 9.16 | 3,624 | 910 | 35.83 | 95% 99% 99% 99% |
1.2 | Ada 2005 GNAT #3 | 11.25 | 4,116 | 2100 | 44.84 | 100% 100% 100% 100% |
1.4 | C++ g++ #5 | 13.12 | 2,032 | 1440 | 51.38 | 99% 99% 94% 100% |
1.5 | Rust #2 | 13.42 | 8,464 | 1191 | 53.10 | 96% 100% 100% 100% |
1.5 | Swift #2 | 13.55 | 7,036 | 1152 | 50.53 | 91% 99% 90% 93% |
1.5 | Fortran Intel #3 | 13.98 | 10,536 | 1148 | 55.74 | 100% 100% 100% 100% |
1.5 | C++ g++ | 13.98 | 1,844 | 1059 | 54.72 | 99% 99% 94% 100% |
1.6 | C gcc #2 | 14.72 | 964 | 1557 | 57.71 | 99% 99% 100% 95% |
1.7 | Scala #2 | 15.23 | 36,820 | 1017 | 59.62 | 99% 98% 98% 97% |
1.7 | C++ g++ #4 | 15.98 | 2,024 | 1439 | 62.94 | 98% 99% 98% 99% |
1.8 | OCaml #3 | 16.25 | 22,308 | 1017 | 0.01 | 100% 100% 100% 100% |
1.8 | Go | 16.41 | 1,884 | 900 | 65.25 | 99% 100% 99% 100% |
1.8 | OCaml #4 | 16.49 | 12,160 | 1004 | 0.01 | 100% 100% 100% 100% |
1.8 | Lisp SBCL #4 | 16.58 | 47,692 | 1518 | 64.33 | 100% 98% 99% 92% |
1.9 | Pascal Free Pascal | 17.39 | 1,732 | 1018 | 69.38 | 99% 100% 100% 100% |
1.9 | Java | 17.41 | 33,032 | 1282 | 68.64 | 98% 98% 99% 99% |
물론 위의 한가지 알고리즘 계산이 언어의 실행속도를 대표하는것은 아니다. 문자열이나 I/O, 병렬처리 등 언어의 성능을 Benchmark 대상요소는 수없이 많다. Binary Tree 와 정규식 처리 등에서는 Java 가 Go 언어 보다 2배 이상의 좋은 성능을 내며, V8 엔진에서의 JavaScript 가 Java 보다 2배 이상의 성능을 낸다.
(여기서 다른 알고리즘 실행시간 비교자료들도 볼 수 있다)
향후에 실행시간 이외에도 다른 비교자료를 업데이트 해보도록 하겠다
반응형
'Software Development > Go (golang)' 카테고리의 다른 글
3.1 Go - Hello World (0) | 2016.02.29 |
---|---|
2. Go - 개발환경 구성 (0) | 2016.02.28 |
1.2 Go 언어란? - 주요 특징 (0) | 2016.02.28 |
1.1 Go 언어란? - History (0) | 2016.02.27 |
1. Go 언어란? (0) | 2016.02.27 |