Языки и системы программирования
Приложения в распределенной архитектуре. Чтобы избежать недостатков рассмотренных архитектур, были придуманы специальные технологии, позволяющие создавать программу в виде набора компонентов, которые можно запускать на любых серверах, связанных сеть (компоненты как бы распределены по сети). Основное преимущество подобного подхода в том, что при выходе из строя любого компьютера специальные… Читать ещё >
Языки и системы программирования (реферат, курсовая, диплом, контрольная)
4.1. Развитие языков программирования Поколения языков программирования
Языки программирования принято делить на пять поколений.
В первое поколение входят языки, созданные в начале 50-х годов, когда только появились первые компьютеры. Это был первый язык ассемблера, созданный по принципу «одна инструкция — одна строка» .
Расцвет второго поколения языков программирования пришелся на конец 50-х — начало 60-х годов. Тогда был разработан символический ассемблер, в котором появилось понятие переменной. Он стал первым полноценным языком программирования. Благодаря его возникновению заметно возросли скорость разработки и надежность программ.
Появление третьего поколения языков программирования принято относить к 60-м годам. В это время возникли универсальные языки высокого уровня, с их помощью удается решать задачи из любых областей. Такие качества новых языков, как относительная простота, независимость от конкретного компьютера и возможность использования мощных синтаксических конструкций, позволили резко повысить производительность труда программистов. Понятная большинству пользователей структура этих языков привлекла к написанию небольших программ (как правило, инженерного или экономического характера) Подавляющее большинство языков этого поколения успешно применяется и сегодня.
С начала 70-х годов по настоящее время продолжается период языков четвертого поколения. Эти языки предназначены для реализации крупных проектов, повышения их надежности и скорости создания. Они ориентированы на специализированные области применения, где хороших результатов можно добиться, используя не универсальные, а проблемноориентированные языки, оперирующие конкретными понятиями узкой предметной области.
Как правило, в эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк исходного кода.
Рождение языков пятого поколения произошло в середине 90-х годов. К ним относятся также системы автоматического создания прикладных программ с помощью визуальных средств разработки, без знания программирования.
Главная идея, которая закладывается в эти языки, — возможность автоматического формирования результирующего текста на универсальных языках программирования (который потом требуется откомпилировать). Инструкции же вводятся в компьютер в максимально наглядном виде с помощью методов, наиболее удобных для человека, не знакомого с программированием.
Обзор языков программирования высокого уровня
Fortran (Фортран)
Это первый компилируемый язык, созданный в 50-е годы.
Программисты, разрабатывавшие программы исключительно на ассемблере, выражали серьезное сомнение в возможности появления высокопроизводительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлась эффективность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было принесено в жертву возможности получения эффективного машинного кода. Однако для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и заканчивая пакетами управления спутниками. Фортран продолжает активно использоваться во многих организациях. Имеется стандартная версия Фортрана HPF (High Performance Fortran) для параллельных суперкомпьютеров со множеством процессоров.
Cobol (Кобол).
Это компилируемый язык для применения в экономической области и решения бизнес — задач, разработанный в начале 60-х годов. Он отличается большой «многословностью» — его операторы иногда выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые эксплуатируются и сегодня.
Algol (Алгол). Компилируемый язык, созданный в 1960 г. Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения. В 1968 г. была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы.
Pascal (Паскаль)
Язык Паскаль, созданный в конце 70-х годов, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов.
Basic (Бейсик)
Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении.
С (Си)
Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix).
C++ (Си++)
Си++ - это объектно-ориентированное расширение языка Си, разработан в 1980 г. В нем реализовано множество новых мощных возможностей, которые позволили резко повысить производительность труда программистов, однако создание сложных и надежных программ требует от разработчиков профессиональной подготовки высокого уровня.
Java (Ява)
Этот язык был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка — компиляция не в машинный код, а в платформнонезависимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора — виртуальной Java-машины JVM (Java Virtual Machine), версии которой созданы сегодня для любых платформ.
Особое внимание в развитии этого языка уделяется двум направлениям:
- § поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini);
- § созданию платформно — независимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans).
Пока недостаток этого языка — невысокое быстродействие.
Языки программирования баз данных
Эта группа языков отличается от алгоритмических языков, прежде всего решаемыми задачами. База данных — это файл (или группа файлов), представляющий собой упорядоченный набор записей, имеющих единообразную структуру и организованных по единому шаблону (как правило, в табличном виде). База данных может состоять из нескольких таблиц. Удобно хранить в базах данных различные сведения из справочников, картотек, журналов бухгалтерского учета и т. д. При работе с базами данных чаще всего требуется выполнять следующие операции:
Первые базы данных появились очень давно, как только появилась потребность в обработке больших массивов информации и выборки групп записей по определенным признакам. Для этого был создан структурированный язык запросов SQL (Structured Query Language). Он основан на мощной математической теории и позволяет выполнять эффективную обработку баз данных, манипулируя не отдельными записями, а группами записей.
Для управления большими базами данных и их эффективной обработки разработаны СУБД (Системы Управления Базами Данных).
Практически фактически в каждой СУБД помимо поддержки языка SQL имеется свой уникальный язык, ориентированный на особенности этой СУБД и не переносимый на другие системы.
Сегодня в мире насчитывается пять ведущих производителей СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas),.
Informix и Sybase. Их продукты нацелены на поддержку одновременной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах.
С появлением персональных компьютеров были созданы так называемые настольные СУБД. Родоначальником современных языков программирования баз данных для ПК принято считать СУБД dBase II, язык которой был интерпретируемым. Затем для него были созданы компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня похожие, но несовместимые версии языков семейства dBase реализованы в продуктах Visual FoxPro фирмы Microsoft и Visual dBase фирмы Inprise.
Языки программирования для Интернета
С активным развитием глобальной сети было создано немало популярных языков программирования, адаптированных специально для Интернета.
Все они отличаются характерными особенностями: языки являются интерпретируемыми, интерпретаторы для них распространяются бесплатно, а сами программы — в исходных текстах. Такие языки называют скриптязыками.
HTML. Общеизвестный язык для оформления документов. Он очень прост и содержит элементарные команды форматирования текста, добавления рисунков, задания шрифтов и цветов, организации ссылок и таблиц. Все Web-страницы написаны на языке HTML или используют его расширения.
Perl. В 80-х годах Ларри Уолл разработал язык Perl. Он задумывался как средство эффективной обработки больших текстовых файлов, генерации текстовых отчетов и управления задачами. По мощности Perl значительно превосходит языки типа Си. В него введено много часто используемых функций работы со строками, массивами, всевозможные средства преобразования данных, управления процессами, работы с системной информацией и др.
VRML. В 1994 г. был создан язык VRML для организации виртуальных трехмерных интерфейсов в Интернете. Он позволяет описывать в текстовом виде различные трехмерные сцены, освещение и тени, текстуры (покрытия объектов), вращать в любых направлениях, масштабировать, регулировать освещенность и т. д.
Языки моделирования
При создании программ и формировании структур баз данных нередко применяются формальные способы их представления — формальные нотации, с помощью которых можно визуально представить таблицы баз данных, поля, объекты программы и взаимосвязи между ними в системе, имеющей специализированный редактор и генератор исходных текстов программ на основе созданной модели. Такие системы называются CASE-системами. В них активно применяются нотации IDEF, а в последнее время все большее распространение получает UML.
Современные системы программирования Основы визуального программирования интерфейса
Один из тупиков или кризисов программирования, не так давно был связан с разработкой графического интерфейса пользователя. Программирование вручную всяких привычных пользователю окон, кнопок, меню, обработка событий мыши и клавиатуры, включение в программы изображений и звука требовало все больше и больше времени программиста.
В ряде случаев весь этот сервис начинал занимать до 80−90% объема программных кодов. Причем весь этот труд нередко пропадал почти впустую, поскольку через год — другой менялся общепринятый стиль графического интерфейса и все приходилось начинать заново.
Выход из этой ситуации обозначился благодаря двум подходам.
Первый — стандартизация многих функций интерфейса, благодаря чему появилась возможность использовать библиотеки, имеющиеся, например, в Windows. В итоге при смене стиля графического интерфейса (например, при переходе от Windows 3. x к Windows 95) приложения смогли автоматически приспосабливаться к новой системе без какого-либо перепрограммирования. Вторым революционным шагом явилось появление визуального программирования, возникшего в Visual Basic и нашедшего блестящее воплощение в Delphi и С++Builder фирмы Borland.
Визуальное программирование позволило свести проектирование пользовательского интерфейса к простым и наглядным процедурам, которые дают возможность за минуты или часы сделать то, на что ранее уходили месяцы работы.
Пример. В Delphi это выглядит следующим образом. Вы работаете в Интегрированной Среде Разработки Delphi, которая предоставляет Вам формы (в приложении их может быть несколько) на которых умещаются компоненты. Обычно это оконная форма, хотя могут быть и невидимые формы. На форму с помощью мыши переносятся и размещаются пиктограммы компонентов, имеющихся в библиотеках Delphi. С помощью простых манипуляций можно изменять размеры расположение этих компонентов. При этом все время в процессе проектирования видно результат — изображение формы и расположенных на ней компонентов. Результаты проектирования видно, даже не компилируя программу.
Основное достоинство заключается в том, что во время проектирования формы и размещения на ней компонентов, Delphi автоматически формирует коды программы, включая в нее соответствующие фрагменты, описывающие данный компонент. А затем в соответствующих диалоговых окнах пользователь может изменить заданные по умолчанию значения компонентов и, при необходимости написать обработчики каких-то событий. Фактически, проектирование сводится к размещению компонентов на форме, заданию некоторых их свойств и написанию, при необходимости, обработчиков событий.
Компоненты могут быть визуальные, видимые при работе приложения, и невизуальные, выполняющие те или иные служебные функции. Визуальные компоненты сразу видны на экране в процессе проектирования в таком же виде, в каком их увидит пользователь во время выполнения приложения.
В библиотеки визуальных компонентов Delphi включено множество типов компонентов и их номенклатура очень быстро расширяется от версии к версии. Имеющегося уже сейчас вполне достаточно, чтобы построить практически любое самое замысловатое приложение, не прибегая к созданию новых компонентов. При этом даже неопытный программист, может создавать приложения, которые выглядят профессионально.
Основные системы программирования
Из универсальных языков программирования сегодня наиболее популярны следующие: Бейсик (Basic), Паскаль (Pascal), Си++ (C++), Ява (Java).
Для каждого из этих языков программирования сегодня имеется * немало систем программирования, выпускаемых различными фирмами и ориентированных на различные модели ПК и операционные системы.
Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows:
- § Basic: Microsoft Visual Basic;
- § Pascal: Borland Delphi;
- § C++: Borland C++Bulider;
- § Java: Symantec Cafe.
Для разработки серверных и распределенных приложений можно использовать систему программирования Microsoft Visual C++, продукты фирмы Borland, практически любые средства программирования на Java.
Архитектура программных систем
В то время как большинство автономных приложений — офисные программы, среды разработки, системы подготовки текстов и изображений — выполняются на одном компьютере, крупные информационные комплексы (например, система автоматизации предприятия) состоят из десятков и сотен отдельных программ, которые взаимодействуют друг с другом по сети, выполняясь на разных компьютерах. В таких случаях говорят, что они работают в различной программной архитектуре.
- 1) Автономные приложения. Работают на одном компьютере.
- 2) Приложения в файл-серверной архитектуре. Компьютеры пользователей системы объединены в сеть, при этом на каждом из них (на клиентском месте) запущены копии одной и той же программы, которые обращаются за данными к серверу, который хранит файлы, одновременно доступные всем пользователям (как правило, это базы данных). Сервер обладает повышенной надежностью, высоким быстродействием, большим объемом памяти, на нем установлена специальная серверная версия операционной системы. При одновременном обращении нескольких программ к одному файлу, например, с целью его обновления, могут возникнуть проблемы, связанные с неоднозначностью определения его содержимого. Поэтому каждое изменение общедоступного файла выделяется в транзакцию (элементарную операцию по обработке данных, имеющую фиксированные начало, конец (успешное или неуспешное завершение) и ряд других характеристик). Особенность этой архитектуры в том, что все вычисления выполняются на клиентских местах, что требует наличия на них достаточно производительных ПК (это так называемые системы с толстым клиентом — программой, которая выполняет всю обработку получаемой от сервера информации).
- 3) Приложения в клиент-серверной архитектуре. Эта архитектура похожа на предыдущую, только сервер помимо простого обеспечения одновременного доступа к данным, способен еще выполнять программы, которые берут на себя определенный объем вычислений (в файл-серверной архитектуре он реализуется полностью на клиентских установках). Благодаря этому удается повысить общую надежность системы, так как сервер работает значительно более устойчиво, чем ПК, и снять лишнюю нагрузку с клиентских мест, на которых удается использовать. Запускаемые на них приложения осуществляют небольшие объемы вычислений, а иногда занимаются только отображением получаемой от сервера информации, поэтому они называются тонкими клиентами.
- 4) Приложения в многозвенной архитектуре. Недостаток предыдущей архитектуры в том, что резко возрастает нагрузка на сервер, а если он выходит из строя, то работа всей системы останавливается. Поэтому в систему добавляется так называемый сервер приложений, на котором выполняется вся вычислительная работа. Другой сервер баз данных обрабатывает запросы пользователей, на третьем может быть установлена специальная программа — монитор транзакций, которая оптимизирует обработку транзакций и балансирует нагрузку на серверы. В большинстве практических случаев все серверы соединены последовательно, и выход из строя одного звена если и не останавливает всю работу, то по крайней мере, снижает производительность системы.
- 5) Приложения в распределенной архитектуре. Чтобы избежать недостатков рассмотренных архитектур, были придуманы специальные технологии, позволяющие создавать программу в виде набора компонентов, которые можно запускать на любых серверах, связанных сеть (компоненты как бы распределены по сети). Основное преимущество подобного подхода в том, что при выходе из строя любого компьютера специальные программымониторы, которые следят за корректностью работы, сразу перезапускают временно пропавший компонент на другом компьютере. При этом общая надежность всей системы становится очень высокой, а вычислительная загрузка распределяется между серверами оптимальным образом. Доступ к возможностям любого компонента, предназначенного для общения с пользователем, осуществляется с произвольного клиентского места. Так как все вычисления происходят на серверах, появляется возможность создавать сверхтонкие клиенты — программы только отображающие получаемую из сети информацию и требующие минимальных компьютерных ресурсов. Благодаря этому доступ к компонентной системе возможен не только с ПК, но и с небольших мобильных устройств. Частный случай компонентного подхода — доступ к серверным приложениям из браузеров через Интернет.
Сегодня наиболее популярны три компонентные технологии: CORBA консорциума OMG, Java Beans компании Sun, СОМ+ корпорации Microsoft.
Эти технологии будут определять развитие информационной индустрии в ближайшие десятилетия.