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



Дата17.06.2016
өлшемі65.5 Kb.
#143124




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

Пример
Проект 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 трибования:

-надежность

-констролируемая эффективность

-читаемость

Как следствие кода на Ада получалось больше, чем на Си. Но Ада получился черезчур амбициозным и сложным. Цели, как следствие, были недостигнуты. Окончание периода зрелости.

80-90-ее гг – период ОО ЯП.

В 1983 году мировой публике стал доступен С++. Появились Objective C и Objective Pascal. В 1995 году – Java. 1999 – Си#. Все эти языки были обьектно-ориентированны. В то же время они включали такие понятия как модульность и типы данных и являлись, таким образом, традиционными ЯП.



Сейчас и Java, и C# продолжают разрабатываться. . Это развитие, однако, приводит к тому, что даже Jave постепенно «обрастает жирком». Языки потихоньку снова начинают превращаться в «монстров».

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

Достарыңызбен бөлісу:




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет