prepod

Путь к Файлу: /РОССИЙСКИЙ НОВЫЙ УНИВЕРСИТЕТ / Smalltalk / Элементы языка Smalltalk.doc

Ознакомиться или скачать весь учебный материал данного пользователя
Скачиваний:   1
Пользователь:   prepod
Добавлен:   04.05.2015
Размер:   191.5 КБ
СКАЧАТЬ

Глава 2. Введение в Смолток

2.1. Что такое Смолток?

Смолток можно рассматривать как еще один язык программирования, имеющий свои правила синтаксиса для описания классов, объектов, методов и сообщений, а также свои собственные правила грамматики для анализа выражений.  Однако большинство применений Смолтока обеспечивают больше, чем просто язык – они предоставляют среду программирования, библиотеку классов и постоянный запас объектов. Все они создают сочетание при создании единой структуры для разработки объектно-ориентированных приложений.

2.1.1. Язык

По сравнению с обычными языками программирования, такими как Си или Паскаль, Смолток имеет необычный синтаксис. Вдобавок Смолток не применяет понятия "тип". Объекты применяются, чтобы отобразить всевозможные понятия: меню, окна и даже сам компилятор. Смолток поэтому описывается как полностью объектно-ориентированный язык.

Однако, правила синтаксиса Смолтока (см. главу 3) просты и содержательны. Когда мы освоим эти правила, то поймем, что это простой язык, как для чтения, так и для письма. Его не сложнее освоить, чем Лисп или Форт. Так же, как и приверженцы этих языков, большинство программистов на Смолтоке утверждают, что его синтаксис самый мощный и простой среди языков.

2.1.2. Среда программирования

Смолток был одной из первых систем, проводящих так называемый принцип "WIMP" (Windows, Icons, Menus & Pointer ) интерфейса. Ничего удивительного в том, что современные системы программирования предоставляют программистам много средств, которые дают им новые возможности просматривать существующие классы и копировать и улучшать написанные ранее коды (глава 6). Дополнительные средства выдачи позволяют программистам без затруднений совершенствовать и корректировать созданные коды. Другие средства дают программистам возможность доступа к основным файловым системам (глава 6), от которых существующие исходные коды, возможно, произошли. В дополнение Смолток имеет средства управления изменениями. Они имеют форму Projects, которая может использоваться применительно к содержанию определенного программного обеспечения, а также браузеры для просмотра отдельных изменений (глава 24). Так как Смолток имеет возможность расширения, программисты могут объединять в разных вариантах эти существующие средства или создавать в своих интересах новые.

Смолток также первым реализовал идею расширяющегося компилятора. Это означает, что программисты могут обойтись без утомительных сеансов компиляции и связывания и получить внутреннее наслаждение  от быстрой компиляции, позволяющей им осуществлять истинно творческий подход к разработке программного обеспечения. Этот подход дает им возможность развивать программное обеспечение по частям, исследуя идеи по мере их оформления.

Совмещение развивающегося компилятора и символического отладчика, которые предоставляют доступ к исходным кодам, дают возможность программистам инспектировать и совершенствовать активные в данный момент объекты, проводить в процессе работы тестирование, совершенствовать и заново компилировать существующий код, а затем заново запускать выполнение выражений. Путем введения в выбранные места контрольных точек программист получает возможность поэтапно продвигаться через выполнение кода (глава 23).

Таким образом, система программирования Смолтока способствует процессу, который развивает стиль итеративной разработки приложения. Программист имеет возможность развивать частные решения, испытывать их, расширять функциональные возможности системы, испытывать их и так далее до получения полного решения. 

2.1.3. Библиотека классов

Несмотря на название, Смолток не так уж и мал – уже в Смолтоке-80 насчитываются сотни классов и тысячи методов, и все это готово к употреблению в реальном времени, так как записано в исходном коде.  (Смолток почти весь записан на Смолтоке, только малое ядро записано в машинном коде). Классы могут и далее совершенствоваться при использовании механизма наследования или могут применяться другими объектами как внутренние переменные. Следовательно, требуются минимальные усилия, чтобы создать новые приложения.

Библиотека классов включает:

· Различные подклассы класса Number. Среди них Integer, Float и Fraction.

· Разные структуры данных. В их числе Set, Bag, Array, OrderedCollection, SortedCollection и Dictionary.

· Классы для представления текста, шрифта, цвета и так далее.

· Геометрические понятия, то есть Point, Rectangle, Circle, Polygon и так далее.

· Классы, способствующие взаимосовместимости. Например, Process и Semaphore.

2.1.4. Постоянное хранение объектов

Система Смолтока состоит из двух частей:

·   Виртуального образа (virtual image) или просто "образа", содержащего все объекты в системе.

·   Виртуальной машины (VM) или просто "ВМ", состоящей из аппаратной и программной частей, чтобы придать динамику объектам в образе. (Каждая аппаратная платформа требует собственной ВМ).

Эти методы реализации использованы по следующим соображениям:

· Обеспечить переносимость виртуального образа. Всякий образ в Смолтоке должен выполняться на любой виртуальной машине. Образ (в большинстве случаев) изолирован от реализации ВМ (как от аппаратной, так и от программной части).

· Система Смолтока очень велика, и большая часть ее функциональных возможностей заключается в образе. Это облегчает реализацию, так как нужно создать только сравнительно простую ВМ.

Раз вся рабочая среда  сохранена (образ), Смолток тоже работает как постоянное хранилище объектов. Это дает возможность программисту создавать новые классы и даже новые их экземпляры, а также сохранять их от одного сеанса работы до другого. implementation

2.2. Реализация Смолтока

Существует много версий Смолтока, как коммерческих, так и в общем пользовании. Сходство между ними превосходит их различия. Рассмотрим одну из самых распространенных версий.

2.2.1. Смолток-80

Смолток-80 – это последний из последовательности разработок Смолтока, начатой еще в 1970 в Xerox Palo Alto Research Center (PARC). Он может рассматриваться как наследник других реализаций Смолтока. Более ранние версии, включая Смолток-70 и Смолток-72, служили в только исследовательским целям. Смолток-80 стал коммерческим продуктом в конце 1980-х годов, когда из PARC выделилась компания дистрибьютор ParcPlace Systems, объединившая разработчиков Смолтока. В последнее время версии Смолтока выпускаются под названием VisualWorks (мы рассматриваем версию 7.2).

Продукт, точнее систему VisualWorks отличают от многочисленных других версий следующие свойства:

· Его библиотека классов считается самой полной и широко применимой (использованы все возможные источники).

· Его большая переносимость – VisualWorks реализуема на различных платформах, включая Apple Macintosh, Sun, HP и MS-Windows. Виртуальный образ созданный одной из этих машин, будет действовать на любой другой без перекомпиляции.

· Его средства – VisualWorks имеет самый богатый набор готовых к применению средств.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 3: Основы языка

Что такое синтаксис языков программирования?

Синтаксис Смолтока прост, но довольно необычен по сравнению с общепринятыми языками. Темы этой главы включают синтаксис выражений, литералов и переменных, правила анализа, краткое введение в блоки и введение в переменные.

3.1. Синтаксис выражений Смолтока

Ясно, что синтаксис выражений нужен, чтобы объяснить, как объекты взаимодействуют друг с другом. Выражение представляет собой последовательность знаков, описывающих объект и называемых значением выражения.

Соответствующая VisualWorks версия Smalltalk’а согласуется со стандартами ANSI для синтаксиса этого языка, но использует некоторые расширения. Описание синтаксиса в форме Бэкуса-Наура дается в Приложении А “Описание синтаксиса версии Smalltalk’а для VisualWorks”.

Допускаются четыре типа выражений:

· Литералы описывают постоянные объекты: числа, знаки, строки, символы и массивы.

· Названия переменных описывают доступные переменные. Значение названия переменной представляет собой текущее значение переменной под этим названием.

· Выражения сообщений описывают сообщения, посылаемые получателям. Значение выражения определяется методом, который им вызван.

· Блоковые выражения описывают отложенные действия. Блоки часто используются в управляющих структурах.

3.2. Литералы

Одно из простейших выражений в Смолтоке – это выражение "в литералах". Далее мы дадим описание синтаксиса этих постоянных объектов.

3.2.1. Числа

Число представляет собой последовательность цифр, с возможным введением знака минус и возможной десятичной точки. Возможный одиночный знак плюс не применяется. Примеры включают:

8       12.7        -0.0007

Числа могут быть представлены в другой системе счисления, посредством предшествующего основания и буквы "r":

     16r5E       2r100011  3r00101

3.2.2. Знаки    

Знак – это отдельная буква алфавита или цифра, или просто знак, которым предшествует знак доллара "$".

$D       $+       $$       $9       $х

3.2.3. Строки

Строка представляет собой последовательность знаков, заключенная в одинарные кавычки. Например,

'test string'       'string with'       'embedded single quote'

3.2.4. Символы

Символ есть объект, который представляет строку, используемую в Смолтоке в качестве названия. Символ представлен с возможным окружением одинарными кавычками и с использованием перед ним знака "#". Символы всегда единственны. Например,  

#initialize       #W80       #temp       #'3x'

3.2.5. Массивы литералов

Литералы вставлены в скобки, и им предшествует знак "#". Один массив, "вставленный" в другой может не содержать знака "#". Например,

#(40 41 42)       #((1 '2') ('first' #second))       #(1 'one' ($5 'five'))

3.2.6. Массив байтов

Массив байтов представляет собой последовательность байтов (целые числа от 0 до 255), окруженные квадратными скобками, а им предшествует знак "#". Например,

#[1 2 3 0]       #[16rFF 0 2r111 2e2]

 

3.3. Переменные

Переменные указывают на объект. Название переменной представляет собой выражение, относящееся к объекту. Названия переменных представляют собой идентификаторы (указатели) из букв и цифр, которые начинаются только с буквы:

someObject       integer       Smalltalk       temp3

Когда они создаются из более, чем одного слова, то первая буква каждого последующего слова идентификатора заглавная. Мы должны строго выполнять это правило – оно действует в любом образе.

3.4. Псевдопеременные

Это название относится к объектам, которые не могут изменяться; к их числу относятся:

nil      Значение, используемое, когда никакое другое не подходит, например, неинициализированные переменные. nil является единственным экземпляром класса UndefinedObject.

true   Представляет истину, единственный экземпляр класса True.

false  Представляет ложь, единственный экземпляр класса False.

Классы True и False являются подклассами класса Boolean.

3.5. Сообщения

Выражение сообщения состоит из получателя, селектора и, возможно, нескольких аргументов. Основное описание посылки сообщения в Смолтоке имеет вид:

<receiver>       <message>,

где <receiver> есть название некоторого известного объекта, а <message> представляет собой сообщения: унарное, бинарное или ключевое слово, включая аргументы.

3.5.1. Унарные сообщения.

Унарные сообщения представляют собой самый простой тип сообщений в Смолтоке. За объектом следует единственное слово (селектор сообщения) и никаких аргументов. Селектор не должен иметь никаких двоеточий. Например:

100 factorial       Window new       anArray size

theta sin         4 even     

3.5.2. Бинарные сообщения

Бинарные сообщения более сложны, так как они также имеют один аргумент, связанный с этим сообщением. Селектор представляет собой один или два не принадлежащих к алфавиту знака, второй из которых не должен быть знаком минус. Существующие бинарные сообщения в текущем образе Смолтока включают:

+

-

/

*

=

~=

& (логическое "и")

>=

// (деление нацело)

 

, (конкатенация)

| (логическое или)

 

 

Эти бинарные сообщения в последующих главах будут описаны более подробно.

2 + 3

true & false

3 * 4

100 // 17

index - 1

3.5.3. Сообщения ключевые слова

Сообщения ключевые слова это самый сложный тип сообщений. Структура этого типа сообщений состоит из одного или более ключевых слов, каждое из которых имеет свой собственный аргумент. Например, в сообщении

anArray copyFrom: 1 to: 3

copy From: и  to: являются ключевыми словами, а числа 1 и 3 являются аргументами. Заметим, что каждое ключевое слово должно заканчиваться двоеточием. Сообщение не может иметь более, чем 255 ключевых слов. Аргумент может быть выражением, представляющим объект.

Другие примеры:

Index max: limit

anArray at: 2

3.6. Правила анализа

Очередность выполнения выражений Смолтока такова:

1) Унарные сообщения слева направо;

2)  Бинарные сообщения слева направо;

3)  Ключевые слова слева направо.

Эти правила совсем непохожи на правила многих других языков, где очередность зависит от функции. Здесь не существует алгебраической иерархии. Однако, как и во многих других языках программирования, круглые скобки используются для изменения порядка очередности. Стоит рассмотреть несколько примеров:

В примере

1.5 tan rounded

унарное сообщение tan послано 1.5, а унарное сообщение rounded послано объекту-результату.

Таким же образом для бинарных сообщений:

a + b * 2

вернет "удвоенное (a+b)". Чтобы получить "(удвоенное b) + a", выражение должно быть записано так:

a + (b * 2)

Скобки также имеют первоочередность по сравнению с унарными сообщениями.

В примере

(anArray at: 14) even

сообщение even посылается 14-му элементу объекта anArray, тогда как в выражении

 anArray at: 14 even

сообщение even посылается 14 и делается попытка использовать результат (true) как индекс для anArray. Это, вероятно, ошибка. !!!

Когда множественное ключевое слово появляется в выражении, то оно анализируется, как одинарное ключевое слова. Например:

frame scale: factor max: 5

содержит селектор ключевого слова (scale:max:) с двумя аргументами factor и 5. Обратно:

frame scale: (factor max: 5)

посылает ключевое слово max: 5 объекту factor и использует результат в качестве аргумента селектору scale: ключевого слова, который послан объекту frame.

Следовательно, важно получить практический опыт, чтобы иметь дело со случаями, когда ключевые слова размещаются вместе:

2 raisedTo: 3 raisedTo: 7

Так как нет селектора сообщения raisedTo:raisedTo:, приведенное сообщение даст в результате ошибку. Также важно заметить, что:

(2 raisedTo: 3) raisedTo: 7 не равно 2 raisedTo: (raisedTo: 7)

Пренебрежение скобками в подобных случаях – это обычный источник ошибок.

Скобки всегда могут использоваться для уточнения целей выражения. Тем не менее пользуйтесь ими осторожно, иначе станут источниками путаницы.

Упражнение 3.1: Определить результаты каждого из следующих выражений Смолтока.

2+3 negated

2 raisedTo: 3 +7

(2 raisedTo: 3) + 7

2 raisedTo: 3 + 7 negated

(2 raisedTo: 3) +7 negated

(2 raisedTo: 3 + 7) negated

3.7. Назначения

Название переменной может относиться в разное время к разным объектам. Выражение назначения может быть использовано для назначения объекта переменной. Оно выглядит так:

<variable> := <message send>

Примеры:

newIndex := 1

this := that

someString := 'Part Two'

anArray := #(1 2 3 4 5)

Выражение назначения возвращает значения (как и другие выражения), поэтому разные назначения могут вводиться вместе.

this := that := theOther

stop := end := 0

Упражнение 3.2: Каков результат каждой из приведенных операций присвоения?

a := 5 raisedTo: 3.

a := (b := 5) * 66.

a := 3 * (2 raisedTo: (b :=)).

3.8. Возврат

После окончания выполнения каждый метод Смолтока возвращает объект отправителю сообщения. Если не определено никакого объекта, то возвращается сам получатель.

Если должны быть возвращены другие объекты, то для возврата объекта и окончания выполнения (хотя он не обязательно должен быть в конце последовательности, являющейся сообщением) используется символ "^". Любой объект может быть возвращен таким образом.

3.9. Блоки

Блок является отложенной последовательностью сообщений. Блок представлен последовательностью выражений (разделенных точками), заключенными в квадратные скобки. Например,

aBlock := [index + 2]

aBlock := [anArray at: newIndex put: 42]

Выражения в блоке выполняются, когда блок получает сообщение value. Например,

aBlock := [a:= 0]. 

aBlock value

Когда aBlock получает сообщение value, то выполняются его выражения в сообщении, в нашем случае вызывая переменную a сослаться на целое число 0.   

Блоки применяются, чтобы ввести управляющие структуры (см. главу 10). Примеры включают:

aNumber even

ifTrue: [aString := 'even']

ifFalse: [aString := 'odd']

 

 

[index > 0]

whileTrue: [index := index 1]

3.10. Снова переменные

Постоянная "частная" память объекта уже введена. Термин переменные экземпляра используется для описания переменных, представляющих частную память объекта, так как они используются для представления частной памяти экземпляра класса. 

Переменные экземпляра применяются только к определенному объекту, в котором они содержатся. Это просто названия указателей на другие объекты и всегда начинают свое существование как nil. Каждый экземпляр класса имеет свою внутреннюю копию переменной экземпляра.

Также предусмотрены и другие типы переменных; кратко их опишем:

Временные

переменные

Существуют только в течение продолжительности определенной деятельности (то есть выполнения метода).

Переменные класса

Совместно используются всеми экземплярами данного класса

Глобальные

переменные

Совместно используются всеми экземплярами всех классов (то есть всех объектов). Не следует использовать глобальные переменные иначе, чем при экспериментах.

Переменные

пула

Используются всеми экземплярами некоторых классов, и потому представляют собой способ создания общего хранилища объектных классов. Переменные пула применяются очень редко. 

 По правилам частные переменные (переменные экземпляра, временные переменные) начинаются с маленькой буквы, тогда как переменные совместного использования (переменные класса, глобальные переменные, переменные пула) начинаются с заглавной буквы.

3.11. Комментарии

Текст, который предназначен только для документации, заключается в двойные кавычки (").

3.12. Резюме

Данная глава содержит введение в синтаксис языка Смолток, охватывая большинство важных свойств. Однако, в дальнейших главах рассматривается более широкое использование синтаксиса. В частности, позднее мы вернемся к разным видам переменных: глава7 дает примеры глобальных переменных, а глава 12 дает примеры дет примеры переменных класса и пула.

Кроме того, мы более детально рассмотрим блоки в главах 10 и 17. Между тем, в следующих нескольких главах мы введем разработанный в VisualaWorks интерфейс пользователя, так что попутно вы продолжаете знакомство с использованием синтаксиса.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 4:

Подготовка к изучению интерфейса пользователя

В этой главе дается краткое введение в предметы, видимые на экране, и их отношение с вещами из окружающей среды. Среди них браузеры и рабочие поля, подсказчики и меню. Также рассматриваются комбинация мыши и курсора, экрана и клавиатуры.

За этим введением следует рассказ, как начать (и кончить) VisualWorks. Естественно эта сторона повествования в определенной степени зависит от машины пользователя и его операционной системы. Предусмотрена и будущая дискуссия о важности мгновенной оценки состояния, об "исходных" и измененных файлах.

4.1 Windows (Окна)

Интерфейс пользователя в VisualWorks состоит из одного или более пересекающихся окон, каждое из которых может содержать текст или графику. Окна управляются главным по окнам разных платформ управлением и не являются частью VisualWorks.

Каждое окно преобразуется, с использованием механизма первичного управления окнами, но может также управляться через VisualWorks.

Разные типы окон применяются в качестве стандарта. В их число входят окна со следующими названиями:

VisualWorks

Окно с разделами меню и кнопками для запуска разных окон (поэтому известное как 'Launcher'). Может также содержать область, известную как 'System 'Transcript'. Мы рекомендуем держать это окно открытым, чтобы было видно сообщения по мере их проявления.

Workspace

Главная арена работы и ввода.

System Browser

Предназначен для управления частью иерархии классов.

Class Browser

Предназначен для управления одиночным классом.

System Transcript

Отображение "системных" сообщений.

File Browser

Обеспечивает доступ к основной системе файлов.

Inspector

Раскрывает или изменяет состояние любого объекта.

Debugger

Следует или корректирует пути выполнения.

Change List Browser

Управляет изменениями образа

Образ в среде VisualWorks содержит много кодов и общий механизм для создания новых окон.

4.2. Меню, подсказчики и прочее

Часть этих вещей может появиться на экране. В их числе будут:

Menus

Широко применяются в сочетании с окнами. Это позволяет пользователю, используя окно, выбирать любой предмет.

Confirmers

Требует от пользователя подтвердить запрос или отказаться от него.

Prompters

Механизм подсказки пользователю, как отпечатать запрос.

Informers

Информирует пользователя о том, что его запрос ошибочен.

Notifiers

Средства, которые в VisualWorks показывают, что некоторые события произошли. Это может быть ошибка или другое прерывание.

4.5. Применение VisualWorks

В нашей папке должны быть представлены следующие файлы:

visual.im

Это файл образа, представляющий текущее состояние действий Смолтока.

visual.sou

Содержит исходный код для всех классов и методов образа. В распределенных файловых системах это файл имеется везде.

visual.cha

Этот файл содержит изменения, введенные в файл в файл образа, с момента его создания. В нем записаны все новые или измененные методы.

Если любой из этих файлов потерян, то мы не будем иметь возможности запускать VisualWorks. Очень важно, чтобы visual.im и visual.cha оставались без изменений, поэтому не рекомендуется менять содержание этих файлов. Чтобы выйти из системы VisualWorks, нажимаем кнопку удаления справа вверху окна запуска (Launcher), и тогда возникает окно подтверждения (сохранить ли содержимое или выйти не сохраняя):

 Элементы языка Smalltalk

Если же в окне Launcher в меню File выбрать вариант Exit VisualWorks…, возникнет другой вариант окна подтверждения, где ответ надо дать ответ на вопрос, сохранять ли файл перед выходом:

Элементы языка Smalltalk

Образ может быть сохранен без остановки функционирования системы VisualWorks, если в меню File окна запуска выбрать Save as…

4.6. Окно запуска (Launcher)

Launcher дает возможность применять множество разнообразных окон системы, а также может включать область, называемую "System Transcript", о которой речь будет идти позже.

Элементы языка Smalltalk

 

Наверх страницы

Внимание! Не забудьте ознакомиться с остальными документами данного пользователя!

Соседние файлы в текущем каталоге:

На сайте уже 21970 файлов общим размером 9.9 ГБ.

Наш сайт представляет собой Сервис, где студенты самых различных специальностей могут делиться своей учебой. Для удобства организован онлайн просмотр содержимого самых разных форматов файлов с возможностью их скачивания. У нас можно найти курсовые и лабораторные работы, дипломные работы и диссертации, лекции и шпаргалки, учебники, чертежи, инструкции, пособия и методички - можно найти любые учебные материалы. Наш полезный сервис предназначен прежде всего для помощи студентам в учёбе, ведь разобраться с любым предметом всегда быстрее когда можно посмотреть примеры, ознакомится более углубленно по той или иной теме. Все материалы на сайте представлены для ознакомления и загружены самими пользователями. Учитесь с нами, учитесь на пятерки и становитесь самыми грамотными специалистами своей профессии.

Не нашли нужный документ? Воспользуйтесь поиском по содержимому всех файлов сайта:



Каждый день, проснувшись по утру, заходи на obmendoc.ru

Товарищ, не ленись - делись файлами и новому учись!

Яндекс.Метрика