Как стать автором
Обновить
64
Карма
0
Рейтинг
Alexey Shrub @worldmind

Программист

Дефицит есть, а денег не дают. Почему?

Блог компании Headz.io Исследования и прогнозы в IT *Карьера в IT-индустрии Статистика в IT

Мы уже выяснили, что у нас есть дефицит рабочих рук во всех отраслях. На примере СССР увидели, что дефицит легко закрывается деньгами и плюшками, что сейчас и происходит в IT. Однако при дефиците рабочих рук в остальных отраслях зарплаты остаются на уровне Румынии и никак не подтягиваются. Почему?

Читать далее
Всего голосов 618: ↑603 и ↓15 +588
Просмотры 275K
Комментарии 1199

Глобальная блокировка интерпретатора (GIL) и её воздействие на многопоточность в Python

Блог компании Wunder Fund Python *Программирование *Алгоритмы *
Перевод

Прим. Wunder Fund: в статье рассказано, зачем появилась и существует глобальная блокировка интерпретатора в Питоне, как она работает, и как она влияет на скорость работы Питона, а также о том, куда в будущем, вероятно, будет двигаться Питон. У нас в фонде почти всё, что не написано на плюсах — написано на Питоне, мы пристально следим за тем, куда движется язык, и если вы тоже — вы знаете, что делать )

Как вы, наверное, знаете, глобальная блокировка интерпретатора (GIL, Global Interpreter Lock) — это механизм, обеспечивающий, при использовании интерпретатора CPython, безопасную работу с потоками. Но из-за GIL в конкретный момент времени выполнять байт-код Python может лишь один поток операционной системы. В результате нельзя ускорить Python-код, интенсивно использующий ресурсы процессора, распределив вычислительную нагрузку по нескольким потокам. Негативное влияние GIL на производительность Python-программ, правда, на этом не заканчивается. Так, GIL создаёт дополнительную нагрузку на систему. Это замедляет многопоточные программы и, что выглядит достаточно неожиданно, может даже оказать влияние на потоки, производительность которых ограничена подсистемой ввода/вывода.

Здесь я опираюсь на особенности CPython 3.9. По мере развития CPython некоторые детали реализации GIL, определённо, изменятся. Материал опубликован 22 сентября 2021 года, после публикации в него внесено несколько дополнений.

Читать далее
Всего голосов 63: ↑60 и ↓3 +57
Просмотры 27K
Комментарии 12

Пол Грэм: «Нечто большее, чем интеллект»

Развитие стартапа Читальный зал Мозг
Перевод
image


Если бы вы спросили людей, что особенного было в Эйнштейне, большинство ответило бы, что он был очень умным. Даже те, кто попытался бы дать вам более утонченно звучащий ответ, вероятно, подумали бы именно так в первую очередь. Еще несколько лет назад я бы и сам ответил так же. Но особенность Эйнштейна заключалась не в этом. Особенным в нем было то, что у него были новые важные идеи. Быть очень умным было необходимым условием для появления этих идей, но эти два понятия не идентичны.

Может показаться чересчур педантичными искать разницу между интеллектом и его последствиями, но нет. Между ними существует большой разрыв. Любой, кто проводил время в университетах и исследовательских лабораториях, знает, насколько она велика. Есть много по-настоящему умных людей, которые не достигают чего-то существенного.

В детстве я думал, что больше всего в жизни люди хотят быть умными. Вероятно, вы тоже так думали. Но готов поспорить, это не то, что вы хотели. Представьте, что вам дали выбор: быть умным и не совершать открытий или, быть чуть менее умным, но открывать много новых идей. Вы бы наверняка склонились ко второму варианту — уж я-то точно. Да, делать такой выбор немного неловко, но его преимущества очевидны.
Читать дальше →
Всего голосов 26: ↑20 и ↓6 +14
Просмотры 15K
Комментарии 70

Обработка ошибок в Rust

Блог компании OTUS Проектирование и рефакторинг *Rust *

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

Читать далее
Всего голосов 40: ↑38 и ↓2 +36
Просмотры 9.3K
Комментарии 23

Консистентно о Консенсусе

Блог компании Timeweb Cloud Программирование *Алгоритмы *Параллельное программирование *Распределённые системы *

Здравствуйте, меня зовут Дмитрий Карловский. А вы на канале Core Dump, где мы берём различные темы из компьютерной науки и раскладываем их по полочкам.


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



Вы можете смотреть это как видео, читать это как статью, либо открыть в интерфейсе проведения презентаций.

Читать дальше →
Всего голосов 28: ↑26 и ↓2 +24
Просмотры 4.3K
Комментарии 6

Безопасная многопоточность в Rust

Блог компании OTUS Программирование *Проектирование и рефакторинг *Rust *

Представьте ситуацию: вы решили добавить функционал в некоторую сущность (класс, структуру, ...). Для этого вам понадобилось хранить внутри сущности дополнительные данные. Вы добавляете приватные поля, меняете и читаете их внутри методов, интерфейс методов не изменяется, и всё выглядит хорошо. И не просто выглядит, а компилируется, запускается и проходит тесты. Красота... А потом, в один прекрасный день, прод падает. И может быть даже, теряет часть важных данных. Вы с коллегами начинаете искать причину поломки. И оказывается, что та сущность, которую вы дополняли год назад, делится между несколькими потоками, а поля добавленные вами не потокобезопасны и поэтому гонка за доступ к ним в какой-то момент вызывает их повреждение. Неприятно, согласитесь? Хотелось бы иметь инструмент, позволяющий избегать подобных ситуаций. И язык программирования Rust такой инструмент предоставляет.

Читать далее
Всего голосов 49: ↑46 и ↓3 +43
Просмотры 11K
Комментарии 3

Make argumentation SExI again: как аргументировать свои решения и предложения

Блог компании Яндекс Практикум Учебный процесс в IT Карьера в IT-индустрии Мозг
Недавно в Яндекс.Практикуме прошёл вебинар «Как аргументировать свои решения и предложения». Его провёл Виктор Горбатов, автор и наставник курса «Критическое мышление: анализ информации, аргументация и принятие решений». Виктор рассказал о том, что такое убедительная аргументация, как создавать аргументы и выстраивать из них единую систему, которая поможет в переговорах, спорах и в жизни вообще.




Всем привет! Меня зовут Виктор Горбатов, я логик, тренер по аргументации и критическому мышлению. Окончил философский факультет МГУ по кафедре логики. Ещё я большой фанат популяризации логики и критического мышления, поэтому веду всевозможные популярные курсы и являюсь наставником курса по критическому мышлению в Яндекс.Практикуме.

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

Сначала расскажу о микроструктуре аргументации — как устроен каждый отдельный аргумент. Затем перейду к макроструктуре аргументации и покажу несколько способов соединения аргументов между собой, немного расскажу об аргумент-картах. Ещё будет простая, но эффективная техника построения убеждающей речи, которую можно без труда использовать в повседневной жизни.
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 12K
Комментарии 6

3D моделирование в Python

Python *Программирование *Работа с 3D-графикой *
Из песочницы

Допустим, вам потребовалось на языке программирования python, построить трёхмерную модель некоторого объекта, затем визуализировать его, или подготовить файл для печати на 3D принтере. Существует несколько библиотек, помогающих в решении этих задач. Поговорим о том, как строить трёхмерные модели из точек, граней и примитивов в python. Как выполнять элементарные приемы 3D моделирования: перемещение, поворот, объединение, вычитание и другие.

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Просмотры 45K
Комментарии 26

Что такое функциональное программирование?

Программирование *Анализ и проектирование систем *Совершенный код *Функциональное программирование *
Перевод

Эта статья является переводом материала «What is functional programming?».

В этой статье Владимир Хориков попытается ответить на вопрос: что такое функциональное программирование?

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

Математические функции не являются методами в программном смысле. Хотя мы иногда используем слова «метод» и «функция» как синонимы, с точки зрения функционального программирования это разные понятия. Математическую функцию лучше всего рассматривать как канал (pipe), преобразующий любое значение, которое мы передаем, в другое значение

Читать далее
Всего голосов 32: ↑27 и ↓5 +22
Просмотры 47K
Комментарии 107

Как формируются зарплаты с точки зрения экономики и почему программисты столько получают

Блог компании Райффайзен Банк Карьера в IT-индустрии Финансы в IT IT-компании

Всем же интересно про зарплаты? Давайте про зарплаты

Меня зовут Алексей и я работаю в Райффайзенбанке техлидом. Последние 12 лет я нон-стоп нанимаю технических специалистов и меня всегда интересовал зарплатный гэп между айтишниками и не-айтишниками. Судя по дискуссиям в интернете — разница в зарплатах волнует многих. Так получилось, что в качестве хобби я интересуюсь экономикой. Поэтому когда моих знаний стало хватать для понимания причин такого разрыва, то в голове сразу же щелкнули шестеренки, картина мира обрела гармонию и я получил заслуженную порцию дофамина.

Под катом я рассказываю о том, как формируется зарплата (особенно программиста) с точки зрения экономики.

Читать далее
Всего голосов 70: ↑62 и ↓8 +54
Просмотры 53K
Комментарии 399

А нужен ли Redis или хватит PostgreSQL

Блог компании Timeweb Cloud Open source *PostgreSQL *NoSQL *Администрирование баз данных *
Перевод
image

Есть проверенная архитектура, которую я видел много раз для поддержки ваших веб-сервисов и приложений:

  • PostgreSQL для хранения данных
  • Redis для координации очередей фоновых заданий (и некоторых ограниченных атомарных операций)

Redis — это фантастика, но что, если бы я сказал вам, что его наиболее распространенные варианты использования этого стека на самом деле могут быть достигнуты с использованием только PostgreSQL?

Сценарий 1: очередь заданий


Пожалуй, наиболее частое использование Redis, которое я видел, — это координация отправки заданий из вашего веб-сервиса в пул фоновых воркеров. Идея состоит в том, что вы хотите записать желание выполнить какое-то фоновое задание (возможно, с некоторыми входными данными) и гарантировать, что только один из многих ваших фоновых воркеров выполнит его. Redis помогает в этом, поскольку предоставляет богатый набор атомарных операций для своих структур данных.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры 15K
Комментарии 10

Практическое руководство по именованию классов, функций и переменных

Программирование *Совершенный код *
Перевод

В этой статье рассказано о методе именования классов, функций и переменных, который позволяет улучшить читаемость вашего кода.

Читать далее
Всего голосов 37: ↑32 и ↓5 +27
Просмотры 32K
Комментарии 41

Чего «энтерпрайзу» в PostgreSQL не хватает

Блог компании Тензор Высокая производительность *PostgreSQL *SQL *Администрирование баз данных *
✏️ Технотекст 2021

В конце прошлого года Иван Панченко предложил мне рассказать на внутреннем семинаре Postgres Pro, чего, по нашему опыту использования PostgreSQL в "кровавом энтерпрайзе" "Тензора", не хватает в этой СУБД.

С докладом пока так и не сложилось, зато появилась эта статья, в которой я постарался собрать наиболее показательные вещи, которые вызывают "напряги" при активном использовании PostgreSQL в реальном бизнесе.

Читать далее
Всего голосов 33: ↑32 и ↓1 +31
Просмотры 14K
Комментарии 31

Мы Опубликовали Качественный, Простой, Доступный и Быстрый Синтез Речи

Машинное обучение *Звук Natural Language Processing *
✏️ Технотекст 2021

fiona


Вторая частьhttps://habr.com/ru/post/563484/


Вокруг темы синтеза речи сейчас много движения: на рынке есть огромное число тулкитов для синтеза, большое число закрытых коммерческих решений за АПИ (как на современных технологиях, так и на более старых, т.е. "говорилки") от условных GAFA компаний, большое количество американских стартапов, пытающихся сделать очередные аудио дипфейки (voice transfer).


Но мы не видели открытых решений, которые бы удовлетворяли одновременно следующим критериям:


  • Приемлемый уровень естественности речи;
  • Большая библиотека готовых голосов на разных языках;
  • Поддержка синтеза как в 16kHz так и в 8kHz из коробки;
  • Наличие своих собственных голосов у авторов решения, не нарушающих чужие права и лицензии;
  • Высокая скорость работы на "слабом" железе. Достаточная скорость работы на 1 потоке / ядре процессора;
  • Не требует GPU, команды ML инженеров или какой-либо дополнительной тренировки или для использования;
  • Минимализм и отсутствие зависимостей / использование в 1 строчку / не надо ничего собирать или чинить;
  • Позиционируется именно как готовое решение, а не очередной фреймворк / компиляция чужих скриптов / тулкитов для сбора плюсиков;
  • Решение никак не связано и не аффилировано с закрытыми экосистемами и продуктами Гугла / Сбера / Яндекса / вставить нужное;

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

Всего голосов 205: ↑205 и ↓0 +205
Просмотры 52K
Комментарии 229

Две недели с F#

Блог компании RUVDS.com Программирование *F# *
А вы когда-нибудь записывали свои впечатления от изучения нового языка? Записывали все, что вам не понравилось, чтобы через пару недель изучения понять, насколько недальновидными и тупыми они были? 



На днях я понял F#, и попытаюсь описать словами мысль, стоящую за языком. 
Читать дальше →
Всего голосов 57: ↑45 и ↓12 +33
Просмотры 12K
Комментарии 22

Реализация процессорной архитектуры из книги Чарльза Петцольда «Код. Тайный язык информатики»

FPGA *Прототипирование *Схемотехника *Производство и разработка электроники *DIY или Сделай сам
Из песочницы

Наверное многие, из тех, кто увлекается изучением того, как работает компьютер на самом низком уровне читали такие книги как: Таненбаум "Архитектура компьютера" или Харрис, Харрис "Цифровая схемотехника и архитектура компьютера", которые безусловного являются объемлющими трудами и хорошими книгами для обучения. Но если вы не являетесь инженером, но всё равно хотите погрузиться в мир цифровых вычислений и более глубоко понять то, а как же работает компьютер. В этом вам сможет помочь книга Чальза Петцольда "Код. Тайный язык информатики", которая начинает свой рассказ от причин, по которым людям понадобился обмен информацией и её обработка , с какими проблемами при этом столкнулись и заканчивает рассказам об устройстве реальных операционных систем и процессоров и их архитектуру. При этом автором был отлично подобран уровень абстракции, которого он придерживался при написании. В каких-то моментах подробно описывая работу элементарных частей процессора, а в других рассказывая простыми словами о сложных вещах.

Читать далее
Всего голосов 20: ↑20 и ↓0 +20
Просмотры 7.4K
Комментарии 1

Почему список в кортеже ведет себя странно в Python?

Блог компании Домклик Python *Программирование *
🔥 Технотекст 2020
В языках программирования меня всегда интересовало их внутреннее устройство. Как работает тот или иной оператор? Почему лучше писать так, а не иначе? Подобные вопросы не всегда помогают решить задачу «здесь и сейчас», но в долгосрочной перспективе формируют общую картину языка программирования. Сегодня я хочу поделиться результатом одного из таких погружений и ответить на вопрос, что происходит при модификации tuple'а в list'е.
Читать дальше →
Всего голосов 106: ↑104 и ↓2 +102
Просмотры 19K
Комментарии 51

Монады как паттерн переиспользования кода

Программирование *Совершенный код *C# *Функциональное программирование *Rust *


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


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


Я же хотел бы занять промежуточную позицию, и рассказать про монады без заумных терминов, но и без котиков, используя понятные ООП разработчикам термины: интерфейсы, паттерны, копипаста, инкапсуляция сложности, бойлерплейт, и так далее. В процессе работы над статьёй ни один термин теории категории использован не был.

Читать дальше →
Всего голосов 108: ↑104 и ↓4 +100
Просмотры 59K
Комментарии 255

Нетоксичное лицемерие

Управление персоналом *Карьера в IT-индустрии
Программистам сызмальства внушают важность технических навыков, забывая научить тактично общаться с окружающими. Наша конкурентная среда богата вызовами и достижениями. Это рождает комплексы равно как и высокомерие. Неудивительно, что в IT остро стоит проблема токсичности.

Я немного утомлен частотой ее появления в жизни. Трудно выразить мнение так, чтобы не вляпаться в очередную попытку выяснить, было ли грубым сказанное.
Читать дальше →
Всего голосов 208: ↑169 и ↓39 +130
Просмотры 78K
Комментарии 728

Информация

В рейтинге
Не участвует
Откуда
Гомель, Гомельская обл., Беларусь
Зарегистрирован
Активность