Рефакторинг
Думай о программе как об артели:
данные == материал,
методы чистые == станки,
методы декораторы === рабочие - подготавливают материал и заправляют в станки, собирают материал, после обработки на станках,
методы цепочки === мастера - организуют движение рабочих и материалов.
Отделы закупок, продаж и т.п. - тоже будут работать на артельных принципах.
Каждый шаг
- прост,
- проверяем, -
- заменяем,
- тестируем,
- подключаем,
- расширяем и
- легко реализует многопоточность.
У тех, кто хорош в войне, нет неожиданной победы, нет репутации мудреца, нет чести за отвагу.
Философия проектирования промышленного конвейера и потока данных чисто функционального конвейера одинакова.
Математическая модель
Задача о бассейне, жидкости и трубах
Стандартная модель склада/мастерской, конечно, наиболее эффективна, но фрактальная система необходима в некоторых ситуациях.
Это НЕ оптимальное решение для идеального мира, но оптимальное решение для реального мира.
В этом мире есть много вещей, которые мы не можем полностью контролировать и преследовать наши интересы.
Мы можем только сотрудничать, желательно взаимовыгодно.
Если вы понимаете, что программное обеспечение — это фабрика, которая производит данные, то сможете понять модель склада/цеха, понять разделение производственных линий (чистые функции, конвейеры, цех) и производственных материалов (данные), а также непрерывное производство на производственной линии.
Контраст с Everything is an object
Объект представляет собой пушистый шар - между объектами хаотичная P2P (одноранговая) сеть. Это сложная неорганизованная система.
Конвейер — это односторонний луч, и это самое простое, что стандартизация и объединение данных. Это простая, надежная, упорядоченная, наблюдаемая и проверяемая система.
Лучший инструмент планирования задач — диаграмма Ганта, а лучший метод реализации — модель склада/мастерской, реализованная на заводе.
если в потоке данных есть только реки (входные мастерские), нет облаков и дождя (выходные мастерские) и нет океанов и озер (склады), то это не замкнутая система, поэтому она теоретически неполна.
Коммуникация, координация и управление конфликтами наносят большой ущерб производительности, и они могут свести этот ущерб к минимуму за счет:
- разделения задач,
- единого планирования и
- наделения полномочиями («Выстрелил и забыл»).
Сложная форма жизни состоит из множества "простейших" клеток.
Сложный ЦП состоит из сотен миллионов простейших транзисторов.
Мастерские децентрализованы и независимы, но каждая мастерская связана со складом, образуя систему.
Данные централизованно управляются хранилищем.
Проверка данных и ограничения очень удобны, что помогает поддерживать целостность и правильность данных
Стандартные спецификации данных помогают правильно и всесторонне понимать данные.
Это способствует получению исчерпывающей информации и оптимизации системы с глобальной точки зрения в качестве основы для единого планирования.
При отладке можно легко сохранить глобальную информацию о хранилище во время его работы и проанализировать причину сбоя.
Стоимость обслуживания самая маленькая, а управление самое простое.
Глобальное унифицированное планирование задач
является наиболее эффективной, что соответствует здравому смыслу.
Каждая мастерская должна иметь определенные стандартные спецификации для входных данных (параметров) и выходных данных (возвращаемых значений).
Каждая мастерская шаг за шагом преобразует начальное состояние в целевое состояние через ряд конвейеров (чистых функций) и, наконец, возвращается на склад.
Сложная структура данных: просто управлять структурой данных методом изготовления самолета. Разделите данные, манипулируйте данными снизу вверх, комбинируйте слой за слоем и, наконец, выполните задачу. Ведь в IT-сфере нет структуры данных сложнее, чем самолеты.
Обработка исключений
В обычном стандартизированном производственном цехе не бывает исключительных ситуаций и проблем.
Асинхронность
не нужна, async/await == отсталая и неизбежно исключаемая модель.
Не разрешается ждать
Не должно быть, чтобы цех останавливался посреди производственного процесса и ждал свою продукцию у дверей другого цеха, чтобы продолжить свой производственный процесс.
Каждый цех взаимодействует только со складом.
Если в операции (потоке, асинхронном потоке, волокне) есть ожидание, это связано с ненаучным дизайном программы.
Если есть задачи (данные), которые не завершены, всем воркерам (потокам, асинхронным потокам, файберам) не разрешается ждать. Это основное требование научного менеджмента.
Технология внеочередного исполнения современных ЦП — ошибка.
чип Apple M1 принял дизайн «модель склада/мастерской» и был выпущен 11 ноября 2020 года
«Архитектура фон Неймана», используемая компьютерами, не имеет математической модели.
Парадигма программирования Foxpro
ориентированная на базы данных, — это направление развития будущего языка программирования (Привет, ДальРезерв).
подходит для теории, поскольку она просто поддерживает таблицы памяти и конвейерные операторы.
Механизм планирования можно постепенно оптимизировать.
Microsoft пора рассмотреть вопрос о редизайне Foxpro и создании ИТ-версии «Мумия возвращается».
Финансы
Простая, унифицированная и абстрактная профессия. Валюта как всеобщий эквивалент есть абстракция стоимости всех товаров. Финансы единообразно измеряются в валюте, рассчитываются в соответствии со стандартами бухгалтерского учета.
С финансовой точки зрения непрерывно действующее предприятие представляет собой:
чистая функциональная конвейерная система «денежного потока», основанная на модели склада/мастерской.
Главные формы красоты — порядок, симметрия и определенность.
Аристотель
Объектно-ориентированное и функциональное программирование совершенно не отвечают трем требованиям красоты.
Странные формы и хаотичная логика OO&FP не только неприглядны, трудны для чтения и понимания, но и совершенно несовместимы с простыми и повторяемыми требованиями промышленного производства.
FP и OO слишком сложны, и это невозможно в крупных производствах. Это также своего рода производственный метод, в котором упор делается на персональные технологии в ручных мастерских. Персональные технологии сильно влияют на качество продукции и крайне ненадежные методы производства. FP и OO на самом деле идут в обход, сильно приукрашенные и неэффективные, и приводят к всевозможным неудачам.
Чрезмерное применение шаблонов проектирования OO и FP, помимо увеличения сложности и вероятности ошибок, снижает производительность без какой-либо пользы. Сложные сети отношений между объектами в объектно-ориентированной системе также трудно поддерживать.
Система типов, поддерживаемая FP, использует систему типов HM для получения типов параметров и возвращаемых значений, чтобы не писать типы вручную. Этот подход нарушает
Эстетическая «определённость» программирования.
- относиться к программному обеспечению как к фабрике, которая производит данные,
- использовать данные как центр, точно определять стандарты данных (продукты, детали, сырье) и
- производить в соответствии со стандартами
Куды проще-то?
Создавать системы с использованием самых простых концепций и самых основных методов, синтаксиса и функций.
Хорошими стихами насладится и неграмотный.
Простой код сможет понять младший программист в сложной системе.