Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Структуры данных - лекция: введение

Anton
January 11, 2025

Структуры данных - лекция: введение

Лекция курса "Структуры данных"
Введение: структурирование данных для автоматической обработки

- Задача разработчика: спроецировать объекты из реального мира в виртуальный мир компьютера; любой объект, который в том или ином виде представлен внутри компьютера, представлен там в виде чисел
- Программное обеспечение усложняется, простых математических формул уже не достаточно
- Доцифровая эпоха: перепись населения в США 1890 года, появление, становление и развитие компании Internation Business Machines (IBM)
- Герман Холлерит, перфокартная табуляционная машина Холлерита
- Конкурс на выбор системы автоматизации переписи 1890
- Перепись 1890-го года: технический и финансовый триумф машин Холлерита и самого Холлерита
- Устройство перфокарты: представляем информацию из реального мира в таком специальном виде, в котором с ней сможет работать механизм
- Представление текста в памяти компьютера: кодировка ASCII, кодировка Юникод, проблема национальных языков
- Войны стандартов
- Представление изображений в памяти компьютера
- История первой компьютерной картинки: векторное изображение на экране радара SAGE (1956-1959)
- Растровое изображение, отсканированное в компьютер (1957)
- Представление растровых изображений в памяти компьютера: массив точек, кодирование цвета, сжатое растровое изображение
- Представление видео в памяти компьютера
- Векторное изображение: храним не пиксели, а объекты
- Самостоятельно: структурированный текст (xml, json, набор свойств - файл properties)

11.02.2022
https://vk.com/video53223390_456239639
https://www.youtube.com/watch?v=XkthtqYg-Jc

Anton

January 11, 2025
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. • Вы уже знакомы с инструментами разработки программного обеспечения •

    Владеете инструментами составления программных алгоритмов: арифметические операции, переменные, условные блоки, циклы, подпрограммы • Можете написать программу, которая решает какую-то задачу: например, вычисляет математическую функцию • Где-то есть пробелы, что-то не до конца понятно, но, в целом, первые шаги в разработку ПО вы уже сделали
  2. И вот пришло время двигаться дальше • Научиться применять готовые

    инструменты и ваши умения в области разработки программного обеспечения к решению прикладных задач • Создавать полезное программное обеспечение, которое будет выполнять за человека рутинную работу • Экономить его время, освобождать его для чего-то более интересного
  3. • Такое ПО в составе программируемого производственного оборудования может экономить

    физический труд: управлять станками или роботами, на которых рабочие производят материальные продукты • Или сокращать объем необходимой умственной деятельности: например, программное обеспечение для ведения учета произведенных продуктов, управления процессом производства и т. п. • Без программного обеспечения такой труд тоже будет занимать довольно много времени
  4. • Так или иначе, обычно речь идет о том, чтобы

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

    это абстрактный мир чисел • Компьютеры (вычислители) оперируют числами • Значит, любой объект, который в том или ином виде представлен внутри компьютера, представлен там в виде чисел
  6. • На ранних этапах развития вычислительной техники было вполне достаточно

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

    время называют временем тотальной цифровизации (слово «цифра» не просто так звучит) • Практически любые явления из окружающего нас мира, повседневная деятельность человека в том или ином виде переносятся внутрь компьютеров, опираются на автоматические вычисления
  8. • Вы, как разработчики ПО, которое будет решать прикладные задачи,

    должны в первую очередь научиться проецировать объекты из реального мира в виртуальный мир компьютера • Во-первых, просто представлять, как это делать, настроить ум на определенный специфический лад, • Во-вторых, выбирать для этого наиболее подходящие модели и структуры, в зависимости от условий и требований задачи
  9. • Вот в этом месте мы начнем постепенно переходить от

    общих слов • (все знают, что внутри компьютера «нули и единицы» — это банальность) • к конкретным ситуациям, техникам, технологиям, • в которых вы должны разбираться и владеть ими, уже как специалисты
  10. Во-первых, нужно быть готовым морально • когда мы с вами

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

    или иных технических решений есть причины • Но чтобы их понимать, нужно быть в курсе, как устроен вычислитель • В первую очередь нас будет интересовать особенности устройства памяти — структура памяти • Уделим этим вопросам некоторое время
  12. Во-вторых, • люди разрабатывают программное обеспечение не первый год и

    не первое десятилетие • За это время успело появиться некоторое количество типовых решений, которые наилучшим образом решают те или иные задачи • Задачи в процессе разработки ПО тоже в том или ином виде повторяются
  13. • Мы с вами будем рассматривать некоторое количество устоявшихся типовых

    решений, которые вы в дальнейшем сможете использовать в ваших проектах в качестве строительных блоков • В рамках нашего курса это будут некоторые алгоритмы и некоторые структуры данных.
  14. • Ну и сейчас, чтобы двинуться еще дальше в практическую

    плоскость, и для хорошего настроя, рассмотрим несколько таких примеров • Каким образом объекты из реальной жизни попадают в виртуальный абстрактный мир автоматического вычислителя
  15. • Мир вокруг нас: всё в цифре • программисты (вы)

    — жрецы этих волшебных шайтан-машин, умеют им отдавать приказы • Объекты реального мира должны быть представлены в виде цифр • Логика компьютера — не бытовая логика человека • Всё состоит из нулей и единиц
  16. Первая перепись в США — 1790 • чуть меньше 4

    млн. человек, • опрашивали только глав семей, • не слишком много вопросов в анкете
  17. Перепись 1850-го года • Количество увеличилось больше, чем в 5

    раз — 23 млн. человек • опрашивался каждый гражданин, • количество вопросов в анкете увеличилось
  18. • Имя • Адрес • Возраст • Пол • Цвет

    кожи (белый, черный или мулат) • Являлся ли опрашиваемый глухим, немым, слепым, сумасшедшим или умалишенным • Стоимость недвижимости, находящейся в собственности (требовалось от всех свободных граждан) • Профессия или специальность (для мужчин старше 15 лет) • Место (штат, территория или округ) рождения • Проходил ли опрашиваемый обряд бракосочетания в этом году • Посещал ли опрашиваемый школу в этом году • Умеет ли опрашиваемый читать и писать (для лиц старше 20 лет) • Является ли опрашиваемый нищим или осужденным ru.wikipedia.org/wiki/Перепись_населения_США_(1850)
  19. Сведение в итоговые таблицы • Процесс сведения данных в итоговые

    таблицы (tabulation — табуляция) проводился по алгоритму «подводящего итога» («tallying»): - для каждого вопроса или группы вопросов из анкеты высчитывалось некоторое общее значение для всех анкет района - далее для еще больших территорий высчитывалось сводное значение на основе значений, подсчитанных для отдельных районов, которые входят в территорию
  20. Сведение в итоговые таблицы • Первое время процесс был полностью

    немеханизированным (выполнялся вручную) • В переписях 1870-го и 1880-го годов применились простейшие средства автоматизации (устройство Ситона): устройство позволяло аккуратно выровнять одну к одной несколько анкет • Обработка результатов переписи 1880-го года заняла 7 лет • С учетом притока мигрантов ожидалось, что к следующей переписи население удвоится, • таким образом обработка результатов следующей переписи не завершится за 10 лет до начала следующей переписи, дальше будет еще хуже • Если только не применить какой-нибудь способ автоматизации процесса подсчета данных и сведения их в итоговые таблицы
  21. Герман Холлерит • 29 февраля 1860 — 17 ноября 1929

    года • Окончил Горную школу при Колумбийском университете в Нью Йорке • Принят на работу в статистическое управление при министерстве внутренних дел США • В министерской столовой молодой 21-летний Холлерит познакомился с девушкой, которая пригласила его к себе в гости отобедать • Девушка оказалась дочерью доктора Биллингса — шефа департамента сводных данных • Во время беседы Доктор Биллингс высказал предположение о том, что можно было бы построить машину, которая бы выполняла утомительную работу клерков его офиса • Отношения с девушкой у Холлерита не продолжились, но идея её отца запала ему в голову
  22. • В 1882 — преподаватель машиностроения в MIT • Там

    же начал разрабатывать «машину для переписи населения» (табуляционную машину) • Вскоре перешел в Вашингтонское бюро патентов • После стал независимым патентным агентом • Продолжил работу над табуляционной машиной и системой торможения для железной дороги • 1884—1889 годы — первые четыре патента на перфоркартные машины • Потом еще 30 патентов
  23. Перфокартная машина • Первые версии табуляционной машины использовали перфорированную бумажную

    ленту (ленту с пробитыми в специальных местах отверстиями) • Однако при работе с большими объемами данных лента часто рвалась и требовала постоянные перемотки • В один момент пришла идея разработать перфокарту вместо ленты
  24. Происхождение идеи перфоркарты • Есть несколько вариантов в разной литературе

    • Идея могла быть предложена сотрудником бюро — неким Биллингсом (J.S. Billlings) • Взята из станка Жаккара или работ Бэббиджа (не известно, был ли знаком с ними, т. е. с работами) • Вдохновился видом ручного компостера у железнодорожного кондуктора • В ранних экспериментах Холлерит, действительно, использовал такой ручной компостер, как у кондуктора • Так или иначе, развитие идеи в работающее оборудование было неоспоримо осуществлено самим Холлеритом
  25. Первые испытания • Несколько испытаний с 1887-го года • Обработка

    статистики смертности в Балтиморе и других городах • Медицинская статистика в Канцелярии (?) Главного медицинского офицера армии США (Office of the Surgeon General of the Army)
  26. Конкурс на выбор системы автоматизации переписи 1890 • Конкурсное испытание:

    1889-й год • Организовал конкурс — директор переписи, Роберт П. Портер (Robert P. Porter) • Всего три участника • Система Холлерита • Две другие подразумевали перенос информации о переписи на бумажную ленту или карты, далее — ручную сортировку и подсчет. Цветовое кодирование для облегчения идентификации карточек.
  27. Конкурс на выбор системы автоматизации переписи 1890 • Пробная перепись:

    район ~ 10 тыс. человек • Система Холлерита обошла конкурентов с несомненным отрывом • Запись анкетных данных проходила заметно быстрее • Процесс табуляции (подсчета) — в 10 раз быстрее • Основная причина: после того, как информация была перенесена на перфорированные карты (вручную), • весь остальной процесс сортировки, подсчета и сведения информации в таблицы был полностью избавлен от ручной работы (т. е. механизирован)
  28. Перепись 1890-го года • Триумф машин Холлерита и самого Холлерита

    — технический и финансовый • Через 6 недель после начала был завершен грубый подсчет населения (~62.5 млн. человек) • Но грубый подсчет не подразумевал использование машин в полной мере — только перенос информации для последующей машинной обработки при помощи специальных клавиатур • После этого был запущен процесс полного подсчета и сведения в таблицы • Для этого было подготовлено почти 63 млн. перфокарт — по одной на каждого гражданина
  29. Перепись 1890-го года • Перепись была завершена чуть больше, чем

    через 2 года • Гораздо быстрее по скорости • Подсчитаны гораздо более сложные коэффициенты • Отчет опубликован на 10220-ти страницах — в два раза больше, чем в прошлый раз
  30. Перепись 1890-го года • Было задействовано примерно 100 машин для

    переписи • И несколько сотен перфораторов (pantograph punch) • Все они обслуживались Холлеритом и его ассистентами • Машины требовали регулярный ремонт и обслуживание • Поломки не всегда носили механический характер: • Время от времени сотрудники желали устроить себе внеплановый перерыв, из специальной чашечки извлекали пипеткой ртуть (которая обеспечивала в процессе работы машины электрический контакт) и перемещали её в плевательницу.
  31. Журнал «Scientific American», 30 августа 1890 archive.org/details/scientific-american-1890-08-30 • На обложке:

    • Стопки исходных анкет (внизу) • Пробойник (перфоратор) (pantograph punch) — перенос анкет на перфокарты (справа наверху) • Табуляционная машина и ящик для ручной сортировки карточек (слева наверху) • Клавиатура для ввода количества членов семьи для грубого подсчета (в середине)
  32. • Железнодорожная заполненная карточка учета времени • И соответствующая ей

    перфокарта • Можно обратить внимание на поле «Amount» со значением 195 • (фото — журнал Machinery, 1913)
  33. Это еще не цифра • Но уже хорошо видно, как

    • представляем информацию из реального мира в таком специальном виде, • в котором с ней сможет работать механизм. • Информация запечетлена на специальном носителе, который во время работы подключается к исполнительному механизму в качестве составной детали
  34. • Для кодирования полей разных типов (перечислимые поля, числа, строки)

    при переносе в машиночитаемый вид используем разный подход. • Ограничения даже в рамках однотипных полей накладывает потребность задачи • Например: мы не можем хранить числа произвольной разрядности — для каждого из полей нужно определить возможный диапазон значений, от этого будет зависеть количество выделенных для него на карте колонок.
  35. Время шло • Компания Холлерита превратилась в IBM, уже без

    Холлерита • Появились электронные цифровые компьютеры • У которых «всё есть число», в т.ч. сама программа (архитектура имени Джона фон Неймана) • Потребности тоже расширялись
  36. 1963: ASCII • ASCII — American Standard Code for Information

    Interchange — • permits machines from different manufacturers to exchange data. • The ASCII code consisted of 128 unique strings of ones and zeros. • Each sequence represented a letter of the English alphabet, an Arabic numeral, an assortment of punctuation marks and symbols, or a function such as a carriage return. • ASCII can only represent up to 256 symbols, • and for this reason many other languages are better supported by Unicode, which has the ability to represent over 100,000 symbols. • www.computerhistory.org/timeline/1963/#169ebbe2ad45559efbc6eb35720b967d • ru.wikipedia.org/wiki/ASCII
  37. Национальные языки • Код ASCII может представить 256 вариантов для

    одного символа (2^8) • Латинский алфавит, цифры, знаки препинания, некоторое количество служебных кодов • Часть кодов можно выделить на национальный алфавит
  38. Национальные языки • Алфавит еще одного языка мог уместиться вместе

    с латиницей, а два (или более) — уже никак • Для файла с национальными символами нужно было указывать кодировку при открытии для просмотра или редактирования • Если кодировка указана неправильно, то латинские символы всегда будут отображены как надо, а на месте нациоанальных символов будут нарисованы «кракозябры» • Для кириллицы кодировки: СP-1251, KOI8-R, ISO,… • Для латиницы стандарт был единый, для других языков уже начинался «зоопарк»
  39. Национальные языки • Таким образом, с однобайтной кодировкой можно было

    создавать документы на 2-х языках: национальный алфавит + латиница • Третий язык, если он не основан полностью на латинице, уже не пойдет.
  40. Национальные языки: Юникод • Невозможность создавать многоязычные документы было не

    удобно в принципе, но с развитием интернета, глобализацией в цифровом пространстве вопрос встал ребром • Онлайн-сервис (например, магазин или социальная сеть), который работает в множестве стран, должен поддерживать интерфейс на множестве языков • Популярность набрал Юникод — универсальная кодировка • (разработана была несколько раньше, но теперь вышла на передний план)
  41. Текст • ASCII: 1 байт/8 бит на символ - разработана

    и стандартизована в США в 1963 году. • UNICODE: 4 байта/32 бит на символ - предложен в 1991 году некоммерческой организацией «Консорциум Юникода» • UTF-8: юникод с переменной длиной символа (<=> ASCII для латиницы)
  42. UTF-8 • Для латиницы: 1 символ — 1 байт, код

    ASCII • Для остальных символов: 1 символ — 1, 2 или более байт, в зависимости о того, в какой части таблицы находится код символа • Для кириллицы: 1 символ — 2 байта
  43. Перенос строки • ru.wikipedia.org/wiki/Перевод_строки • Возврат каретки (англ. carriage return,

    CR) — управляющий символ ASCII (0x0D, '\r'), при выводе которого курсор перемещается к левому краю поля. Этот управляющий символ вводится клавишей «Enter». Будучи записан в файле, в отдельности рассматривается как перевод строки только в системах Macintosh. • Подача на строку или Перевод на строку (от англ. line feed, LF — «подача [бумаги] на строку») — управляющий символ ASCII (0x0A, '\n'), при выводе которого курсор перемещается на следующую строку. В случае принтера это означает сдвиг бумаги вверх, в случае дисплея — сдвиг курсора вниз, если ещё осталось место, и прокрутку текста вверх, если курсор находился на нижней строке. Возвращается ли при этом курсор к левому краю или нет, зависит от реализации.
  44. Перенос строки • LF '\n' (ASCII 0x0A) используется в Multics,

    UNIX, UNIX- подобных операционных системах (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD и др.), BeOS, Amiga UNIX, RISC OS и других; • CR '\r' (ASCII 0x0D) используется в 8-битовых машинах Commodore, машинах TRS-80, Apple II, системах Mac OS до версии 9 и OS-9; • CR+LF (ASCII 0x0D 0x0A) используется в DEC RT-11 и большинстве других ранних не-UNIX- и не-IBM-систем, а также в CP/M, MP/M (англ.), MS-DOS, OS/2, Microsoft Windows, Symbian OS, протоколах Интернет.
  45. Перенос строки юникод • LF (U+000A): англ. line feed —

    подача строки <ПС>; • CR (U+000D): англ. carriage return — возврат каретки <ВК>; • NEL (U+0085): англ. next line — переход на следующую строку; • LS (U+2028): англ. line separator — разделитель строк; • PS (U+2029): англ. paragraph separator — разделитель абзацев. • Последовательность CR+LF (U+000D U+000A) надлежит воспринимать как один перевод строки, а не два.
  46. Плюс и минусы • UTF-8 имеет переменный размер символа, это

    создаёт сложности при программной обработке строк, • по сравнению с ASCII, в которой один символ — всегда один байт (октет) • UTF-16 (и UTF-32) решает вопрос переменной длины (там длина символа, как и в ASCII, фиксированная), но теряет обратную совместимость с текстами на ASCII • Необходимость уместить символы в одну кодировку — объективная потребность, а не блажь • Но вместе с тем, необходимо сохранить обратную совместимость с работающими системами
  47. Плюс и минусы • Вопрос с кодировками не решается легко,

    только через компромисс, чем-то нужно жертвовать • Для всевозможной внутренней программной кухни (например, работа контроллеров) ASCII используется и будет использоваться дальше • Так же она прописана во многих стандартах, которые могут быть связаны с передачей данных
  48. Например • datatracker.ietf.org/doc/html/rfc1738 • Стандарт: Uniform Resource Locators (URL) •

    This document specifies a Uniform Resource Locator (URL), the syntax and semantics of formalized information for location and access of resources via the Internet. [...] • URLs are written only with the graphic printable characters of the US- ASCII coded character set. • Octets must be encoded if they have no corresponding graphic character within the US-ASCII coded character set
  49. Последствия • Скопируйте адрес URL статьи из Википедии из адресной

    строки браузера и вставьте куда-нибудь • Для статей на латинице результат: https://en.wikipedia.org/wiki/Fascism • Для статьи на не-латинице (как ссылка работает): https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D1%88%D0%B8%D0 %B7%D0%BC • Совет: поставьте курсор в конце адреса, нажмите пробел, потом выделите адрес и скопируйте (не работает в мобильных браузерах), результат: https://ru.wikipedia.org/wiki/Фашизм
  50. • Первая страница, переданная по «Бильдтелеграфу» Артура Корна, — фото

    императора Австрии Франца Иосифа Первого, 1907 г. • RADIO ELECTRICITE N°54, февраль 1924 • 1930s How Photographs Were Transmitted by Wire: Spot News (1937) www.youtube.com/watch?v=cLUD_NGE370 • (передача фотки по телефону в 1930-е, фотоэлемент — плавное усиление через лампу)
  51. История первой компьютерной картинки • High-Res Scan of the World’s

    First Digital Computer Art www.vintagecomputing.com/index.php/archives/974/high- resolution-scan-of-the-worlds-first-digital-computer-art • The Never-Before-Told Story of the World's First Computer Art (It's a Sexy Dame) www.theatlantic.com/technology/archive/2013/01/the-never- before-told-story-of-the-worlds-first-computer-art-its-a-sexy- dame/267439/
  52. • Сохранилась единственное фото (сделано в 1959, Lawrence A. Tipton

    — оператором системы) • Появление «программы», рисующей изображение (1956): не раньше середины-конца 1955-го, вероятно — декабрь 1956- го года (по дате оригинала картинки в календаре) • Назначение: тестовое изображение, использовавшееся для проверки связи между терминалами (если загрузилось, то ок) • Было записано на стопке из примерно 97 перфокарт • Предположительно было реализовано одним из сотрудников IBM, разработавшей машину
  53. • Машина умела рисовать контуры на экране радара • Параметры

    изображения (координаты узловых точек) принимала с перфокарты
  54. • Понятно, что векторная карта сама по себе тоже является

    компьютерной графикой • Поэтому, говоря об этом изображении, правильно говорить не о первой электронной картинке вообще, а о первом объекте изобрательного искусства в форме цифрового изображения (computer art)
  55. Что касается самой установки • At the time, the threat

    of nuclear strike came primarily from Soviet bombers penetrating American airspace, so the Air Force, in conjunction with MIT and IBM, created SAGE: Semi-Automatic Ground Environment • The SAGE system defended against Soviet attack by combining live radar input with pre-programmed commercial airline flight information to paint a live picture of what should or shouldn't be flying in American airspace
  56. Что касается самой установки • Starting in 1958, the Air

    Force built 21 SAGE centers around the continental U.S. At the heart of each center lay an enormous, 4-story windowless blockhouse that contained two massive AN/FSQ-7 computers. • Each computer cost the equivalent of $1.89 billion in today's dollars and occupied half an acre of floor space.
  57. Что касается самой установки • The AN/FSQ-7 was an achievement

    unto itself, for it was the second real-time computer with an electronic graphical display in history. • The first was the Whirlwind I, the 1950 precursor to the AN/FSQ-7 that began as an MIT project commissioned by the Navy for flight-simulation purposes.
  58. Еще одна картинка (1957-й год) • Первое изображение, отсканированное в

    компьютер • One of the earliest applications of computers to image creation and processing starts with the work of Russell Kirsch on the Standards Eastern Automatic Computer (SEAC) in 1957. • Working with the SEAC team, Kirsch designed a rotating drum scanner, allowing him to digitize an image of his young son, Walden. • The image, a five-by-five centimeter black-and-white shot, was the first image to be scanned into a computer. • In 2003, Life Magazine noted it as one of the “100 Photographs that changed the world.” • www.computerhistory.org/timeline/1957/#169ebbe2ad45559efbc6eb3572 029295
  59. Так или иначе • Хранение и обработка изображений — одна

    повседневных задач компьютеров с ранних лет их существования • Неотъемлемая часть стандартного набора возможностей • Было бы логично отделить алгоритм, который рисует изображение на экране (библиотека, программа- просмотрщик, программа-редактор), от данных самого изображения (файл со специальной структурой) • Каким образом можно представить картинку в виде последовательности чисел?
  60. Растровое изображение • Raster — двумерный массив точек • Прямоугольная

    сетка из разноцветных пикселей • Каждый пиксель — точка (квадратик) определенного цвета • Цвет пикселя задаётся числовым кодом • Плюс: размер изображения • Плюс: всякая разная вспомогательная информация
  61. Кодирование цвета • 1 пиксель = 1 байт (8 бит)

    - монохром: черный/белый - 256 оттенков серого - 256 цветов (палитра задаётся отдельно в этом же файле) • 1 пиксель = 3 байта (8*3 бит: 2^24=16777216 цветов) - RGB: красный, зеленый, голубой • 1 пиксель = 4 байта - RGBA: RGB + прозрачность (альфа-канал)
  62. Растровое изображение • Простое без сжатия: попиксельно — BMP •

    Простое сжатие без потерь: пример с последовательностью одноцветных пикселей • Продвинутое сжатие без потерь: PNG (логотипы, графика для приложений и интернета) • Сжатие сложнее (нетривиальная математика) — с потерями: JPEG (JPG) (фотографии) • 1992: JPEG (Joint Photographic Expert Group) standard finalized
  63. Видео • То же самое, только кадров много • Сжатие

    — простой вариант: каждый отдельный кадр сжимать как отдельную картинку • Но обычно: два последовательных кадра не будут сильно отличаться один от другого • Можно добавить 3-е измерение для сжатия — сквозное через стопку кадров • Например: для нового кадра хранить только те области, которые изменились по сравнению с предыдущим
  64. Векторное изображение • Храним не пиксели, а объекты • Объекты

    — геометрические примитивы с параметрами • Плюс: положение на холсте, поворот, цвет заливки, цвет обводки и т. п. • Некоторые фигуры: линия, прямоугольник, эллипс, многоугольник • Базовая фигура: кривая Безье (сплайн) • Аппликация (вектор) vs карандашный рисунок (растр)
  65. Отрисовка • По математическому алгоритму • Можно растянуть на любую

    площадь (на стадион) без увеличения количества хранимых данных • (ограничение для растра: количество пикселей, растягивать можно до тех пор, пока пиксели не видно глазу)
  66. Структурированный текст • XML vs JSON vs Property file (набор

    свойств: ключ-значение) • Самостоятельно
  67. Задание • Придумать объект (несколько свойств-полей) и описать его в

    формате XML, JSON, ключ- значение • Сначала описать формат, взять 1 экземпляр • Потом взять 3 экземпляра, разместить внутри одного файла