Pull to refresh
335
25.3
Юрий Панчул / Yuri Panchul @YuriPanchul

Проектировщик CPU, GPU, сетевых микросхем

Send message

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

Level of difficultyMedium
Reading time33 min
Views96K

Привет, Хабр!

Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.

Читать далее
Total votes 216: ↑214 and ↓2+212
Comments77

Как установить GOWIN EDA для запуска примеров Школы Синтеза

Level of difficultyMedium
Reading time4 min
Views4.1K

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

Чтобы справиться с данной проблемой, группа энтузиастов, под руководством Юрия Панчула, добавила поддержку множества плат и нескольких toolchain’ов от различных производителей FPGA.

В данном туториале, посвященном работе с FPGA от компании Gowin, я расскажу про то, как установить GOWIN EDA, о доступных платах и перефирии к ним и про работу со скриптами сборки примеров.

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments9

Почему B-деревья быстрые?

Level of difficultyEasy
Reading time7 min
Views46K

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Total votes 185: ↑184 and ↓1+183
Comments13

Не спеши, Маша! Разбор примеров из книги Хэррис Д.М., Хэррис С.Л. Цифровая схемотехника и архитектура компьютера

Level of difficultyMedium
Reading time12 min
Views15K

И вот, скачав бесплатную версию книги, я в который раз убедился, что как оно было этак 40-50 лет тому назад, так оно фактически и осталось. Но больше убило другое. В научном плане стало даже хуже. Теорию, судя по содержанию книги, нынче пролетают "по диагонали", что влечет за собой элементарные ошибки, характерные больше для студентов техникума, чем "вышки", на которых, судя по рекламе, эта книга рассчитана.

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

Итак, начнем...

Читать далее
Total votes 48: ↑45 and ↓3+42
Comments106

Алгоритмы не важны

Level of difficultyEasy
Reading time7 min
Views44K

Прошу простить заранее за несколько кликбейтный заголовок )

Не так давно писал в соцсетях хейт‑пост по поводу «алгоритмических секций» при приёме на работу в Яндекс.

Да и многие другие софтверные компании это практикуют и считают навыки написания алгоритмов — чуть ли не самым важным навыком для программистов.

И ставят данной компетенции очень высокий приоритет при приёме на работу.

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

Читать далее
Total votes 167: ↑133 and ↓34+99
Comments370

Алгоритмические собеседования нужны

Level of difficultyEasy
Reading time8 min
Views18K

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

Сразу скажу, что моя статья относится лишь к условному ФААНГу. Многие аргументы из этой статьи теряют значимость в других случаях: если у вас маленькая фирма, мало кандидатов или у вас всего 10 пользователей.

Я утверждаю, что алгоритмические интервью - лучший вариант для ФААНГа из всех пока придуманных.

Читать далее
Total votes 77: ↑53 and ↓24+29
Comments147

Парсим строки с SMT-решателем

Reading time11 min
Views4.2K

Этот пост о том, как можно решить задачу разбора строки по контектстно-свободной грамматике с помощью SMT-решателя. Здесь будет введение в тему, описание принципов работы и ссылка на github с работающей программой.

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments9

Делай нейминг как сеньор

Reading time13 min
Views115K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

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

Читать далее
Total votes 186: ↑184 and ↓2+182
Comments221

Made at Intel. Пировали, веселились…

Reading time7 min
Views33K

Всем привет.

Хочу сообщить тем, кто волновался за мою судьбу после опуса о последних днях Интела в России на прошлой неделе, что у меня все хорошо. Я жив‑здоров и работаю все там же 😊. Про опус, однако, сказать того же не могу. Людям он неплохо зашел, а вот менеджмент (на обеих сторонах был не в восторге). Так что найти его теперь можно только у меня в телеге. Ну а я возвращаюсь к более ранним дням истории Интел в России. И речь у нас сегодня пойдет о нехитрых развлечениях командировочных.

Случай в «Главпивторге»

В июне 2010го приезжал в Россию ХрИстос Георгиопулос, Vice President of Developer Relations Division, к которой я тогда относился. Он был начальником моего начальника Пареша Паттани. Надо сказать, что мы тогда очень неплохо ладили и это наверно были мои самые счастливые времена в Интел. Христос был этническим греком, вполне православным и даже немного понимающим по‑русски. «Зовите меня просто ХристОс» — говорил он по‑нашему, чем приводил окружающую публику в неописуемый восторг. Так вот 13го июня случился у меня День Рождения. И я повел Христоса, Пареша и еще пару местных коллег в ресторан «Главпивторг» на Лубянке. В то время он мне очень нравился. Сидели — ели, выпивали и праздновали мои 34 (господи, как давно это было). Ну и в конце действа я привычно полез за карточкой чтобы расплатиться. И тут Христос в шутку шлепнул меня по рукам и сказал, что платить должен он, потому что он здесь старший. Я возразил, что не собираюсь вешать ужин на контору, расплачусь сам, потому что это мой день рождения и я сам всех сюда позвал. «Да ладно» — подмигнул Христос, — «Mother Intel заплатит. Все равно мы подарок тебе купить забыли». Так я усвоил, что за столом расплачивается старший по должности. И в принципе, это — правильно, потому что исключает всякие соблазны и лихоимства, когда подчиненный платит за начальника, а тот ему это одобряет. Но иногда случались в жизни исключения из этого правила.

Читать далее
Total votes 166: ↑151 and ↓15+136
Comments34

Made at Intel. «Советские газеты»

Reading time4 min
Views17K

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

— Никогда не читайте советских газет перед едой,- советовал профессор Преображенский.

— Так ведь других нет, Филипп Филиппович, - возражали ему.

— Тогда никаких не читайте.

Герою “Cобачьего сердца” вторил мой коллега Jim Curley (Кудрявый Джимми). “Никогда не читайте советских газет. Ни правды - в “Известиях”, ни известий - в “Правде”. Причем говорил он все это на чистом русском языке. Все-таки в советские времена учили в школах неплохо. Даже если это были американские разведшколы.

 Я, однако, сегодня о том, что корпоративные новости в сущности мало чем отличаются от советских газет. В бытность свою в Интел я дополнил булгаковский афоризм таким образом: "никогда не читайте корпоративных газет. А если читаете - сразу переходите в колонку некрологов. Только там вы, возможно, найдёте немного правды".  Organizational announcements в Интел - это настоящая кладезь информации. Как человек, который 20 лет внимательно читал "корпоративные некрологи" могу сказать, что там важно все  - кто, куда, когда, почему... Мало того, важно каким тоном написано и даже какими словами. Общих правил, в принципе нет. Но статистика говорит, что есть вероятностные законы.

Читать далее
Total votes 94: ↑91 and ↓3+88
Comments20

Что есть ЮАР прямо сейчас

Reading time12 min
Views49K

Если долго, долго, долго,
Если долго по тропинке,
Если долго по дорожке
Топать, ехать и бежать,

То пожалуй, то конечно,
То наверно, верно, верно,
То возможно можно, можно,
Можно в Африку прийти!

Очень интересен тот факт, что я не вижу никаких свежих описаний ЮАР на Хабре. А зря. Возможно вам будет интересно это место. В нём есть множество недостатков, но наличествует множество достоинств. Возможно вам приглянется. За подробностями прошу под кат.

Под кат - это вот сюда вот.
Total votes 160: ↑153 and ↓7+146
Comments272

CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее

Reading time6 min
Views49K

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

В этом посте описан мой топ-25 обязательных инструментов CLI, на которые я привык полагаться. Если тут нет вашего любимого - дайте мне знать в комментариях :)

Читать далее
Total votes 114: ↑107 and ↓7+100
Comments83

FPGA для программиста, конечные автоматы (verilog)

Reading time12 min
Views26K

Стиль описания конечного автомата как образ мышления


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

Например, очень популярной является работа: Clifford E. Cummings, The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates. Всякий раз, когда специалисты решают обсудить, как правильно писать конечные автоматы, кто-то обязательно достает эту публикацию.

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

В беседах с коллегами я понял, что споры о том, как надо писать конечные автоматы в 1 или 2, 3 always блока, связаны с разным представлением (осознанием) реализуемого алгоритма, разным типом мышления. Попробую показать это на примере.

Я полагаю, что эта статья не первая статья о FSM и Verilog в вашей жизни, поэтому я не буду объяснять ни что такое конечный автомат, ни как он описывается на Verilog, а перейду сразу к делу.
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments27

Неизвестный UART: теория

Reading time12 min
Views28K

