В прошлом году я написал программу, вычисляющую 255 цифр числа π на самом первом микропроцессоре от Intel - 4004. В той статье я упоминал рекорд ENIAC'a - 2035 цифр [^1], но побить его не смог. Настало время закрыть гештальт. В этот раз возьмём одного из преемников от Intel - 4040.
User
Вычисляем π на первом процессоре от Intel — 4004
Как-то мне пришла в голову мысль о том, насколько же быстрее современные процессоры по сравнению с ранними экземплярами. Да, можно размышлять об этом эмпирически - зная тактовую частоту и особенности микроархитектуры (как устроен конвейер, сколько есть ALU, и т.д.), можно прикинуть производительность Intel 4004. Пусть и не в FLOPS'ах, ибо нативная поддержка чисел с плавающей запятой появилась позже. Но это будет весьма грубая прикидка, так как у этого процессора есть несколько интересных черт: разрядность только 4 бита (а не 64, как у большинства современных машин), очень скудный набор инструкций (нет даже AND'a и XOR'a!) и ограничения переферии (в частности памяти не так уж и много).
Поэтому я решил исследовать вопрос на практике. В качестве бенчмарка выбор пал на вычисления числа π. В конце-то концов, даже ENIAC в дремучем 1949 году справился с этой задачей! [2]
Импульсный блок питания для телетайпа из 1940х (со светящимися ртутными тиратронами!)
Тиратронные трубки в блоке питания REC-30 выдают такое голубое свечение. Оранжевый свет исходит от неоновой лампы, используемой как источник опорного напряжения.
REC-30 интересный экземпляр в первую очередь из-за того, что это очень ранний импульсный блок питания. (Я знаю, что весьма спорно называть этот девайс импульсным блоком питания, но, тем не менее, я не вижу хорошей причины не делать этого). Несмотря на то, что в наши дни импульсные блоки питания используются повсеместно (из-за дешевизны высоковольтных транзисторов), они были диковинкой в 1940х. REC-30 огромен — его вес превышает 45 килограмм! Если сравнить его с 300 граммами блока питания для MacBook'а, то виден впечатляющий прогресс в развитии блоков питания с 1940х годов. В данной записи я загляну внутрь блока питания, опишу принципы его работы и сравню его с БП для MacBook'a.
Donkey Kong и Я
Каждый, кто работал с Asm/Editor, скорее всего, несёт такие же глубокие эмоциональные шрамы на себе как и я! Редактор был невероятно медленным, отладчик работал на ладан, а мне приходилось удалять комментарии и использовать оверлеи в пару килобайт (RAM'ы было не много и все переменные не вмещались, поэтому использовалась техника оверлеев — разные группы переменных размещались по одинаковым адресам. Понятно, что одновременно переменные с разных секций использовать было нельзя, причём не только переменные с одним адресом, но и вообще переменные из разных оверлейных секций.) для того чтобы уместить весь код. Создание игры, которую я назвал Myriapede, заняло три месяца. У меня до сих пор хранятся эскизы и наброски: миллиметровка, исчерченная разноцветными ручками и с шестнадцатеричными значениями цветов, тщательно выписанных на поля. Цвета я подбирал наобум: у меня был только дешевый черно-белый экран, и я заходил к другу на пару часов в гости, чтобы проверить и подстроить значения цветов на его телевизоре.
Приводим в чувство каноничный DEC VT100
DEC VT100
VT100, в каком-то смысле, является индустриальным стандартом среди терминалов. Набор команд, поддерживаемых этим терминалом, заимствовался кем только ни попадя. В линейке терминалов от DEC, VT100 первым был выпущен с отдельностоящей клавиатурой. Сердцем аппарата выступает микропроцессор Intel 8080. Похожий корпус был и у терминала VT103, в который были добавлены два ленточных накопителя TU58 и небольшая объединительная плата с QBUS шиной. Кроме того, еще выпускался VT125, который, по сути, отличается от VT100 только наличием дополнительной платы для поддержки инструкций ReGIS, реализующих простую компьютерную графику.
Восстанавливаем очередной PDP-11/04
PDP-11/04, присланный Гуннаром
Данный аппарат мы получили от Гуннара Барбро, и с ним шла куча разных вкусностей для PDP-11. Но состояние самого компьютера было далеко от совершенства. Не хватало плат процессора и памяти, переключатель питания был заменен новоделом, к тому же всё было ужасно пыльным. К объединительной плате (backplane) были подключены плата консоли программирования KY11-LB, XY11 (модуль для управления графопостроителем, к примеру IBM 1627, который поставлялся с машинами DEC, и являлся каноничным CalComp 565), KW11-P (модуль программируемого RTC, да-да под RTC шла целая плата!), основная плата RK11-D с набором модулей (контроллер для накопителей на магнитных дисках, это был набор карт (3 или 4 штуки), объединенный общей платой), и DR11-B (контроллер DMA, который, опять же, состоял из нескольких плат: M7194, M971, M5916, M7820, ...), также со всеми модулями.
Чистка
Мы разобрали компьютер на части и аккуратно промыли их с мылом, а затем компрессором продули насухо. После просушки собрали их в единое целое. Во время этих процедур то тут, то там обнаруживались пятна ржавчины.
Майним Bitcoin с помощью бумаги и ручки
Один криптографический раунд
Реверс-инжиниринг TL431, крайне распространенной микросхемы, о которой вы и не слышали
Фото кристалла интересной, но малоизвестной, микросхемы TL431, используемой в блоках питания, даёт возможность разобраться в том, как аналоговые схемы реализуются в кремнии. Несмотря на то, что схема на фото выглядит как какой-то лабиринт, сама микросхема относительно проста, и может быть исследована без большого труда. В своей статье я попытаюсь объяснить каким образом транзисторы, резисторы и другие радиодетали запакованы в кремний для выполнения своих функций.
Фото кристалла TL431. Оригинал Zeptobars.
Чем была вызвана задержка последнего полета Индевора?
Восстановление HP 9830B
Калькулятор HP 9830B с поддержкой BASIC'a
В 1976 был представлен HP 9830B, обновленная версия (больше памяти) HP9830A, выпущенного в 1972. Цена самого калькулятора была $8350. Дополнительный модуль принтера, располагаемый сверху, продавался еще за $3350.
Для всего модельного ряда HP98x0 использовался один и тот же тип 16битного процессора, реализованного на дискретной TTL-логике, которая размещалась большей частью на четырех платах. Для упрощения схемы, ALU был сделан последовательным.
Статья описывает историю превращения устройства из пыльного ящика со сломанными кнопками в полностью рабочий калькулятор.
Восстановление PDP 11/04. Терминал LA30 Decwriter
LA30 Decwriter
Теперь я приступил к заключительной части своего квеста — раздобыть хороший терминал, который был бы таким же винтажным, как и основная система. Мне повезло, что у меня в хранении есть LA30, который я собираюсь теперь начать восстанавливать. Наш экземпляр был изготовлен в начале 1973. Хотя, печатающие головки, видимо, были заменены в 1979.
LA30, по-видимому, был одним из первых матричных принтеров, что делает его интересным, сам по себе, даже в отрыве от PDP-11.
Восстановление PDP 11/04. Ленточная станция TU60
Стриммер TU60 и контроллер TA11
В 70х DEC создали простую замену для перфолент, которая базировалась на разновидности простых аудио-кассет. TU60 вмещает два блока стриммеров. 50метровая лента могла хранить до 100Кб:
Восстановление PDP 11/04
Этот PDP 11/04 изначально принадлежал Ericsson. Мы получили его в конце восьмидесятых от EDKX — компьютерного клуба Ericsson. Компьютер был передан по частям, но всё было на месте за исключением пары винтиков. Вместе с самим PDP-11 шла ленточная станция TU60.
Панель операторской консоли
Смелый план, который мог бы спасти шаттл «Колумбия». Часть 3
Напёрстки
Во время спасательной операции несколько действий было бы произведено впервые.
— Из Приложения D.13 отчета Комиссии по расследованию катастрофы шаттла «Колумбия»
Теперь (после стыковки шаттлов — прим. переводчика) сложность миссии достигала максимальной отметки. В зависимости от усталости и физического состояния, CM1 и CM2 могли помочь пилоту и командиру Атлантиса в задачах, связанных с удержанием корабля на нужной орбите (исходя из того что CM1 и CM2 были бы командир Рик Хасбэнд и пилот Уильям МакКул с Колумбии). Однако два дополнительных скафандра продолжали бы активно использовать.
Два члена экипажа Атлантиса оставались снаружи, и в то время как CM1 и CM2 снимали бы скафандры, двое с Атлантиса использовали бы свои SAFER ранцы для проверки обшивки и передней кромки крыльев (Колумбия не имела таких SAFER ранцев, поэтому внебортовой осмотр силами экипажа требовал бы куда более сложных техник для перемещения по орбитеру чтобы взглянуть на крыло).
Снятые с CM1 и CM2 скафандры готовили к повторному использованию. EV1 и EV2 возвращали их на Колумбию в шлюзовую камеру, в которой затем выравнивалось давление и она открывалась. Еще двое членов экипажа Колумбии к этому моменту уже должны были надеть скафандры, которые им доставили в первый рейс. Назовём их CM3 и CM4. Они повторяют действия CM1 и CM2 и переходят на Атлантис.
Другой вид на перемещение астронавтов между Колумбией и Атлантисом. Source: NASA / CAIB Report
Космос: чего ждать в 2013 году. Частники
Небольшая заметка о том, чего ждать и за какими проектами космической отрасли стоит последить в этом году. Так как эта сфера сейчас довольно активно развивается, уместить все предстоящие события в одной статье довольно трудно. Поэтому я решил разбить её на несколько частей. Первая часть рассказывает о частных (негосударственных) компаниях, которые занимаются космосом.
Особенности написания и возможные фичи LR-генераторов
Введение
Добрый день.
В заключительной части про написание собственного генератора LALR-парсеров я бы хотел описать возможные особенности и фичи. Кроме того я опишу чего мне не хватало в существующих решениях и ради чего я начал писать свой велосипед.
Дабы задать контекст, сообщу, что грамматика для анализа — это ECMAScript, так же известный как JavaScript. Конкретная спецификация — ECMA-262, редакция 5.1 от июня 2011 года.
Написание компилятора LALR(1)-парсеров. Описание LR-генераторов
Предисловие
Добрый день.
Это вторая часть статьи про написание своего генератора LALR-анализаторов. В этой части я расскажу про эволюции от примитивных восходящих синтаксических анализаторов до наиболее актуальных, хотя и не шибко новых, LALR-парсеров. Тем, кто не читал первую статью (ссылки — снизу), советую прочесть хотя бы первую половину последнего раздела. О том небольшом фрагменте кода я буду упоминать несколько раз.
В комментариях к прошлой статье несколько человек интересовались моими мотивами в написании своего компилятора компиляторов. К сожалению, они в этой статье не найдут ответов на этот вопрос. Не скрою, изначально я планировал написать статью без особой теории, но с оправданием задач и целей, ради которых я начал писать генератор, да и хотел поделиться нюансами и особенностями реализации. То есть по объему это довольно прилично: несколько экранов. Но затем я решил всё же описать базовую теорию популистским языком, поэтому статья разрослась до трех частей. Таким образом, дабы не ломать логику изложения, я сначала расскажу про LR/SLR/LALR-анализаторы, а завтра опубликую заключительную, и, думаю, самую интересную часть.
Написание компилятора LALR(1)-парсеров. Базовая теория
Введение, или зачем нужны синтаксические анализаторы
Добрый день.
Не так давно появилась у меня задача синтаксического анализа одной грамматики. Существующие решения мне увы не подходили, поэтому встала проблема написания собственного генератора парсеров. Несмотря на то, что тема довольно популярная и существует не так уж и мало статей и книг по данному сабжу, я всё-таки решил еще раз описать данный процесс, причём начать с самых базовых понятий.
Эта часть посвящена базису, общей теории computer science. Возможно, что это даже преподаётся в школах/вузах России. Самая мякота пойдет со второй части.
Итак, зачем же кому-то может понадобиться писать парсер и что вообще это такое? Парсер — это код, который наделяет входящий набор символов семантическим смыслом. То есть, происходит анализ этих символов, и на основе этого анализа программа понимает как интерпретировать эти буквы и цифры. Простой пример — «1+2», после или во время процесса парсинга знак "+" это не просто символ плюса, но обозначение бинарноого оператора сложения, а в "+3" это унарный оператор знака числа. Большинству людей это очевидно, машине — нет.
Парсеры используются всюду — в Word'e для анализа приложений, словоформ, формул, etc; практически на любом сайте при валидации входных данных: email'а, телефонного номера, номера кредитки; конфигурационные файлы; сериализованные данные (например, в xml); во многих играх — скриптовые ролики, скрипты ИИ, консоль. В общем, это неотъемлемая часть computer science.
Тонкости при работе с иностранным заказчиком
Это скорее даже не статья, а заметка/памятка, но возможно кому-нибудь будет хоть немного полезна.
Регистрация счета
Предположим что вы закончили регистрацию ИП/ООО и открыли рублёвый расчетный счет.
Для того чтобы работать с валютой нужно открыть еще один расчетный счет — валютный. Это просто.
При открытии валютного счета вам создадут дополнительно технический транзитный счет. Его реквизиты и нужно сообщать заказчику.
Здесь мы встречаем потенциальный косяк номер раз: как и в случае с рублевым счетом нужно уведомить налоговую в недельный срок (штраф — 5000 рублей [1]). Затем не забыть уведомить и своё отделение ПФР в тот же срок, иначе опять же штраф, но уже меньше — 2000. Если вы зарегистрированы в ФСС, то нужно не забыть так же и их, всё аналогично случаю с ПФР. [2]
ООО нужно уведомить ПФР и ФСС только если есть работники. ИП — обязательно ПФР, но если есть или были работники, то и ФСС.
Некоторые госслужбы «не шарят» и пытаются оштрафовать если не уведомили о транзитном счете. Это противозаконно и легко решает даже в досудебном порядке, не говоря уже о суде. Заявлять нужно только об обычном счете, о транзитном — не нужно.
В принципе здесь всё кристально ясно, единственно вызывает легкое недоумение зачем носить эти бумажки если банк тоже обязан выслать информацию об открытие счетов.
Пара предложений
Согласно ответу на вопрос, представители ТМ читают этот блог и могут принять некоторые улучшения хабра.
Поэтому предагаю несколько пунктов для модификации:
- Связь с автором из песочницы. В песочнице опубликовали топик, который мне понравился, однако хотелось бы побеседовать с автором, чтобы узнать для чего ему инвайт. Может это виртуал, или инвайт на продажу. Ну и соответственно возможность анрегнуть приглашенного пользователя в течении месяца с момента его регистрации.
- Модификация панели html-тегов. Почему не добавить все теги которые есть, при написании комментария? Ну или хотя бы добавить очень полезные — цитирование и тег source.
- Интеграция с habrastorage. Раз уж habrastorage приветствует меня как пользователя хабра, почему бы ему не хранить список моих файлов?
В общем-то вот такие предложения.
Не думаю что реализовать их сложно.
Information
- Rating
- Does not participate
- Location
- Красноярск, Красноярский край, Россия
- Registered
- Activity