Как стать автором
Обновить
854.57

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

О динамическом программировании на пальцах

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 917

Как динамическое программирование может упростить нашу жизнь? Как можно оптимизировать решение задач?

Сегодня мы разберем динамическое программирование на пальцах с примерами на Python!

Усаживайтесь поудобнее, леди и джентльмены!

Вперед!
Всего голосов 2: ↑1 и ↓1 0
Комментарии 4

Новости

Производительность базового поиска в Ozon как культурный феномен

Уровень сложности Средний
Время на прочтение 22 мин
Количество просмотров 1.1K

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

Читать далее
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 2

Смогут ли разработчики конкурировать с нейросетями: оцениваем возможности AI и человека

Время на прочтение 7 мин
Количество просмотров 611

Привет, Хабр! Меня зовут Александр Демидов, я директор по разработке департамента управления технологиями МТС. Сегодня поговорим про использование в программировании нейросетей, включая ChatGPT и конкуренцию нейросетей и программистов.

Всё чаще слышны разговоры, что вот-вот компьютер может заменить специалистов-людей, и кодерам придется искать новую работу. Так ли это на самом деле? На олимпиаде True Tech Champ я выступал с докладом по этой теме, и теперь хотелось бы обсудить этот вопрос здесь, на Хабре. Моё мнение и анализ текущей ситуации — под катом. Буду рад любым комментариям.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 5

Парсер бинарных данных с WPF визуализацией в виде дерева структур и их полей. Структура, управляемая данными

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 659

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

Адаптированный проект для публичного использования, рабочий на Гите, компилируется в простой exe-файл. Можно скачать как exe-файл, если доверяете своему антивирусу.  Надеюсь, кому-то пригодится. Но чтобы начать пользоваться надо научиться писать XАML определения вложенных структур, по которым работает парсер. Ссылка в конце статьи.

Не будет никаких модных слов, только то, что нужно для работы.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 1

Истории

Хороший, плохой, никакой: почему важно проектировать дизайн и как это делать?

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 589

Всем привет! Меня зовут Владислав Шиханов, я ведущий программист в CDEK. В этой статье я хочу рассказать о том, как мы пришли к проектированию и review плана разработки до начала реализации задачи, что это дало и как повлияло на скорость и качество разработки. Также поделюсь практическим руководством: как проектировать и проверять технический дизайн, чтобы это было быстро и удобно. Статья будет полезна разработчикам любой квалификации, но особенно тимлидам и менеджерам для внедрения практики в командах.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Хитрый виджет: разбор тестового Flutter-задания. Детективная нуар-история

Уровень сложности Средний
Время на прочтение 24 мин
Количество просмотров 526

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

«Введённое сегодня утром чрезвычайное положение из‑за аномальных метеоусловий остаётся в силе на территории всего штата. Метель свирепствует в городе третий день, и конца ей пока не предвидится» — тревожно вещал радиоприёмник. На облачное небо медленно взбирались наполненные тревогой сумерки.

Полиция прибыла на место происшествия в мотель «Burnout Meteo Inn» за час до меня. В 911 сообщили о подозрительном…

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 3

Как понять, есть ли в тебе искра программиста

Время на прочтение 6 мин
Количество просмотров 3.2K

Я думаю начать учиться писать код. Какой ноутбук мне купить? Нужно ли участвовать в буткемпе? Нужны ли моему ребёнку особые курсы или подготовка, чтобы поступить на computer science?

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

Приведу свой совет вкратце


Прежде чем думать обо всём этом: специальности, вузе, в который будет поступать ребёнок, покупке ноутбука, вам нужно понять, есть ли у вас (или у ребёнка) «искра программирования».

Это потребует от вас немного времени и усилий, но здорово то, что онлайн есть куча высококачественных и бесплатных ресурсов, позволяющих вам ощутить, что же такое кодинг и разработка, чтобы вы приняли решение, стоит ли выбрать это в качестве карьеры или хобби. Некоторые из них я приведу в этом посте.
Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Комментарии 5

Unity 3D: о чем давно было пора рассказать нашим подросткам

Уровень сложности Простой
Время на прочтение 17 мин
Количество просмотров 2.9K

Прочитал как‑то на Хабре заметку «Что делать с детьми летом, если ты айтишник?» Ответил на нее двумя своими заметками (раз и два). А теперь предлагаю взглянуть на поднятую тему немного с другой стороны: с точки зрения «борьбы с цифровым неравенством»? С тем самым, которое проявляется в ограниченном доступе к информации. По мнению некоторых отечественных экспертов, для ее преодоления, якобы, достаточно всего лишь «100% обеспечение образовательных учреждений, учреждений здравоохранения, органов государственной власти и местного самоуправления современными услугами цифровой связи»... Про борьбу с «цифровым неравенством» учреждений здравоохранения и органов госвласти промолчу... А вот про образование скажу — «Хошь, как хошь, а маловато будет!» А что, по‑вашему, уважаемые эксперты, получат «преодолев цифровое неравенство» наши «рядовые» школьники? Складывается стойкое убеждение, что единственное, что они получат — это игромания. Где те ресурсы, которые помогут расширить их знания, разовьют полезные навыки? Где (адаптированные на соответствующий возраст) методические материалы, которые сделают доступными нашим детям хотя бы уже имеющиеся в сети Интернет полезные ресурсы, созданные в других странах?

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 2

Android. Принять себя или Cookie?

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 2.3K

Печенья, кеки, кукисы, ку-ку, кексы… нет, куки!

– Cookie — это что? 

– Почему их не нужно принимать?

– Безопасно ли это?

– CookieJar, CookieManager, CookieStore… WebView?

А также истории про то, как жить с cookie в большом приложении, и сколько эмоций вы испытаете, если в вашем приложении есть WebView.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 3

Керниган и Пайк были правы: делай что-то одно и делай это хорошо

Уровень сложности Простой
Время на прочтение 11 мин
Количество просмотров 12K
Роб Пайк и Брайан Керниган

В октябре 1984 года два идеолога опубликовали радикальный манифест… ну, или что-то вроде того.

Легенды computer science Брайан Керниган и Роб Пайк сформулировали в Program Design in the UNIX Environment паттерн архитектуры ПО, за сохранение которого оба боролись долгие годы.

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

Старые программы покрываются коркой сомнительных фич.

Суть статьи часто сводят к аббревиатуре DOTADIW, или «Do One Thing And Do It Well» («Делайте что-то одно и делайте это хорошо»). В Unix и его потомках есть множество программ, в которых воплощена эта мантра: ls просто создаёт список файлов, cat просто выводит содержимое файлов, grep просто фильтрует данные, wc просто подсчитывает слова и так далее. У каждой программы есть несколько опций, меняющих её поведение, но не слишком сильно. Например: wc можно сконфигурировать для подсчёта строк или слов, но не для подсчёта количества абзацев или вхождений какой-то фразы.

Мощь Unix, защищаемая Керниганом и Пайком, заключалась в возможности соединения этих простых программ в цепочку для создания сложных поведений. Зачем добавлять сопоставление регулярных выражений в wc, если с этим уже способна справиться grep?
Читать дальше →
Всего голосов 46: ↑44 и ↓2 +42
Комментарии 33

Вероятно, вы неправильно используете метод __init__ в Python

Время на прочтение 8 мин
Количество просмотров 15K

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

Читать далее
Всего голосов 16: ↑11 и ↓5 +6
Комментарии 18

Как стать программистом графики: советы команды AMD Game Engineering

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.5K

Очень часто нас спрашивают о хороших веб-сайтах для новичков по изучению программирования графики. Разумеется, мы бы с радостью порекомендовали GPUOpen, но правда в том, что основная целевая аудитория GPUOpen — программисты среднего или высокого уровня. Для только начинающих погружаться в мир графики есть более подходящие веб-сайты.

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

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 8

Почему я больше не буду работать наставником на IT-курсах

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 73K

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

