На реддите что-то в последнее время хейтят шарп, ну очень зря. Очень люблю C#, и вакансий по нему всё больше, и сам язык прекрасный, а самое главное, что сегодня к нему легко и просто прикручивается ФП. Ну например, отличные итераторы yield return, но кто проходил мой трек по ФП, наверняка оценил мощь list comprehensions в F#. Вот как это элементарно впиливается в C# ^^^
Более того, в PostgreSQL добавлена поддержка и C#, и F# !!1 Крайне доволен.
We added C# and F# support to PostgreSQL. It's the best-tested and fastest procedural language in PostgreSQL, in our benchmarks. It's also the only one that maps the database to stored procedures using the native database API, allowing DLLs to run unmodified in the client or the server.
Более того, в PostgreSQL добавлена поддержка и C#, и F# !!1 Крайне доволен.
We added C# and F# support to PostgreSQL. It's the best-tested and fastest procedural language in PostgreSQL, in our benchmarks. It's also the only one that maps the database to stored procedures using the native database API, allowing DLLs to run unmodified in the client or the server.
❤33✍17👍7🤔2🐳2
Скоро на курсе карьеры будет материал, почему в такие проекты однозначно не стоит вписываться.
Ну и как бы выглядит довольно фантастически.
За 500т? Если ты действительно на такое способен, так в США это на удалёнке 2-3 сотни тысяч долларов (на руки) в год минимум.
Ставь китика, если реально имеешь
-- опыт управления командой разработчиков
-- опыт разработки архитектуры приложений с учетом масштабируемости, производительности и совместимости с различными устройствами
-- опыт разработки мобильных клиентов на Kotlin и Swift и в серверах Node.js и Unreal
Ну и как бы выглядит довольно фантастически.
За 500т? Если ты действительно на такое способен, так в США это на удалёнке 2-3 сотни тысяч долларов (на руки) в год минимум.
Ставь китика, если реально имеешь
-- опыт управления командой разработчиков
-- опыт разработки архитектуры приложений с учетом масштабируемости, производительности и совместимости с различными устройствами
-- опыт разработки мобильных клиентов на Kotlin и Swift и в серверах Node.js и Unreal
😁41🤯19✍7👍7🤔4
Ну, с Днём Науки! (в СССР он был третьим воскресеньем апреля)
Гипотеза лингвистической относительности Сепира-Уорфа однозначно верна для многих людей и в программировании: языковая структура формирует мышление человека и способ познания им реальности мира.
Всякий раз, когда я пишу какие-то заметки по императивщине или ООП (скоро в вк будет подробный разбор, какие неприятные семантические запутанности неявно вносятся в код при использовании null, и что с этим делать), курсанты нередко пытаются мне это "объяснить". Типа, я просто не понял какую-то фичу.
Да знаю я отлично, как это работает. Это просто то, на что я жалуюсь. Я говорю, что это запутанно и неинтуитивно, и подход ФП всегда лучше.
Но мне в ответ дают ещё больше объяснений, как это работает "правильно" )))
Да... Я знаю. И я говорю снова и снова, что то, как это работает в ООП, плохо и тупо. Мне уже не кажется -- я знаю точно, что люди изучают всё программирование на том языке, на котором они его изучают. Понимаете, о чём я? И в итоге они воспринимают подход этого языка как единственно возможный. Я пытаюсь пофиксить этот когнитивный баг с помощью треков по вычислительным моделям и ФП.
Потому что, когда ребята видят, что кто-то жалуется на что-то в их любимом языке программирования, на котором они реально мыслят, они чувствуют острую необходимость объяснить, как это работает, потому что они предполагают, что жалобы должны означать, что человек просто не понял, как это работает. Потому что если бы он понимал, то больше не жаловался бы на это; типа, такова суть вещей и по-другому быть не может.
Нет. Некоторые (немногие) из нас действительно могут научиться Программировать! Это значит понимать, что выбор конкретного языка под проект -- это всегда выбор из нескольких возможных вариантов, и что некоторые варианты существенно лучше, чем другие.
=
Программирование -- это мышление + синтаксис. Может быть, 90% мышления и 10% синтаксиса. Если синтаксис можно автоматизировать, то научить правильному мышлению можно только того, кто умеет думать.
Гипотеза лингвистической относительности Сепира-Уорфа однозначно верна для многих людей и в программировании: языковая структура формирует мышление человека и способ познания им реальности мира.
Всякий раз, когда я пишу какие-то заметки по императивщине или ООП (скоро в вк будет подробный разбор, какие неприятные семантические запутанности неявно вносятся в код при использовании null, и что с этим делать), курсанты нередко пытаются мне это "объяснить". Типа, я просто не понял какую-то фичу.
Да знаю я отлично, как это работает. Это просто то, на что я жалуюсь. Я говорю, что это запутанно и неинтуитивно, и подход ФП всегда лучше.
Но мне в ответ дают ещё больше объяснений, как это работает "правильно" )))
Да... Я знаю. И я говорю снова и снова, что то, как это работает в ООП, плохо и тупо. Мне уже не кажется -- я знаю точно, что люди изучают всё программирование на том языке, на котором они его изучают. Понимаете, о чём я? И в итоге они воспринимают подход этого языка как единственно возможный. Я пытаюсь пофиксить этот когнитивный баг с помощью треков по вычислительным моделям и ФП.
Потому что, когда ребята видят, что кто-то жалуется на что-то в их любимом языке программирования, на котором они реально мыслят, они чувствуют острую необходимость объяснить, как это работает, потому что они предполагают, что жалобы должны означать, что человек просто не понял, как это работает. Потому что если бы он понимал, то больше не жаловался бы на это; типа, такова суть вещей и по-другому быть не может.
Нет. Некоторые (немногие) из нас действительно могут научиться Программировать! Это значит понимать, что выбор конкретного языка под проект -- это всегда выбор из нескольких возможных вариантов, и что некоторые варианты существенно лучше, чем другие.
=
Программирование -- это мышление + синтаксис. Может быть, 90% мышления и 10% синтаксиса. Если синтаксис можно автоматизировать, то научить правильному мышлению можно только того, кто умеет думать.
❤52👍26❤🔥4👏1🫡1
Как вы считаете, что самое важное для успешной карьеры программиста?
Anonymous Poll
25%
-- учиться как зарабатывать много денег
75%
-- учиться как правильно думать
🤔25👍12
Llama 3 теперь бесплатно доступна оффлайн, в удобной оболочке =>
LM Studio
+ много разных моделек на выбор.
5 гиг памяти, и на среднем компе почти в реальном времени пишет код. Потестировал её на Python, TypeScript, C# и F#, ну получше чем ChatGPT и даже Cloude.
Можно через API локально сервер поднять, дообучать модель под свои нужды, и всё такое. Очень доволен.
LM Studio
+ много разных моделек на выбор.
5 гиг памяти, и на среднем компе почти в реальном времени пишет код. Потестировал её на Python, TypeScript, C# и F#, ну получше чем ChatGPT и даже Cloude.
Можно через API локально сервер поднять, дообучать модель под свои нужды, и всё такое. Очень доволен.
👍62🔥12🤔5❤🔥3🫡2
Я думал, это фейк, проверил, оказалось правда =>
netflix.com/helloworld
Самое смешное, посмотрите, что творится в исходниках этой странички 🙈 140 kB !
Надо было ещё в wasm-контейнер запихнуть.
netflix.com/helloworld
Самое смешное, посмотрите, что творится в исходниках этой странички 🙈 140 kB !
Надо было ещё в wasm-контейнер запихнуть.
😁45👍17🔥4🫡4❤2
Я всё более скептически отношусь к "бессерверным" вычислениям. Функции без состояния + контейнеры похожи на алгоритмы без структур данных :)
Отказываясь от персистентного структурного хранилища, мы тем самым отказываемся от важнейшего инструмента в нашем арсенале, и становимся ограничены тем, что предлагает маленькая облачная верхушка "управляемых" баз данных под жёстким контролем провайдера сервиса.
Но к счастью, появляются очень хорошие альтернативы: "stateful serverless" :)
И алгоритмы, и структуры данных в одном флаконе. В вк рассказывал подробнее,
напомню, например опенсорсный GolemCloud: вам не нужен сервер, и в тоже время вы не найдёте такой serverful-архитектуры, которую нельзя было бы реализовать с помощью этого инструмента! 🚀🚀🚀
Отказываясь от персистентного структурного хранилища, мы тем самым отказываемся от важнейшего инструмента в нашем арсенале, и становимся ограничены тем, что предлагает маленькая облачная верхушка "управляемых" баз данных под жёстким контролем провайдера сервиса.
Но к счастью, появляются очень хорошие альтернативы: "stateful serverless" :)
И алгоритмы, и структуры данных в одном флаконе. В вк рассказывал подробнее,
напомню, например опенсорсный GolemCloud: вам не нужен сервер, и в тоже время вы не найдёте такой serverful-архитектуры, которую нельзя было бы реализовать с помощью этого инструмента! 🚀🚀🚀
✍46👍9❤🔥3⚡2❤2
Написал сегодня в вк программный пост, про стратегический рост в айтишке :)
Если вы будете прокачивать не хард- , а софт-скиллы с целью "заработать побольше денежек", то лет через 5 останетесь вообще без штанов. Вас обойдут реально умные ребята, с хорошим образованием, знающие и умеющие в computer science...
В один прекрасный (и уже не такой и далёкий) день внезапно выйдет какая-нибудь Llama 7 от гениальных математиков, и с джуниорским (а потом и миддловским уровнем) будет покончено. И что вы будете делать?..
Пацанчики поумнее, у кого четвёрка по алгебре, быстро научатся с помощью Llama делать задачки уровня джуниора, пойдут работать программистами за 30 тысяч рублей и будут этому очень рады...
Вот увидите, через 1-2 года всеинфоцыганские популярные онлайн-курсы по программированию начнут учить computer science, качественному software design и профильной математике (если конечно найдут хороших преподов, в чём большие сомнения). Без этого немыслимо будет продуктивно использовать AI...
Меня это вообще не волнует, потому что, хм....
Если вы будете прокачивать не хард- , а софт-скиллы с целью "заработать побольше денежек", то лет через 5 останетесь вообще без штанов. Вас обойдут реально умные ребята, с хорошим образованием, знающие и умеющие в computer science...
В один прекрасный (и уже не такой и далёкий) день внезапно выйдет какая-нибудь Llama 7 от гениальных математиков, и с джуниорским (а потом и миддловским уровнем) будет покончено. И что вы будете делать?..
Пацанчики поумнее, у кого четвёрка по алгебре, быстро научатся с помощью Llama делать задачки уровня джуниора, пойдут работать программистами за 30 тысяч рублей и будут этому очень рады...
Вот увидите, через 1-2 года все
Меня это вообще не волнует, потому что, хм....
1👍43🤔18😁7⚡4🫡4
Нифига себе:
Narya -- new proof assistant that implements a type theory that is a common generalisation of dTT and HOTT!
Да ещё и написано это чудо наF# OCaml!
(только HOTT это не HoTT :)
This type theory seeks to combine the advantages of "Book HoTT" and cubical HoTT, and avoid some perceived disadvantages of either
Про кубики я пояснял 5 лет назад: "Кубическая теория типов для малышей"
=
"Towards Large Language Models as Copilots for Theorem Proving in Lean"
Our latest experiments show that our co-pilot can automate >80% of the proof steps (2.3 times better than the previous rule-based baseline aesop).
P.S. Тем временем: "Яндекс разрабатывает Календарь+ с ИИ" 😁
Narya -- new proof assistant that implements a type theory that is a common generalisation of dTT and HOTT!
Да ещё и написано это чудо на
(только HOTT это не HoTT :)
This type theory seeks to combine the advantages of "Book HoTT" and cubical HoTT, and avoid some perceived disadvantages of either
Про кубики я пояснял 5 лет назад: "Кубическая теория типов для малышей"
=
"Towards Large Language Models as Copilots for Theorem Proving in Lean"
Our latest experiments show that our co-pilot can automate >80% of the proof steps (2.3 times better than the previous rule-based baseline aesop).
P.S. Тем временем: "Яндекс разрабатывает Календарь+ с ИИ" 😁
👍36⚡8🤔5🎉4❤3
Грядёт Java 23 !!1
Поддержка векторных вычислений, паттерн матчинг сделали почётче,
добавили Class-File API (a standard API for parsing, generating, and transforming Java class files), а также Stream Gatherers:
This will allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations.
Только не знаю, "transform data" имеется в виду наверное "pulling data" ?
Вот если "pushing data", было бы реально круто, но скорее всего нет.
Поддержка векторных вычислений, паттерн матчинг сделали почётче,
добавили Class-File API (a standard API for parsing, generating, and transforming Java class files), а также Stream Gatherers:
This will allow stream pipelines to transform data in ways that are not easily achievable with the existing built-in intermediate operations.
Только не знаю, "transform data" имеется в виду наверное "pulling data" ?
Вот если "pushing data", было бы реально круто, но скорее всего нет.
🤔33👍24❤6🔥3🤓2
(микро)сервисы внедрили в мэйнстрим такое заблуждение, что дескать async в них более удобны, чем sync. Служба A может принять запрос, но если служба B недоступна (и при этом необходима для выполнения запроса конечного пользователя -- см.мои материалы СильныхИдей про 9 видов зависимостей) , async никак не поможет.
Модно ещё реактивное программирование -- это когда мы хотим писать асинхронный код аки синхронный, не особо парясь. Такая нативная поддержка асинхронщины в языке, можно назвать её "point-free фп-стиль на стероидах", тут же и генераторы, и async, и корутины (в котлине)... но по большому счёту, это просто классическая семантика продолжений (callcc). Теоретически вы можете переписать вообще все свои функции в стиле cps даже в обычной программе ("Уничтожаем императивность CPS-трансформацией"), но, по понятным причинам, это сложновато для программистов мэйнстрима.
Потому что есть такая глобальная проблема, что много "асинхронных" разработчиков не понимают самой сути async. Rust например прививает ошибочный стиль.
Зачем вообще нужна асинхронщина?
Для хорошей масштабируемости параллелизма (concurrency), и всё.
(ну ок, она нужна ещё в js :)
Модно ещё реактивное программирование -- это когда мы хотим писать асинхронный код аки синхронный, не особо парясь. Такая нативная поддержка асинхронщины в языке, можно назвать её "point-free фп-стиль на стероидах", тут же и генераторы, и async, и корутины (в котлине)... но по большому счёту, это просто классическая семантика продолжений (callcc). Теоретически вы можете переписать вообще все свои функции в стиле cps даже в обычной программе ("Уничтожаем императивность CPS-трансформацией"), но, по понятным причинам, это сложновато для программистов мэйнстрима.
Потому что есть такая глобальная проблема, что много "асинхронных" разработчиков не понимают самой сути async. Rust например прививает ошибочный стиль.
Зачем вообще нужна асинхронщина?
Для хорошей масштабируемости параллелизма (concurrency), и всё.
(ну ок, она нужна ещё в js :)
👍45🤔11✍5💯3❤1
... по сути async -- это просто ухудшенная версия зелёных тредов
(бедная java от них отказалась ещё в версии 1.2 :) и так и осталась на уровне C# до явления в нём async/await и Task)
-- только с плохой интеграцией в язык программирования и слабой эргономикой использования.
Однако в большинстве нормальных языков green threads поддерживаются в той или иной форме: Erlang, Go, Haskell, Julia, OCaml, PHP :) , для Python конечно есть расширения, и т.д.
А вот в Rust их нету (но есть async/await и Future), в основном потому, что у Rust нет рантайма, и для встроенной в язык асинхронщины требуется полностью другая механика компиляции + подходящий рантайм, например Tokio (однако в результате легко получить несовместимый в другими рантаймами код :).
Зелёные потоки в основном подразумевают, что компилятор будет вставлять точки выхода везде -- чтобы можно было приостановить выполнение любого потока в любой момент.
=
Короче говоря, в мэйнстриме понимание асинхронщины сводится примерно к такому: "просто сбрось это в тред и забудь о нём". Это самое наихудшее использование потоков, которое только можно себе представить :)
Добавляется сложность и накладные расходы (например, ядрам приходится постоянно кэши сбрасывать). В результате получается, что десятки тредов просто занимаются своими делами, контактируя через какой-то общий объект. Это ужасно и по использованию процессорного времени, и в целом практически всегда это признак плохого проектирования.
Рассказывал подробнее про "concurrency или параллелизм?".
P.S. Вообще, "однопоточный" Rust был бы существенно дружелюбнее и проще. Не исключено, что когда-нибудь это и случится )
(бедная java от них отказалась ещё в версии 1.2 :) и так и осталась на уровне C# до явления в нём async/await и Task)
-- только с плохой интеграцией в язык программирования и слабой эргономикой использования.
Однако в большинстве нормальных языков green threads поддерживаются в той или иной форме: Erlang, Go, Haskell, Julia, OCaml, PHP :) , для Python конечно есть расширения, и т.д.
А вот в Rust их нету (но есть async/await и Future), в основном потому, что у Rust нет рантайма, и для встроенной в язык асинхронщины требуется полностью другая механика компиляции + подходящий рантайм, например Tokio (однако в результате легко получить несовместимый в другими рантаймами код :).
Зелёные потоки в основном подразумевают, что компилятор будет вставлять точки выхода везде -- чтобы можно было приостановить выполнение любого потока в любой момент.
=
Короче говоря, в мэйнстриме понимание асинхронщины сводится примерно к такому: "просто сбрось это в тред и забудь о нём". Это самое наихудшее использование потоков, которое только можно себе представить :)
Добавляется сложность и накладные расходы (например, ядрам приходится постоянно кэши сбрасывать). В результате получается, что десятки тредов просто занимаются своими делами, контактируя через какой-то общий объект. Это ужасно и по использованию процессорного времени, и в целом практически всегда это признак плохого проектирования.
Рассказывал подробнее про "concurrency или параллелизм?".
P.S. Вообще, "однопоточный" Rust был бы существенно дружелюбнее и проще. Не исключено, что когда-нибудь это и случится )
👍36✍18❤7🤓1
Сегодня курсант написал:
...я сломал интеграционные тесты, когда починил, выяснилось, что они были сломаны во многих местах уже и не мной :)
... не заметил, как тестеры начали неправильно актуализировать тесты, по итогу часть тестов удалили, после чего я понял, что отдел тестирования совсем не понимает, что им нужно сделать без лида, а лид в отпуске)
Точно по мему! )))
...я сломал интеграционные тесты, когда починил, выяснилось, что они были сломаны во многих местах уже и не мной :)
... не заметил, как тестеры начали неправильно актуализировать тесты, по итогу часть тестов удалили, после чего я понял, что отдел тестирования совсем не понимает, что им нужно сделать без лида, а лид в отпуске)
Точно по мему! )))
😁58⚡3❤1👏1🤔1
С момента возникновения РФ я был в отпуске два раза: в 1995-м и в 2008-м, когда работал в офисе (и это были самые бесполезные годы в карьере :) просто рутинные задачки без какого-либо роста ). За все эти десятилетия я не выезжал за пределы МО (за исключением 2013-го, когда ездил по приглашению в Питер, в гости к Олегу Степанову, CEO JetBrains на тот момент).
У меня нету и не было автомобиля (но есть мотоцикл и 5 велосипедов: ). Дачи нету, домик у жены в Солнечногорске. Я живу очень скромно, кушаю простую пищу, ношу неубиваемую спортивную одежду, и мне особо ничего не нужно и не интересно, кроме computer science и роста моих курсантов (по зарплате : ).
Я практически никогда не отдыхаю, да и не люблю "отдых", у меня за 45 лет карьеры программистом ни разу не бывало выгорания или приступов прокрастинации
(на треке "Элитный программист" начал выкладывать материалы, как с ней справляться, первый материал "Тайные техники монахов, лучших спортсменов и элитных военных"),
и прекрасно себя чувствую.
Чего и вам искренне желаю! :)
У меня нету и не было автомобиля (
Я практически никогда не отдыхаю, да и не люблю "отдых", у меня за 45 лет карьеры программистом ни разу не бывало выгорания или приступов прокрастинации
(на треке "Элитный программист" начал выкладывать материалы, как с ней справляться, первый материал "Тайные техники монахов, лучших спортсменов и элитных военных"),
и прекрасно себя чувствую.
Чего и вам искренне желаю! :)
❤🔥88👍28👏8🫡8🏆6
Ну, кто хочет сегодня поработать? :)
Вышел pre-release Torch Titan (a native PyTorch Library for large model training).
Currently we showcase pre-training Llama 3 and Llama 2 LLMs of various sizes from scratch.
Get started in minutes, not hours!
Отлично дополнит мой курс по PyTorch.
Вышел pre-release Torch Titan (a native PyTorch Library for large model training).
Currently we showcase pre-training Llama 3 and Llama 2 LLMs of various sizes from scratch.
Get started in minutes, not hours!
Отлично дополнит мой курс по PyTorch.
👍33⚡19🤔2❤1