main

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

Конечно меряются те ещё кони в вакууме, но примерно можно уже прикинуть соотношение скорости.

ИМХО

В качестве первого языка я бы не рекомендовал, эффект утёнка потом испортит изучение всего остального.

Конкретно для меня - сфера применения сильно ограничена. Тех мест где нужна скорость - си безальтернативен, для всего остального перл тупо удобнее в использовании, при гораздо большем количестве батареек, стабильности самого языка и сложившемся сообществе.