Слайд 2
Языки программирования
Lecture Notes N 7 v.04
Б. Мишнев
Слайд 3
В результате изучения дисциплины студенты будут способны:
1. Оценить и
выбрать ЯП для выполнения конкретного программного проекта.
2. Учесть затраты на
освоение и применение ЯП в конкретной проблемной области.
Б.Мишнев. Введение в специальность
Слайд 4
Это формальная знаковая система, предназначенная для описания алгоритмов
в форме, которая удобна для исполнителя (например, компьютера).
Он определяет
набор лексических, синтаксисических и семантических правил, используемых при составлении компьютерной программы.
Б.Мишнев. Введение в специальность
Слайд 5
Спецификации ЯП
включают описание:
Типов и структур данных
Операционную
семантику (алгоритм вычисления конструкций языка)
Семантические конструкции языка
Библиотеки
примитивов (например, инструкции ввода-вывода)
Философии, назначения и возможностей языка
Б.Мишнев. Введение в специальность
Слайд 6
Запись алгоритмов непосредственно на машинном языке
156С
166В
Мнемоническая запись команд
и операндов (assembler – сборщик)
LD R5, PRICE
LD R6, TAX
Б.Мишнев.
Введение в специальность
Слайд 7
1. Машинные языки
2. Машино-зависимые языки (ассемблеры)
3. Машино-независимые языки
(языки высокого уровня)
4. Языки четвертого поколения (4GL)
Б.Мишнев. Введение в
специальность
Слайд 8
Перевод программы из исходного текста в объектный код
(компиляция \ интерпретация)
Лексический анализ – выделение отдельных символьных строк
из текста исходной программы
Синтаксический анализ (parsing) – идентификация грамматической структуры программы и распознавание роли лексем
Генерация кода – создание команд машинного языка (с возможной оптимизацией)
Б.Мишнев. Введение в специальность
Слайд 9
Связывание объектного кода с другими модулями выполняет редактор
связей (linker)
Считывание программы в указанную ОС область памяти ее
настройку выполняет загрузчик (loader)
Б.Мишнев. Введение в специальность
Слайд 10
Цикл подготовки программы
Б.Мишнев. Введение в специальность
Исходный текст
Объектный код
Загрузочный
модуль
Выполняемая программа
Редактор текста
Транслятор
Редактор связей
Загрузчик
Слайд 11
Редактор текста
Транслятор
Редактор связей
Загрузчик
Отладчик
Пользовательский интерфейс
Б.Мишнев. Введение в специальность
Слайд 12
Б.Мишнев. Введение в специальность
Выполняемая
программа
Выполняемая
программа
Виртуальная машина
Операционная система
Аппаратура
(Hardware)
Слайд 13
Викторина 1
Нарисуйте в конспекте таблицу
В качестве ответов используйте:
I – да, - нет, О – не известно
Б.Мишнев.
Введение в специальность
Слайд 14
Вопрос 1.1
Правильно ли то, что языками «ассемблерами» назвают
мнемонические системы записи машинных команд?
Б.Мишнев. Введение в специальность
Слайд 15
Вопрос 1.2
Правильно ли то, что программы на языках
«ассемблерах» являются машинно-независимыми?
Б.Мишнев. Введение в специальность
Слайд 16
Вопрос 1.3
Верно ли, что программы, написанные на языках
3-го поколения, легко переносить с машины на машину?
Б.Мишнев. Введение
в специальность
Слайд 17
Вопрос 1.4
Верно ли, что в результате трансляции сразу
получается полностью готовый к исполнению код?
Б.Мишнев. Введение в специальность
Слайд 18
Вопрос 1.5
Верно ли, что идентификация грамматической структуры программы
называется синтаксическим анализом?
Б.Мишнев. Введение в специальность
Слайд 19
Викторина 1 (ответы)
Сравните свои ответы и отметьте правильные
в графе проверка «галочкой»
Количество правильных ответов запишите!
Б.Мишнев. Введение в
специальность
Слайд 20
Процедурная
Императивная (Fortran, COBOL, ALGOL, Basic, C, Pascal)
Функциональная
(LISP, ML, Scheme)
Декларативная
Логическая (GPSS, Prolog)
Объектно-ориентированная (Simula, Smalltalk, Visual
Basic, C++, Ada 95, Java)
Б.Мишнев. Введение в специальность
Слайд 21
Позволяет пользователю шаг за шагом определять алгоритм решения
проблемы
Позволяет писать программы с определенным началом и концом
Часто используется
для решения вычислительных задач
Б.Мишнев. Введение в специальность
Слайд 22
Используется для написания программ без явного начала и
конца
Часто используется как front-end для создания пользовательского интерфейса
Очень близко
к императивной парадигме
Visual Basic, C++, Java
Б.Мишнев. Введение в специальность
Слайд 23
Данные и операции объединены в объектах
Программа представляет собой
набор взаимодействующих объектов
По синтаксису близка к процедурной парадигме
Smalltalk, C++,
Java
Б.Мишнев. Введение в специальность
Слайд 24
Позволяет пользователю описывать решаемую проблему в терминах фактов
и правил
Часто используется для решения логических проблем
Использует технологию рекурсии
и самомодифицирующегося кода
Lisp, Prolog
Б.Мишнев. Введение в специальность
Слайд 25
Часто поставляются как часть прикладной программы
Используются для автоматизации
обработки данных при использовании пакетов прикладных программ
По синтаксису схожи
с процедурными языками
Word Basic, Java Script
Б.Мишнев. Введение в специальность
Слайд 26
Описывают как текст или графика располагаются на странице
Обычно
имеют ограниченное количество управляющих структур
Являются процедурными в том смысле,
что имеют начало и конец
Postscript, HTML, XML, VRML
Б.Мишнев. Введение в специальность
Слайд 27
Описывают программы, которые могут выполняться параллельно (Concurrent Pascal,
Ada)
на одном процессоре (multiprogramming)
в одной памяти с несколькими процессорами
(multiprocessing)
Б.Мишнев. Введение в специальность
Слайд 28
Языки очень высокого уровня (FourGen® CASE Tools by Gillani,
Inc, Advantage™ CA-Easytrieve® PLUS Report Generator by Сomputer Associates International,
Inc., Informix 4GL by Informix)
Позволяют использовать естественные языки (например, английский)
Алгоритм и структура данным может быть выбрана компилятором (application generation)
Б.Мишнев. Введение в специальность
Слайд 29
Другие языки
Языки запросов (интерфейс к базам данных) –
SQL
Языки потоков данных - Val, Id, SISAL, Lucid
Метаязыки (языки
для формального описания других языков программирования) – нотация Бэкуса – Наура (BNF - Backus-Naur Form )
Б.Мишнев. Введение в специальность
Слайд 30
For example, we could describe a block of
statements in Pascal as:
block ::= ``BEGIN''
``END''.
opt-stats ::= | ε .
stats-list ::= | ``;'' .
Б.Мишнев. Введение в специальность
Слайд 31
Purely visual languages (ARK, VIPR, Prograph)
Hybrid text and
visual systems (Delphi, Visual C++, Visual Basic)
Б.Мишнев. Введение в
специальность
Слайд 32
(Open Graphics Library) is a standard specification defining
a cross-language cross-platform API for writing applications that produce
3D computer graphics (and 2D computer graphics as well). The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives.
OpenGL was developed by Silicon Graphics and is popular in the video games industry where it competes with Direct3D on Microsoft Windows platforms
Б.Мишнев. Введение в специальность
Слайд 33
Викторина 2
Нарисуйте в конспекте таблицу
В качестве ответов используйте:
I – да, - нет, О – не известно
Б.Мишнев.
Введение в специальность
Слайд 34
Вопрос 2.1
Правильно ли то, что императивная парадигма определяет
процесс программирования как запись последовательности команд, которая выполнит обработку
данных, необходимую для получения результата?
Б.Мишнев. Введение в специальность
Слайд 35
Вопрос 2.2
Правильно ли то, что при использовании декларативной
парадигмы роль программиста заключается в точной формулировке задачи, а
не в поисках и реализации алгоритма ее решения?
Б.Мишнев. Введение в специальность
Слайд 36
Вопрос 2.3
Верно ли, что в соответствии с функциональной
парадигмой процесс программирования заключается в конструировании требуемых функций в
виде вложенных друг в друга совокупностей более простых функций?
Б.Мишнев. Введение в специальность
Слайд 37
Вопрос 2.4
Верно ли, что конструкция языка LISP
(Divide (Sum Numbers) (Count Numbers))
может быть отнесена
к процедурной парадигме программирования?
Б.Мишнев. Введение в специальность
Слайд 38
Вопрос 2.5
Верно ли, что объектно-оринтированная программа преставляет из
себя исключительно совокупность взаимодействующих между собой объектов?
Б.Мишнев. Введение в
специальность
Слайд 39
Викторина 2 (ответы)
Сравните свои ответы и отметьте правильные
в графе проверка «галочкой»
Количество правильных ответов запишите!
Б.Мишнев. Введение в
специальность
Слайд 40
Первый реализованный высокоуровневый язык программирования, созданный ещё в
1954 году группой программистов под руководством Джона Бэкуса в
фирме IBM.
FORmula TRANslator
Современный Фортран - Fortran 95 и Fortran 2003
Б.Мишнев. Введение в специальность
Слайд 41
Б.Мишнев. Введение в специальность
Слайд 42
ALGOrithmic Language. Designed as a portable language
for scientific computations.
ALGOL 60 was small and elegant.
It was block-structured, nested, recursive, and free form.
It was also the first language to be described in BNF.
Б.Мишнев. Введение в специальность
Слайд 43
Beginner's All-purpose Symbolic Instruction Code — универсальный код
символических инструкций для начинающих - семейство высокоуровневых языков программирования.
Разработан
в 1963 в Dartmouth College
Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего, как язык для домашних микрокомпьютеров.
Б.Мишнев. Введение в специальность
Слайд 44
Это язык программирования общего назначения.
Создан Никлаусом Виртом в
1970 как язык для обучения процедурному программированию.
Особенностями языка
являются строгая типизация и наличие средств структурного (процедурного) программирования.
Turbo Pascal (затем Borland Pascal), GNU Pascal, Object Pascal
Б.Мишнев. Введение в специальность
Слайд 45
Семантика: процедурный
Тип исполнения: компилируемый
Появился в: 1969—1973
г. в Bell Labs
Автор(ы): Кен Томпсон, Денис Ритчи
Типизация
данных: статическая
Си был создан для использования в операционной системе UNIX.
Б.Мишнев. Введение в специальность
Слайд 46
Named for Ada Lovelace (1811-1852), arguably the world's
first computer programmer.
Jean Ichbiah's team at CII Honeywell,
for the U.S. Department of Defense, 1979.
Ada is a large, complex block-structured language aimed primarily at embedded computer applications
Б.Мишнев. Введение в специальность
Слайд 47
Объектно-ориентированный язык программирования с динамической типизацией
Software Concepts Group,
Xerox PARC, led by Alan Kay, early 70's.
Took
the concepts of class and message from Simula-67. Innovations included the bitmap display, windowing system and use of mouse.
Early versions: Smalltalk-72, 74, 76, 78 and Smalltalk-80. Smalltalk/V - First widely available version of Smalltalk for PC, Smalltalk MT (for Windows)
Б.Мишнев. Введение в специальность
Слайд 48
Stroustrup . An object-oriented superset of C.
In
C++ a class is a user-defined type, syntactically a
struct with member functions. Constructors and destructors are member functions called to create or destroy instances.
It has streams for I/O.
"The C++ Programming Language", Bjarne Stroustrup, A-W 1986 (1st edition), 1991 (2nd edition).
Б.Мишнев. Введение в специальность
Слайд 49
Abbreviated Test Language for Avionics Systems. MIL-spec language
for automatic testing of avionics equipment.
Replaced Gaelic
and several other test languages.
"IEEE Standard ATLAS Test Language", IEEE Std 416-1976 and 416-1984
Б.Мишнев. Введение в специальность
Слайд 50
Викторина 3
Нарисуйте в конспекте таблицу
В качестве ответов используйте:
I – да, - нет, О – не известно
Б.Мишнев.
Введение в специальность
Слайд 51
Вопрос 3.1
Правильно ли то, язык программирования Algol 60
был первым языком в мире, описанным с помощью нотации
Бэкуса-Наура (BNF)?
Б.Мишнев. Введение в специальность
Слайд 52
Вопрос 3.2
Правильно ли то, что язык Ada позволяет
программировать параллельные процессы в реальном времени?
Б.Мишнев. Введение в специальность
Слайд 53
Вопрос 3.3
Верно ли, что язык Smalltalk был первым
объектно-ориентированным языком программирования, имевшим промышленное использование?
Б.Мишнев. Введение в специальность
Слайд 54
Вопрос 3.4
Верно ли, что язык Visual Basic является
100% языком визуального программирования?
Б.Мишнев. Введение в специальность
Слайд 55
Вопрос 3.5
Верно ли, что язык PHP является одним
из языков-скриптов?
Б.Мишнев. Введение в специальность
Слайд 56
Викторина 3 (ответы)
Сравните свои ответы и отметьте правильные
в графе проверка «галочкой»
Количество правильных ответов запишите!
Б.Мишнев. Введение в
специальность
Слайд 57
Появился: начало 1990-ых г.
Автор(ы): Sun Microsystems
Типизация
данных: строгая
Создан под влиянием: Objective-C, C++, Smalltalk
Оказал влияние
на: C#, J#, VJ#
Б.Мишнев. Введение в специальность
Слайд 58
Язык программирования, сочетающий объектно-ориентированные и контекстно-ориентированные концепции.
Язык имеет
строгую статическую типизацию
Разработан в 1998–2001 гг. в Microsoft
Основной
язык разработки приложений для платформы Microsoft .NET.
Б.Мишнев. Введение в специальность
Слайд 59
Викторина 4
Нарисуйте в конспекте таблицу
В качестве ответов используйте:
I – да, - нет, О – не известно
Б.Мишнев.
Введение в специальность
Слайд 60
Вопрос 4.1
Правильно ли то, что программы на Java
могут быть транслированы в байт-код, выполняемый на виртуальной Java-машине?
Б.Мишнев.
Введение в специальность
Слайд 61
Вопрос 4.2
Правильно ли то, что Java приложения можно
выполнять на любом устройстве, которое поддерживает виртуальную Java-машину?
Б.Мишнев. Введение
в специальность
Слайд 62
Вопрос 4.3
Верно ли, что JIT технология (Just-In-Time compilers)
позволяет переводить байт-код в машинный код во время исполнения
программы ?
Б.Мишнев. Введение в специальность
Слайд 63
Вопрос 4.4
Верно ли, что C# поддерживает множественное наследование
классов?
Б.Мишнев. Введение в специальность
Слайд 64
Вопрос 4.5
Верно ли, что Common Language Runtime (CLR)
— это исполнительная система, созданная компанией Майкрософт для платформы
«.NET Framework»?
Б.Мишнев. Введение в специальность
Слайд 65
Викторина 4 (ответы)
Сравните свои ответы и отметьте правильные
в графе проверка «галочкой»
Количество правильных ответов запишите!
Б.Мишнев. Введение в
специальность
Слайд 66
Дж. Гленн Брукшир. Введение в компьютерные науки, 2001,
с. 277 – 339.
Орлов С. А. Принципы языков программирования:
Опорный конспект лекций. 4-е изд., дополнен. – Рига: TSI, 2006. – 108 с.
Себеста Р. У. Основные концепции языков программирования. — М. Издательский дом «Вильямс», 2001. — 672 с.
Пратт Т., Зелковиц М. Языки программирования: разработка и реализация. — СПб.: Питер, 2002. — 688 с.
Б.Мишнев. Введение в специальность