Лекция 2 (Лекции (2009) (Саша Федорова))

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

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

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

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

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

7


Любой уважающий себя вычислительный центр придумывал свой ЯП. 

Пример
Проект 1- противоракетной обороны- язык Джойфанд.
2- Сканнер(конец 70-х гг) - для него также придумали свой ЯП,
1967год - язык Smalltalk.
Каждый раз обязательно нужен был новый ЯП(старые не годились)
Если сначала ЯПы придумывались для какой-то конкретной области(Algol, Fortran, Cobol- разрабатывались и использовались в одной нише).
Любой человек дорастает рано или поздно до компетентного уровня. Точно так же происходило и с ЯП,
60-е гг - Фортран-основной ЯП.
Как только ЯП начинают использоваться неадекватно, не втой области, для которой они п/писались, начинаются неприятности.

Пример. 60-е гг - запуск новой ракеты закончился взрывом. (Чарльз Хос. Согласно его исследованиям, виноват был программист. В програме на Фортране была обнаружена ошибка, пропущенная при тестировании. Однако странно, что таких ошибок не случалось до сих пор.)

DO 5 I=1, 3 //цикл
операторы
5 CONTINUE // последний оператор в теле цикла, метка конца

Каждый оператор писался на своей строке.
Пробелы в Фортране совершенно ничего не значили. Там их просто не было. То есть
DO5I=1, 3 // - абсолютно корректный оператор

Ошибка заключалась в том, что написано было DO5I=1.3

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

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

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

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

Это привело к созданию PL-1 году.(попвытка создать единый универсальный ЯП). Оставшиеся ЯП были пригодны лишь для тех программ, на которых были написаны. Однако компилятор PL-1 оказался слишком сложным И хотя он и был перенесен на многие архитектуры(аж MS_DOS), он уже не используется.

Отвлечение.

С авторской точки зрения любая конструкция в ЯП должна быть четко обоснована.

Пример конструкции ЯП PL-1:

CALL P(X) – аргумент по умолчанию передается по ссылке.

CALL P((X)) – по значению.

О потребности лучшего контроля забыли- в Фортране этого не было- и тут не надо

Следующая «универсальная» попытка – создать идеальный ЯП была предпринята в 1968 году, с появлением Алгол-60.

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

Алгол—60 создала группа IFIP. После было принято решение работать не над несовершенствами Алгол-60, а над созданием нового языка. Новый Алгол создавался коллективом ученых(не только инженеров), интеллектуалов, людей с высокой репутацией в области информатики.

Изюминки нового языка:

1-Ортогональность(независимость) 6 языковых конструкций. Если, к примеру, в языке существует конструкция К1, нет такого, что одном онтексте она допустима, а в другом – нет.

Там, где есть переменная – допустимо выражение.

Этот принцип, однако, соблюден не всегда. Чистой ортогональности, конечно же, не существует.

С точки зрения ортогональности, Алгол-68 – довольно успешный ЯП.

Пример.

Пусть имеется выражение

Exp

Если после него поставить точку с запятой,

Exp;

То оно превраттится в оператор

(напомним, что Си, лоогику которого в данном месте напоминает Алгол, был разработан в 1969 году.)

А если выражение – это оператор, то почему нельзя наоборот?

=> если взять составной оператор, напрмимер begin … end, то его начением является, очевидно, значение последнего оператора. Вс еэто связыалось лтбо с оператором присваивания, либо с выражением. Они были равносильны по месту ипользования: везде, где использовался оператор, можно было использовать выражение, и наоборот.

Еще пример:

T x;// кстати, синтаксис первоначально Алгол, а не Си!

Ref Tx;

Ортогональность требуетЖ если есть ссылки, то должны быть и ссылки на ссылки.

Синтаксис Алгол был описан достаточно строго при помощи БНФ. Это было настолько компактно, понятно и удобно, что позже похожие вещи использовались для описания многих других ЯП.

Замечание.Тем не менее, как мы знаем, не все свойства правильных ЯП можно описать грамматиками 2-го класса по Хомскому. Я ЯП много таких конструкций, которые являются контекстно-зависимми. В ЯП Алгол-68 впервые был формально описан не только синтаксис, но и семантика.

(В 1979 году- 10 лет спустя пслле выхода Алгол 68- вышло пересмотренное сообщение о ЯП Алгол-68. Слева –английский текст, справа – русский перевод.

1964 по Алгол-60.

Однако на дела ольшинство программистов не понимали таких сообщений.

Ван Рей Гарднер разработал для этого специальные метаправила и пртоправила.

Конечное множество метаправил генерировали бесконечное множество протоправил, которые в свою очередь описывали синтаксис ЯП.

И несмотря на выпуск множества книг по разьяснению, Алгол-68 не освоили Писать на нем – можно, понимать- тоже. А вот компилятор писать-сложно(правда, программисты в Амстердаме его создали, но работали долго).Как слествие непонятности и сложности, на Алол-68 не писали.

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

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

А теми, кто вышел из консорциума, был создан Unix, а затем и язык Си.

Вывод. При разбрабоке новых ЯП надо бороться за простые базисные принципы.

Никлаус Вирт раработая свой достаточно простой ЯП, испоользовавший небольшое количесво концепций, легкий в освоении. Это свидетельствовало о том, что экстенциальная эпоха в создании ЯП кончается.

//Как мы знаем, все попытки создания единого ЯП провалилсь.

70-е –начало 80-х гг – период зрелости. Люди поняли, что ЯП должны тщательно проектироваться. После создания языка Паскаль затянулась дискуссия. Придумывая различного рода конструкции, люди осмысливали многие принципы так называемого «Структурного программирования».

1967 год – голландский профессорв Эдсгер Дейкстра опубликовал статью о вреде оператора Goto.

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

Дейкстра предложил новый подход – пошаговое конструирование программы.

Программирование рассматривали как черный ящик. Каждый такой ящик имел вход и выход. Что противоречит подходу черного ящика? Goto. Все контрлируемые ЯП в настоящее время имеют 1 вход и 1 выход, чем очень похожи друг на друга. Дисциплина структурного программирования совершенстовавалсь, в 70-х гг она превратилась в подход абстракции данных, уточнение каждой части. Используя механизм абстракции, мы конструируем с одной стороны сложные, а с другой – надежные системы. В это время создавались ЯП с обдуманными намерениями с точки зрения научной концепции.

В частности, LISP( в CLU, Module, ALPARID – концепция абстракции данных получила наибольшее развитие)

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

Замечание. Трей Наш, “С#. Ускоренный курс для профессионалов». Первым делом автор советует: если есть возможность не писать – не пишите. Если можно не наследовать – не наследуйте.

В С# слово sealed(означает невозможность наследования)- по умолчанию. И не зря! Перед тем, как унаследовать, надо подумать. Наследование, вообще говоря, не нужно. Главное – это абстракция и инкапсуляция данных.

(2008 год –Б. Лисков получил премию за абстракцию данных)

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

70-е гг –

Начало 70-х гг – появление Си, Паскаль

Сколько было вложено в PL-1? Много. А в Паскаль, ровно как и в СИ, ничего не вкладывали.

Любой уважающий себя ЯП обязан иметь конкретного (одного!) автора.

Диаграмм, характеризующая цикл разработки ПО,может быть раной для разных ЯП.

Однако надо понимать, что все затратына диаграмме достаточно условны, и надо понимать, сколько в том или ином проекте уходит денег.

Если вы рассчитали стоимость проекта, надо добавить еще столько же(50 процентов) на сопровождение.

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

В процессе сопроводениякод надо прочитывать! Но где найти эксперта по 350 ЯП?

Естестенным образом, начали придумывать средства по минимизации затрат. Решено было разработать 3 ЯП и учить им программистов.

Программисты(метоичные люди!:) ) сформулировали требования(сначаа соломенные, потом деревянные, каменные и стальные)

1976 год

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

1978 год – определен ряд требований.

1979 – обьявлен конкурс на создание такого ЯП.

Разработку решили вести не с нуля, а выбрали 3 языка-матки:

  1. PL-1

  2. Algol68

  3. Pascal

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

2 тур – отобрано 4 ЯП(каждый из которых был основан на Паскаль

3 тур, в котором бились «зеленые» и «красные» ЯП. Победил зеленый. Назвали его АДА

(Как ЯП отреагирует на небольшое изменение спецификации? Зеленые ЯП менялись меньше)

1980 год – официальное появление АДЫ.

В принципе, АДА не претендовал на новизну. Попытка его создания длилась 4 года(1976-1980 гг), все было сделано «по уму».

1980-1983 гг – разработка стандартов, доработка кмпиляторов, система аттестации компиляторов.

Появились курсы по освоению Ады.

В СССр в Ленинграде был разработан первый компиилятор Ады, правда, сырой.

Скорость трансляции – 4 строки в минуту. Почему же так? Все хорошо, но сложновато получилось. Опять...

Лет через 15 обещан был новый вариант стандарта. На деле каждые 2 года выходил специальный документ, разьясняющий стандарты. Тяжелый, сложный ЯП.

А компляторы все разрабатывались и аттестоввывались. Но все они обладали некоторыми недостатками.

Было принято 2 основных принципа программирования:
1- принцип сундучка 
2- прнцип чемоданчика
Когда человек собирается в дорогу, у него есть 2 альтернативы:
1 - взять с собой все
2 - взять с собой лишь самое необходимое

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

Замечание. Именно в 70-е гг появилась концепция ОО ЯП – некое дерево типов.
Новые типы определяли новые свойства, либо переопределыли старые. В данной модели типы даных не являлись классами эквивалентности.
Вскоре такая позиция была опровергнута и выбран был принцип эквивалентности типов(подчеркнуть).

Простые проекты не делались на сложном ЯП(они лишь усложняли его => принцип минимальности языковых конструкций
-принцип сундучка-берем только то, что важно.
-принцип чемоданчика - берем только то, без чего нельзя обойтись

Принцип минимальности: в ЯП надо включать лишь то, отсутствие чего делает данный ЯП неконкурентоспособным.
По этому принципу был создан ЯП Simula-1, содержащий всего 40 страниц стандарта.

1988 - Никлаус Вирт создает ЯП Оберон, в котором принцип минимальности был доведен до абсолюта.
1993- Оберон-2, в котором появился аналог виртуальных методов. Компилятор Оберона был мал, код - эффективен, ЯП - прост. 
Статья изд/ложения авторской позиции - и та занимала больше места, чем стандарт самого ЯП.


О АДА(завершение)
Пентагон выпустил приказ работать только на нем. В 2000 году он был тихо отменен.Однако на нем продолжали работать.(1995 год – Ада 95, 2005 год – Ада 2005 ).

Ада – 1983 проектировалась как моноязык(если твой ЯП несовместим с Адой – это твои проблемы). В 1995 году ситуация изменилась, несоместимость Ады с каким-то ЯП рассматривалас уже как проблемы самой Ады.

Уже в 1995 году стало ясно, что из Ады не получится моноязыка.Новую струю внесле систему GNU Ada Technology – она разработала свой компилятор языка Ада.

Как мы уже знаем, к Аде первоначально предьчвлялись 3 трибования:

-надежность

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