Файл: Задача по следующим критериям Сравнить получившиеся коды программ.docx

ВУЗ: Не указан

Категория: Решение задач

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 212

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Минообрнауки России
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
“Тверской государственный университет”
(ТвГТУ)

Кафедра “Информационные системы”


КУРСОВАЯ РАБОТА
Сравнение программ для, которая генерируется множество первых n случайных чисел с помощью решета Эратосфена


Выполнил: Калашников М.С

Группа: Б.ИСТ.РВС.21.35

Проверил: Зыков И.И.

Тверь 2022 г
Описание задания

Номер варианта: 14

Задание: Написать программу, которая генерируется множество первых n случайных чисел с помощью решета Эратосфена Описание задания:

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

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

  3. Сравнить получившиеся коды программ

Решето Эйлера

Решето Эйлера это вариант решета Эратосфена, в котором каждое составное число удаляется из списка только один раз.

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

Оглавление


Введение 5

Аналитическая часть 6

Описание языков программирования 6

Обоснования выбора языков программирования 8

1. Философия 8

2. История 10

2.1. Влияние других языков на Python 11

3. Портируемость 12

4. Типы и структуры данных 12

5. Синтаксис и семантика 13

5.1. Операторы 13

5.2. Выражения 14

5.3. Имена 15

5.4. Строки документации 16

5.5. Директивы 16

6. Возможности 16

6.1. Интерактивный режим 16

6.2. Объектно-ориентированное программирование 17

6.3. Функциональное программирование 18

6.4. Модули и пакеты 18

6.5. Интроспекция 19

6.6. Обработка исключений 19

6.7. Итераторы 20

6.8. Генераторы 20

6.9. Управление контекстом выполнения 21

6.10. Декораторы 21

6.11. Другие возможности 22

7. Библиотеки 23

7.1. Стандартная библиотека 23

7.2. Модули расширения и программные интерфейсы 23

7.3. Графические библиотеки 25

8. Примеры программ 26

9. Профилирование и оптимизация кода 26

10. Сравнение с другими языками 27

Алгоритм выполнения задачи (блок-схема) 47

Описание задачи 48

Сравнение кода программ по метрике Холстеда 48

Решение задачи 49

Код выполнения программы 50

Выводы 52

Список используемой литературы 53

Введение


Язык программирования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.

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

Язык программирования предназначен для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс, организовать управление различными объектами, и т. п. Язык программирования отличается от естественных языков тем, что предназначен для управления ЭВМ, в то время как естественные языки используются, прежде всего, для общения людей между собой. Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

Как правило, язык программирования определяется не только через спецификации стандарта языка, формально определяющие его синтаксис и семантику, но и через воплощения (реализации) стандарта — программные средства, обеспечивающие трансляцию или интерпретацию программ на этом языке; такие программные средства различаются по производителю, марке и варианту (версии), времени выпуска, полноте воплощения стандарта, дополнительным возможностям; могут иметь определённые ошибки или особенности воплощения, влияющие на практику использования языка или даже на его стандарт.


Аналитическая часть

Описание языков программирования


  1. Python - язык программирования общего назначения:


Представленный Гвидо ван Россумом в 1991 году, Python - чрезвычайно популярный язык общего назначения, широко используемый в сообществе специалистов по науке о данных и аналитике. Он имеет широкий спектр специализированных модулей и может похвастаться поддержкой мирового сообщества с многочисленными онлайн-сервисами, которые предоставляют Python API (интерфейс прикладного программирования). Его легко выучить, а низкий входной барьер также делает его идеальным первым языком для тех, кто плохо знаком с областью науки о данных и аналитики. Python также является отличной перспективой для тех, кто ищет карьеру в области науки о данных, основанной на приложениях. Большая часть процесса науки о данных вращается вокруг процесса ETL (извлечение-преобразование-загрузка), который поддерживается универсальностью, которую предлагает Python. Python также предоставляет такие пакеты, как Tensorflow, pandas и scikit-learn, что делает его фантастическим вариантом для расширенных приложений машинного обучения.


  1. Java:


В настоящее время Java поддерживается корпорацией Oracle. Это стандартный язык общего назначения, работающий на виртуальной машине Java (JVM). Он обладает мощной способностью интегрировать методы науки о данных и аналитики в существующую кодовую базу. В результате многие современные системы построены на серверной части Java. Это бесценный язык для критически важных приложений обработки данных, поскольку он обеспечивает серьезную безопасность типов.

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




  1. C++:


C++ — это язык объектно-ориентированного программирования общего назначения (ООП), разработанный Бьярном Страуструпом и являющийся расширением языка Си. Следовательно, можно писать на C++ в «стиле C» или «объектно-ориентированном стиле». В определенных сценариях на нем можно писать любым способом и, таким образом, он является эффективным примером гибридного языка.

С++ считается языком промежуточного уровня, так как он включает в себя функции языка высокого и низкого уровня. Первоначально язык назывался «C с классами», так как он имел все свойства языка C с дополнительным понятием «классы». Тем не менее, он был переименован в C++ в 1983 году.

C ++ - один из самых популярных языков, в основном используемый с системным/прикладным программным обеспечением, драйверами, клиент-серверными приложениями и встроенным программным обеспечением.

Основным преимуществом C++ является коллекция предопределенных классов, представляющие собой типы данных, которые могут быть созданы несколько раз. Язык также облегчает объявление пользовательских классов. Классы могут дополнительно приспосабливать функции-члены для реализации определенной функциональности. Несколько объектов определенного класса могут быть определены для реализации функций в классе. Объекты могут быть определены как экземпляры, созданные во время выполнения. Эти классы также могут наследоваться другими новыми классами, которые по умолчанию принимают общедоступные и защищенные функции.

C++ включает в себя несколько операторов, таких как сравнение, арифметика, битовые манипуляции и логические операторы. Одна из наиболее привлекательных особенностей C++ заключается в том, что он допускает перегрузку некоторых операторов, таких как сложение.

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

Обоснования выбора языков программирования

1. Философия


Разработчики языка Python придерживаются определённой философии программирования, называемой «Дзэном Питона»
[5]. Её текст выдаётся интерпретатором Питона по команде import this (работает один раз за сессию). Автором этой философии считается Тим Пейтерс.

Текст философии:

Оригинальный текст  (англ.)  

  • Beautiful is better than ugly.

  • Explicit is better than implicit.

  • Simple is better than complex.

  • Complex is better than complicated.

  • Flat is better than nested.

  • Sparse is better than dense.

  • Readability counts.

  • Special cases aren’t special enough to break the rules.

  • Although practicality beats purity.

  • Errors should never pass silently.

  • Unless explicitly silenced.

  • In the face of ambiguity, refuse the temptation to guess.

  • There should be one — and preferably only one — obvious way to do it.

  • Although that way may not be obvious at first unless you’re Dutch.

  • Now is better than never.

  • Although never is often better than 'right now'.

  • If the implementation is hard to explain, it’s a bad idea.

  • If the implementation is easy to explain, it may be a good idea.

  • Namespaces are one honking great idea — let’s do more of those!

  • Красивое лучше, чем уродливое.

  • Явное лучше, чем неявное.

  • Простое лучше, чем сложное.

  • Сложное лучше, чем запутанное.

  • Плоское лучше, чем вложенное.

  • Разреженное лучше, чем плотное.

  • Читаемость имеет значение.

  • Особые случаи не настолько особые, чтобы нарушать правила.

  • При этом практичность важнее безупречности.

  • Ошибки никогда не должны замалчиваться.

  • Если не замалчиваются явно.

  • Встретив двусмысленность, отбрось искушение угадать.

  • Должен существовать один — и, желательно, только один — очевидный способ сделать это.

  • Хотя он поначалу может быть и не очевиден, если вы не голландец[6].

  • Сейчас лучше, чем никогда.

  • Хотя никогда зачастую лучше, чем прямо сейчас.

  • Если реализацию сложно объяснить — идея плоха.

  • Если реализацию легко объяснить — идея, возможно, хороша.

  • Пространства имён — отличная штука! Будем делать их побольше!