Учебник Информатика. Базовый курс. Симонович С.В.. С. В. Симоновичаинформатикабазовый курс2е издание
Скачать 17.96 Mb.
|
Поколения языков программирования Языки программирования принято делить на пять поколений. В первое поколение входят языки, созданные в начале 50-х годов, когда первые компьютеры только появились на свет. Это был первый язык ассемблера, созданный по принципу «одна инструкция — одна строка». Расцвет второго поколения языков программирования пришелся на конец 50-х — начало 60-х годов. Тогда был разработан символический ассемблер, в котором появилось переменной. Он стал первым полноценным языком програм- мирования. Благодаря его возникновению заметно возросли скорость разработки и надежность программ. Появление третьего поколения языков программирования принято относить к 60-м годам. В это время родились универсальные языки высокого уровня, с их помощью удается решать задачи из любых областей. Такие качества новых язы- ков, как относительная простота, независимость от конкретного компьютера и воз- можность использования мощных синтаксических конструкций, позволили резко повысить производительность труда программистов. Понятная большинству пользователей структура этих языков привлекла к написанию небольших программ (как правило, инженерного или экономического характера) значительное число специалистов из некомпьютерных областей. Подавляющее большинство языков этого поколения успешно применяется и сегодня. С начала 70-х годов по настоящее время продолжается период языков четвертого поколения. Эти предназначены для реализации крупных проектов, повы- шения их надежности и скорости создания. Они обычно ориентированы на специ- ализированные области где хороших результатов можно добиться, используя не универсальные, а проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. Как правило, в эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потре- бовались бы тысячи строк исходного кода. Рождение языков пятого поколения произошло в середине 90-х годов. К ним отно- сятся также системы автоматического создания прикладных программ с помощью визуальных средств разработки, без знания программирования. Главная идея, кото- рая закладывается в эти языки, — возможность автоматического формирования результирующего текста на универсальных языках программирования (который потом требуется откомпилировать). Инструкции же вводятся в компьютер в симально наглядном виде с помощью методов, наиболее удобных для человека, не знакомого с программированием. Обзор языков программирования высокого уровня FORTRAN (Фортран). Это первый компилируемый язык, созданный Джимом Бэкусом в 50-е годы. Программисты, разрабатывавшие программы исключительно на ассемблере, выражали серьезное сомнение в возможности появления высоко- производительного языка высокого уровня, поэтому основным критерием при раз- Языки программирования 5 7 3 работке компиляторов Фортрана являлась эффективность исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программиро- вания, удобство создания программ было принесено в жертву возможности полу- чения эффективного машинного кода. Однако для этого языка было создано огром- ное количество библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно исполь- зоваться во многих организациях, а сейчас ведутся работы над очередным стан- дартом Фортрана F2k, который появится в 2000 году. Имеется стандартная версия Фортрана Fortran) для параллельных суперкомпьютеров со множеством процессоров. COBOL (Кобол). Это компилируемый язык для применения в экономической области и решения бизнес-задач, разработанный в начале 60-х годов. Он отличается большой «многословностью» его операторы иногда выглядят как обычные анг- лийские фразы. В Коболе были реализованы очень мощные средства работы с боль- шими объемами данных, хранящимися на различных внешних носителях. На этом языке создано очень много приложений, которые активно эксплуатируются и сего- дня. Достаточно сказать, что наибольшую зарплату в США получают программи- сты на Коболе. Algol (Алгол). Компилируемый язык, созданный в году. Он был призван заме- нить Фортран, но из-за более сложной структуры не получил широкого распрост- ранения. В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы. Pascal (Паскаль). Язык Паскаль, созданный в конце 70-х годов основоположни- ком множества идей современного программирования Никлаусом Виртом, во мно- гом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании круп- ныхпроектов. Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в каче- стве учебного языка и очень прост в изучении. С (Си). Данный язык был создан в лаборатории и первоначально не рассматри- вался как массовый. Он планировался для замены ассемблера, чтобы иметь воз- можность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора. Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix). C++ (Си++). Си++ — это объектно-ориентированное расширение языка Си, создан- ное Бьярном Страуструпом в 1980 году. Множество новых мощных возможнос- тей, позволивших резко повысить производительность программистов, наложи- 5 7 4 Глава 20. Основы программирования лось на унаследованную от языка Си определенную в резуль- тате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки. Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка — компиляция не в машинный код, а в платформно-независимый байт- код команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора — Virtual версии которой созданы сегодня для любых платформ. Благодаря наличию мно- программы Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода, поэтому по популярности язык Ява сегодня занимает второе место в мире после Бейсика. Особое внимание в развитии этого языка уделяется двум направлениям: поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в быто- вую технику и созданию платформно-независимых программ- ных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами Beans). Пока основной недостаток этого языка — невысокое быстродействие, так как язык Ява интерпре- тируемый. С# (Си Шарп). В конце 90-х годов в компании Microsoft под руководством Андерса Хейльсберга был разработан язык С#. В нем воплотились лучшие идеи Си и Си++, а также Правда, С#, как и другие технологии ориенти- рован на Windows. Однако формально он не отличается от прочих уни- версальных языков, а корпорация даже планирует его стандартизацию. Язык С# предназначен для быстрой разработки и его реализация в сис- теме Microsoft Visual Studio содержит множество особенностей, привязываю- щих С# к внутренней архитектуре Windows и платформы Языки программирования баз данных Эта группа языков отличается от алгоритмических языков прежде всего решае- мыми задачами. База данных — это файл (или группа файлов), представляющий собой упорядоченный набор записей, имеющих единообразную структуру и органи- зованных по единому шаблону (как правило, в табличном виде). База данных может состоять из нескольких таблиц. Удобно хранить в базах данных различные сведе- ния из справочников, картотек, журналов бухгалтерского учета и т. д. При работе с базами данных чаще всего требуется выполнять следующие операции: • создание/модификация свойств/удаление таблиц в базе данных; • поиск, отбор, сортировка информации по запросам пользователей; • добавление новых записей; • модификация существующих записей; • удаление существующих записей. Языки программирования 5 7 5 Первые базы данных появились очень давно, как только появилась потребность в обработке больших массивов информации и выборки групп записей по опреде- ленным признакам. Для этого был создан структурированный язык запросов SQL Query Language). Он основан на мощной математической теории и позво- ляет выполнять эффективную обработку баз данных, манипулируя не отдельными записями, а группами записей. Для управления большими базами данных и их эффективной обработки разрабо- таны СУБД (Системы Управления Базами Данных). Практически в каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык, ориентиро- ванный на особенности этой и не переносимый на другие системы. Сегодня в мире насчитывается три ведущих производителя СУБД: Microsoft (SQL Server), IBM (DB2) Oracle. Их продукты нацелены на поддержку одновременной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах. В каждой из этих СУБД реализован собственный диалект SQL, ориентированный на особенности конкретного сервера, поэтому подготовленные для разных СУБД, друг с другом, как правило, несовместимы. С появлением персональных компьютеров были созданы так называемые настоль- ные СУБД. Родоначальником современных языков программирования баз данных для ПК принято считать СУБД dBase II, язык которой был интерпретируемым. Затем для него были созданы компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня самой распространенной настоль- ной СУБД стала система Microsoft Access. Языки программирования для Интернета С активным развитием глобальной сети было создано немало реализаций попу- лярных языков программирования, адаптированных специально для Интернета. Все они отличаются характерными особенностями: языки являются интерпретиру- емыми, интерпретаторы для них распространяются бесплатно, а сами программы — в исходных текстах. Такие языки называют скрипт-языками. HTML. Общеизвестный язык для оформления документов. Он очень прост и содер- жит элементарные команды форматирования текста, добавления рисунков, зада- ния шрифтов и цветов, организации ссылок и таблиц. Все написаны на языке HTML или используют его расширения. Perl. В 80-х годах Ларри Уолл разработал язык Perl. Он задумывался как средство эффективной обработки больших текстовых файлов, генерации текстовых отчетов и управления задачами. По мощности Perl значительно превосходит языки типа Си. В него введено много часто используемых функций работы со строками, мас- сивами, всевозможные средства преобразования данных, управления процессами, работы с системной информацией и др. Расмус Лердорф, активно использовавший в 1995 году решил улучшить этот язык, упростив его и дополнив встроенными средствами доступа к базам данных. В результате появилась разработка Personal Contents Page/Forms Interpreter Уже через пару лет программы на ее основе использовались на 50 тыс. сайтов. В 1997 году ее значительно усовершенствовали Энди и Глава 20. Основы программирования Зив Сураски, и под названием 3.0 этот язык быстро завоевал популярность у создателей динамических сайтов во всем мире. В конце 80-х годов Джон придумал популярный скрипт-язык и библиотеку В он попытался воплотить видение идеального скрипт- языка. Язык ориентирован на автоматизацию рутинных процессов и состоит из мощных команд, предназначенных для работы с абстрактными ными объектами. Он независим от типа системы и при этом позволяет создавать программы с графическим интерфейсом. VRML. В 1994 году был создан язык VRML для организации виртуальных трех- мерных интерфейсов в Интернете. Он позволяет описывать в текстовом виде раз- личные трехмерные сцены, освещение и тени, текстуры (покрытия объектов), созда- вать свои миры, путешествовать по ним, «облетать» со всех сторон, вращать в любых направлениях, масштабировать, регулировать освещенность и т. д. XML. В августе 1996 года ответственный за стандарты на Интернет-технологии, приступил к подготовке универсального языка разметки структуры документов, базировавшегося на достаточно давно созданной в нологии SGML. Новый язык получил название XML. Сегодня он служит основой множества системных, сетевых и прикладных приложений, позволяя представлять в прозрачном для пользователей и программ текстовом виде различные аспекты внутренней структуры иерархически организованных документов. В недалеком будущем он может стать заменой HTML. Языки моделирования При создании программ и формировании структур баз данных нередко применя- ются формальные способы их представления — формальные нотации, с помощью которых можно визуально представить (изобразить с помощью мыши) баз данных, поля, объекты программы и взаимосвязи между ними в системе, имею- щей специализированный редактор и генератор исходных текстов программ на основе созданной модели. Такие системы называются CASE-системами, В них активно применяются нотации а в последнее время все большую популяр- ность завоевывает язык графического моделирования UML. Прочие языки программирования PL/I В середине 60-х годов компания IBM решила взять все лучшее из языков Фортран, Кобол и Алгол. В результате в году на свет появился новый компилируемый язык программирования, который получил название Programming Language One. В этом языке было реализовано множество уникальных решений, полезность которых оценить только спустя 33 года, в эпоху крупных про- граммных систем. По своим возможностям ПЛ/1 значительно мощнее многих дру- гих языков (Си, Например, в ПЛ/1 присутствует уникальная возмож- ность указания точности вычислений — ее нет даже у Си++ и Явы. Этот язык и сегодня продолжает поддерживаться компанией IBM. Smalltalk (Смолток). Работа над этим языком началась в 1970 году в исследова- тельской лаборатории корпорации XEROX, а закончились спустя лет, воплотив- Языки программирования 5 7 7 шись в окончательном варианте интерпретатора SMALLTALK-80. Данный язык оригинален тем, что его синтаксис очень компактен и базируется исключительно на понятии объекта. В этом языке отсутствуют операторы или данные. Все, что входит в Смолток, является объектами, сами объекты общаются с другом исклю- чительно с помощью сообщений (например, появление выражения вызывает посылку объекту I сообщения «+», то есть «прибавить», с параметром 1, который считается не числом-константой, а тоже объектом). Больше никаких управляющих структур, за исключением «оператора» ветвления (на самом деле функции, принад- лежащей стандартному объекту), в языке нет, хотя их можно очень просто смодели- ровать. Сегодня версия Visual Age for Smalltalk активно развивается компанией IBM. LISP (Лисп). Интерпретируемый язык программирования, созданный в 1960 году Джоном Маккарти. Ориентирован на структуру данных в форме списка и позволяет организовывать эффективную обработку больших объемов текстовой информации. Prolog (Пролог). Создан в начале 70-х годов Аланом Колмероэ. Программа на этом языке, в основу которого положена математическая модель теории исчисления предикатов, строится из последовательности фактов и правил, а затем формулиру- ется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Человек только описывает структуру задачи, а внутренний «мотор» Про- лога сам ищет решение с помощью методов поиска и сопоставления. Ada (Ада). Назван по имени леди Огасты Ады Байрон, дочери английского поэта Байрона и его отдаленной родственницы Анабеллы Милбэнк. В 1980 году сотни экспертов Министерства обороны США отобрали из 17 вариантов именно этот язык, разработанный небольшой группой под руководством Жана Ишбиа. Он удов- летворил на то время все требования Пентагона, а к сегодняшнему дню в его разви- тие вложены десятки миллиардов долларов. Структура самого языка похожа на Пас- каль. В нем имеются средства строгого разграничения доступа к различным уровням спецификаций, доведена до предела мощность управляющих конструкций. Forth (Форт). Результат попытки Чарльза Мура в 70-х годах создать язык, облада- ющий мощными средствами программирования, который можно эффективно реали- зованным на компьютерах с небольшими объемами памяти, а компилятор мог бы выдавать очень быстрый и компактный код, то есть служил заменой ассемблеру. Однако сложности восприятия программного текста, записанного в непривычной форме, сильно затрудняли поиск ошибок, и с появлением Си язык Форт оказался забытым. Вопросы для самоконтроля 1. Что такое язык программирования? 2. В чем различие компиляторов и интерпретаторов? 3. Объясните термины «язык низкого уровня» и «язык высокого уровня». 4. Расскажите о поколениях языков программирования. 5. Какие языки программирования активно используются сегодня? 5 7 8 Глава 20. Основы 20.2. Системы программирования Средства создания программ В самом общем случае для создания программы на выбранном языке рования нужно иметь следующие компоненты. 1. Текстовый редактор. как текст программы записывается с помощью ключе- вых слов, обычно происходящих от слов английского языка, и набора стандарт- ных символов для записи всевозможных операций, то формировать этот текст можно в любом редакторе, получая в итоге текстовый файл исходным текс- том программы. Лучше использовать специализированные редакторы, кото- рые ориентированы на конкретный язык программирования и позволяют в процессе ввода текста выделять ключевые слова и идентификаторы разными цветами и шрифтами. Подобные редакторы созданы для всех популярных язы- ков и дополнительно могут автоматически проверять правильность синтаксиса программы непосредственно во время ее ввода. 2. Исходный текст с помощью программы -компилятора переводится в машинный код. Если обнаружены синтаксические ошибки, то результирующий код создан не будет. На этом этапе уже возможно готовой программы, но чаще всего в ней не хватает некоторых компонентов, поэтому компилятор обычно выдает промежуточный объектный код (двоичный файл, стандартное расширение 3. Исходный текст большой программы состоит, как правило, из лей (файлов с исходными текстами), потому что хранить все тексты в одном файле неудобно — в них сложно ориентироваться. Каждый модуль компили- руется в отдельный файл с объектным кодом, которые затем в одно целое. Кроме того, к ним надо добавить машинный код подпрограмм, реализующих различные стандартные функции (например, вычисляющих математические функции sin или Такие функции содержатся в библиотеках (файлах со стан- дартным расширением которые поставляются вместе с компилятором. Сгенерированный код модулей и подключенные к нему стандартные функции надо не просто объединить в одно целое, а выполнить такое объединение с уче- том Требований операционной системы, то есть на выходе программу, отвечающую определенному формату. Объектный код обрабатывается специальной —редактором связей или сборщиком, который выполняет связывание объектных модулей и машин- ного кода стандартных функций, находя их в библиотеках, и формирует на выходе работоспособное приложение исполнимый код для конкретной плат- формы. Если по каким-то причинам один из объектных модулей библио- тека не обнаружены (например, неправильно указан каталог с библиотекой), то сборщик сообщает об ошибке и готовой программы не получается. |