Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Классификация языков программирования ).pdf
Добавлен: 02.04.2023
Просмотров: 685
Скачиваний: 1
1.4 Обработка данных
Любой язык программирования работает с информацией, которой нужно каким-то образом манипулировать, проверять на корректность, изменять. Данные могут быть самими разнообразными - числами, строками или сложными структурами. Разумеется, с каждым типом необходимо работать по-разному, но чтобы определить, как именно, сначала необходимо понять, с какими именно данными ЭВМ имеет дело. На основе метода определения разновидности данных построена классификация языков программирования по системе типов.
Нетипизированные языки.
Типизированные языки разной степени строгости.
Нетипизированными являются языки ассемблера, которые способны обрабатывать непосредственно двоичные данные. Тип данных при этом не имеет никакого значения. Для типизированных языков важно, с какой разновидностью данных они работают.
Некоторые операции определены только для чисел, например деление, другие - только для строк. При этом некоторые системы позволяют программисту определенные вольности.
Например, они могут самостоятельно определять и "неявно" конвертировать один тип данных в другой, исходя из семантики команды. Это очень удобно, но усложняет отладку, так как может привести к незаметной ошибке. Ярким примером нестрогой типизации является JavaScript [Пратт Т., Зелковиц М.Языки программирования: разработка и реализация, Питер, 4-е издание, 2016 – 248 с.].
Строго типизированные языки, например, Java, такой свободы не допускают и требуют указания типов и их явной конверсии, если она необходима. Существует также классификация языков программирования высокого уровня по моменту проверки типов данных: статические языки обычно являются компилируемыми. Проверка типов происходит при анализе программы перед ее трансляцией на машинный язык. динамические языки проверяют типы данных при выполнении. Принципиальный способ взаимодействия
Высокоабстрактные языки могут быть разделены по основной парадигме программирования. Существуют десятки методологий составления программ, некоторые из которых очень похожи друг на друга, поэтому создать четкую систему различий невозможно. Кратко классификация языков программирования выглядит так: алгоритмические, императивные, процедурные [А. Ездаков «Функциональное и логическое программирование» (2016) Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с].
Требуют явного последовательного описания алгоритма решения задачи. Операторы при этом объединяются в процедурные группы, отделенные от самих данных. Примеры процедурных языков - Pascal, Basic; логические, декларативные. Максимально формализовано описывают саму задачу и требуемый результат. Решение при этом должно логически следовать из этого описания; объектно-ориентированные, структурированные. Имеют в основе концепцию объекта, объединяющего в себе данные и методы их обработки [ Голицына, О.Л. Основы алгоритмизации и программирования: Учебное пособие / О.Л. Голицына, И.И. Попов. - М.: Форум; Издание 2-е, 2015. - 432 c].
Объекты в программировании
Языки последней группы описывают все сущности в виде независимых объектов, скрывающих в себе сложные механики.
Основными концепциями ООП (объектно-ориентированного программирования) являются: инкапсуляция - скрытие функционала внутри объекта; наследование одними объектами методов других; полиморфизм - изменение сути с сохранением внешнего интерфейса. Можно составить также классификацию языков объектно-ориентированного программирования по способу реализации основных концепций этого подхода - наследования, инкапсуляции и полиморфизма. Помимо классических механизмов существуют другие, например прототипный, используемый в JavaScript.
Методология ООП считается самой прогрессивной, эффективной и в некотором смысле модной. Однако в ряде случаев для решения конкретной задачи более эффективными могут быть другие подходы, например функциональный [Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с: ].
1.5 Поколения языков программирования
Классификация языков программирования по истории их появления считается условной, так как не учитывает особенности конкретных систем. Однако она позволяет проследить, как менялись со временем концепции и усложнялись задачи, стоящие перед программистами. В попытках связать классификацию и эволюцию языков программирования выделились несколько крупных групп, названных поколениями:
Первое поколение - машинные языки низкого уровня, привязанные к реализации конкретной ЭВМ. "Программы" на этих языках выглядели как ряды переключателей, приведенных в нужное положение, или перфокарты (перфоленты). Таким образом, все команды представляли собой последовательность нулей и единиц - бинарный код. Пример: язык ARM-процессора [Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с: ].
Во втором поколении языки стали немного понятнее для человека, но отвязать их от конкретного аппарата так и не удалось. Это время языков ассемблера с его мнемоническими кодами и однозначной сборкой в машиночитаемую форму. Пример: Макроассемблер.
Языки третьего поколения сняли с программиста заботу о непринципиальных деталях составления инструкций, таких как перевод программы в машинный код. Теперь компьютер научился делать это самостоятельно. Синтаксис и лексика приблизились к человеческим, стали понятнее. В этом поколении зародились практически все современные языки высокого уровня с широкой областью применения, независимо от их парадигмы: PHP, Fortran [Бекишев, Г.А. Элементарное введение в геометрическое программирование / Г.А. Бекишев, М.И. Кратко. - М.: Наука. Главная редакция физико-математической литературы, 2017. - 144 c].
В четвертом поколении уровень абстракции возрос еще больше, резко сужая область использования. К этой группе относятся такие специфичные языки, как FoxPro, Simulink, SQL. Появились языки визуального программирования: CAD-пакеты, системы RAD.
Наконец, языки пятого поколения должны были сами писать программы, получая лишь описание от программиста. Эта задумка так и не была реализована полностью, так как для составления эффективного алгоритма иногда недостаточно прямой машинной логики, а требуется еще человеческая интуиция и смекалка. Примерами языков пятого поколения являются MathCAD, Prolog и Mercury.
По сути, поколения языков в точности соответствуют этапам программирования, рассмотренным в начале статьи, перечисленным в обратном порядке. Изначально программист все операции брал на себя, а машина лишь выполняла заданную последовательность действий. Теперь же ЭВМ способна выдавать результат по формализованному описанию задачи. Облегчение труда программиста сопровождается увеличением нагрузки на машину, программа выполняется медленнее и требует больших ресурсов. Несмотря на то что технический прогресс движется семимильными шагами, языки первых поколений вовсе не исчезли. Они применяются в областях, требующих максимальной простоты и эффективности [Гедранович, В.В. Основы компьютерных информационных технологий: учеб.-метод. комплекс / В.В. Гедранович, Б.А. Гедранович,И.Н. Тонкович. – 2-е изд., стереотип. – Минск: Изд-во МИУ, 2016 – 344 с.].
1.6 Область применения
Каждый язык программирования хорош в своей области, для которой он создавался. Так, для программирования микроконтроллеров используются ассемблеры, а с Java там делать нечего. Низкоуровневое программирование драйверов эффективно с C, который позволяет строго контролировать ресурсы памяти. Для веб-программирования стоит выбрать скриптовые языки PHP и JavaScript, интерпретатор которого встроен в каждый современный браузер [Пратт Т., Зелковиц М.Языки программирования: разработка и реализация, Питер, 4-е издание, 2016 – 248 с.].
Важные банковские программы написаны на Java, обеспечивающем контроль ошибок. Аэрокосмические - тоже на Java или на Паскале, который даже уборку мусора отдает на контроль программисту.
2. Критерии выбора среды и языка разработки программ
2.1 Выбор среды программирования
Среда разработки программного обеспечения (ПО) — совокупность программных средств, используемая программистами для разработки программного обеспечения. Простая среда разработки включает в себя редактор текста, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Когда эти компоненты собраны в единый программный комплекс, говорят об интегрированной среде разработки (Integrated development environment- IDE) [А.А. Тюгашев. Основы программирования. Часть I. – СПб]: Университет, ИТМО, 2016 – 160 с.].
Такая среда представлена одной программой, не выходя из которой можно производить весь цикл разработки. В состав комплекса кроме перечисленных выше компонент могут входить средства управления проектами, система управления версиями, разнообразные инструменты для упрощения разработки интерфейса пользователя, стандартные заготовки («мастера»), упрощающие разработку стандартных задач, и др.
Современные среды разработки, поддерживающие объектно-ориентированную разработку ПО, также включают браузер классов, инспектор объектов и диаграмму иерархии классов. Хотя существуют среды разработки, предназначенные для нескольких языков — такие как Eclipse или Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования [ Голицына, О.Л. Основы алгоритмизации и программирования: Учебное пособие / О.Л. Голицына, И.И. Попов. - М.: Форум; Издание 2-е, 2015. - 432 c].
Если IDE включает в себя возможность визуального редактирования интерфейса программы, она называется средой визуальной разработки.
1 Предусмотреть возможность описания любых прикладных предметных областей. Заранее невозможно предугадать сферу применения системы,поэтому необходим общий способ описания при-кладных предметных областей.
2 Реализовать поддержку различных архитектур приложений. В настоящее время существует множество различных архитектур от классической двухзвенной «файл-сервер» до многозвенной архитектуры с поддержкой «распределенных объектов»
Выбор оптимальной структуры во многом зависит от масштаба реализуемой КИС и аппаратных возможностей, имеющихся у предприятия. Выполнение данного КО позволит своевременно и с минимальными затратами масштабировать приложения при возрастающих потребностях организации [А.А. Тюгашев. Основы программирования. Часть I. – СПб]: Университет, ИТМО, 2016 – 160 с.].
3 Использовать современный язык программирования и современной СУБД. Популярной парадигмой сегодня является объектно-ориентированное программирование, поэтому использование соответствующего языка программирования является наиболее целесообразным. Для хранения информации в настоящее время чаще всего используют реляционные системы управления базами данных (РСУБД). Применение современных тех-нологий позволяет увеличить срок эксплуатации системы и сократить затраты на ее владение [Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с:].
4 Реализовать инфраструктуру безопасности.
Разграничение прав доступа к данным и отображение минимального набора информации, достаточного лишь для выполнения должностных обязанностей являются ключевыми особенностями разработки современных КИС [Вирт, Н. Алгоритмы и структуры данных / Н. Вирт. - М.: Мир, 2016. - 360 c]. Имеет смысл предусмотреть возможность двух способов про-
верки подлинности пользователей:
1) внутренней - основанной на учетных записей, имеющихся в КИС (чаще всего используется для Веб-приложений)
2) встроенной – основанной на механизмах, предоставляемых операционной системой.
5 Обеспечить поддержку механизмов расширения функциональных возможностей среды разработки. Современные языки программирования предоставляют обширную метаинформацию, что позволяет реализовать «плагинную» архитектуру, поддерживающую установку модулей расширений, представляющих собой dll-библиотеки. Этот подход разрешает безгранично увеличивать функционал системы и её гибкость [Иванова Г.С., Основы программирования: Учебник для вузов. - 2-е изд., перераб. и доп. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2015. ~ 416 с: ].
2.2 Выбор языка программирования
При выборе языка программирования нужно учитывать множество факторов. Например, если при разработке динамической Web-страницы вы в качестве наилучшего варианта выберите JavaServer Pages (JSP)/сервлеты, другие могут предпочесть PHP или аналогичный язык сценариев. Не существует какого-то одного языка, который является наилучшим выбором. Можно отдать предпочтение определенным факторам, таким как производительность и безопасность корпоративных приложений, по сравнению с другими факторами, такими как количество строк кода. Любое решение сопряжено с какими-то компромиссами [Гедранович, В.В. Основы компьютерных информационных технологий: учеб.-метод. комплекс / В.В. Гедранович, Б.А. Гедранович,И.Н. Тонкович. – 2-е изд., стереотип. – Минск: Изд-во МИУ, 2016 – 344 с.].