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

Примечание

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

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

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 вариантов, не удовлетворяющих одному из свойств.