- •Основная задача программирования
- •Однако Языки программирования нужно знать
- •2. Краткая история развития языков программирования
- •Средства определения языка
- •Язык формул Бэкуса-Наура
- •Описание яп на языке формул Бэкуса – Наура (бнф) – это набор
- •Синтаксические диаграммы
- •Язык программирования Паскаль
- •Алфавит языка
- •1.Латинские буквы (большие и маленькие), знак подчеркивания ’_’
- •2.Цифры 0,...,9
- •5.Скобки ( ) [ ] { }
- •Структура программы
Концепция императивного языка программирования
-
Основная задача программирования.
-
Краткая история языков программирования.
-
Языки программирования как формальные языки описания алгоритмов.
-
Структура языка программирования.
-
О синтаксисе и семантике описаний алгоритмов.
-
Формальные средства описания синтаксиса ЯП.
-
Функциональная и операционная семантика ЯП.
Основная задача программирования
Основная задача программирования – комплексная задача проектирования системы решения задачи обработки информации.
Решение этой задачи осуществляется в рамках определенной методологии и технологии. Технология программирования включает, в частности, работу в конкретной системе проектирования (программирования), основанной на использовании конкретного языка программирования.
Современные представления о технологиях программирования ушли далеко вперед от простого описания алгоритма на конкретном ЯП.
Однако Языки программирования нужно знать
Языки программирования как формальные языки описания алгоритмов.
Языки программирования высокого уровня играют роль средства связи между программистом и компьютером, а также между программистами. Это обстоятельство накладывает на язык многие обязательства:
1.Язык должен быть близок к тем фрагментам естественных языков, которые обеспечивают конкретную предметную область деятельности человека;
(Язык, ориентированный на деловые сферы применений, должен содержать понятия, используемые в этом виде деятельности: документ, счет, база данных и т.п.).
2.Все средства языка должны быть формализованы в такой степени, чтобы их можно было реализовать как машинные программы;
(например, предложение “Найти документ X в базе Y“ должно породить программу в машинном языке, осуществляющую требуемый поиск).
3.Язык программирования не только поддерживает предметно-ориентированную деятельность, но и стимулирует ее развитие
(понятие базы данных, вычислительной сети привело к революции в деловой деятельности).
4.Язык программирования - нечто большее, чем средство описания алгоритмов: он несет в себе систему понятий, на основе которых человек может обдумывать свои задачи, и нотацию, с помощью которой он может выразить свои соображения по поводу решения задачи.
Изучая новый язык программирования, лучше всего к нему относиться, как к любому другому иностранному языку: средства языка принимать как данные от Бога, даже если они нам кажутся непонятными, плохими или ненужными.
2. Краткая история развития языков программирования
Идея языка программирования появилась так же давно, как и универсальные вычислительные машины - на рубеже 40-50 годов. Уже на первых шагах их эксплуатации выяснились недостатки использования машинного кода, определились методы устранения или уменьшения этих недостатков: использование библиотек стандартных подпрограмм, имен вместо адресов, предварительного распределения памяти и т.д.
Большое влияние на последующие разработки оказал язык Fortran, созданный в IBM под руководством Дж. Бэкуса (1954-57гг.) В то же время М.Г.Хоппер (Ramington-Rand Univac) и ее группа разработали язык обработки коммерческой информации Flow-Matic. М.Г.Хоппер принадлежит термин “компилятор”. Так называлась ее первая транслирующая программа.
Первые производственные языки программирования появились на рубеже 50-60 годов, знаменуя собой новую эпоху в развитии вычислительных машин и методов обработки информации. Эти языки высокого уровня были реализованы на первых ЭВМ 2-го поколения.
Вот некоторые даты:
1957 г. Fortran США, IBM, Дж. Бэкус: по существу, первый широко применяемый язык, ориентированный на научно-инженерные и численные задачи.
1960 г. Cobol США, Объединенный комитет производителей и пользователей ЭВМ: язык для коммерческих задач.
1960 г. Algol-60 Улучшенный вариант языка Algol-58, Европа, США, международная рабочая группа: универсальный язык, прародитель Pascal-я и многих других языков европейского стиля.
1965 г. BASIC Дж. Кемени, Т.Куртц, США, Дартмутский колледж: язык для начинающих.
1969 г. Logo С.Пейперт, США, Массачусетский технологический институт: язык для детей.
1966 г. PL-1 группа IBM,США: Многоцелевой язык для систем коллективного пользования.
1968 г. Algol-68 Европа, международная рабочая группа: европейский ответ на PL-1.
1970 г. Pascal Н.Вирт, Швейцария, федеральный институт технологии, Цюрих: язык для обучения специалистов в области информатики.
1959 г. Lisp Дж.Маккарти, США, Массачусетский технологический институт: язык функционального программирования.
1972 г. Prolog А.Колмероэ и его коллеги из лаборатории Искусственного интеллекта, Марсельский университет, Франция: язык логического программирования, завоевавший широкую известность как язык для задач обработки баз знаний.
1972-75гг. С и его развитие С++. Д. Керниган, Д. Ричи, Б. Страустрап, AT & T Bell Lab.,: языки системного программирования, получившие широкое распространение благодаря своей эффективности и поддержке ведущих программистских компаний.
1975 г. Modula-2 Н.Вирт, Развитие языков Pascal и Modula для системного программирования.
Первые языки программирования несли в себе явно выраженные признаки ориентации на структуру ЭВМ.
В результате теоретического осмысления процессов, происходивших в программировании, был выработан так называемый структурный подход к написанию программ, а для его реализации разработаны такие языки, как Pascal, Modula-2.
Перенесение акцентов с ЭВМ на программы еще более ярко выразилось в появлении принципиально новых стилей программирования
-
функционального программирования (Lisp),
-
логического программирования (Prolog),
-
алгебраического программирования (Reduce, APS).
Современный этап в развитии программирования характеризуется следующими чертами:
-
Развитие языков программирования для мультипроцессорных и мультимашинных систем;
-
Развитие декларативных языков программирования, ориентированных на задачи искусственного интеллекта;
-
Развитие объектно-ориентированных языков, в которых иерархия абстракций позволяет наращивать средства языка, одновременно меняя архитектуру ЭВМ применительно к рассматриваемому классу проблем.
Структура языка программирования.
Любой язык программирования обладает сходством с естественными языками.
Он имеет свой алфавит, словарь, знаки препинания (разделители)
Словарь языка программирования состоит из чисел, слов и некоторых других символов. Элементы этого словаря называют лексемами.
Примеры лексем:
394, -5678, 12.456, 67.5е8 - числа;
Integer, Cos, MaxInt - имена;
(, ) - скобки.
Язык программирования содержит набор правил построения лексем. Совокупность этих правил называется лексикой языка. Текст любой программы есть последовательность лексем.
Основная задача лексического анализа - проверка правильности написания и идентификация лексем в этом тексте.
Каждая лексема имеет свою интерпретацию (смысл).
Так, последовательность цифр, разделенная точкой, интерпретируется как вещественное число в десятичной нотации.
Cos - как имя функции.
Совокупность интерпретаций лексики языка называется его прагматикой.
Правила образования более сложных конструкций языка называются синтаксическими.
Совокупность синтаксических правил образует синтаксис языка программирования.
Синтаксические конструкции языка интерпретируются как действия или описания.
Например, оператор присваивания x:=x+2 имеет смысл “сложить значение переменной x с числом 2 и результат интерпретировать как (новое) значение этой же переменной”.
Совокупность интерпретаций синтаксических правил называется семантикой языка.
Изучение языка программирования заключается в изучении его синтаксиса и семантики