лекции (2003) (Глазкова)

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

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

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

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

Текст из документа "лекции (2003) (Глазкова)"

-2003

Языки программирования (ЯП)

Конспект лекций ( Глазковой В. В., 320 группа )

Лекция 1

Структура курса

Основная задача курса – концепции ЯП.

Введение

  1. Традиционные ЯП (языки, которые основаны на принципах фон Неймана; основной оператор – присваивание).

  2. Объектно-ориентированные ЯП.

  3. Другие парадигмы.

Введение

  1. Определения ЯП.

  2. Исторический очерк развития ЯП.

  3. Основные понятия ЯП.

  1. Определения.

  • Экстенсиональное - определение понятия через его объем.

Явно перечислим те конкретные языки, которые нас заведомо интересуют.

Язык программирования – это С, С++, С#, Pascal, Java и т.д. (их конечное число, т.к. конечно количество авторов-создателей). В 1969 в США уже существовало 400 ЯП. Сейчас активно используется около100 ЯП.

  • Интенсиональное - определение понятия через его признаки .

Язык программирования – это набор правил, определяющих, какие последовательности символов составляют программу и какое вычисление осуществляет программа (М. Бен-Ари).

Но свести ЯП к набору правил фактически невозможно. Даже сами создатели языка постоянно доопределяют язык в силу сложности.

Хочется иметь возможность на основе определения говорить, является ли данный язык языком программирования. Такое определение должно опираться на существенные свойства языков. Дадим ещё одно из возможных интенсиональных определений.

ЯП – это инструмент планирования (программирования) поведения исполнителя.

Пример : русский язык – не ЯП (в силу неоднозначности).

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

2. Исторический очерк развития ЯП.

Можно выделить 3 основных периода возникновения ЯП:

  1. 1954-1960 - появление

  2. 1960-1980 – рост

  3. 1980-2003 – стабилизация

2.1. 1954-1960 – период появления.

1954-1957 - Бэкус руководил группой по созданию языка FORTRAN или транслятора формул(FORmula TRANslator).

Этот язык был создан для научных приложений, которые обычно имеют дело с простыми структурами данных и значительным количеством арифметических вычислений. FORTRAN оказался весьма удачным языком и оставался доминирующим вплоть до 70-х годов. Следующая версия FORTRAN вышла в 1958 и стала называться FORTRAN II, а спустя несколько лет появился FORTRAN IV. Поскольку каждый производитель ЭВМ реализовывал для своих компьютеров собственную версию языка, то, естественно, царил хаос. В 1966 FORTRAN IV стал стандартом под названием FORTRAN 66 и с тех пор дважды подвергался пересмотру, в результате чего возникли стандарты FORTRAN 77, FORTRAN 90 (существует и сейчас).

Экологическая ниша ЯП – область применения языка. Любой экологической нише соответствуют свои технологические потребности. Поскольку самыми первыми на компьютерах рассчитывались научные задачи, FORTRAN первый занял свою экологическую нишу и стал стандартным языком в науке и технике, и только теперь на смену ему приходят другие языки.

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

1958-1960 – ученый комитет под руководством Питера Наура разработал язык ALGOL60. Перед разработчиками языка ALGOL стояли следующие цели:

  1. Сделать систему обозначений в ALGOL как можно ближе к стандартной математической.

  2. Приспособить ALGOL для описания алгоритмов.

  3. Предусмотреть компиляцию программ из ALGOL в машинный язык.

  4. Обеспечить независимость языка от архитектуры компьютера.

Многие из этих целей оказались не достижимы.

Чтобы обеспечить независимость от архитектуры, в этот язык не были включены возможности ввода-вывода; для таких операций следовало создавать специальные процедуры. Хотя это и обеспечивало независимость языка от архитектуры компьютера, но в то же время приводило к тому, что каждая реализация неизбежно была несовместима с любой другой.

ALGOL не получил широкого коммерческого применения , тем не менее его влияние на другие языки было достаточно велико.

От языка ALGOL произошли два важных языка: Jovial – использовался военно-воздушными силами США для систем реального времени, и Simula – один из первых языков моделирования.

1959 – в США был разработан первый универсальный язык для бизнес-приложений – язык COBOL.

Класс приложений этого типа включал в себя программы для учета поступления заказов, управления ресурсами и персоналом, а также для начисления зарплаты. Они были предназначены для считывания большого объема данных, собранных за длительный период времени, и созданию новых данных, обновленных в результате незначительных тривиальных преобразований.

За пределами США язык COBOL широкого применения не получил.

1959 –1960 – создание языка LISP.

Это язык функционального программирования. LISP был первым широко используемым языком программирования, созданным для применения в области искусственного интеллекта. LISP разрабатывался как функциональный язык обработки списков символов. Отличительной особенностью программ, написанных на языке LISP, является реализация алгоритмов, осуществляющих поиск в больших объемах данных. Естественной областью приложения LISP явилась разработка стратегии ведения игры, поскольку обычная программа, написанная на языке LISP, могла создавать дерево возможных направлений движения (как связанный список) и, продвигаясь по этому дереву, искать оптимальную стратегию. Другой естественной областью применения этого языка стал автоматический машинный перевод текста, где одна цепочка символов может заменяться на другую. Почему же LISP не стал промышленным языком программирования? В языке LISP отсутствовало понятие типа данных, т.е. была полная однородность данных, что вело к неэффективности.

Лекция 2.

Основные языки периода 1954-60

область применения (экологическая ниша)

FORTRAN

научно-технические приложения

