Содержание лекции: алгоритмические языки и предъявляемые к ним требования.
Цель лекции: ознакомиться с классификацией и особенностями современных языков программирования.
Одной из проблем, возникающих на начальных этапах разработки программного продукта, является выбор языка программирования, который в свою очередь влияет на выбор среды программирования. Существует масса факторов, влияющих на выбор языка. Однако прежде чем принять решение в пользу того или иного языка программирования, следует иметь представление об их классификации и особенностях. Все существующие языки программирования разделяются на следующие группы [1]:
а) универсальные языки высокого уровня;
б) специализированные языки разработчика программного обеспечения;
в) специализированные языки пользователя;
г) языки низкого уровня.
В группе универсальных языков высокого уровня безусловным лидером сегодня является язык С (вместе с C++). Действительно различные версии С и C++ имеют целый ряд очень существенных достоинств [17]:
|
|
а) многоплатформенность - для всех используемых в настоящее времяплатформ существуют компиляторы с языка С и C++;
б) наличие операторов, реализующих основные структурные алгоритмические конструкции (условную обработку, все виды циклов);
в) возможность программирования на низком (системном) уровне с использованием адресов оперативной памяти;
г) огромные библиотеки подпрограмм и классов.
Все это сделало С и C++ основными языками, используемыми для создания операционных систем, и, в свою очередь, служит для них дополнительной рекламой. Однако они имеют и серьезные недостатки:
а) отсутствие полноценных встроенных структурных типов данных (имеющиеся псевдоструктурные типы, использующие адресную арифметику, недостаточно жестко определены, чтобы контролировать многие операции над этими данными, что приводит к большому количеству ошибок, выявляемых только в процессе отладки программы);
б) наличие синтаксических неоднозначностей, которые также не позволяют компилятору контролировать правильность программы;
в) ограниченный контроль параметров, передаваемых в подпрограмму, что также обнаруживается только в процессе отладки программы.
Альтернативой С и C++ среди универсальных языков программирования, используемых для создания прикладного программного обеспечения, на сегодня является Pascal, компиляторы которого в силу четкого синтаксиса обнаруживают помимо синтаксических и большое количество семантических ошибок. Версия Object Pascal, использованная в среде Delphi, сопровождается профессиональными библиотеками классов, упрощающими ведение больших разработок, в том числе и требующих использования баз данных, что делает Delphi достаточно эффективной средой для создания приложений Windows. Кроме этих языков к группе универсальных принадлежат также Basic, Modula, Ada и некоторые другие. Каждый из указанных языков, так же, как C++ и Pascal, имеет свои особенности и, соответственно, свою область применения.
|
|
Специализированные языки разработчика используют для создания конкретных типов программного обеспечения. К ним относят:
а) языки баз данных;
б) языки создания сетевых приложений;
в) языки создания систем искусственного интеллекта и т. д.
Специализированные языки пользователя обычно являются частью профессиональных сред, характеризуются узкой направленностью и разработчиками программного обеспечения не используются.
Языки низкого уровня позволяют осуществлять программирование практически на уровне машинных команд. При этом получают самые оптимальные, как с точки зрения времени выполнения, так и с точки зрения объема необходимой памяти программы. Но эти языки совершенно не годятся для создания больших программ и, тем более, программных систем. Основная причина - низкий уровень абстракций, которыми должен оперировать разработчик, откуда недопустимо большое время разработки. Существенно и то, что сами языки низкого уровня не поддерживают принципов структурного программирования, что значительно ухудшает технологичность разрабатываемых программ. В настоящее время языки типа Ассемблера обычно используют:
а) при написании сравнительно простых программ, взаимодействующих непосредственно с техническими средствами (например, драйверов), поскольку в этом случае приходится кропотливо настраивать соответствующее оборудование, преимущества языков программирования высокого уровня становятся несущественными;
б) в виде вставок в программы на языках высокого уровня (например, для ускорения преобразования данных в циклах с большим количеством повторений).
Таким образом, при выборе языка программирования следует руководствоваться следующими соображениями:
а) язык должен быть удобен для программиста;
б) язык должен быть пригоден для данного компьютера;
в) язык должен быть пригоден для решения данной задачи.
Дополнительную информацию по теме можно получить в [1, 2, 3, 7, 17].