Все потоки
Поиск
Написать публикацию
Обновить

Разработка

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

Пишем примитивный и никому не нужный компилятор

Время на прочтение9 мин
Количество просмотров178K
Я считаю, что каждый программист должен написать свой компилятор.

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

В посте мы рассмотрим, как можно написать свой компилятор C-подобного языка меньше чем за час, исписав всего 300 строчек кода. В качестве бонуса, сюда входит и код виртуальной машины, в байткод которой будет компилироваться исходник.
Читать дальше →

10 способов улучшить свои навыки программирования

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

1. Выучить новый язык программирования


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

Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

Читать дальше →

Я взял кредит 700 тысяч на разработку своей визуальной новеллы, чтобы тебе не пришлось

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

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

Читать далее

В Испании все программисты сеньоры

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

Моя текущая позиция и аутсорсы последних пяти лет на 90% были в западных gamedev студиях, соответственно и общение было преимущественно с не‑ру коллегами. А когда надолго отрываешься от славянских коллективов разработки, то отличия начинают проявляться очень четко, начиная от модели управления командой и заканчивая культурой разработки. Хотя вот культурой я бы это не назвал, скорее плясками варваров‑полуиндусов на останках штатовской империи софтостроения. Индийцы тут ни при чем, а вот практики и сам процесс написания кода очень попахивает этими жителями полумифической страны Индустана. Есть немало книг по истории развития игровой индустрии и истории успехов и провалов разных студий, в основном западных, оставлю в статье список самых интересных и захватывающих, если решите углубиться в историю (кому интересно, будет под спойлером).

Одна из последних — «Not All Fairy Tales Have Happy Endings» (Ken Williams), мемуары одного из основателей Sierra On‑Line, прочитана была около года назад и понравилась больше других, наверное потому, что читая книгу — я, наконец, понимал большинство решений и причин которые привели к тому или иному результату. Этого понимания точно не было десять лет назад, это сложно объяснить, если не работал непосредственно сам долгое время с людьми с иным образом мыслей, культурным кодом, как сейчас принято говорить. Нынешняя команда на 95% франко‑испано‑английская — австралийцы, немного европейцев и американцы. В студии по‑русски говорят трое, включая меня. До этого в карьере были по большей части все же ру‑студии с привычным менталитетом, пускай и под управлением все тех же американцев, но менеджмент скрадывал все огрехи и брал «разговоры как надо» на себя, а нам доставались только технические задачи, грамоты и иногда премии. Десять лет назад, придя в индустрию создания игр, я не задавался вопросом — чем отличаются мои таски, мой код, мои идеи от тасок, кода и идей Джона из Кемпбеловки под Сан‑Хосе, потому что вокруг были все «свои». Сейчас уже тоже все «свои», но те «свои», от этих «своих» отличаются примерно — всем.

Читать далее

Спидран в реальности: история робота, который быстрее всех в мире собирает кубик Рубика

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

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

Для начала определимся с исходными данными. Как у программиста, у меня был крайне разнообразный опыт (сейчас я занимаюсь инфраструктурой рантайма больших языковых моделей в Яндексе). Но в робототехнике опыт был почти нулевой (играл в LEGO MINDSTORMS).

Однажды я увидел, как робот ребят из MIT собирает кубик Рубика за 0,38 секунды. Пересмотрев ролик в замедленной съёмке, решил, что в их решении есть что оптимизировать и этот рекорд можно побить. Как раз в то же время я оказался в окружении людей, которые занимаются робототехникой, поэтому интерес к проекту в целом поддерживался, да и разнообразное оборудование было в доступе.

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

Читать далее

Наше расследование: Блогеры и все все все… Часть 2

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