Можно с уверенностью сказать, что с момента публикации первой версии стандарта RS‑232 в мае 1960 года и по настоящее время, было написано приблизительно 109 независимых реализаций UART на всём, чём угодно. Однако, подобно «Hello world» в мире прикладного ПО, а также мигания светодиодом — «Hello world» в мире цифровой электроники (сигнализирующий об успешной настройке оборудования и среды разработки) — процесс написания UART способен проиллюстрировать особенности языка или платформы, демонстрируя применение тех или иных синтаксических конструкций для решения практических, насущных и понятных проблем.

В данном цикле статей будет рассказано про написание модуля UART на SystemVerilog, про синтез данного модуля на различных платформах и про некоторые другие аспекты применения UART в ПЛИС. Но прежде, чем писать код, поговорим про сам протокол и про особенности аппаратной части вне контекста ПЛИС.

СТАРТ_БИТ
Total votes 91: ↑91 and ↓0+91
Comments33

Раскрываем секреты загрузочных ISO-образов

Reading time20 min
Views82K


В этой статье я хочу поговорить об ISO-файлах, на которых, как известно, распространяются дистрибутивы операционных систем. Начиная писать статью, я немного сомневался в её актуальности, так как я ассоциировал ISO-образы с оптическими дисками, которые, ввиду ряда причин, уходят в прошлое. У меня было стойкое понимание, что ISO-файлы в основном нужны только для хранения образов оптических дисков, которые содержат установщик операционной системы. Но, как оказалось, всё гораздо сложнее и интереснее, особенно применительно к современному железу.
Читать дальше →
Total votes 193: ↑193 and ↓0+193
Comments73

Dozen tricks with Linux shell which could save your time

Reading time10 min
Views8.8K


  • First of all, you can read this article in russian here.

One evening, I was reading Mastering regular expressions by Jeffrey Friedl , I realized that even if you have all the documentation and a lot of experience, there could be a lot of tricks developed by different people and imprisoned for themselves. All people are different. And techniques that are obvious for certain people may not be obvious to others and look like some kind of weird magic to third person. By the way, I already described several such moments here (in russian) .

For the administrator or the user the command line is not only a tool that can do everything, but also a highly customized tool that could be develops forever. Recently there was a translated article about some useful tricks in CLI. But I feel that the translator do not have enough experience with CLI and didn't follow the tricks described, so many important things could be missed or misunderstood.

Under the cut — a dozen tricks in Linux shell from my personal experience.
Read more →
Total votes 16: ↑14 and ↓2+12
Comments0

Отладка интерфейса I2S

Level of difficultyEasy
Reading time6 min
Views9.3K

В этом тексте я написал про особенности интерфейса I2S и про то как можно тестировать и отлаживать интерфейс I2S.

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments4

Знакомимся с OpenGL

Reading time8 min
Views294K

OpenGL


Знакомство с OpenGL нужно начать с того, что OpenGL — это спецификация. Т.е. OpenGL лишь определяет набор обязательных возможностей. Реализация же зависит от конкретной платформы.
OpenGL является кроссплатформенным, независимым от языка программирования API для работы с графикой. OpenGL — низкоуровневый API, поэтому для работы с ним неплохо иметь некоторое представление о графике в целом и знать основы линейной алгебры.
Читать дальше →
Total votes 96: ↑81 and ↓15+66
Comments47

Задача про пьяницу

Level of difficultyMedium
Reading time9 min
Views32K

В книге «Пятьдесят занимательных вероятностных задач с решениями - Ф. Мостеллер» есть интересная задача про пьяницу, который с вероятностью p делает один шаг к обрыву и с вероятностью 1-p один шаг от обрыва. Пьяница стоит на расстоянии одного шага от обрыва. Что можно сказать про вероятность того, что он упадет?

Читать далее
Total votes 101: ↑101 and ↓0+101
Comments72

River Raid на FPGA

Reading time4 min
Views15K
Еще не делали River Raid на FPGA? Ок, тогда я сделаю.


Совсем недавно FPGA для меня был черным ящиком, а Verilog казался вообще магией — ну как можно написать программу, по которой построится схема на логических элементах? Изучить это я планировал давно, но без реальной железки даже не хотел начинать.
Total votes 51: ↑51 and ↓0+51
Comments34

Information

Rating
230-th
Location
Sunnyvale, California, США
Date of birth
Registered
Activity