Посмотрите, хорошую реализацию протокола для iot. В комплекте есть готовый sdk для прошивок esp8266 / esp32 - https://homieiot.github.io/. Возможно, полезно будет.
Использую HomieIoT в домашней автоматизации и впечатления самые положительные. Хотелось бы побольще контрибьюторов.
Коротко: разные части монолита, по-разному нагружены. Вынос таких частей в сервисы позволяет их масштабировать отдельно. Обработка запроса в сервисе почти всегда "короче" и "легче" чем в монолите - отрабатывает только то, что нужно. Никакого общего "бутстрепа", на запрос не влияет и не мешается "соседняя логика".
Да и сам сервис проще и чище по коду чем монолит, хотябы ввиду размера кодовой базы.
Не думаю, что такие вещи с которыми «не все просто» можно выпустить в минорных версиях. Вы смотрели changelog 3.7.3? Там только фиксы, только работа над ошибками, залатывание багов. Медленно очень.
3-ей версии питона уже 11 лет… и первый мой комментарий как раз и был про то, что «не все так просто» и это во многом мешает питону развиваться, по крайней мере в сторону веба.
Трудно не согласиться с этим) Но мы как-то уклонилсь от изначального посыла в обсуждении «заточенности» питона под веб, перейдя к его недостаткам. Конечно, нет серебряной пули, у всего есть свои плюсы и минусы. Но, ИМХО, питон мог бы стать много лучше, причем малой кровью.
Да, чуть ошибся, я имел ввиду контекст protected. То есть при наследовании доступен, но недоступен при вызове снаружи. И не сокрытие видимости с помощью __ (кстати, тоже не выглядит элегантным), а именно ограничение доступа.
Вы не хотите меня понять) Я не говорю что в питоне нельзя сделать неизменяемую структуру. я говорю, что это делается не как в других языках, специальным для этого инструментом — константой, а обходными путями, namedtuple в частности, занулением сеттеров и прочими костылями.
Фактически, я и хотел сказать, что не надо «кучу способов», нужны просто константы. Зачем эти обходные пути, костыли-велосипеды, когда, повторюсь, во всех зрелых языках просто есть константы. И просто есть модификаторы доступа. И да, без них можно обойтись, но они придуманы не просто так и решают вполне насущные проблемы.
Веду сейчас крупный федеральный проект на питоне, с большой распределенной командой разработчиков. Проблемы на самом деле существуют.
Отсутствие констант очень сильно мешает, особенно в легаси 2.7 версии. Доходит до того, что простая опечатка в сравнении приводит к изменению значения того, что меняться в принципе не должно.
Невозможность приватных методов приводит к тому, что один разработчик начинает использовать публично метод, который для этого не предназначался и при дальнейшей разработке будет меняться несовместимо. Понятно что все это культура программистов, но предпосылки этих проблем — отсутствие модификаторов доступа.
Большая простыня models.py приводит к конфликтам слияния, попытка разбить на модули — к проблеме циклического импорта. И так далее.
Соглашусь с вами, не утверждал что это большая проблема, просто обратил внимание, что php проектировался именно под веб, когда как для питона web — не родная среда.
Да, обойтись можно без чего угодно. Однако практика показывает, что во всех зрелых языках они есть, ибо есть задачи которые константы решают. Если нет констант — нет для этих задач предназначенного инструмента.
В других языках нельзя что ли простыню сделать?
Речь про то, что питон диктует так делать (проблема циклического импорта) и устоявшаяся практика. Посмотрите на models.py в django любого сложного проекта.
В чем ее мутность?
В необходимости писать тип в виде строки вместо непосредственно литерала, если импортировать тип нельзя из-за проблемы циклического импорта. И в том, что при запуске и в рантайме, питон не пикнет даже если будут несоответствие типов (частая проблема при использовании сторонних пакетов, где pypy не поможет ввиду отсутствия тайпхинтинга в этих самых сторонних пакетах ).
В чем заточенность?
PHP изначально проектировался для обработки http запросов, цикл обработки запроса заточен именно под это. Как пример — встроенный механизм сессий. работа с сессиями — это функции самого языка.
Большинство вещей, которые делаются в PHP на базовом уровне, в питоне делает фреймворк. И оно понятно, обработка http — это не целевая задача питона и делается сравнительно «сторонними» от ядра, средствами.
Питон довольно сильно застрял в своей парадигме и это мешает ему развиваться в нужном для веб направлении. Отсутствие констант, модификаторов доступа, длинные простыни кода в одиночных файлах, мутная история с тайпхинтингом/типизацией и многое другое. Питон хорош для научной работы, математики, расчетов, числодробилок наконец. В вебе он как-то держится, но тот же PHP 7-ых версий именно в вебе, будет наголову выше. И по производительности и по «заточенности».
дело не только в паранойе, они весьма существенно садят батарею своими фоновыми сервисами (по одному на каждое приложение) которые беспрестанно долбятся запросами к местоположению.
да и просто нервирует постоянно вылазящее уведомление внизу экрана о том что яндекс в очередной раз полез в gps
А они в принципе через все свои приложения шпионят https://link.https.pro/52j очень разозлили постоянной долбежкой к местоположению, пока не прибьешь приложение, пользоваться телефоном практически невозможно.
Посмотрите, хорошую реализацию протокола для iot. В комплекте есть готовый sdk для прошивок esp8266 / esp32 - https://homieiot.github.io/. Возможно, полезно будет.
Использую HomieIoT в домашней автоматизации и впечатления самые положительные. Хотелось бы побольще контрибьюторов.
Коротко: разные части монолита, по-разному нагружены. Вынос таких частей в сервисы позволяет их масштабировать отдельно. Обработка запроса в сервисе почти всегда "короче" и "легче" чем в монолите - отрабатывает только то, что нужно. Никакого общего "бутстрепа", на запрос не влияет и не мешается "соседняя логика".
Да и сам сервис проще и чище по коду чем монолит, хотябы ввиду размера кодовой базы.
Тоже удивился, PHP в последнее время далеко прыгнул. Стал сложнее, "взрослее", порог входа вырос и поток новичков снизился.
Да, чуть ошибся, я имел ввиду контекст
protected
. То есть при наследовании доступен, но недоступен при вызове снаружи. И не сокрытие видимости с помощью__
(кстати, тоже не выглядит элегантным), а именно ограничение доступа.Фактически, я и хотел сказать, что не надо «кучу способов», нужны просто константы. Зачем эти обходные пути, костыли-велосипеды, когда, повторюсь, во всех зрелых языках просто есть константы. И просто есть модификаторы доступа. И да, без них можно обойтись, но они придуманы не просто так и решают вполне насущные проблемы.
Отсутствие констант очень сильно мешает, особенно в легаси 2.7 версии. Доходит до того, что простая опечатка в сравнении приводит к изменению значения того, что меняться в принципе не должно.
Невозможность приватных методов приводит к тому, что один разработчик начинает использовать публично метод, который для этого не предназначался и при дальнейшей разработке будет меняться несовместимо. Понятно что все это культура программистов, но предпосылки этих проблем — отсутствие модификаторов доступа.
Большая простыня models.py приводит к конфликтам слияния, попытка разбить на модули — к проблеме циклического импорта. И так далее.
Да, обойтись можно без чего угодно. Однако практика показывает, что во всех зрелых языках они есть, ибо есть задачи которые константы решают. Если нет констант — нет для этих задач предназначенного инструмента.
Речь про то, что питон диктует так делать (проблема циклического импорта) и устоявшаяся практика. Посмотрите на models.py в django любого сложного проекта.
В необходимости писать тип в виде строки вместо непосредственно литерала, если импортировать тип нельзя из-за проблемы циклического импорта. И в том, что при запуске и в рантайме, питон не пикнет даже если будут несоответствие типов (частая проблема при использовании сторонних пакетов, где pypy не поможет ввиду отсутствия тайпхинтинга в этих самых сторонних пакетах ).
PHP изначально проектировался для обработки http запросов, цикл обработки запроса заточен именно под это. Как пример — встроенный механизм сессий. работа с сессиями — это функции самого языка.
Большинство вещей, которые делаются в PHP на базовом уровне, в питоне делает фреймворк. И оно понятно, обработка http — это не целевая задача питона и делается сравнительно «сторонними» от ядра, средствами.
да и просто нервирует постоянно вылазящее уведомление внизу экрана о том что яндекс в очередной раз полез в gps