vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2017-02-21 09:31 pm

The Go programming language

Тридцать лет назад у меня родился сын, и я проводил много времени, прогуливаясь с детской коляской по живописным окрестностям славного города Долгопрудного. Под мышкой я держал невероятную ценность, доставшуюся мне по удачному стечению обстоятельств: книжку "Язык программирования Си" Кернигана/Ритчи. Присаживался на лавочки и тщательно штудировал мудрость далёкий американских инженеров. Это было еще первое издание, аж 1985 года. Пытался найти обложку в сети - не смог.

Сейчас получаю такое же интеллектуальное удовольствие от книжки "The Go Programming Language" Кернигана/Донована. Великое дело сделали товарищи: сваяли язык 21 века. Не зря он сейчас вытесняет Джаву и прочих из серьёзных проектов.

[personal profile] hogzie 2017-02-25 08:18 pm (UTC)(link)
И да и нет. Нужен баланс, конечно. На Go невозможно написать библиотеку типа STL, а это значит, что, например, контейнеры и алгоритмы нельзя сделать inline и соптимизировать на этапе компиляции. Go тянет с собой большой ран-тайм. Для embedded уже не годится.
Rust тут намного лучше. К тому же, у Rust'а есть возможно остановить GC по желанию. Вообще у Rust'а элегантно сделаны pointers и работа как с managed так и raw данными. Рекомендую посмотреть.

D - самый продвинутый из всех. Более подходит для generic programming, Но и более тяжеловесный для изучения. К сожалению, не взлетел. Но и не мертв.

Swift несет legacy stuff от ObjC, но, как мне кажется, отполирован лучше. Особенно для работы с GUI'евыми приложениями. К сожалению, реально сейчас GUI на нем писать можно только Макось и iOS.
Компилятор у него был очень тормозной и синтаксис нестабильный до 3-й версии. Сейчас компилятор отладили и вообще LLVM комьюнити активно взялось за Swift сейчас. Спасибо, что Apple не присвоила себе язык, как MS сделал с C#.
Edited 2017-02-25 20:19 (UTC)

[personal profile] hogzie 2017-02-28 04:08 am (UTC)(link)
Понятно, что у них есть контейнеры. Я говорил про STL, как инлайн библиотеку для дженерик алгоритмов. Рантайм библиотекой сейчас никого не удивить. А вот инлайном под любой тип - фигвам.
Рад, что у Go "Hello World" такой маленький. Я подозреваю, что они улучшили компоновщик и саму библиотеку для этого, но год назад стоял общий вой, что рантайм у Go слишом толстый.

[personal profile] hogzie 2017-03-02 01:16 am (UTC)(link)
Чистой воды демагогия. STL - это единственная палка-выручалка в плане переносимости и производительности для алгоритмических и вычислительных задач. Альтернатив просто нет.

[personal profile] hogzie 2017-03-02 01:18 am (UTC)(link)
Кстати, дядя по первой ссылке говорит про вещи, которые уже давно исправлены начиная с C++11 и в новых компиляторах. Это я про вложенные скобки, генерацию ошибок и.т.д.