Нормативные акты, как и языки программирования, создают лишь возможности для достижения некоторых целей. В этих сферах как нет никаких ограничений, так и нет никаких гарантий по реализации поставленных целей. При этом рассуждения на общие темы в данных отраслях в общем-то бессмысленны, так как решение конкретного вопроса может быть реализовано только в рамках конкретных возможностей и ограничений здесь и сейчас с учетом лимита по времени и по деньгам. Кроме того, «паяльник» для решения вопроса в лоб еще никто не отменял.
Хотите поговорить о терминах? Я только за. Для начала следует ознакомиться с первоисточниками, коим для русского языка является Уголовный кодекс РФ. Если мы посмотрим в этот документ, то увидим, что понятие «воровство» в нем отсутствует, а есть целый раздел VIII «Преступления в сфере экономики», начинающийся со статьи 158 «Кража» и заканчивающийся статьей 204.2 «Мелкий коммерческий подкуп». Также в УК РФ есть глава 30 «Преступления против государственной власти, интересов государственной службы и службы в органах местного самоуправления», начинающаяся со статьи 285 «Злоупотребление должностными полномочиями» и заканчивающаяся статьей 293 «Халатность».
Из-за такого многообразия криминальных видов деятельности, чтобы не заморачиваться, преступления в сфере экономики называют просто воровством, а экономические преступления против государственной власти — коррупцией. Но чаще всего, когда говорят в целом о преступлениях экономической направленности, то вместо термина «коррупция и воровство» говорят просто о воровстве, подразумевая под коррупцией просто некоторую специализацию воровского промысла. Особенно учитывая сегодняшние масштабы организованной преступности, куда входят чиновники, легальные экономические структуры и откровенные криминальные элементы.
Так вот, в США в силу того, что государство по своей сути играет подчиненную роль в отношении крупнейших финансово-промышленных групп, для удобства работы просто взяли и легализовали некоторые виды деятельности, которые в большинстве стран являются уголовно-наказуемым деянием. В нашем УК РФ это такие статьи как 290 «Получение взятки», 291 «Дача взятки» и ряд других. Как говорится «ничего личного, просто бизнес». Чтобы лишний раз не платить адвокатам за отмаз своих клиентов, пойманных на взятках. Особенно учитывая, что на уровне элиты США получение и дачей взяток занимаются все кому не лень. Или вы думаете, что педофильские оргии с участием первых лиц государства устраиваются чисто из любви к искусству?
Возвращаясь же к теме нашей дискуссии, можно дать следующее определение лоббистской деятельности в США — это декриминализованные в целях снижение издержек виды деятельности по обеспечению доступа финансово-промышленных групп США к финансовым ресурсам государственного бюджета США федерального, регионального и местного уровней. Но вот с точки зрения граждан других стран, где эти статьи являются криминальными, лоббизм — это чистой воды воровство в традиционном понимании.
Воровство оно и есть воровство, которое есть грех по всем канонам. Просто дьявол любит рядится в чужие одежды, соблазняя невинные души. В результате воровство становится лоббизмом, пидарасы становятся геями, а инфантильные подростки превращаются в блогеров. Но от смены ярлыков суть вещей не меняется. Проблема только в том, что очень много людей зрит не в корень, а только на ярлык.
Потому что войны, которые ведут и вели США, являются результатом лоббизма определенных финансово-промышленных групп с целью получения подрядов от государства либо на освоение захваченных территорий, либо на материально-техническое обеспечение ведения военных действий. Да, это не воровство в привычном понимании этого слова. Это просто вселенское зло, которое не разменивается по мелочам на привычное всему остальному миру крупное воровство.
Если Ваши знакомые приобрели собственность без земельного участка, то право собственности на такую недвижимость не дает никаких гарантий, так как владелец земли может снести ее в любой момент (не забываем, что в Англии прецедентное право).
Если же собственность была приобретена вместе с землей, то значит Вашим знакомым очень сильно повезло, так как они вошли в очень узкий круг землевладельцев. Но с другой стороны, вряд ли Ваши знакомые вошли в круг крупных землевладельцев, а потому они всегда будут жить с опасением, что их земельный участок может приглянуться кому-нибудь из крупных землевладельцев, и тогда их собственность от враждебного поглощения не спасет никакой закон.
Вот тут все за бытовуху зарубаются, а ведь это не самое главное в жизни. В свое время, а это было в 93 году, был летом в Дрездене по какой-то там студенческой программе. В Германии все было супер, как пишут большинство здесь, — порядок, чистота, жрачка, вежливые люди и т.д. и т.п. Но прикол в том, что когда приехал обратно домой и вышел из поезда на московском вокзале, то просто ааафигел от осознания, какие у нас красивые люди.
Напоминаю, что это был 93 год, когда на улицах была грязь, вонь, бомжи, хаос и т.п. Но даже последние бомжи выглядели красивыми и естественными после ухоженных людей на улицах ухоженной Германии, как может выглядеть неказистая лесная земляника на фоне промышленно выращенной клубники. И именно после этого случая принял для себя решение, что жить нужно в России, а работать можно где угодно. Ведь Родина — это не место где ты живешь, а место в душе, о котором ты думаешь с теплотой.
То, что лично у Вас нет преемственности поколений, является сугубо личным выбором ваших предков. Вот, например, у Михалковых-Кончаловских вполне себе сохранился семейный бизнес. Да, в нашей стране у крестьян была непростая судьба. Зато вполне себе можно встретить династии рабочих, врачей, военных, инженеров и т.д.
А вот то, что на английском острове одна семья владеет недвижимостью, в том числе землей, сотни лет, означает, что большинству населения страны не светит иметь недвижимое имущество в собственности, а в особенности землю, а только на условиях временного найма. И здесь нет никакой политики, чисто арифметика. Просто недвижимости и земли на острове гораздо меньше, чем живущих на нем людей. И на всех ее просто не хватит. А те, кто каким-то образом сумел ухватить кусок недвижимости, будут держаться за него зубами и всеми конечностями, чтобы в конце жизни передать своим детям.
Да, жизнь в такой стране тоже на любителя. Но это не значит, что эта страна чем-то лучше других стран. Но сегодня, в отличии от прошлых веков, все стало гораздо проще. Не нужно ехать на пустое место и осваивать поселение с нуля, отбиваясь от окружающих хищников и других колонистов. Просто покупаешь билет на самолет и переселяешься в изначально комфортные условия в любою страну мира. Дело личного выбора каждого. Только вот незадача, в каждой стране свои плюсы и минусы, причем некоторые минусы начинаешь понимать только после нескольких лет жизни, когда и хотелось бы что-то изменить, но уже поздно.
Ну а право английской частной собственности лично для Вас означает, что Вам никогда не светит приобрести эту самую личную собственность на долгие годы, даже если заплатите большие деньги. Современный механизм персональных санкций против граждан неугодных государств является наглядным тому подтверждением.
В первую очередь нужно беспокоиться о своих деньгах, а о чужих — лишь за определенный процент взамен за оказание некоторой услуги. Все остальное — либо от благоглупости, либо, что чаще всего, от тщательно скрываемой корысти под маской лицемерия.
Ну а что касается права собственности, то в этом словосочетании термин «право» следует трактовать как договоренность, которая в определенный момент времени выгодна всем сторонам. Ведь обратной стороной права собственности является право сильного, когда в процессе перехода права собственности одна из сторон сделки лишается права на жизнь.
Поэтому если уж решаете заводить какую либо собственность, нужно быть готовым защищать ее как в рамках закона, так и в рамках права сильного (здесь я не рассматриваю случай, когда человек по жизни исполняет жертву).
Ну а что касается строительства дома в течение 25 лет, то целью этого процесса видится не улучшение жилищных условий, а убивание свободного времени. Так что, забрав у Вашего родственника дом, государство сделало благое дело, подарив ему новую цель и выделив на это деньги взамен надоевшей игрушки (то есть дома).
То есть продукты, на которых работают миллионы, по Вашему это называется «ничего нельзя»?! Или Вы за чужие бабки так беспокоитесь?! Или Вы всерьез полагаете, что путь к успеху обычно усыпан лепестками роз, а если это не так, то в этом виновата плохая власть и дурной народ?!
В России не жить плохо, а жизнь на любителя. Потому что Россия — это страна экстремумов, в которой две главные беды (дураки и дороги) уравновешиваются гениями через одного и проторенными маршрутами в космос. Потому что «в России можно все, если никого не спрашивать».
Но вот чтобы решить, что из всего многообразия доступного будешь воплощать в жизнь именно ты, нужно иметь большую смелость и острый ум. Если же этих качеств нет, то жить в России действительно плохо, потому что ссыкливых и тупых в лучшем случае никто не любит, а в худшем — чморят и доят. Это было и будет при любой власти. И не стоит по этому поводу питать иллюзии. А лучше становитесь смелее и умнее (эти качества прокачиваются), не дожидаясь появления старческих деменций.
Создание языка программирования для написания законов — это очередной простой способ решения сложных проблем.
Ведь любой язык программирования, даже самый низкоуровневый, является примером усложнения (в смысле повышения разнообразия) способов взаимодействия с предметом его описания, то есть ограниченным набором инструкций взаимодействия с процессором компьютера.
Попытка же сделать язык программирования для написания законов изначально будет работать с упрощенной моделью действительности, что в лучшем случае выродится либо в чисто академический интерес, на котором будут писаться научные труды, либо в прикладной инструмент, лишь создающий видимость решения проблем, а потому в реальности лишь умножающий их число.
Улучшение жизни нужно начинать себя, постепенно расширяя область улучшения вокруг себя — семья, друзья, место работы, родной город, отрасль работы, регион проживания. И только отмасштабировав область улучшения до региона можно браться за улучшение страны.
А что касается выполнения законов, то да, их нужно выполнять. Как это странно не прозвучит для некоторых, качество законов в нашей стране одно из самых лучших в мире. И жить по закону в нашей стране очень комфортно. Вот только, чтобы этими законами эффективно пользоваться, нужно их для начала просто прочитать, а затем еще и понять. И опять же, только поняв недостатки закона, можно браться за вынесение из этой огромной массы законов дополнительных абстракций на уровень конституции.
Если проводить аналогию конституции страны и сферы программирования, то самым точным аналогом конституции является набор абстракций в виде интерфейсов и абстрактных классов, призванных стандартизировать (то есть упростить) взаимодействие между различными компонентами большой системы. Но это упрощение взаимодействия предполагает последующее воплощение интерфейсов и абстрактных классов в реальном коде (законах и подзаконных актах).
При этом необходимо учитывать, что реальный код вполне себе можно писать и без всякого рода абстракций. Более того, на начальном этапе любого нового дела лучше всего избегать конструирования абстракций, а просто сразу морально настроится на периодический рефакторинг кода (внесение изменений и дополнений в действующие законы и подзаконные акты). И лишь когда код стабилизируется, а также появится потребность в масштабировании этого кода (распространение действия законов на новые сферы жизни или категории граждан), то можно подумать и над вынесением определения некоторых функций и структур данных на новый уровень абстракции (создание/изменение конституции или иного рамочного закона, содержащего в тексте ссылки на иные законы и подзаконные акты).
А что касается реальной жизни, то как бы хорошо не были бы прописаны интерфейсы и абстрактные классы (конституция), все могут испортить криворукие программисты и тупые пользователи, которым что есть эти классы и интерфейсы, что нет их, для них все едино.
Отсюда следует банальный вывод. Потребность в новой/уточненной конституции, как и возможность ее написания, имеется только у людей, которые занимаются конструированием общественного устройства. Для всех остальных устройство конституции и технология ее создания и модификации понятны в той же мере, как понятна бухгалтеру Марьиванне принципы наследования абстрактных классов на языке программирования высокого уровня. Поэтому предлагаю не отбирать чужой хлеб у законодателей, а поработать над темами, близкими народу, например, над этическим кодексом программиста, в котором продекларировать, что есть хорошо, а что есть плохо в сфере информационных технологий.
Попробуйте вместо поиска вширь покопать в глубину, то есть порешать задачи большого масштаба (с большим количеством пользователей, с большим объемом данных, с большим разнообразием оборудования и т.п.). В таких задачах любая даже самая простейшая функция непредсказуемо обрастает огромным количеством самых сложных технических решений. И что самое главное для Вас, в таких задачах используемые технологии отходят на второй план, а на первом плане оказываются архитектурные решения и алгоритмы, для придумывания которых можно ломать голову до бесконечности.
Соглашусь, что архитектура приложения во многом определяется предпочтениями разработчика и особенностями предметной области. Тем не менее, кеширование компонентов в Map является самым быстрым механизмом доступа к ним, а чтобы избежать переполнения кеша, можно использовать инкапсуляцию, логически разбивая компоненты на группы, которые внутри такой группы много взаимодействуют либо имеют общую логику, а вне группы взаимодействуют только в рамках событийной модели.
С другой стороны, смешение в одном компоненте всевозможного функционала с какого-то момента резко ухудшает возможности масштабирования проекта. Даже если разработчик один. Просто в силу ограничений человеческого мозга. Одно дело, когда в одном классе присутствует код, решающий конкретную задачу. И совершенно другое дело, когда в одном классе присутствует самый разнообразный код. В этом случае как минимум нужно постоянно держать в голове, с какими функциями нужно работать сейчас, а на какие не нужно обращать внимания.
Да, инкапсуляция кода добавляет как минимум один дополнительный уровень абстракции. Если приложение небольшое, что эта абстракция на начальном этапе выглядит явно избыточной. Но в жизни аппетит приходит во время еды. И если изначальная идея приложения оказалась востребованной, то постепенно появляются все новые хотелки по расширению функционала. При изначально модульной архитектуре добавление нового функционала представляет собой просто рутину. В случае же монолита даже самая мелкая доработка представляет собой самый настоящий головняк с непредсказуемыми последствиями от внесения даже небольших изменений в код.
Ну и лично по своим предпочтениям отмечу, что для меня в приоритете находятся скорость и масштабируемость проекта. При этом сложность проекта может быть сколь угодно высокой, но эту сложность по возможности нужно инкапсулировать в классы с понятным интерфейсом, а внутри класса писать понятный код без избыточных сокращений и делать комментарии ко всем более-менее логически сложным фрагментам кода.
Ну и да, по поводу внешних библиотек. Лично я придерживаюсь разумного компромисса между полным контролем кода, когда пишется все свое, и использованием простых и надежных внешних библиотек. Этот компромисс исходит из затрат времени на длинном горизонте планирования. С одной стороны, на начальном этапе нужно потратить много времени на написание собственных библиотек, но затем можно практически не вспоминать про них. С другой стороны, быстрое подключение сторонних библиотек со временем будет требовать все большего времени на изучение появляющихся новых возможностей и ошибок в этих библиотеках с необходимостью последующей адаптации собственного кода.
Идея писать на JS в ООП-стиле довольно интересна, но вот смешение в одну кучу JS-объектов и DOM выглядит очень сомнительно. Благодаря ковид-изоляции сам решил недавно поближе познакомиться с JS, попробовав сделать небольшой проект на JS и CSS без HTML. Проект представляет собой минималистичный Excel, поддерживающий операции +, -, *, / и ^ над числами и ячейками, сохраняющий документы в локальных файлах *.json с возможностью их открытия. Исходный код доступен по адресу https://github.com/leossnet/bizcalc.
В проекте все компоненты, как визуальные, так и для работы с данными, реализованы в виде классов. Визуальные компоненты расширяют либо HTMLElement, либо специализированные стандартные компоненты. При этом конструкторы визуальных компонентов содержат ссылку на корневой объект приложения, в котором в Map-кеше хранятся все визуальные компоненты.
Идея регистрации компонентов в кеше, заключается в том, что доступ к объектам осуществляется по ссылке, и если в качестве ключа в Map использовать имя переменной компонента, то доступ к любому компоненту из любого другого компонента можно получить практически мгновенно путем вызова this.#app.getComponent(compName) вместо использования медленного метода document.querySelector(appSelector).
Регистрация компонентов в приложении, которым является объект класса App, определенный в файле index.js, производится с помощью вызова следующего метода:
В свою очередь внутренняя переменная #components определяется в конструкторе класса App как this.#components = new Map(), которая выполняет роль глобального пространства имен с предельно быстрым доступом к объектам по имени их переменных.
Еще одна оптимизация связана с тем, что самая быстрая обработка строк является на порядки медленнее самой неоптимизированной работы с объектами. Поэтому строки с формулами в момент ввода сразу разбиваются на токены, для каждого из который создается экземпляр класса Token, массив которых также сохраняется в Map-кеше, в котором ключами выступают имена ячеек, содержащих формулы.
В целом идея таких подобных оптимизаций заключается в том, чтобы максимально избегать работы со строками, а также сохранять в Map-кешах ссылки на объекты для быстрого доступа к ним. В общем, если что сказал не так, то не судите строго начинающего JS-писателя.
Все просто — без команды нет власти. Если Вас интересуют подробности, то рекомендую ознакомиться с книгой Никколо Макиавелли «Государь» (1513 год). В процессе чтения этой книги только нужно вместо слова «государь» подставлять «руководитель», а вместо слова «народ» — «коллектив».
Мне кажется, что дискуссия заходит в тупик. Решать или не решать задачи бизнеса — это вопрос не о деньгах, а о власти. Ведь власть — это и есть право решать значимые для бизнеса вопросы, неся за это персональную ответственность за результаты принятых решений. Естественно, получая при этом несравненно большие объем и качество различных благ.
Проблема в том, что потребность во власти ощущают не более 5-7 (максимум 10) процентов от общего числа людей. Поэтому среди любых специальностей, в том числе среди программистов, встречаются люди, которым интересно, и у которых довольно неплохо получается, решать задачи бизнеса (если же быть точным, то задачи системы более высокого уровня), то есть играть во властные игры, в которых нет правил.
Для подавляющего же большинства людей проблемы власти не интересны, а скорее всего просто страшат, и потому они не могут и не хотят ими заниматься. Для таких людей гораздо комфортнее выступать в роли исполнителей с четкими и понятными правилами игры.
Беда наступает тогда, когда в команде программистов не оказывается игрока во власть. И тогда эта команда превращается в пушечное мясо, которое бизнес использует в своих личных целях, не гнушаясь при этом никакими методами. Ведь кто бы что ни говорил, но наш мир стоит на праве сильного, а все остальные ценности — лишь звенья в пищевой цепочке.
Из-за такого многообразия криминальных видов деятельности, чтобы не заморачиваться, преступления в сфере экономики называют просто воровством, а экономические преступления против государственной власти — коррупцией. Но чаще всего, когда говорят в целом о преступлениях экономической направленности, то вместо термина «коррупция и воровство» говорят просто о воровстве, подразумевая под коррупцией просто некоторую специализацию воровского промысла. Особенно учитывая сегодняшние масштабы организованной преступности, куда входят чиновники, легальные экономические структуры и откровенные криминальные элементы.
Так вот, в США в силу того, что государство по своей сути играет подчиненную роль в отношении крупнейших финансово-промышленных групп, для удобства работы просто взяли и легализовали некоторые виды деятельности, которые в большинстве стран являются уголовно-наказуемым деянием. В нашем УК РФ это такие статьи как 290 «Получение взятки», 291 «Дача взятки» и ряд других. Как говорится «ничего личного, просто бизнес». Чтобы лишний раз не платить адвокатам за отмаз своих клиентов, пойманных на взятках. Особенно учитывая, что на уровне элиты США получение и дачей взяток занимаются все кому не лень. Или вы думаете, что педофильские оргии с участием первых лиц государства устраиваются чисто из любви к искусству?
Возвращаясь же к теме нашей дискуссии, можно дать следующее определение лоббистской деятельности в США — это декриминализованные в целях снижение издержек виды деятельности по обеспечению доступа финансово-промышленных групп США к финансовым ресурсам государственного бюджета США федерального, регионального и местного уровней. Но вот с точки зрения граждан других стран, где эти статьи являются криминальными, лоббизм — это чистой воды воровство в традиционном понимании.
Если же собственность была приобретена вместе с землей, то значит Вашим знакомым очень сильно повезло, так как они вошли в очень узкий круг землевладельцев. Но с другой стороны, вряд ли Ваши знакомые вошли в круг крупных землевладельцев, а потому они всегда будут жить с опасением, что их земельный участок может приглянуться кому-нибудь из крупных землевладельцев, и тогда их собственность от враждебного поглощения не спасет никакой закон.
Напоминаю, что это был 93 год, когда на улицах была грязь, вонь, бомжи, хаос и т.п. Но даже последние бомжи выглядели красивыми и естественными после ухоженных людей на улицах ухоженной Германии, как может выглядеть неказистая лесная земляника на фоне промышленно выращенной клубники. И именно после этого случая принял для себя решение, что жить нужно в России, а работать можно где угодно. Ведь Родина — это не место где ты живешь, а место в душе, о котором ты думаешь с теплотой.
А вот то, что на английском острове одна семья владеет недвижимостью, в том числе землей, сотни лет, означает, что большинству населения страны не светит иметь недвижимое имущество в собственности, а в особенности землю, а только на условиях временного найма. И здесь нет никакой политики, чисто арифметика. Просто недвижимости и земли на острове гораздо меньше, чем живущих на нем людей. И на всех ее просто не хватит. А те, кто каким-то образом сумел ухватить кусок недвижимости, будут держаться за него зубами и всеми конечностями, чтобы в конце жизни передать своим детям.
Да, жизнь в такой стране тоже на любителя. Но это не значит, что эта страна чем-то лучше других стран. Но сегодня, в отличии от прошлых веков, все стало гораздо проще. Не нужно ехать на пустое место и осваивать поселение с нуля, отбиваясь от окружающих хищников и других колонистов. Просто покупаешь билет на самолет и переселяешься в изначально комфортные условия в любою страну мира. Дело личного выбора каждого. Только вот незадача, в каждой стране свои плюсы и минусы, причем некоторые минусы начинаешь понимать только после нескольких лет жизни, когда и хотелось бы что-то изменить, но уже поздно.
Ну а право английской частной собственности лично для Вас означает, что Вам никогда не светит приобрести эту самую личную собственность на долгие годы, даже если заплатите большие деньги. Современный механизм персональных санкций против граждан неугодных государств является наглядным тому подтверждением.
Ну а что касается права собственности, то в этом словосочетании термин «право» следует трактовать как договоренность, которая в определенный момент времени выгодна всем сторонам. Ведь обратной стороной права собственности является право сильного, когда в процессе перехода права собственности одна из сторон сделки лишается права на жизнь.
Поэтому если уж решаете заводить какую либо собственность, нужно быть готовым защищать ее как в рамках закона, так и в рамках права сильного (здесь я не рассматриваю случай, когда человек по жизни исполняет жертву).
Ну а что касается строительства дома в течение 25 лет, то целью этого процесса видится не улучшение жилищных условий, а убивание свободного времени. Так что, забрав у Вашего родственника дом, государство сделало благое дело, подарив ему новую цель и выделив на это деньги взамен надоевшей игрушки (то есть дома).
Но вот чтобы решить, что из всего многообразия доступного будешь воплощать в жизнь именно ты, нужно иметь большую смелость и острый ум. Если же этих качеств нет, то жить в России действительно плохо, потому что ссыкливых и тупых в лучшем случае никто не любит, а в худшем — чморят и доят. Это было и будет при любой власти. И не стоит по этому поводу питать иллюзии. А лучше становитесь смелее и умнее (эти качества прокачиваются), не дожидаясь появления старческих деменций.
Ведь любой язык программирования, даже самый низкоуровневый, является примером усложнения (в смысле повышения разнообразия) способов взаимодействия с предметом его описания, то есть ограниченным набором инструкций взаимодействия с процессором компьютера.
Попытка же сделать язык программирования для написания законов изначально будет работать с упрощенной моделью действительности, что в лучшем случае выродится либо в чисто академический интерес, на котором будут писаться научные труды, либо в прикладной инструмент, лишь создающий видимость решения проблем, а потому в реальности лишь умножающий их число.
А что касается выполнения законов, то да, их нужно выполнять. Как это странно не прозвучит для некоторых, качество законов в нашей стране одно из самых лучших в мире. И жить по закону в нашей стране очень комфортно. Вот только, чтобы этими законами эффективно пользоваться, нужно их для начала просто прочитать, а затем еще и понять. И опять же, только поняв недостатки закона, можно браться за вынесение из этой огромной массы законов дополнительных абстракций на уровень конституции.
При этом необходимо учитывать, что реальный код вполне себе можно писать и без всякого рода абстракций. Более того, на начальном этапе любого нового дела лучше всего избегать конструирования абстракций, а просто сразу морально настроится на периодический рефакторинг кода (внесение изменений и дополнений в действующие законы и подзаконные акты). И лишь когда код стабилизируется, а также появится потребность в масштабировании этого кода (распространение действия законов на новые сферы жизни или категории граждан), то можно подумать и над вынесением определения некоторых функций и структур данных на новый уровень абстракции (создание/изменение конституции или иного рамочного закона, содержащего в тексте ссылки на иные законы и подзаконные акты).
А что касается реальной жизни, то как бы хорошо не были бы прописаны интерфейсы и абстрактные классы (конституция), все могут испортить криворукие программисты и тупые пользователи, которым что есть эти классы и интерфейсы, что нет их, для них все едино.
Отсюда следует банальный вывод. Потребность в новой/уточненной конституции, как и возможность ее написания, имеется только у людей, которые занимаются конструированием общественного устройства. Для всех остальных устройство конституции и технология ее создания и модификации понятны в той же мере, как понятна бухгалтеру Марьиванне принципы наследования абстрактных классов на языке программирования высокого уровня. Поэтому предлагаю не отбирать чужой хлеб у законодателей, а поработать над темами, близкими народу, например, над этическим кодексом программиста, в котором продекларировать, что есть хорошо, а что есть плохо в сфере информационных технологий.
С другой стороны, смешение в одном компоненте всевозможного функционала с какого-то момента резко ухудшает возможности масштабирования проекта. Даже если разработчик один. Просто в силу ограничений человеческого мозга. Одно дело, когда в одном классе присутствует код, решающий конкретную задачу. И совершенно другое дело, когда в одном классе присутствует самый разнообразный код. В этом случае как минимум нужно постоянно держать в голове, с какими функциями нужно работать сейчас, а на какие не нужно обращать внимания.
Да, инкапсуляция кода добавляет как минимум один дополнительный уровень абстракции. Если приложение небольшое, что эта абстракция на начальном этапе выглядит явно избыточной. Но в жизни аппетит приходит во время еды. И если изначальная идея приложения оказалась востребованной, то постепенно появляются все новые хотелки по расширению функционала. При изначально модульной архитектуре добавление нового функционала представляет собой просто рутину. В случае же монолита даже самая мелкая доработка представляет собой самый настоящий головняк с непредсказуемыми последствиями от внесения даже небольших изменений в код.
Ну и лично по своим предпочтениям отмечу, что для меня в приоритете находятся скорость и масштабируемость проекта. При этом сложность проекта может быть сколь угодно высокой, но эту сложность по возможности нужно инкапсулировать в классы с понятным интерфейсом, а внутри класса писать понятный код без избыточных сокращений и делать комментарии ко всем более-менее логически сложным фрагментам кода.
Ну и да, по поводу внешних библиотек. Лично я придерживаюсь разумного компромисса между полным контролем кода, когда пишется все свое, и использованием простых и надежных внешних библиотек. Этот компромисс исходит из затрат времени на длинном горизонте планирования. С одной стороны, на начальном этапе нужно потратить много времени на написание собственных библиотек, но затем можно практически не вспоминать про них. С другой стороны, быстрое подключение сторонних библиотек со временем будет требовать все большего времени на изучение появляющихся новых возможностей и ошибок в этих библиотеках с необходимостью последующей адаптации собственного кода.
В проекте все компоненты, как визуальные, так и для работы с данными, реализованы в виде классов. Визуальные компоненты расширяют либо HTMLElement, либо специализированные стандартные компоненты. При этом конструкторы визуальных компонентов содержат ссылку на корневой объект приложения, в котором в Map-кеше хранятся все визуальные компоненты.
Идея регистрации компонентов в кеше, заключается в том, что доступ к объектам осуществляется по ссылке, и если в качестве ключа в Map использовать имя переменной компонента, то доступ к любому компоненту из любого другого компонента можно получить практически мгновенно путем вызова
this.#app.getComponent(compName)
вместо использования медленного методаdocument.querySelector(appSelector)
.Регистрация компонентов в приложении, которым является объект класса App, определенный в файле index.js, производится с помощью вызова следующего метода:
addComponent(componentName, component) {
this.#components.set(componentName, component);
}
В свою очередь внутренняя переменная #components определяется в конструкторе класса App как
this.#components = new Map()
, которая выполняет роль глобального пространства имен с предельно быстрым доступом к объектам по имени их переменных.Еще одна оптимизация связана с тем, что самая быстрая обработка строк является на порядки медленнее самой неоптимизированной работы с объектами. Поэтому строки с формулами в момент ввода сразу разбиваются на токены, для каждого из который создается экземпляр класса Token, массив которых также сохраняется в Map-кеше, в котором ключами выступают имена ячеек, содержащих формулы.
В целом идея таких подобных оптимизаций заключается в том, чтобы максимально избегать работы со строками, а также сохранять в Map-кешах ссылки на объекты для быстрого доступа к ним. В общем, если что сказал не так, то не судите строго начинающего JS-писателя.
Проблема в том, что потребность во власти ощущают не более 5-7 (максимум 10) процентов от общего числа людей. Поэтому среди любых специальностей, в том числе среди программистов, встречаются люди, которым интересно, и у которых довольно неплохо получается, решать задачи бизнеса (если же быть точным, то задачи системы более высокого уровня), то есть играть во властные игры, в которых нет правил.
Для подавляющего же большинства людей проблемы власти не интересны, а скорее всего просто страшат, и потому они не могут и не хотят ими заниматься. Для таких людей гораздо комфортнее выступать в роли исполнителей с четкими и понятными правилами игры.
Беда наступает тогда, когда в команде программистов не оказывается игрока во власть. И тогда эта команда превращается в пушечное мясо, которое бизнес использует в своих личных целях, не гнушаясь при этом никакими методами. Ведь кто бы что ни говорил, но наш мир стоит на праве сильного, а все остальные ценности — лишь звенья в пищевой цепочке.