Практикум на ЭВМ

171 (2017-2018) группа

Максим Журавлев

Студент TODO №1 №2 №3 №4 №5 Тест 1
48 VM GCD 1 SourceMap 1 UML 1 2 Зачет
Богданов Егор 8
Дикусар Николай 9
Евгений Богданов 1
Завадский Илья 6
Келим Илья 2
Кутленков Дмитрий 1
Мясников Владислав 3
Орачев Егор 1
Осипова Александра 4
Рыбина Екатерина 3
Сергеев Егор 6
Фунт Дина 3
Ярош Дмитрий 1

Задачи

Тест 1. 17.05.18
Расшифровка доклада про особенности взаимодействия JVM и Linux-серверов
  1. Зачет
Домашняя работа 5. 07.05.18
Service loader example
Creating extensible applications
О внедрении зависимостей
Загрузка классов в Java
Система плагинов на универсальном ClassLoader (а не на ServiceLoader)
Мартин Фаулер о внедрении зависимостей - первоисточник идеи
Еще одна статья о внедрении зависимостей и IoC (без примера использования контейнера). Самый простой и понятный вариант на мой взгляд
О DI и IoC c понятным примером на Spring
Официальная документация Spring
Spring-потрошитель
  1. Реализовать поддержку плагинов для вашей игры (новые виды AI) или произвольного приложения (новые форматы, новые операции), написанного специально для этой задачи.

  2. Инстанциировать классы вашей игры, используя произвольный IoC контайнер

Домашняя работа 4. 18.04.18
Шаблоны проектирования краткая статья (примеры на PHP)
Каталог паттернов (примеры на CPP)
Шаблоны ООП (шпаргалка с UML-диаграммами)
О generics в Java
  1. Реализовать любую настольную игру (морской бой, крестики-нолики, карточные игры). Среди параметров запуска игры должен быть массив игроков соответствующего размера. Игрок может быть человеком или AI-игроком с несколькими видами поведения (например "умный", "жадный", случайный). Отображение поля произвольное: консоль или UI (для желающих).

  2. UML

    Нарисовать диаграмму классов игры

Домашняя работа 3. 20.03.18
О модификации IntegerCache в Java9
Известная презентация с критикой ООП (если требуется максимальная производительность на одном ядре)
Разбор головоломок на знание тонкостей Java с недавней конференции
Критика бездумного использования ООП. В примере автор заменяет излишнюю для простой задачи иерархию классов несколькими короткими функциями
Классическая статья о переусложнении кода. Джоэль Спольски о "Архитектурных Астронавтах"
О забивании гвоздей микроскопом. Комбинация простых (существующих) утилит оказалась быстрее универсального кластера в 235 раз
Перевод свежей статьи автора презентации Pitfalls Of Object Oriented Programming (вторая ссылка)
Презентация Шипилёва о String
Презентация Шипилёва об оптимизации String в Java9
Андрей Паньгин — Мифы и факты о медленной Java
"Как два программиста хлеб пекли" - о проектировании (или переусложнении) для лучшей расширяемости. Породила большую дискуссию.
Отклик 1
Отклик 2
SourceMap demo
Об алгоритмах сжатия SourceMap (VLQ, Base64)
Рассказ разработчиков FireFox о переписывании обработки SourceMap с JS на Rust
Ответ специалиста по JS. Тот же код оптимизирован без переписывания на Rust
  1. SourceMap

    Преобразовать исходный код на каком-либо ЯП в JS, сгенерировав source map.
    Реализовать программу для декодирования source map.

Домашняя работа 2. 12.03.18
О сроках поддержки последних версий Java
Список языков, выполняемых на JVM
Сайт эксперта по производительности Java - Алексея Шипилева
Как собрать и запустить Java программу без IDE
Maven: The Complete Reference
  1. Реализовать на выбор одну из иерархий объектов:
    а) Создать абстрактный класс "автомобиль" с некоторым набором характеристик на ваше усмотрение (максимальная скорость, вместимость, страна-производитель и т.д.), а также методом или свойством позволяющим получить полную, агрегированную информацию о модели. Реализовать описание нескольких конкретных моделей автомобилей.
    б) Создать абстрактный класс "Мороженое" с некоторым набором набором характеристик на ваше усмотрение (тип (сливочное, фруктовый лёд), вкус, количество шариков (если применимо) и т.д.), а также методом или свойством позволяющим получить рецепт его приготовления на основе этих характеристик. Реализовать описание нескольких конкретных тортов.
    Вынести базовый класс и реализации в отдельные библиотеки. В основной программе выводить в консоль требуемую информацию через методы или свойства абстрактного класса.

Домашняя работа 1. 12.03.18
  1. VM

    Реализовать интерпретатор следующего миниатюрного ассемблера
    http://edu.vpolozov.name/arhiv/2010-i/vitasm

  2. GCD

    Написать на данном ассемблере вычисление наибольшего общего делителя двух чисел (задаются константами в коде).

© 2014-2018 HwProj