Главная » Просмотр файлов » лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай)

лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай) (1160852), страница 3

Файл №1160852 лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай) (лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай)) 3 страницалекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай) (1160852) страница 32019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Иначебудет ошибка.Классы ведут себя как вложенные области действия, а перекрытие называется скрытым.Overload - перекрытие, перезагрузка.Hading – скрытие имен.Overriding – подмена (для виртуальных методов).В зависимости от связных областей действия делятся на:1) статические (определяются во время трансляции)2) динамические (в момент выполнения)Определяющее вхождение исключений – это ловушка:catch(T e) { … }Происходит динамически (даже в статических ЯП – С++)П.2. Понятие виртуальной машины ЯП.Само понятие появилось еще в 60-е годы.Опр.: Это гипотетическая машина, машинный язык которой – ЯП.Стали реализовывать в железе.В СССР: машина серии МИР(для инженерных расчетов).Например, в университетах существовала следующая проблема: различные спонсоры дарили компьютеры, адля них было необходимо разное ПО.Тогда появилась виртуальная машина p-code для языка UCSD-Pascal.PARC Small Talk: 1972, байт-код.Идея Java машины: есть язык, программы передаются по интернету, на разных машинах работаютодинаково.JVM – виртуальная машина.

Язык машины – Java-байт код..NET – похожая ситуация. Любой язык, который поддерживает .NET транслируется в CLR=> не существует виртуальной машины для MSIL.Вместо этого JIT(трансляция на лету). Система времени выполнения:1-й раз в бинарный код, затем выполняется. Запоминается в КЭШе и далее работает без компиляции.+ Понятие виртуальной машины изолирует от архитектуры реальной машины.П.3. Схема рассмотрения ЯП.Сложность – семантический разрыв (разрыв архитектурных компонентов и реального времени.)1) Базис. (встроен в ЯП, понимается транслятором)Может быть скалярным (не имеет составных частей, простые типы данных, встроенные операции) иструктурным (составные типы данных - массив, записи и т.д.).

Базисы всех языков похожи.2) Средства развития. (подпрограммы, создание новых типов данных).Самые простой и известный – процедуры и функции.Возможно создание специальных библиотек.X lib - библиотека языка С, для создания интерфейсов под Unix.Xt - Понятие виджетов и т.п.Atheng Motif – имеет визуальный интерфейс.Лекция. Сергеев Николой.Простые типы данныхПод простыми типами данных мы имеем в виду языковые конструкции, встроенные в язык, то есть типыданных изначально поддерживаемые в языке.1. Классификация простых типов данных- числовые- целочисленные- вещественные- плавающие- фиксированныеНе во всех языках есть такое усложнение класса чисел, например, в таких скриптовых языках какJavaScript и ActionScript есть тип Number, обьекты класса Number могут принимать какцелочисленные значения, так и вещественные.- логические- символьные-порядковые-перечисления-диапазоны-ссылки и указателиИ еще иногда вводят функциональные тип(функции и процедуры)Давайте рассмотрим по порядку все типы данныхЦелочисленныеПеред разработчиком языка при создание целочисленного типа всегда возникают как минимум трипроблемы:1.

Фиксация представления – то есть фиксировать ли размеры типов данных, и наборзначений.2. Беззнаковые целые числа – нужно ли выделять беззнаковый целый тип3. Преобразования одного целочисленного типа в другойДавайте немного поподробнее остановимся на этих проблемах:Наиболее известные языки программирования с фиксацией представления типов данных – Java, C#.

Нооно и понятно. Ведь код на Java является мобильным, то есть должен работать на различныхплатформах. А как он будет работать правильно, если на разных платформах диапазон целых чиселбудет иметь различную длину. Поэтому Java работает не напрямую, а через виртуальную Java –машину, то есть является интерпретируемым языком. Другое дело с языком С. Именно в языке Срешили ввести диапазон чисел, который должен быть покрывать диапазоны, вмещаемые в 1 - 8 байт:-char-short int- int- long int- long longПравда здесь отдельно ничего не ясно про каждый тип(кроме char – 1 байт), например short int на различныхплатформах может занимать как 1 байт, так и 2 байта. Но зато ясно, что количество байт отводимых под char,меньше либо равно количеству байт, отводимых под short int, количество байт отводимых под short int,меньше либо равно количеству байт, отводимых под int, и т.п. Такая системы была унаследована в языка С++.Вернемся к С# и перечислим CommonTypeSystem, которые были там реализованы.Количество байт1248Со знакомsbyteshortintlongБез знакаbyteushortuintulongВ 2000 году произошло очень важное событие, была реализована компанией Интел 64 – битная архитектураIA-64 для процессора Itanium.

