Инструментальное программное обеспечение

 

При наличии десятков тысяч программ для ПК иногда пользователям может потребоваться что-то такое, чего не делают имеющиеся программы. В этих случаях следует использовать инструментальное программное обеспечение, или системы программирования.

Системы программирования – это комплексы программ и прочих средств, предназначенных каждый для разработки и эксплуатации программ на конкретном языке программирования для конкретного вида ПК.

Системы программирования позволяют разрабатывать как системное, так и прикладное программное обеспечение. Следовательно, они играют в программировании роль средств производства.

Эти системы обычно включают некоторую версию языка программирования, транслятор программ, редактор текстов программ, библиотеки полезных подпрограмм, отладчики, справочные системы, а иногда и различные вспомогательные программы.

Язык программирования – это искусственный язык, с помощью которого записывается алгоритм решения задачи в виде, понятном ПК.

Существуют сотни языков программирования, и у каждого могут быть десятки версий. Каждый программист пишет программы на том языке, который ему удобен, и нет языка программирования, считающегося общепринятым.

Но у всех языков программирования есть одно общее свойство. Они понятны программистам, но непонятны процессору, так как процессор может работать только с числами и потому понимает программы, записанные только в машинном коде. Поэтому программы, записанные на любом языке программирования, сначала «переводят» на язык процессора, то есть превращают в машинный код. Этот перевод выполняют специальные программы-переводчики. По-английски «перевод» называется трансляцией (translation), поэтому программы, выполняющие перевод программ на язык машинного кода, называют трансляторами.

Различают следующие виды трансляторов:

- интерпретатор;

- компилятор.

Интерпретатор берёт очередной оператор языка из текста программы, анализирует его структуру и сразу исполняет. Потом переходит к следующему оператору. Компилятор переводит всю программу в машинные команды без её выполнения.

Существующие языки программирования можно разделить на две группы: процедурные и непроцедурные (рис. 2.8).

 

 

Рис. 2.8. Языки программирования

Процедурные(алгоритмические) программы представляют собой систему предписаний для решения конкретной задачи. Процедурное(императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 1940-х гг. Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи.

Процедурные языки разделяют на языки высокого и низкого уровня.

Языки низкого уровня позволяют создавать программы из машинных кодов, обычно в шестнадцатиричной форме. С помощью этих языков удобнее разрабатывать системные программы, драйверы.

В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определённый тип компьютера, т.е. являются машинно-зависимыми. Машинно ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ.

Программы на языках высокого уровня близки к естественному языку и представляют набор заданных команд (С, Basic). Языки программирования высокого уровня – языки машинно-независимые, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определённого класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках. К ним относятся Pascal, Basic, C и т.д.

Непроцедурное программирование появилось в начале 70-х гг. XX в.

Объектно ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. К объектно ориентированным (ОО) языкам относятся С++, Borland Delphi, Object Pascal.

При использовании декларативного языка программист указывает исходные информационные структуры, взаимосвязи между ними и то, какими свойствами должен обладать результат. При этом процедуру получения (алгоритм) программист не строит. В этих языках отсутствует понятие «оператор». Декларативные языки можно разделить на два семейства – логические(языки, основанные на системе правил) и функциональные.

В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задаётся как композиция других, более простых, те в свою очередь разлагаются на ещё более простые и т.д. Один из основных элементов в функциональных языках – рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет. Примером функционального языка является Лисп – язык искусственного интеллекта.

В логических языках программа вообще не описывает действий. Она задаёт данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задаётся самим языком. Классическим языком логического программирования считается Prolog. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста. Visual Prolog поддерживает не только декларативный, но и объектно ориентированный стиль программирования.

Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создаётся заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков web-страниц популярен JavaScript.

Из универсальных языков программирования сегодня наиболее популярны следующие: Бейсик (Basic), Паскаль (Pascal), Си++ (C++), Ява (Java).

Для каждого из этих языков программирования сегодня имеется немало систем программирования, выпускаемых различными фирмами и ориентированных на различные модели ПК и операционные системы. Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows:

- Basic: Microsoft Visual Basic;

- Pascal: Borland Delphi;

- C++: Borland C++Builder.

В последнее время стали появляться системы программирования на языке Java (Symantec Cafe, Microsoft J++ и др.), они позволяют создавать программы, вызываемые при просмотре web-страниц в глобальной электронной сети Internet.

Особым классом систем программирования являются системы для создания приложений типа клиент-сервер. Эти системы позволяют быстро создавать информационные системы для подразделений и даже крупных предприятий. В них содержатся средства для создания пользовательского интерфейса, описания процедур обработки данных, заготовки для выполнения типовых действий по обработке данных и т.д. Эти системы, как правило, позволяют работать с самыми различными СУБД – Oracle, Sybase, Microsoft SQL Server и др. Среди наиболее популярных систем такого рода можно назвать PowerBuilder фирмы Sybase, Delphi фирмы Borland, Visual Basic фирмы Microsoft. Разумеется, средства для создания приложений типа клиент-сервер имеются и в составе СУБД типа клиент-сервер (Oracle, Sybase и др.), но они ориентированы только на данную СУБД.

С точки зрения информационных технологий программирование имеет промышленный характер, который соответствует традиционным стадиям жизненного цикла программного продукта:

– анализ требований;

– разработка спецификаций;

– проектирование;

– макетирование;

– написание исходного текста;

– отладка;

– документирование;

– тестирование.