Прошлая наша статья, где мы задали несколько вопросов блогеру IMAXAI (он же Максим Горшенин) почему-то была им оставлена без должного внимания. Мы предположили, что Максима опять все обманули, и его лучшие друзья, которые "все разработали сами", на самом деле не такие уж и "все сами", а всего лишь в шелкографии китайской платы нарисовали свой бренд. Так как Максим почему-то не захотел во имя "импортозамещения" задать наши неудобные вопросы своим друзьям, то у нас появились теперь вопросы к самому Максиму. Является ли целью его деятельности действительное импортозамещение, или же просто из меркантильных целей, на волне хайпа и эпатажа, он продвигает тех кто с ним сотрудничает и топит других, кто отказался от его предложений? И что будет если те кого он так истово возносит на пьедестал импортозамещения окажутся обычными продвинутыми "переклейщиками шильдиков"? Интересно? Ну что же, сегодня мы поближе рассмотрим очередного друга блогера - компанию GS Group, чьей продукцией наш подопечный, кстати, приторговывает на своем сайте.

Читать далее

地形图非线性保密处理算法, или что не так с картами Китая на спутниковых снимках

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

Китай — это не просто другая страна. Это другой мир. Необязательно ехать туда, чтобы убедиться в этом. Иногда достаточно зайти в интернет. Например, использовать Google Maps или другие сервисы, чтобы открыть карту Китая. И тогда можно заметить, что расположение объектов (дорог, рек, достопримечательностей и многого другого) на карте и на спутниковых снимках, мягко говоря, не совпадает.

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

Получил доступ к Dalle-2. Вы не поверите, что может нарисовать машина… Дизайнеры больше не нужны

Время на прочтение4 мин
Количество просмотров150K
Текст генерации: furry monster with green eyes looking at us, the word «habrahabr» in the background, digital art, blue background, 3d

Привет, чемпион!

Недавно мне посчастливилось стать обладателем доступа к API Dalle-2. Если ты ещё не слышал про Dalle, то это такая CLIP-архитектура, обученная на огромном корпусе пар текст-изображение. Иначе говоря — она умеет генерировать очень качественные изображения из текста. Отличить результаты генерации от рисунков человека иногда просто невозможно! Это одновременно впечатляет и в то же время — немного шокирует.

По сравнению с предыдущей версией — DALL-E 2 умеет генерировать изображения в более высоком разрешении (1024×1024 пикселей, что в 16 раз превышает разрешение в предыдущей версии модели) да ещё и намного быстрее. Более того, DALL-E 2 позволяет редактировать уже существующие изображения.

Нет больше терпения ждать, давайте же опробуем её!
Читать дальше →

Как я заработал 1 000 000 $ без опыта и связей, а потом потратил их, чтобы сделать свой переводчик

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

Как все начиналось


Эта история началась 15 лет назад. Работая программистом в столице, я накапливал деньги и увольнялся, чтобы потом создавать собственные проекты. Для экономии средств уезжал домой, в небольшой родной город, где работал над сайтом для студентов, программой для торговли, играми для мобильных телефонов. Но из-за отсутствия опыта ведения бизнеса это не приносило дохода, и вскоре проекты закрывались. Приходилось снова ехать в столицу и устраиваться на работу. Эта история повторилась несколько раз.

Когда у меня в очередной раз закончились деньги, наступил кризис. Я не смог найти работу, ситуация стала критической. Пришло время посмотреть на все вещи трезвым взглядом. Нужно было честно признаться себе, что я не знаю, какие ниши выбрать для бизнеса. Создавать проекты, которые просто нравятся, — путь в никуда.
Читать дальше →

Морти, мы в UltraHD! Как посмотреть любой фильм в 4K, дорисовав его через малоизвестную нейросеть

Время на прочтение3 мин
Количество просмотров116K
Наверное, вы слышали про технологию Яндекса DeepHD, с помощью которой они как-то раз улучшили качество советских мультфильмов. Увы, в публичном доступе ее еще нет, а у нас, рядовых программистов, вряд ли найдутся силы написать свое решение. Но лично мне, как обладателю Retina-дисплея (2880х1800), недавно очень захотелось посмотреть «Рика и Морти». Какого же было мое разочарование, когда я увидел, как мыльно на этом экране выглядит 1080р, в котором существуют оригиналы этого мультсериала! (это прекрасное качество и обычно его вполне достаточно, но поверьте, ретина так устроена, что анимация с ее четкими линиями в 1080р выглядит мыльновато, словно 480р на FHD-мониторе)

