Обновить
99
0.1
Роман Смирнов @Source

Head of Elixir at Ecom.tech

Отправить сообщение

В C есть UB, это его основная сложность. Так что любителям классики я бы всё-таки Pascal/Delphi советовал.

Ну, ничто не идеально, конечно. Но есть масса вполне последовательных в своих идеях языков: C#, F#, Elixir, Haskell, Kotlin, Rocket, Ruby, Rust.

Любой из них для обучения программированию будет на порядок лучше, чем Python или JavaScript.

А, вы в смысле, что их труд будет цениться меньше, чем сейчас. С этим я согласен. Осталось только понять, сможем ли мы выстроить конвейерное производство ПО в этом столетии. Конвейер хорош там, где надо массово изготавливать одинаковые изделия. Но в IT для таких случаев изначально Copy-Paste есть. Вот только пока кол-во уникальных изделий всё ещё растёт в геометрической прогрессии.

Да дело не в машкодах и не в снобизме. А в том, что на кривом фундаменте потом тяжело будет переучиваться. Я ж не говорю, что все с ассемблера или с С должны начинать. Просто стоит взять язык, который внутренне не противоречив, и нормально реализует ООП или ФП, кому что ближе. Изучить сначала его, а потом уже можно за любой язык браться. Так хотя бы каши в голове не будет.

А что такое Биошок? Гугл только какую-то игру-шутер находит

а что не так с питоном для вхождения ? 

Да всё с ним не так.
Во-первых, это дикий винегрет из парадигм, ни одна из которых не реализована нормально.
Во-вторых, непоследовательность стандартной библиотеки (почему str.lower(), но str[::-1], а не str.reverse()? и т.д. и т.п.)
В-третьих, форматирование определяет логику выполнения (т.е. на самом базом уровне нарушена концептуальная чистота)
В-четвёртых, GIL.

И, мне кажется, что этот список можно продолжать очень-очень долго. Это объективно так себе ЯП. Путанный, сложный, непоследовательный. На мой взгляд, один из худших вариантов для знакомства с программированием.

Да, он в целом был хорош как замена Perl для простеньких скриптов автоматизации (потому что к Perl вопросов было не меньше). Но мы свернули явно куда-то не туда, когда расширили его область применения.

Проблема в том, что в IT постоянно срабатывает закон протекающих абстракций. Поэтому конвейерный подход пока слабо работает.

человеку со средними способностями в ИТ будет все труднее

Вы как-то сами себе противоречите. Ведь при конвейерном подходе как раз понадобится куча людей со средними способностями

Кстати, тут есть эффект потолка. Например, я могу программировать в 10 раз круче условного миддла с з/п 150 т.р./мес, но при этом мне никто не будет платить 1.5 млн.р. в месяц (во всяком случае в 2023 году). Так что денежной мотивации развиваться по сути то и нет.

Особенно это чувствуется после того, как в начале карьеры твоя з/п постоянно растёт и в какой-то момент просто упирается в определенный уровень и дальше чисто на официальную инфляцию индексируется, при том что ты продолжаешь развиваться и накапливать годы ценного опыта.

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

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

Ох уж эти влажные фантазии. Так было лет 15 назад и раньше. Но вряд ли такое повторится в ближайшем будущем. Отрасль слишком сильно разрослась, людей с горящих глазами тупо не хватает, чтобы покрыть хотя бы 20% спроса.

С программистами то же самое. Раньше мы разбирались как всё работает на уровне ассемблера, как компилятор проводит оптимизации, как работают виртуальные машины и сборщики мусора. Сейчас же такие вопросы на собеседовании де-факто под запретом, потому что с такими вопросами вы вообще никого не наймёте. Сейчас люди на серьёзных щах начинают изучать программирование с Python и JavaScript ??‍♂️

20% от 250 - это 50. А по вашим же расчетам надо 60. Впрочем, есть зарплаты и по 300 т.р. Так что я не утверждал, что ни один айтишник не может себе Теслу позволить. Комментарий был как раз к тому, что для джуна это перебор.

