Лекция 09 (1160809)

Файл №1160809 Лекция 09 (лекции (2002))Лекция 09 (1160809)2019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Различия между базисами ЯП достаточно тривиальны. Особенно это проявляется на примере операторного базиса.

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

  1. Модульность. Включает в себя

  • разделение на физические модули (раздельная трансляция)

  • концепцию процедурной абстракции.

  1. Разделение данных

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

Алгол имел процедурные абстракции, немного более развитую структуру данных, чем FORTRAN, но у него не было понятия раздельной трансляции. Поэтому всерьез использовать Алгол как коммерческий язык было невозможно. FORTRAN при всех его недостатках до сих пор остается индустриальным ЯП. В 60-ые г.г. на FORTRAN были созданы мощные успешные коммерческие проекты.

Самое простое и самое основное из средств развития – процедурная абстракция.

Глава 4: Процедуры и функции.

Впервые появились в языке FORTRAN. Программирование в терминах процедур и функций является базисным навыком программиста. Процедура –независимый кусок управляющих конструкций, который содержит заголовок, содержащий имя и параметры, т.е. процедура – параметризованная абстракция.


заголовок


Первые коммерческие продукты – переносимые библиотеки стандартных подпрограмм. Библиотеки, которые были созданы в 60-ые г.г. продолжают успешно существовать до сих пор. В этом одна из причин популярности FORTRAN среди его достаточно многочисленных пользователей. Но в FORTRAN очень неудобный способ взаимодействия различных подпрограмм. Было 2 способа взаимодействия:

  1. через передачу параметров.

  2. через общий блок. Была общая память, которая доступна всем программам. Общий блок описывался в каждой подпрограмме с помощью директивы COMMON. Таким образом мы в каждой подпрограмме ссылались на одни и те же данные. Интересно, что первоначально понятие общего блока было введено исключительно с целью экономии места.

SUBROUTINE S(X, Y, Z)

COMMON …

END

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

В Алголе 60 появились локальные среды ссылок. Внутри одной процедуры можно было описывать другие процедуры, которые локально ссылались на переменные, описанные внутри объемлющих процедур. Глубина вложенности могла быть произвольной. Появилось понятие рекурсии, и у каждого рекурсивного вызова должна быть своя порция одноименных локальных переменных. Возник стек. В первых компьютерных архитектурах стека не было. В первых реализациях Алгола компилятор определял, является ли процедура рекурсивной. Если не является, то реализовывал ее в стиле языка FORTRAN. А рекурсивные процедуры компилятор программировал иначе, создавая для хранения локальных переменных системный стек. Даже в такой распространенной архитектуре, как IBM 360, понятие стека аппаратно реализовано не было. Программист, пишущий компилятор, должен был промоделировать соответствующие концепции. Во всех без исключения компьютерных архитектурах начиная с конца 60-ых г.г. начинают появляться конструкции, которые явным образом поддерживают понятие процедуры в ЯП высокого уровня.

Механизм передачи управления.

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

RETURN

если это возврат из функции, то

RETURN выражение

Синтаксис этой конструкции практически не меняется с 60-ых г.г., когда она появилась в языке FORTRAN. Этот оператор может стоять в произвольном месте подпрограммы, но главное, что со структурной точки зрения конструкция имеет один вход и один выход.






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



В FORTRAN 77 до сих пор осталась конструкция ENTRY, которая позволяет по-разному именовать одну и туже подпрограмму. Надежность подобного рода конструкций сомнительна.

Во многих ранних ЯП были так называемые параметры-метки. Можно было указать в качестве фактического параметра метку. Параметры нумеровались от 0 до N, и RETURN I означал, что возврат осуществляется не в место вызова, а в некоторую точку программы, на которую указывал соответствующий аргумент-метка.

P

CALL P …

RETURN

P

CALL P …

RETURN I

I:

Это завуалированная форма оператора перехода. Конструкция не структурная.

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

г лавная P

CALL P RETURN


CALL P

Из понятия подпрограммы возникает понятие сопрограммы, если сделать главную и подчиненную равноправными. В подпрограммах не симметричны понятия вызова и возврата. В сопрограммах CALL и RETURN объединяются в одну конструкцию RESUME (возобновить).

S 1 S2

RESUME S2 RESUME S1


RESUME S2 RESUME S1


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

Уже в начале 60-ых г.г. многие коммерческие проекты были сделаны с помощью понятия сопрограммы. Это понятие появилось во многих ЯП: в Симуле 67, в Модуле 2 (достаточно низкоуровневое)…

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

В С#, C++ и Delphi концепции, которая поддерживает параллелизм явным образом, нет.

В языках Ада и Java концепция параллелизма есть. Ада в свое время претендовала на роль универсального ЯП, который должен собой заменить все другие языки, и поэтому параллелизм в нем явным образом присутствует. В Аде 95 были существенные добавления к механизму параллелизма, который за время прошедшее с момента принятия первого стандарта Ады очень сильно критиковался. Java не претендовала на роль универсального ЯП, но она претендовала на роль мультиплатформной системы, т.е. код, написанный на Java, должен выполняться на всех системах, где установлена виртуальная Java-машина. Поэтому создатели языка были обязаны включить параллельные конструкции в ЯП, чтобы программа не зависела от операционной среды.

Какие-то частные конструкции, которые моделируют параллелизм, в современных ЯП излишни. Можно использовать соответствующие библиотечные средства. При этом возникает системная зависимость. Вместо сопрограммы, можно использовать концепцию легковесного процесса, которая есть практически во всех современных ОС. В Java концепция легковесного процесса (потока, нити) присутствует явным образом. Можно сказать, что в C# концепция потока также присутствует потому, что C# основан на платформе .NET, в которой есть управление процессами. Но эти средства находятся не в самом языке, а в соответствующей системной библиотеке.

Передача данных между главной программой и подпрограммой.

В отличие от передачи управления, передача данных может быть организована по-разному.

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

Есть три семантики передачи параметров:

  1. Ввод (режим in). Информация передается только из фактического параметра в формальный. От фактического параметра требуется статус определенности, и его значение используется в вычислениях. Например: sin(x). Для вычисления значения надо знать значение х. Значение фактического параметра при вычислении никак не меняется.

  2. Вывод (режим out). Информация передается из формального параметра в фактический. Например: Pop(S, x). S – стек, х –фактический параметр, который должен получить свое значение из соответствующего формального параметра. При входе от фактического параметра не требуется статус определенности, в него передается информация при выходе, и он обретает статус определенности. При выполнении процедуры состояние фактического параметра меняется.

  3. Ввод Вывод (режим in out). Смешанная семантика.

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

function Sin(x: in REAL) return REAL;

procedure Pop(S: in out Stack, x: out INTEGER);

Если Pop выполняется корректно, то переменная, указывающая на вершину стека, меняет свое значение, т.е. меняется состояние стека. Следовательно, параметр S должен находится в режиме вывода. В то же время от него требуется статус определенности. Поэтому S – типичный пример параметра in out.

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

Тип файла
Документ
Размер
277,5 Kb
Материал
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

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

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

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

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