- •Лекция №12-13
- •Алгоритм, алгоритмизация, алгоритмический язык
- •Свойства алгоритмов
- •Управляющие структуры и основные конструкции алгоритмов
- •Неформальные описания алгоритмов
- •Сортировка методом простого выбора
- •Сортировка в интегрированных пакетах
- •Сортировка в приложении Word
- •Сортировка в приложении Excel
- •Алгоритмы генерации случайных чисел
- •Сложность алгоритмов
- •Технологии (парадигмы) программирования
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование
- •Визуальное программирование
- •Языки программирования баз данных
- •Языки программирования для компьютерных сетей
- •Инженерия программного обеспечения
- •Принцип программного управления
Языки программирования баз данных
Языки программирования баз данных отличаются от алгоритмических языков прежде всего своим функциональным назначением. При работе с базами данных выполняются следующие операции:
создание, преобразование и удаление таблиц в БД;
поиск, отбор, сортировка по запросам пользователя;
добавление новых записей и модификация существующих, удаление записей и др.
Для обработки больших массивов информации и выборки записей по определенным признакам был создан структурированный язык запросов SQL (Structured Query Language). Язык SQL – это стандартный язык работы с реляционными базами данных.
Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Практически в каждой СУБД имеется свой встроенный язык работы с БД. Так, например, в Oracle имеется встроенный язык PL/SQL.
Языки программирования для компьютерных сетей
Языки программирования для компьютерных сетей являются интерпретируемыми. Интерпретаторы для них являются свободно распространяемым программным обеспечением с открытым кодом.
HTML (Hyper Text Markup Language) –язык разметки гипертекста, используемый для подготовки Web документов для Internet.
Perl (80-е г.) ‑ содержит многочисленные функции работы со строками, массивами, всевозможные средства преобразования данных.
PHP (1995-1997 г.г.) обладает средствами доступа к базам данных и используется для создания динамических сайтов.
Инженерия программного обеспечения
Управление и усовершенствование процессов, используемых для развития программного обеспечения, было предложено как важнейшее средство в решении этих проблем. Отрасль знаний в рамках которой, изучается процесс создания программного обеспечения и разработка моделей оценки его стоимости называется инженерное проектирование программного обеспечения (Software Engineering).
Принцип программного управления
Работа компьютера определяется программой. Программа загружается в память с некоторого носителя информации, например, жёсткого диска. Программа хранится в памяти компьютера. Операционная система, загрузив программу, и при необходимости настроив её для выполнения в той области памяти, куда она попала, сообщает процессору начальный адрес загруженной программы и инициирует процесс её выполнения.
Процессор считывает из памяти первую команду программы, находит в памяти или в своих регистрах данные, необходимые для её выполнений (если, конечно, команда требует данных) и, выполнив требуемую операцию, возвращает в память или, возможно, обновляет в регистрах результат своей работы.
Выполнив первую команду, процессор переходит к следующей, и так далее до конца программы. Завершив программу, процессор не будет знать, что ему дальше делать, поэтому любая программа должна завешаться командами, передающими управление операционной системе компьютера. Очевидным является тот факт, что отдельная машинная команда может быть не выполнена процессором из-за нарушений в последовательности команд, предшествующих выполнению текущей команды.
Оперативная память компьютера представляет собой электронное устройство, состоящее из большого числа двоичных запоминающих элементов, а также схем управления ими. Минимальный объем информации, к которому имеется доступ в памяти, составляет 1 байт (8 бит). Таким образом, минимально адресуемым элементом памяти является байт, а память можно представить в виде пронумерованных ячеек-байтов, и процессору в любой момент времени доступна любая ячейка. Обычно пары байтов называют словами, а четвёрки – двойными словами, хотя иногда термином «слово» обозначают любую порцию машинной информации. Память является однородной, т.е. пригодной для хранения, как команд, так и данных.
Для однозадачных операционным систем, например, MS DOS, одним из критериев классификации программ является способ взаимодействия прикладной программы с другими программами и операционной системой. По этому критерию программы делятся на два вида: транзитные и резидентные.
Транзитной программой называется программа, после выполнения которой используемые ресурсы компьютерной системы передаются на планирование операционной системе.
Резидентной программой (Terminate and Stay Resident, TSR) называется программа, которая постоянно находится в памяти с целью мгновенного реагирования на запросы пользователя, или на какие-то события, происходящие в компьютерной системе.
К транзитным программам относится подавляющее количество приложений.
Классическими примерами резидентных программ являются обработчики прерываний. Функции обработчика прерываний зависят от решаемой задачи и назначения того устройства, от которого поступают сигналы прерываний, например, от «мыши» или клавиатуры.
В многозадачной операционной системе Windows понятие резидентной программы отсутствует.
Итак: последовательность выполнения команд определяется программой, хранимой в памяти; определяется адрес первой команды; следующая команда однозначно определяется длиной предыдущей команды или адресом перехода; выполнение команд продолжается до тех пор, пока не встретится команда, предписывающая необходимость передать управление операционной системе; ресурсы, используемые программой, поступают на планирование операционной системе.
Три вышеуказанных принципа: программное управление, однородность памяти и адресация образуют архитектуру фон Неймана. Отсюда следует, что постоянной частью компьютерной системы является оборудование, а переменной частью – программное обеспечение.
Литература
Беклемишев Л.Д. Теоремы Гёделя о неполноте и границы их применимости// Успехи математических наук. 2010. Вып. 5 (395). Т. 65. С. 61-106.
Карри Х. Основания математической логики. М.: Мир, 1969. 566 с.
Клини С. Математическая логика. М. Едиториал УРСС:, 2005. 480 с.
Тьюринг А. Могут ли машины мыслить? М.: : ГИФМЛ, 1960. 485 с.
Чёрч А. Математическая логика. М.:, 1960. 485 с.
1 Гёдель (Godel) Курт (1906-1978), логик и математик. Родился в Австро-Венгрии, с 1940 г. в США. Труды по математической логике и теории множеств. Доказал (1931) так называемые теоремы о неполноте (теоремы Гёделя), из которых, в частности, следует, что не существует полной формальной теории, где были бы доказуемы все истинные теоремы арифметики.
2 Тюринг (Turing) Алан Матисон (1912-1954), английский математик. Основные труды по математической логике, вычислительной математике. В 1936 г. ввёл математическое понятие абстрактного эквивалента алгоритма или вычислимой функции, поучившее затем название «машина Тьюринга»
3 Пост (Post) Эмиль Леон (1897-1954), американский математик. Основные труды по математической логике. В 1936 г. предложил абстрактную вычислительную машину, получившую название «машина Поста».
4 Марков Андрей Андреевич (1903-1979), советский математик, ч.-к. АН СССР (1953). Основные труды по топологии, логике и конструктивной математике.
5 Чёрч (Church) Алонзо (1903- 1995), американский логик, математик. Работы Ч. относятся к различным областям логики. Он развил мысль об отделении понятия функции от понятия множества. В 1936 выдвинул основную гипотезу теории вычислимых функций (т. н. тезис Чёрча): каждая эффективно вычислимая функция является). В 1935 Ч..привёл пример неразрешимой массовой проблемы, а в 1966 доказал, что разрешения проблема для исчисления предикатов неразрешима. Эти результаты оказали большое влияние на развитие математической логики. Ч. внёс существенный вклад в развитие комбинаторной логики: ему принадлежат исследования в области логической семантики и модальной логики.
6 Эрбран (Herbrand) Жак (1908-1931), французский математик. Основные труды в области математической логики (исчисление предикатов, рекурсивные функции, теоремы о дедукции, конструктивная логика) и алгебры (поля, алгебраические числа).
7 Клини (Kleene) Стивен (1909-1994), американский математик. Основные работы посвящены теории алгоритмов и рекурсивных функций, а также проблемам интуиционистской логики и математики.
8 Голдстайн (Goldstine) Герман Гейн (1913-2004) – американский математик, специалист в области компьютерных наук.
9 Не́йман (Neumann) Джон фон (1903-57) – американский математик и физик. Труды по функциональному анализу, теории игр и квантовой механике. Внёс большой вклад в создание первых ЭВМ и разработку методов их применения.
.
10 A Million Random Digits with 100,000 Normal Deviates. http://books.google.com/books?id=XvwX1fxryIgC&printsec=frontcover&hl=ru#v=onepage&q&f=false
