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

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

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

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

Что нужно знать, чтобы быть синьором?

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

В последнее время случилась (и продолжает случаться) тьма публикаций про кадровый голод в айти, про переоценённость синьоров, недооценённость всех остальных, про золотые горы, скандалы, интриги и конский перекос баланса фракции "программисты". Ну, короче, вы сами всё читали и вполне себе в теме. Так вот, в сим опусе хочется вспомнить, а ктож такой синьор и что ему крайне желательно знать, чтобы синдром самозванца не накрывал и чтобы окружающие уважали и на поклон за советом приходили.

Ну-ка, ну-ка...
Всего голосов 190: ↑172 и ↓18+154
Комментарии258

О русской науке замолвите слово или за что я люблю Тинькофф, часть 1

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


Так сложилось, что я уже много лет руковожу научной группой, а с недавних пор лабораторией в МГУ. При этом львиная доля финансирования нашей лаборатории идет от компаний. Изначально она была создана в рамках контракта с Intel (совместная лаборатория), а позднее мы очень активно работали ещё и с RealNetworks (20+ проектов), Samsung (совместная лаборатория), Cisco, Huawei (до 5 контрактов параллельно) и другими. И так получилось, что большая часть наших контрактов (примерно 95% по количеству и 99% по деньгам) приходилась на иностранные компании, при этом взаимодействие с российскими компаниями в среднем заметно контрастировало.

Моим наилучшим примером отношения русских компаний к университетам является любимый пример Олега Тинькова из его книги:

«Третий пример, мой любимый. Весной 2011 года я выступал на мехмате МГУ и с присущим мне эпатажем заявил: «Что такое фундаментальная наука. Ходить грязным, вонючим и в итоге стать нобелевским лауреатом? Так вот, это все булшит! Зарабатывайте деньги. Не думайте про фундаментальную науку, потому что это отстой».
Олег Тиньков, «Революция. Как построить крупнейший онлайн банк в мире»
 

С Тиньковым есть, о чем поспорить. Например, Нобелевская премия за достижения в области математики не присуждается, а присуждаются Филдсовская и Абелевская премии. Впрочем, Тиньков этого мог и не знать. Важнее, что он явно приводил этот пример много раз, и в книге он дан в главе про найм специалистов. 

Меня периодически спрашивают друзья из компаний: «Как там наука? Поднялась с колен? Я слышал — ситуация получше стала». Кому интересно, как Тиньков развалил мехмат что происходит в науке в разрезе работы с компаниями (этюды в багровых тонах, вечерние зарисовки из окопа автора) — добро пожаловать под кат!
Читать дальше →
Всего голосов 177: ↑166 и ↓11+155
Комментарии348

В софте все всрато и становится еще всратее

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

Приветствую хабравчане!

Глава 1 - Нытье про то, что раньше было лучше

Десяток лет читаю Хабр, в основном разработка, программирование, старое железо и посты с адовым рейтингом. Видел несколько постов об ожирении сайтов, софта. О разочаровании в программировании с 2000+ постов. И пост, что в софте все ок, но никто не доволен или как оно там. А не важно. Хочу поделиться своими мыслями и наблюдениями на этот счет.

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

Читать далее
Всего голосов 630: ↑546 и ↓84+462
Комментарии1418

Яндекс.Практикум: самый подробный отзыв

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

Хочу поделиться личным опытом (об/м)учения в Яндекс.Практикуме на курсе "Веб-разработчик", и почему, вернувшись на год назад в прошлое, я бы никогда не стал там учиться даже за бесплатно.

Для начала расскажу о причинах, по которым я решил войти в IT (спойлер: и в итоге всё-таки вполз), и почему я выбрал именно Яндекс.Практикум.

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

1) прибыльную (на комбинате я получал 24 тысячи в месяц);

2) перспективную (в IT действует меритократия, а в строительной сфере без связей, которых у меня нет, далеко на уедешь и высоко не взлетишь);

3) интересную и интеллектуальную. 

У меня есть старший брат – веб-разработчик с 10-летним стажем, за плечами которого опыт разработки в Яндексе, TopTal и нынешняя работа senior-программистом в Amazon. Я специально так подробно рассказываю о своём брате, т. к. далее эта информация понадобится для понимания контекста.

Брат, видя, как я страдаю от невозможности реализовать себя в профессии, на обучение которой потратил 8 лет, предложил попробовать себя в IT-сфере и посоветовал найти подходящие IT-курсы по профессии веб-разработчик, а он будет меня менторить.

Почему я выбрал именно веб? Потому что по личному опыту брата и его друзей-айтишников порог входа в веб ниже, чем в других IT-профессиях. И мне, как визуалу, важно видеть результаты своего труда (чертежи, запроектированные и построенные здания). И как раз фронтенд-разработка предоставляет эту возможность.

Читать далее
Всего голосов 225: ↑209 и ↓16+193
Комментарии473

Истории

Процедурная генерация бумажных снежинок

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

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

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

Си должен умереть

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

Язык Си - один из наиболее влиятельных языков программирования за всю историю. Он стал незаменимым инструментом разработки операционных систем, сместив с этого пьедестала языки ассемблера. Изучение Си обязательно для любого уважающего себя программиста. Этот язык любим за свою внешнюю простоту и ненавидим за беспощадность к ошибкам. Благодаря нему у нас есть ядро Linux и тысячи уязвимостей в нём же в придачу.

Попробуем понять, что же такое этот противоречивый язык Си - благословение или проклятие?

Читать далее
Всего голосов 232: ↑194 и ↓38+156
Комментарии643

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

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

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

Я не буду пытаться сделать из вас эксперта в Bash, а просто покажу минимальный шаблон, который поможет сделать ваши скрипты более надежными и безопасными.

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

Как я «напрограммировал» себе скилл рисования диаграмм в скетч-стиле

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

По работе мне часто приходится рисовать разные схемы, диаграммы процессов и графики, в том числе и те, которые потом используются в качестве иллюстраций для сайта, статей и презентаций. Всё бы ничего, но есть у диаграмм и графиков, сделанных в популярных онлайн-сервисах наподобие draw.io или lucidcharts одна беда — они выглядят как-то слишком уныло и «олдскульно», в духе «90-х». Всю эту инфографику хотелось бы сделать более заметной, привлекательной и душевной (и, желательно, без привлечения дизайнера).

Так у меня возникла идея создания инструмента для отрисовки диаграмм и графиков в стиле «нарисовано от руки». Об истории создания сервиса и «подводных камнях» я расскажу в этой заметке.

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

Три ужасные фичи программирования из прошлого

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

Я верю в программистское клише о том, что большинство плохих фич имеет причины для существования. Ненавидимый многими оператор goto позволяет быстро и удобно выбраться из глубоко вложенной структуры, если пользоваться им с умом. Определённая степень нестрогости типов позволяет им быть более изящными. Указатели памяти могут заставить вас возненавидеть свою жизнь, но они были критически важны в те годы, когда компьютерное «железо» было слабее современного умного термостата. Список можно продолжать.

Но когда я вспоминаю об этих запылённых старых реликтах, то осознаю, что некоторые старые идеи настолько плохи, что лучше всего было бы сжечь их навечно. В этой статье я расскажу о трёх фичах языков программирования, которые были настоящим кошмаром.
Читать дальше →
Всего голосов 116: ↑108 и ↓8+100
Комментарии322

20 вещей, которые я узнал за 20 лет работы инженером-программистом

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

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

Особенно отзываются пункты «стройте компактные системы» и «лучший код — это отсутствие кода». Последний совет я превращаю в цитату из какого-то второсортного фильма про самураев: «Лучшая победа — та, которую ты одержал, не доставая меч из ножен» (думаю, сослуживцы за моей спиной уже закатывают глаза). И, конечно, бесконечные разговоры про легендарных 10x-программистов постоянно хочется прервать советом не связываться с 0,1x-программистами (которые реально существуют, в отличие от 10x).

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

Невыносимая легкость контрибьюта в Open Source

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

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

Читать далее
Всего голосов 133: ↑117 и ↓16+101
Комментарии93

Как служится в белорусской ИТ-роте: честный рассказ дембеля

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

В Беларуси вот уже больше трех лет у программистов, которых признали годными для службы в армии, есть шанс отдать долг Родине, сидя за клавиатурой и монитором. В Военной академии Минобороны Беларуси служит так называемая «ИТ-рота», в которую регулярно набирают призывников на конкурсной основе. Желающих променять суровые армейские будни на написание кода — очень много. Но мне повезло пройти строгий отбор и отслужить в самом необычном военном подразделении страны. Об этом я и хочу рассказать в этом посте.

Читать далее
Всего голосов 262: ↑202 и ↓60+142
Комментарии639

Лучший язык программирования

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

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

Можно ли на него ответить?

Читать далее
Всего голосов 260: ↑252 и ↓8+244
Комментарии207

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

Как написать FizzBuzz на собеседовании

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

Здравствуй, Хабр.


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

