Аверянов Современная информатика 2011
.pdfГЛАВА 5. ЛИНГВИСТИЧЕСКИЕ СРЕДСТВА КОМПЬЮТЕРОВ
5.1.Основные тенденции
вразвитии языков программирования
Под языками программирования понимается система формальных обозначений для точного описания абстрактных структур данных и алгоритмов программ. Так же, как и любые языки, языки программирования имеют алфавит, словарь, синтаксис (правила конструирования выражений), семантику – разъяснение смысла конструкций из слов и выражений.
Внешняя форма языка программирования, т.е. запись текста программы, устанавливается с помощью синтаксиса языка, который определяет формальный язык. Синтаксис описывается с помощью определенных грамматических правил. Задание формального языка хотя и достаточно для установления синтаксической корректности, однако недостаточно для того, чтобы понять ее функцию и способ действия программы, которые определяются путем задания семантики, через установление значения отдельных языковых элементов.
Следует различать язык программирования и его реализацию. Реализация языка – программа, которая преобразует запись высокого уровня (более приспособленную для восприятия человеком) в последовательность машинных команд компьютера и входит в состав программного обеспечения компьютера.
Появление компьютеров и интенсивное развитие их технических возможностей сопровождается развитием их лингвистического обеспечения. Среди основных причин, стимулирующих развитие языков программирования, следует отметить следующие:
необходимость повышения эффективности труда программистов, уменьшение уровня абстрагирования – приближение методов программирования к приложениям;
развитие приложений – внедрение компьютеров в самые различные сферы человеческой деятельности;
значительное увеличение ресурсов компьютеров и их производительности;
нарастающее увеличение сложности и размерности задач, решаемых на компьютерах.
201
Разработка языков программирования началась практически одновременно с появлением вычислительных машин. Это связано с тем, что программирование в машинных кодах – рутинный длительный процесс, который сдерживал внедрение вычислительной техники, значительно снижая эффективность ее использования.
В1945 г. немецкий математик Конрад Цузе изобрел систему записи, которую назвал «Планкалкюль» (что означает программное исчисление), но язык не был реализован, тем не менее, многие развитые в нем идеи нашли отражение в современных языках. История развития традиционных языков высокого уровня, т.е. языков, ориентированных не на коды компьютеров, а на алгоритм решения задачи, представлена на рис. 5.1.
В1949 г. Дж. Мочли, одним из создателей первого универсального компьютера ЭНИАК, был разработан Short code – Ассемблер, реализованный на этой машине.
Несомненно, наибольшее влияние на все последующие языки программирования оказал Фортран (FORTRAN – FOR(mula) TRANS(lator)), разработанный Дж. Бэкусом и его коллегами из фирмы IBM в 1954 – 1957 гг. и реализованный на компьютере IBM 704. В те годы язык был встречен скептически, однако разработка эффективного транслятора для самых популярных (по тем временам) в мире компьютеров позволило языку завоевать всеобщее признание у программистов, занимающихся научными расчетами. Приблизительно в то же самое время Грейс Мюррей Хоппер – офицер ВМФ США (из фирмы UNIVAC) – разработала более простой язык коммерческих задач Флоу-Матик – прообраз Кобола. Очень важное место среди языков занимает Алгол (ALGO(rythmic)L(anguage)), первая версия которого была разработана в Европе международным комитетом на основе идей, заложенных в Фортране и Планкалкюле. Алгол хотя и не приобрел такой популярности, как Фортран, но оказал очень большое влияние на дальнейшее развитие языков. В начале 60-х годов появился Лисп и была разработана нотация APL.
Стремительное размножение языков встревожило программистов, поэтому было решено разработать единый язык для всех. Однако попытки создать такой язык закончились неудачей.
Частичный успех языка РL/1, разработанного фирмой IBM, показал, что всеобъемлющий язык должен быть труден в изучении и
202
1954 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Проект Фортран |
|
|
|
|
|
|||||||||
1955 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FLOW-MATC |
|
|
|
|
|
|||||
1957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Фортан |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
1958 |
|
|
|
|
|
|
|
Алгол-58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
1959 |
|
JOVIAL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кодасил |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
APL |
|
|||||||
1960 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Алгол-60 |
|
Лисп |
|
|
|
|
|
|
|
|
Кобол |
|
|
|
|
|
|
|
||||||||
1661 |
|
Корал |
|
|
|
|
Пересмотренный Алгол-60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
1962 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CPL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1963 |
|
|
SIMULA I |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SNOBOL |
|||||||||||||
1964 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Корал -64 |
|
|
|
|
|
Фортран IV |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
1965 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BASTIC |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
1966 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
Корал-66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кобол -66 |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1967 |
|
|
SIMULA 67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
PL/1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
1668 |
|
|
|
|
|
Алгол-68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
1969 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BCPL |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
Паскаль |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
1970 |
|
|
|
|
|
RTL/1 |
|
|
|
|
|
|
|
|
|
|
B |
|
|
|
|
|
|
|
|
|
||||||||
1971 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
RTL/2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
1972 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Си |
|
|
|
|
|
|
|
|
|
|||
1973 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Форт |
|
|
||
1974 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Scheme |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1975 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1976 |
|
|
|
|
|
|
MODULA 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
1977 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Фортран-77 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
PLZ |
|
|
|
PL/M |
|
|
MPL |
|
|
|
|
|
|
|||||||||||
1978 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1979 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
Ада |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
1980 |
Smalltalk 80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1981 |
1985г. TURBO PASCAL |
|
|
|
|
|
|
|
|
|
C++ |
|
|
|
|
|
|
|
|
|
|
|||||||||||||
1982 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JAVA |
Perl |
|
|
|
|
|
|||||||
1983 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ICON |
||
1984 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1985 |
|
|
|
|
|
|
|
|
|
|
COMMON |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
1986 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1987 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ANSIC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
1988 |
|
|
|
|
|
|
Oberon |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quick BASIC |
|||||||||||
1989 |
|
|
MODULA-3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Фортран 90 |
||||
1990 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Visual BASIC |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
1991 |
Eiffel |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1992 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1993 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1994 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JAVA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Аdа 95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 5.1. История развития языков программирования
203
громоздок в реализации. Было признано, что необходимость в новых языках для новых областей будет появляться всегда. Все языки, о которых говорилось выше, можно определить как процедурные (или предписывающие). Программа на таком языке указывает, как получить результат и что для этого необходимо сделать. Еще одно изначальное название этих языков – языки высокого уровня или алгоритмические. Несколько слов об уровне языка, который определяется степенью абстрагирования от решаемой задачи (или как говорят от приложений). Самым нижним уровнем языков являются машинные коды. Языки высокого уровня ориентированы на программирование алгоритмов. Но алгоритм – также некоторая абстракция, удаленная от конкретного приложения и требующая адаптации к конкретной задаче.
Стремление подняться на новый более высокий уровень программирования и приблизиться к приложениям связано с так называемыми непроцедурными или описательными языками, которые можно назвать языками сверхвысокого уровня, и они приобретают все большее значение. Описательная программа констатирует, какой результат желателен, не указывая, как этого достичь. В программе скорее формулируются отношения, а не последовательность вычислений. Таким образом, программист освобождается от обязанности разрабатывать шаги алгоритма и определять их порядок. Одним из разновидностей таких языков является Пролог PRO(gramming) in LOG(ic), представляющий собой усовершенст-
вование языка Лисп (LISP – L(ist) I(nformation) S(ymbol) P(rocessing)), а также Визикальк и Мультиплан, получившие распространение на персональных компьютерах.
Некоторые из этих языков называют также дескриптивными. Программа на дескриптивном языке состоит из двух частей: базы данных и цели. База данных содержит конкретные факты о решаемой задаче и основные принципы, касающиеся соотношений между этими фактами. Цель – общее описание решения. Определяя цель, программист, по существу, просит компьютер скомбинировать факты и соотношения так, чтобы можно было доказать, что цель истинна. Дескриптивные языки особенно популярны в области разработки экспертных систем.
Другая тенденция в развитии языков программирования – рост интереса к системам записи, называемым объектно-ориентирован-
204
ными языками, например Симула 67 (SIMULA – SIMU(lation) LA(nguage)). Кроме этого появление многопроцессорных систем привело к необходимости разработки языков параллельных вычислений. Примером таких языков могут служить Оккам, Компед (Computer Parallel) и др. Развитие языков тесно связано с развитием технических средств, с появлением новых информационных технологий, совершенствованием программных интерфейсов. Это относится к средствам программирования графических программных оболочек, программирования сетевых приложений, совершенствованию лингвистических возможностей операционных систем и т.п.
В настоящее время насчитывается несколько тысяч языков и, тем не менее, продолжается разработка новых. Это, по-видимому, связано с тем, что нет хорошего способа для определения качества языка. При всем многообразии языков широко используются лишь некоторые. От возникновения языка до его «успешной стандартизации» (стандартизация языков программирования проводится ор-
ганизацией ANSI – American National Standard Institute) проходит примерно 10 лет, поэтому программисты предпочитают старые языки, несмотря на постоянную критику со стороны энтузиастовразработчиков новых языков. Это связано с тем большим заделом программного обеспечения, который существует у традиционных языков, а также новыми их версиями, в которых продолжается дальнейшее совершенствование с учетом критических замечаний (не всегда объективных). Поэтому характерной тенденцией последнего времени в развитии традиционных языков высокого уровня является не столько создание новых языков, сколько включение новых функциональных возможностей в традиционные языки – использование элементов машинной графики, объектная ориентация, создание графических программных интерфейсов средства распараллеливания и т.п. Проблемы параллельного программирования, использования виртуальной памяти в значительной степени решаются не только на уровне прикладного программирования, но также средствами системных программ (операционных систем, трансляторов и т.п.).
Среди очень большого количества языков, разработанных к настоящему времени, очень важное значение имеют языки, которые хотя и не получили широкой применительной практики, но оказали сильное влияние на все дальнейшее развитие лингвистического
205
обеспечения информатики. К таким языкам можно отнести: ALGOL (международный комитет), Симула 67 (Кристен Нигаард,
Оле Йохан Дал), Small Talk (Ален Кэй), Modula, Pascal (Object Pascal), Oberon (Никлаус Вирт).
Вцелом, сравнение языков очень сложная задача, поскольку существует 2570 различных возможностей или свойств для сравнения, к которым добавляются 12 характеристик трансляторов. Следовательно, не существует самого лучшего языка программирования, так же как не существует самого лучшего естественного языка. Выбор языка определяется целями применения и индивидуальностью программиста. Как сказал король Карл V [17]: «Я разговариваю по-испански с богом, по-итальянски с женщинами, пофранцузски с мужчинами и по-немецки со своей лошадью».
Взаключение необходимо отметить, что проблемы лингвистического обеспечения (как и программирования) сдерживают внедрение средств вычислительной техники и успехи в решении этих проблем значительно скромнее темпов развития технических средств.
5.2. Классификация и краткая характеристика современных языков программирования
Все языки программирования можно сгруппировать по некоторым признакам в ряд подгрупп (с определенной степенью условности). На рис. 5.2 представлен один из вариантов такого разбиения.
Из рисунка видно, что на сегодняшний день языки можно разделить на две большие подгруппы: машинно-ориентированные и машинно-независимые. К первым относят языки, ориентированные на систему команд конкретного типа ЭВМ, и, естественно, программы, написанные на этих языках, не могут выполняться на машинах с иной системой команд. Их основу составляют машинные языки. Программирование в кодах машины, при котором каждая команда представляется цепочкой из нулей и единиц, а на программиста возлагается задача расположения своей программы в адресах компьютера – сложный утомительный процесс. Программа, загруженная в память, выполняется без всякой предварительной обработки, так как вся работа по переводу алгоритма в программу, готовую к исполнению (исполнимую программу), осуществляется «вручную» человеком.
206
|
ЯЗЫКИ |
|
ПРОГРАММИРОВАНИЯ |
|
|
Машинно-ориентированные |
Машинно-независимые |
|
Машинные |
|
|
|
Непроцедурные |
Процедурные |
|
|
|
Символического кодирования |
Управление заданиями |
|
|
Проблемно-ориентированные |
|
Макросы |
|
|
|
Табличные |
Научные задачи |
Ассемблеры |
|
Экономические |
|
СУБД |
|
|
задачи |
|
|
|
|
Высокого уровня |
|
|
|
|
Обработка списков |
|
Другие |
|
|
|
Графика |
|
Объектно- |
Другие |
|
ориентированные |
|
Рис. 5.2. Классификация |
|
Универсальные |
языков программирования |
|
|
Программирование в машинных кодах в настоящее время не используется программистами (за исключением некоторых узкоспециализированных приложений). Однако программирование на Ассемблере (Assembly System) практикуется достаточно широко, поскольку все системное программирование, программирование нестандартных периферийных устройств, программирование процессов реального времени и т.п. в той или иной мере связано с использованием Ассемблера. Язык Ассемблера – первый шаг по автоматизации программирования, избавлению программиста от мелочей двоичного кодирования. Использование символов, отражающих суть машинной команды (например, LOAD – загрузить, ADD – сложить), вместо соответствующих им кодов команд, а также
207
запись программ без привязки к конкретным адресам ЭВМ значительно облегчают работу программиста. При этом часть работы возлагается на компьютер, который с помощью программы транс- лятор-ассемблер переводит текст программы на машинный язык и определяет его место в поле оперативной памяти. Дальнейшее совершенствование Асемблеров связано с появлением макроассемблеров (или макросов), позволяющих писать более компактные программы. Это объясняется тем, что в макроассемблерах часто повторяющиеся последовательности команд Ассемблера объединяются и им присваиваются новые символы. Транслятор с языка Ассемблера является необходимым атрибутом любого современного компьютера, так как программирование на этом языке позволяет в полной мере использовать ресурсы вычислительных систем. В то же время использование этого языка предполагает доскональное изучение технических средств и архитектурных особенностей программируемой машины.
Появление языков высокого уровня вызвано стремлением упростить процедуру программирования, создать средства, отражающие структуру алгоритма задачи и не требующие от программиста детального изучения компьютера. Разработка машинно-зависимых систем автоматизации экспериментов, изготовление программ реального времени, зависящих от окружающей среды и времени, а также программирование нестандартных периферийных устройств означает наивысший уровень разработки программ. Тестирование изготовленных систем методически менее уточнено и трудно реализуемо. В то же время ошибки, остающиеся в готовых системах, вызывают очень тяжелые последствия. Машинная зависимость языков программирования реального времени высокого уровня хотя и затрудняет мобильность («переносимость») программ, но, безусловно, улучшает характеристики выполнения. В то же время мобильность программ управления не является актуальной задачей, так как эти системы аппаратно ориентируются на отдельные классы ЭВМ.
Если во многих применениях сравнительно рано были созданы языки высокого уровня, каждый из которых стал мировым стандартом в своей области, то ни одному из языков реального времени высокого уровня не удалось стать таковым. В Великобритании необходимость в языке программирования задач в реальном масштабе времени привела к появлению языка Корал (сокращение от «язык про-
208
граммирования для реализации радиолокационных систем»), построенного на идеях Алгола. Корал – один из немногих языков данного типа, на который имеется стандартное определение.
В США использовался Фортран реального времени (разработка университета Purdue), во Франции – язык Прокол (также на основе Фортрана), в Германии – Пеарл. Программирование задач реального времени для микропроцессорных систем привело к появлению таких языков высокого уровня, как PL/M, PLZ, MPL, предназначенных для семейств микропроцессоров фирм Intel, Zilog и Motorola соответственно. У этих языков было много приверженцев и они получили высокую оценку пользователей. Особое место в списке языков реального времени занимает Форт: он не имеет аналогов в машинно-независимых языках и позволяет сочетать программирование на языках высокого и низкого уровней.
Машинно-ориентированные языки высокого уровня применялись и при системном программировании – разработке операционных систем и инструментов программной поддержки компьютерных систем. Так, фирма IBM для этих целей использовала языки
PLS (диалект PL/1), DEC-BLISS (на базе ALGOL), Burroughs – Extended ALGOL. В настоящее время в качестве основного инструмента для создания операционных систем используется язык С.
Следующую категорию составляют машинно-независимые языки высокого уровня. Они, в свою очередь, могут быть разделены на непроцедурные (дескриптивные или описательные) и процедурные. Процедурные языки, представляющие основу языков современного программирования, составляют наиболее солидную группу, и ими пользуется наибольшее число программистов для решения различных прикладных задач, связанных с расчетами, проектированием, экономикой и т.п. Процедурные языки можно условно разделить на проблемно-ориентированные и универсальные. К первым относятся такие традиционные языки научного и инженерного программирования, как Фортран и Алгол.
К этой же категории можно отнести Паскаль, который вначале применялся как язык для обучения программированию, но благодаря появлению микросистем стал одним из наиболее популярных языков решения инженерных задач. В экономических приложениях своеобразным стандартом являлся Кобол (Common Business Oriented Language).
209
Специализация языков связана с развитием технических средств, расширением разновидностей приложений и появлением новых информационных технологий. Так, совершенствование языков научно-технических приложений привело к появлению языков машинной графики, совершенствование программных интерфейсов связано со средствами разработки графических интерфейсов в среде Windows. Развитие глобальных вычислительных сетей привело к появлению средств разработки сетевых приложений.
Среди основных направлений специализации языков можно выделить следующие.
Языки подготовки сценариев. Первый такой язык – Sh (Shell – обо-
лочка), изначально состоявший из набора команд, интерпретируемых как вызов системных программ, выполняющих служебные функции (например, управление файлами) и их простую фильтрацию. Затем на этой основе были добавлены переменные операторы потока управления, функции и т.п., в результате получили универсальный язык программирования, разработанныйвBell Lab., – AWK.
Разработанный Лари Уоллом язык Perl изначально составлял комбинацию Sh и АWК, затем получил значительное развитие и сейчас является достаточно мощным, выходящим за рамки сценариев, особенно в связи с развитием WWW, языком. Он очень удобен для программирования интерфейса CGI (Common Gatway Intertace – общий шлюзовой интерфейс).
Программирование в среде Windows. Создание графических оболочек связано с такими инструментальными средствами, как
Turbo Vision, VB, VBA, VC++, Delphi, .NET Vision.
Программирование в компьютерных сетях. Программирование связано с рядом специфических требований, предъявляемых к разрабатываемым программам, а следовательно, и к инструментальным средам. Основные из этих требований:
платформенная независимость; защита информации от несанкционированного доступа; обеспечение высокого быстродействия.
Для программирования активных Web-серверов в наибольшей степени удовлетворяют перечисленным требованиям язык Java (C-), разработанный фирмой Sun, а также платформа .NET(DOT NET), включающая язык С# фирмы Microsoft.
210