Скачиваний:
114
Добавлен:
15.06.2014
Размер:
4.09 Mб
Скачать

некоторых реализациях вы можете также изменить синтаксис языка или способ работы сборщика мусора.

Динамическая типизация — это означает, что вы не указываете типы переменных в программе, что делает язык гораздо лаконичней. (Как объяснено выше, является ли операция правильной, определяет объектполучатель, а не компилятор).

Model-view-controller (MVC) шаблон структуры пользовательского интерфейса. (В последнее время используют и другие концепции реализации пользовательского интерфейса – например, Morphic в Squeak и Pollock в VisualWorks).

Dynamic translation: современные коммерческие виртуальные машины компилируют байткоды в машинные коды для быстрого выполнения.

Smalltalk также использует другие современные идеи:

Сборка мусора встроена в язык и незаметна разработчику.

Программы Smalltalk’а обычно компилируются в байткоды и выполняются виртуальной машиной (ВМ), что позволяет выполнять их на любом оборудовании, для которого существует ВМ.

Одной из неожиданных особенностей Smalltalk’а является то, что традиционные конструкции: if-then-else, for, while, и т. д. не являются частью языка. Все они реализованы с помощью объектов. Например, решение принимается с помощью посылки сообщения ifTrue: логическому объекту, и передаѐт управление фрагменту текста если логическое значение истинно. Есть всего три конструкции:

посылка сообщения объекту;

присваивание объекта переменной;

возвращение объекта из метода; и несколько синтаксических конструкций для определения объектовлитералов и временных переменных.

Чтобы лучше понять, как работает механизм обмена сообщениями, можно представить каждый объект как веб-сервер, отвечающий на запросы. При этом, на запросы можно просто выдавать заранее предопределѐнный ответ, аналог этому – выдача веб-страницы, расположенной по определѐнному пути; можно перенаправить запрос-сообщение другому объекту, аналог – прокси-сервер; изменить запрос по определѐнным правилам, аналог – техника url rewriting. Если для реакции на сообщение нет предопределѐнного метода, то вызывается метод #doesNotUnderstand:, так же, как веб-сервер открывает страницу с сообщением об ошибке, если задан несуществующий путь к веб-странице.

Следующий пример, показывающий нахождение гласных в строке, иллюстрирует стиль Smalltalk’а. Символ | определяет переменные, : определяет параметры, а символы [ и ] можно, для начала, воспринимать, как аналог фигурных скобок { и } в С-подобных языках:

| aString vowels |

aString := 'This is a string'.

vowels := aString select: [:aCharacter | aCharacter isVowel].

В последней строке посылается сообщение select: с аргументом (блоком кода). При этом вызывается метод select: из класса Collection (одного из предков класса String). Текст этого метода показан ниже:

select: aBlock

| newCollection |

newCollection := 1/>self species new. 1/>self do: [:each |

(aBlock value: each)

ifTrue: [newCollection add: each]]. ^newCollection

Он осуществляет перебор своих элементов (это метод do:), выполняя переданный ему блок aBlock для каждой буквы; когда блок выполняется (в примере – aCharacter isVowel), он создаѐт логическое значение, которому затем посылается ifTrue:. Если это значение true, то буква добавляется в возвращаемую строку. Из-за того что select: определѐн в абстрактном классе Collection, мы также можем использовать его так:

| rectangles aPoint|

rectangles := OrderedCollection

with: (Rectangle left: 0 right: 10 top: 100 bottom: 200) with: (Rectangle left: 10 right: 10 top: 110 bottom: 210).

aPoint := Point x: 20 y: 20.

collisions := rectangles select: [:aRect | aRect containsPoint: aPoint].

ЛИТЕРАТУРА

1.Аладьев В.З., Хунт Ю.А., Шишаков М.Л. Основы информатики. – М.: Филинъ, 1999.

2.Заморин А.П. Этапы эволюции ЭВМ. – М.: Знание, 1987.

3.Каган Б.М. Электронные вычислительные машины и системы. – М.: Энергия, 1999.

4.Корнеев В.В. Параллельные вычислительные системы. – М.: Нолидж,

1999.

5.Лысиков Б.Г. Арифметические и логические основы цифровых автоматов: Учебник для вузов. – Мн.: Выш. шк., 1980.

6.Майерс Г. Архитектура современных ЭВМ: В 2 кн./ Пер. с англ.; Под ред. В.К. Потоцкого. – М.: Мир, 1985.

7.Майоров С.А., Новиков Г.И. Структура ЭВМ. – Л.: Машиностроение,

1979.

8.Перспективы развития вычислительной техники: Справ. пособие в 11 кн. Кн. 2. /Под ред. Ю.М. Смирнова. – М.: Высш. шк., 1989.

9.Перспективы развития вычислительной техники: Справ. пособие в 11 кн. Кн. 3. /Под ред. Ю.М. Смирнова.– М.: Высш. шк., 1989.

10.Сименс Дж. ЭВМ пятого поколения. Компьютеры 90-х годов. – М.: Финансы и статистика, 1986.

11.Шпаковский Г.И. Параллельные микропроцессоры для цифровой обработки сигналов и медиаданных. – Мн.: БГУ, 2000.

12.Фути К., Судзуки Н. Языки программирования и схемотехника СБИС: Пер. с япон. – М.: Мир, 1988.

13.Головкин Б.А. Параллельные вычислительные системы. – М.: Наука,

1980.

14.Голенков В.В. и др. Программирование в ассоциативных машинах. –

Мн.: БГУИР, 2001.

15.Голенков В.В. и др. Представление и обработка знаний в графодинамических ассоциативных машинах. – Мн.: БГУИР, 2001.

16.Голенков В.В. и др. Семантическая модель сложноструктурированных баз данных и баз знаний: Учеб. пособие. – Мн.: БГУИР, 2004.

17.Хамахер К., Вранешич Э., Заки С. Организация ЭВМ. – СПб.: Питер, 2004.

18.Таненбаум Э. Архитектура компьютера. – СПб.: Питер, 2002.

203