Читать дальше →
Всего голосов 177: ↑159 и ↓18+141
Комментарии224

Неожиданные причины торможения программ и систем

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

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

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

Разделы поста чаще всего никак не связаны друг с другом, поэтому можете выбирать самые интересные для вас.
Читать дальше →
Всего голосов 112: ↑111 и ↓1+110
Комментарии88

Нельзя так просто взять и вычислить абсолютное значение

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

Кажется, задача вычисления абсолютного значения (или модуля) числа совершенно тривиальна. Если число отрицательно, давайте сменим знак. Иначе оставим как есть. На Java это будет выглядеть примерно так:


public static double abs(double value) {
  if (value < 0) {
    return -value;
  }
  return value;
}

Вроде бы это слишком просто даже для вопроса на собеседовании на позицию джуна. Есть ли тут подводные камни?

Читать дальше →
Всего голосов 121: ↑118 и ↓3+115
Комментарии102

Хватит клепать псевдопрограммистов, или «Горшочек — не в IT!»

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

Дисклеймер: все события являются вымышленными, а совпадения - случайными

Все они были мертвы. Последний выстрел поставил жирную точку в этой истории. Я снял палец с курка — всё было кончено.

Макс Пэйн

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

Моё путешествие в IT наконец-то дошло до несгораемой суммы. Я, как и тысячи других до меня, кинувший работу ради мечты, добился-таки своего. Мама смотрела на меня с гордостью, а друзья — с завистью! Недоброжелатели же захлёбывались от желчи, ведь стало понятно, что я неиллюзорно переиграл и уничтожил всех дешёвок :) А сам стал иметь VIP-статус недешёвки, ведь мой работодатель уже побежал насыпать мне 100500 килорублей в секунду на мой швейцарский счёт.

Красивая история, правда? Хотите так же? Тогда переходите по этой ссылке и приобретайте курс от <default_school_name>, и через Х дней мы будем трудиться вместе!

Если вы дочитали до этого места, то наверняка поняли, о чём мы сегодня поговорим. Рекламой различных интенсивов и онлайн-курсов сейчас завален весь интернет:

Читать далее
Всего голосов 269: ↑256 и ↓13+243
Комментарии603

JPEG, который можно посмотреть в блокноте

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

Если открыть произвольный JPEG-файл в блокноте, то можно увидеть лишь хаотичный набор символов. Отсюда вопрос: возможно ли закодировать изображение так, чтобы его было можно просмотреть не только обычным способом, но и в обычном блокноте, в виде ASCII-графики.

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

Почему не все тестовые задания одинаково полезны: разбор одного фееричного провала

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


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


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

Читать дальше →
Всего голосов 129: ↑122 и ↓7+115
Комментарии114

Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро

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

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

Пост набрал 206 «плюсов», вышел на 2 место топа недели и вызвал оживленную дискуссию, в которой мне больше всего понравился комментарий: «Коммерческого интереса эффективность по сжатию алгоритмов сжатия без потерь сегодня не представляет, в силу отсутствия принципиально более эффективных алгоритмов. Деньги сегодня — в сжатии аудио-видео. И там и алгоритмы другие. Тема сжатия без потерь удобна именно лёгкостью верификации алгоритма, и не слегка устарела. Лет на 20.» 

Поскольку я сам уже 20 лет в области сжатия видео, с ее бурным развитием мне спорить сложно. А вот что сжатие без потерь развиваться перестало… Хотя логика тут понятна каждому. Я до сих пор пользуюсь ZIP, все мои друзья пользуются ZIP с 1989 года — значит, ничего нового не появляется. Так ведь? Похоже рассуждают сторонники плоской земли. ))) Я не видел, знакомые не видели, и даже некоторые авторитеты утверждают, значит, это так! 

О том, как Intel просили меня не прекращать читать курс по сжатию, ибо людей нет новые алгоритмы делать, я в прошлый раз писал. Но тут и Huawei в ту же дуду дует! Вместо того, чтобы раздать призы и должности победителям, а затем успокоиться, поскольку развитие давно встало, эти эксцентричные люди посчитали конкурс крайне успешным и запустили новый с призовым фондом 200 тысяч EUR.

Развивались ли алгоритмы сжатия без потерь в последние 20 лет? Чем закончился прошлый конкурс и на сколько опередили baseline? Сколько денег получили русские таланты, а сколько зарубежные? И есть ли вообще жизнь на Марсе в сжатии без потерь? 

Кому интересно — добро пожаловать под кат! 
Читать дальше →
Всего голосов 259: ↑258 и ↓1+257
Комментарии134

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