18
Умение вместо функции
архивВ Кембридже начала пятидесятых рядом с EDSAC, одной из первых вычислительных машин, которые действительно работали, стоял стальной шкаф с бумажными лентами. На каждой ленте дырочками была записана маленькая программа, умевшая одну вещь: посчитать синус, извлечь корень, красиво напечатать число. Если в задаче нужен был синус, программист доставал ленту, механически переписывал её на свою и возвращал оригинал на полку. В 1951 году Морис Уилкс, Дэвид Уилер и Стэнли Гилл описали этот порядок в первом учебнике программирования, и маленькие программы, которые вставляют в большие, с тех пор называются подпрограммами, а потом функциями.
Историю программирования можно пересказать как историю того, что кладут в этот шкаф. Сначала туда складывали функции, потом библиотеки функций, потом целые службы на чужих серверах: отправляешь запрос, и где-то далеко проводят платёж, шлют СМС или сообщают погоду. Каждый раз то, что лежит на полке, становилось крупнее и самостоятельнее. Сейчас на полку кладут вещь, которой в пятидесятые не нашлось бы даже названия.
Проще всего показать её на счёте. Функция createInvoice() создаёт счёт, если ей аккуратно подали все данные в нужном виде. Программный интерфейс даёт адрес вроде /invoices, куда счёт можно отправить на хранение. А умение выставляет счёт клиенту, и это совсем другой глагол. Оно выясняет, кто клиент и какие у него реквизиты, собирает позиции из сделанной работы, применяет правила компании о скидках, налогах и сроках, делает документ, отправляет туда, где клиент его действительно прочитает, запоминает, что счёт ушёл, и, если к сроку денег нет, само напоминает. Внутри оно пользуется десятком функций, парой чужих служб, памятью и правами доступа, а снаружи выглядит как одно действие, понятное любому бухгалтеру.
После входа
Дальше книга открыта для тех, кто вошёл
Войдите через INITE или заведите аккаунт. Это займёт минуту, и книга откроется прямо здесь.