Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Razdel_13_Osn_alg_i_i_progr_ya_11_05_10

.pdf
Скачиваний:
22
Добавлен:
09.04.2015
Размер:
1.98 Mб
Скачать

Часть 13. Основы алгоритмизации и программирования

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

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

нейшими требованиями становятся компактность, быстродействие и воз-

можность прямого доступа к аппаратным ресурсам. В некоторых областях,

например в машинной графике, на языке ассемблера пишутся библиотеки,

эффективно реализующие требующие интенсивных вычислений алгорит-

мы обработки изображений.

Языки программирования высокого уровня значительно ближе и по-

нятнее человеку, нежели компьютеру. Особенности конкретных компью-

терных архитектур в них не учитываются, поэтому создаваемые програм-

мы на уровне исходных текстов легко переносимы на другие платформы,

для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значи-

тельно проще, а ошибок при создании программ допускается гораздо меньше.

1.1.5Поколения языков программирования

Языки программирования принято делить на пять поколений.

В первое поколение входят языки, созданные в начале 50-х годов, ко-

гда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу «одна инструкция — одна строка».

Расцвет второго поколения языков программирования пришелся на конец 50-х — начало 60-х годов. Тогда был разработан символический ас-

семблер, в котором появилось понятие переменной. Он стал первым пол-

ноценным языком программирования. Благодаря его возникновению за-

метно возросли скорость разработки и надежность программ.

11

Часть 13. Основы алгоритмизации и программирования

Появление третьего поколения языков программирования принято относить к 60-м годам. В это время родились универсальные языки высо-

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

кие качества новых языков, как относительная простота, независимость от конкретного компьютера и возможность использования мощных синтакси-

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

ков привлекла к написанию небольших программ (как правило, инженер-

ного или экономического характера) значительное число специалистов из некомпьютерных областей. Подавляющее большинство языков этого по-

коления успешно применяется и сегодня.

С начала 70-х годов по настоящее время продолжается период язы-

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

блемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. Как правило, в эти языки встраиваются мощ-

ные операторы, позволяющие одной строкой описать такую функциональ-

ность, для реализации которой на языках младших поколений потребова-

лись бы тысячи строк исходного кода.

Рождение языков пятого поколения произошло в середине 90-х го-

дов. К ним относятся также системы автоматического создания приклад-

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

граммирования. Главная идея, которая закладывается в эти языки, — воз-

можность автоматического формирования результирующего текста на универсальных языках программирования (который потом требуется от-

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

12

Часть 13. Основы алгоритмизации и программирования

1.1.6 Обзор языков программирования высокого уровня

FORTRAN (Фортран). Это первый компилируемый язык, создан-

ный Джимом Бэкусом в 50-е годы. Программисты, разрабатывавшие про-

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

поэтому основным критерием при разработке компиляторов Фортрана яв-

лялась эффективность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было принесено в жертву возможности получения эффективного машинного кода. Однако для этого языка было создано огромное количе-

ство библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно использо-

ваться во многих организациях. Имеется стандартная версия Фортрана

HPF(High Performance Fortran) для параллельных суперкомпьютеров со множеством процессоров.

COBOL (Кобол). Это компилируемый язык для применения в эко-

номической области и решения бизнес-задач, разработанный в начале 60-х

годов. Он отличается большой «многословностью» — его операторы ино-

гда выглядят как обычные английские фразы. В Коболе были реализованы очень мощные средства работы с большими объемами данных, хранящи-

мися на различных внешних носителях. На этом языке создано очень мно-

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

боле.

Algol (Алгол). Компилируемый язык, созданный в 1960 году. Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения. В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программиро-

13

Часть 13. Основы алгоритмизации и программирования

вания, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы.

Pascal (Паскаль). Язык.Паскаль, созданный в конце 70-х годов ос-

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

Basic (Бейсик). Для этого языка имеются и компиляторы, и интер-

претаторы, а по популярности он занимает первое место в мире. Он созда-

вался в 60-х годах в качестве учебного языка и очень прост в изучении.

С (Си). Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера,

чтобы иметь возможность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора.

Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операци-

онных систем (Unix).

C++ (Си++). Си++ — это объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Множество но-

вых мощных возможностей, позволивших резко повысить производитель-

ность программистов, наложилось на унаследованную от языка Си опреде-

ленную низкоуровневость, в результате чего создание сложных и надеж-

ных программ потребовало от разработчиков высокого уровня профессио-

нальной подготовки.

Java (Джава, Ява). Этот язык был создан компанией Sun в начале

90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возмож-

ностей. Но главная особенность этого языка — компиляция не в машин-

ный код, а в платформно-независимый байткод (каждая команда занима-

14

Часть 13. Основы алгоритмизации и программирования

ет один байт). Этот байт-код может выполняться с помощью интерпрета-

тора — виртуальной Java-машины JVM (Java Virtual Machine), версии ко-

торой созданы сегодня для любых платформ. Благодаря наличию множе-

ства Java-машин программы Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода. Особое внимание в развитии этого языка уделяется двум направлениям: поддержке всевоз-

можных мобильных устройств и микрокомпьютеров, встраиваемых в бы-

товую технику (технология Jini) и созданию платформно-независимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans). Пока основной недостаток этого языка — невысокое быстродей-

