"Микролаб КР580ИК80" это узкоспециализированная учебная ЭВМ, предназначенная для изучения работы микропроцессора КР580ВМ80А (советский аналог Intel 8080), контроллера ввода-вывода КР580ВВ55А, общих принципов программирования на машинном коде, а также приёмов поиска неисправностей и наладки микропроцессорных систем. Прототипом устройства послужила, по-видимому, американская микролаборатория "Hewlett-Packard 5036A", базировавшаяся на процессоре Intel 8085.
Микролаборатория обладала 1 Килобайтом ОЗУ. Дополнительно на панель устанавливалась третья микросхема ПЗУ, куда зашивалась демонстрационная программа - 8-битная мелодия. Программным обеспечением аппарата служил системный монитор из ПЗУ. Ввод программ осуществалялся на машинном коде в шестнадцатиричном виде, посредством цифровой клавиатуры или через магнитофон. Для вывода результатов программ и общения с системным монитором предназначался 8-разрядный 8-сегментный светодиодный дисплей. 8 светодиодов и динамик также могли служить для вывода информации. Была предусмотрена возможность как непрерывной работы программы, так и выполнение её в пошаговом режиме. Системный монитор микролаборатории позволял отслеживать состояния флагов процессора, значения, записанные в регистрах и каждой ячейке ОЗУ и ПЗУ. 3 переключателя под дисплеем служили имитацией внешних датчиков. Микролаборатория монтировалась в пластиковом дипломате. Существовали модификации 904 и 907, незначительно отличавшиеся друг от друга схемотехнически.
Итак, есть програмка. Хочется сделать ее более красивой.
Код как в изначальном примере, я тут только добавил реакцию на попытку открытия двери.
Файл Program.cs
Поехали.
Выделяем интерфейс для внешнего ввода IInput. Реализация внешнего ввода через консоль.
Файл ConsoleInput.cs
2. Выделяем интерфейс для внешнего вывода IOutput. Реализация вывода также через консоль.
Файл ConsoleOutput.cs
3. Выделяем класс "Door". Класс зависит от внешних ввода и вывода. Т.е. от интерфейсов IInput, IOutput. Внедрение зависимостей через конструктор.
По сравнению с оригиналом, логика здесь чуть-чуть была причесана.
Файл Door.cs
4. Делаем Program красивым. Program работает с IOutput и Door. Зависимости также задаются через конструктор.
В методе Main инициализируем все сущности, добавляем вызов метода Run у Program.
Измененный файл Program.cs
Итог.
"Ну и нафига все это надо?" - спросит читатель. - "Столько писанины лишней!".
Не спорю. Но дело в том что теперь:
1. Способы ввода и вывода можно менять, просто добавляя новые реализации (классы) для интерфейсов IInput и IOutput. Например, можно сделать чтение и вывод через файлы, просто создав соответствующие новые классы для этих интерфейсов и проинициализировав их в Program.cs
2. Функционал из IInput и IOutput можно использовать в других частях программы, если такие будут.
3. Наконец, можно покрыть основной код unit тестами.
Бонус.
Пример unit тестов (xUnit).
Используется Moq для подмены реализаций IInput и IOutput.
Классы Program и Door используются "настоящие" и именно их содержимое будет протестировано.
Начало файла ProgramTests.cs
Здесь изображен конструктор для тестов. Он автоматически создает Program с зависимостями перед запуском каждого теста.
Проверяем, что у нас будет на выходе IOutput, если на IInput будут определенные воздействия.
1. Тесты. Если возраст менее или равен 18.
Файл ProgramTests.cs. Часть 2
2. Тесты. Если возраст более 18.
Файл ProgramTests.cs. Часть 3
Прохождение тестов:
В принципе, здесь можно еще тестов понаписать. Например, непокрытым остался private метод EnterAge, у класса Door (обработка ошибок парсинга ввода).
И апрель быстро пролетел, так что время выжимки самого вкусного за сей промежуток времени.
За время с прошлого дайджеста мы получили на время топ автора. С одной стороны жаль, что сняли, с другой, что вообще дали. Отсюда вывод, что движемся в правильном направлении в развитии нашего маленького продакшена.
Пока читал старый отчет вспомнил об мемо недели. Надо будет провести.
Друзья, я просто обязан поделиться потрясающей новостью! OpenAI анонсировала GPT-4o — новую флагманскую модель, способную обрабатывать звук, изображения и текст в реальном времени. Это "Омни модель", обучающаяся одновременно на текстовых данных, изображениях и видео. Она реагирует на аудиовходы всего за 232 миллисекунды, что сопоставимо с откликом живого человека. GPT-4o также прекрасно распознаёт рукописный текст. Мы провели эксперимент с сочинением школьника, и ChatGPT справился отлично!
Обновлённое десктопное приложение теперь видит ваш экран, редактирует код в реальном времени и даёт рекомендации во время работы, что делает его незаменимым помощником для разработчиков. Модель также может предоставить исчерпывающие ответы на вопросы, если навести камеру смартфона на любой объект. Новый аудио-чат распознаёт эмоции, умеет шутить, петь и даже позволяет перебивать его.
Установка ChatGPT на телефон
После вчерашнего обновления GPT-4o многие спрашивают, как установить ChatGPT на телефон. Вот основные шаги:
Если меня спрашивают, когда на ПК появилась полноценная реалистичная музыка, я уверенно говорю: "спектрумы, середина восьмидесятых". Мне в ответ начинают затирать про IBM-PC, параллельные порты, кубик плейер и скримтрекер. Не верьте этим людям. Они выросли в период аудиокассет и не знали иных носителей цифровой информации. Сегодня я вам расскажу, с чего начиналась ПК-музыка и почему демосценщики готовы сжечь ковоксеров живьём, а затем, изнасиловать их пепел и снова сжечь. Итак, восьмидесятые. 84-85 год. По миру победоносно шествует господин Синклер со своим домашним персональным компьютером за 102 рубля. Напомню, МК-85 тогда стоил 140. Магнитофоны. А их тогда нет. Дефицит. Да, бобинники на 19 есть у меломанов и в студиях. Но дома у большинства обычные вертушки и куча затёртых пластинок с кукарачей и хафананой, купленных в магазине мелодия.
Да-да ребятки, ДиДжей Бобо с его БэЛэЭм-апскёртами и чивавой, как и Бой Джордж с песней о НКР появились гораздо позже.
Итак ... Восьмидесятые. В СССР начало развала. Экономика, подорванная антиалкогольной реформой и афганской войной начинает умирать. Везде плакаты про нетрудовые доходы, пищевые отходы и выключайте свет. Но компьютер спектрум - дёшево. "ааааа привези мне из англии", "привези мне из японии", "говорят в таллине в магазинах продаются"... Тысячи оригиналов, миллионы копий, десятки миллионов копий с копий.
Персональный компьютер Бейсик, Владивосток, завод Радиоприбор, 80-е - 90-е. Цена 240 руб.
Но магнитофоны ... Их нет. Дефицит головок. Никто не хочет железо в головках (режет высокие). Все хотят пермаллой. СССР заказывает головки в японии. Япония не справляется. Цены на магнитофоны уже серьёзны.
Магнитофон ВЭФ-287. Госцена - 380 руб. У спекулянтов - 500. Напомню: з/п инженера - 120.
Но у людей есть вертушки. Не у всех, конечно корветы, но массово - есть.
Проигрыватель виниловых (и шеллачных) пластинок. Корвет-001. Топ Советской аудиотехники.
Такая проблема (магнитофоны вместо винила) реально имела место не только у нас. Весь мир в неё упал. Ну, не весь, конечно. Япония, Англия и ФРГ такой проблемы не имели, поскольку приорат местного бизнеса - превыше всего. А вот остальной мир: США, латиносы, канада и прочие очень хотели программ для новых компьютеров, которые уже купили. Как оказалось, в тетрис не слишком интересно играть, если перед этим нужно два часа без ошибок набирать код на бейсике. Конечно-ж решение проблемы было найдено. И нашли его производители грампластинок. Ведь программа это звук, а звук-это программа. Когда мама инструктирует тебя на тему покупки картошки в магазине, разве не программа это?
Такой вот он - компьютерный звук.
Практически все тогдашние* компьютеры имели встроенный аудиоканал и программное обеспечение для приёма кода. Да медленно. Да, не без помех. Но он был. И да - успешно работал. Погуглите прерывание 15H на IBM-PC.
Операционная система Free DOS для IBM-PC.
Винил с кодом и музыкой пополам? Было и такое. Загружаешь программу с пластинки в компьютер и вуаля, у тебя на телеке мегаспецэффекты под полноценную музыку с винила. Наоборот? Да легко. Грузишь с пластинки игрушку, а пластинка тебе саундтрек под неё рисует. Да, была рассинхронизация. Да иногда ты проходил уровень, раньше, чем заканчивалась композиция. Но боже мой, как-же это было круто.
Виниловые пластинки с компьютерными программами, играми и музыкой для ZX Spectrum.
Конечно, аудиокассеты быстро (лет за пять, спасибо японцам они умеют в быстро и много) вытеснили винил, ведь пластинку не положишь в нагрудный карман, не спрячешь на ней секстетрис от родителей. Но это был отдельный, особый период:
Ты. Компьютер. Вертушка. Полноценный тяжёлый (очень тяжёлый) саундтрек и маленький киберноид, который плюётся огненным ядом в непослушных растений.
И вы мне тут будете про ковоксы и саундтреки из борды рассказывать? Нет уж. Это я вам расскажу. А заодно фильму посоветую. Нравится она мне. Cмотрите, не обляпайтесь:
Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.