КЛАСС=
;ИФИКАЦИЯ
ЯЗЫКОВ
ПРОГРАММИР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=
span>, Prolog. =
1054;ни
менее
универсальl=
5;ы,
чем
перечиленнm=
9;е
выше
средства.=
Вторая
классификаm=
4;ия
делит языки
на выч=
;ислительны
=
77;
и языки символьно=
081;
обработки.=
o:p>
К
первому тип
=
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=
i> считыв=
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=
span>, 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"