1.5. Самостоятельная работа

Примечание

При выполнении заданий используйте заготовки решений: -> Google Диск.

Подробнее: см. Цикл выполнения и защиты заданий.

1.5.1. Известные персоналии

В Таблице 1.5.1 приведены некоторые из ученых, внесших наибольший вклад в развитие вычислительной техники и языков программирования.

Таблица 1.5.1 - Известные персоналии
Имя Имя
1 Joe Armstrong 16 Yukihiro Matsumoto
2 John Backus 17 John McCarthy
3 Alan Cooper 18 Bertrand Meyer
4 Ole-Johan Dahl 19 Robin Milner
5 Ершов Андрей Петрович 20 John von Neumann
6 Edsger W. Dijkstra 21 Kristen Nygaard
7 Donald Knuth 22 Stephen Wolfram
8 James Gosling 23 Dennis Ritchie
9 Anders Hejlsberg 24 Alan Turing
10 Rich Hickey 25 Guido van Rossum
11 Grace Hopper 26 Bjarne Stroustrup
12 Jean Ichbiah 27 Ken Thompson
13 Alan Kay 28 Larry Wall
14 Brian Kernighan 29 Niklaus Wirth
15 Лебедев Сергей Алексеевич 30 Nathaniel Rochester

Выберите 3 известных персоны под номерами:

  • ЦИФРА_СБ + 1;
  • ЦИФРА_СБ + 11;
  • ЦИФРА_СБ + 21;

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

1.5.2. Лицензирование ПО

Программное обеспечение можно подразделить на 3 большие группы:

Любое программное обеспечение имеет лицензию, определяющую, как его можно использовать с юридической точки зрения. Обычно лицензии делятся на 2 типа: проприетарные лицензии и лицензии свободного и открытого ПО.

Ознакомьтесь с принципами лицензирования и выполните следующие задания.

  1. Для категорий проприетарного, открытого и свободного программного обеспечения приведите:

    • определение;
    • краткое описание;
    • список разрешений/запретов (можно/нельзя/обязательно);
    • критерии принадлежности к категории;
    • преимущества и недостатки;
    • типовых представителей (примеры ПО).
  2. В Таблице 1.5.2 приведен список популярных лицензий.

    Таблица 1.5.2 - Список лицензий
    Задача
    1 MIT License
    2 Apache License 2.0
    3 GNU General Public License v3 (GPL-3)
    4 GNU General Public License v2.0 (GPL-2.0)
    5 BSD 2-Clause License (FreeBSD/Simplified)
    6 EULA
    7 GNU Lesser General Public License v3 (LGPL-3.0)
    8 Mozilla Public License 2.0 (MPL-2.0)
    9 Creative Commons Attribution 4.0 International (CC BY 4.0)
    10 GNU Lesser General Public License v2.1 (LGPL-2.1)

    Выберите 2 лицензии под номерами:

    • ЦИФРА_СБ + 1;
    • (ЦИФРА_СБ + 5) % 10 + 1;

    и, используя Интернет-источники (полезными могут оказаться ресурсы Software Licenses in Plain English и Comparison of free and open-source software licenses), составьте для них:

    • определение и краткое описание;
    • список разрешений/запретов (можно/нельзя/обязательно);
    • типовых представителей (примеры ПО).
  3. Составьте список приложений (не менее 5), которыми Вы пользуетесь дома/на работе:

    • № п/п;
    • Наименование;
    • Категория ПО;
    • Тип лицензии;
    • Скриншот.

Примечание

Если Вы планируете разрабатывать ПО с открытым исходным кодом, обратите внимание на удобный ресурс по подбору лицензии Choose an open source license.

1.5.3. Алгоритмы

Используя в качестве примера «кипячение воды» из теоретической части, составьте в письменной форме алгоритм для решения задачи № ЦИФРА_СБ + 1 из Таблицы 1.5.3.

Таблица 1.5.3 - Список задач
Задача
1 Решение квадратного уравнения
2 Поиск n-го члена геометрической прогрессии
3 Нахождение наибольшего общего делителя (алгоритм Евклида)
4 Определение простоты числа (перебор делителей)
5 Попадание заданной точки в координатную четверть
6 Поиск n-го члена арифметической прогрессии
7 Определение площади треугольника по формуле Герона
8 Решение линейного уравнения
9 Поиск n-го члена ряда Фибоначчи
10 Определение количества дней между датами

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