Я твердо решил, что хочу увидеть этот мультсериал в 4К, хотя и совершенно не умею писать нейросети. Однако решение было найдено! Любопытно, что нам даже не придется писать код, понадобится лишь ~100 ГБ места на диске и немного терпения. А результат — четкое изображение в 4К, которые выглядит достойнее, чем любая интерполяция.

image
Читать дальше →

Яндекс открывает технологию машинного обучения CatBoost

Время на прочтение6 мин
Количество просмотров103K
Сегодня Яндекс выложил в open source собственную библиотеку CatBoost, разработанную с учетом многолетнего опыта компании в области машинного обучения. С ее помощью можно эффективно обучать модели на разнородных данных, в том числе таких, которые трудно представить в виде чисел (например, виды облаков или категории товаров). Исходный код, документация, бенчмарки и необходимые инструменты уже опубликованы на GitHub под лицензией Apache 2.0.



CatBoost – это новый метод машинного обучения, основанный на градиентном бустинге. Он внедряется в Яндексе для решения задач ранжирования, предсказания и построения рекомендаций. Более того, он уже применяется в рамках сотрудничества с Европейской организацией по ядерным исследованиям (CERN) и промышленными клиентами Yandex Data Factory. Так чем же CatBoost отличается от других открытых аналогов? Почему бустинг, а не метод нейронных сетей? Как эта технология связана с уже известным Матрикснетом? И причем здесь котики? Сегодня мы ответим на все эти вопросы.

15 малоизвестных команд Linux

Время на прочтение3 мин
Количество просмотров318K
Каждому разработчику в определенной степени следует овладеть навыками работы в терминале. Физически находиться у компьютера не всегда возможно, поэтому приходится подключаться удаленно. И действительно, GUI-программы вполне могут с этим с правиться, но зачастую они работают медленнее, чем получение доступа через тот же терминал (в конце концов, это лишь обмен текстом).
Читать дальше →

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

Безопасность покупателя в рознице: что надо знать лично вам

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


Ценник должен быть с печатью или подписью. Он является документом и обязательно должен быть на товаре. Если вы видите что-то с ценником (неважно, где и как оно стоит), вы имеете право купить его по цене на нём.

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

Второй пример: когда обновляются цены, в торговом зале может остаться ценник со старой ценой ниже. Цена в базе другая? Ну и что, вот ваш же документ. Если же вдруг ценник без печати-подписи, и на таком товаре нет правильного ценника — регистрируйте нарушение. Ценники обязательно должны быть хотя бы на одном товаре из пачки.
Читать дальше →

Генерация музыки в реальном времени

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


«Как автоматизировать сочинение музыки?» — этот вопрос тревожит умы музыкантов еще со времен средневековья. Кеплер превращал траектории движения планет в музыку; Моцарт и его современники изобрели игру в «музыкальные кости» — они броском кубиков выбирали из большой таблицы такты и составляли из них менуэты. Но только с появлением компьютеров алгоритмическая генерация музыки получила настоящее развитие. Теория вероятности, марковские цепи, искусственные нейронные сети — все это стало инструментами создания музыки.
Читать дальше →

Кормление и уход за разработчиками (или почему мы такие ворчуны)

Время на прочтение22 мин
Количество просмотров28K
Прим. переводчика — В оригинале использовался всем знакомый термин «software engineer». Так как русский его аналог «инженер-программист» используется в повседневной речи редко, пришлось использовать слово «разработчик» как наиболее близкое. Также профессия «short-order cook», с которой автор сравнивает положение многих разработчиков в индустрии, была переведена как «мальчик на побегушках» — мне кажется, что она отлично отражает суть проблемы отношения к разработчикам. Наконец, я старался везде вместо слов «to code» и «programming» использовать «разрабатывать» и «разработка» из-за сложившемся в русском языке негативном смысле слов «кодировать» и «программирование» как примитивных процессов перевода требований в машинные инструкции низкого или высокого уровня.

Автор оригинальной статьи — Nickolas C. Zakas, известный фронтенд разработчик и JavaScript-евангелист в свое время проработавший более пяти лет в Yahoo. Это запись из его блога, в которой он говорит о том, почему с разработчиками так сложно договориться и что с этим делать.


