Similar presentations:
Лекция №1
1.
Лекция №1Основные парадигмы программирования
2.
План1. История развития языков программирования.
2. Классификация языков программирования.
3. Трансляторы.
4. Этапы решения задач на компьютере.
5. Жизненный цикл программного обеспечения.
16.01.2026
ЛЕКЦИЯ №1
2
3.
1. История развития языков программированияЯзык программирования определяет набор лексических,
синтаксических и семантических правил, задающих внешний вид
программы и действия, которые выполнит исполнитель
(компьютер) под ее управлением.
Семантика –
конструкции.
определяет смысловое значение языковой
Лексика – словарный состав языка.
Синтаксис – совокупность правил при написании программ.
16.01.2026
ЛЕКЦИЯ №1
3
4.
Прототипом современных компьютеровразностную машину Бэббиджа.
можно
назвать
В 1822 году Чарльз Бэббиджа начал разработку разностной
машины для расчётов математических таблиц.
Разностная машина не была полностью реализована.
Бэббидж в ходе работы пришел к выводу о создании
универсальной вычислительной машины.
В единую логическую схему Бэббидж увязал арифметическое
устройство, регистры памяти, объединённые в единое целое, и
устройство ввода-вывода.
16.01.2026
ЛЕКЦИЯ №1
4
5.
Ада Лавлейс составила первую в мирепрограмму (для машины Бэббиджа).
Ввела в употребление термины «цикл»,
считается первым программистом в истории.
В
ее
честь
был
назван
язык
программирования Ада, созданный в 1979—
1980 годах Министерством обороны США для
систем управления автоматизированными
комплексами.
16.01.2026
ЛЕКЦИЯ №1
Августа Ада
Кинг Лавлейс
(1815-1852)
5
6.
В 1938 году появилась первая вычислительнаямашина Цузе, названная им Z1.
Это был двоичный механический вычислитель
с электрическим приводом.
В 1940 году была построена вторая машина Z2.
В 1941 году Цузе создал уже более
совершенную модель — Z3, которую можно
считать первым реально действовавшим
программируемым компьютером.
Конрад Цузе
(1910-1995)
16.01.2026
ЛЕКЦИЯ №1
6
7.
В 1944 разработана вычислительная машина Z4. Для данноймашины был разработан первый язык высокого уровня Планкалкюль.
В 1944 г разработана под руководством Г. Эйкена
вычислительная машина «Марк I» - одна из первых в США
вычислительных машин с возможностью программирования.
В 1948 в СССР запатентована цифровая электронная
вычислительная машина ( И. С. Бруком и Б. И. Рамеевым).
16.01.2026
ЛЕКЦИЯ №1
7
8.
Машинный код или машинный язык представляет собой наборинструкций, выполняемых непосредственно центральным
процессором компьютера.
Компьютерная программа — это комбинация компьютерных
инструкций и данных, позволяющая аппаратному обеспечению
вычислительной системы выполнять вычисления или функции
управления.
Язык ассемблера — тип языка программирования низкого
уровня, представляющий собой формат записи машинных
команд, удобный для восприятия человеком.
16.01.2026
ЛЕКЦИЯ №1
8
9.
Первыеязыки
ассемблера
стали
появляться в 19471949 годах.
Пример кода, написанного с помощью
языка ассемблера.
16.01.2026
ЛЕКЦИЯ №1
9
10.
Две программы эквивалентны:Машинный код
BB 11 01 B9 0D 00
B4 0E 8A 07 43 CD 10
E2 F9 CD 20 48 65 6C
6C 6F 2C 20 57 6F 72
6C 64 21
16.01.2026
Паскаль
begin
write(‘Hello, World’);
end.
ЛЕКЦИЯ №1
10
11.
Одними из первых (50-е годы XX века) языковпрограммирования высокого уровня были Fortran, Cоbоl и
Algol.
Fortran был создан в период с 1954 по 1957 год группой
программистов под руководством Джона Бэкуса в
корпорации IBM.
Название
Fortran
является
сокращением
от FORmula TRANslator (переводчик формул). Fortran широко
используется в первую очередь для научных и инженерных
вычислений.
16.01.2026
ЛЕКЦИЯ №1
11
12.
Algol (от algorithmic language — «алгоритмический язык»).Разработан комитетом по языку высокого уровня IFIP в 19581960 годах.
Кардинально переработан в 1964-1968 годах (Алгол 68).
Был популярен в Европе, в том числе в СССР, в качестве языка
как практического программирования, так и академического
языка.
16.01.2026
ЛЕКЦИЯ №1
12
13.
Cobol (common business-oriented language) применялся длярешения экономических задач, здесь внимание уделялось
обработке текста, формированию выходных документов.
В 1965 г. все преимущества этих языков были объединены в
языка PL/1 (Programming language 1), но язык оказался
слишком громоздким и сложным.
16.01.2026
ЛЕКЦИЯ №1
13
14.
Парадигма программирования — это совокупность идей ипонятий, определяющих стиль написания компьютерных
программ.
o Императивное программирование
o Процедурное
o Структурное
o Функциональное
o Логическое
o Объектно-ориентированное
и т.д.
16.01.2026
ЛЕКЦИЯ №1
14
15.
Императивное программирование — этопрограммирования, для которой характерно:
парадигма
o в исходном коде программы записываются инструкции;
o инструкции должны выполняться последовательно;
o данные, получаемые при выполнении предыдущих
инструкций, могут читаться из памяти последующими
инструкциями;
o данные, полученные при выполнении инструкции, могут
записываться в память.
16.01.2026
ЛЕКЦИЯ №1
15
16.
Структурноепрограммирование
—
парадигма
программирования, в основе которой лежит представление
программы в виде иерархической структуры блоков.
В 1966 году была сформулирована и доказана итальянскими
математиками Коррадо Бёмом и Джузеппе Якопини теорема:
Теорема Бёма — Якопини — Любой исполняемый алгоритм
может быть преобразован к структурированному виду, т. е.
такому виду, когда ход его выполнения определяется только
при помощи трёх структур управления: последовательной,
ветвлений и повторов или циклов.
16.01.2026
ЛЕКЦИЯ №1
16
17.
В соответствии со структурным программированием любаяпрограмма может состоять из управляющих конструкций
(последовательной, ветвлений циклов), а также подпрограмм.
Программа, написанная на структурном языке должна быть
понятной.
Этому противоречит оператор goto, который входит во многие
современные языки программирования.
В 1968 году вышла статья Дейкстры «О вреде оператора Go
To».
16.01.2026
ЛЕКЦИЯ №1
17
18.
Процедурноепрограммирование
—
программирование
на
императивном языке, при котором последовательно выполняемые
операторы можно собрать в подпрограммы, то есть более крупные
целостные единицы кода, с помощью механизмов самого языка.
Подпрограммы – процедуры, функции.
В ходе выполнения программы любая подпрограмма может быть
вызвана из любой точки.
Ада, Паскаль, Delphi, Фортран и др.
16.01.2026
ЛЕКЦИЯ №1
18
19.
В 1964 г. вышел язык BASIC (Beginner’s All-purpose SymbolicInstruction Code — универсальный код символических
инструкций для начинающих).
Основная задача – привлечь новичков к программированию,
сделать процесс программирования максимально простым.
Имеет массу диалектов и потомков: QBasic, Visual Basic,
VisualBasic .NET.
Был постоянным объектом критики за нарушение принципов
структурного программирования и примитивизм. Однако,
последние версия языка во многом избавились от этих
недостатков.
16.01.2026
ЛЕКЦИЯ №1
19
20.
В 1970 г. Н. Виртом был создан язык Паскаль, одиниз наиболее известных и популярных языков
программирования в мире.
Язык
создавался
как
средство
обучения
структурному
программированию,
а
также
инструмент для решения задач на компьютере Н. Вирт
(1934-2024)
непрофильных специалистов.
Паскаль отличают строгая типизация и структурный подход к
программированию.
В дальнейшем в язык были добавлены объектноориентированные возможности и появились языки ObjectPascal
и Delphi.
16.01.2026
ЛЕКЦИЯ №1
20
21.
В 1969 — 1973 был разработан язык С. Является одним изнаиболее эффективных языков программирования, используется
как для системного, так и для прикладного программирования.
Язык программирования С был разработан в Bell Labs К.
Томпсоном и Д. Ритчи как развитие языка B.
Основание разработки – создание
эффективного
инструмента для
написания ОС Unix.
К. Томпсон
16.01.2026
ЛЕКЦИЯ №1
Д. Ритчи
21
22.
В1983
году
появился
программирования C++
язык
Автор языка С++ Б. Страуструп
С++ использует принципы объектноБ. Страуструп
ориентированного программирования и
является
самостоятельным
по
отношению к классическому С языком.
С-подобный синтаксис имеют также такие
программирования, как Java, JavaScript, PHP, C#.
16.01.2026
ЛЕКЦИЯ №1
языки
22
23.
C++ хорошо использовать в тех случаях, когда требуется высокаяпроизводительность и точный контроль над памятью и другими
ресурсами.
Язык C++ применяется, например, для:
разработки операционных систем,
разработки игр,
системы реального времени (например, для транспорта, производства
и т.д.)
высокопроизводительные финансовые приложения
графические приложения и симуляторы
искусственный интеллект и нейронные сети.
16.01.2026
ЛЕКЦИЯ №1
23
24.
Объектно-ориентированное программированиеОсновная идея - программная система должна стать моделью
реального мира и соответствовать естественной логике
человеческого мышления.
ООП – технология программирования, основанная на
использовании программных объектов, описывающих свойства
и поведение реальных объектов предметной области
решаемой задачи.
16.01.2026
ЛЕКЦИЯ №1
24
25.
Машинно - ориентированные языки - это языки, наборыоператоров и изобразительные средства которых существенно
зависят от особенностей ЭВМ (внутреннего языка, структуры
памяти и т.д.).
Высокоуровневые языки программирования - текстовые
языки, приближенные по словарю и синтаксису к
человеческому языку, позволяющие записывать программные
конструкции в форме, удобной для человеческого мышления и
подобные обычному тексту — конспекту, стенограмме.
16.01.2026
ЛЕКЦИЯ №1
25
26.
машинныйязык
C
assembler
C#, Java
Basic
Fortran
Pascal
Ruby, Python,
Perl
Чем выше уровень языка, тем дальше он от языка машинных
кодов, тем ближе к естественному языку.
Однако, показатели эффективности возможностей работы с
аппаратурой, громоздкость результирующего кода при
движении вправо снижаются.
16.01.2026
ЛЕКЦИЯ №1
26
27.
Декларативные языки программирования парадигмапрограммирования, в которой задаётся спецификация решения
задачи, то есть описывается ожидаемый результат, а не способ
его получения.
К подвидам относят функциональные и логические языки
программирования.
Примером декларативного языка является SQL.
16.01.2026
ЛЕКЦИЯ №1
27
28.
Функциональное программированиеПрограмма строится как математическое выражение, связывающее
входные данные с результатом.
Данные не сохраняются в переменных, а передаются как аргументы
следующей функции.
Отсутствуют операторы: ветвление – условная функция, повторение –
рекурсия.
К функциональным языкам относят: LISP, Scala, Рефал, Haskell,
Пифагор.
Фрагмент кода на Haskell
fac :: Integer -> Integer
fac 0 = 1
fac n | n > 0 = n * fac (n - 1)
16.01.2026
ЛЕКЦИЯ №1
28
29.
Языки логического программирования построены напринципах логического вывода информации на основе
заданных фактов и правил вывода и используют в качестве
теоретической основы математическую логику.
Логические языки ориентированы на разработку экспертных
систем, систем принятия решений.
К логическим языкам относят: PROLOG, Mercury, Oz.
16.01.2026
ЛЕКЦИЯ №1
29
30. Фрагмент кода на языке Mercury
module hello.:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
main(!IO)
:io.write_string("Hello, World!\n", !IO)
16.01.2026
ЛЕКЦИЯ №1
30
31.
Скриптовый язык – язык кратких описаний действий,выполняемых системой. Разница между программами и
сценариями довольно размыта. JavaScript, Perl, VBScript, Python,
R).
16.01.2026
ЛЕКЦИЯ №1
31
32.
С середины 90-х годов XX века стали появляться языки (системыпрограммирования), ориентированные на автоматизацию процесса
разработки программы.
Подобные системы предлагают графический интерфейс для
компоновки пользовательского и программного интерфейса
программы как готовых программных компонент.
Подобный подход позволяет «программировать мышью» и зачастую не
иметь фундаментальных знаний языка программирования для
разработки типовых программных систем.
Примеры подобных систем программирования:
Delphi, C++ Builder, MS Visual Studio (C# проекты)
16.01.2026
ЛЕКЦИЯ №1
32
33.
16.01.2026ЛЕКЦИЯ №1
33
34.
Рейтинг языков программирования по индексу TIOBE (август 2025)16.01.2026
ЛЕКЦИЯ №1
34
35.
Языки программирования, разработанные советскими ироссийскими учеными:
o Эль-76
o Рапира
o Рефал
o ДРАКОН (Дружелюбный русский алгоритмический язык,
который обеспечивает наглядность).
o 1С
o Язык Kotlin разрабатывается с 2010
руководством Андрея Бреслава (JetBrains )
16.01.2026
ЛЕКЦИЯ №1
года
под
35
36.
Особые виды языков программированияУчебные (Basic, Pascal, Python, Рапира)
Предметно-ориентированные (1С, R)
Эзотерические (FALSE, Malbolge)
Визуальные (FBD, ДРАКОН)
16.01.2026
ЛЕКЦИЯ №1
36
37.
3. ТрансляторыОдним из этапов обработки программы системой
программирования является ее трансляция – перевод с ЯВУ на
язык машинных кодов или промежуточный язык.
Трансляторы разделяются на компиляторы и интерпретаторы.
Компилятор преобразует программы в машинный язык,
принимаемый и исполняемый непосредственно процессором.
Компилируемые языки: С, C++, Паскаль.
16.01.2026
ЛЕКЦИЯ №1
37
38.
Достоинство компиляторов – текст программы обрабатываетсяодин раз, готовый машинный код (например, в виде exe-файла)
может быть запущен многократно.
Еще одно достоинство – скорость выполнения программ.
16.01.2026
ЛЕКЦИЯ №1
38
39.
Интерпретатор обрабатывает каждую строку исходнойпрограммы и тут же выполняет ее, реализуя таким образом,
виртуальную машину на реальной ЭВМ.
Интерпретируемые языки: Python, Ruby, SQL.
Достоинство интерпретаторов – возможность диалогового
режима работы программ, кроссплатформенность программ.
Современные языки используют смешанный вариант –
динамическую компиляцию, когда текст программы
компилируется в промежуточный байт-код, а затем
выполняется виртуальной машиной (Java, C#, Scala).
16.01.2026
ЛЕКЦИЯ №1
39
40.
4. Этапы решения задач на компьютере1. Постановка задачи
2. Анализ и исследование задачи, модели
3. Алгоритмизация вычислительного процесса
4. Программирование
5. Отладка и тестирование программы
6. Решение задачи и анализ результатов
7. Сопровождение программы
16.01.2026
ЛЕКЦИЯ №1
40
41.
1. Постановка задачиНа данном этапе формулируется цель решения задачи и
подробно описывается ее содержание.
Определяются условия решения задачи, характер и сущность
обрабатываемых величин, используемых в задаче.
На этом этапе необходимо дать ответ на вопросы:
Что необходимо сделать?
Какие исходные данные известны?
Каковы ограничения на входные данные?
В каком виде представить результат?
16.01.2026
ЛЕКЦИЯ №1
41
42.
2. Анализ и исследование задачи, моделиНа этом этапе решаются задачи:
- анализ существующих аналогов, их достоинств и недостатков.
- анализ технических и программных средств решения задачи.
- разработка математической модели решения задачи,
связывающей
исходные
данные
и
результат
на
формализованном математическом языке.
- разработка используемых при решении задачи структур
данных.
16.01.2026
ЛЕКЦИЯ №1
42
43.
3. Алгоритмизация вычислительного процессаСоставляется алгоритм решения задачи согласно выбранного
метода решения, производится декомпозиция задачи на более
простые
подзадачи,
определяется
конкретная
последовательность шагов для получения результата на основе
исходных данных.
Результатом этапа должна стать блок-схема алгоритма или
другое описание алгоритма (псевдокод).
16.01.2026
ЛЕКЦИЯ №1
43
44.
4. ПрограммированиеПеревод алгоритма решения задачи на конкретный язык
программирования.
Результат этапа – программа на машинном языке, способная
выполняться на требуемой аппаратной платформе.
16.01.2026
ЛЕКЦИЯ №1
44
45.
5. Отладка и тестированиеОтладка заключается в синтаксической проверке программы
на
соответствие
правилам
выбранного
языка
программирования, а также проверка логики работы
программы на соответствие смыслу решаемой задачи.
Тестирование предполагает решение программой задачи на
заранее подготовленных тестовых исходных данных и
сопоставления выданного решения ожидаемому.
16.01.2026
ЛЕКЦИЯ №1
45
46.
6. Решение задачи на ЭВМ и анализ результатовПрактическая
эксплуатация
программы,
многократное
решение задачи на рабочих исходных данных.
В процессе эксплуатации может уточняться постановка задачи,
что приводит к повторению шагов 2-6 для следующей версии
программы.
7. Сопровождение программы
Составление документации на
пользователей,
исправление
распространение программы.
16.01.2026
ЛЕКЦИЯ №1
программу,
найденных
обучение
ошибок,
46
47.
Жизненный цикл ПОЖизненный цикл программного обеспечения (ПО) — период времени,
который начинается с момента принятия решения о необходимости
создания программного продукта и заканчивается в момент его полного
изъятия из эксплуатации.
Определен в стандартах
ГОСТ Р 59793-2021 (
ISO/IEC 15288:2015 Systems and software engineering — System life cycle
processes
ISO/IEC/IEEE 12207:2017 System and software engineering — Software life
cycle processes
ISO/IEC/IEEE 24748-1:2024 Systems and software engineering — Life cycle
management — Part 1: Guidelines for life cycle management
16.01.2026
ЛЕКЦИЯ №1
47
48.
Существуют несколько моделей жизненного цикла ПО: каскадная,спиральная, итерационная.
Каскадная модель была предложена Уинтсоном Ройсом в 1970-м
году. Модель принято называть классической и она предполагает,
что переход на следующий этап после полного окончания работ по
предыдущему этапу.
16.01.2026
ЛЕКЦИЯ №1
48
49.
Схема каскадной модели жизненного цикла программы16.01.2026
ЛЕКЦИЯ №1
49
50.
К преимуществам каскадной модели относят:o
Четкую регламентацию выполнения этапов проекта.
o
Возможность оценки качества продукта на каждом из этапов.
В то же время у этой модели имеются существенные недостатки:
o
Модель не предусматривает обратных связей между этапами.
o
Она не соответствует реальным условиям разработки
программного продукта.
16.01.2026
ЛЕКЦИЯ №1
50