- •Кафедра «Информационные технологии»
- •Лекция 4
- •Приоритет программного обеспечения над аппаратным обеспечением
- •Классификация программного обеспечения
- •Общее ПО - рассчитано на широкий круг
- •Рост доли общего ПО
- •Развитие ПО - 1950-е годы: библиотеки стандартных программ и ассемблеры
- •Развитие ПО - 1950-е годы: библиотеки стандартных программ и ассемблеры
- •Развитие ПО - 1960-е годы: языки и системы программирования, пакетные ОС
- •Развитие ПО - 1970-е годы: диалоговые ОС, СУБД
- •Развитие ПО - 1980-е годы: настольные ППП, CASE-технологии
- •Развитие ПО - 1990-е годы: компьютерные сети и мультимедиа
- •Языки и системы программирования. Предыстория
- •Языки и системы программирования. Предыстория
- •Фрагмент простейшей программы на Фортране
- •Особенности языка Фортран
- •Языки и системы программирования
- •Основные идеи создания Basic
- •Пример программы на Basic
- •Пример программы на Basic
- •Простой и удобный Бэйсик в конце 1960-х годов был
- •Особенности современного Basic
- •5) Cobol – язык для бухгалтеров
- •Фрагмент программы на Коболе
- •Некоторые особенности языка Cobol
- •6) Algol, его влияние на языки
- •Пример программы на Algol
- •Пример программы на Algol
- •7) Pascal и его потомки
- •Внешний вид программы на базовом Паскале почти неотличим от «алгольного»:
- •«Второе рождение» языка Паскаль - 1984 г., Филипп Кан, доработал Паскаль для использования
- •Язык Ada - еще один «потомок» Паскаля
- •8) «Суперязык» PL/1
- •8) «Суперязык» PL/1
- •Пример простейшей программы на PL/1
- •Несмотря на теоретическое несовершенство,
- •9) Simula и Smalltalk – «объектная»
- •Все известные до Smalltalk языки основывались на концепции «данные-процедуры», т. е. были
- •Для общения с пользователем в Smalltalk были впервые применены особые графические объекты —
- •Пример программы на Smalltalk
- •Роль Smalltalk
- •10) С — язык для профессионалов ( )
- •10) С — язык для профессионалов ( )
- •Пример - программа сортировки пяти чисел на
- •11) Объектно-ориентированные
- •Java
- •Требования к Java изначально были очень высокими – язык должен быть:
- •Программы на Java (апплеты, дословно «приложеньица») выполняются в два этапа:
- •12) Lisp — инструмент функционального программирования
- •Пример - программа вычисления среднего
- •LISP
- •«Потомки» LISP
- •Использование «потомков» LISP
- •13) Prolog — «несбывшаяся мечта»
- •Примеры программ на языке Prolog
- •Примеры программ на языке Prolog
- •«Генеалогическое дерево» языков программирования высокого уровня
- •Выводы по развитию ПО
- •Выводы по развитию ПО
- •Выводы по развитию ПО
- •Выводы по развитию ПО
- •Выводы по развитию ПО
Программы на Java (апплеты, дословно «приложеньица») выполняются в два этапа:
1) Сначала исходный текст компилятором переводится на промежуточный аппаратно-независимый язык.
В таком виде «полуфабрикат» программы (байт-код) хранится на интернет-сервере, откуда по запросу клиента пересылается ему по сети.
2) У клиента байт-код исполняется специальным интерпретатором - виртуальной Java-машиной,
он встроен во все современные браузеры. Предполагается, что в перспективе Java-машины
будут во всех устройствах, подключаемых к Internet, - сетевых терминалах, сотовых телефонах, бытовых приборах. Тогда устройства будут взаимодействовать друг с другом, обеспечивая высокий уровень51 сервиса.
12) Lisp — инструмент функционального программирования
Lisp (LISt Processing — обработка списков) —
еще один язык-«долгожитель», наряду с Фортраном и Коболом. Создан в 1960 г. Дж. Маккарти в МТИ на основе так называемого лямбда-исчисления, предложенного в 1930 г. математиком Алонзо Черчем.
Обрабатываемым объектом в языке является список, а программа на Лиспе — последовательность вызовов функций; нет ничего, кроме вызовов функций. Поэтому программирование на таком языке называется функциональным.
Вызов функции — это список вида
(<имя-функции> < аргумент-1> <аргумент- 2> ... <аргумент-n>) 52
Пример - программа вычисления среднего
арифметического чисел 8, 5, 13, 11, 10
Создается список L из 5 элементов, штрихи обозначают константы (здесь выражение в скобках есть сам список и его не нужно интерпретировать как вызов функции). Затем задается рекурсивное определение новой функции суммирования элементов списка (sum L) через примитивные функции:
cond — условная функция, проверяющая с помощью функции null пустоту списка; add — суммирование аргументов; car —
извлечение 1-го элемента из списка; cdr — извлечение остатка
списка (без 1-го элемента). Последняя строка вызывает функцию
53
деления (делимое - результат вызова функции (sum L)).
LISP
• Сразу после появления стал очень популярным, прежде всего для решения логических задач.
•Легко реализуется на аппаратном уровне, например, специализированные Лисп-процессоры используются в системах искусственного интеллекта для военных применений (в частности,
всистемах самонаведения).
•Несмотря на некоторую громоздкость, широко применяется в США как вычислительный язык, уступая по распространенности только Фортрану.
Вчастности, в САПР AutoCAD используется диалект Лиспа – AutoLisp и визуальная среда Visual
Lisp. |
54 |
|
«Потомки» LISP
Пример программы на Scheme
55
Использование «потомков» LISP
Meep (или MEEP) – свободно распространяемый пакет для моделирования электромагнитных систем на основе FDTD-
методов; использует язык Scheme.
Пример – расчет в Meep изогнутого волновода
56
13) Prolog — «несбывшаяся мечта»
об ЭВМ V поколения
Язык Prolog (PROgramming for LOGic —
программирование для логики) был создан в Европе в начале 1970-х годов. В отличие от всех предыдущих языков, включая Лисп, Пролог не является алгоритмическим языком, то есть он не описывает, как нужно получить результат. Он является декларативным языком, то есть показывает, что дано и что нужно получить.
Программа на Прологе состоит из фактов некоторой предметной области и правил. Интерпретирующая система сама делает логический
вывод - |
применяет правила к фактам, используя |
|
аппарат |
математической логики. |
57 |
Примеры программ на языке Prolog
Предметная область - родственные отношения между 5 членами семьи, описываемая фактами:
58
Примеры программ на языке Prolog
59
«Генеалогическое дерево» языков программирования высокого уровня
60
1960 |
1970 |
1980 |
1990 |
61 |
2000 |