Да, вы отчасти правы, это среднее по перцентилю, а больше среднего получает только каждый третий из выборки (это известное следствие из распределения зарплат), т.е. больше указанных уровней получает каждый 30-й (а не 10-й). Т.е. примерно 3.3%, что всё равно дофига в абсолютных числах.

А вот среди программистов каждый второй Senior получал от 190 т.р. в 2021 году. Другой вопрос, сколько среди программистов сеньоров?

Интересные у вас расчеты. Так-то платёж по кредиту не должен превышать 20% от дохода, если о финансово грамотном подходе вести речь. Обычно под "позволить" подразумевается примерно такой расклад.

Причём тут депутаты и нефтяники на севере? Я живу в городе с населением существенно меньше 1 млн человек и не на сервере. И тут всего 24 депутата (причём официальная зарплата у них небольшая), зато куча машин по 5+ млн, которые принадлежат не IT-шникам. Другими словами, хватает людей которые прилично зарабатывают не в IT и не в думе.

Так что "у нас 2к только может нефтяники на севере в тяжелейших условиях получают" - это прям махровый стереотип. Более того, даже по официальной статистике столько, а точнее >= 127 т.р. ($2177) ещё в 2017 году зарабатывал каждый 30-й работающий (по ТК РФ, т.е. без учёта ИП, бизнесменов и т.д.) россиянин.

К 2021 году этот перцентиль подрос уже до >= 189 т.р. ($2570)

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

Ну, для них обычно dirty-cpu scheduler-ы используют, чтобы на основные влияния не было. А так, нюансы есть конечно.

Интересно есть ли какое фундаментальное ограничение скорости расширения пространства. Ведь даже по этим цифрам оно куда больше чем скорость света

Это не так. Если бы пространство расширялось со скоростью света, то свет ни от одной звезды до нас не долетел бы.

Это всё несколько контринтуитивно, возможно статья поможет: https://naked-science.ru/article/nakedscience/rasshiryaetsya-li-vselennaya

В том же эрланге куча оверхеда и тормозов

Иммутабельность безусловно накладывает определенный оверхед на все функциональные языки.

Но, например, для разработки backend это практически никакой роли не играет и никаких торомозов нет. Даже, наоборот, я например переписывал как-то сервис с Go на Elixir. Получилось на пару процентов лучше по throughput, а по latency так вообще стало гораздо лучше - выбросы все ушли.

А там, где нужна числодробилка или мутабельность, для этих 0.01% случаев можно NIF на Rust написать. Как, например, Discord сделал: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users

Ну, вот пока вы слабо представляете, как оно должно работать (потому что ни в одном mainstream языке это нормально не реализовано), в BEAM это уже десятки лет как работает: https://medium.com/flatiron-labs/elixir-and-the-beam-how-concurrency-really-works-3cc151cddd61

EvilBlueBeaver отчасти правильно ответил. Но помимо полностью изолированных друг от друга легковесных процессов, там ещё очень богатый инструментарий по управлению ими, называемый OTP, плюс средства удаленной интроспекции, отладки и горячей замены.
Представьте себе Kubernetes только раз 5 навороченее и в рамках одного инстанса приложения, где вместо подов у вас легковесные потоки, десятки тысяч потоков.

P.S. Могу посоветовать вам 2 книги для краткого ознакомления с этой темой: The Little Elixir & OTP Guidebook и Concurrent Data Processing in Elixir

thread-safe - это хорошо, но этого мало. Это как арифметика для дифференциально-интегрального исчисления - необходимый фундамент, вокруг которого надо ещё много чего выстроить, чтобы было удобно и легко выполнять сложные задачи.

Rust уже начал выстраивать, но до уровня BEAM ему ещё лет 10 упорной разработки.

Информация

В рейтинге
4 083-й
Откуда
Россия
Зарегистрирован
Активность