ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.12.2020

Просмотров: 1032

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

192

вые

 

классы

 

объектов

 

и

 

операции

 

над

 

ними

тем

 

самым

 

создается

потенциальная

 

возможность

 

в

 

рамках

 

единого

 

синтаксиса

 

и

 

единой

технологической

 

среды

 

иметь

 

множество

 

специализированных

 

язы

-

ков

 

программирования

 (

вот

 

она

реализованная

 

мечта

 

разработчи

-

ков

 

Алгола

-68!).

Язык

 

широко

 

используется

 

на

 

практике

для

 

него

 

не

-

сколькими

 

фирмами

в

 

том

 

числе

 Borland, 

предлагаются

 

прекрасные

технологические

 

среды

созданы

 

библиотеки

 

стандартных

 

классов

 

для

самых

 

различных

 

областей

 

применения

К

 

концу

 XX 

века

 

С

++ 

стал

стандартным

 

языком

 

профессионального

 

программирования

.

В

 

самом

 

начале

 

нового

 XXI 

века

 

появился

 

еще

 

один

 

преемник

С

 

под

 

названием

 C# (

читается

 «

си

 

шарп

»; 

музыкальный

 

знак

 

диеза

намекает

 

на

 

повышене

 

возможностей

 

базового

 

языка

). 

Он

 

был

 

пред

-

ложен

 

фирмой

 Microsoft 

как

 

оружие

 

в

 

конкурентной

 

борьбе

 

против

победного

 

шествия

 

языка

 Java, 

о

 

котором

 

мы

 

будем

 

говорить

 

ниже

.

По

 

словам

 

разработчиков

С

вобрал

 

в

 

себя

 

все

 

лучшее

 

из

 

таких

популярных

 

языков

 

как

 

Си

++, Visual Basic, Java 

и

 Object Pascal. 

Он

обеспечивает

 

быструю

 

разработку

в

 

то

 

же

 

время

 

позволяет

 

писать

эффективный

 

код

Более

 

того

фирма

 

заявила

что

 C#  — 

первый

язык

в

 

котором

 

реализована

 

принципиально

 

новая

 

концепция

 

ком

-

понентного

 

программирования

в

 

которой

 

программной

 

единицей

становится

 

не

 

объект

а

 

компонент

представляющий

 

собой

 

готовое

приложение

распространяемое

 

по

 

компьютерной

 

сети

Вопрос

 

о

том

действительно

 

ли

 

компонентное

 

программирование

 

представ

-

ляет

 

собой

 

смену

 

парадигмы

или

 

это

 — 

некоторая

 

эволюция

 

став

-

шего

 

уже

 

традиционным

 

объектного

 

программирования

на

 

сегод

-

няшний

 

день

 

является

 

дискуссионным

.

Ответ

 

на

 

него

 

даст

 

время

.

Java —

дитя

 

Интернета

Начиная

 

с

 

конца

 1995 

года

 

весь

 

компьютер

-

ный

  

мир

 

был

 

захлестнут

 

лавиной

 

реклам

-

ных

  

сообщений

серьезных

 

публикаций

 

и

просто

 

слухов

 

вокруг

 

модной

  

новинки

  — 

языка

 

программирова

-

ния

 Java, 

предложенного

 

компанией

 Sun Microsystems. 

Согласно

 

уве

-

рениям

 

разработчиков

через

 

несколько

 

лет

 Java 

должна

 

была

 

вы

-

теснить

 

все

 

существующие

 

языки

 

программирования

 

на

 

всех

 

типах

компьютеров

 — 

от

 

встроенных

 

в

 

бытовые

 

приборы

 

микропроцес

-

соров

 

до

 

суперсистем

.

Прошло

 

несколько

 

лет

пыль

 

улеглась

теперь

 

можно

 

спокойно


background image

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;
    }


background image

194

  }
}

Программы

 

на

 Java, 

называемые

 

апплетами

то

 

есть

  «

приложе

-

ньецами

», 

выполняются

 

в

 

два

 

этапа

Сначала

 

исходный

 

текст

 

ком

-

пилятором

 

переводится

 

на

 

промежуточный

 

аппаратно

-

независимый

язык

.  

В

 

таком

 

виде

 

полуфабрикат

 

программы

 (

байт

-

код

хранится

на

 

интернет

-

сервере

откуда

 

по

 

запросу

 

клиента

 

пересылается

 

ему

по

 

сети

У

 

клиента

 

байт

-

код

 

исполняется

 

специальным

 

интерпре

-

татором

этот

 

интерпретатор

 

называется

 

виртуальной

 Java-

маши

-

ной

,

 

он

 

встроен

 

во

 

все

 

современные

 

браузеры

Предполагается

что

в

 

перспективе

 Java-

машины

 

будут

 

иметься

 

во

 

всех

 

устройствах

под

-

ключаемых

 

ко

 

всемирной

 

сети

 — 

сетевых

 

терминалах

сотовых

 

те

-

лефонах

,  

разнообразных

 

бытовых

 

приборах

Тогда

 

эти

 

устройства

смогут

 

взаимодействовать

 

друг

 

с

 

другом

 

и

 

обеспечивать

 

высокий

уровень

 

сервиса

.

В

 

настоящее

 

время

 

технология

 Java 

еще

 

не

 

совсем

 

устоялась

,

идут

 

споры

 

о

 

едином

 

стандарте

при

 

этом

 

противоречия

 

доходят

 

до

уровня

 

судебного

 

разбирательства

В

 

течение

 

нескольких

 

лет

 

тя

-

нулся

 

судебный

 

спор

 

между

 

корпорацией

 Microsoft,  

попытавшей

-

стя

 «

улучшить

» 

язык

 

применитьельно

 

к

 

своему

 

браузеру

 Internet

Explorer, 

и

 

фирмой

 Sun, 

отстаивающей

 

свои

 

права

 

на

 «

чистую

» Java.

Microsoft 

этот

 

спор

 

проиграла

однако

 

с

 

поражением

 

не

 

смирилась

и

  

в

 

качестве

 

ответного

 

хода

 

выступила

 

в

 2000 

году

 

с

 

инициативой

.NET (

читается

 «

дот

 

нет

», NET 

означает

 

СЕТЬ

). 

Конечная

 

цель

 

этой

инициативы

 

такая

 

же

как

 

у

 

технологии

 Java — 

обеспечить

 

единую

среду

 

для

 

компонентного

 

сетевого

 

програмирования

когда

 

готовые

модули

 (

компоненты

), 

реализованные

  

в

 

различных

 

местах

могут

загружаться

 

по

 

сети

 

и

 

исполняться

 

на

 

различных

 

аппаратных

 

плат

-

формах

При

 

этом

 .NET 

идет

 

дальше

предполагается

  

возможность

использования

 

не

 

единственного

 

языка

 Java, 

а

 

многих

,  

в

 

частности

разработанного

 

и

 

активно

 

продвигаемого

 Microsoft  

перспективно

-

го

 

языка

 C#, 

а

 

вместо

 

медленной

 

интерпретации

 

компонента

 

вир

-

туальной

 Java-

машиной

 

предлагается

 

его

 

быстрая

 

и

 

оптимизиро

-

ванная

 

к

 

условиям

 

конкретного

 

компьютера

 

компиляция

 

в

 

момент


background image

195

загрузки

 (Just-In-Time).

По

-

видимому

в

 

ближайшие

 

годы

 

нам

 

предстоит

 

стать

 

свидете

-

лями

 «

битвы

 

гигантов

» 

на

 

поле

 

технологий

 

сетевого

 

программиро

-

вания

Кто

 

бы

 

в

 

ней

 

не

 

победил

в

 

конечном

 

счете

 

в

 

выигрыше

 

ока

-

жутся

 

программисты

получающие

 

инструмент

 

удобной

быстрой

 

и

надежной

 

разработки

 

своих

 

приложений

.

Долгожитель

 Lisp

— 

инструмент

функционального
программирования

Lisp (LISt Processing — 

обработка

 

списков

)

— 

еще

 

один

 

долгожитель

наряду

 

с

 

Форт

-

раном

 

и

 

Коболом

в

 

семье

 

языков

 

програм

мирования

Язык

 

создан

 

в

 1960 

году

 

Джо

-

ном

 

Маккарти

 (McCarthy, John; 

р

.  ) 

в

 

Мас

-

сачусетском

 

технологическом

 

институте

 

на

 

теоретическом

 

фунда

-

менте

 

так

 

называемого

 

лямбда

-

исчисления

предложенного

 

еще

 

в

1930 

году

 

известным

 

американским

 

логиком

 

Алонзо

 

Черчем

Как

 

следует

 

из

 

названия

обрабатываемым

 

объектом

 

в

 

языке

 

яв

-

ляется

 

список

а

 

программа

 

на

 

Лиспе

 — 

последовательность

 

вызо

-

вов

 

функций

нет

 

ничего

кроме

 

вызовов

 

функций

Поэтому

 

про

-

граммирование

 

на

 

таком

 

языке

 

называется

 

функциональным

Вызов

функции

 — 

это

 

список

 

вида

(<

имя

-

функции

> < 

аргумент

-1> <

аргумент

-2>...<

аргумент

-n>)

В

 

Лиспе

 

очень

 

широко

используется

 

рекурсия

в

целом

 

это

 — 

невероятно

элегантный

 

с

 

математичес

-

кой

 

точки

 

зрения

 

язык

его

совершенствовать

 

почти

невозможно

однако

 

про

-

грамма

 

на

 

нем

 

имеет

 

нео

-

бычный

 

внешний

 

вид

 

из

-

за

большого

 

количества

 

ско

-

бок

Вот

например

как

 

выг

-

лядит

 

простейшая

 

програм

-

ма

 

вычисления

 

среднего

арифметического

 

чисел

 8, 5,

13, 11, 10:

Дж

Маккарти

 

и

 

А

.

П

.

Ершов

 

в

 

ново

-

сибирском

 

Академгородке

 (1975 

г

.)


background image

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 

поколения

В

 

качестве

 

эпиграфа

 

к

 

этому

 

разделу

приведем

 

выдержку

 

из

 

предисловия

Патрика

 

Уинстона

 

к

 

учебнику

 

по

Прологу

: «

В

 

средние

 

века

 

знание

 

ла

-

тинского

 

и

 

греческого

 

языков

 

являлось

 

существенной

 

частью

 

обра

-