Средства для создания приложений – совокупность языков и систем программирования, инструментальные среды пользователя, а также различные программные компоненты для отладки и поддержки создаваемых программ.
Язык программирования – это формализованный язык для описания алгоритма решения задач на компьютере. Языки программирования можно условно разделить на следующие классы:
– машинные языки – это языки, воспринимаемые аппаратной частью компьютера (машинные коды);
– машинно-ориентированные языки, отражающие структуру конкретного типа компьютера (ассемблер);
– процедурно-ориентированные языки – это языки, в которых имеется возможность описания программы как совокупности процедур, или подпрограмм (Си, Паскаль и др.);
– проблемно-ориентированные языки, предназначенные для решения задач определенного класса (Лисп, Пролог).
Интегрированные среды разработки программ объединяют набор средств для их комплексного применения на технологических этапах создания программы.
CASE-технология (CASE – Computer-Aided System Engineering) – программный комплекс, автоматизирующий весь технологический процесс анализа, проектирования, разработки и сопровождения сложных программных систем.
Средства CASE-технологий делятся на:
– встроенные в систему реализации – все решения по проектированию и реализации привязки к выбранной СУБД;
– независимые от системы реализации – все решения по проектированию, ориентированные на унификацию (определение) начальных этапов жизненного цикла программы и средств их документирования, обеспечивают большую гибкость в выборе средств реализации.
Основное достоинство CASE-средств – это поддержка коллективной работы над проектом за счет возможности работы в локальной сети разработчиков, экспорта (импорта) любых фрагментов проекта, организованного управления проектами.
В некоторых CASE-системах поддерживается кодогенерация программ – создание каркаса программ и создание полного продукта.
Системы программирования включают:
– компилятор (транслятор);
– интегрированную среду разработки программ (не всегда);
– отладчик;
– средства оптимизации кода программ;
– набор библиотек;
– редактор связей;
– сервисные средства (утилиты для работы с библиотеками, текстовыми и двоичными файлами);
– справочные системы;
– систему поддержки и управления продуктами программного комплекса.
Компилятор транслирует всю программу без ее выполнения.
Трансляторы (интерпретаторы) выполняют пооперационную обработку и выполнение программы.
Отладчики (Debugger) – специальные программы, предназначенные для трассировки и анализа выполнения других программ. Трассировка – это обеспечение выполнения в пооператорном варианте.
На рис. 6.2 представлена классификация пакетов прикладных программ (ППП).
Для некоторых предметных областей возможна типизация функций управления, структуры данных и алгоритмов обработки. Это вызвало разработку значительного типа ППП одинакового функционального назначения.
Проблемно-ориентированные ППП:
– ППП автоматизированного бухгалтерского учета;
– ППП финансовой деятельности;
– ППП управления персоналом;
– ППП управления производством;
– банковские информационные системы и т.п.
ППП автоматизированного проектирования предназначены для поддержки работы конструкторов и технологов, связанных с разработкой чертежей, схем, графическим моделированием и конструированием. Отличительной особенностью этого класса
ППП являются высокие требования к аппаратному обеспечению, наличие библиотек встроенных функций, объектов, интерфейсов с графическими системами и БД (AutoCAD).
ППП общего назначения – системы управления базами данных (СУБД), обеспечивающие организацию и хранение локальных БД на автономно работающих компьютерах либо централизованное хранение БД на файл-сервере и сетевой доступ к ним. В современных СУБД содержатся элементы CASE-технологии процесса проектирования, в частности:
– визуализирована схема БД;
– осуществлена автоматическая поддержка целостности БД при различных видах обработки (включение, удаление, модификация);
– предоставляются так называемые мастера, обеспечивающие поддержку процесса проектирования;
– созданы шаблоны (прототипы) структур БД, отчетов, форм и т.д.
ППП специального назначения:
– офисные ППП. Данный класс охватывает программы, обеспечивающие ориентационное управление деятельностью офиса;
– органайзеры (планировщики) – ПО для планирования рабочего времени, составления протоколов встреч, расписаний, ведения записей и телефонной книжки. В их состав входят калькулятор, записная книжка, часы, календарь и т. п.;
– программы-переводчики, средства проверки орфографии, распознавания текста (Tiger – система распознавания русского языка; Stylus Lingvo Office, содержащий Fine Reader; Stylus для Windows – переводчик на выбранный язык; корректор орфографии Lingvo Corrector и резидентный словарь Lingvo).
Методо-ориентированные ППП – данный класс охватывает программные продукты, обеспечивающие, независимо от предметной области и функции информационных систем, математические, статистические и другие методы решения задач. Наиболее распространены методы математического программирования, решения дифференциальных уравнений, имитационного моделирования, исследования операций (Storm, SYSTAT, SAS и др.).
Программирование
Программирование – это совокупность процессов, связанных с разработкой программ и их реализацией. К указанным процессам относят все технические операции, необходимые для создания программ, включая анализ требований, все стадии разработки, а также реализации в виде готового программного продукта.
Классификация видов программирования по назначению или способу написания программ:
1. Прикладное программирование – разработка и отладка программ для конечных пользователей (бухгалтерских, обработки текстов и т.д.).
2. Системное программирование – разработка средств общего программного обеспечения, в том числе ОС, вспомогательных программ пакетов программ общесистемного назначения: АСУ, СУБД и т.д.
3. Декларативное программирование – метод программирования, предназначенный для решения задач искусственного интеллекта (используется язык Пролог).
4. Объектно-ориентированное программирование – метод программирования, основанный на использовании концепции объекта, абстрагирующего конкретные его реализации в предметной области (используется в ряде языков (Си++, Java, Object Lisp, Смолток и др.).
5. Параллельное программирование – разработка программ, обеспечивающих одновременное выполнение операций, связанных с обработкой данных.
6. Процедурное программирование – метод, в соответствии с которым программы пишутся как перечни последовательно выполняемых команд.
7. Функциональное программирование – метод программирования, основанный на разбиении алгоритма решения задачи на отдельные функциональные модули, а также описания их связей и характера взаимодействия.
8. Эвристическое программирование – метод, основанный на моделировании мыслительной деятельности человека. Используется для решения задач, не имеющих строго формализованного алгоритма или связанных с неполнотой данных.
Инструментальная среда пользователя – это специальные средства, встроенные в пакеты прикладных программ, такие как:
– библиотека функций, процедур, объектов и методов обработки;
– макрокоманды;
– клавишные макросы;
– языковые макросы;
– конструкторы экранных форм и объектов;
– генераторы приложений;
– языки запросов высокого уровня;
– конструкторы меню и др.
Языки программирования
Языки программирования являются искусственными, в них синтаксис и семантика строго определены, поэтому они не допускают свободного толкования выражения, что характерно для естественного языка.
Язык программирования – формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
Язык программирования может быть представлен в виде набора спецификаций, определяющих его синтаксис и семантику.
Для многих широко распространенных языков программирования созданы международные стандарты. Специальные организации проводят регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.
Существует несколько подходов к определению семантики языков программирования.
Наиболее широко распространены разновидности следующих трех подходов: операционного, денотационного (математического) и деривационного (аксиоматического).
При описании семантики в рамках операционного подхода обычно исполнение конструкций языка программирования интерпретируется с помощью некоторой воображаемой (абстрактной) ЭВМ.
Деривационная семантика описывает последствия выполнения конструкций языка с помощью языка логики и задания пред- и постусловий.
Денотационная семантика оперирует понятиями, типичными для математики, – множества, соответствия, а также суждения, утверждения и др.
Языки программирования могут быть реализованы как компилируемые и интерпретируемые.
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполнимый модуль, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остается на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера – это интерпретатор машинного кода.
Для преобразования текста в последовательность машинных команд необходима промежуточная программа, называемая компилятором. На этапе компиляции производится распределение данных в ОЗУ, при этом вместо имен переменных подставляются относительные адреса ячеек, в которых распознаются данные. Абсолютные адреса данным присваивает операционная система при размещении программы в ОЗУ компьютера перед ее использованием.
Языки программирования по функциональному назначению делят на проблемно-ориентированные и универсальные.
Проблемно-ориентированные языки предназначены для решения специфических задач, например Фортран – язык для решения сложных научных и инженерных задач, Кобол – язык для решения экономических и коммерческих задач, Лисп – язык, используемый для решения задач искусственного интеллекта.
К универсальным языкам относятся Паскаль, Бейсик, Си, Си++, Java, а также современные средства среды визуального программирования Delphi, Visual Basic и др.
Языки программирования также классифицируются по методологии программирования, т.е. по совокупности основополагающих идей и подходов, определяющих модель представления данных и их обработки.
Язык программирования – это набор ключевых слов (словарь) и система правил (грамматических и синтаксических) для конструирования операторов, состоящих из групп или строк чисел, букв, знаков препинания и других символов, с помощью которых можно сообщить компьютеру набор команд.
Направления программирования: процедурное, объектно-ориентированное, структурное, модульное (компонентное), логическое (реляционное), функциональное, параллельное и др.
Основные языки программирования перечислены в табл. 6.1.
Таблица 6.1.