Со временем пришел к тому же, системный софт на C# писать как-то приятнее и быстрее. В свободное время стараюсь изучать новые стандарты C++, чтобы быть в курсе, но пока желания что-либо написать на нём (кроме чисто спортивного интереса) не было. Для низкоуровневых embedded вещей всё еще предпочитаю простой Си.
А какой в итоге код получается в production на плюсах? Сколько ни смотрел на большие проекты, видел в основном более процедурный стиль (что-то близкое к Си с классами), ну там немного обмазано умными указателями и несколько стандартных контейнеров. На C# как раз можно писать используя его сахар и все остается понятным, но на плюсах как получается?
Скажите честно — если бы вы не знали о том, что это — C++, смогли бы вы узнать язык, на котором это написано? Мне больше нечего добавить.
И зачем так писать код? Как это отлаживать? Потом придет новый программист и будет пробираться через все эти переопределения и лямбды? Со временем начинаешь понимать, что процедурный стиль и легче в отладке и в поддержке.
Квартира выглядит плохо и непрактично, у дизайнера либо не было опыта, либо сделали "на отвали" замылив глаз красивой картинкой. Приводы для штор в такой маленькой квартире, серьёзно? 35 групп освещения? Я бы понял, если бы это было сделано чисто для "демо", но и на это не сильно тянет "умность" дома.
Получится, и дело не только в желании, а в том, что есть много людей готовые работать и создавать вот такие решения. Кто-то идет, потому что он "вне политики", а кто-то идет, потому что он "патриотично" настроен.
Дополню свой предыдущий комментарий спустя некоторое время. Есть то ли программная, то ли аппаратная проблема - датчики иногда не могут подключиться к Wi-Fi когда мой роутер меняет канал. Я сначала подумал, что это использования 12 и 13 канала, но потом это повторялось и на других. Переключение канала или перезагрузка роутера помогают. Внутри этих датчиков стоит ESP32, я плотно с этим микроконтроллером не работал, но может быть это проблема самих чипов или беспроводного стека для режима с низким энергопотреблением. Могу предположить, что где-то запоминается канал на котором установлено соединение и если он будет изменен во время сна устройства, то оно неправильно будет искать сеть при следующем подключении.
Не совсем понял о какой такой рекомендации Вы говорите. Открываем что находится из последнего, и тут читаем:
Use var only when a reader can infer the type from the expression. Readers view our samples on the docs platform. They don't have hover or tool tips that display the type of variables.
И эти рекомендации выглядят нормально, речь в них в том, что можно (и даже не обязательно) использовать var, когда явно понятен тип из выражения.
Аргумент, что сложно понять тип не из ide мне не очень понятен, это не баш скрипты, чтобы их ковырять в блокноте. Оценить качество кода можно и без знания типов или вообще пользоваться инструментами для ревью в самой ide.
Возможно, характер работы у Вас это позволяет. Мне же иногда нужно смотреть в историю разных репозиториев, держать код открытым не только в IDE (например, сохраненный участок кода во время рефакторинга). И так как кодовая база может быть довольно большой и старой, то не всегда помнишь контекст, поэтому во время поиска и решения проблем я хочу смотреть на код как на полноценный текст. Для меня явное лучше неявного, поэтому указание типа (а с codepilot это еще и быстрее) наоборот является хорошим тоном.
Если говорим о C++, то там действительно тип может иметь сложную сигнатуру и прописывать его будет нудно. Или там какие-нибудь итераторы, где в целом может быть понятен хранимый тип. Еще бывают случаи, когда программист задумывает возможность "безболезненной" смены типа данных где-то выше по коду и во всех местах auto останется без изменений, мне такой подход не нравится, но я могу согласится с некоторыми доводами в случае C++. Когда мы говорим о C#, то сейчас можно сместить тип в объявлении в левую сторону, оставив в правой только new(), таким образом код будет последователен если придерживаться отсутствия var.
Иногда довольно сложно понять с каким типом имеешь дело. Ну вот к пример, открыл я код в bitbucket/github/notepad, и как мне посмотреть глазами на тип данных? Не всегда же используется IDE, да и не всегда удобно наводить курсор тогда, когда можно было этого не делать. Сам набор текста, даже с явными типами, занимает сильно меньше времени чем отладка и сопровождение.
А есть ли возможность посмотреть на код где-то? Или может быть у Вас есть ссылка на нечто похожее, которое отражает суть вышесказанного "небо и земля"?
Тут дело в том, что на C++ можно писать сильно по-разному. Кто-то плотно сидит на boost, у кого-то свое понимание использования шаблонов, бывает магия перегрузок и так далее. А бывает, как Вы сказали, и в стиле Си с классами. И загвоздка может заключаться в том, что в разных проектах C++ может использоваться кардинально разный подход и области языка. В случае Си или C# я не видел подобного, обычно все довольно похоже и целостно (за исключением добавления странного на мой взгляд сахара в C# в последние года). Это исключительно моё наблюдение, не претендую на объективность. Отдельно добавлю, что я с удовольствием смотрел лекции Константина Владимирова по C++, но это скорее академический интерес, мне немного возвращает воспоминания из юношества, когда я изучал плюсы и сделав тогда невероятно хитрый шаблон который разворачивался из одной строчки во что-то безумное — был невероятно горд собой и получал от этого удовольствие, но вот в работу я бы такой код не добавлял =)
Не нашел по ссылкам исходники к программе, чтобы как-то посмотреть на удобство работы в коде. Для работы с пользовательским интерфейсом отлично подходит связка C# и AvaloniaUI.
Ну, разные языки под разные задачи. ИМХО если требуется что-то низкоуровневое, то я бы предпочел чистый C, а не C++, из-за читаемости и "отлаживаемости". Если требуется что-то более масштабное, гибкое и быстрое, то я бы взял C#. Все эти пляски со стандартами, перегрузками, sfinae и другая шаблонная магия — напрочь отбили желание как-то продолжать его использовать.
Со временем пришел к тому же, системный софт на C# писать как-то приятнее и быстрее. В свободное время стараюсь изучать новые стандарты C++, чтобы быть в курсе, но пока желания что-либо написать на нём (кроме чисто спортивного интереса) не было. Для низкоуровневых embedded вещей всё еще предпочитаю простой Си.
А какой в итоге код получается в production на плюсах? Сколько ни смотрел на большие проекты, видел в основном более процедурный стиль (что-то близкое к Си с классами), ну там немного обмазано умными указателями и несколько стандартных контейнеров. На C# как раз можно писать используя его сахар и все остается понятным, но на плюсах как получается?
И зачем так писать код? Как это отлаживать? Потом придет новый программист и будет пробираться через все эти переопределения и лямбды? Со временем начинаешь понимать, что процедурный стиль и легче в отладке и в поддержке.
Устаревшие практики это какие?
Чем хорош?
Добро пожаловать в клуб
Выделят, но не создадут.
Квартира выглядит плохо и непрактично, у дизайнера либо не было опыта, либо сделали "на отвали" замылив глаз красивой картинкой. Приводы для штор в такой маленькой квартире, серьёзно? 35 групп освещения? Я бы понял, если бы это было сделано чисто для "демо", но и на это не сильно тянет "умность" дома.
Вы привели ссылку на второй том (вышедший в этом году), он начинается с восьмой главы. Первый том это вот этот https://www.piter.com/collection/all/product/vnutrennee-ustroystvo-windows-7-e-izd
Получится, и дело не только в желании, а в том, что есть много людей готовые работать и создавать вот такие решения. Кто-то идет, потому что он "вне политики", а кто-то идет, потому что он "патриотично" настроен.
Когда будет в наличии первый том "Внутреннее устройство Windows" в бумажном виде?
Дополню свой предыдущий комментарий спустя некоторое время. Есть то ли программная, то ли аппаратная проблема - датчики иногда не могут подключиться к Wi-Fi когда мой роутер меняет канал. Я сначала подумал, что это использования 12 и 13 канала, но потом это повторялось и на других. Переключение канала или перезагрузка роутера помогают. Внутри этих датчиков стоит ESP32, я плотно с этим микроконтроллером не работал, но может быть это проблема самих чипов или беспроводного стека для режима с низким энергопотреблением. Могу предположить, что где-то запоминается канал на котором установлено соединение и если он будет изменен во время сна устройства, то оно неправильно будет искать сеть при следующем подключении.
Не совсем понял о какой такой рекомендации Вы говорите. Открываем что находится из последнего, и тут читаем:
И эти рекомендации выглядят нормально, речь в них в том, что можно (и даже не обязательно) использовать var, когда явно понятен тип из выражения.
Возможно, характер работы у Вас это позволяет. Мне же иногда нужно смотреть в историю разных репозиториев, держать код открытым не только в IDE (например, сохраненный участок кода во время рефакторинга). И так как кодовая база может быть довольно большой и старой, то не всегда помнишь контекст, поэтому во время поиска и решения проблем я хочу смотреть на код как на полноценный текст. Для меня явное лучше неявного, поэтому указание типа (а с codepilot это еще и быстрее) наоборот является хорошим тоном.
Если говорим о C++, то там действительно тип может иметь сложную сигнатуру и прописывать его будет нудно. Или там какие-нибудь итераторы, где в целом может быть понятен хранимый тип. Еще бывают случаи, когда программист задумывает возможность "безболезненной" смены типа данных где-то выше по коду и во всех местах auto останется без изменений, мне такой подход не нравится, но я могу согласится с некоторыми доводами в случае C++. Когда мы говорим о C#, то сейчас можно сместить тип в объявлении в левую сторону, оставив в правой только new(), таким образом код будет последователен если придерживаться отсутствия var.
Иногда довольно сложно понять с каким типом имеешь дело. Ну вот к пример, открыл я код в bitbucket/github/notepad, и как мне посмотреть глазами на тип данных? Не всегда же используется IDE, да и не всегда удобно наводить курсор тогда, когда можно было этого не делать. Сам набор текста, даже с явными типами, занимает сильно меньше времени чем отладка и сопровождение.
Если уже говорить в таком ключе, то "бить по рукам" нужно как раз таки за использование var.
А есть ли возможность посмотреть на код где-то? Или может быть у Вас есть ссылка на нечто похожее, которое отражает суть вышесказанного "небо и земля"?
Тут дело в том, что на C++ можно писать сильно по-разному. Кто-то плотно сидит на boost, у кого-то свое понимание использования шаблонов, бывает магия перегрузок и так далее. А бывает, как Вы сказали, и в стиле Си с классами. И загвоздка может заключаться в том, что в разных проектах C++ может использоваться кардинально разный подход и области языка. В случае Си или C# я не видел подобного, обычно все довольно похоже и целостно (за исключением добавления странного на мой взгляд сахара в C# в последние года). Это исключительно моё наблюдение, не претендую на объективность. Отдельно добавлю, что я с удовольствием смотрел лекции Константина Владимирова по C++, но это скорее академический интерес, мне немного возвращает воспоминания из юношества, когда я изучал плюсы и сделав тогда невероятно хитрый шаблон который разворачивался из одной строчки во что-то безумное — был невероятно горд собой и получал от этого удовольствие, но вот в работу я бы такой код не добавлял =)
Не нашел по ссылкам исходники к программе, чтобы как-то посмотреть на удобство работы в коде. Для работы с пользовательским интерфейсом отлично подходит связка C# и AvaloniaUI.
Ну, разные языки под разные задачи. ИМХО если требуется что-то низкоуровневое, то я бы предпочел чистый C, а не C++, из-за читаемости и "отлаживаемости". Если требуется что-то более масштабное, гибкое и быстрое, то я бы взял C#. Все эти пляски со стандартами, перегрузками, sfinae и другая шаблонная магия — напрочь отбили желание как-то продолжать его использовать.