RxTx (15.12.2019 15:29 - 15:39, просмотров: 746) ответил Chum_A на По условию регулятор как жена цезаря, вне подозрений и (если угодно) проверен всеми имеющимися анализаторами. Кстати, статический (и не только) анализ не выявляет, например, идеологических ошибок. Изначальный посыл был "будёновский", супротив
У людей есть непонимание, мисконцепция. Например, недавно fk0 кидал статью Joel Spolsky "закон дырявых абстракций". Я уже не раз наталкивался на этого wannabe компьютерного "философа", изобретающего на пустом месте "законы", тогда как ситуация банальна и это его личное недопонимание. В данном случае того, что взаимодействовать должны над-системы соответствующего верхнего уровня (и только на этом верхнем уровне). Неверно ожидать что TCPIP должен решать или сталкиваться с уровнем физического линка. Это не "leaky abstractions", это непонимание того как между собой взаимодействуют системы.
Мисконцепция о которой я хотел сказать в том что системы верхнего уровня, состоящие из под-систем нижнего уровня неполноценно называют "абстракциями". Они безусловно, являются абстракцией над нижним уровнем. Но с другой стороны, это не только абстракция. Это совершенно закономерный способ пострения над-систем, систем верхнего уровня. Так организована вся природа, включая строение наших биологических тел.
Вопрос, ЗАЧЕМ может потребоваться из под-систем построить над-системы? Зачем требуетя уровень выше?
Зачем это в природе, это отдельный разговор. А инженера, разработчикам это требуется для УПРАВЛЕНИЯ СЛОЖНОСТЬЮ.
Я как-то сформулировал для себя такое шуточное правило.
Если разработчик управляет сложностью, понижает сложность - это хороший, годный разработчик.
Если в процессе его деятельности сложность увеличивается или не понижается - это плохой, негодный разработчик. :)))
Основной инструмент разработчика - это инкапсуляция, создание иерархий, иначе сложность не понизить.
Где применяется введение над-систем? Прежде всего, в электронике. Транзистор - это самый низкий уровень. Введение микросхем позволило резко понизить сложность, перейти от работы с миллионами транзисторов к законченным "коробочкам".
Существуют и дальнейшие шаги по "абстрактизации", точнее по снижению сложности и инкапсуляции. Это:
Платы. как правило - со своими интерфейсами-разъемами
Модули (набор нескольких плат) как правило - со своими интерфейсами.
Блоки (как правило, со своими межблочными интерфейсами)
Стойки
Электроника в этом процессе будучи неабстрактной, материальной деятельностью добилась значительных успехов.
Чего не скажешь о программировании, которое забуксовало на уровне "объекта", а это 60е годы.
---
Основной мой посыл был сказать:
Не надо негативно воспринимать "абстракции". Потому что это не "абстракции", а создание под или над- систем, естественный путь инжиниринга, управление сложностью. И в электронике полно примеров когда без этого не обойтись.
Я бы посоветовал строить программные системы так, как строятся электронные системы. С моей точки зрения в этом будешее.
Спасибо, князь. Вы настоящий дворянин. И программист.