Pull to refresh
140
21.1
Александр Рябиков @rsashka

Системный архитектор

Send message

Я старый пользователь, но сейчас тоже не могу зайти даже в обычную веб версию интернет банка. Может быть у них внутренняя система отвалилась или МТС глючит и не присылает СМС. Печалька :-(

Я тоже говорю про крупные проекты и полностью разделяю ваше негодование, когда разработчик нарушает те или иные соглашения при написании кода.

Просто я пытаюсь обратить ваше внимание на то, что данная проблема может быть решена как техническим способом (жесткий запрет на доступ к приватным полям), так и организационными методами (отклонение ревью из-за нарушения стандарта кодирования, если этот человек в вашей команде, эскалация проблемы на руководство, если это делается в соседней команде, поймать его и сделать темную в коридоре, если у вас на работе так принято :-) ).

Однако в в случае реализации технического способа уменьшатся возможности работы с кодом не только у вас, а вообще у всех разработчиков, и в тоже время он все равно не гарантирует полной защиты, так как грязные хаки возможны всегда.

в условиях частного финансирования.

Чтобы сравнивать себя с батутом Маска, частного финансирования, к сожалению недостаточно :-(

Так как вы хоть и делаете разработку за счет средств частного инвестора, но с расчетом на последующую компенсацию со стороны будущих заказов (преимущественно государственных), тогда как батут Маска хоть и получает госконтракты, но ориентирован все же на свой реальный бизнес (в первую очередь старлинк).

Но все равно молодцы и желаю успехов!

-5 Вольт было нужно для некоторых процессоров (были раньше такие). И за-за этого и обычный блок питания для ПК тоже содержит такое напряжение питания. Хотя оно сейчас уже наверно нигде не используется.
А для интерфейсов связи уровни для линии связи генерируются в микросхеме драйвера и дополнительные напряжения как правило вообще не нужны.

Вы получили минусы в карму (один из них мой), не за саму дискуссию. Ведь известно, что в споре рождается истина, а за форму подачи своих мыслей и навешивание ярлыков.

Причем, я его поставил только после нескольких сообщений о том, что ваши аргументы в принципе правильные, но не относятся к данному конкретном случаю, но вы все равно продолжали упорствовать в своих утверждениях, которые самый обычный спор рано или поздно переводят на личности, вместо обсуждения изначальной темы.

Программист в коде может написать все, что угодно, хоть разименовать нулевой адрес (например для написания теста). Соглашения о вызовах и именовании, это именно соглашения, и если кто-то не захотел их использовать (или не смог по другому), это не является доводом, чтобы усложнить жизнь всем остальным, заставляя их использовать перректальные механизмы доступа к приватным полям.

Возможно, это был единственный способ сделать задачу из-за общей корявой архитектуры приложения (например, нужные для наследников классов данные без геттеров и сеттеров сделали приватными, вместо защищенных)

Управлять поиском на сайте, классная идея! Но при этом очень хотелось бы выбирать место поиска:

  • только в своих закладках

  • в своих закладка и в закладках пользователей, за которыми я слежу

  • в закладках всех пользователей

  • в любых статьях на сайте

Спасибо! Нужно обязательно добавить в закладки! :-)

Выгружать ничего не хочется, а тем более потом загружать обратно. Планирую сделать все в рамка работы компилятора с загружаемым плагином.

Настроить поиск для заданных узлов AST тот еще геморрой, но все равно на порядки проще разработки собственного парсера или использования дополнительного внешнего инструмента.

Я не видел решений делающих это сильно чище, чем в статье.

+100

Я решаю именно "академический" вопрос, но с использованием имеющихся инструментов и прицелом на будущее реальное применение. Писать свой парсер для всех возможных диалектов C++, да еще и на Bison, как вы предлагаете, это просто ужасное решение с любой стороны. Хоть с точки зрения трудоемкости и сложности разработки, хоть с точки зрения последующей поддержки такого решения, хоть с точки зрения скорости получения первого результата.

Если вы называете костылем, решение использовать уже существующий парсер, то все ваши рассуждения "... как известно из практики, оно - "наше всё" при решении "задач бизнеса". Особенно "прямо сейчас" - а другого бизнесу и не надо." , наверно обычное шапозакидательство и популизм, ничего не имеющий с реальной жизнью.

Вообще-то мне нужно компилировать С++ код, но с некоторыми пользовательским атрибутами и дополнительными проверками. Для этих целей нужен анализ AST с помощью плагина под clang и финальным результатом в виде объектного файла.

Во вторых, разбирать грамматики современного С++ на BNF/Bison/PEG и иже с ними, это адовый ад, который гораздо хуже, чем писать фильтр для узлов AST на С++ как в примерах из данной статьи (и это не говоря уже про то, что придется делать ненужную работу по написанию парсера, вместо того, чтобы взять уже готовый).

Да, но фильтр мультисписка средствами C++ просто выглядит неуклюже, как его ни пиши.

С этим я полностью согласен.

Но к сожалению, тут идет выбор не на каком языке писать фильтр, а как писать фильтр на С++ с учетом используемого инструментария.

Причем тут сова, глобус и Си?

В статье речь о синтаксическом анализе исходного текста программы с помощью описанных инструментов. И сравнение двух подходов (visitors vs. matchers) при поиске нужных данных в абстрактном синтаксическом дереве.

А уж нужен ли вам чистый С, С++ или Objevtive-С - это уже дело десятое.

Количество закрывающих скобок коде примера меня тоже мутило.

Прямо как в том анекдоте:

Хакерам удалось украсть последние 50 МБ исходного кода программы на Lisp, которая управляет запуском баллистических ракет США.
К счастью, там были только закрывающие скобки.

FreeRTOS, это только ядро (потоки и многозадачность), и программировать под нее мало чем отличается от программирования для bare metal. Те же обработчики прерываний, те же сторонние библиотеки и "если нужно задействовать модули WiFi, Bluetooth, протоколы вроде 1wire, I2C e.t.c. Требует полный спектр знаний в аппаратной части и электронике, в цифровой логике, во внутренней периферии микроконтроллера ...", а то, о чем вы пишите (ESP-IDF), это Espressif IoT Development Framework — Фреймворк разработки IoT (Интернет Вещей) только для платформы ESP32.

В данном случае FreeRTOS, это как ядро Linux в любом дистрибутиве, тогда как состав различных программ в каждом отдельном дистрибутиве может быть разным. Точно так же как и ядро для дистрибутива может быть заменено на какое нибудь другое (например на FreeBSD или на оборот, хоть это и не просто).

Поэтому когда вы пишите "Выбор и настройка компонентов FreeRTOS через 'idf.py menuconfig' ", то это неправильно. Это настраивается ESP-IDF и к FreeRTOS он не имеет никакого отношения (точнее FreeRTOS является одним из множества компонентов этого фреймворка, точно так же как и при настройке компонентов прошивки под STM32).

Добавил к статье пару дополнительных наблюдений

https://devblogs.microsoft.com/oldnewthing/20230803-00/?p=108532
https://devblogs.microsoft.com/oldnewthing/20240510-00/?p=109742

Сравнение реализации строк из мейнстримных компиляторов (ms, gcc и clang)

Я тоже пишу в Obsidian`е, но ссылки на картинки в статье вставляю сразу оригинальные, сразу после их загрузки на habrastorage.org.

Да и писать Obsidian удобно только черновик, так как после публикации иногда приходится править текст статьи. И это удобнее делать сразу на Хабре (в старом редакторе). А через некоторое время после исправлений всех опечаток, можно переносить финальный текст обратно в Obsidian обычным copy-paste, убрав из статьи тег <cut>.

1
23 ...

Information

Rating
316-th
Location
Россия
Works in
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, Software Architect
Lead
C++
OOP
Linux
Programming microcontrollers
Embedded system
C
Qt
Software development