четверг, 5 ноября 2015 г.

[prog.thoughts] Новостью про выход Pyston 0.4 навеяло

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

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

Грубо говоря, если компании X для ведения бизнеса нужно 1500 серверов, а компании Y -- всего 1000, то у компании Y есть гораздо больший запас прочности и возможности по снижению издержек намного выше. А если конкуренту Z требуется всего 150 серверов, то его технологическое преимущество еще выше.

Поэтому кажется, что то, что Google сделал Go для замены Python-а, Facebook работает над ускорением PHP за счет C++, а Dropbox делает на C++ Pyston вместо CPython-а, как раз и является ответом на мой вопрос об обеспечении конкурентного преимущества: борьба с неэффективностью кодовой базы на динамически-типизированных языках. Только Facebook и Dropbox не могут взять и переписать свой код на PHP и Python на чем-то другом. Поэтому и приходится им заниматься выжиманием эффективности из неэффективного кода на другом уровне (HHVM и Pyston). Но то, что невыгодно гонять сервера под интерпретаторами динамического кода для крупных компаний становится уже очевидно.

При этом не думаю, что картина мира сильно изменится в ближайшие годы. Уж слишком низок порог входа в PHP/JavaScript/Python/Ruby, слишком быстро на них клепаются работающие прототипы. Для того, чтобы быстро что-то вывалить на рынок и захватить себе часть какой-то рыночной ниши -- самое оно. А уже проблемы с эффективностью будут решаться потом, когда встанет вопрос по снижению издержек в уже существующих финансовых потоках, пока же самих этих финансовых потоков нет, то нет и смысла думать о неэффективности Python-а или PHP :)

Тем более, что и адекватной замены для динамических языков среди нынешнего нативного мейнстрима-то и нет. Как по мне, так в этом самом нативном мейнстриме сейчас всего два продвинутых высокоуровневых языка: это C++ и Haskell. Но оба слишком сложны и требовательны чтобы использовать их в стиле "фигак, фигак -- и в продакшен". Остальные игроки на этом поле (вроде Eiffel, OCaml, Swift/Objective-C, Pascal, D, Rust и т.д.) слишком маргинальны и экзотичны.

Вот и получается, что код на динамических языках не выгоден в долгосрочной перспективе (и не только из-за производительности), но более-менее адекватная замена для него сейчас есть только в рамках JVM (Java, Scala) и .NET-а (C#, VB и, может быть, F#). Но не в нейтиве.

Комментариев нет: