Comments 34
Отличный пост! Написано явно с душой и любовью к проекту, читается на одном дыхании. Захотелось отправить вам резюме :)
А вот за python прям обидно. Что ж вы его даже не рассматриваете?
Если нужен хайлоад, то ребята правильно сделали что ушли сразу на Go. При всей моей любви к Питону — скорость не его сильная сторона.
Вот не согласен, что в основе техдолга — ошибки прогнозирования. Обычно в основе управленческие решения типа "пока и так сойдёт".
технический долг — это плата за ошибку при принятии решения.
Не обязательно. Ну как пример. Придумали новый метод поиска, с ускорением в 10 раз относительно старого. Поиск используют 20 модулей. 3 модуля, где ускорение сильно нужно, обновили. Ещё 17 — остались в техническом долге.
Где тут ошибка при принятии решения?
P.S. Я бы сказал, что технический долг такого рода — это плата за стремление к ортогональности, совместимости и за перфекционизм.
Серьёзно? Тогда уж сразу на Elixir/Erlang надо уходить :)
Серьёзно. А чем Elixir лучше? Слышал от человека, что пробовал его использовать, что он довольно медленный. Что не удивительно, ибо он крутится на VM.
По впечатлению семилетней давности:
Математика и работа со строками в привычном формате на эрланговской виртуальной машине действительно слабовата. Хочешь быстрые строки — работай с байтами, хочешь числодробилку — пиши на с/плюсах и биндся с ними.
Но если тебе нужно поднять кластер из нескольких сотен узлов с разными задачами — это, наверное, самый старый и отлаженный язык & фреймворк в котором есть для этого буквально всё и из коробки.
Ну, и с тех пор 7 лет прошло, скорее всего какие-то части работы с математикой/строками переделали и оптимизнули.
Для меня слабым местом до сих пор видится отсутствие налаженного «стартового пакета», основной IDE со всеми современными фичами. Не плагина к IntelliJ IDEA с которым еще помучаться надо было, а коробочного решения.
Что не удивительно, ибо он крутится на VM.
Большинство языков с автоматическим управлением памяти крутится либо в VM (Java и ее деривативы, Erlang и т.п.), либо имеет некий рантайм в бинари (Go). Это не мешает этим языкам быть быстрыми при умелом использовании.
Про D я скажу одно: я еще ни разу не видел девелопера, который бы на нем писал. А видел я их много. Поэтому вывод простой: даже если этот язык волшебный (в чем я сомневаюсь, но судить не буду), то нанять под него людей будет сложно.
У меня тут в памяти история от техдира autoscout24.de, которые начали писать бэк на Scala, но через несколько лет им пришлось полностью его переделать на обычной Java т.к. нанять нужное количество девелоперов умеющих в Scala (который явно популярнее D) не удавалось никак, а развивались они быстро и разработчиков нужно было много. Да и читабельность кода на Scala была не на высоте.
Любой вменяемый девелопер, знакомый с любым статически типизированным языком, освоит его за неделю в процессе онбординга в компанию. Это не рокетсаенс.
Ну и еще давай возьмем С++. Статический типизированный? Да. Многие ли могут сказать что знают его хорошо учитывая новые стандарты начиная с C++11? Не думаю.
Ценность разработчика в знании предметной области и умении решать бизнес задачи, а не в знании языка и капризах. И если разработчик чурается расширить свой кругозор, изучением новой для себя технологии, которая сулит повысить его эффективность, то я бы не хотел с таким работать.
Вы сейчас спорите о вкусе устриц с тем, кто их ел. Не нужно быть экспертом в C++, чтобы быстро освоить D. Достаточно знать основы. D гораздо проще, при той же мощности.
Как логировать, чем сериализовать, как здесь работают с базами…
Конечно, всегда можно писать в консоль/файл, написать свой сериализатор в json и использовать первый попавшийся драйвер к бд… но как-то это некрасиво.
Нет там никаких нюансов, вот чего вы фантазируете?
Есть стандартная библиотека покрывающая 90% нужд программирования вообще: https://dlang.org/phobos/index.html
Есть веб-фреймворк покрывающий 90% нужд веб-программирования: https://vibed.org/api/
Ну и есть репозиторий пакетов, если в первых двух чего-то не хватило: https://code.dlang.org/
Есть веб-фреймворк покрывающий 90% нужд веб-программирования:
Я правильно понимаю, что 90% веб-программирования из баз данных нужны только Mongo и Redis? А для 10% полноценная ORM появилась только 5 месяцев назад и имеет аж 22 скачивания за это время?
Я не знаю, зачем они вкорячили клиенты к Монге и Редиске прямо во фреймворк. Делать им там нечего.
О которой "полноценной ОРМ" идёт речь?
90% веба ещё и в рекламе нуждается. Давайте вкорячим Яндекс.Директ в web-фреймворк.
Боюсь даже спрашивать, где вы shark откопали.
https://code.dlang.org/search?q=orm
Опять таки изучение нового языка и всей экосистемы вокруг него — это большая инвестиция времени — за неделю нельзя стать экспертом в любом языке и его либах, кто бы что не говорил.
Если я не вижу каких-то веских оснований этим заниматься (интерес, потенциал и т.п.), то я потрачу это время на что-то другое.
Основы языка изучит — это даже не полбеды, а малая часть того, что нужно знать, чтобы решать бизнес-задачи. Всю остальну экосистему надо изучить, библиотеки, фреймворки, лучшие практики и антипаттерны,...
если язык правильно готовить, то можно даже строить на нём системы реального времени
Я думал что системы реального времени нельзя строить на языках со сборкой мусора. Из-за блокировки потоков сборщиком мусора. Или в php есть какая-то магия по управлению памятью?
По управлению памятью: есть возможность принудительно освободить память, что мы и использовали для долгоживущих процессов, чтобы не разрастались. Там есть тонкости, безусловно, но получилось сделать так, чтобы память реально высвобождалась в процессе работы скрипта.
Но да, PHP все же надо использовать для другого.
Вечный вопрос технического долга