Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Парадигмы программирования).pdf
Добавлен: 27.04.2023
Просмотров: 432
Скачиваний: 2
СОДЕРЖАНИЕ
1. Исследование предметной области
1.1 Парадигмы программирования
1.2 Объектно-ориентированный подход в программировании
2. Низкоуровневые и процедурные языки программирования
2.1 Машинно-ориентированный язык Assembler
2.2 Программирование на языке Fortran
2.3 Процедурный язык программирования Pascal
3. Объектно-ориентированные языки программирования
3.1 Особенности языка программирования C#
3.2 Статически типизированный язык программирования общего назначения C++
3.3 Строго типизированный объектно-ориентированный язык программирования Java
4. Характеристика критериев выбора языка и среды разработки
4.1 Критерии выбора языка разработки
ВВЕДЕНИЕ
В настоящее время современный человек не может представить свою жизнь без телевизора, радио, сотового телефона, а главное без компьютера. В современном мире персональный компьютер играет главную роль во всех сферах деятельности, во всех странах мира. Конечно, можно отметить, что еще несколько десятилетий назад, никто не пользовался ПК и при этом не имели никаких удобств, но мир не стоит на месте. Все эти новшества развиваются благодаря программированию.
Цель данной работы определение критериев для выбора наиболее подходящего языка программирования для решения той или иной задачи, а также обоснование выбора средств разработки. Соответственно объектами исследования являются языки программирования и среды разработки.
Актуальность данной работы довольно высока, поскольку эти языки программирования используется при построении почти всех программных продуктов.
В рамках курсового проекта должны быть решены следующие задачи:
- раскрыты основные парадигмы программирования;
- должны быть проанализированы наиболее популярные процедурные языки программирования;
- должно быть проведено исследование объектно-ориентированных языков;
- выделены критерии выбора языка программирования и среды разработки;
- изучение литературы в данной области.
По ходу выполнения работы были использованы различные источники литературы по приведенным в работе языкам программирования и общим парадигмам. В конце работы приведен перечень используемой литературы.
1. Исследование предметной области
1.1 Парадигмы программирования
Парадигма программирования — это комплекс концепций, принципов и абстракций, определяющих фундаментальный стиль программирования.
Одной из характеристик языка является его поддержка определенных парадигм программирования. Например, Smalltalk имеет прямую поддержку программирования объектно-ориентированным способом, поэтому его можно назвать объектно-ориентированным языком. Программы OCaml, Lisp, Scheme и JavaScript имеют тенденцию активно использовать функции, поэтому они называются «функциональными языками», несмотря на наличие переменных и многих императивных конструкций. [5, 9, 15]
Программирование — это написание программ. Программа для компьютера представляет собой алгоритм (последовательность) выполнения каких-либо действий, написанный на том или ином языке программирования. На сегодняшний день многие программы большие и сложные, над такими работают целые штаты сотрудников, при этом код не всегда пишется, а собирается из отдельных блоков. Поэтому правильнее говорить о их разработке (создании) программ, а не их написании.
Будучи пользователями вычислительной техники, мы используем самые разнообразные приложения, созданные программистами. Однако программирование - это не только профессиональная деятельность, но и особый образ мышления, связанный с логикой и алгоритмикой, это часть культуры. Поэтому его азы изучаются в школьном курсе информатики.
Обучение обычно начинают с изучения структурного программирования. При этом в алгоритмах используются ветвления, циклы, подпрограммы. Особое внимание уделяется типам данных. По сути изучаются две разные, но взаимосвязанные, области знаний - алгоритмика и особенности выбранного языка.
На более продвинутом уровне переходят к изучению динамических типов данных (что предполагает более глубокое знание информатики) или объектно-ориентированного программирования (большинство современных программ создаются с использованием этой парадигмы). [4]
Рассмотрим различные парадигмы программирования.
Управление потоком в императивном программировании является явным: команды показывают, как вычисление происходит, шаг за шагом.
Императивная парадигма программирования предполагает, что компьютер может поддерживать через среду переменных любые изменений в процессе вычислений.
Вычисления выполняются с помощью последовательности шагов, в которой эти переменные упоминаются или изменяются. Порядок шагов имеет решающее значение, поскольку данный шаг будет иметь разные последствия в зависимости от текущих значений переменных при выполнении шага [4, 14, 15].
Императивные языки программирования необходимы чаще, чем любые другие парадигмы в этом направлении. Для такой популярности есть две причины:
- императивная парадигма наиболее близко напоминает собственно машинный код, поэтому программист гораздо ближе к “железу”;
- из-за такой близости императивная парадигма была единственной, достаточно эффективной для широкого использования до недавнего времени.
Преимущества императивного подхода:
- эффективность;
- близость к «железу»;
- популярность;
- знаком программистам. [5, 9, 15]
Недостатки императивного подхода:
- семантика программы может быть сложной для понимания или доказательства, поскольку ссылочная прозрачность не выполняется (из-за побочных эффектов);
- побочные эффекты также затрудняют отладку;
- абстракция более ограничена, чем в некоторых других парадигмах.
На рисунке 1 показано распределение языков программирования по группам.
Логическая Парадигма применяет декларативный подход к решению проблем. Логическая парадигма программирования предусматривает использование математической логики для разработки программ. Проводятся различные логические утверждения о ситуации, устанавливаются все известные факты. Затем выполняются запросы. Роль компьютера — это сохранение данных и логический вывод. [5]
Рисунок 1 – Классификация языков программирования
Логическая программа разделена на три раздела:
- ряд определений/деклараций, определяющих проблемную область;
- заявления соответствующих фактов;
- постановка целей в форме запроса.
Возвращается любое выводимое решение для запроса. Определения и декларации строятся целиком из отношений. т.е. X является членом Y или X находится внутри между a и b, и т. д. [9, 15]
Преимущества логико-ориентированного программирования многообразны:
- система решает проблему, поэтому само программирование сводятся к минимуму;
- доказательство действительности разработанных на нём программ является простым.
Функциональная парадигма программирования рассматривает все подпрограммы, как функции в математическом смысле, неформально, они принимают в качестве аргументов и возвращают единственное решение. Возвращенное решение полностью основано на вводе, а время, когда функция вызывается, не имеет никакого отношения. Поэтому вычислительная модель является одним из функций приложения и сокращения. [5, 8]
Функциональные языки создаются на основе функциональной парадигмы. Такие языки допускают функциональные решения проблем, позволяя программисту рассматривать функции как объекты первого класса (их можно рассматривать как данные, которые, как предполагается, имеют значение того, что они возвращают, поэтому они могут быть переданы другим функциям в качестве аргументов или возвращены от функций).
Имеются следующие преимущества функционального программирования:
- Высокий уровень абстракции, особенно когда используются чистые функции, которые исключают многие нюансы программирования и, таким образом, устраняют возможность совершения многих классов ошибок;
- Отсутствие зависимости от операций присваивания. Эта независимость в отношении оценки делает функционально-ориентированные языки хорошими кандидатами для программирования параллельных компьютерных систем;
- Отсутствие операций присваивания делает функционально-ориентированные программы гораздо более пригодными для математического доказательства и анализа, чем настольные программы, поскольку функциональные программы обладают ссылочной прозрачностью. [9]
К недостаткам можно отнести следующие:
- Менее эффективно.
- Проблемы, связанные с множеством переменных или много последовательной деятельности, иногда легче обрабатывать императивно или с объектно-ориентированным подходом.
Процедурное программирование — это парадигма программирования, полученная из структурированного программирования, основанная на концепции вызова процедуры. Процедуры, также известные как подпрограммы или функции, просто содержат ряд вычислительных шагов, которые должны быть выполнены.
Процедурное программирование — есть отражение фон Неймановской архитектуры компьютера. Программа, написанная на процедурном языке, представляет собой последовательность команд, определяющих алгоритм решения задачи. [1, 9]
1.2 Объектно-ориентированный подход в программировании
Истоки ООП берут начало с 60-х годов XX века. Однако окончательное формирование основополагающих принципов и популяризацию идеи следует отнести к 80-м годам. Большой вклад внес Алан Кей.
Объектно-ориентированное программирование (ООП) — это парадигма, в которой объекты реального мира рассматриваются как отдельные сущности, имеющие собственное состояние, которое модифицируется только встроенными процедурами, называемыми методами.
Объектно-ориентированное программирование — это подход программирования, который использует классы и объекты для создания моделей, основанных на реальной среде. Объектно-ориентированное программирование может использовать коллекцию объектов, которые будут передавать сообщения при запросе конкретной услуги или информации. Объекты могут передавать, получать сообщения или обрабатывать информацию в виде данных. [7, 9, 15]
Поскольку объекты работают независимо, они инкапсулируются в модули, которые содержат как локальные среды, так и методы. Связь с объектом осуществляется путем передачи сообщений.
Новый класс (называемый производным классом или подклассом) может быть получен из другого класса (называемого базовым классом или суперклассом) с помощью механизма, называемого наследованием. Производный класс наследует все функции базового класса: его структуру и поведение. Кроме того, производный класс может содержать дополнительное состояние (переменные экземпляра) и может проявлять дополнительное поведение. Примечательно, что производный класс может также переопределить поведение, соответствующее некоторым методам базового класса. Кроме того, механизм наследования разрешен даже без доступа к исходному коду базового класса. [7, 15]
Возможность использования наследования является самой отличительной особенностью парадигмы ООП. Наследование дает ООП главное преимущество над другими парадигмами программирования — относительно простое повторное использование кода и расширение без необходимости изменения существующего исходного кода.
Механизм моделирования программы как совокупности объектов различных классов и, кроме того, использование классов как в качестве модификаций других классов, обеспечивает высокую степень модульности. [9, 15]
Инкапсуляция — в объектно-ориентированном программировании - сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. В идеале, состояние объекта инкапсулируется и получает доступ только к методам этого объекта. Таким образом, инкапсуляция и скрытие информации являются неотъемлемыми преимуществами ООП.
Инкапсуляция, наследование и полиморфизм — фундаментальные свойства, которыми должен обладать язык, претендующий называться объектно-ориентированным (языки, не имеющие наследования и полиморфизма, но имеющие только классы, обычно называются основанными на классах). Различные ОО языки используют совершенно разные подходы. Мы можем различать ОО языки, сравнивая механизм контроля типов, способность поддерживать различные программные модели и то, какие объектные модели они поддерживают.
Одной из причин использования объектно-ориентированного программирования является то, что оно упрощает сохранение и изменение существующего кода при создании новых объектов, наследующих характеристики от существующих. Это значительно сокращает время разработки и упрощает настройку программы. [9]
В данной главе мы рассмотрели основные парадигмы программирования, в частности, провели анализ объектно-ориентированного и процедурного подходов.
2. Низкоуровневые и процедурные языки программирования
2.1 Машинно-ориентированный язык Assembler
Машинный код или машинный язык представляет собой набор инструкций, выполняемых непосредственно центральным процессором компьютера (CPU). Каждая команда выполняет очень конкретную задачу, например, загрузки (load), перехода (jump) или элементарной арифметической или логической операции для единицы данных в регистре процессора или памяти. Каждая программа выполняется непосредственно процессором и состоит из ряда таких инструкций.