ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.12.2020
Просмотров: 1077
Скачиваний: 1
192
вые
классы
объектов
и
операции
над
ними
,
тем
самым
создается
потенциальная
возможность
в
рамках
единого
синтаксиса
и
единой
технологической
среды
иметь
множество
специализированных
язы
-
ков
программирования
(
вот
она
,
реализованная
мечта
разработчи
-
ков
Алгола
-68!).
Язык
широко
используется
на
практике
,
для
него
не
-
сколькими
фирмами
,
в
том
числе
Borland,
предлагаются
прекрасные
технологические
среды
,
созданы
библиотеки
стандартных
классов
для
самых
различных
областей
применения
.
К
концу
XX
века
С
++
стал
стандартным
языком
профессионального
программирования
.
В
самом
начале
нового
XXI
века
появился
еще
один
преемник
С
под
названием
C# (
читается
«
си
шарп
»;
музыкальный
знак
диеза
намекает
на
повышене
возможностей
базового
языка
).
Он
был
пред
-
ложен
фирмой
Microsoft
как
оружие
в
конкурентной
борьбе
против
победного
шествия
языка
Java,
о
котором
мы
будем
говорить
ниже
.
По
словам
разработчиков
,
С
#
вобрал
в
себя
все
лучшее
из
таких
популярных
языков
как
Си
++, Visual Basic, Java
и
Object Pascal.
Он
обеспечивает
быструю
разработку
,
в
то
же
время
позволяет
писать
эффективный
код
.
Более
того
,
фирма
заявила
,
что
C# —
первый
язык
,
в
котором
реализована
принципиально
новая
концепция
ком
-
понентного
программирования
,
в
которой
программной
единицей
становится
не
объект
,
а
компонент
,
представляющий
собой
готовое
приложение
,
распространяемое
по
компьютерной
сети
.
Вопрос
о
том
,
действительно
ли
компонентное
программирование
представ
-
ляет
собой
смену
парадигмы
,
или
это
—
некоторая
эволюция
став
-
шего
уже
традиционным
объектного
программирования
,
на
сегод
-
няшний
день
является
дискуссионным
.
Ответ
на
него
даст
время
.
Java —
дитя
Интернета
Начиная
с
конца
1995
года
весь
компьютер
-
ный
мир
был
захлестнут
лавиной
реклам
-
ных
сообщений
,
серьезных
публикаций
и
просто
слухов
вокруг
модной
новинки
—
языка
программирова
-
ния
Java,
предложенного
компанией
Sun Microsystems.
Согласно
уве
-
рениям
разработчиков
,
через
несколько
лет
Java
должна
была
вы
-
теснить
все
существующие
языки
программирования
на
всех
типах
компьютеров
—
от
встроенных
в
бытовые
приборы
микропроцес
-
соров
до
суперсистем
.
Прошло
несколько
лет
,
пыль
улеглась
,
теперь
можно
спокойно
193
обсудить
феномен
Java,
его
достоинства
и
недостатки
.
Язык
Java
появися
в
связи
с
развитием
сети
Интернет
.
Когда
на
смену
статичным
Web-
страницам
пришли
разнообразные
приложе
-
ния
—
от
прыгающих
фигурок
до
серьезных
и
ответственных
кли
-
ентских
программ
электронной
торговли
,
встал
вопрос
о
выборе
языка
для
сетевого
программирования
.
Требования
изначально
были
очень
высокими
:
язык
должен
быть
аппаратно
независимым
,
так
как
в
сеть
включены
самые
разнообразные
компьютеры
;
безопас
-
ным
,
чтобы
загружаемые
по
сети
программы
не
могли
выступить
в
качестве
троянского
коня
для
хакеров
;
компактным
и
эффективным
,
не
предъявляющим
чрезмерных
требований
к
аппаратуре
;
универ
-
сальным
и
т
.
п
.
Язык
Java
в
значительной
степени
удовлетворяет
всем
эти
тре
-
бованиям
.
В
качестве
прототипа
разработчики
использовали
C++,
сохранив
его
синтаксис
и
объектность
,
но
очистив
от
излишних
сложностей
и
опасных
с
точки
хрения
безопасности
возможностей
,
таких
как
множественное
наследие
и
указатели
.
Достаточно
одного
взгляда
,
чтобы
увидеть
сходство
программ
на
С
++
и
Java,
однако
текст
Java
немыслим
без
описаний
классов
,
он
более
чист
с
точки
зрения
объектности
.
Вот
как
выглядит
на
Java
та
же
самая
программа
вычисления
среднего
арифметического
массива
чисел
:
class test
{
int i, n;
float s;
float x[n];
public static void main( String args[] )
{
//
чем
массив
x
заполнен
?
//
чему
равняется
n ?
n = 10;
s = 0;
for( i=1; i<=n; i++)
{
s = s + x[i-1];
s = s / n;
}
194
}
}
Программы
на
Java,
называемые
апплетами
,
то
есть
«
приложе
-
ньецами
»,
выполняются
в
два
этапа
.
Сначала
исходный
текст
ком
-
пилятором
переводится
на
промежуточный
аппаратно
-
независимый
язык
.
В
таком
виде
полуфабрикат
программы
(
байт
-
код
)
хранится
на
интернет
-
сервере
,
откуда
по
запросу
клиента
пересылается
ему
по
сети
.
У
клиента
байт
-
код
исполняется
специальным
интерпре
-
татором
,
этот
интерпретатор
называется
виртуальной
Java-
маши
-
ной
,
он
встроен
во
все
современные
браузеры
.
Предполагается
,
что
в
перспективе
Java-
машины
будут
иметься
во
всех
устройствах
,
под
-
ключаемых
ко
всемирной
сети
—
сетевых
терминалах
,
сотовых
те
-
лефонах
,
разнообразных
бытовых
приборах
.
Тогда
эти
устройства
смогут
взаимодействовать
друг
с
другом
и
обеспечивать
высокий
уровень
сервиса
.
В
настоящее
время
технология
Java
еще
не
совсем
устоялась
,
идут
споры
о
едином
стандарте
,
при
этом
противоречия
доходят
до
уровня
судебного
разбирательства
.
В
течение
нескольких
лет
тя
-
нулся
судебный
спор
между
корпорацией
Microsoft,
попытавшей
-
стя
«
улучшить
»
язык
применитьельно
к
своему
браузеру
Internet
Explorer,
и
фирмой
Sun,
отстаивающей
свои
права
на
«
чистую
» Java.
Microsoft
этот
спор
проиграла
,
однако
с
поражением
не
смирилась
и
в
качестве
ответного
хода
выступила
в
2000
году
с
инициативой
.NET (
читается
«
дот
нет
», NET
означает
СЕТЬ
).
Конечная
цель
этой
инициативы
такая
же
,
как
у
технологии
Java —
обеспечить
единую
среду
для
компонентного
сетевого
програмирования
,
когда
готовые
модули
(
компоненты
),
реализованные
в
различных
местах
,
могут
загружаться
по
сети
и
исполняться
на
различных
аппаратных
плат
-
формах
.
При
этом
.NET
идет
дальше
:
предполагается
возможность
использования
не
единственного
языка
Java,
а
многих
,
в
частности
разработанного
и
активно
продвигаемого
Microsoft
перспективно
-
го
языка
C#,
а
вместо
медленной
интерпретации
компонента
вир
-
туальной
Java-
машиной
предлагается
его
быстрая
и
оптимизиро
-
ванная
к
условиям
конкретного
компьютера
компиляция
в
момент
195
загрузки
(Just-In-Time).
По
-
видимому
,
в
ближайшие
годы
нам
предстоит
стать
свидете
-
лями
«
битвы
гигантов
»
на
поле
технологий
сетевого
программиро
-
вания
.
Кто
бы
в
ней
не
победил
,
в
конечном
счете
в
выигрыше
ока
-
жутся
программисты
,
получающие
инструмент
удобной
,
быстрой
и
надежной
разработки
своих
приложений
.
Долгожитель
Lisp
—
инструмент
функционального
программирования
Lisp (LISt Processing —
обработка
списков
)
—
еще
один
долгожитель
,
наряду
с
Форт
-
раном
и
Коболом
,
в
семье
языков
програм
мирования
.
Язык
создан
в
1960
году
Джо
-
ном
Маккарти
(McCarthy, John;
р
. )
в
Мас
-
сачусетском
технологическом
институте
на
теоретическом
фунда
-
менте
так
называемого
лямбда
-
исчисления
,
предложенного
еще
в
1930
году
известным
американским
логиком
Алонзо
Черчем
Как
следует
из
названия
,
обрабатываемым
объектом
в
языке
яв
-
ляется
список
,
а
программа
на
Лиспе
—
последовательность
вызо
-
вов
функций
;
нет
ничего
,
кроме
вызовов
функций
.
Поэтому
про
-
граммирование
на
таком
языке
называется
функциональным
.
Вызов
функции
—
это
список
вида
(<
имя
-
функции
> <
аргумент
-1> <
аргумент
-2>...<
аргумент
-n>)
В
Лиспе
очень
широко
используется
рекурсия
,
в
целом
это
—
невероятно
элегантный
с
математичес
-
кой
точки
зрения
язык
,
его
совершенствовать
почти
невозможно
,
однако
про
-
грамма
на
нем
имеет
нео
-
бычный
внешний
вид
из
-
за
большого
количества
ско
-
бок
.
Вот
,
например
,
как
выг
-
лядит
простейшая
програм
-
ма
вычисления
среднего
арифметического
чисел
8, 5,
13, 11, 10:
Дж
.
Маккарти
и
А
.
П
.
Ершов
в
ново
-
сибирском
Академгородке
(1975
г
.)
196
(setq L `(8 5 13 11 10))
(defun sum (L)
(cond ((null L) '0)
(t (add (car L) (sum (cdr L))))
)
)
(div (sum L) '5)
В
первой
строке
создается
список
L
из
пяти
элементов
,
штрихи
обозначают
константы
,
в
данном
случае
выражение
в
скобках
есть
сам
список
и
его
не
нужно
интерпретировать
как
вызов
функции
.
Затем
задается
рекурсивное
определение
новой
функции
сум
-
мировния
элементов
списка
(sum L)
через
примитивные
функции
:
cond —
условная
функция
,
проверяющая
с
помощью
функции
null
пустоту
списка
;
add —
суммирование
аргументов
;
car
—
извлечение
первого
элемента
из
списка
;
cdr
—
извлечение
остатка
списка
(
без
первого
элемента
).
Последняя
строка
вызывает
примитивную
функцию
деления
,
причем
в
качестве
делимого
выступает
результат
вызова
функции
суммирования
(sum L).
Сразу
после
появления
Лисп
стал
очень
популярным
прежде
всего
как
язык
для
решения
логических
задач
.
Он
очень
легко
реа
-
лизуется
на
аппаратном
уровне
,
в
настоящее
время
специализиро
-
ванные
Лисп
-
процессоры
широко
используются
в
системах
искус
-
ственного
интеллекта
для
военных
применений
,
например
,
в
сис
-
темах
самонаведения
крылатых
ракет
.
Более
того
,
Лисп
,
несмотря
на
некоторую
громоздкость
,
широко
применяется
в
США
как
вы
-
числительный
язык
,
уступая
по
распространенности
только
Форт
-
рану
.
В
частности
,
в
знаменитой
системе
автоматизированного
про
-
ектирования
AutoCAD
используется
диалект
Лиспа
под
названием
AutoLisp.
Prolog —
несбывшаяся
мечта
ЭВМ
V
поколения
В
качестве
эпиграфа
к
этому
разделу
приведем
выдержку
из
предисловия
Патрика
Уинстона
к
учебнику
по
Прологу
: «
В
средние
века
знание
ла
-
тинского
и
греческого
языков
являлось
существенной
частью
обра
-