лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай) (1160852)
Текст из файла
Языки программирования.Лектор:Игорь Геннадьевич ГоловинВыполнили: Ульянов Алексей, 324 гр.Лихогруд Николай, 320 гр.Сергеев Николай, 328 гр.Лекция. Ульянов А.В.Определение языка программирования (далее ЯП).Существуют два типа определений:1) эксенсиональное (через объем). Идет перечисление ЯП – С++, Pascal, Фортран, …2) интенциональное. Определяет понятия по их родовым признакам.Одно из определений ЯП:ЯП – это инструмент планирования поведения исполнителя.Например:PLANNER – необходим для обмена информации некоторых объектов, планирование поведения. (напримерповедение людей).
Реализовать невозможно! Алгоритмически неразрешен.APL – компактный язык для записи математических алгоритмов. Один из первых интерактивных ЯП. (в 1964)Минус – сложность в «читабельности» и понимании.Основа современных языков - «читабельность».HTML – есть исполнитель (браузер). Есть поведение, можно планировать. Но не является ЯП, т.к.
неталгоритмической полноты.Планирование. Что необходимо:1) прогнозировать2) контролироватьВ дальнейшем под исполнителем будем понимать ВС.Основные позиции рассмотрения ЯП.Виды программирования:1) Игровое (тянет компьютеры вперед)2) Научное3) ИндустриальноеИгровое: программирование для себя (как развлечение).Основное требование к игровому ЯП – легкость в изучении и применении (в основном интерпретируемые).1964. Basic – был классикой игрового ЯП.Научное: для научных вычислений и т.п. (В основном на Фортране)Требование – легкость применения. Фортран в основном используют математики.Индустриальное: Программирование не для себя.
Программа отчуждается, т.е. идет создание программногопродукта.Требования:1) Эффективность2) Читаемость3) модифицируемостьКризис в программировании:Впервые это понятие появилось при написании ОС для IBM/360.1961 – начало написания ОС.1964 – вышла на рынок.Спрашивается, что же делали разработчики три года?Оказывается, что все основные задержки были связаны со сложностью программирования – несколькомиллионов строк кода. Выяснилось, что один человек такое создать не может.
(Книга автора ОС –«Мифический человекописец».)Срывались сроки и качество продукта. Росла стоимость проекта.Распределение расходов:Сопровождение – 50% (багги, изменение требований заказчиков/пользователей)Тестирование – 25%Кодирование – 10-12%Остальное – это ТЗ, ТУ и т.п.Основные позиции:1)2)3)4)5)Технологическая (как?)Авторская (почему?)РеализаторскаяСемиотическаяСоциальнаяТехнологическая.Необходима возможность командного создания.ТП -> потребности ЯП.Паскаль хорош для обучения, читабельный, но менее пригоден для индустриального программирования, чемнапример С, С++.
(хотя бы по скорости написания)Авторская.Любой язык программирования, по сути – совокупность компромиссов.Для создания ЯП можно сделать так: взять популярные языки и всунуть что-то дополнительно. (Object Pascal,Object C, C++)Это не самый лучший подход.Реализаторская.С точки зрения программиста. Не должна быть главной при разработке приложений.Семиотическая.Семиотика – наука о знаковых системах.Любой язык может быть выражен в знаковой системе.Социальная.Язык нужно не только спроектировать и создать, им должны пользоваться.Рассмотрим две системы программирования: VB и Delphi.
Delphi по многим параметрам лучше VB, но уступаетв социальном плане, т.к менее разрекламирован.Исторический очерк развития ЯП:1954 – Эмбриональный период.1954 – 57 – Фортран (Д. Бекус). Проект добился всех целей, которые были поставлены.В основном рассчитан для решения уравнений математической физики. Раньше математики рисовали блоксхемы, затем подходили к программисту, который переводил программу в двоичный код, переносил наперфокарту, и только потом запускал ее на машине. И вот если происходила ошибка, приходилось всеповторять сначала, но уже конечно с исправленной (не всегда верно) программой.
Джон Бекус предложилтогда создать программу FT. Программа работала на трехадресной машине. Появился условный оператор if(*) M1,M2,M3 – соответственно переход по больше, меньше, равно нулю.Три качества программистов, которые отличали, да и отличают программистов от других профессий:1) Лень2) Нетерпение3) ВысокомерностьОт того с ними было сложно работать.
Изобретение данного языка позволило математикам самим писатьсвои вычислительные программы. Но изначально хотели эту программу «прогнать», т.к. в то время основнымресурсом было время работы компьютера. А работа с Фортраном заняла бы немало этого времени.+ Эффект мобильности знаний (при переходе на другие компьютеры не нужно переучиваться)1958 – 1960 – Algol 58, Аlgol 60.Язык для обмена алгоритмами.
Синтаксис и структура были описаны на БНФ. Достиг огромной популярности(первая систематизированная попытка создания ЯП)Algol 60 стал прародителем многих последующих ЯП – Паскаль, Ада…Но был очень существенный минус – ключевые слова нужно было обязательно подчеркивать. А как делопроисходит на перфокартах?Begin -> ‘Begin’ или \Begin/ и т.п. Отсюда неоднозначность и не совместимость – программа, работающая наодном компьютере могла не работать на другом.
Напрашивается вывод, что Algol не подходящий инструментдля программирования.L1/L2 > 1 – время работы программы, написанной на Алголе/ «ручками».1959 – 1961 – Джон Макарти создал язык Lisp.Информацию легче представлять в виде иерархической структуре.Основная операция: eval S – вызов функции.Отсюда появилось понятие функционального программирования.Первая программа с ИИ была написана на Lisp.Не самый удачный пример языка для программирования.1959 – COBOL.
В основном был известен в Европе, в СССР – почти нет.В банках программное обеспечение было написано на COBOL. Никто не думал, что язык доживет до 2000года.1960 – Бурное развитие ЯП.«Каждый уважающий себя ВЦ должен иметь свой ЯП». Причем чаще всего на базе других ЯП. Такое бурноеразвитие – плохая мобильность знаний.ЗаключениеУ любого языка программирования образовалась своя экологическая ниша.Из биологии: Какое место в природе.
Два разных вида не могут существовать в одно время в одной нише (какправило).По теории Дарвина – более совершенный вид выбивает менее совершенный.Но на практика оказалось иначе – «выбить» старый вид сложнее, чем создать все с нуля.Языки программирования ведут себя подобным же образом.Фортран – вычисления.COBOL – банки.Lisp – обработка символьной информации.Лекция. Лихогруд Н.Н.Очерк развития Языков Программирования1954 –начало 60-х60-е - начало 70-х70-е – начало 80-х«Эмбриональный» период развития«Экстенсивное» развитие«Зрелость» языков программированияЭкстенсивное развитие программированияКаждый уважающий себя институт\проект считал своим долгом разработать собственный ЯП)19671972«симула 67»:• введение классов• Объекты классов, расположенные в ОП• Оператор «new»«Small Talk» - первый ОО(объектно-ориентированный) ЯПЯзыки создавались под конкретные задачи и занимали свои экологические ниши, так же как животные вприроде.
Как только язык начинали использовать не по назначению (не в своей нише), возникали ошибкиDO 5 I = 1,3Пробелы в Фортране не рассматриваются/операторы/(нет разделителей)5 continueDO5I=1.3Ошибка: Не было надлежащих определений.(Данная строчка является присваиванием идентификатору значенияDO5I 1.3)Из-за подобной ошибки в своё время погиб американский шаттл1964PL/I (programming language)Первая попытка создания универсального языка(компанией IBM)Содержал огромное количество конструкций, которые иногдавзаимодействовали самым непредсказуемым образомПри разработке языка каждая конструкция должна проверяться навзаимодействие с другими структурами1968Algol-68Вторая попытка создания универсального языка (компанией IFIP)Ортогональность языковых конструкций – взаимонезависимость(везде, где допустима переменная,допустимо и выражение и т.д.)В FORTRANDO 5 I=2, N–1 – ошибка.Правильно будет N1=N1-1DO 5 I=1,N1В Algol-68exp – выражениеexp; - операторВыражение может быть оператором, оператор может стать выражением(V = 5)Для Algol-68 везде где можно использовать выражение можно использовать оператор.
Таким образом, Algol68 практически полностью ортогональный язык.В Algol-68 были формально описаны не только синтаксис, но и семантика. В 1979 вышло пересмотренноесообщение об Algol-68, из-за того что рядовые программисты были не в состояние понять язык. Но и оно непринесло счастья, т.к. использовало двухуровневые W-грамматики, Мета-правила, Прото-правила. Метаправила генерировали Прото-правила. Язык был сложным, строгим и его не поняли рядовые программисты.Компиляторы были невероятно сложны, и их было создано немного.1969Денис Ричи создаёт язык «Си» - машинно-независимый ассемблер.На основе языка «Си» Томсон создал UNIX (в противовес MULTICS)Вирт создаёт язык PascalСи и Паскаль являются простыми языками программирования (по сравнению с PL/1 и Algol68).
С ихпоявлением завершилась пора экстенсивного развития программирования. Паскаль успешно занял своюнишу языка для обучения студентов программированию, а Си вытеснил ассемблер из ниши системногопрограммирования.«Зрелость» языков программирования (70-е – начало 80-х)«Языки программирования нужно проектирования нужно проектировать!»1967Дейкстра опубликовал статью о "о вреде оператора goto", в которой разбилв пух и прах оператор goto. В этой статье Дейстра затронул тему качествапрограммирования.ВходныеданныеЧёрныйящикВыходныеданныеДейкстра предложил подход к программированию как к пошаговой детализациипрограммы. Метод чёрного ящика – известно, что должно передаваться в блок на входе ичто получаться на выходе. Внутренние операции и преобразования данных неизвестны(будут детализированы позднее) Например задача обработки информации выглядит кактри последовательных чёрных ящика( «Подготовить», «Обработать», «Завершитьиспользование»), которые нужно постепенно детализировать, пока программист недойдёт до уровня конструкций языка.Абстракция данныхПрограммист должен концентрироваться на участках и блоках кода, абстрагируясь, т.е.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.