ЯВУ – языки высокого уровня
Следуя историческим традициям русской поэзии, период с
конца 50-х до середины 60-х годов справедливо можно
назвать золотым веком языков программирования
Первым языком программирования высокого уровня считается язык
Plankalkl (исчисление планов) разработанный немецким инженером
Конрадом Цузе ещё в 1942 году. Однако транслятора для этого языка не
существовало до 2000 г.
Первым в мире транслятором языка высокого уровня является ПП
(Программирующая Программа), он же ПП-1, а успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик из модулей.
1 Морис Уилкис 1950 год - Морис Уилкис (конструктор EDSAC ) из Кембриджского университета ввел систему мнемонических обозначений для машинных команд, названную языком ассемблера.
В июне 1951 года на конференции в Манчестерском университете Морис Уилкс представил доклад "наилучший метод конструирования автоматической машины", который стал пионерской работой по основам микропрограммирования.
Свою идею микро программирования Морис Уилкс реализовал в 1957 году при создании машины EDSAC-II.
М.Уилкс совместно с Д.Уиллером и С.Гиллом в 1951 году написали первый учебник по программированию "Составление программ для электронных счетных машин" (русский перевод - 1953 год).
Математик Программист С появлением первых программируемых ЭВМ (EDSAC, МЭСМ, EDVAC) в 1948 - 1951 гг. начались работы по разработке методов программирования:
1950 – Операторный метод (А.А. Ляпунов) 1951 – Алгебраический метод (Грейс Хоппер) Вычислительная машина Разговор о начальном, теоретическом этапе развития информационных технологий не был бы полным обсуждения того, как складывалось развитие самих вычислительных машин. Разумеется, на первых порах создатели компьютеров предлагали главным образом оригинальные проекты. И потребовался выдающийся ум фон Неймана, чтобы сформулировать общую концепцию вычислительной машины, которая используется и по настоящее время. Эта же концепция определила принципы управления вычислительной машиной с помощью программы (разумеется, вспомним об Аде Лавлейс). С начала 50-х годов программирование становится самостоятельным разделом наук
и. Ранее бытовало мнение, что программирование — всего лишь раздел математики.
Действительно, первые виды обработки информации на компьютерах были связаны с вычислениями, и программировали их в основном математики. Им же принадлежали первые шаги в теории программирования. Вот список основателей: А.А. Ляпунов, А.П. Ершов, А.С. Кронрод, М.Р. Шура-Бура, С.С.
Лавров.
Программирование- Ляпунов В 1950 году А.А. Ляпуновым был предложен операторный метод для описания программ.
В течении 1950—1953 годах впервые был создан способ представления программ на обозримом уровне.
Вместо неэффективного для человека задания программ в машинных кодах А.А. Ляпунов предложил формализованное представление высокого уровня. Особенно важным было то, что операторный метод позволял создать теорию синтаксических структур программ.
Начала информатики - Ляпунов В 1953 году А.А. Ляпунов сформулировал постановку задачи автоматизации программирования. Эта оригинальная постановка была успешно использована в первых отечественных трансляторах, называвшихся тогда программирующими программами.
Летом 1954 года появилась программирующая программа ПП-1 (отдел прикладной математики Института математики АН СССР), а в 1955 году — ее улучшенный вариант ПП-2.
Начала информатики - Канторович В 1953—1954 годах Л.В. Канторович разработал технологию крупноблочного программирования, которая также давала обозримое описание программ и обеспечивала степень формализации, достаточную для исследования синтаксических структур программ и создания программирующих программ.
Это направление отходило от традиционного (фон-Неймановского) программирования, что, естественно, затрудняло развитие этих идей. Школа следовала математическому направлению, которое связывается сейчас, в частности, с функциональным стилем и проявляется также в других подходах, когда проблемы программирования все теснее начинают увязываться с математическими представлениями, результатами.
Начала информатики - Канторович Характерной особенностью крупноблочных систем являлось то, что они оперировали не с индивидуальными числами и символами, а с величинами — укрупненными агрегированными информационными объектами.
Такие укрупненные структуры данных (матрицы, векторы, последовательности, деревья, схемы и т. д.) выступали как целое в вычислительных планах; стандартные способы обработки отдельных элементов величин выполнялись автоматически на нижних уровнях. Это вносило иерархическую структуру в языки программирования, освобождая верхние уровни от ненужной детализации.
Начала информатики - Канторович Отметим следующий принципиальный момент. С каждой величиной при вводе ее в машину связывались три характеристики, выделялись три ее стороны:
2. справка (информация о типе и структуре величины, о ее размещении в машинной памяти), 3. запись (т. е. значение, фактическое представление элементов величины, ее денотат).
Так очень естественно уже на первых шагах были отчетливо введены в рассмотрение синтаксический, смысловой и интерпретационный уровни информационных объектов, и объект рассматривался “объемно”, как целостное единство этих компонент.
Начала информатики - Grace Hopper В 1951 году офицер ВМФ США и руководитель группы программистов, в то время капитан (в дальнейшем единственная женщина в ВМФ адмирал) Грейс Хоппер (Grace Hopper) разработала первую транслирующую программу, которую она назвала компилятором (фирма Remington Rand) – компоновщик.
Эта программа производила трансляцию на машинный язык всей программы, записанной в удобной для обработки алгебраической форме.
Мама программирования Всегда проще попросить прощения потом, чем просить разрешения вначале.
Титулы несравненной Грейс Брюстер Мюррей Хоппер:
“матери компьютера”, “бабушки КОБОЛа”, “королевы программного обеспечения”.
Мама программирования Хоппер и ее группа принялись за разработку компилятора, который позволял бы людям, занятым в бизнесе, программировать на языке, по возможности приближающемся к обычному английскому языку.
Они язык (словарь основных терминов), на котором можно было бы писать команды типа COMPARE (сравнить) или TRANSFER (переслать). Через несколько месяцев работы Хоппер и ее коллеги выделили список примерно из 30 слов, которые стали «рабочими лошадками» обработки данных.
В последствии вошедшие во все ЯВУ.
ФОРТРАН
В 1955 году увидел свет первый алгоритмический язык FORTRAN (FORmule TRANslator - переводчик формул).Он использовался для решения научно-технических и инженерных задач и разработан сотрудниками фирмы IBM под руководством Джон Бэкуса (John Bakus).
ФОРТРАН
Джон Бэкус (John Bakus, 1924 – 2007).Наибольшую популярность получила версия под названием FORTRAN IV, выпущенная в 1962 году.
Хронологически следующим после Фортран был язык APL (его название иногда расшифровывают как A Programming Language, но чаще Array Processing Language).
Кеннет Айверсон – 1957 год (ученик Леонтьева и Айкена).
Своеобразие языка APL заключается в том, что в нем используется собственный набор символов, в том числе символы, не входящие в набор ASCII.
Неожиданное решение позволило очень удобно записывать математические формулы, а наличие специализированного терминала и редкая для того времени интерпретация кодов программ открыли необычную для 60-х годов возможность работы в интерактивном режиме.
Однако необходимость в специализированной клавиатуре и сложность распечатки листингов ограничили распространение APL.
• Фортран – далее APL (его название иногда расшифровывают как A Programming Language, но чаще Array Processing Language) (APL/360).
• IAL (International Algebraic Language) - Алгол 58.
• Особый интерес представляет процедура разработки языка Алгол, которая привлекла к себе выдающихся ученых. Поколению программистов, воспитанных на языках Си или Java, могут показаться странными те надежды, которые возлагались на языки лет 40 назад.
• В них видели не столько прикладной инструмент программирования, сколько — не без излишней доверчивости по отношению к возможностям искусственного интеллекта — способ общения с машиной.
• Возможно, поэтому, а может быть, по причине большей, чем сегодня, гуманитарной составляющей в сознании программистской общественности в центре внимания последней оказались работы лингвиста Ноама Хомского, изучавшего синтаксические особенности естественных языков. Хомский отличался значительным своеобразием и несомненной харизмой.
В 1960 году появился ALGOL (Algoritmic Language алгоритмический язык), ориентированный на научное применение, в него введено множество новых понятий, например, блочная структура. Этот язык стал концептуальным основанием многих языков программирования.
Тринадцать европейских (в том числе и советских) и американских специалистов по программированию в Париже утвердили стандарт языка программирования ALGOL-60.
Группа разработчиков ALGOL:
John McCarthy, Fritz Bauer, Joe Wegstein John Backus, Peter Nauer, Alan Perlis Лингвистическая среда для общения с машиной Джон Бэкус и Питер Наур разработали формальный метод описания языков программирования, приобретший популярность благодаря Алгол: любой учебник по этому языку включал описание на BNF Сегодня трудно сказать с полной уверенностью, что работы Хомского действительно серьезно повлияли на развитие языков программирования, но одно явное следствие, безусловно, есть — это нотация Бэкуса-Наура.
Создание АЛГОЛа – формирование парадигмы программирования Оптимизирующие трансляторы Структурный подход к программированию А.П.Ершов, М.Р.Шура-Бура, С.С.Лавров ЯВУ – языки высокого уровня В 1960 году Дж. Шварц и др. из фирмы System Development разрабатывают язык программирования Jovial (Джовиал).
Название происходит от Jule's Own Version of International Algorithmic Language.
Процедурный ЯВУ - прототип Алгола-58.
Использовался главным образом для военных приложений ВВС США.
Язык JOVIAL был создан Джулиусом Шварцем на IAL. Отсюда и аббревиатура JOVIAL (Jules Own Version of the International Algorithmic Language).
Долголетие это языка объясняется тем, что еще в 70-е годы Пентагон пришел к разумному решению о принятии стандарта на систему команд и архитектуру 16-разрядного микропроцессора для бортовых систем (кстати, стандарт MILSTD-1750 действует в армии США по сей день).
В качестве стандартного языка был избран JOVIAL, поскольку Шварц заложил в него возможность создания кросс-платформенных программ, способных работать в реальном режиме времени.
В структуре JOVIAL-машины имеются возможности оптимизации кода для переноса программ с компьютера, на котором ведется разработка, на целевой встроенный компьютер.
К 1960 году за очень короткое время группой CADASYL (Conference on Data System Languages) под руководством Joe Wegstein и при поддержке фирмы IBM был разработан стандартизированный деловой язык программирования COBOL (Comnon business oriented language - общепринятый деловой ориентированный язык). Этот язык ориентирован на решение экономических задач, а точнее - на обработку информации.
Joeseph Wegstein В 1961 году американским профессором Джоном Маккартни разработан язык LISP (List procssing language - язык обработки списков).
В 1962 году Р.Грисуолд разработал язык программирования СНОБОЛ, ориентированный на обработку строк.
Jay W. Forrester Джей Форрестер запатентовал память на магнитных сердечниках. Впервые такая память применена на машине Whirlwind-1 (Вихрь-1). Она представляла собой два куба с 32х32х17 сердечниками, которые обеспечивали хранение 2048 слов для 16-разрядных двоичных чисел с одним разрядом контроля четности.
Jay W. Forrester В машине Whirlwind-1 была впервые использована универсальная неспециализированная шина (взаимосвязи между различными устройствами компьютера становятся гибкими) и в качестве систем ввода-вывода использовались два устройства: электронно-лучевая трубка Вильямса и пишущая машинка с перфолентой (флексорайтер).
Jay W. Forrester Нил Цирлер и Дж. Халкомби Лэнингмл., создали язык высокого уровня и транслирующую систему для компьютера «Вихрь-1» в Массачусетском технологическом институте.
Создание интеллектуальной программирующей системы DINAMO Модели мировой динамики Мир-2 – В.М.Глушков Мир-2 (1969) 12 тыс.
Световое перо Никита Николаевич Моисеев В 1962 году Э.В.Евреиновым и Ю.Г.Косаревым предложена модель коллектива вычислителей и обоснована возможность построения суперкомпьютеров на принципах параллельного выполнения операций, переменной логической структуры и конструктивной однородности.
Программа в терминах ПРОЦЕССОВ 1965 Язык BASIC (Beginners allparpouse sumbolic instraction code многоцелевой язык символических инструкций для начинающих) был разработан профессорами Дартмутского колледжа Томом Куртцем (Tom Kurtz) и Джоном Кемени (John Kemeny) для обучения студентов, незнакомых с вычислительной техникой.
У языка со временем появилось множество диалектов:
Basica (IBM), GW-Basic, MSX-Basic, Turbo-Basic (Borland), Quick-Basic (Microsoft), XYBasic, QBasic, CBasic, Basic-80, 86 и 87Basic/387Basic (MicroWay) и т. д.
Впервые BASIC был применен в компьютере IBM 704, но широкое распространение получил в начале 1980-х, после того как в 1975 г. Билл Гейтс и Пол Аллен написали интерпретатор Basic для первого ПК Altair 8800.
1966 - язык программирования РЕФАЛ - В.Ф.Турчин.
изначально задуманный как метаязык для описания семантики других языков, но впоследствии, с появлением эффективных практических реализаций, он стал использоваться в качестве языка программирования.
Система программирования ТеХ Издательская система Искусство программирования 1967 – Совместный проект IBM и группы пользователей – разработка нового языка программирования, объединяющего возможности обработки научных данных и решения бизнес-задач.
Назвали его PL/1 (Programming language - универсальный программноориентированный).
1967 - Эдвард Фейтенбаум из Стэнфордского университета разработал первую экспертную систему DENDRAL с - продукционным представлением знаний.
1968 - Эдсгер Дейкстра разработал концепцию структурного программирования.
1968 - М.Р.Куиллиан из Университета Карнеги-Меллона предложил способ представления знаний в виде семантических сетей 1968-1970 годах профессор Никлаус Вирт создал в Цюрихском политехническом университете язык PASCAL. Он создавался как язык, который, с одной стороны, был бы хорошо приспособлен для обучения программирования, а с другой давал бы возможность эффективно решать самые разнообразные задачи на современных ЭВМ.
При создании этого языка Вирт большое внимание уделял хорошему стилю программирования - структурному программированию, благодаря которому конструкции PASCAL позволяют писать надежные, легко проверяемые программы с ясной и четкой структурой.
Профессор математики МТИ (Массачусетского технологического института) Сеймур Пейперт (Seymour Papert) и его коллеги создали новый язык на основе Лиспа, назвав его Лого (что погречески означает слово).
По инициативе Пейперта в языке стала использоваться так называемая черепашка, обеспечивающая связь “объект — мысль” (сначала употреблялась механическая черепашка, ползающая по полу, а затем — ее условное изображение на экране).
Как отмечал Пейперт, “компьютер обычно шаг за шагом ведет ребенка за собой”, а Лого, наоборот, “убеждает ребенка в том, что он способен управлять машиной, позволяет ребенку сказать: “Здесь я хозяин”.
Сначала Лого предназначался для больших компьютеров и миникомпьютеров, но потом проник в тысячи классов начальных школ.
Парадигмы программирования 21 век - объектно-ориентированное программирование (ООП).
За какие-то 15 лет оно воплотилось в господствующую религию, подчинившую умы миллионов программистов.
ООП - стандарт де-факто.
С использованием объектноориентированной методологии (ООМ) осуществляется разработка огромного числа программных проектов, а ООП является основным инструментом для построения кода. Парадигмы программирования Процедурное программирование Императивная парадигма программирования описывает процесс вычислений посредством описания управляющей логики программы, т.е. в виде последовательности отдельных команд, которые должен выполнить компьютер. Каждая команда является инструкцией, изменяющей состояние программы. Программа, написанная в императивном стиле, похожа на набор приказов, выражаемых повелительным наклонением в естественных языках.
Декларативная парадигма программирования определяет процесс вычислений посредством описания логики самого вычисления, а не управляющей логики программы Парадигмы программирования Функциональное программирование Структурное программирование Параллельное (событийно-управляемое) программирование Объектно-ориентированное программирование Аспектно-ориентированное программирование Логическое программирование Программирование в ограничениях ООП программирование informatics - научное направление, изучающее модели, методы и средства сбора, хранения, обработки и передачи информации - совокупность дисциплин естественно объединяющихся с целью семантической (смысловой) обработки информации Информатика не более наука о компьютерах, чем астрономия — наука о Эдсгер В. Дейкстра