Правда 64 – битная архитектура не прижилась. Почему? Не было реализованопопулярной операционной системы с поддержкой 64 – битной архитектуры, вследствие этого все программывыполнялись с такой же скоростью как и на 32 – битной архитектуре. Так зачем было платить больше, если зате же самые деньги мы получаем ту же самую производительность? И к тому все 32 – битные приложения на64 – битной архитектуре выполнялись в режиме эмуляции. Намного умнее поступила компания AMD,которая решила оставить арифметику 32 – битной, а вот адресацию сделала 64 – битной(архитектура x64).Рассмотрим беззнаковые целые числа.

И сразу же возникает проблема как сравнивать между собой знаковыйи беззнаковый типы данных. И надо ли допускать неявное приведение беззнакового целого типа данных кзнаковому и обратно? Такое допущение может привести к ошибкам, которые появляются только на этапеработы программы, а значит их сложно найти. В 70- ые годы эти вопросы решались однозначно. Беззнаковыйи знаковые типы данных не смешивали между собой. Их нельзя было ни сравнивать, ни присваивать другдругу. Так в Модуле-2 существовали два типа INTEGER и CARDINAL.

И приведение одного в другойдопускалось только явное(существовал специальный оператор для такого присваивания):I:INTEGER; J:CARDINAL; I := INTEGER(J);Но в современном мире языков программирования многие языки такими ограничениями не обладают.Например, язык С++. Хотя сам создатель языка, Страуструп, хотел ввести такое ограничение, и лучше того, впервой версии языка было допустимо только явное приведение типов. Но как оказалось, системщики оченьлюбят неявное приведение, и большая часть программ, написанных на С из – за этого ограничения некомпилировалась на первой версии языка С++. Тогда Страуструп принял волевое решение убрать такоеограничение.А зачем вообще по идее нужен беззнаковый тип данных? Конечно же для адресации памяти(адреснойарифметики) и для работы со сдвигами.

Так, к примеру в Обероне существует лишь один беззнаковый типbyte(0..255), и Java, позаимствовавшая типы данных именно с Оберона была вынуждена включитьдополнительно включить в базовые арифметические операции беззнаковый сдвиг(>>>). То есть базисныйнабор операции над целыми числами расширен по сравнению с базисным набором операций в С.Существовали и другие решения данной проблемы. Так в С# решили допускать только расширяющиесяпреобразования(так как они безопасные). Обратные преобразования допускались только явно.

Проприведение типов в АДА смотреть ниже.Подходы к реализации числовых типов данных.1. Фиксирование базиса. То есть мы заранее говорим, что вот такие типы данных, как integer,byte …являются целочисленными. Все остальные уже не целочисленные. В некоторым языках фиксируетсядаже размер каждой переменной данного типа, то есть integer в Java занимает, например, строго 2байта. Как правило код на таких языках интерпретируется. В Java, например, виртуальная Java –машина. Еще один пример такого языка С#. Программы на таких языках являются мобильными, тоесть переносимыми с одной платформы на другую.

В других языках, переносимость затруднена, тамне фиксированы ни представление чисел, ни семантика числовых операций.2. Обобщенные числовые типы. Ада создавалось отчасти и для того, чтобы код на ней былкроссплатформенным. Поэтому фиксирование базиса в такой ситуации было затруднено. Передсоздателями Ады ставились следующие задачи: Эффективность, Надежность, Читабельность.

Вследствие этого создатели Ады придумали новую концепцию. Они ввели обобщенные числовые типыданных. То есть типы являющиеся базой для всех других типов( все другие наследовались от них).Объекты разных типов были несовместимы ни по какому множеству операций, но были совместимыобъекты подтипов. То есть разные подтипы совместимы между собой и со своим предком. Например:Type Length is new integer;Type Width is new integer;Length и Width – новые целочисленные типы данных, при этом их нельзя ни присваивать другдругу, ни сравнивать. Однако можно делать преобразования явным. В С или Паскале мы бы такимспособом ввели бы понятие эквивалентности.Еще один пример:Type Length in new integer range 0..MAXN.Думаю в комментариях не нуждается - диапазон Length ограничен 0..MAXN.В чем плюс обобщенных типов, так то что все ошибки обнаруживались на этапе компиляции.Если требовались неявные преобразования вводились под – типы.Sybtype t1 is t2 range 0..N.И тогда преобразования из T1 в T2 допускались.

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

Характеристики

Тип файла
PDF-файл
Размер
1,02 Mb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6358
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее