Лекция 3 (Лекции (2009) (Саша Федорова)), страница 2

2019-09-19СтудИзба

Описание файла

Файл "Лекция 3" внутри архива находится в папке "Лекции (2009) (Саша Федорова)". Документ из архива "Лекции (2009) (Саша Федорова)", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Лекция 3"

Текст 2 страницы из документа "Лекция 3"

Вообще говоря, поведение квазистатических обьектов во многом похоже на поведение статическиз обьектов(переменные, обьявленные в main, живут, как правило, не сильно дольше остальных)

Persist

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

Примеры ЯП, где сохраняемые обьекты входят в ЯП: Java, C#(часть .Net)

ОБЛАСТЬ ВИДИМОСТИ(ОБЛАСТЬ ДЕЙСТВИЯ)

Область видимости(область действия)- часть программы, где действует обьявление(определение в ЯП со статической типизацией)

Обьявление:

ИмяТип данных

(это понятие касается лишь тех обьектов данных, у которых есть имена)

В статически типизированных ЯП:

  • Определяющее вхождение имени– как правило, должно предшествовать использованию, но не всегда(Forward Declaration)

  • Использующее значение – произвольное число раз входит в программу

В Паскале определяющим является вхождение, задающее Тип Данных.

В Си и С++ - обьяление.

Пример

Один из самых распространенных областей действия является блок(как правило, блоки вложены друг в друга)

i: integer - в каких констекстах может существовать?

  1. Блок (заголовок: program/procedure)var…

Begin … end ,,,

  1. Формальный параметр у функции или процедуры

  2. Запись: record i: integer

Итак.

Понятие обьекта данных

- зависит от ЯП

- четко определяется синтаксически

В любом ЯП, разумеется, существует свое понятие области действия.

Что такое перекрытие имен? Это ситуация, в которой в одной области действия одному имени соответствует более одного вхождения. Перекрытие имен допустимо не во всех ЯП, всюду оно допускается лишь для процедур и функций.

Пример

Void f();

Void f(int)//=> одно определяющее вхождение

В Ада, С++, Lava, С#, Delphi правила выбора статические, все разрешается в момент трансляции.

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

Взаимодействие различных областей действия

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

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

Таким образом, существует 3 случая, когда одному имени соответствует несколько обьектов данных:

  • Перекрытие(overwriting)

  • Сокрытие(hiding)

  • Перегрузка()

Пример гипотетического процедурного ЯП

procedure p;

i:integer;

procedure p1;

i:integer; (*)

begin

p2;

end p1;

procedure p2;

begin

i==-1;

end p2;

begin

i:=0;

p1;

p2;

end p;

Сколько у нас использующих вхожлений имени? 2.

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

Замечание. В ЯП со статической типизацией и со статическими обектами данных понятие времени жизни тесно связано с понятием обьекта даннных, который это время жзни определяет.

Пункт 2. Понятие виртуальной машины ЯП

По определению, виртуальной машины не существует. 

Виртуальная машина – это гипотетическая машина, языком готорой является соответствующий ЯП, позволяющий описывать поведение программ.

Пусть существует машина, у которой машинный язык служит оператором ЯП.

СССР: Институт Кибернетики, академик Глушков.

«Мир1», «Мир2», «Мир3».

У «МИР» маинным языком был язык-аналитик, являющийся аналогом языка Алгол-60, в нем присутствовала возможность символьного дифференцирования(для инженерных расчетов ).

Были и другие прототипные реализации ЯП.

Первый опыт: Паскаль

70-е гг – популярность ЯП Паскаль.

Калифорния, Сан-Диего. UCSD-Pascal. Требовалось М машин, а значит, М трансляторов с языка Паскаль. Они использовали ПОЛИЗ(его аналог) для паскаля – пи-код – на нем было удобно транслировать.

P-code  Pascal

Получился первый вариант транслятора.

Программа => компилятор => P-code => M интерпретаторов P-code

Система интерпретации P-code превращалась в виртуальную машину.

SmallTalk

Придумали байт-код, в который транслировался код SmallTalk. Затем байт-код интерпретировался. Везде, где стоял byte-код, стоял SmallTalk-овская виртуальная машина. 

Java-машина

Принцип WORA(write once read anywhere). Разрабатывалась JVM, использующую байт-код в качестве интерпретатора.

CLR  MSIL(Microsoft Intermediate Language) – гипотетический код некой стековой машины.

Основное отличие в том, что не существует виртуальной машины для MSIL. Вместо этого осуществляется JTT(Just In Time Translation). Полученный бинарный код, таким образом, сразу выполняется и сразу загружается в стек, чтобы ничего не терять. Поэтому в первый раз программа выполняется медленнее, чем в последующие разы.

Пример. Классический Visual Basic – язык с динамической типизацией – проще интерпретировать, чем компилировать. Очень маленький .exe-файл – это промежуточный код, то, что запускает интерпретатор этого кода. А затем этот маленький код превращается в .exe-файл, не требующий интерпретации времени выполнения.

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

Пункт 3. Схема рассмотрения ЯП

Как известно, почти каждый сложный программный проект не укалдвается в обещаемые сроки выпуска.(Microsoft – не единственный тому пример)

Зачастую проблема заключается в сложности из-за семантического разрыва между архитектурой компьютеров и реальными обьектами.

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

Схема рассмторения

Базис

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

-структурный базис(входят составные типы данных, операторы и т. д.)

Интересно, что при всем богатстве выбора императиыне ЯП почти не отличаются друг от друга. Зачем же придумывать новые ЯП, если уже есть? Это – уровень L0, а главное – построить некую иерархию из абстракций(на базе существующих абстракций – новые абстракции=процедуры+функции, создание новых типов данных). ЯП отличаются друг от друга именно средствами развития.

Достаточно ли этого? Нет, необходим еще 1 аппарат.Возьмем, к примеру, С. Есть ли в нем средства развития новых абстракций? Да, есть.

XAB – интерфейс на Си с Х-сервером/клиентом.

Xt –X-toolkit.

Итак, средства развития в Си присутствовали. Чего же не хватило? В С++ появились средства защиты новых абстракций. При Си-шном подходе такой защиты не было.(имеется в виду не защита от взломов, а защита от «дурака», то есть самого программиста)

Глава 2. Скалярный базис ЯП.

Простые Типы Данных(ТД)

Простые ТД

  • Арифметические ТД

    • Целочисленные ТД

    • Вещественные ТД

      • плавающие

      • с фиксированной точкой

  • Булевые ТД(всего 1): true, false

  • Символьный тип(вообще говоря, несовместим с целочисленными ТД – это «приблуда» языка Си)

  • Ссылки/ указатели(на базе арифметического, булевого и символьного типов) – идут, вообще говоря, отдельно

  • Ограниченные типы данных

  • Тип-перечисление

  • Тип-диапазон

Замечание. Строки – составные типы данных.

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