Найти в Дзене
Компромиссы в программировании: красота, скорость и здравый смысл Иногда кажется, что тормоза из-за архитектуры приложения. Что DDD — это про красивые диаграммы, а не про реальные задачи. Что вся эта модульность, слои, интерфейсы и DI только замедляют работу. Я частенько встречал подобное отношение у программистов. Но правда состоит в том, что в каждом конкретно случае надо разбираться, что именно тормозит. Был проект, где требовалось быстро и стабильно обработать большой поток данных. Всё вроде делали правильно: 🟠 чистая архитектура 🟠 разнесённые слои: контроллер, сервис, домен, репозиторий 🟠 маппинги, DTO, интерфейсы — полный фарш Код получался аккуратный, читаемый, поддерживаемый. Но после релиза бизнес пишет: — «Что-то тормозит. Секунды 2 отклика на конкретный запрос. Почему?» Естественная реакция: «Наверное, архитектура перегружена. Надо упростить!» Но я решил не спешить, а сначала прогнал всё это через профайлер. Результаты: ✅ основное время уходит в запрос к БД ✅ ORM вёл к ленивым выборкам, вызывающим проблему N+1 (все в курсе что это?) ✅ сериализация — тащим лишние поля ✅ сам проход по всем слоям занимает всего лишь миллисекунды То есть, архитектура не была причиной тормозов. Просто система была неоптимальна в других местах. Но при этом был и другой проект, где из-за чрезмерного количества обёрток и абстракций 🟠 каждое изменение в бизнес-логике требовало править 6–8 файлов 🟠 а простой CRUD завязывался на 5 слоёв, хотя этого никто не просил И вот там уже было не торможение, а "архитектурная перегрузка", которая била по velocity команды. 💡 Компромисс здесь не между «хорошей архитектурой» и «быстрой работой». Реальный компромисс — между: ✅ чистотой и здравым смыслом ✅ инженерной красотой и разумной простотой ✅ будущим развитием и задачей «сделать на этой неделе» Если ты автоматически винишь архитектуру в медленной работе — остановись. Если ты слепо лепишь 8 слоёв, даже когда можно обойтись одним — тоже остановись. Инженер — это не тот, кто делает "по канону", а тот, кто умеет соотнести абстракцию с реальностью. #инженерия #архитектура #разработка #программирование #инженерныекомпромиссы
4 месяца назад
Машина Цетлина и ее предшественник «Кора-3» Бонгарда
Автор статьи - Шеля Айзекович Губерман. Аннотация В 2018 году была представлена новая обучающаяся машина — машина Цетлина. Она обладает рядом особенностей. Во-первых, задачи формулируются на языке пропозициональной логики. Во-вторых, операции выполняются в низкоразмерных подпространствах входного пространства. Машина Цетлина лишена значительного недостатка современных нейросетей: сложности в интерпретации решений и при этом демонстрирует высокие достижения. Цель данной работы — напомнить о том, что...
11 месяцев назад
Искусственный интеллект. Искусственный? — Да. Интеллект? — Нет.
автор оригинальной научной статьи: Шелия Айзекович Губерман Сколько бы вы ни повторяли "халва, халва", вы не почувствуете сладость во рту. Ходжа Насреддин В последние 10 лет популярность искусственного интеллекта растет чрезвычайно быстро благодаря разработке новых версий нейронных сетей — распознавателей образов и больших языковых моделей. Достижения реальны и охватывают многие области бизнеса, повседневной жизни и человеческой деятельности. Автор является активным пользователем ChatGPT. Цель данной...
1549 читали · 1 год назад
Так ли важна математика для программистов?
Автор оригинального текста: Steve Yegge Последние 15 месяцев после прочтения биографии Джонни фон Неймана, я работал над восстановлением своих заржавевших математических навыков. Я прочитал огромную стопку книг по математике, и у меня осталась еще целая куча непрочитанных. И наконец-то начинает что-то получаться. Давайте я расскажу вам об этом. Общепринятое мнение ни о чем не говорит Во-первых, программисты не считают, что математика им нужна. Я слышу это очень часто, и я почти не знаю никого, кто бы был с этим не согласен...
868 читали · 1 год назад
Надо ли учить шаблоны проектирования? Они же GoF паттерны.
Бинарный салют, друзья! На связи снова EngineerSpock. Мы уже как-то раз вскользь касались темы паттернов проектирования и стоит ли их учить. То был разбор ролика Лёши Корепанова, где он рассуждал на эту тему и в целом приходил к выводу, что учить паттерны не обязательно. Посмотрите тот разбор по ссылке, весьма познавательно. В этой статье я хочу несколько более подробно поговорить об этой теме, постараться всех успокоить и дать рекомендации по изучению паттернов. GoF-паттерны и преимущества их применения В первую очередь, в этой статье мы будем говорить о так называемых GoF-паттернах...
241 читали · 1 год назад
Как программисту выучить технический английский? Нужен ли он вообще?
Бинарный салют, друзья! На связи Инженер Спок. Меня уже неоднократно просили рассказать о том, как выучить английский язык, поскольку те, кто пристально следит за моей деятельностью, с давних времен знают, что изначально я делал курсы на английском языке и записал около 20 курсов по платформе .NET, языку C# и смежным технологиям именно на английском. Также на английском языке у меня записан один курс для известной американской платформы Pluralsight, и подозреваю, что запишу для них еще не один курс...
318 читали · 1 год назад
Как войти в IT: нужны ли курсы программирования
Бинарный салют, друзья! На связи Инженер Спок. В последние годы наблюдается дикий рост популярности различных обучающих курсов. И, возможно, вы удивитесь, но это касается не только IT-сферы. Ваш покорный слуга сам уже несколько лет делает видеокурсы по программированию. В данной статье мы, разумеется, будем говорить исключительно об IT-сфере и, в частности, о сфере программирования. В IT, по сравнению с другими профессиями, сегодня довольно высокие доходы, а посему многие пытаются войти в это самое IT, и зачастую – с помощью курсов...
278 читали · 1 год назад
Надо ли учить несколько языков программирования
Бинарный салют, друзья! На связи Инженер Спок. Сегодня мы поговорим об одном расхожем мифе, который как бы миф, а как бы и не миф. Я говорю о следующем тезисе: "Язык программирования – это инструмент, а значит, надо выбирать язык, исходя из той задачи, которую вы решаете. Ведь для решения определенных задач подходят определённые языки". Ну, звучит логично, и для новичков может показаться, что лишь глупец будет оспаривать то, что язык программирования – это лишь инструмент, который выбирают, исходя из решаемых задач...
264 читали · 1 год назад
Оптимизация Windows в 2024
Бинарный салют, друзья! На связи Инженер Спок! Сегодня у нас будет тема, по которой я бы никогда не стал высказываться, если бы не наткнулся на сверхпопулярный ролик от небезызвестного Хауди Хо, который называется «Ускоряем Windows до предела». По большей части ролик, в принципе, безвредный: Всё это вполне годные советы для тех, у кого ну совсем плохо с железом. Лайкосы / Подписки / Курсы Кстати, Хауди забыл упомянуть, что дефрагментировать SSD не надо. Однако где-то в середине ролика я наткнулся на то, что втайне надеялся увидеть: вредный совет...
1 год назад
Будущее IT в России
Бинарный салют, друзья! На связи Инженер Спок. После начала Россией так называемой специальной операции на Украине, из России начался массовый отток специалистов, первую очередь из IT-сектора. Во-первых, потому что многие работники IT могут работать удалённо, а, во-вторых, у них тупо есть деньги на релокацию. Отток специалистов – это не единственная проблема. Не стоит забывать, что санкции были наложены многими технологическими компаниями, такими как Google, Microsoft, Intel и AMD. Давайте в этой статье поговорим о возможных последствиях оттока специалистов и наложенных санкций...
561 читали · 1 год назад
Postgres 16: интересное и незамеченное
Самай Шарма Технический директор Tembo Postgres 16 (если вдруг вы пропустили это событие) вышел на прошлой неделе — в этом году новая версия появилась раньше, чем в последние несколько лет. В этом выпуске реализован ряд функций, которых я с нетерпением ждал последние несколько месяцев, и я рад видеть, что они наконец-то попали в руки пользователей. Прежде чем мы углубимся в особенности этого выпуска, давайте обсудим, что, в сущности, представляет собой основная версия Postgres. Лайкосы / Подписки...
1 год назад
Методология БЭМ - что за зверь и насколько сейчас актуальна?
Методология БЭМ является одной из наиболее популярных методологий разработки веб-интерфейсов. БЭМ - это аббревиатура, которая расшифровывается как "Блок-Элемент-Модификатор". Она была предложена разработчиками компании Яндекс и быстро получила широкое распространение в сообществе веб-разработчиков. Главной идеей методологии БЭМ является разделение веб-интерфейса на небольшие независимые блоки. Каждый блок представляет собой логическую часть интерфейса, обладающую своими стилями, поведением и структурой...
1 год назад