Читайте также:
|
|
При решении конкретной прикладной задачи в большинстве случаев язык и среда программирования не выбираются, а задаются извне - заказчиком, начальником и т.п.
В том случае, когда возможен выбор, исходить следует из следующего:
§ Характера самой задачи и технических требований;
§ Наработанного инструментария и имеющихся для данной среды библиотек;
§ Имеющихся в языке и среде программирования инструментальных средств.
Применимость языка для той или иной задачи зависит от того, каким набором понятий он оперирует, в рамках каких концепций (парадигм) он позволяет работать, какие имеются стандартные и распространенные пользовательские библиотеки и т.д.
По набору понятий языки прежде всего подразделяются на высоко- и низкоуровневые. Первые предоставляют высокий уровень абстракции от оборудования, вторые - низкий, приближенный к машинному.
С точки зрения того, внесены ли в набор понятий особые, специфичные для предметной области объекты, языки делятся на универсальные (процедурные) и специализированные. К последним можно отнести Prolog, Lisp. Универсальные языки позволяют реализовать любой алгоритм, пользуясь стандартным набором конструкций. Благодаря этому, код на таком языке может быть достаточно легко перенесен из одного процедурного языка в другой при помощи консервативных изменений.
Любой язык характеризуется набором базовых типов, возможностями по пополнению этого набора при помощи ряда конструкторов: массив, запись (структура), объединение. В некоторых языках имеется универсальный тип (Variant в Delphi и Visual Basic), свободно используемый как любой из базовых типов. Степень контроля типов может быть очень разной - от полного отсутствия до крайне жесткого. Важно наличие (возможно, в виде библиотеки) структур данных переменной длины, например, динамических массивов.
Различия в языках сводятся к способам определения процедур и функций, вариантам передачи параметров, возможностям определения рекурсивных процедур и наличию процедурного типа данных.
Наличие и широкая классификация типов памяти дает возможность эффективно управлять ее распределением, но и вносит сложность, требующую от программиста более внимательного отношения. Обычно выделяют (максимальный спектр): регистры, глобальные, локальные и динамические переменные.
Наличие средств логического объединения группы процедур/функций/переменных позволяет работать с большими проектами, упрощая их структуру. Важное свойство - возможность описания процедур инициации и завершения модуля.
§ Объектный подход
Объединение структур и методов их обработки (_инкапсуляция_) создает значительные удобства при программировании. Возможность _наследования_ позволяет привести в систему набор структур. Автоматически вызываемые конструкторы и деструкторы упрощают отслеживание взаимосвязей. Все это составляет удобный инструмент для описания понятий и действий прикладной программы.
Независимость от аппаратуры, реализуемая при помощи семантики, не зависящей от конкретной машины и внесением в язык ряда специфичных понятий - таких как базовый тип с нефиксированным размером (int в C).
С точки зрения эффективности, важно как исполняется программа - последовательной интерпретацией исходного текста (интерпретатор) либо непосредственным исполнением готового кода (компилятор). Интерпретатор целесообразно использовать лишь в случае когда скорость интерпретации не сильно сказывается на эффективности программы. Кроме интерпретации и компиляции возможны промежуточные варианты с генерацией псевдокода, который отличается от от исходного текста высокой скоростью интерпретации либо другими полезными свойствами (например, возможностью исполнения на машинах различной архитектуры - как Java).
Дата добавления: 2015-08-27; просмотров: 128 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Операционные системы | | | Краткий обзор распространенныхпромышленных языков программирования и программных платформ |