Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Выбор языков программирования.).pdf
Добавлен: 31.03.2023
Просмотров: 304
Скачиваний: 3
Глава 2 Классификация языков программирования.
В группе универсальных языков высокого уровня безусловным лидером на сегодня является язык С (вместе с C++). Действительно различные версии С и C++ имеют целый ряд очень существенных достоинств:
•многоплатформенность - для всех используемых в настоящее время платформ существуют компиляторы с языка С и C++;
•наличие операторов, реализующих основные структурные алгоритмические конструкции (условную обработку, все виды циклов);
•возможность программирования на низком (системном) уровне с использованием адресов оперативной памяти;
•огромные библиотеки подпрограмм и классов.
Все это сделало С и C++ основными языками, используемыми для создания операционных систем, и, в свою очередь, служит для них дополнительной рекламой. Однако С и C++ имеют и серьезные недостатки:
•отсутствие полноценных встроенных структурных типов данных (имеющиеся псевдоструктурные типы, использующие адресную арифметику, недостаточно жестко определены, чтобы контролировать многие операции над этими данными, что приводит к большому количеству ошибок, выявляемых только в процессе отладки программы);
•наличие синтаксических неоднозначностей, которые также не позволяют компилятору контролировать правильность программы;
•ограниченный контроль параметров, передаваемых в подпрограмму, что также обнаруживается только в процессе отладки программы, и т. п.
Альтернативой С и C++ среди универсальных языков программирования, используемых для создания прикладного программного обеспечения, на сегодня является Pascal, компиляторы которого в силу четкого синтаксиса обнаруживают помимо синтаксических и большое количество семантических ошибок. Версия Object Pascal, использованная в среде Delphi, сопровождается профессиональными библиотеками классов, упрощающими ведение больших разработок, в том числе и требующих использования баз данных, что делает Delphi достаточно эффективной средой для создания приложений Windows.
Кроме этих языков к группе универсальных принадлежат также Basic, Modula, Ada и некоторые другие. Каждый из указанных языков, так же, как C++ и Pascal, имеет свои особенности и, соответственно, свою область применения.
Специализированные языки разработчика используют для создания конкретных типов программного обеспечения. К ним относят:
•языки баз данных;
•языки создания сетевых приложений;
•языки создания систем искусственного интеллекта и т. д.
Специализированные языки пользователя обычно являются частью профессиональных сред пользователя, характеризуются узкой направленностью и разработчиками программного обеспечения не используются.
Языки низкого уровня позволяют осуществлять программирование практически на уровне машинных команд. При этом получают самые оптимальные, как с точки зрения времени выполнения, так и с точки зрения объема необходимой памяти программы. Но эти языки совершенно не годятся для создания больших программ и, тем более, программных систем. Основная причина - низкий уровень абстракций, которыми должен оперировать разработчик, откуда недопустимо большое время разработки. Существенно и то, что сами языки низкого уровня
не поддерживают принципов структурного программирования, что значительно ухудшает технологичность разрабатываемых программ.
В настоящее время языки типа Ассемблера обычно используют:
•при написании сравнительно простых программ, взаимодействующих непосредственно с техническими средствами, например драйверов, поскольку в этом случае приходится кропотливо настраивать соответствующее оборудование, преимущества языков программирования высокого уровня становятся несущественными;
•в виде вставок в программы на языках высокого уровня, например, для ускорения преобразования данных в циклах с большим количеством повторений.[12]
Какие свойства языка программирования считаются желательными?
• Переносимость.
• Безопасность типов.
• Точная определенность.
• Высокая производительность.
• Способность точно выражать идеи.
• Легкая отладка.
• Легкое тестирование.
• Доступ ко всем системным ресурсам.
• Независимость от платформы.
• Возможность выполнения на всех платформах (например, в Linux. Windows, OS/2, в смартфонах, во встроенных системах).
• Устойчивость на протяжении десятилетий.
• Постоянное совершенствование в ответ на изменения, происходящие в прикладной области.
• Легкость обучения.
• Небольшой размер.
878 Глава 22 • Идеалы и история
• Поддержка популярных стилей программирования (например, объектно-ориентированного и обобщенного программирования).
• Средства, облегчающие анализ программ.
• Широкие возможности.
• Поддержка со стороны большого сообщества.
• Поддержка новичков (студентов, учащихся).
• Исчерпывающие возможности для экспертов (например, конструкторов инфраструктуры).
• Доступность большого количества инструментов для разработки программ. • Доступность большого количества компонентов программного обеспечения (например, библиотек).
• Поддержка со стороны сообщества разработчиков открытого кода.
• Поддержка со стороны поставщиков основных платформ (Microsoft, IВМ и т.д.).
Для еще более правильного выбора придуманы:
Критерии эффективности языков программирования.
Язык программирования можно определить множеством показателей, характеризующих отдельные его свойства. Возникает задача введения меры для оценки степени приспособленности ЯП к выполнению возложенных на него функций — меры эффективности. Эффективность определяет степень соответствия ЯП своему назначению. Она измеряется либо количеством затрат, необходимых для получения определенного результата, либо результатом, полученным при определенных затратах. Произвести сравнительный анализ эффективности нескольких ЯП, принять решение на использование конкретного языка позволяет критерий эффективности. Критерий эффективности — это правило, служащее для сравнительной оценки качества различных ЯП. Критерий эффективности можно назвать правилом предпочтения сравниваемых вариантов.
Строятся критерии эффективности на основе частных показателей эффективности (показателей качества) Способ связи между частными показателями определяет вид критерия эффективности. В качестве частных показателей обычно выступают:
читабельность (легкость чтения и понимания программ);
легкость создания программ (удобство языка для создания программ в выбранной области);
надежность (обеспечение минимума ошибок при работе программ);
стоимость (суммарная стоимость всего жизненного цикла языка);
переносимость программ (легкость переноса программ из одной операционной среды в другую);
универсальность (применимость к широкому кругу задач); четкость (полнота и точность официального описания языка).
В свою очередь, каждый из частных показателей зависит от множества разнообразных характеристик.[13]
Возникает вопрос:
Почему существуют сотни языков программирования: для двух разных классов задач скорее всего потребуются различные уровни абстракции, и у разных программистов будут различные представления о том, какими должны быть эти абстракции. Программист, работающий на С, вполне доволен работой на уровне абстракции, требующем определения вычислений с помощью массивов и индексов, в то время как составитель отчета отдает предпочтение «программе» на языке, содержащем функции текстовой обработки.
Вот некоторые советы по выработке критериев. Первый критерий — тип используемой арифметики. Следующий критерий имеет отношение к структурам данных. Далее следует вопрос о сложности (операциональной) задачи в смысле количества действии, циклов и т. п., а также видов взаимосвязей. Еще один критерии связан с объемом текстовой обработки, при, что аналогично, нечисловых расчетов. Цель выработки этого критерия — снизить трудоемкость. Другим важным критерием выбора языка программирования является обработка л реальном масштабе времени, как, например, в задачах управления. Наконец, необходимо сформировать критерий на случаи, если необходима трудоемкая обработка файлов. Одним из последних (по перечислению, но не по значению) является критерий, ориентированный на оборудование и си-темное программное обеспечение (интерактивный или пакетный режим обработки данных, эффективность, объем транслятора, специализированные машинные средства и т. п.).
Фиксация того или иного количества критерии призвана обеспечить удобство использования / эффективность (по времени)разработки ПС
И последнее замечание по выбору языков программирования. Необходимо всегда, когда это только возможно, ориентироваться па стандарт языка и технологии программирования. Это позволит существенно продлить жизнь программного средства и / или уменьшать время адаптации к новым условиям (модернизации ПС).
Изучение ЯП часто начинают с их классификации. Определяющие факторы классификации обычно жестко не фиксируются. Чтобы продемонстрировать характер типичной классификации, опишем наиболее часто применяемые факторы, дадим им условные названия и приведем примеры ЯП для каждой из классификационных групп .
Обратимся к истокам развития вычислительной техники. Вспомним самые первые компьютеры и программы для них. Это была эра программирования непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были знать архитектуру машины досконально. Программы были достаточно простыми, что обусловливалось, во-первых, весьма ограниченными возможностями этих машин и, во-вторых, большой сложностью разработки и, главное, отладки программ непосредственно на машинном языке. Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространенным утверждениям, признаваемым большинством разработчиков, относятся следующие. Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами. Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются для общения людей между собой. В принципе можно обобщить определение языков программирования – это способ передачи команд, приказов, четкого руководства к действию, тогда как человеческие языки служат также для обмена информацией. Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.[14]
Ассемблер
Первым значительным шагом представляется переход к языку ассемблера (assembler). Не очень заметный, казалось бы, шаг – переход к символическому кодированию машинных команд – имел на самом деле огромное значение. Программисту не надо было больше вникать в хитроумные способы кодирования команд на аппаратном уровне. Появилась также возможность использования макросов и меток, что также упрощало создание, модификацию и отладку программ. Появилось даже некое подобие переносимости – существовала возможность разработки целого семейства машин со сходной системой команд и некоего общего ассемблера для них, при этом не было нужды обеспечивать двоичную совместимость.
Поколения ЯП
|
Поколения |
Языки программирования |
Характеристика |
|
Первое |
Машинные |
Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знании архитектуры ЭВМ |
|
Второе |
Ассемблеры, Макроассемблеры |
Более удобны для использования, но по-прежнему машинно-зависимы |
|
Третье |
Языки высокого уровня |
Мобильные, человекоориентированные, проще в освоении |
|
Четвертое |
Непроцедурные, объектно-ориентированные, языки запросов, параллельные |
Ориентированы на непрофессионального пользователя и на ЭВМ с параллельной архитектурой |
|
Пятое |
Языки искусственного интеллекта, экспертных систем и баз знаний, естественные языки |
Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками |