4.11.1. Системы программирования


Интегрированные системы программирования. Для создания программы нужны текстовый редактор; компилятор; редактор связей; библиотеки функций.

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

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

Среды быстрого проектирования. В последние несколько лет в программировании (особенно в программировании для операционной системы Windows) наметился так называемый визуальный подход. До этого серьезным препятствием для разработки графических приложений была сложность создания различных элементов управления и контроль за их работой. Достаточно взглянуть на окно любой Windows-программы. В нем имеется множество стандартных элементов управления (кнопки, пункты меню, списки, переключатели и т. д.). Очень трудоемко вручную описывать процесс создания этих элементов в соответствии с требованиями Windows, на глазок определять координаты, отслежи­вать их состояние с помощью специальных команд. Например, для простой про­граммы, складывающей два числа, потребуется один оператор (одна строка исходного текста) для выполнения нужного вычисления и сотни строк кода для подготовки приложения к работе в Windows, создания кнопки и пары полей ввода.

Этот процесс автоматизирован в средах быстрого проектирования (Rapid Application Development, RAD-среды). Все необходимые элементы оформления и управления создаются и обслуживаются не путем ручного программирования, а с помощью готовых визуальных компонентов, которые с помощью мыши “перетаскиваются” в проектируемое окно. Их свойства и поведение затем настраиваются с помощью простых редакторов, визуально показывающих характеристики соответствующих элементов. При этом вспомогательный исходный текст программы, ответственный за создание и работу этих элементов, генерируется RAD-средой автоматически, что позволяет сосредоточиться только на логике решаемой задачи. В результате про­граммирование во многом заменяется на проектирование – подобный подход назы­вается еще визуальным программированием.

Компоненты достаточно легко создавать самостоятельно, поэтому в мире сегодня распространяются тысячи бесплатных и платных компонентов для наиболее извест­ных RAD-сред, из них формируются библиотеки компонентов – объектные репозитории. Компоненты выступают в роли “строительных кирпичиков”, позволяющих собирать готовое приложение с богатыми возможностями, написав всего десяток строк исходного кода, и такой компонентный подход к созданию программ считается очень перспективным, потому что без лишних усилий и на законных основаниях допускает повторное использование чужого труда.

Архитектура программных систем. В то время как большинство автономных приложений: офисные программы, среды разработки, системы подготовки текстов и изображений — выполняются на одном компьютере, крупные информационные комплексы (например, система автома­тизации предприятия) состоят из десятков и сотен отдельных программ, которые взаимодействуют друг с другом по сети, выполняясь на разных компьютерах. В таких случаях говорят, что они работают в различной программной архитектуре. Она делится на следующие группы.

Автономные приложения. Работают на одном компьютере.

Приложения в файл-серверной архитектуре. Компьютеры пользователей системы объединены в сеть, при этом на каждом из них (на клиентском месте) запущены копии одной и той же программы, которые обращаются за данными к серверу – специальному компьютеру, который хранит файлы, одновременно доступные всем пользователям (как правило, это базы данных). Сервер обладает повышенной надеж­ностью, высоким быстродействием, большим объемом памяти, на нем установлена специальная серверная версия операционной системы.

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

Особенность этой архитектуры в том, что все вычисления выполняются на клиент­ских местах, что требует наличия на них достаточно производительных ПК (это так называемые системы с толстым клиентом – программой, которая выполняет всю обработку получаемой от сервера информации).

Приложения в клиент-серверной архитектуре. Эта архитектура похожа на предыду­щую, только сервер помимо простого обеспечения одновременного доступа к данным способен еще выполнять программы (обычно выполняются СУБД — тогда сервер называется сервером баз данных), которые берут на себя определенный объем вычис­лений (в файл-серверной архитектуре он реализуется полностью на клиентских местах). Благодаря этому удается повысить общую надежность системы, так как сервер работает значительно более устойчиво, чем ПК, и снять лишнюю нагрузку с клиентских мест, на которых удается использовать дешевые компьютеры. Запускае­мые на них приложения реально осуществляют небольшие объемы вычислений, а иногда занимаются только отображением получаемой от сервера информации, поэтому они называются тонкими клиентами.

Приложения в многозвенной архитектуре. Недостаток предыдущей архитектуры в том, что резко возрастает нагрузка на сервер, а если он выходит из строя, то работа всей системы останавливается. Поэтому в некоторых случаях в систему добавляется так называемый сервер приложений, на котором выполняется вся вычислительная работа. Другой сервер баз данных обрабатывает запросы пользователей, на третьем может быть установлена специальная программа — монитор транзакций, которая оптимизирует обработку транзакций и балансирует нагрузку на серверы. В боль­шинстве практических случаев все серверы соединены последовательно – позвенно, и выход из строя одного звена если и не останавливает всю работу, то по крайней мере резко снижает производительность системы.

Приложения в распределенной архитектуре. Чтобы избежать недостатков рассмот­ренных архитектур, были придуманы специальные технологии, позволяющие созда­вать программу в виде набора компонентов, которые можно запускать на любых серверах, связанных в сеть (компоненты как бы распределены  по сети). Основное преимущество подобного подхода в том, что при выходе из строя любого компью­тера специальные программы-мониторы, которые следят за корректностью работы компонентов и позволяют им “переговариваться” между собой, сразу перезапус­кая временно пропавший компонент на другом компьютере. При этом общая надеж­ность всей системы становится очень высокой, а вычислительная загрузка распре­деляется между серверами оптимальным образом. Доступ к возможностям любого компонента, предназначенного для общения с пользователем, осуществляется с произвольного клиентского места. При этом, так как все вычисления происходят на серверах, появляется возможность создавать сверхтонкие клиенты – программы, только отображающие получаемую из сети информацию и требующие минимальных компьютерных ресурсов. Благодаря этому доступ к компонентной системе возможен не только с ПК, но и с небольших мобильных устройств.

Частный случай компонентного подхода – доступ к серверным приложениям из броузеров через Интернет.

Сегодня наиболее популярны три компонентные технологии – CORBA консорциума OMG, Java Beans компании Sun и СОМ+ корпорации Microsoft. Эти технологии будут определять развитие информационной индустрии в ближайшие десятилетия.

Основные системы программирования. Из универсальных языков программирования сегодня наиболее популярны сле­дующие:

  • Бейсик (Basic) — для освоения требует начальной подготовки (общеобразовательная школа);
  • Паскаль (Pascal) — требует специальной подготовки (школы с углубленным изуче­нием предмета и общетехнические ВУЗы);
  • Си++ (C++), Ява (Java) — требуют профессиональной подготовки (специализи­рованные средние и высшие учебные заведения).

Для каждого из этих языков программирования сегодня имеется немало систем программирования, выпускаемых различными фирмами и ориентированных на различные модели ПК и операционные системы. Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows: Basic: Microsoft Visual Basic; Pascal: Borland Delphi C++; Borland C++ ;Bulider Java; Symantec Cafe. 

Для разработки серверных и распределенных приложений можно использовать систему программирования Microsoft Visual C++, продукты фирмы Inprise под маркой Borland, практически любые средства программирования на Java.