Слайд 2
Алгоритм - это описание детерминированной последовательности действий, направленных
на получение из исходных данных результата за конечное число
дискретных шагов с помощью понятных исполнителю команд.
Выполнение алгоритма может быть автоматически реализовано техническими устройствами, среди которых особое место занимает компьютер.
Слайд 3
Персональный компьютер уже давно стал неотъемлемой частью жизни
современного человека.
Это устройство помогает организовывать производственные процессы, учиться,
смотреть фильмы, общаться, играть.
Алгоритм, записанный на понятном компьютеру зыке, называется КОМПЬЮТЕРНОЙ ПРОГРАММОЙ.
Язык программирования – формальный язык, предназначенный для записи компьютерных программ.
Слайд 4
Каждый язык программирования имеет свой набор синтаксических, лексических
и семантических правил, которые задают внешний вид программы и
действия, которые выполнит компьютер под управлением программы.
Языки программирования используются для передачи компьютеру инструкций по выполнению какого-либо вычислительного процесса.
Слайд 5
История развития языков программирования
Слайд 6
Предлагаем вам:
ознакомиться с историей развития языков программирования;
увидеть
как менялись лексические и синтаксические правила языков программирования на
примере записи командной строки вывода на консоль надписи Hello, World
В истории развития языков программирования выделяют 5 поколений
Слайд 7
Первое поколение
Начало 1949-1959- язык первых компьютеров. Первый язык
ассемблера, созданный по принципу «одна инструкция - одна строка».
Основная
отличительная особенность: ориентирование на конкретный компьютер.
Слайд 8
Второе поколение
Конец 1950-х - начало 1960-х годов. Разработан
символьный ассемблер, в котором появилось понятие переменной. Это первый
полноценный язык.
Основная отличительная особенность: ориентирование на абстрактный компьютер с такой же системой команд.
Слайд 9
Самые первые компьютеры программировались на машинном языке, который
представлял из себя набор нулей и единиц, понятных процессору,
причем программы написанные на этом языке были аппаратно-зависимыми, то есть программа, написанная для процессора с одной архитектурой, не работала на процессоре с другой архитектурой, а сами программы хранились на перфокартах и перфолентах.
Программист был обязан полностью понимать принцип работы процессора и его архитектуру, чтобы писать программы на машинном языке.
Программы в то время были довольно просты, во-первых, из-за ограниченности возможностей тех машин, во-вторых, из-за сложности создания программ на машинном языке. На сегодняшний день этот язык используется только для разработки ассемблеров. Так выглядела программа Hello, World! на машинном языке для процессора архитектуры х86 в шестнадцатеричном виде.
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
Слайд 10
Языки ассемблера, автокод
С развитием компьютеров сложность программ серьезно
росла, писать их на машинном языке становилось слишком сложно,
тогда на смену машинному коду пришли языки ассемблера. В настоящее время эту группу языков используют для разработки операционных систем, вирусов, антивирусов, а также компиляторов для высокоуровневых языков. На картинке показана программа Hello, World! На одном из языков ассемблера.
Слайд 11
Третье поколение
1960 - сегодняшнее время - Языки программирования
высокого уровня. Они являются относительно простыми и не зависимыми
от конкретного компьютера. Простота языка позволяет писать небольшие программы и людям, которые не являются профессиональными программистами.
Основная черта высокоуровневых языков – абстракция, то есть введение смысловых конструкций, описывающих структуры данных и операции над ними, описание которых на низкоуровневом языке программирования очень длинны и сложны для понимания, также в высокоуровневых языках часто используются разговорные слова, к примеру функция print() выведет в консоль какое-либо сообщение.
Яркими представителями языков программирования третьего поколения являются:
Слайд 13
COBOL
Этот язык ориентирован на обработку экономической информации. Он
был разработан рабочей группой, во главе с Грейс Хоппер,
созданной исполнительным комитетом Кодасил.
Слайд 14
BASIC
Был разработан в 1964 году профессорами Дартмутского колледжа
Томмасом Курчем и Джонни Кемени, язык создавался как инструмент,
с помощью которого студенты-программисты могли бы самостоятельно создавать программы для своих нужд.
Слайд 15
Pascal
Этот язык создан для обучения программированию в школах
и на первых курсах вузов. Этот язык был создан
Никлаусом Виртом в 1968-1969 годах, он был назван в честь французского математика, Блеза Паскаля. Автор планировал создать небольшой и эффективный язык, который способствовал бы хорошему стилю программирования.
Слайд 16
СИ
С – это язык общего назначения разработанный Денисом
Ритчи в 1969-1973 годах.
Слайд 17
С++
С++ - язык, разработанный Бьерном Страауснупом, в 1983
году, как библиотека для языка С, однако позже превратившаяся
в полноценный язык программирования. С++ был создан из-за того, что автору не хватало возможностей языка С. С++ используется для создания ОС, драйверов, серверов, игр.
Слайд 18
Java
Java – язык разработанный компанией Sun Microsystems. Программы
на этом языке транслируются в специальный байт-код, который может
быть запущен на любом компьютере с установленной Java Virtual Machine.
Слайд 19
Четвертое поколение
1970 до настоящего времени. Создаются языки, предназначенные
для реализации крупных проектов.
Проблемно-ориентированные языки, оперирующие конкретными понятиями
узкой области. Как правило, в такие языки встраивают мощные операторы, позволяющие одной строкой описывать функции, для описания которых языках младших поколений потребовалось бы сотни или даже тысячи строк исходного кода.
Основная отличительная особенность языка четвертого поколения: приближение к человеческой речи (декларативные языки).
Слайд 20
Python
Язык, ориентированный на повышение читаемости кода и производительности
труда программиста. Язык был создан Гвидо ван Россумом в
1991 году, этот язык является интерпретируемым, то есть программа, написанная на этом языке не нуждается в компиляции, вместо этого компиляция происходит во время исполнения программы. Программа, выводящая в консоль “Hello,World!” выглядит так:
print(“Hello, World!”)
Слайд 21
PHP
В 1994 году Расмус Лердорф создал набор
скриптов для Perl для учета посетителей его онлайн резюме,
который он назвал PHP.
На данный момент PHP используется для веб-разработки. Этот язык регулярно встречается с критикой со стороны программистов, так как язык изначально был набором скриптов для Perl, то язык вышел довольно странным. Программа выводящая в консоль “Hello, World!” на PHP выглядит так:
echo 'Hello, world!';
Слайд 22
JavaScript
Это язык программирования, появившийся в 1995 году, его
автором является Брендан Эйх. В данный момент этот язык
используется для придания интерактивности веб-страницам, а также создании веб-сайтов.
alert( ‘Hello, World!);
Слайд 23
Пятое поколение
Искусственный интеллект
На теперешний момент нет чёткого определения,
по каким критериям определяются языки пятого поколения. Предполагают, что
с его помощью компьютер может решить определённую проблему без участия программиста. Программисту нужно будет только задать, какую проблему должен решить компьютер и условия, которые нужно достичь, чтобы решить её. И это без необходимости того, чтобы реализовывать алгоритм или процедуру для её решения. Частично к пятому поколению относят визуальное программирование, то есть манипулирование графическими объектами программы вместо написания ее текста. Языки пятого поколения будут еще более абстрактными и еще более высокоуровневыми.
Слайд 24
наглядным примером эволюции языков программирования может служить
сравнение программы вычисления корней квадратного уравнения на языках программирования
Assembler
и Python
Слайд 25
Графическое представление решения задачи
Слайд 26
так выглядит эта программа на языке
Assembler
0000 STACK
SEGMENT STACK
0000 0040[ DW 64 DUP (?) ???? ]
0080 STACK ENDS
0000 CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
EXTRN FLOAT_ASCII:NEAR
0000 0001 A DW 1
0002 FFFB B DW -5
0004 0006 C DW 6
0006 ???? STATUS DW ?
0008 0004 FOUR DW 4
000A 0002 TWO DW 2
000C 8C AD A8 AC EB A5 20 ERROR_MSG DB 'Мнимые корни',10,13,'$'
AA AE E0 AD A8 0A 0D
24
001B QUADRATIC PROC FAR
001B 1E PUSH DS ; Сохранение адреса возврата
001C 2B C0 SUB AX,AX
001E 50 PUSH AX
001F 8C C8 MOV AX,CS
0021 8E D8 MOV DS,AX
0023 8E C0 MOV ES,AX
0025 9B DB E3 FINIT ;-----ST(0)-----;-----ST(1)------
0028 9B DF 06 0002 R FILD B ; B ; ?
002D 9B D8 8E 0000 FMUL ST(0) ; B**2 ; ?
0032 9B DF 06 0000 R FILD A ; A ; B**2
0037 9B DE 0E 0008 R FIMUL FOUR ; 4*A ; B**2
003C 9B DE 0E 0004 R FIMUL C ; 4*A*C ; B**2
0041 9B DE E1 FSUBRP ST(1),ST(0) ; D=B**2-4*A*C ; ?
0044 9B D9 E4 FTST
0047 9B DD 3E 0006 R FSTSW STATUS
004C 9B FWAIT
004D 8A 26 0007 R MOV AH,BYTE PTR STATUS+1
0051 9E SAHF
0052 72 37 JB IMAGINARY
0054 9B D9 FA FSQRT ; SQR(D) ;
Слайд 27
Вычисление корней квадратного уравнения (начало)
0057
9B D9 C0 FLD ST(0) ; SQR(D)
; SQR(D)
005A 9B D9 E0 FCHS ; -SQR(D) ; SQR(D)
005D 9B DE 06 0002 R FIADD B ; B-SQR(D) ; SQR(D)
0062 9B D9 E0 FCHS ; -B+SQR(D) ; SQR(D)
0065 9B D9 C9 FXCH ST(1) ; SQR(D) ; -B+SQR(D)
0068 9B DE 06 0002 R FIADD B ; B+SQR(D) ; -B+SQR(D)
006D 9B D9 E0 FCHS ; N1=-B-SQR(D) ; N2=-B+SQR(D)
0070 9B DE 36 0000 R FIDIV A ; N1/A ; N2
0075 9B DE 36 000A R FIDIV TWO ; ROOT1=N1/2*A ; N2
007A E8 0000 E CALL FLOAT_ASCII ; N2 ; ?
007D 9B DE 36 0000 R FIDIV A ; N2/A ; ?
0082 9B DE 36 000A R FIDIV TWO ; ROOT2=N2/2*A ; ?
0087 E8 0000 E CALL FLOAT_ASCII ; ? ; ?
008A CB RET
008B IMAGINARY:
008B 8D 16 000C R LEA DX,ERROR_MSG
008F B4 09 MOV AH,9H
0091 CD 21 INT 21H ; Вывод сообщения об ошибке
0093 CB RET
0094 QUADRATIC ENDP
0094 CODE ENDS
END QUADRATIC
Слайд 28
Намного проще и изящнее почти как словесный алгоритм
решения
выглядит программа для вычисления корней квадратного уравнения
на
языке программирования Python
print("Введите коэффициенты для квадратного уравнения (ax^2 + bx + c = 0):")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
discr = b**2 - 4 * a * c;
print("Дискриминант D = %.2f" % discr)
if discr > 0:
import math
x1 = (-b + math.sqrt(discr)) / (2 * a)
x2 = (-b - math.sqrt(discr)) / (2 * a)
print("x1 = %.2f \nx2 = %.2f" % (x1, x2))
elif discr == 0:
x = -b / (2 * a)
print("x = %.2f" % x)
else:
print("Корней нет")
Слайд 29
На основании проведенного сравнения можно сделать вывод о
том, что развитие электронной вычислительной техники влияет на упрощение
языков программирования.
Слайд 30
Языки программирования становятся совершеннее, постоянно появляются
новые, эволюционирую старые. Многие из старых языков программирования, благодаря
своей универсальности и удобству, по-прежнему активно используются, претерпевая изменения в сторону упрощения с развитием электронно-вычислительной техники.
В настоящее время набор лексических и синтаксических правил языков программирования стал более понятен широкому кругу пользователей. Программирование стало проще, практически любой человек может освоить его. Изучение языка программирования отождествляется с изучением иностранного языка.
Сейчас осуществляется развитие системы автоматического создания прикладных программ с помощью визуальных средств разработки.