Pull to refresh
3
0
Смирнов Иван @StopKran

Scala back-end developer

Send message

Процессор

Reading time8 min
Views150K
Сколько я себя помню, всегда мечтала сделать процессор. Наконец, вчера я его сделала. Не бог весть что: 8 бит, RISC, текущая рабочая частота — 4 кГц, но он работает. Пока что в программе моделирования логических цепей, но все мы знаем: «сегодня — на модели, завтра — на деле!».

Под катом несколько анимаций, краткое введение в двоичную логику для самых маленьких, короткий рассказ про основные микросхемы логики процессора и, собственно, схема.
Читать дальше →
Total votes 361: ↑347 and ↓14+333
Comments66

Поиск в строке. Реализация в CPython

Reading time4 min
Views8.2K
Довольно давно на одной из презентаций выпускников одной из так называемых ИТ-академий докладчика спросили о деталях реализации поиска подстроки в строке толи в Java, толи в .Net. Выпускник конечно не смог ничего вразумительного ответить, а я отложил вопрос в и без того длинный todo-лист.

Прошло время, Python стал для меня актуальней enterprise платформ, так что вашему вниманию разбор алгоритма поиска подстроки в Python.
Читать дальше →
Total votes 55: ↑52 and ↓3+49
Comments10

Спецификация системных вызовов операционной системы Хамелеон (осторожно, много картинок!)

Reading time6 min
Views2.8K
Здоровья всем читателям!

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

Спор «микроядро vs монолит» ведётся много лет, но представляют ли обе спорящие стороны об архитектуре системы, построенной на микроядре? Возможно, этот топик немного прольёт свет на архитектуру микроядерных систем.
Читать дальше →
Total votes 107: ↑95 and ↓12+83
Comments35

Скоро ICFPC 2009

Reading time2 min
Views1.1K
В эту пятницу 26 июня стартует ежегодный конкурс программирования, International Conference on Functional Programming Contest (сокращенно ICFPC). Конкурс знаменит оригинальными заданиями, варьирующимися от «очень интересных», до «срыв башни». Не смотря на слово «функциональный» в названии, никаких ограничений на используемый язык программирования нет (абсолютно! это традиция конкурса).

В прошлом году участвовало 330 команд со всего мира. В этом году снова приглашаются все желающие.
Конкурс длится три дня (72 часа). Участвовать можно, как самому, так и командой. Есть так называемый «скоростной тур» — ответ в первые 24 часа соревнования.

Задание будет выложено в Пятницу 26 июня в 22:00:16 MSD (время Московское летнее, GMT+4) на страницу конкурса icfpcontest.org (счетчик до начала icfpcontest.org/countdown.php)

Небольшой обзор заданий за прошлые годы. Многие из них стоят того, чтобы скачать условие и покопаться самому (поверьте мне это непередаваемое удовольствие).
Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments24

Делаем микросхемы дома — шаги 0 и 1

Reading time3 min
Views108K
В этой статье я расскажу о начале своей работы над совершенно безбашенной задачей: конечная цель в том, чтобы получить рабочую микросхему по «толстым» нормам (5-10µm) дома. Это не первое апреля и я не сумасшедший, это просто моё хобби.

Возникла эта идея не сейчас и неспроста. С детства я хотел быть газосварщиком, и… делать микросхемы. И если по первому пункту мне достаточно быстро удалось сделать дома сварочный аппарат (бутан-водород/кислород), то с микросхемами все никак не складывалось. Долгое время все мысли останавливались на том, что я не знал где можно взять собственно полупроводники необходимой чистоты (и мысли останавливались на ковырянии мощных транзисторов), пока на форуме не подсказали что в принципе, можно и купить пластины. Затем я даже наткнулся на человека, который 20 лет работал над похожей задачей, и в итоге сдался. Пожалуй, тут можно было опустить руки и перестать тратить время на глупые мечты. Но, однажды я увидел ролик чудовищно гениальной женщины – Jeri Ellsworth – она смогла сделать отдельные полевые транзисторы на основе заводских пластин – и тогда я решил, что настало время поплотнее заняться этой проблемой.

В этой статьях я расскажу о своём текущем прогрессе, но не ждите быстрого продолжения – весь процесс может легко занять пару лет.
Читать дальше →
Total votes 289: ↑274 and ↓15+259
Comments192

История одной оптимизации

Reading time5 min
Views18K


Аннотация


Статья раскрывает особенности высокоуровневых оптимизаций вычислительных алгоритмов на Java на примере кубического алгоритма перемножения матриц.

Шаг 0. Установи точку отсчета!


Определимся с окружением:
  • Hardware: 1-socket/2-cores Intel Core 2 Duo T7300 2GHz, 2Gb ram;
  • Java: HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing);

Читать дальше →
Total votes 96: ↑87 and ↓9+78
Comments84

