Search
Write a publication
Pull to refresh
144
0
Ярослав Сергиенко @pallada92

Визуализация данных и frontend в ИСИЭЗ НИУ ВШЭ

Send message

Проектируем самодельный 16-битный CPU в 2023 году

Level of difficultyMedium
Reading time14 min
Views26K

Для создания самодельного CPU требуется большое количество чипов логики. И в самом деле разумно, что для реализации регистров, счётчика команд, АЛУ и других компонентов CPU на логике TTL или CMOS действительно необходимо существенное число чипов. Но сколько конкретно?

Я попытался оптимизировать свой самодельный CPU, минимизировав количество чипов логики, чтобы ответить на вопрос: какое минимальное число интегральных схем требуется для полного по Тьюрингу CPU без CPU?

Мой ответ: для создания 16-битного последовательного CPU нужно всего 8 интегральных схем, включая память и тактовый генератор. Он имеет 128 КБ SRAM, 768 КБ FLASH и его можно разгонять до 10 МГц. Он содержит только 1-битное АЛУ, однако большинство из его 52 команд работает с 16-битными значениями (последовательно). На своей максимальной скорости он исполняет примерно 12 тысяч команд в секунду (0,012 MIPS) и, среди прочего, способен выполнять потоковую передачу видео на ЖК-дисплей на основе PCD8544 (Nokia 5110) с частотой примерно 10 FPS.
Читать дальше →

Почему WebAssembly плохо годится для Java

Level of difficultyHard
Reading time15 min
Views14K

Как разработчик TeaVM, компилятора байт-кода JVM в JavaScript и WebAssembly, я часто рекомендую пользователям, почему-то жаждущим сгенерировать WebAssembly, начать с JavaScript. Если честно, бэкэнд WebAssembly я очень давно не развиваю, не реализую в нём недостающих фич и не фикшу баги. Меня спрашивают: а почему так? Обычно, я просто игнорирую подобные вопросы, потому что в двух предложениях ответить на них невозможно, а для того, чтобы писать больше предложений, у меня нет времени. Обычно если я встречаю чьи‑то попытки объяснить, чем WebAssembly плох для реализации JVM (а так же, CLR, JavaScript и прочих динамических сред), то они сводятся к следующему: «Java (.NET, JavaScript, ваш вариант) — это управляемый язык со сборкой мусора и исключениями, так что приходится тащить с собой гигантский рантайм». Что же, на самом деле, ситуация несколько сложнее, а размер рантайма вовсе не такой страшный и не является основным источником бед.

Читать далее

Как работает компьютер: глубокое погружение (на примере Linux)

Level of difficultyHard
Reading time48 min
Views188K



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


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


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


Более удобный формат статьи.

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

Исследуем внутренности Linux версии 0.01

Level of difficultyMedium
Reading time7 min
Views37K

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

Читать далее

Эти прекрасные древовидные карты (альтернатива pprint)

Level of difficultyMedium
Reading time7 min
Views5.9K

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

Что происходит, когда запускаешь «Hello World» в Linux

Level of difficultyMedium
Reading time15 min
Views30K

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

Вот как это выглядит в командной строке:

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →

Действующий процессор на 13 микросхемах стандартной логики

Level of difficultyMedium
Reading time7 min
Views24K


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

Действующая модель называется "TD4 CPU", является проектом с открытыми исходниками, реально работает и позволяет понять устройство и принцип работы процессора.
Читать дальше →

Что сейчас происходит с климатом: 3 больших WTF

Reading time6 min
Views44K

По состоянию на 10 июня 2023 года мировые данные показали удивительное совпадение ряда драматических климатических явлений: сочетание многолетнего нагревания океана, вызванного энергетическим дисбалансом Земли, нагревание Антарктиды из-за увеличения площади непокрытого льдом океана, сдвигов ветров и нагревания поверхности из-за Эль-Ниньо, отсутствия пыли в Сахаре и ограничения на содержание серы в судовом топливе 2020 года в совокупности вызвали беспрецедентный нагрев поверхности океана.

Читать далее

SectorC: компилятор Си в пределах 512 байт

Level of difficultyMedium
Reading time9 min
Views21K

SectorC (github) – это компилятор Си, написанный на ассемблере x86-16 и умещающийся в загрузочный сектор 512 байт машины x86. Он поддерживает достаточно обширную функциональность Си для создания реальных и интересных программ, являясь при этом, пожалуй, самым миниатюрным компилятором Си из когда-либо написанных.
Читать дальше →

Ломаем хаскелем Brainfuck

Level of difficultyHard
Reading time28 min
Views10K

Немного о bfc


Brainfuck — очень глупый язык. Там есть лента из 30к ячеек, по байту каждая. Команды bfc это:


  • Передвижение по ленте влево и вправо (символы < и >)
  • Увеличение и уменьшение значения в ячейке (символы + и -)
  • Ввод и вывод текущей ячейки (символы . и ,)
  • И цикл while, который продолжается пока значение в текущей ячейке не ноль. [ и ] это начало и конец цикла соответственно

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

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

Как мыслит GPT? Визуализируем скрытые слои

Reading time8 min
Views4K

В стремлении прояснить языковые модели Transformer с помощью пакета Ecco авторы показывают механизм генерации предложений внутри предварительно обученной языковой модели. После генерации предложения возможно визуализировать представление о том, как модель пришла к каждому слову — речь идёт о столбце на рисунке выше. Строки — это слои модели. Чем темнее элемент строки, тем выше ранг токена в слое. Слой 0 расположен на самом верху. Слой 47 — в самом низу. К старту курса о машинном и глубоком обучении показываем и рассказываем о том, как мыслит GPT.