ALGOL

научные вычисления, запись алгоритмов

COBOL

бизнес-приложения

LISP

научные приложения (искусственный интеллект)

Введём ещё одно важное понятие: мобильность (переносимость).

Различают два аспекта:

· мобильность программ – сохранение функциональности при переходе с одной машины на другую (например, GNU C – удачно организованная мобильная система);

· мобильность знаний – это свойство знаний сохранять свою ценность при переходе с одной платформы на другую.

    1. 1960 – 1980 гг. - период экспоненциального роста; появление основных концепций ЯП.

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

1961 – создание системы IBM/360 (единая система команд, единое программное обеспечение и т.д.)

1964 – с началом серийного выпуска в 1963 новых моделей 360, IBM в 1964 разработала новый язык NPL (New Programming Language), в дальнейшем переименованный в PL/I.

Универсальный язык PL/I объединил в себе вычислительные возможности языка FORTRAN и возможности бизнес программирования языка COBOL. PL/I имел ряд недостатков:

-конструкция список ввода из FORTRAN перешла в PL/I;

-закрывающие конструкции END заменены на END_M, что вело к появлению ошибок.

PL/I - сложный, трудный для изучения язык; для него трудно создавать компиляторы.

Язык PL/I широкого распространения не получил. Первая попытка создания универсального языка оказалась неудачной. В связи с этим появилась шутка : верблюд – это лошадь, созданная комитетом.

1968 – другая независимая попытка создания нового универсального ЯП.

Он получил название ALGOL-68 и был формально (синтаксически и семантически) описан W-грамматикой.

Это был язык-ядро (небольшое количество основных конструкций).

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

Когда конструкции языка ортогональны, язык легче выучить и на нем легче писать программы, поскольку в нем меньше исключений и специфических случаев. Отрицательной стороной ортогональности является то, что программа никогда не будет выдавать ошибки при компиляции, даже если она содержит комбинацию возможностей, которые логически не согласованы или крайне неэффективны при выполнении.

Язык ALGOL-68 оказался слишком сложным для понимания и эффективной реализации.

Эта попытка создания универсального ЯП также оказалась неудачной.

В 60-е была разработана концепция пользовательских типов данных. Язык Simula-67 разработанный норвежцами, ввел концепцию классов в ALGOL. В 80-е это натолкнуло Страуструпа на идею создания С++ как расширения языка С с добавлением понятия классов.

1967-1968 – предложена концепция структурного программирования (Хоар и др.)

1969 – Н. Вирт создал язык Pascal.

Целью разработки было создание языка, который можно было бы использовать для демонстрации идей объявления типов и контроля их соответствия.

Язык Pascal имел небольшое число конструкций и требовал малые ресурсы по реализации (компилятор создан самими студентами).

Это был принципиально новый язык; он вытеснил многие из предшествующих языков, стал преподаваться в вузах для обучения программированию.

Но Pascal имел один большой недостаток – стандартный Pascal вообще не имел никаких средств для деления программы на модули, хранящиеся в отдельных файлах, и поэтому не мог использоваться для программ в несколько тысяч строк. Вирт сразу понял, что модули являются необходимой частью любого практического языка, и разработал язык Modula.

1968 – Д.Ритчи разработал язык С как язык реализации операционной системы UNIX.

Операционные системы традиционно писали на ассемблере, поскольку языки высокого уровня считались неэффективными. Язык С абстрагируется от деталей программирования, присущих ассемблерам, предлагая структурированные управляющие операторы и структуры данных (массивы и записи) и сохраняя при этом всю гибкость ассемблерного низкоуровневого программирования (указатели и операции на уровне битов). Язык С обеспечивает очень эффективное выполнение программ и позволяет получить полный доступ к операционной системе и аппаратной части ЭВМ.

В 1977 Министерство Обороны США решило провести унификацию ЯП, в основном, чтобы сэкономить на обучении и стоимости поддержки операционных сред разработки программ для различных военных систем.

Основные требования к ЯП:

    • надежность;

    • эффективность;

    • модифицируемость.

После оценки существующих языков было принято решение провести конкурс на разработку нового языка, положив в основу хороший существующий язык, такой как Pascal( PL/I и ALGOL).

В конце концов был выбран язык, который назвали Ada (стандартизован в 1983).

Язык Ada уникален в ряде аспектов:

    • перед стандартизацией он подвергся интенсивной проверке и критическому разбору;

    • он был разработан для написания переносимых программ;

    • он расширяет область применения ЯП, обеспечивая обработку ошибок и параллельное программирование.

Несмотря на техническое совершенство и преимущества ранней стандартизации, язык Ada не достиг большой популярности вне военных и других крупномасштабных проектов.

Этот язык оказался слишком трудным. Это связано с тем, что он поддерживает многие аспекты программирования (параллелизм, обработку исключительных ситуаций, переносимые числовые данные), которые другие языки (С, Pascal) оставляют ОС.

2 принципа построения ЯП:

- принцип критичных технологических потребностей;

- принцип минимальности языковых конструкций (по этому принципу в язык включаются только те конструкции без которых он теряет свою функциональность).

    1. 1980-2003 – стабилизация.

В 80-е основное внимание уделяется объектно-ориентированным ЯП.

В 1980 Б. Страуструп создал язык С с классами.

1983 – появление языка С++.

90-е годы – стандартизация ANSI C++.

Создатель языка С++ решил проблему совместимости языков С и С++.

Популярность языка С сыграла значительную роль в популярности языка С++, хотя по сути это разные языки.

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