ствие, так как язык Ява интерпретируемый.

С# (Си Шарп). В конце 90-х годов в компании Microsoft под руко-

водством Андерса Хейльсберга был разработан язык С#. В нем воплоти-

лись лучшие идеи Си и Си++, а также достоинства Java. Правда, С#, как и другие технологии Microsof ориентирован на платформу Windows. Язык С#

предназначен для быстрой разработки .Net-приложений, и его реализация в системе Microsoft Visual Studio .NET содержит множество особенностей,

привязывающих С# к внутренней архитектуре Windows и платформы .NET.

1.1.7Языки программирования баз данных

Эта группа языков отличается от алгоритмических языков прежде всего решаемыми задачами. База данных — это файл (или группа файлов),

представляющий собой упорядоченный набор записей, имеющих единооб-

разную структуру и организованных по единому шаблону (как правило, в

табличном виде). База данных может состоять из нескольких таблиц.

Удобно хранить в базах данных различные сведения из справочников, кар-

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

создание/модификация свойств/удаление таблиц в базе данных;

поиск, отбор, сортировка информации по запросам пользователей;

15

Часть 13. Основы алгоритмизации и программирования

добавление новых записей;

модификация существующих записей;

удаление существующих записей.

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

ванный язык запросов SQL (Structured Query Language). Он основан на мощной математической теории и позволяет выполнять эффективную об-

работку баз данных, манипулируя не отдельными записями, а группами за-

писей. Для управления большими базами данных и их эффективной обра-

ботки разработаны СУБД (Системы Управления Базами Данных). Практи-

чески в каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык, ориентированный на особенности этой СУБД и не пере-

носимый на другие системы. Сегодня в мире насчитывается три ведущих производителя СУБД: Microsoft (SQL Server), IBM (DB2) и Oracle. Их про-

дукты нацелены на поддержку одновременной работы тысяч пользовате-

лей в сети, а базы данных могут храниться в распределенном виде на не-

скольких серверах. В каждой из этих СУБД реализован собственный диа-

лект SQL, ориентированный на особенности конкретного сервера, поэтому

SQL-пpoгpaммы, подготовленные для разных СУБД, друг с другом, как правило, несовместимы. С появлением персональных компьютеров были созданы так называемые настольные СУБД. Родоначальником современ-

ных языков программирования баз данных для ПК принято считать СУБД dBase II, язык которой был интерпретируемым. Затем для него были со-

зданы компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня самой распространенной настольной СУБД стала система Microsoft Access.

1.1.8Языки программирования для Интернета

С активным развитием глобальной сети было создано немало реали-

заций популярных языков программирования, адаптированных специально

16

Часть 13. Основы алгоритмизации и программирования

для Интернета. Все они отличаются характерными особенностями: языки являются интерпретируемыми, интерпретаторы для них распространяются бесплатно, а сами программы — в исходных текстах. Такие языки называ-

ют скрипт-языками.

HTML. Общеизвестный язык для оформления документов. Он очень прост и содержит элементарные команды форматирования текста, добав-

ления рисунков, задания шрифтов и цветов, организации ссылок и таблиц.

Все Wefe-страницы написаны на языке HTML или используют его расши-

рения.

Perl. В 80-х годах Ларри Уолл разработал язык Perl. Он задумывался как средство эффективной обработки больших текстовых файлов, генера-

ции текстовых отчетов и управления задачами. По мощности Perl значи-

тельно превосходит языки типа Си. В него введено много часто использу-

емых функций работы со строками, массивами, всевозможные средства преобразования данных, управления процессами, работы с системной ин-

формацией и др.

РНР. Расмус Лердорф, активно использовавший Perl-скрипты, в 1995 году решил улучшить этот язык, упростив его и дополнив встроен-

ными средствами доступа к базам данных. В результате появилась разра-

ботка Personal Contents Page/Forms Interpreter (PHP/FI). Уже через пару лет программы на ее основе использовались на 50 тыс. сайтов. В 1997 году ее значительно усовершенствовали Энди Гутмане и Зив Сураски, и под названием РНР 3.0 этот язык быстро завоевал популярность у создателей динамических сайтов во всем мире.

Тсl/Тк. В конце 80-х годов Джон Аустираут придумал популярный скрипт-язык Тсl и библиотеку Tk. В Tel он попытался воплотить видение идеального скрипт-языка. Язык Tcl ориентирован на автоматизацию ру-

тинных процессов и состоит из мощных команд, предназначенных для ра-

боты с абстрактными нетипизированными объектами. Он независим от ти-

17

Часть 13. Основы алгоритмизации и программирования

па системы и при этом позволяет создавать программы с графическим ин-

терфейсом.

VRML. В 1994 году был создан язык VRML для организации вирту-

альных трехмерных интерфейсов в Интернете. Он позволяет описывать в текстовом виде различные трехмерные сцены, освещение и тени, текстуры

(покрытия объектов), создавать свои миры, путешествовать по ним, «обле-

тать» со всех сторон, вращать в любых направлениях, масштабировать, ре-

гулировать освещенность и т. д.

XML. В августе 1996 года WWW-консорциум, ответственный за стандарты на Интернет-технологий, приступил к подготовке универсаль-

ного языка разметки структуры документов, базировавшегося на достаточ-

но давно созданной в IBM-технологии SGML. Новый язык получил назва-

ние XML. Сегодня он служит основой множества системных, сетевых и прикладных приложений, позволяя представлять в прозрачном для пользо-

вателей и программ текстовом виде различные аспекты внутренней струк-

туры иерархически организованных документов. В недалеком будущем он может стать заменой HTML.

1.1.9Языки моделирования

При создании программ и формировании структур баз данных не-

редко применяются формальные способы их представления — формаль-

ные нотации, с помощью которых можно визуально представить (изобра-

зить с помощью мыши) таблицы баз данных, поля, объекты программы и взаимосвязи между ними в системе, имеющей специализированный редак-

тор и генератор исходных текстов программ на основе созданной модели.

Такие системы называются CASE-системами. В них активно применяются нотации IDEF, а в последнее время все большую популярность завоевыва-

ет язык графического моделирования UML.

18

Часть 13. Основы алгоритмизации и программирования

1.1.10Прочие языки программирования

PL/I. (ПЛ/1). В середине 60-х годов компания /SM решила взять все лучшее из языков Фортран, Кобол и Алгол. В результате в 1964 году на свет появился новый компилируемый язык программирования, который получил название Programming Language One. В этом языке было реализо-

вано множество уникальных решений, полезность которых удается оце-

нить только спустя 33 года, в эпоху крупных программных систем. По своим возможностям ПЛ/1 значительно мощнее многих других языков

(Си, Паскаля). Например, в ПЛ/1 присутствует уникальная возможность указания точности вычислений — ее нет даже у Си++ и Явы. Этот язык и сегодня продолжает поддерживаться компанией IBM.

Smalltalk (Смолток). Работа над этим языком началась в 1970 году в исследовательской лаборатории корпорации XEROX, а закончились спустя

10 лет, воплотившись в окончательном варианте интерпретатора

SMALLTALK-80. Данный язык оригинален тем, что его синтаксис очень компактен и базируется исключительно на понятии объекта. В этом языке отсутствуют операторы или данные. Все, что входит в Смолток, является объектами, а сами объекты общаются друг с другом исключительно с по-

мощью сообщений (например, появление выражения 1+1 вызывает посыл-

ку объекту I сообщения «+», то есть «прибавить», с параметром 1, который считается не числом-константой, а тоже объектом). Больше никаких управляющих структур, за исключением «оператора» ветвления (на самом деле функции, принадлежащей стандартному объекту), в языке нет, хотя их можно очень просто смоделировать. Сегодня версия VisualAge for Smalltalk активно развивается компанией IBM.

LISP (Лисп). Интерпретируемый язык программирования, создан-

ный в 1960 году Джоном Маккарти. Ориентирован на структуру данных в форме списка и позволяет организовывать эффективную обработку боль-

ших объемов текстовой информации.

19

Часть 13. Основы алгоритмизации и программирования

Prolog (Пролог). Создан в начале 70-х годов Аланом Колмероэ. Про-

грамма на этом языке, в основу которого положена математическая модель теории исчисления предикатов, строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пы-

таться доказать с помощью введенных правил. Человек только описывает структуру задачи, а внутренний «мотор» Пролога сам ищет решение с по-

мощью методов поиска и сопоставления.

Ada (Ада). Назван по имени леди Огасты Ады Байрон, дочери ан-

глийского поэта Байрона и его отдаленной родственницы Анабеллы Милб-

энк. В 1980 году сотни экспертов Министерства обороны США отобрали из 17 вариантов именно этот язык, разработанный небольшой группой под руководством Жана Ишбиа. Он удовлетворил на то время все требования Пентагона, а к сегодняшнему дню в его развитие вложены десятки милли-

ардов долларов. Структура самого языка похожа на Паскаль. В нем имеют-

ся средства строгого разграничения доступа к различным уровням специ-

фикаций, доведена до предела мощность управляющих конструкций.

Forth (Форт). Результат попытки Чарльза Мура в 70-х годах создать язык, обладающий мощными средствами программирования, который можно эффективно реализованным на компьютерах с небольшими объе-

мами памяти, а компилятор мог бы выдавать очень быстрый и компактный код, то есть служил заменой ассемблеру. Однако сложности восприятия программного текста, записанного в непривычной форме, сильно затруд-

няли поиск ошибок, и с появлением Си язык Форт оказался забытым

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

Средства создания программ

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

1. Текстовый редактор. Так как текст программы записывается с помощью ключевых слов, обычно происходящих от слов английского язы-

ка, и набора стандартных символов для записи всевозможных операций, то

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]