Слайд 2
Основные понятия
Computer
Software
Hardware
Memory
Processor
Device
Program, computer program
Application software
System software
Data
Information
Knowledge
Code, source code
Programming
language
Translator
Programming
Algorithm
Class
Encapsulation
Inheritance
Polymorphism
Слайд 3
Компьютер. Информация. Программа.
Слайд 4
Компьютер
Компьютер - устройство общего назначения, которое может быть
запрограммировано, чтобы выполнить конечную, строго определенную последовательность арифметических или
логических операций.
Электронная вычислительная машина, ЭВМ -комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач.
Слайд 6
Взаимодействие пользователя с ЭВМ
Слайд 7
Прикладное ПО
ПО общего назначения
Текстовые редакторы
Графические редакторы
Табличные редакторы
…
ПО специального
назначения
Экспертные системы
Мультимедиа приложения
Гипертекстовые системы (энциклопедии, справочные системы)
…
Профессиональное ПО
САПР
АСУ ТП
ГИС
Биллинговые
системы
CRM
ERP
BI
…
Слайд 10
Программное обеспечение
Все или часть программ, процедур, правил и
соответствующей документации системы обработки информации
(ISO/IEC 2382-1: 1993. Information
technology).
Компьютерные программы, процедуры и, возможно, соответствующая документация и данные, относящиеся к функционированию компьютерной системы
(FCD ISO/IEC 24765. Systems and Software Engineering )
Совокупность программ системы обработки информации и программных документов, необходимых для эксплуатации этих программ (ГОСТ 19781-90[8]).
Слайд 11
Программа
Программа - данные, предназначенные для управления конкретными компонентами системы обработки
информации в целях реализации определенного алгоритма.
(ГОСТ 19781.90. ЕСПД. Термины и определения)
Слайд 12
Программа
Программа - представленная в объективной форме совокупность данных и
команд, предназначенных для функционирования ЭВМ и других компьютерных устройств
с целью получения определенного результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения.
(ст. 1261 «Программы для ЭВМ» ГК РФ)
Слайд 13
Профессиональные стандарты
ANSI
IEEE
ISO
ЕСПД
Американский национальный институт стандартов ANSI (American National
Standards Institute)
Институт инженеров по электротехнике и электронике IEEE (Institute
of Electrical and Electronic Engineers)
Организация международных стандартов ISO (International Organization for Standardization)
Единая система программной документации (ЕСПД)
Слайд 14
Подходы к определению информации
Антропоцентрический
Техноцентрический
Закон РФ №24-ФЗ
Статистическая теория информации
Кибернетическая
теория
Логико-семантическая теория
Слайд 15
Общее в определении информации
Информация всегда связывается с процессом;
Информация
проясняет ситуацию, т.е. в определенной степени снимает неопределенность (энтропию).
Слайд 16
Аспекты рассмотрения информации
Синтаксический
Семантический
Прагматический
Синтаксический - связан
со способом представления информации.
Семантический - передает смысловое содержание
информации.
Прагматический - отражает потребительские свойства информации.
Слайд 17
Проблемы
Определение совокупности возможных альтернатив развития событий, процессов или
явлений.
Количественная оценка вероятности этих альтернатив и их значимости
для субъекта.
Введение меры семантической информации (знания, имеющего определенную меру ценности для кого-либо).
Слайд 18
Информация
Это совокупность данных о каком-либо объекте, событии, процессе
или явлении, передаваемые прямо или косвенно от источника к
потребителю, в результате чего снимается или уменьшается неопределенность сложившейся ситуации.
Слайд 19
Данные и знания
Данные
Знания
Данные – это представление фактов и
идей в формализованном виде, пригодном для передачи и обработки
в некотором информационном процессе.
Знания – это закономерности предметной области (принципы, связи, законы), полученные в результате практической деятельности и профессионального опыта, позволяющие специалистам ставить и решать задачи в этой области.
Слайд 21
Язык программирования
Язык программирования - формальная знаковая система, предназначенная для
записи компьютерных программ.
Язык программирования определяет набор лексических, синтаксических и семанти-ческих правил, задающих внешний вид
программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.
Существует более двух с половиной тысяч ЯП.
Слайд 22
История языков программирования
Планкалкюль (нем. Plankalkül), - первый в мире высокоуровневый язык программирования,
созданный немецким инженером Конрадом Цузе в 1945 году для программирования компьютера Z4.
Планкалкюль поддерживал операции назначения,
вызов подпрограмм, условные операторы, итерационные циклы, арифметику с плавающей запятой, массивы, иерархические структуры данных, утверждения, обработку исключений и др.
Слайд 23
Области применения ЯП
научные вычисления (языки C++, FORTRAN, Java);
системное
программирование (языки C++, Java);
обработка информации (языки C++, COBOL, Java);
искусственный
интеллект (LISP, Prolog);
издательская деятельность (Postscript, TeX);
удаленная обработка информации (Perl, PHP, Java, C++);
описание документов (HTML, XML);
…
Слайд 24
Факторы развития ЯП
Предметная ориентация языка ;
Наличие среды программирования,
поддерживающей разработку приложений на конкретном языке программирования;
Удобство сопровождения и
тестирования программ;
Четкость и логичность синтаксических конструкций языка;
Стоимость разработки с применением конкретного языка программирования
Слайд 25
Языки программирования
Машинный код
ЯП низкого уровня
ЯП высокого уровня
ЯП сверхвысокого
уровня
Машинный код, машинный язык — система команд (инструкций) конкретной
вычислительной машины, которая интерпретируется непосредственно процессором или микропрограммами этой ЭВМ.
Каждая инструкция выполняет определённое элементарное действие (# сложение или копирование; в регистре или в памяти) или переход к другому участку кода (изменение порядка исполнения; при этом переход может быть безусловным или условным, зависящим от результатов предыдущих инструкций).
Слайд 26
Языки программирования
Машинный код
ЯП низкого уровня
ЯП высокого уровня
ЯП сверхвысокого
уровня
Язык программирования низкого уровня - язык программирования, близкий к
программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора.
Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов естественного языка.
Слайд 27
Языки программирования
Машинный код
ЯП низкого уровня
ЯП высокого уровня
ЯП сверхвысокого
уровня
Язык ассемблера - язык программирования низкого уровня, мнемонические команды
которого (за редким исключением) соответствуют инструкциям процессора вычислительной системы.
Трансляция программы в исполняемый машинный код производится программой-транслятором. Позволяет использовать символические метки вместо адресов ячеек памяти, а также директивы (команды, не переводящиеся в процессорные инструкции, а выполняемые самим ассемблером).
Слайд 28
Языки программирования
Машинный код
ЯП низкого уровня
ЯП высокого уровня
ЯП сверхвысокого
уровня
ЯП высокого уровня - язык программирования, разработанный для быстроты
и удобства использования программистом. Основная черта высокоуровневых языков - это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на ЯП низкого уровня очень длинны и сложны для понимания.
Слайд 29
ЯП высокого уровня
В1954 году был создан первый язык
высокого уровня - Фортран (англ. FORTRAN - FORmula TRANslator).
Языки
высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы.
Слайд 30
Языки программирования
Машинный код
ЯП низкого уровня
ЯП высокого уровня
ЯП сверхвысокого
уровня
Язык программирования сверхвысокого уровня, (VHLL -very high-level programming language)
- язык программирования с очень высоким уровнем абстракции. В отличие от языков программирования высокого уровня, где описывается принцип «как нужно сделать», в сверхвысокоуровневых языках программирования описывается лишь принцип «что нужно сделать».
# Python, Ruby и Haskell, Perl
Слайд 32
Парадигмы программирования
Структурное
Объектно-ориентированное
Логическое
Функциональное
Агентно-ориентированное
Парадигма программирования - это способ концептуализации, определяющий
организацию вычислений и структурирование работы, выполняемой компьютером.
Это система идей
и понятий, определяющих стиль написания компьютерных программ, а также образ мышления
Слайд 33
Структурное программирование
Структурное программирование предполагает точно обозначенные управляющие структуры,
программные блоки, отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы,
поддержку рекурсии и локальных переменных.
Суть такого подхода заключается в возможности разбиения программы на составляющие элементы.
# Алгол(1958), Паскаль(1970), Си(1972).
Слайд 34
Парадигмы программирования
Структурное
Объектно-ориентированное
Логическое
Функциональное
Агентно-ориентированное
В рамках структурного программирования появляются процедуры и
функции. Функции позволяют создавать модульные программы.
Затем начинают использование структур
(составных типов данных, построенных с использованием других типов), благодаря которым перешли к классам.
Класс – это структура, которая имеет свои переменные и функции, которые работают с этими переменными.
Слайд 35
Парадигмы программирования
Структурное
Объектно-ориентированное
Логическое
Функциональное
Агентно-ориентированное
Инкапсуляция – это свойство системы, позволяющее объединить
данные и методы, работающие с ними, в классе и
скрыть детали реализации от пользователя.
Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.
Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Симула (1967), Smalltalk (70-е), С++, Java, C#
Слайд 36
Парадигмы программирования
Структурное
Объектно-ориентированное
Логическое
Функциональное
Агентно-ориентированное
Параллельно со структурным, на математической основе создавались
функциональные языки - на базе λ-исчислений, и логические языки
– на базе логики предикатов.
Lisp - англ. LISt Processing, 1958.
Prolog - англ. PROgramming in LOGic, 1972
Слайд 37
Парадигмы программирования
Структурное
Объектно-ориентированное
Логическое
Функциональное
Агентно-ориентированное
Агентно-ориентированный подход к программированию - парадигма программирования,
в которой основными концепциями являются понятия агента и его
поведения, которое зависит от среды, в которой он находится.
Взаимодействие между агентами осуществляется не через сообщения, как в ООП, а посредством изменения среды, в которой они находятся.
# распределенная объектная среда JADE (основана на Java RMI)
Слайд 38
Парадигмы программирования
Структурное
Объектно-ориентированное
Логическое
Функциональное
Агентно-ориентированное
Агент - программная сущность для выполнения поставленных
задач. Обладает поведением, а именно: взаимодействует с внешней сложной
и динамично-развивающейся средой, могущей модифицироваться или быть модифицированной другими агентами в зависимости от конкретных условий. Взаимодействие подразумевает: 1. восприятие динамики среды; 2. действия, изменяющие среду; 3. рассуждения в целях интерпретации наблюдаемых явлений, решения задач, вывода заключений и определения действий.
Слайд 40
Примеры программ
Программа «Hello, world!» для процессора архитектуры x86
(в шестнадцатеричном представлении побайтно):
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
Слайд 41
Примеры программ
; Hello World for 6502 Assembler (C64)
ldy
#0
beq in
loop:
jsr $ffd2
iny
in:
lda hello,y
bne loop
rts
hello: .tx "Hello World!"
.by 13,10,0
Слайд 42
Примеры программ
(* Pascal:*)
program First (Output);
begin
writeln ('Здравствуй, Мир!')
end.
(*PASCAL*)
PROGRAM FIRST
(OUTPUT);
BEGIN
WRITELN('Здравствуй, Мир!')
END.
Слайд 43
Примеры программ
Алгол 68:
begin
println(`Здравствуй, Мир!')
end
comment Русский Алгол 68
comment
начало
печатать(`Здравствуй, Мир!')
конец
comment Еще два представления comment
(println(`Здравствуй, Мир!'))
(печатать(`Здравствуй,
Мир!'))
Слайд 44
Примеры программ
/*Язык C.*/
#include
int main(void)
{printf("Здравствуй, Мир!");
return 0;}
Слайд 45
Примеры программ
* Hello World in COBOL
*****************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT
DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
MAIN SECTION.
DISPLAY "Hello World!"
STOP RUN.
****************************
Слайд 46
Примеры программ
// Java:
public class HelloWorld {
public static
void main(
String[] args) {
System.out.println(
"Здравствуй, Мир!");
}}
Слайд 47
Примеры программ
Лисп (режим исполнения файла программы):
( Print "Здравствуй,
Мир!" )
Лисп (диалоговый режим):
[1]> (progn (setq x "Здравствуй, Мир!"
) x)
Слайд 48
Примеры программ
Рефал
$ENTRY GO{=;}
Prolog
:-Print('Здравствуй, Мир!').
Слайд 49
Основные понятия
Computer
Software
Hardware
Memory
Processor
Device
Program, computer program
Application software
System software
Data
Information
Knowledge
Code, source code
Programming
language
Translator
Programming
Algorithm
Class
Encapsulation
Inheritance
Polymorphism