лекции (2007), страница 2

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

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

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

Онлайн просмотр документа "лекции (2007)"

Текст 2 страницы из документа "лекции (2007)"

4. Семиотическая позиция. Семиотика – наука о знаковых системах. Любой язык – знаковая система. Для ЯП – знаковая система, для которого вначале разрабатывается система знаков, позволяющая реализовать его запись. Одна из задач семиотики – изучение противоречий и неоднозначности в знаковой системе («Джон проектирует колледжи в Лондоне», «тощая торговка вяленой воблой сидела у прилавка» - это два примера лишь синтаксической неоднозначности)

Пример в программировании:

if b then

if b1 then s1;

else s2;

К чему относится else?

Чем сложнее язык программирования, тем больше в нем возможность появления разных «багов». Есть так же и прагматическая неоднозначность. «Через неделю будет коллоквиум». Семиотика – наука, которая позволяет бороться с подобного рода неоднозначными ситуациями.

5. Социальная точка зрения. В 80-е годы программисты делились на паскалистов и на тех, кто писал на С. Билл Гейтс говорил, что Visual Basic будет править миром. хоть и Delphi был лучше, чем VB, но VB все-таки был намного распространенной. В Америке боялись Pascal, а Basic был больше распространен, так как он был даже в BIOS. Прогресс VB по сравнению с Delphi, не сравнить по первым 4м точкам. Все зависит от того, сколько денег в него вложили и какую ему рекламу дали. Системы не внедряются, они выживают.

Очень важным является принцип экологической ниши. Например, в одной экологической нише выживают 1 или 2 вида. Все остальные либо вытесняются, либо вымирают. Выживает самый наиболее приспособленный вид. «Кто первый встал, того и тапки». В начале 60х годов Fortran был ведущим языком программирования для IBM. Потом, через 10 лет для DECа тоже все писалось на Фортране. До сих пор даже выпускаются книжки по Fortran. Почему Модула-2 полумертв? Потому, что ниша простого языка системного программирования уже была занята языком C.

Теперь-таки перейдем к схеме рассмотрения.

1. Базис ЯП. То, что входит в ЯП как изначальная вещь. Базис скалярный или структурный. К скалярному базису относятся простые типы данных, операции, примитивные типы данных (атомарные). Структурный базис (составные типы данных). Но с операторной точки зрения эти языки одинаковые. Каждое базисное понятие – это некая абстракция.

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

3. Средства защиты абстракций. Например, в С в отличие от С++ нет никаких средств защиты классов.

3. История развития ЯП

Выделяем 3 этапа

1. Эмбриональный этап (1954-1960е годы (61-62)) – появились все основные парадигмы

2. Период бурного роста(60е – 70е)

3. Умеренный период. ЯП продолжают появляться, но новых нет (с 70х по наше время). Поиски базового языка индустриального программирования

FORTRAN

1954-1957 IBM . Первая фаза закончилось в 1957. Программирование тогда нужно было только для ученых, элиты ученого мира, математиков и физиков. Им нужны были компьютеры только для выполнения расчетов. До этого народ программировал исключительно в двоичном коде. Они придумывали модель, потом садились с программистом, рисовали блок-схему. После этого в дело вступал программист, превращая рисунки в двоичный код. Потом переводил все это на перфоленты и перфокарты. Идея простая – нужно было сделать инструмент, чтобы ученые делали специальные формулы, и они транслировались в специальный машинный язык. Основная цель – перевод блок-схемы на ЯП. Главном был оператор присваивания. Слева операнд, справа выражение. Fortran - FORmula TRANslator. Структуры данных – n-мерный прямоугольные векторы. Понятие выражения, понятие присваивания, операторы перехода. В Fortran порядка 4х операторов перехода. Раньше думали, что создавать такой язык очень накладно, так как компьютеры тогда стоили баснословные деньги. Но все-таки его разработали. В 1957 году первая стадия разработки остановилась. Далее до 1966 было бурное развитие, в 1966 появился стандарт ANSI языка Fortran. Успех был ошеломляющий. Правда, программа работала немного медленнее той, что писал программист, но теперь они могли сами делать свои программы. Были и те математики, которые писали в двоичном коде, но вся проблема была в другом. Время за ВМ было слишком дорого. Но со сменой техники люди становились ненужными, так как при переходе с одной техники на другую терялся опыт. Поэтому-то и появился стандарт языка Фортран, так как необходима была мобильность (1-свойство переносимости программ с одной вычислительной системы на другую). Гарантировалось, что большинство программ, написанных на 1 архитектуре, смогут пойти на другой машине. Появилась возможность для программистов обмениваться знаниями. Большой плюс ЯП – мобильность знаний. Люди ранее очень тяжело расставались с языком программирования (для смены на другой), так как они были привязаны к КОНКРЕТНОЙ Вычислительной Системе. В 1977 год появился 2ой стандарт Фортрана (Фортран 77), затем был еще один в 90е (9Х) В космос он уже не летает, но в области численного программирования он процветает. Но при попытках развить Фортран в других областях программисты натыкались на препятствие. Фортран не поддерживал понятие надежности. Под надежностью понимается величина, обратно пропорциональная количеству ошибок в программе (Майерс). Надежный язык – это язык, на котором очень сложно сделать ошибку в программе. Сейчас уже стоимость работы эксперта намного дороже компьютерного времени. Надежный ЯП – язык, который выявляет ошибки намного раньше, чем они случатся. Фортран не выдерживает никакой критики. Например, там не нужно объявлять переменные (кроме объявления), далее, оператор цикла: do 5 i=1,N. Если N<1 эффект выполнения этого цикла был не определен. Например, случай с Венерой. Вместо запятой поставили точку: do 5 i=1.3 Это была даже ошибка менеджмента, а не программиста, так как тогда запятую от точки было отличить тяжело. Как только мы пытаемся сместить акцент к безопасности, языки типа Фортрана пропадают. Перед Фортраном ставились определенные цели, цели все эти он выполнил. Успех Фортрана именно в том, что он успел занять свою нишу в области математических расчетах, теперь его оттуда никто не уберет. А в области системного программирования его вышибли. В 70-е годы вышла фирма DEC. У нее тоже основным ЯП был Фортран. Сколько лет живет язык?

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

Чем отличаются научные расчеты от бизнес-расчетов? Бизнес – проиндексировать ленту. Тривиальная арифметика, зато объем данных велик. Много времени тратится на операции трансформации. А научные расчеты – данных было намного меньше, но огромный объем операций.

Поэтому, в 1959 правительство финансировало создание языка COBOL. Программа на языке Cobol представляла себе текст на формализованном языке. Предполагалось, что Cobol можно будет научить клерков, правда, это не особо вышло. Язык Cobol занял свою нишу, и в 60е годы куча программ по обработке финансовой информации были написаны на Cobol. Самый популярный язык в 70х в Америке был Cobol. Именно Коболу мы обязаны проблемой 2000 года. Тип данных в Коболе был ddmmyy.

