MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_01C6D9B2.936454F0" Данный документ является веб-страницей в одном файле, также называемой файлом веб-архива. Если вы видите это сообщение, значит данный обозреватель или редактор не поддерживает файлы веб-архива. Загрузите обозреватель, поддерживающий веб-архивы, например Microsoft Internet Explorer. ------=_NextPart_01C6D9B2.936454F0 Content-Location: file:///C:/D0C89E98/inf38.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" классификk= 2;ция языков программирl= 6;вания

КЛАСС= ;ИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРi= 4;ВАНИЯ

Существ= ;уют различные класс= 080;фикации языков программирl= 6;вания. Наиболее распростраl= 5;енная классификаm= 4;ия: языки низкого, высокого ур= овня и объе= ;ктно-ориент= 080;рованные языки.

В группm= 1; языков низкого уровня входят машинные яз = 99;ки и языки символичесl= 2;ого кодированиn= 3;: (Автоl= 2;од, Ассемблер). Операторы  этого языка те же машинные команды, но записанные  мнемоничеl= 9;кими кодами, а в качестве операндов используютl= 9;я не конкретные адреса, а символичесl= 2;ие имена. Все языки низкого уровня орие = 85;тированы на определеннm= 9;й тип компьютера, т. е. являются машинно-зав = 80;симыми.

Следующ= ;ую, существеннl= 6; более многочислеl= 5;ную группу составляют = 03;зыки программирl= 6;вания высок= ;ого уровня. Это j= 0;ортран, Алгол, Кобол, Паскаль, Бейсик, Си и т.д. Эти языки машинно-нез = 72;висимы, т.к. они ориентировk= 2;ны не на систем= 091; команд той или иной ЭВМ, а на систему операндов, характерныm= 3; для записи определеннl= 6;го класса алгоритмов.

К объекm= 0;но-ориеl= 5;тированным языкk= 2;м можно отнести язы = 82;и четвертого поколения (4GL): Visual Basic, Delphi, C++ Builder.

Также существуют = 82;омандные языки баз данных и Clipper.

Особое место занимают такие языки высокого уровня, как Cobol, Ada, Smalltalk, Prolog. &#= 1054;ни менее универсальl= 5;ы, чем перечиленнm= 9;е выше средства.=

Вторая классификаm= 4;ия делит языки на выч= ;ислительны = 77; и языки символьно= 081; обработки.

К первому тип = 91; можно отнести Фортран, Пас= 082;аль, Алгол, Бейсик, Си, ко второму тип = 91; Лисп, Пролог, Снобол и др.

Существ= ;ует и третья "прикладная= ;" классификаm= 4;ия языков, согласно которой все они делятся на группы по областям применения.

Существ= ;ует  “прикладна= ;я” классифика&= #1094;ия языков программирl= 6;вания, по которой все они делятся на группы по об= 083;астям применения. Например, языки Фортран, Алг= 086;л-60, Паскаль и некоторые другие ориентировk= 2;ны на научные и инженерные расчеты;  язык Кобол – на обработку экономичесl= 2;ой информации; = 103;зык Симула-67 – на решение задач имитационнl= 6;го моделироваl= 5;ия, С - для системного программирl= 6;вания и т.п.

Существ= ;уют между= народные языки программирl= 6;вания  (больш= ;инство из перечисленl= 5;ых) и языки локальног= 086; использоваl= 5;ия (в пределах одной стран = 99;, например).

Классиф= ;икацию языков можн = 86; провести и в соответствl= 0;и со стилями программирl= 6;вания: проце= дурное программирl= 6;вание – языки машинный, Ассемблер, СИ, Бейсик, Фортран, Модула-2, Алгол, Кобол, РЛ-1, Паскаль и др.; фу = 85;кционально&#= 1077; программирl= 6;вание – Лисп и его версии;  логическое программир&= #1086;вание – Пролог и его версии; объек= 090;ивно-ориент= ированное программирl= 6;вание – Стимула-67, SMALL TALK и его версии, Си++, Турбо-Паска = 83;ь и др.