Не так давно Дженна Байлотта написала замечательную статью «Как дизайнерам ужиться с разработчиками», в которой она описывает методы работы в команде, позволяющие дизайнерам и разработчикам добиться лучшей производительности. Я в свое время работал с дизайнерами (а, работая в UI, и с разработчиками) и столкнулся с похожими проблемами, так что мне понятен ее практичный подход. Во время командной работы никогда не помешает уважать труд своих коллег и понимать их способ мышления.

Одна из главных мыслей той статьи заключалась в том, что разработчики говорят «нет» слишком быстро. Эта мысль тут же въелась мне в мозг и долго отказывалась вылезать оттуда. Мне хотелось воскликнуть: «Но подожди, ты же не понимаешь, почему мы говорим „нет“!». Тут же появился миллион других защитных аргументов. На самом деле она, конечно, права — мы правда слишком быстро говорим «нет», причем не только дизайнерам, а вообще всем. Это побудило меня поразмыслить над психологией разработчиков и тем, что составляет нашу истинную суть.
Читать дальше →

Цитаты о языках программирования

Время на прочтение3 мин
Количество просмотров41K
Что учёные, писатели и программисты думают о популярных языках программирования.

Все языки


«Есть два подхода к программированию. Первый — сделать программу настолько простой, чтобы в ней очевидно не было ошибок. А второй — сделать её настолько сложной, чтобы в ней не было очевидных ошибок.»
Tony Hoare. Профессор, занимался реализацией Алгол 60, сейчас исследователь в Microsoft Research.


Algol 60 (позже повлиявший на C)


«Я не мог устоять перед искушением добавить в язык нулевой указатель (null), просто потому, что его так легко было реализовать. Это привело к бессчётному множеству ошибок, уязвимостей и сбоев, которые нанесли ущерб, наверное, в миллиард долларов за последние сорок лет.»
Tony Hoare.
Читать дальше →

Если бы PHP был британским

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

Когда Расмус Лердорф впервые собрал PHP, он решил, довольно предусмотрительно и невзирая на свои корни, не использовать в нем датский или даже гренландский. Кстати, правильно сделал, иначе было бы крайне неприятно с ним работать. Взамен он, находясь в этот момент в Канаде, выбрал местный язык. Нет, не французский, а именно этот идиотский диалект Королевского Английского, который еще называют «US English».

С тех пор британские разработчики на PHP выказывали свое недовольство по отношению к этому факту. О чем он думал? И, что самое важное, как нам исправить это надругательство? Как нам разработчикам проследить за тем, чтобы традиции Британской Империи соблюдались и в цифровую эпоху?
Читать дальше →

Не лезьте туда: 47 лет не оцифровывали, и нормально же работало

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

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

С точки зрения ИТ доменная печь — это огромный «чёрный ящик». Вы кладёте сырьё и топливо, получая на выходе чугун и шлак. Измерить внутри все можно почти ничего нельзя: датчики просто «умирают» от температуры, воздействия шихты и прочих условий. Измерить снаружи тоже сложно (да и нужно ли?): большие печи имеют диаметр порядка 15 метров и высоту 35 метров, — что нам дадут граничные условия для таких размеров?! По опыту на малых печах можно измерять уровень расплава (без разделения на шлак и чугун) по ЭДС внешними датчиками, но у нас так не выйдет, и нам пришлось провести целое исследование, чтобы понять, почему.

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

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

Но цифровые возможности развиваются, и мы пробуем применить самые современные цифровые решения, даже если они на грани возможного.

Читать далее

Умный принт-сервер: печать и скан без драйверов на старых принтерах + финансирование опенсорса

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

TL;DR: из-за отсутствия «умных» принт-серверов на рынке сделал собственное устройство, позволяющее печатать и сканировать на старых USB-принтерах через Wi-Fi и Ethernet, с любого смартфона и компьютера под любой ОС, без установки драйверов (AirPrint/Mopria). Девайс включает не только распространённые открытые драйверы, но и проприетарные, в режиме эмуляции x86-кода, plug&play.

Особенностью проекта является со-финансирование открытого ПО: разработчики сервера печати CUPS и сканирования SANE/AirSane получают по $2 с каждого проданного устройства, а оставшиеся деньги формируются в пул, для улучшения существующих открытых драйверов и написания новых.

Читать далее