Запретный плод GOTO сладок!

Reading time9 min
Views108K
Доброго времени суток!

Какое Ваше отношение к оператору goto в языках С/С++? Скорее всего, когда Вы учились программировать, Вы его использовали. Потом Вы узнали, что это плохо, и Вы о нем позабыли. Хотя иногда при сложной обработке ошибок… нет-нет, там try … throw … catch. Или же для выхода из вложенных циклов … не-ет, там флаги и куча сложностей. Или когда вложенные switch … нет-нет-нет, там те же флаги.
И все-таки, иногда в ночной тиши Вы допускали в свое подсознание грешную мысль – «а почему бы не использовать вот тут goto? И программа вроде как стройней будет, и оптимально выходит. Да-а, было бы хорошо… Но нет – нельзя, забыли!».
А почему так оно?
Под катом – небольшое расследование и мое, основанное на многолетней практике и разных платформах, отношение к этому вопросу
UPD: тут статья рассматривает С и С++, программирование для PC и слегка для микроконтроллеров. Конкретно о микроконтроллерах есть другая статья.
Интересно? - тогда читаем!
Total votes 172: ↑135 and ↓37+98
Comments273

Ветвления. Что с ними можно сделать

Reading time11 min
Views8.2K
Мой прошлый пост вызвал огромный резонанс. Комментариев было не много, но я получил множество писем, а некоторые читатели выступили даже с открытыми заявлениями (там, правда, преобладают наезды на меня лично и на хабр в целом, но есть и мысли по существу вопроса). Поэтому я решил продолжить писать в жанре «мои мысли по поводу вопросов известной компании». Этим постом я постараюсь решить две задачи: (i) ответить на вопросы и возражения читателей предыдущего поста и (ii) толкнуть в некотором смысле философскую мысль о безIFовом программировании. Букв получилось довольно много, но те, кому интересно только что-то одно из поста, могут пропустить половину.

И ещё: этот топик (как и прошлый) — не наезд ни на кого. Просто интересно порассуждать об интересных вопросах. Здесь нет подтекста, намёка, вызова. Параноиков и сторонников теорий заговоров попрошу расслабиться.

В этот раз хотел бы взглянуть на вопрос 4.
Читать дальше →
Total votes 60: ↑49 and ↓11+38
Comments35

Поиск и решение проблем масштабируемости на примере многоядерных процессоров Intel Core 2 (часть 1)

Reading time7 min
Views3.1K
Адаптация программного обеспечения для эффективного использования всех доступных процессоров наиболее критична в свете намечающегося многоядерного будущего современной вычислительной техники. Кроме всех прочих препятствий, которые могут быть встречены на этом пути, существуют проблемы, связанные с совместным использованием конечной пропускной способности существующих платформ и процессоров. Правильное использование событий производительности процессора Intel Core2 позволит определить точную причину, останавливающую приложение на пути к полноценному использованию всех доступных в системе ядер.
Читать дальше →
Total votes 61: ↑49 and ↓12+37
Comments16

5 способов, которыми игры пытаются вызвать зависимость

Reading time10 min
Views189K
Итак, в новостях снова пишут, что кто-то еще умер из-за игромании. Да, опять Корея.

Какого ...? послушайте, я не пытаюсь доказать что видео игры — это героин. Я полностью понимаю, что в данном случае у жертвы было много проблем в жизни. Но, половина из вас знает что World of Warcraft затягивает и что доктора считают игровую зависимость серьёзной проблемой. А вопрос вот в чем: может быть какие-то игры намеренно разрабатывались, чтобы заставлять вас играть в них, даже если вы не получаете от этого удовольствия?
Давайте посмотрим как это работает
Total votes 320: ↑295 and ↓25+270
Comments250

Галерея эффектов кэшей процессоров

Reading time10 min
Views25K
Ядро PenrynПочти все разработчики знают, что кэш процессора — это такая маленькая, но быстрая память, в которой хранятся данные из недавно посещённых областей памяти — определение краткое и довольно точное. Тем не менее, знание «скучных» подробностей относительно механизмов работы кэша необходимо для понимания факторов влияющих на производительность кода.

В этой статье мы рассмотрим ряд примеров иллюстрирующих различные особенности работы кэшей и их влияние на производительность. Примеры будут на C#, выбор языка и платформы не так сильно влияет на оценку производительности и конечные выводы. Естественно, в разумных пределах, если вы выберите язык, в котором чтение значения из массива равносильно обращению к хеш-таблице, никаких результатов пригодных к интерпретации вы не получите. Курсивом идут примечания переводчика.
Читать дальше
Total votes 181: ↑177 and ↓4+173
Comments47

Information

Rating
Does not participate
Location
Королев, Москва и Московская обл., Россия
Registered
Activity