Ка = 78;дая программа н = 72; языке ассем = 73;лера чаще всего представляk= 7;т собой одну машинную команду, записанную символичесl= 2;им кодом (например, MOV AX, BX). Яз&= #1099;к ассемблера позволяет создавать н = 72;иболее эффективныk= 7; программы, однако очен = 00; трудоемок и требует высокой квалификацl= 0;и программисm= 0;а. Программирl= 6;вание на этом язык= 077; называют программирl= 6;ванием на низком уровне (хотя программы получаются высокого качества).

Ка = 78;дой команде на языке высокого уровня обычно соот = 74;етствует либо несколько машинных ко = 84;анд, либо целая подпрограмl= 4;а в машинном к= 086;де. Раньше предполагаl= 3;ось, что тот или иной язык уместно использоваm= 0;ь в той предметной = 86;бласти, для которой он изобреталсn= 3;. Однако бурное развитие информациоl= 5;ной технологии привело к сглаживаниn= 2; возможностk= 7;й языков, и теперь мног = 80;е из них могут считаться универсальl= 5;ыми.

Fortran - formula translator;

Basic - beginner’s all purpose symbolic instruction code;=

Cobol - Common Business-Orieted Language;

Prolog- programming in logic.

За прошедшие 15 лет в методологиl= 0; написания программ дл = 03; компьютероk= 4; произошла радикальнаn= 3; перемена. Он= 072; состоит в том, что разработчиl= 2;и перешли от языков прог = 88;аммировани&#= 1103; системного уровня, таки= 093; как С и С++, к языкам описания сценариев, примерами которых могут служить Perl Tcl. Хотя в эту перемену оказалось вовлечено огромное количество людей, лишь немногие из них осознаю = 90;, что в действителn= 0;ности происходит, = 080; еще меньше найдется таких, кто бы смог объясн = 80;ть причины.

По = 74;ышение производитk= 7;льности компьютероk= 4; и перемены в составе используемl= 6;го ПО делают роль языков описания сценариев в создании приложении будущего вс = 77; более и боле= 077; важной. Эти языки отличаются от языков программирl= 6;вания системного уровня тем, что их основ= 085;ое назначение R= 11; связывать различные компоненты = 80; приложения друг с другом, выпо= 083;няя роль своего рода клея. В них находят применение бестиповые подходы к описанию данных, что позволяет вывести программирl= 6;вание на более высокии уровень и ускорить процесс разработки по сравнени = 02; с языками си= 089;темного уровня.

Эт = 80; языки создавалисn= 0; для различных целей, что обусловило ряд фундаме = 85;тальных различий между ним. Системные р = 72;зрабатывал&#= 1080;сь для построения структур да = 85;ных и алгоритмо = 74; “ с нуля”, начиная от таких примитивныm= 3; элементов, как слово памяти компьютера. = 042; отличие от этого, языки описания сценариев создавалисn= 0; для связыва = 85;ия готовых программ. Их применение подразумевk= 2;ет наличие достаточноk= 5;о ассортименm= 0;а мощных компонентоk= 4;, которые требуется только объе = 76;инить друг с другом. Язык= 080; системного уровня используют строгий контроль ти = 87;ов, что помогае = 90; разработчиl= 2;ам приложении справлятьсn= 3; со сложными задачами; языки же описания сц = 77;нариев не используют понятие тип = 72;, что упрощае = 90; установленl= 0;е связей межд = 91; компонентаl= 4;и и ускоряет разработку прикладных = 89;истем.

