Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 3 демо.doc
Скачиваний:
6
Добавлен:
06.11.2018
Размер:
109.57 Кб
Скачать

Концепция императивного языка програм­ми­ро­ва­ния

  • Основная задача программирования.

  • Краткая история языков програм­ми­ро­вания.

  • Языки программирования как формальные языки описания алгоритмов.

  • Структура языка программирования.

  • О синтаксисе и семантике описаний алгоритмов.

  • Формальные средства описания синтаксиса ЯП.

  • Функциональная и операционная семантика ЯП.

Основная задача программирования

Основная задача программирования – комплексная задача проектирования системы решения задачи обработки информации.

Решение этой задачи осуществляется в рамках определенной методологии и технологии. Технология программирования включает, в частности, работу в конкретной системе проектирования (программирования), основанной на использовании конкретного языка программирования.

Современные представления о технологиях программирования ушли далеко вперед от простого описания алгоритма на конкретном ЯП.

Однако Языки программирования нужно знать

Языки программирования как формальные языки описания алгоритмов.

Языки программирования высокого уровня играют роль средства связи между программистом и компьютером, а также между программистами. Это обстоя­­тельство накладывает на язык многие обязательства:

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 и результат интерпретировать как (новое) значение этой же переменной”.

Совокупность интерпретаций синтаксических правил называется семантикой языка.

Изучение языка программирования заключается в изучении его синтаксиса и семантики