3-м знаковым языком явился язык Algol-60. Algorithmic Language. Язык был создан для обмена алгоритмами. Были даже журналы по обмену алгоритмами. Algol-60 стал стандартом для публикации и обучения. Это первый язык, в котором попытались описать синтаксис формальной структуры языка. IFIP разрабатывала этот язык, к ней по завершению проекта Fortran подключился Бекху. Именно благодаря нему возникла БНФ. Металингвистические понятия. Николаус Вирт позже придумал синтаксические диаграммы. С нашей точки зрения, это грамматики Холмского класса 2. Языку программирования можно уже было учить, примерно как и матану. Семантика языка описана не была. С тех пор хорошим тоном считалось описывать синтаксис языка формальным языком. Они стали частью ЯП. Никаких теорий алгоритмов еще не было. Algol-60 важен тем, что за счет того, что он был нормально спроектирован – в нем появились блочные конструкции, вложение одних в других. Появилось понятие рекурсии и стека. Как следствие, можно было реализовывать рекурсивные процедуры. Algol-60 послужил фундаментом для других языков программирования. Все современные ЯП вышли из Algol-60. Почему же он вымер? Algol-60 – чисто научное решение обмена алгоритмами между людьми. В Algol-60 была лексика не совсем стандартизирована. Просто говорилось, что есть слово begin, но оформление ключевых слов было разное. В Algol-60 не было стандартизованного ввода-вывода, везде он делался по-разному. В Европе стали развиваться реализации Algol-60. Но в нем не было такого понятия, как эффективности. Отношение к времени работы программы на ЯП высокого языка к ЯП низкого языка – и есть эффективность. Но по-нормальному это соотношение должно быть больше 1. Fortran был с соотношением 1.04. Далее стали появляться Simula, потом Simula 67. Появилось понятие класса, слово new. Но для Simula 67 соотношение было 7 к 10. В итоге, Algol-60 появился прародителем для всех ЯП, которые есть сейчас. Пренебрежение индустриальными законами и эффективность – это основные минусы этого языка. В Algol-60 было даже туча циклов.

Последним языком программирования в этой стадии был язык Lisp. Его называют даже функциональным языком, но это не так. 1959-1962. Он зарождался как научная вещь, для обработки списков. В нем есть простой набор понятий. Атом – символ, либо атом - целое число. Есть пустой атом. Последовательность атомов – список. Список может содержать другие списки. С помощью списков можно промоделировать любую структуру. СAR CDR – взятие головы и хвоста списков. Появилось понятие set i SETq – отсюда язык уже процедурный. Lisp – смешение парадигм. Создавался как язык для обработки текста для искусственного интеллекта. Стандарт Common Lisp занимает полторы тысячи страниц. CLOS Common Lisp with Object System... все, что можно было придумать – там было реализовано. Вспомним, что мы ограничиваемся индустриальными языками. Соответственно, язык Lisp под эту категорию никак не тянет.

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

Когда кончился этот эмбриональный период, стало появляться мн-во языков. Порой получалось так, что под каждый проект делали свой язык программирования. Jovial – язык для военного применения, hal-s – язык для Apollon. Второй период в 60-70е годы, когда ЯП появлялись сотнями и тысячами, люди пытались определиться с хаосом. В 1964 попытались создать единый мощный ЯП. Создали архитектуру IBM 360 – систему для любых применений. Для нее придумали свой язык программирования. NPL или pl/1. Фирма выделила на его поддержку миллиардную дотацию. Но принципы создания языка послужили поводом шуткам. Собрался комитет и каждый проталкивал свою идею. Плохой компромисс значительно хуже любой из альтернатив. В pl/1 сделали 3 вида памяти- allocated, based, other. Это ad-hoc, взятый из Algol. Как следствие, язык появился очень сложным. У переменной могло быть до 30ти атрибутов, которые координируют ее поведение. IBM пыталась сделать 2 компилятора, отладочный и оптимизирующий, как с Fortran, входные языки на этих 2х компиляторах этого языка оказались разными. Pl/1 был бы очень хорошим языком, если бы из него выкинули 80% его возможностей. Язык оболочка – язык pl/1. С его появлением закончилась первая эпоха и началась 2я.

Исторические эпохи программирования

1 1954-1964 – первый этап, развитие языков программирования – генеральный этап.

2 1964-1983 – попытка разработать единый мощный язык программирования.

Fortran и Cobol не могли претендовать на роль универсальных языков программирования. PL/1 содержал базисный набор данных, существовали структуры данных, рекурсия, 3 вида памяти(статическая, локальная, динамическая). Минус в построении компромисса. Язык получился невероятно сложным из-за того, что плохо согласованные конструкции не давали нормальной семантики. Несмотря на активную поддержку, он использовался только на IBM 360. Но как только эти мейнфреймы перестали быть доминирующими, язык сошел на нет. Этот этап – этап накопления концепций (этап накопления капитала знаний).

