golang
Общее впечатление - примитивен, но быстр, прост в освоении и подкупает лёгкостью писать многопоточные приложения. Использоваться будет, хотя плюются от него уже сейчас. 1, 2, 3, 4.
Синтаксис отвратен. Убогое if (err != nil)
для обработки ошибок, с обязательными скобками, даже есть там тупо return. Сам nil как таковой, for x in range { }
и подобное.
-rwxr-xr-x 1 alex alex 3,5M Окт 29 20:35 test
-rw-r--r-- 1 alex alex 571 Окт 29 20:34 test.go
-rwxr-xr-x 1 alex alex 406 Окт 29 20:30 test.pl
3,5 метра на бинарник. Динамическую линковку завезли только в последнюю (1.5) версию, которой в репах ещё нет.
Вот это откровенно смущает:
PID VSZ SIZE RSS %MEM COMMAND
4580 813808 809600 2312 0.0 test
800 метров памяти на хелловорд? Пусть и виртуальной. Там явно нет столько mmap()'а.
Примитивные бенчмарки
Написал тут тестовый сервер, отдающий массив фиксированного размера в json, но с сериализацией.
Одно ядро процессора, команда: ab -n 100000 -c 10 http://127.0.0.1:3000/json
go (исходники):
Server Software:
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /json
Document Length: 13 bytes
Concurrency Level: 10
Time taken for tests: 9.838 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 11600000 bytes
HTML transferred: 1300000 bytes
Requests per second: 10164.60 [#/sec] (mean)
Time per request: 0.984 [ms] (mean)
Time per request: 0.098 [ms] (mean, across all concurrent requests)
Transfer rate: 1151.46 [Kbytes/sec] received
perl (исходники):
Server Software:
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /json
Document Length: 13 bytes
Concurrency Level: 10
Time taken for tests: 37.787 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Non-2xx responses: 100000
Total transferred: 7300000 bytes
HTML transferred: 1300000 bytes
Requests per second: 2646.43 [#/sec] (mean)
Time per request: 3.779 [ms] (mean)
Time per request: 0.378 [ms] (mean, across all concurrent requests)
Transfer rate: 188.66 [Kbytes/sec] received
Конечно меряются те ещё кони в вакууме, но примерно можно уже прикинуть соотношение скорости.
ИМХО
В качестве первого языка я бы не рекомендовал, эффект утёнка потом испортит изучение всего остального.
Конкретно для меня - сфера применения сильно ограничена. Тех мест где нужна скорость - си безальтернативен, для всего остального перл тупо удобнее в использовании, при гораздо большем количестве батареек, стабильности самого языка и сложившемся сообществе.