Яз = 99;ки этих двух типов является взаимодопоl= 3;няющими, и большинствl= 6; компьютернm= 9;х платформ ещ = 77; с середины 60-х годов оснащаются как теми, так и другими. В компонентнm= 9;х инфраструкm= 0;урах они применяютсn= 3;, как правило, совместно  компонентm= 9; создаются н = 72; языках программирl= 6;вания системного уровня, а для их связи между собой используютl= 9;я языки описания сценариев. Однако ряд современныm= 3; тенденции, включая появление более быстрых маш = 80;н и более совершенныm= 3; языков описания сц = 77;нариев, повышение значимости графическоk= 5;о интерфейса пользоватеl= 3;я и компонент = 85;ых архитектур, = 072; также рост популярносm= 0;и Internet, чрезвы= чайно расширили сферу применимосm= 0;и языков описания сценариев. Развитие этих тенден = 94;ии продолжитьl= 9;я и в следующе= 084; десятилетиl= 0;, вследствие чего все больше прил = 86;жении будет создаватьсn= 3; целиком и полностью н = 72; языках описания сценариев, а роль языков программирl= 6;вания системного уровня сведется по = 95;ти исключителn= 0;но к созданию компонентоk= 4;.

Языки программирl= 6;вания системного уровня

Чт = 86;бы осознать различие между языками опи = 89;ания сценариев и системными , полезно всп = 86;мнить историю развития последних. Впервые они появились в качестве альтернатиk= 4;ы языкам ассе = 84;блера, позволяющиl= 4; использоваm= 0;ь в программе практическl= 0; все особенностl= 0; конкретной аппаратной подсистемы. Каждому утв = 77;рждению такого язык = 72; соответствm= 1;ет ровно одна машинная команда, и программисm= 0;у приходитьсn= 3; иметь дело с такими низк = 86; уровневыми деталями, ка= 082; распределеl= 5;ие регистров и последоватk= 7;льности вызова процедур. В результате написание и сопровождеl= 5;ие крупных программ на языке ассемблера оказываетсn= 3; чрезвычайнl= 6; сложным делом.

К концу 50-х годов начал = 80; появляться языки программирl= 6;вания более высок = 86;го уровня, таки= 077; как Lisp, Fortran, ALGOL. В них уже не было точного соответствl= 0;я между языковыми конструкциn= 3;ми и машинными = 082;омандами. Преобразовk= 2;ние строк исходного кода в последоватk= 7;льности двоичных ко = 84;анд осуществляl= 3;ось компиляторl= 6;м. Со временем их число поп= 086;лнилось языками PL /1, Pascal, C, C++, Java. Все они мене= 077; эффективно используют аппаратуру по сравнени = 02; с языками ассемблера, = 085;о позволяет быстрее создавать приложения. = 042; результате им удалось практическl= 0; полностью вытеснить языки ассемблера при создани = 80; крупных приложении.

Языки программирl= 6;вания более высокого ур = 86;вня

Яз = 99;ки программирl= 6;вания системного уровня отличаются от ассемблероk= 4;, во-первых, те&#= 1084;, что они являются более высокоуровl= 5;евыми, и, во-вторых, используют более строгий контроль типов. Терми= 085; “высокоуроk= 4;невый” означает следующее: м= 085;огие детали обрабатываn= 2;тся автоматичеl= 9;ки, а программисm= 0;у для создани = 03; своего прил = 86;жения приходится писать меньшее количество строк. В частности:= -&nb= sp;        Р= аспределенl= 0;ем регистров занимается компилятор, так что программисm= 0;у не надо писать код, обеспечиваn= 2;щий перемещениk= 7; данных межд = 91; регистрами = 80; памятью;

= -&nb= sp;        П= оследоватеl= 3;ьности вызова процедур ге = 85;ерируются автоматичеl= 9;ки; программисm= 0;у нет необходимоl= 9;ти описывать помещение а = 88;гументов функции в ст= 077;к и их извлечение оттуда;

= -&nb= sp;        Д= ля описания структур управления программисm= 0; может использоваm= 0;ь также ключевые сл = 86;ва, как i= f, while<= span style=3D'mso-bidi-font-size:12.0pt;font-family:"Times New Roman";font-weigh= t: normal;font-style:normal'>; последоватk= 7;льности машинных команд, соот= 074;етствующие этим описаниям компилятор = 75;енерирует динамическl= 0;.

Типизация=

Вт = 86;рое различие между языками ассемблера = 80; языками про = 75;раммирован&#= 1080;я системного уровня состоит в типизации. Я использую этот термин для обознач = 77;ния того, до какой степени значение ин = 92;ормации бывает определено еще прежде, ч&#= 1077;м приходит время ее использоваl= 5;ия в программе. В сильно типизироваl= 5;ных языках требуется, ч= 090;обы программисm= 0; заранее декларировk= 2;л способ использоваl= 5;ия каждого фрагмента и = 85;формации, и затем уже языковые средства пр = 77;пятствуют применению ее каким-либ= 086; иным способом. В слабо же типизироваl= 5;ных языках на способ обработки информации не налагается предваритеl= 3;ьных ограничениl= 0;; интерпретаm= 4;ия каждого элемента данных определяетl= 9;я только тем, как он фактически используетl= 9;я, без учета каких-либо предваритеl= 3;ьных объявлении.

Со = 74;ременные компьютеры устроены таким образ = 86;м, что им не известно понятие тип = 72;. Каждое слов = 86; памяти може = 90; содержать значение любого типа; целое число, число с плавающей запятой, указатель или машинну = 02; команду. Интерпретаm= 4;ия значения определяетl= 9;я способом ег = 86; использоваl= 5;ия. Если указатель следующей машинной команды указывает в процессе исполнения машиннои команды на некоторое слово в памяти, то оно и рассматривk= 2;ется как команда; если адрес слова задан = 074; параметрах команды целочисленl= 5;ого сложения, то его значени = 77; и обрабатываk= 7;тся как целое число; и т. д. Оk= 6;но и то же слово памяти може = 90; использоваm= 0;ься в различных случаях разными способами.=

В противополl= 6;жность этому для современныm= 3; языков программирl= 6;вания характерна = 89;трогая типизация. Каждая переменная = 74; языке программирl= 6;вания системного уровня долж = 85;а быть объявл = 77;на с указанием конкретногl= 6; типа, такого как целое число или указатель н = 72; строку символов, и затем использоваm= 0;ься только соответствm= 1;ющими этому типу способами.=

Да = 85;ные и программныl= 1; код разделены; создание нового кода по ходу исполнения программы затруднено, если вообще возможно. Переменные могут объединятьl= 9;я в структуры или объекты = 089; четко определеннl= 6;й субструктуl= 8;ои и методами манипулироk= 4;ания своими компонентаl= 4;и. Объект одного типа не может быт= 100; использоваl= 5; в ситуации, где предписано применение объект друг = 86;го типа.

Языки описания сценариев создавалисn= 0; для связывания готовых программ. Их применение подразумевk= 2;ет наличие достаточноk= 5;о ассортименm= 0;а мощных компонентоk= 4;, которые требуется только объединить друг с друго= 084;.

Ти = 87;изация дает ряд преимущестk= 4;. Во-первых, крупные программы становятся благодаря е = 81; более управляемыl= 4;и. Четкость системы типов делае = 90; для программисm= 0;а ясным, для чего предназначk= 7;ны те или иные данные; он ле&#= 1075;ко может различать и = 93; между собой = 080; соответствk= 7;нно использоваm= 0;ь. Во-вторых, компиляторm= 9; используют информацию = 86; типах для обнаружениn= 3; некоторых видов ошибо = 82;, таких как по= 087;ытка, использоваm= 0;ь число с плавающей з = 72;пятой в качестве указателя. В-третьих, типизация повышает производитk= 7;льность приложения, позволяя компиляторk= 2;м генерироваm= 0;ь более специ = 72;лизированн&#= 1099;й код. Например, если компил = 03;тору известно, чт= 086; некоторая переменная всегда содержит целочисленl= 5;ые значения, он может генерироваm= 0;ь для манипулироk= 4;ания ею целочисленl= 5;ые инструкции; если же тип переменой компиляторm= 1; неизвестен, то приходит = 00;ся вставлять дополнителn= 0;ные инструкции для проверк = 80; типа во врем= 103; исполнения.

Языки описания сценариев<= /span>

Яз = 99;ки описания сценариев, такие как Perl, Python, Rexx, Tcl, Visual Basic и языки оболочек UNIX, предпологаn= 2;т стиль программирl= 6;вания, весьма отличныи от характерноk= 5;о для языков системного уровня. Они предназначk= 2;ются не для написания приложения = 89; “нуля”, а для комбинировk= 2;ния компонентоk= 4;, набор которых создается заранее при помощи других языков. Например, Tcl, Visual Basic мо = 75;ут использоваm= 0;ься для построения пользоватеl= 3;ьских интерфеисоk= 4; из имеющихс = 03; элементов управления, = 072; языки описания сц = 77;нариев для оболоче = 82; UNIX применяютсn= 3; для формированl= 0;я “конвейероk= 4;” обработки потоков данных из набора стан = 76;артных фильтров. Языки описания сценариев часто применяютсn= 3; и для дополн= 077;ния готовых компонентоk= 4; новыми возм = 86;жностями; однако эта деятельносm= 0;ь редко охватывает создание сложных алгоритмов или структу = 88; данных, которые уже обычно быва = 02;т уже заложен = 99; в компонент = 99;. Иногда язык = 80; описания сценариев даже называют св = 03;зующими или языками системной интеграции.

Дл = 03; языков описания сценариев характерно отсутствие типизации, которая только усло = 78;нила бы задачу соединения компонентоk= 4;. Все элемент = 99; в них выглядят и функционирm= 1;ют одинаково и являются полностью взаимозамеl= 5;яемыми. Например, в Tcl или Visual Basic  перем= енная может содержать в однои точке программы строку, а в другой – целое число. Код и данные также часто бывают взаи = 84;озаменяемы. Например, Tcl, Visual Basic пе = 88;еменная может содержать в одной точке = 087;рограммы строку, а в другой - целое число. Код и данные также часто бывают взаимозамеl= 5;яемы, так что программа может генерироваm= 0;ь другую программу -– и сразу же запускать е = 77; исполнение. Обычно язык = 80; описания сценариев используют переменные строковых типов, которые обеспечиваn= 2;т единообразl= 5;ый механизм представлеl= 5;ия для различн = 99;х сущностей.=

От = 89;утствие в языке деления переменных на типы упрощает соединение компонентоk= 4; между собой. Нет априорных ограничениl= 0; на то, каким образом может использоваm= 0;ься тот или иной элемент, а все компоненты значения представляn= 2;тся в едином формате. Так= 080;м образом, компонент или значени = 77; могут быть использоваl= 5;ы в любой ситуации; будучи спроектироk= 4;аны для одних способов применения, они могут оказаться задействовk= 2;ны совершенно иными, о которых их создатель н = 80;когда не помышлял. Например, в UNIX – оболочках работа любо = 81; программы – фильтра включает чтение данных из входного по = 90;ока и запись их в выходной поток. Любые две такие программы могут быть связаны путем назна = 95;ения выходного потока одно = 81; в качестве входного  поток= ;а другой. Следующая команда оболочки пр = 77;дставляет систему из трех фильтров, подсчитываn= 2;щую в выделенно = 84; фрагменте текста стро = 82;и, содержащие слово “scipting”:

Select | grep= scripting | wc =

Пр = 86;грамма select= считыв&#= 1072;ет текст, выделенный = 74; данный моме = 85;т на экране, и выводит его свои выходной поток; фильт= 088; grep считыв&#= 1072;ет входной поток и пропускает на выход строки, содержащие слово “scriptingR= 21;; а программа wc подсчи&#= 1090;ывает число строк = 074; своем поток = 77;. Любой из подобных компонентоk= 4; может найти = 087;рименение во множеств = 77; различных ситуации, решая кажды = 81; раз иную общую задач = 91;. Сильная типизация языков прог = 88;аммировани&#= 1103; системного уровня затр = 91;дняет повторное использоваl= 5;ие кода. Она поо&#= 1097;ряет программисm= 0;ов к созданию большого количества несовместиl= 4;ых друг с друго= 084; интерфейсоk= 4;, каждый из которых требует применение объектов своего типа. Компилятор не позволяе = 90; объектам других типо = 74; взаимодейсm= 0;вовать с этим интерфейсоl= 4;, не смотря на то, что резул&#= 1100;тат, мог бы оказаться и весьма полезным. Таким образом, чтобы использоваm= 0;ь новый объек = 90; с существующk= 7;м интерфейсоl= 4;, программисm= 0;у приходится писать “переходниl= 2;”, преобразуюm= 7;ий объект к типу, на который рассчитан интерфейс. А применение “переходниl= 2;а” требует, в свою очеред = 00;, перекомпилn= 3;ции части или даже всего приложения целиком. Дом= 080;нирующий в настоящее время спосо = 73; распростраl= 5;ения ПО в виде двоичных файлов делает этот = 087;одход невозможныl= 4;.

Чт = 86;бы оценить преимущестk= 4;а бес типовог = 86; языка программирl= 6;вания, рассмотрим следующий пример на языке Tcl:

Button  .b –text Hello!  -font {Tim= es 16} – comand {puts hello} .

Эт = 72; команда создает на экране нову = 02; кнопку с надписью на ней Hello! шрифтом Times 16 пунктов, при нажатии, на которую выводится короткое сообщение hello . = 042; одной строк = 77; здесь уместилось шесть элеме = 85;тов различных типов: название команды (button), название кнопки (. b), идентификаm= 0;оры атрибутов (-text, -font, -command), простые строки (Hello! hello), спецификацl= 0;я шрифта (Times 16), состоящая и = 79; названия начертания (Times) и размера в пунктах (16), а также целый Tcl-сценарии (puts hello). Вс&= #1077; элементы представляn= 2;тся единообразl= 5;о – в виде строк. В данном примере атрибуты мо = 75;ли быть перечисленm= 9; в произвольнl= 6;м порядке, а неупомянутm= 9;м атрибутам (и= 093; насчитываеm= 0;ся более 20) будут присвоены значения по = 091;молчанию.

В случае реализации на Java  тот жk= 7; самый пример потребовал бы семи стро= 082; кода, составляющl= 0;х два метода. Для С++ с использоваl= 5;ием библиотеки Microsoft= Foundation Classes (MFC) ма = 89;штабы увеличилисn= 0; примерно до 25 строк кода, образующих три процедуры. Один только = 074;ыбор шрифта требует нескольких обращении к функциямMFC

Cfont *fontPtr=3Dnew C= ront ();

fontPtr->CreteFont (16, 0, 0, 0, 700,

0, 0, 0, ANSI_CHARSET,

OUT_DEFAULT_PRECIS,

CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,

DEFAULT_PITCH|

FF_DONTCARE,

“Times New Roman”);

buttonPtr->S= etFont(fontPtr);

Мо = 78;но было бы обоитись бе = 79; значительнl= 6;и части этого кода, если бы не строгая типизация. Ч= 090;обы задать шриф = 90; для кнопки, необходимо обратиться = 82; методу SetFont; однако он требует передачи в качестве ар = 75;умента указателя н = 72; объект CFont. Приходитьсn= 3; объявлять и инициализиl= 8;овать новый объек = 90;. Инициализаm= 4;ию объекта CFont вы = 87;олняет его метод CreateFont, которыи имеет жесткии интерфеис, требующии задания 14 различных аргументов. = 042; TCL сущест&#= 1074;енные характерисm= 0;ики шрифта (наче= 088;тание Times и кегль = 16 пунктов) могут быть у= 082;азаны непосредстk= 4;енно без каких-либо о= 073;ъявлении или преобразовk= 2;нии. Более того, TCL позволяет описать и поведение кнопки непо = 89;редственно в теле создающей е = 77; команды, тог= 076;а как в С++ или Java k= 6;ля этого необходим отдельный метод.

Языки описания сценариев н = 72; подъеме

Яз = 99;ки описания сценариев существуют уже длитель = 85;ое время, однако, в последние годы в результате сочетания ряда факторов су = 97;ественно повысилась их актуальносm= 0;ь. Наиболее важный из этих факторов – направленнl= 6;сть в сторону приложении, собираемых из готовых компонентоk= 4;, В качестве трех иллюст = 88;ации его проявления можно назвать гра = 92;ические интерфейсы пользоватеl= 3;я, Internet и компонентнm= 9;е инфраструкm= 0;уры разработки.

Графически = 77; интерфейсы пользоватеl= 3;я

Пе = 88;вые графическиk= 7; интерфейсы пользоватеl= 3;я появились в = 085;ачале 1980 г. и приобрели широкое распростраl= 5;ение к концу десятилетиn= 3;. Сегодня на описание этой части программы в = 86; многих проектах уходит боле = 77; половины всех усилии разработчиl= 2;ов. GUI по своей природе является составной компонентнl= 6;й системой. Цель его соз= 076;ания состоит не в реализации новых функц = 80;ональных возможностk= 7;й, а в том, чтобы наладить связи между графическиl= 4;и элементами управления = 80; функциями внутренних частей приложения.

Некотор= ;ые из систем снабжены очень удобн = 99;ми графическиl= 4;и средствами для построе = 85;ия экранов, которые скрывают сложности л = 77;жащего в основе языка, однако, как только возн = 80;кает необходимоl= 9;ть в написании дополнителn= 0;ного кода, например, чтобы расши = 88;ить спектр вариантов поведения элементов интерфейса, = 091; разработчиl= 2;а сразу возни = 82;ают трудности. Все лучшие среды ускоренной разработки основаны на языках описания сценариев: Visual Basic, HyperCard, TCL/TK.

Internet

Развити= ;е и рост популярносm= 0;и Internet также способствоk= 4;али распростраl= 5;ению языков описания сценариев. Сама сеть является не чем иным, как средством связи систе = 84;. Она не создает никаких новых данны = 93; и не занимается их обработк = 86;й; все, что она делает- обеспечиваk= 7;т легкий доступ к огромному множеству существующl= 0;х объектов. Идеальным языком прог = 88;аммировани&#= 1103; для решения большинствk= 2; связанных с сетью задач мог бы стать тот, который лучше организует совместную работу всех связанных компонентоk= 4;, т. е. язык описания сц = 77;нария. Так, для написания сеть-сценар = 80;ев широко употребляеm= 0;ся язык Perl, = 72; среди разработчиl= 2;ов WEB-страниm= 4; популярен JavaScrint<= /span>.

Компонентн = 99;е инфраструкm= 0;уры

Третий пример применения языков описания сценариев - компонентнm= 9;е инфраструкm= 0;уры, такие как ActiveX, JavaBeans. Хотя языки программирl= 6;вания системного = 91;ровня с успехом используютl= 9;я для создани = 03; компонентоk= 4;, задачи сборки из ни= 093; приложении удобнее решаются пр = 80; помощи сцен = 72;риев. Без хорошег = 86; языка описания сц = 77;нариев, предназначk= 7;нного для манипулироk= 4;ания компонентаl= 4;и инфраструкm= 0;уры, теряется значительнk= 2;я часть ее достоинств. Этим можно объяснить отчасти, почему компонентнm= 9;е инфраструкm= 0;уры добились большей популярносm= 0;и в мире ПК, где существует такое удобное свя = 79;ующее средство, ка= 082; Visual Basic, нежели на других платформах, таких как Unix= /Cobra, компонентнm= 9;е инфраструкm= 0;уры, для которых лишены языков описания сценариев.=

Технология сценариев<= /span>

Еще однk= 2; причина роста популярносm= 0;и языков описания сценариев – развитие их технологии. Такие современныk= 7; представитk= 7;ли этой категории, как TCL, Perl= мало, че= 084; напоминают своих далеких предшествеl= 5;ников вроде JCL. Так, JCL не предусматрl= 0;вал даже просте = 81;ших форм интерактивl= 5;ого взаимодейсm= 0;вия, а ранние UNIX – оболочки не поддерживаl= 3;и процедур. Данная технология еще и сегодн= 103; остается относительl= 5;о незрелой. Например, Visual Basic не является в полном смысле языком описания сценариев. Первоначалn= 0;но он был разработан = 74; качестве упрощенногl= 6; языка систе = 84;ного уровня, а затем – модифицироk= 4;ан так, чтобы его было удобнее применять к описанию сценариев. Таким образом, у будущих язы = 82;ов подобного рода есть большой простор для совершенстk= 4;ования.

Кроме того, технология сценариев много выиграла от повышения п = 88;оизводител&#= 1100;ности компьютернl= 6;го оборудованl= 0;я. Еще не так давно, чтобы добиться пр = 80;емлемой скорости работы приложения любого уровня сложности, необходимо было обраща = 90;ься к языкам системного уровня. В некоторых случаях даж = 77; их эффективноl= 9;ть оказываласn= 0; недостаточl= 5;ой и программу приходилосn= 0; писать на ассемблере. Современныk= 7; машины рабо = 90;ают в 100 – 500 раз быстрее компьютероk= 4; 80 – х годов, и и = 93; производитk= 7;льность продолжает удваиватьсn= 3; примерно каждые 18 месяцев. Сегодня целый ряд приложении может быть реализован на языках описания сценариев при тем не ме&#= 1085;ее великолепнl= 6;й производитk= 7;льности. Например, TCL<= span style=3D'font-size:12.0pt'> – сценарии позволяет манипулироk= 4;ать тысячами объектов пр = 80; сохранении хорошего ур = 86;вня интерактивl= 5;ости. По мере того как компьют = 77;ры будут становитьсn= 3; быстрее и бы= 089;трее, применение языков описания сценариев будет становитьсn= 3; привлекатеl= 3;ьным для реализации все более и более масштабных приложении.

Др = 91;гие языки

Существ= ;ует огромное количество атрибутов, помимо степени строгости к = 86;нтроля типов или уровня язык = 72;, и есть очень много интересных примеров, которые не м= 086;гут быть однозначно отнесены к одной из дву= 093; рассмотренl= 5;ых нами категории. Например, семейство Lisp= занимает некоторое промежуточl= 5;ое положение, обладая атрибутами языков опис = 72;ния сценариев и языков программирl= 6;вания системного уровня. В Lisp впервыk= 7; были реализованm= 9; такие концепции, как интерпретаm= 4;ия и динамическl= 0;й контроль типов, которые широко используютl= 9;я  в современныm= 3; языках описания сц = 77;нариев, А также автоматичеl= 9;кое управление хранением и интегрировk= 2;нные среды разработки, применяемыk= 7; в языках обе= 080;х категории.=

Языки описания сценариев основаны на несколько другом наборе компромиссl= 6;в, чем языки системного уровня. В них скорость исполнения = 80; строгость контроля типов ставя = 90;ся в шкале приоритетоk= 4; на более низкое мест = 86;, но зато выше цениться производитk= 7;льность труда программисm= 0;а и повторное использоваl= 5;ие. Это соотношениk= 7; ценостеи оказываетсn= 3; все более оправданныl= 4; по мере того, &= #1082;ак компьютеры становятся быстродейсm= 0;вующими и менее дорогими, чего нельзя сказать о программисm= 0;ах. Языки системного  программиl= 8;ования хорошо подходят дл = 03; создания ко = 84;понентов, где основна = 03; сложность заключена в реализации алгоритмов = 80; структур да = 85;ных, тогда как языки описания сценариев л = 91;чше приспособлk= 7;ны  для построения приложении из готовых компонентоk= 4;, где сложность состоит в на= 083;аживании межкомпонеl= 5;тных связей. Зада= 095;и последнего рода получают вс = 77; большее рас = 87;ространени&#= 1077;, так что роль парадигмы с = 94;енариев будет возрастать = 80; в будущем ве= 082;е.

------=_NextPart_01C6D9B2.936454F0 Content-Location: file:///C:/D0C89E98/inf38.files/header.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"





10

 

7

 

------=_NextPart_01C6D9B2.936454F0 Content-Location: file:///C:/D0C89E98/inf38.files/filelist.xml Content-Transfer-Encoding: quoted-printable Content-Type: text/xml; charset="utf-8" ------=_NextPart_01C6D9B2.936454F0--