Я попытаюсь кратко пробежать по всем ярким эпизодам "учебного процесса".
Итак, основным понятием программирования является действие, или функция. Функция представляет собой некий чёрный ящик (все представили огромных размеров коробок), у которого в одной стороны находится вход, а с другой - выход. Автор приводит следующий пример. Пусть будут гуси, которые направляются внутрь этого ящика, исчезают в его закоулках, и выходят, но уже немного другими. Были они обычными гусями, а стали расписными: теперь на пузе красуются звёзды. Очевидно, что у ящика есть цель - разукрашивать гусей, и он с этим прекрасно справляется. А могла бы быть другая - стирать нацарапанные на животах звёзды. Тоже функция, чем не оная?
Гусь - > [Окрасить] - > Гусь со звездой на пузе.
Пожалуй, концепция понятна. Переходим к примерам.
Надо к некоторому числу прибавить, скажем, пять (+5). Что в этом случае?
10 - > [+5] - > 15
Убавить число?
10 - > [-5] - > 5
Усложним задачу: на вход подаётся два числа, нужно определить их сумму.
(7, 2) - > [+] - > 9
или вычесть
(7, 2) - > [-] - > 5
А если, например, требуется определить максимальное (минимальное) число из двух заданных?
(8, 1) - > [наибольшее] - > 8
(8, 1) - > [наименьшее] - > 1
Равны числа?
(4, 3) - > [равенство?] - > НЕТ!
(3, 3) - > [равенство?] - > ДА!
Переходим к логике. Что с событиями? Здесь размышляют так. Об одновременности (AND) событий можно говорить в том случае, когда соблюдены все условия; то есть, успех зависит от всех факторов:
(ВКЛ, ВКЛ) - > [AND] - > ВКЛ
(ВЫКЛ, ВКЛ) - > [AND] - > ВЫКЛ
Возможность - достаточность - (OR) лишена таких жестких ограничений. Успех здесь зависит от удовлетворения хотя бы одного фактора:
(ВЫКЛ, ВКЛ) - > [OR] - > ВКЛ
Аналгогия - водопровод с двумя вентилями. Если они расположены последовательно, то для протекания воды нужно одновременное открытие этих вентилей. Если параллельно - достаточно открытия одного из них.
Дальше можно покомбинировать функциями - ящиками - для, например, сравнения двух сумм:
{(4, 3) - > [ + ] - > 7}, {(1,2) - > [ + ] - > 3} - > [равенство?] - > НЕТ! // 7 не равно 3
Осветив основные правила, можно перейти к весьма важному понятию - типизации. В случае сложения какие типы данных участвовали в преобразовании? Численные на входе, численные на выходе. В случае проверки равенства - иначе - на выходе булевый тип. То есть: функция выполняет некоторое действие, даёт ответ на вопрос, причём вопрос сформулирован в определённой форме (используя свои типы данных), а ответ - в своей форме (для него результат также закреплён за своим типом данных).
Джек Коф был убедителен, а его сын (восьмилетний!) внимателен; он постиг вот эти базовые концепции. Но кое-что осталось нетронутым: передача внутрь чёрных ящиков других коробков и коробочков, которые тоже вносят свой вклад в общее дело, спланированное умом изощрённого ума. Но об этом позже.
Комментариев нет:
Отправить комментарий