Антон Евгеньевич Москаль (kouzdra) , Олег Анатольевич Плисс , Андрей Николаевич Терехов , Андрей Андреевич Терехов , Владимир Викторович Уфнаровский - Обзор и сравнительный анализ языков программирования
Название: | Обзор и сравнительный анализ языков программирования | |
Автор: | Антон Евгеньевич Москаль (kouzdra) , Олег Анатольевич Плисс , Андрей Николаевич Терехов , Андрей Андреевич Терехов , Владимир Викторович Уфнаровский | |
Жанр: | Базы данных | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Обзор и сравнительный анализ языков программирования"
Конспект
Читаем онлайн "Обзор и сравнительный анализ языков программирования". [Страница - 15]
классов
Object
Magnitude
Character
Date
Time
Number
Float
Fraction
Integer
LargeNegativeInteger
LargePositiveInteger
SmallInteger
Collection
SequenceableCollection
LinkedList
Semaphore
ArrayedCollection
Array
Word Array
Display Bitmap
Run Array
String …
Почему надо знать иерархию объектов? Потому, что сообщение, которое не может
быть обработано, передается на обработку его суперклассу, затем его суперклассу и т.д. Если
дошли до Object’a и не смогли обработать, то высылается ответное сообщение
doesNotUnderstand: (‘:’ – т.к. системное сообщение).
О гармонии мироздания:
Объекты – являются экземплярами класса.
Классы – если все является объектами ⇒ у них тоже должны быть свои прототипы ⇒
Метаклассы – невидимы для пользователя; классы являются экземплярами
метакласса. Все метаклассы являются экземплярами MetaClass.
Синтаксис языка:
Выражения:
1. Литералы
2. Имена переменных (только эти выражения зависят от контекста)
3. Выражения посылки сообщений (значение определяется классом-получателем)
4. Выражения-блоки
Массив:
# ('1' '2' '3')
# ((1 2) 3)
Внутри массива могут быть другие массивы ( но они решеткой не обозначаются).
Массивы могут быть неоднородными.
Присваивания:
Обозначаются “←” (в более поздних версиях “:=” тоже разрешено)
Сообщения:
Имя получателя
Имя сообщения
Сообщения могут быть:
– унарные alpha sin (могут выдать результат или ошибку)
– бинарные Number+1 (результат будет выдан наружу)
– ключевые ages at: 'Вася' put 3 (эквивалентно at: put: 'Вася' 3, т.е. сообщение с 2
переменными)
Правила разбора сообщений:
1. Унарные и бинарные – слева направо
2. Бинарные выше по приоритету, чем ключевые
3. Унарные выше бинарных
4. Выражения в скобках выше унарных
Каскадирование сообщений:
Collection new add:1; add:2; add:3
что эквивалентно
|temp|
temp ←
temp ←
temp ←
temp ←
Описание переменных заключается в |…|.
Операторы разделяются “.”
Collection new.
add:1.
add:2.
add:3.
Выражения-блоки:
[index ← index+1]
– вычисляется только по получении сообщения value
Т.о. записывается, например, цикл for:
4 Times Repeat: [index ← index+1]
Если послать value блоку [], то получим Nil
Условные выражения:
(number \\ 2) = 0
if True: [parity ← 0]
if False: [parity ← 1]
[: array | total ← total+array size]
– параметром будет передан массив и
добавится его размер
Пример:
Class name
History
superclass
Object
instance variable names allIncomes incomes
class variable names RateTax
class methods
initialize
initialize
RateTax ← 0.12
instance creation
initial Balance : amount
^ super new setInitialBalance : amount
new
^ super new setInitialBalance : 0
instance methods
transaction recording
recieve: amount from: source
incomes at: source
put: (self totalRecievedFrom : source)+amount
inquires
totalRecievedFrom: source
(incomes includekey: source)
if True: [^incomes at: source]
if False: [^0]...
Заключительная лекция
Subtyping – подтипы (строятся наследованием, но не только им).
Определение. Тип A является подтипом B, если в любом контексте, где можно
использовать B, допустимо использование A. Обозначается A --">
Object
Magnitude
Character
Date
Time
Number
Float
Fraction
Integer
LargeNegativeInteger
LargePositiveInteger
SmallInteger
Collection
SequenceableCollection
LinkedList
Semaphore
ArrayedCollection
Array
Word Array
Display Bitmap
Run Array
String …
Почему надо знать иерархию объектов? Потому, что сообщение, которое не может
быть обработано, передается на обработку его суперклассу, затем его суперклассу и т.д. Если
дошли до Object’a и не смогли обработать, то высылается ответное сообщение
doesNotUnderstand: (‘:’ – т.к. системное сообщение).
О гармонии мироздания:
Объекты – являются экземплярами класса.
Классы – если все является объектами ⇒ у них тоже должны быть свои прототипы ⇒
Метаклассы – невидимы для пользователя; классы являются экземплярами
метакласса. Все метаклассы являются экземплярами MetaClass.
Синтаксис языка:
Выражения:
1. Литералы
2. Имена переменных (только эти выражения зависят от контекста)
3. Выражения посылки сообщений (значение определяется классом-получателем)
4. Выражения-блоки
Массив:
# ('1' '2' '3')
# ((1 2) 3)
Внутри массива могут быть другие массивы ( но они решеткой не обозначаются).
Массивы могут быть неоднородными.
Присваивания:
Обозначаются “←” (в более поздних версиях “:=” тоже разрешено)
Сообщения:
Имя получателя
Имя сообщения
Сообщения могут быть:
– унарные alpha sin (могут выдать результат или ошибку)
– бинарные Number+1 (результат будет выдан наружу)
– ключевые ages at: 'Вася' put 3 (эквивалентно at: put: 'Вася' 3, т.е. сообщение с 2
переменными)
Правила разбора сообщений:
1. Унарные и бинарные – слева направо
2. Бинарные выше по приоритету, чем ключевые
3. Унарные выше бинарных
4. Выражения в скобках выше унарных
Каскадирование сообщений:
Collection new add:1; add:2; add:3
что эквивалентно
|temp|
temp ←
temp ←
temp ←
temp ←
Описание переменных заключается в |…|.
Операторы разделяются “.”
Collection new.
add:1.
add:2.
add:3.
Выражения-блоки:
[index ← index+1]
– вычисляется только по получении сообщения value
Т.о. записывается, например, цикл for:
4 Times Repeat: [index ← index+1]
Если послать value блоку [], то получим Nil
Условные выражения:
(number \\ 2) = 0
if True: [parity ← 0]
if False: [parity ← 1]
[: array | total ← total+array size]
– параметром будет передан массив и
добавится его размер
Пример:
Class name
History
superclass
Object
instance variable names allIncomes incomes
class variable names RateTax
class methods
initialize
initialize
RateTax ← 0.12
instance creation
initial Balance : amount
^ super new setInitialBalance : amount
new
^ super new setInitialBalance : 0
instance methods
transaction recording
recieve: amount from: source
incomes at: source
put: (self totalRecievedFrom : source)+amount
inquires
totalRecievedFrom: source
(incomes includekey: source)
if True: [^incomes at: source]
if False: [^0]...
Заключительная лекция
Subtyping – подтипы (строятся наследованием, но не только им).
Определение. Тип A является подтипом B, если в любом контексте, где можно
использовать B, допустимо использование A. Обозначается A --">
Книги схожие с «Обзор и сравнительный анализ языков программирования» по жанру, серии, автору или названию:
Алексей Михнин - ChatGPT для саморазвития: Освоения программирования, консалтинга и изучения иностранных языков Жанр: Интернет |
Другие книги автора «Антон Москаль»:
Антон Евгеньевич Москаль (kouzdra) - Представление связи исходного и выходного текстов при автоматическом порождении текстов программ Жанр: Базы данных |