1964 – язык-оболочка PL/1, 1968 – язык Algol 68. 1979-1983 – язык Ада. К 68 году в Европе Algol 60 получил широкое распространение. Рабочая группа, которая делала Algol 60, так же занималась работой над Algol 68. В рабочую группу по Algol вошло большое количество специалистов. Если Algol 60 – набор концепций (блочная структура, память, вложенность), то в Algol 68 была принята попытка сделать язык системой из ортогональных языковых конструкций. То есть одна конструкция в контексте другой может как-нибудь изменяться. Языки, которые были до этого, не отличались ортогональностью. Например, тот же самый do в Fortran: нельзя было делать do от 1 до N-1. 40% операторов в языке Fortran было для того, чтобы это исправить(n1=n-1;) везде, где может быть простая переменная, может быть и выражение. Кое-что из Algol 68 осталось и в нынешних языках программирования (v = e и e;). Почему бы не сделать оператор выражения? Любое выражение может стать оператором и обратно. Значение составных операторов - значение последнего выполненного оператора. Плюс рекурсия ссылок (int ; ref int; ref ref int). Не только синтаксис, но и грамматика была описана формально. Были придуманы w грамматики (2 набора БНФ. 1 набор – правила, для порождения новых правил). Известно, что легко написать синтаксис выражений. Но чтобы написать семантическое ограничение (согласованность типов), обычной грамматики не хватит. Язык был всем хорош, но очень тяжел для понимания. А сам механизм w грамматик абсолютно не понимаем. Потом в 78 году был выпущен пересмотр. Но его никто не понял. После этого не давали такого формального описания. Возникает проблема, что есть стандарт языка, но него никто не понимает. С индустриальной точки зрения язык был провальным. В 1969 году был построен первый компилятор. В СССР появился компилятор Algol 68. Algol 68 не намного опережал Algol 60. Проблемы мобильности и стандартизации были решены полностью. Но программисты вообще не поняли этот язык. Algol 68 остался как концептуально чистый язык. Интересно, что в 1968 перед появлением сообщения о создании Algol 68, из группы разработчиков вышел Вирт и товарищи. Они опубликовали письмо, с просьбой не связывать их имена с этим языком. В Америке в это время сделали систему Multics. Мощная система с мультипользовательскими интерфейсами. Многопроцессорная и многозадачная. Группа в комитете по Multics возлагал Кен Топмсон, но они вышли из этого проекта. Одной из будущих его идей – не делать никогда монстра из системы. Так и появился Unix. Никлаус Вирт сформулировал – сложность ЯП немедленно переходит в сложность проектов. Необходимо на всех этапах минимизировать сложность. В 1969 году Вирт придумал Pascal. Он был создан для обучения программированию. Pascal был очень простым языком, для которого быстро написали компилятор. Никакой поддержки ему не было оказано, к 70-80 годам он стал основой для обучения студентов. В 80е годы ВМиК перешел на Pascal. Попытки расширить Pascal особого успеха не привели, кроме попытки создать Object Pascal. Керниган написал книгу – 16 причин, почему Pascal не его любимый язык. Они написали Software tools для Unix, это как книга для обучения методов. Неспособность Pascal к индустриальному программированию разочаровали Кернигана. Паскаль был наследником именно Algol 60, а не 68. 2 попытки к созданию единого ЯП потерпели фиаско.

В 60е годы для того, чтобы параллельно создать единый язык, была предпринята попытка создать машинно-независимый язык ассемблера. BCPL. Unix создавался на этом языке для кроссплатформенности. Язык B хороший язык, но там не было типа данных, только поля данных. Когда ввели понятие типа данных – появился язык C. Первые версии этих языков появились в одно и то же время, концепции разные, один для обучения и язык С. Но С и Pascal похожи тем, что они очень простые. С несколько переусложнен преобразованиями данных. Но число основных концепций крайне невелико. Эти языки не пользовались коммерческой поддержкой. Но эти языки живые.

На рубеже 70-80 появляются простые языки, завоевывающие мир. =) Больше всего языков плодили военные, для создания чего-либо. Они сделали расчет по проектированию военных систем. Оказалось, что расходы на программирование 50% от проекта программирования. Так как maintenance тоже есть. Это неизбежно. И 50% от зарплаты программирования – это maintenance. Из 50% на программирование 25% уходит на тестирование и исправление ошибок. Из остающихся 25 – 12% спецификация. 11-13 % - кодирование. Где экономить? На процессе сопровождения. Выяснилось, что сопровождение так дорого, что в рамках субподрядчиков Пентагона использовалось больше 350 языков. Даже в 1 десятке был только 1-2 языка знакомы общественности. Самые дорогие ошибки – на этапе спецификации. С 1975 по 1979 год были опубликованы спецификации ЯП. Этим спецификациям Пентагона мог удовлетворить только 1 ЯП. В 1979 году был объявлен тендер. Необходимо придумать не принципиально новый ЯП, а взять существующий и доработать его. И в качестве 3 языков-«маток» были выбраны язык PL/1, Algol 68 и Pascal. На 2 этап перешли 4 языка, основанные на языке Pascal. Следующий этап - выделились красный и зеленый язык. Победил зеленый. Позже его назвали Ada. В 1983 появился Ada 83. ACVC делала проверку сертификации компиляторы, настолько мощную, что некоторые компиляторы не могли пройти эту систему. Язык не смог стать единым языком. Первая причина в том, что сложные языки не выживают. Особенно, когда язык навязывается директивно, сложность становится непреодолимой проблемой. Только на доработку языка Ada кинули 150 программистов. СПБ выпустил ЛАДУ – компилятор для Ada, ленинградская Ada. Но скорость компилятора была порядка 3 строки в минуту. Запрещение подмножеств языка Ада было большой ошибкой. Стандарт языка - довольно толстая книжка. Каждые несколько лет выпускались толкования стандарта. В основном они были посвящены проблемам с видимостью. Нельзя слишком много стандартизовать. Механизм рандеву в языке Ada критиковали больше всего (механизм синхронизации параллельных процессов). Стандарт в 2005 сохраняет полное совмещение с прошлыми стандартными. В 1983 году провалилась попытка создать единый язык, появился С++. В Ada 95 только появились объектные свойства. Ввести в традиционный язык ООП тяжело. Ada 83 считался сложным языком, а Ada 95 стал еще более сложным. Так же и С++.NET. Язык Ada устарел в момент своей стандартизации. В 80 м году появился очередной Виртовский язык – Modula 2. Как раз вместе с Ada они представляли 2 разных подхода к дизайну. 1 подход – принцип сундучка, 2 – принцип чемоданчика(Modula). Что берем с собой для поездки? 1 – если брать, все, что необходимо – нужно сундучок. 2 – брать то, без чего обойтись нельзя. Для каждой критичной потребности – должно существовать решение, их удовлетворяющее. Таким был язык Ада. Например, запрещение изменения стандартов. Modula 2 – 40 страниц. принцип чемоданчика - принцип минимальных конструкций. Только те конструкции, без которых писать программы вообще нельзя. Modula – СП, Ада – СРВ. Вирт решил довести принцип минимальности конструкций довести до конца. Язык Modula 2 подвергся чистке, из него было убрано множество излишних вещей. Получился язык Oberon, содержащий концепцию расширения типа. Минимальнее языка не придумаешь. Oberon содержит понятие наследования, но не имеет понятие полиморфизма. Но он может быть смоделированным. В Oberon 2 он появился. Язык Modula был выпущен Виртом в качестве примера, как надо создавать ЯП.

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