Читать далее
Всего голосов 280: ↑267 и ↓13 +254
Комментарии 487

Ближайшие события

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
Business Code Conference
Дата 30 ноября
Время 17:30 – 00:00
Место Москва
Импульс Т1
Дата 1 декабря
Время 12:30
Место Москва Онлайн
YaTalks 2023 — главная конференция Яндекса для IT сообщества
Дата 5 – 6 декабря
Время 9:00 – 23:59
Место Москва Белград Онлайн

Концепция имплицитов в Scala

Время на прочтение 6 мин
Количество просмотров 1.3K

Концепция implicit в Scala представляет собой одну из наиболее уникальных и мощных особенностей этого языка программирования. Этот ключевой механизм позволяет разработчикам создавать более гибкий и чистый код, улучшая читаемость и расширяемость программ.

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

Читать далее
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 3

Два программиста — пара. Теория и практический опыт Сбера в парном программировании

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 3.9K

Привет, Хабр! Сегодня поговорим о парном программировании, с передачей опыта Сбера — наши разработчики знают о методике парной работы не понаслышке. Команда программистов становится командой только при постоянном взаимодействии. Если один кодит, а другой просто смотрит — это просто наблюдение, а не парное программирование. Как же заниматься этим правильно? Подробности под катом.

Читать далее
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 17

Продолжаем изучать аппаратные возможности расширения Микротик RBM33G

Время на прочтение 17 мин
Количество просмотров 4.6K
В своей предыдущей статье я рассказал о возможностях расширения «обвеса» Микротик RBM33G и некоторых особенностях этой платы, в частности интегрированном GPIO-интерфейсе. Я не остановился на достигнутом и продолжил свои опыты, чем и хочу поделиться с читателем. Модули реле через GPIO мы уже подключали к роутеру в предыдущей статье, повторяться не буду. Опишу некоторые другие плюшки.

Чтобы использовать GPIO, в предыдущей статье мы отключали его от второго (serial1) последовательного порта RBM33G. Первый (serial0) порт по умолчанию занят консолью для подключений через DB9-разъем на лицевой панели платы. Предлагаю на время вернуть настройку serial1 по умолчанию:

/system routerboard settings set gpio-function=serial1

Чтобы изменения вошли в силу, нужна перезагрузка:

/system reboot

Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 4

Потоки в Java: От рождения до смерти. Введение в многопоточность

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 6K

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

Жизненный цикл потока - основная концепция Java, которую мы подробно рассмотрим в этой статье. Мы будем использовать краткую иллюстрированную диаграмму и фрагменты практического кода, чтобы более глубоко понять состояния потока во время его выполнения. Эта статья о создании потока - отличное начало для понимания потоков в Java.

Читать далее
Всего голосов 6: ↑3 и ↓3 0
Комментарии 1

Тестируемая архитектура. Часть 2: абстрактность и наблюдаемое поведение

Время на прочтение 9 мин
Количество просмотров 837

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

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

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

64-битных переменных для банковского счёта «хватит всем»?

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2.7K

«640 КБ хватит всем», — предположительно Билл Гейтс, примерно 1981 год.

Мы решили, что в нашей системе управления финансовыми базами данных TigerBeetle для хранения всех финансовых сумм и балансов будут использоваться 128-битные числа, и что мы откажемся 64-битных целых чисел. Хотя кто-то может заявить, что 64-битного integer, способного хранить в себе целые числа от нуля до 264, достаточно для подсчёта всех песчинок на Земле, мы осознали, что для адекватного хранения всех транзакций нам нужно подняться выше того предела. И в статье мы расскажем, почему.

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 4

Дообучение saiga2_7b_lora

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 1.9K

Дообучение 7-миллиардной модели Saiga2 под свои задачи, используя сгенерированный датасет с помощью GPT. В данной статье есть все необходимые ссылки и код для предобработки и запуска обучения модели, а также квантования модели.

Читать далее
Всего голосов 16: ↑13 и ↓3 +10
Комментарии 1

Вклад авторов