Читать далее

My4TH — домашний компьютер без процессора

Level of difficultyMedium
Reading time14 min
Views18K

Этот обзор посвящен открытому проекту компьютера My4TH по информации от разработчика: Авторский сайт проекта:

My4TH (произносится как "мой четвертый") - это четвертый домашний компьютер без процессора после MyCPU, MyNOR и TraNOR. Автор хотел и построил максимально простой компьютер с дискретным процессором, использующим как можно меньше элементов и компонентов, под управлением операционной системы Forth.

Смотреть обзор

Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

Level of difficultyMedium
Reading time9 min
Views20K

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

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходимо начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.

Итак, поехали.

Погрузиться

SEO Выводы из утечки кода поисковика Яндекс

Reading time6 min
Views105K

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

Читать далее

Яндекс выпускает DivKit — фреймворк для server-driven UI с открытым кодом

Reading time12 min
Views58K
Привет! Сегодня Яндекс выкладывает в опенсорс DivKit — фреймворк для отрисовки интерфейсов из ответа сервера. Серверная вёрстка поможет ускорить разработку: наладить отправку апдейтов от сервера разным версиям приложения, создать прототип или просто написать интерфейс один раз для нескольких платформ.


Фреймворк включает в себя несколько библиотек: клиентскую часть по отрисовке интерфейсов для Android, iOS и веба, а также DSL для формирования ответа сервера на Kotlin, TypeScript и Python. Исходный код опубликован на Гитхабе под лицензией Apache 2.0.

Сейчас DivKit используется в приложении Яндекс, Алисе, Едадиле, Маркете, ТВ и других приложениях. В этом посте я постараюсь вспомнить историю фреймворка, затем мы напишем с его помощью небольшой просмотрщик ленты Хабра, а в конце я покажу ещё несколько простых примеров интеграции.
Читать дальше →

NocoDB, open-source аналог Airtable

Reading time3 min
Views26K


Airtable — классный инструмент, заслуживший признание у бизнеса по всему миру. Возможность работать с базами данных в удобном no-code интерфейсе с разными представлениями и типами данных не нова, но если в Spreadsheets (где таблица даже не является базой) данные приходилось конвертировать плагинами и костылями, то в Airtable рабочий процесс такой же плавный и удобный, как в Notion при работе с текстом. Но есть один нюанс: Airtable работает по модели сервиса с ограниченным бесплатным функционалом, а код, конечно, закрыт. К счастью, опенсорс-сообщество равно или поздно создаёт открытые альтернативы всем популярным сервисам, и благодаря совместной работе двух десятков разработчиков появился NocoDB.
Читать дальше →

Однобитный компьютер

Reading time6 min
Views40K

Картинка для привлечения внимания:

Внимание! Под катом много картинок!

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

Читать далее

Сайт сына маминой подруги

Reading time4 min
Views102K

Бывает, когда меня нанимают починить или взять на поддержку сайт, то я открываю его исходники и хочу воскликнуть: "А у кого вы его украли?" Потому что качество исполнения и сложность технологий значительно превосходят обыденные для такого класса сайтов. После того как я озвучиваю цену за поддержку подобного сайта и получаю в ответ недоумение, мне хочется уже кричать: "Что происходит?!"

Читать далее

Как американские военные думают и видят мир: визуальный и концепуальный язык

Reading time4 min
Views9.5K
Вооруженные силы Соединенных Штатов действуют на концептуальном уровне, выходящем за рамки любой другой школы мысли, за исключением, возможно, академической философии, потому что у них гораздо больший бюджет.

image

Иногда по вечерам мне нравится уложить детей спать, налить себе что-нибудь и поискать в Интернете PDF-файлы, созданные военными, чтобы посмотреть на удивительную графику внутри них. Я думал, что я единственный человек с этим хобби, но несколько недель назад мой друг Финн Смит сказал мне, что ему тоже нравится военная графика в формате PDF. Интернет прекрасно объединяет людей.

Вскоре мы с Финном согласились, что «осведомленность о боевом пространстве» (“battlespace awareness”) — это особенно хороший термин для поиска. Лучший способ начать такой поиск — попросить Google выполнять поиск только в PDF-файлах в военной сфере. Как этот, например:

“battlespace awareness” filetype:pdf site:*.mil


Что такое «осведомленность о боевом пространстве»? Что ж, если посмотреть на очень-очень высоком уровне, различные части вооруженных сил США пытаются создать операционную систему для использования в ситуациях военного времени. Эти усилия привели к возникновению всевозможных проблем и возможностей финансирования. Как должен выглядеть интерфейс? Как следует идентифицировать врага на экране? Какую роль должны играть дроны?
Читать дальше →

Простой, но умный ход, применяемый в zsh и fish для решения проблемы пропущенного символа перевода строки

Reading time5 min
Views7.5K
Сегодня я хочу рассказать о том, как командные оболочки zsh и fish обнаруживают пропущенные символы перевода строки и выделяют соответствующие места в выводе программ, делая это в условиях, когда модель программирования Unix не даёт им возможности исследовать то, что выводят программы.

Большинство командных оболочек, включая bash, ksh, dash и ash, выводят приглашение командной строки в той позиции, в которой остался курсор после завершения работы предыдущей команды.



То, что приглашение (почти) всегда выводится в известном всем месте, в самой левой колонке следующей строки, объясняется тем фактом, что Unix-программы единодушно сотрудничают в деле размещения курсора именно в этой позиции после завершения их работы.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity