Pull to refresh

Comments 28

Надеемся, что скоро все догадаются использовать на серверах компилируемые языки. Или не надеемся, конкуренция же :)

Про джавовый HotSpot и другие интересные вещи, которые возможны только в рантайме, уже можно рассказывать?

В рантайме можно спекулятивные оптимизации на основе статистики использования, которые нельзя в compile time.
Вот тут есть довольно общий список: https://wiki.openjdk.java.net/display/HotSpot/PerformanceTechniques
А вот тут пара слов про Profile: https://wiki.openjdk.java.net/display/HotSpot/PerformanceTechniques


Если не углубляться совсем в дебри, то на основе статистики поведения метода в runtime, виртуальная машина может его не только скомпилировать в машинный код, но и например, выкинуть какие-нибудь проверки аргументов, ветки условий, итд.


Более того, эти оптимизации занимают некоторое время, и требуют определенного способа использования приложения. Поэтому иногда для того, чтобы свежезапущенное приложение было молодцом с самого начала, в него профиль оптимизации можно загрузить. Вот так никогда не делал, но на хабре где-то не так давно была статья по этому поводу.

Строго говоря, в некоторые компилируемые языки уже некоторое время назад вкрутили PGO. Например, у gcc есть набор флагов для сборки приложения для сборки профиля и набор флагов для компиляции с учётом собранной статистики.


Конечно, это не настолько гибко, как сборка в рантайме и deopt и повторный opt при изменении нагрузки.

Ведь все проблемы программистов от скриптовых языков) И от дженериков.

Несколько инженеров особенно хорошо понимают как справляться с главной сложностью при работе с языком Go.
И есть несколько инженеров, которые пишут на Rust и не знают проблемы с гонкой данных.
Было бы интересно узнать какие главные сложности у инженеров Dropbox при работе с языком Rust, если его используют совсем немного.
UFO just landed and posted this here

Не не везде с гонками все так плохо, есть Кложур, к примеру — там транзакционная память и иммутабельность. Хотя синтаксис подкачал, читать его — это специальный скилл, я до сих пор не освоил. Вот бы кложур, но со статической типизацией и пайтоновским синтаксисом...

А почему с пайтоновским синтаксисом? Чем он лучше?
Скобочек меньше писать. :)

Пайтоновский синтаксис — это баланс, при котором код читабелен, может иметь статическую типизацию и при этом все еще можно писать настоящие лисповые макросы (и при этом не вывихивать мозг как в скале и без больших ограничений как в расте).

Более сложный синтаксис не всунуть, там есть два ограничения — 1) весь синтаксис должен быть разобран ДО поступления в макрос 2) парсер не должен знать структуры программы, так как макрос может сгенерировать любую программу.

Лисп — самый простой способ сделать парсер максимально тупым, парсер на основе отступов — следующий уровень, а если исхитриться то можно и операторы в парсер засунуть. Я как-то интерпретатор писал такого добра, на уровне хобби.
Пытаюсь понять, что только что прочитал…

Эта статья — перевод статьи Tammy Butow? Или вольное мыслеизяснение после прочтения статьи\статей Tammy Butow?

Так почему Dropbox использует Go? В чем профит, ведь до Go Dropbox использовал что-то другое, или нет?

Странная статья…

Мне очень нравится Go, но охота больше видеть примеры конкретных применений, архитектурные решения и т.п., а не «Мы пишем на языке Х потому-что нам нравится на нем писать»…

Ну для конкретных примеров — можно пойти и глянуть код :) Например — вся стандартная библиотека golang (насколько я понимаю) написана на самом golang. Ещё — docker/moby, kubernetes, helm, десятки репозиториев. Я последнее время тоже стал замечать что хабр не торт превращается в помойку.
Видел здесь несколько замечательных статей посвященных Go, причем очень хороших (как по мне), одна из любимых =) а на офф.сайте го — вообще все в деталях

Информации на самом деле много, но увольте в случае расхождения громкого оглавления статьи с содержанием

Подожду на первоисточник сабжа.
Это перевод вольной записи слов с доклада Тэмми с конференции по Go. Вот оригниальный доклад https://www.youtube.com/watch?v=5doOcaMXx08

Вот больше про выбор Go в dropbox https://www.youtube.com/watch?v=EWsXbsUBm-M
Афегеть! Спасибо большое, интересно посмотреть. в избранное
UFO just landed and posted this here
Раньше там была бóльшая часть на питоне, даже Гвидо к ним перешел, а сейчас, значит, после безуспешного «ускорения» питона, они переходят на го… Что будет с Гвидо?

При этом метания у них начались именно с момента выхода Python 3. Врятли он им так сильно мешал, но похоже это заставило их задуматься над выбором языка. Помнится я видел последовательно два или три видео, где они говорят, что переходят, то на Go, то на JVM (не помню какой язык), то клянутся в любви к Python.

Может момент и совпал, но это не причина. Я думаю, наиболее верятно им потребовался более производительный язык, т.к. при их масштабе оно чувствительно, по этой же причине они создали pyston.
Да, с самого старта затея выглядела не очень, т.к. они пошли по пути от которого pypy отказался.

Ну а как же матра питонистов, что те немногие узкие места надо переписывать на C? Вроде действенный подход. Да, все равно останется беда с математической многопоточностью (GIL и вот это вот все), но в целом то язык неплох.


Я думаю дело не в технических характеристиках, а в политике: просто появилось много людей желающих попробовать что-то новое. А дальше одно за другое: "Вы слышали, вот те ребята с 15го этажа переписали приложуху X на go и получили прирост в стопицот! Давайте и мы тоже так сделаем!"

Ну а как же матра питонистов, что те немногие узкие места надо переписывать на C?
Так оно, но в dropbox очень много io, а го для этого самое то, в итоге они начали переписывать узкие места не на C, а на go, что выглядит разумно.

Ну а где они хотят мучить cpu-bound и хотят достаточных гарантий — они начали использовать rust. Нормальный инженерный подход, выбирают язык/экосистему под конкретную задачу.

Легче переписать на Go (он больше похож на Python), чем добавлять код на C.
И до сих пор большая часть на питоне
Sign up to leave a comment.

Articles