Re[15]: А С++ то схлопывается...
От: B0FEE664  
Дата: 04.11.19 17:03
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>

M>>Ни одна методология не заставит человек вспомнить всё и покрыть все возможные варианты тестами. Кроме самых простых случаев.

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

M>Всего пару дней спустя вся эта пыль в глаза... оказалась лишь пылью в глаза. Потому что великие и могучие сторонние организации, которые проверяют, чтобы программисты покрыли все варианты тестами... проверяют 100% покрытие кода тестами.
M>Лолъ.

А в чём противоречие? Проверяют 100% покрытие кода тестами, все возможные варианты ветвления кода (но не все сценарии).
И каждый день — без права на ошибку...
Re[14]: А С++ то схлопывается...
От: B0FEE664  
Дата: 04.11.19 17:06
Оценка:
Здравствуйте, alex_public, Вы писали:

_>>>И как это противоречит автоматическому выводу типов? )))

BFE>>Вот так нельзя:
BFE>>
BFE>>auto i = fun();
BFE>>

_>И почему же? )

Я могу только предполагать. Думаю это из-за того, что нужно точно знать когда произойдёт переполнение.
И каждый день — без права на ошибку...
Re[14]: А С++ то схлопывается...
От: B0FEE664  
Дата: 04.11.19 17:09
Оценка: :))
Здравствуйте, alex_public, Вы писали:

BFE>>Но откуда у вас указатель, если все объекты либо глобальные/статические, либо лежат на стеке? (разумеется рекурсивные вызовы без ограничения глубины на стеке запрещены)


_>Эммм, про оператор взятия адреса ты не в курсе? )))

В курсе.

_>И да, в коде на МК у меня виртуальных функций нет. Но это не потому, что мне как-то мешается отсутствие динамического выделения памяти, а исключительно потому, что они просто не были нужны.


Ну вот, хоть кто-то понимает...
И каждый день — без права на ошибку...
Re[17]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.11.19 17:09
Оценка:
Здравствуйте, Marty, Вы писали:

M>Ну, к слову, такое можно вполне провернуть и на шаблонах без виртуальности. Правда, тогда всё, что пользуется интерфейсом writer'а переезжает в хидер, и код раздувается.


Ну тут дело не только в раздувании. У меня, конечно, голова скорее крутится вокруг ядерных вещей, а не прикладного кода. Если сделать на шаблонах, а не на виртуальности, то конкретную реализацию не получится, например, выселить в динамически загружаемый драйвер/плагин. С точки зрения чистого и незамутненного computer science это, может, и все равно, а с практической точки зрения совсем не все равно.
Re[16]: А С++ то схлопывается...
От: Mamut Швеция http://dmitriid.com
Дата: 04.11.19 17:15
Оценка:
BFE>А в чём противоречие? Проверяют 100% покрытие кода тестами, все возможные варианты ветвления кода (но не все сценарии).

Опять же могу только повторить: ЛОЛъ

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

Вообще-то, программист не должен вспомнинать/придумывать, а должен действовать по известным методологиям.

M>Ни одна методология не заставит человек вспомнить всё и покрыть все возможные варианты тестами. Кроме самых простых случаев.

Поэтому существуют специальные организации занимающиеся проверкой работы программистов.



Сколько пафоса и гонору. А на практике что? Ах да, «мы же не говорим про все варианты, ты что, только про 100% покрытие кода тестами, но не все сценарии». А как пел, как пел.


dmitriid.comGitHubLinkedIn
Отредактировано 04.11.2019 17:16 Mamut [ищите в других сетях] . Предыдущая версия .
Re[16]: А С++ то схлопывается...
От: B0FEE664  
Дата: 04.11.19 17:21
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Потому что у меня есть, например, объект, в который можно писать. И есть, например, другой объект, который умеет писать в объект, в который можно писать. И мне сразу становится все равно, куда писать, в файл на диске, в сетевой сокет или в буфер в памяти.


Всё это хорошо, только вот на практике, ещё на этапе составления спецификации известно что, куда и с какой скорость писать, поэтому такая потребность в абстрагировании оказывается излишней.
И каждый день — без права на ошибку...
Re[15]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.11.19 17:33
Оценка: :)
Здравствуйте, so5team, Вы писали:

S>И после этого вы еще будете говорить про замусоревание, присущее шаблонам? Ахринеть.


Да, буду. Потому что дополнительный код, который напишу я, будет, конечно, скучным и нудным, но абсольтно понятным и прозрачным. В отличии от.

S>В конфиге и должно было быть значение в секундах (или минутах). А вот когда это значение использовалось чтобы взвести таймер, например, тогда оно и преобразовывалось в миллисекунды.


Так надо было вообще везде, по всему проекту, хранить его в миллисекундах. Если при этом в конфигурационном файле используются иные единицы, то при вводе-выводе в файл и преобразовывать. В конце концов вы к этому и пришли, насколько я понял.

S>А я пытаюсь вести разговор строго в рамках C++ против C без привлечения других примеров. Но т.к. вы про C++ не знаете, то все время вас тянет поговорить про Go.
Re[13]: А С++ то схлопывается...
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.11.19 17:35
Оценка:
Здравствуйте, Marty, Вы писали:

M>Но с C++ претензия именно такая же, и тебя это не смущает


Нет, к C++ претензия другая.
Re[12]: А С++ то схлопывается...
От: alex_public  
Дата: 04.11.19 17:35
Оценка: +1
Здравствуйте, Pzz, Вы писали:

Pzz>Насчет быстро и эффективно, это не простой вопрос. Чтобы вставить объект в середину вектора объектов, простым советским memmove не обойдешься, придется конструкторы дергать. В новомодном C++ для этого, наверное, уже придумали какой-то навороченный синтаксис, состоящий из необычного сочетания обычных знаков препинания , но слабо могу себе представить, чтобы простой программист в своей прикладной программе им воспользовался.


Кстати, любопытный пример. Только вот на самом деле в обратную сторону... Т.е. описанной "сложности" у C++ естественно нет — это просто фантазии. И реальной проблемой подобного кода может стать только существование где-то сохранённых указателей на элементы вектора, т.к. после сдвига они станут невалидными. Причём эта проблема для обоих обсуждаемых языков! Только вот в C++ этот вопрос очень чётко описан в документации к STL. Т.е. там однозначно сказано где и когда можно пользоваться такими указателями, а где нельзя. А что у нас в случае C? Ну в лучшем случае ты опишешь это во внутренней документации проекта, хотя скорее это будет просто комментарий где-то в исходника, а возможно и ничего не будет — догадывайтесь сами, можно ли хранить указатели на элементы этого вектора или нет.
Re[17]: А С++ то схлопывается...
От: B0FEE664  
Дата: 04.11.19 17:37
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>Сколько пафоса и гонору. А на практике что? Ах да, «мы же не говорим про все варианты, ты что, только про 100% покрытие кода тестами, но не все сценарии». А как пел, как пел.


На практике это только один из пунктов проверки.
Помимо этого проводится ещё много каких проверок, в том числе проверка соответствия тестов требованиям, проверка корректности тестов, проверка самого кода, проверка соответствия hardware и software, интеграционное тестирование. И всё это стоит дорого и проводится сторонней организацией.
В случае критических компонентов обязательно написание тестирования в реальном времени, когда постоянно проверяется корректность работы приложения, отдельно проверяется корректность работы hardware. И т.д. и т.п..
И каждый день — без права на ошибку...
Re[36]: А С++ то схлопывается...
От: alex_public  
Дата: 04.11.19 17:44
Оценка: +1
Здравствуйте, Denis Ivlev, Вы писали:

S>>Или можно с другой стороны зайти: а чего добились вы?

DI>Дорос до архитектора, в заказчиках известные крупнные компании, интересная работа, много выступаю на конференциях, можно сказал сделал себе из имени бренд, материально все в шоколаде: квартира в Москве в престижном районе, дача, машина из салона каждые 3 года.

Эх, прямо реально завидую... Хотелось бы и мне быть таким же. Тогда бы почти на старте жизни уже чувствовал себя состоявшимся и все эти годы жил бы расслабленным и самодовольным. А вместо этого, я и сейчас, спустя много лет и свершений, до сих пор не чувствую что состоялся.
Re[19]: А С++ то схлопывается...
От: so5team https://stiffstream.com
Дата: 04.11.19 17:50
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Вообще-то принято считать, что виртуальный метод переопределяет поведение, а определяется поведение методом объекта.


Остается надеятся, что вы хотя бы сами поняли, что имели в виду.

BFE>Где именно?


В вопросах run-time полиморфизма.

BFE>Тот же самый код можно переписать вообще без объектов, как вы понимаете.


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

BFE>Я тут не стремился показать это, а только то, что виртуальность без динамической аллокации большого смысла не имеет.


У вас не получилось. Ожидаемо. Потому что вы так и не смогли ответить на вопрос о том, каким боком соотносятся виртуальные функции и динамическая аллокация.

BFE>Скажите мне, что именно я не знаю.


ООП, как минимум. Хотя бы в рамках классического "инкапсуляция, наследование, полиморфизм".
Re[15]: А С++ то схлопывается...
От: alex_public  
Дата: 04.11.19 17:53
Оценка: +1
Здравствуйте, B0FEE664, Вы писали:

BFE>Что ж. Ещё один аргумент против исключений.

BFE>Т.е. получается С++ без исключений, без контейнеров, без умных указателей. И это следствие только одного требования.

И? Это вполне себе хороший C++. Мне вполне нравится для МК. Собственно практически всё, что ты сейчас перечислил — это как раз "тема" 90-ых. Но при этом ты по сути не затронул ни одной из новинок языка — того, куда он развивается последние десятилетия.
Re[15]: А С++ то схлопывается...
От: alex_public  
Дата: 04.11.19 17:55
Оценка:
Здравствуйте, B0FEE664, Вы писали:

_>>>>И как это противоречит автоматическому выводу типов? )))

BFE>>>Вот так нельзя:
BFE>>>
BFE>>>auto i = fun();
BFE>>>

_>>И почему же? )
BFE>Я могу только предполагать. Думаю это из-за того, что нужно точно знать когда произойдёт переполнение.

Я не про это. Почему требование на указание точных размеров типов (а не плавающих типа int, хотя они плавают только в зависимости от компилятора/процессора, ну да ладно), должно запрещать подобный код?
Re[16]: А С++ то схлопывается...
От: so5team https://stiffstream.com
Дата: 04.11.19 17:57
Оценка:
Здравствуйте, Pzz, Вы писали:

S>>И после этого вы еще будете говорить про замусоревание, присущее шаблонам? Ахринеть.


Pzz>Да, буду. Потому что дополнительный код, который напишу я, будет, конечно, скучным и нудным, но абсольтно понятным и прозрачным. В отличии от.


В отличии от унылого кода, который вам придется написать на чистом Си, причем для каждого типа, в C++ вам придется написать всего лишь что-то вроде:
struct distance_tag {};
using distance = strong_typedef<int, distance_tag>;

struct weight_tag {};
using weight = strong_typedef<int, weight_tag>;


И при этом вы получите возможность писать просто d1+d2 вместо вызова функций с длинными именами. И не забываем, что в чистом Си даже пространств имен нет.

Pzz>В конце концов вы к этому и пришли, насколько я понял.


Вы представляете, в C++ можно в одном месте хранить std::chrono::seconds, в другом std::chrono::milliseconds, в третьем std::chrono::minutes и все это без проблем передавать туда, где ожидается duration.
Re[15]: А С++ то схлопывается...
От: alex_public  
Дата: 04.11.19 17:59
Оценка: :))
Здравствуйте, B0FEE664, Вы писали:

_>>И да, в коде на МК у меня виртуальных функций нет. Но это не потому, что мне как-то мешается отсутствие динамического выделения памяти, а исключительно потому, что они просто не были нужны.

BFE>Ну вот, хоть кто-то понимает...

Более того, сам по себе динамический полиморфизм нужен в достаточно редких случаях. Однако, т.к. в 90-ых другого подхода по сути и не было, тогда с помощью него решались абсолютно все задачи полиморфизма. И соответственно все библиотеки родом из тех времён (типа той же Qt и т.п.) до сих пор несут этот печальный отголосок прошлого. Хотя сейчас 90% таких задач можно удобно решить с помощью шаблонного параметра и лямбды. Однако к сожалению библиотек такого масштаба написанных на современном C++ не существует, поэтому приходится использовать что есть...
Re[23]: А С++ то схлопывается...
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 04.11.19 18:02
Оценка:
Здравствуйте, alex_public, Вы писали:

M>>>>Смотреть в отладке на регистры

_>>>Так регистры же все отображены в память, и соответственно банальный gdb без проблем подтягивает их значения (можно хоть в командной строке смотреть), и далее любая IDE показывает их в стандартном интерфейсе отладчика (отслеживания переменных). Что там ещё может быть нужно? )
M>>Удобство пользования этим

_>Так я и спрашиваю, в чём проявляется это самое удобство.


Что-та уже лень становится. Ты пробовал отлаживаться в кейле и в эклипсе, например?


_>Я уже молчу про то, что при использование библиотек от данного МК (типа HAL или LL), эти самые регистры не просто отображены в память, а ещё и находятся в соответствующих удобных объектных структурах, которые уж точно лучше подходят для контроля за периферией.


Спасибо, я в курсе
Маньяк Робокряк колесит по городу
Re[18]: А С++ то схлопывается...
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 04.11.19 18:03
Оценка:
Здравствуйте, Pzz, Вы писали:


M>>Ну, к слову, такое можно вполне провернуть и на шаблонах без виртуальности. Правда, тогда всё, что пользуется интерфейсом writer'а переезжает в хидер, и код раздувается.


Pzz>Ну тут дело не только в раздувании. У меня, конечно, голова скорее крутится вокруг ядерных вещей, а не прикладного кода. Если сделать на шаблонах, а не на виртуальности, то конкретную реализацию не получится, например, выселить в динамически загружаемый драйвер/плагин. С точки зрения чистого и незамутненного computer science это, может, и все равно, а с практической точки зрения совсем не все равно.


Ну, а у меня голова крутится и вокруг размера кода. Потому, что когда у тебя на всё про всё 192Кб (и это еще в жирных камушках), то приходится
Маньяк Робокряк колесит по городу
Re[16]: А С++ то схлопывается...
От: nekocoder США  
Дата: 04.11.19 18:07
Оценка:
Здравствуйте, alex_public, Вы писали:

_> Хотя сейчас 90% таких задач можно удобно решить с помощью шаблонного параметра и лямбды.


Получив в подарок раздутое время компиляции необходимость держать метод в заголовке, что в сочетании с первым делает процесс разработки очень приятным. Поправил, запустил компиляцию, пошел читать рсдн.
Re[17]: А С++ то схлопывается...
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 04.11.19 18:13
Оценка:
Здравствуйте, B0FEE664, Вы писали:

Pzz>>Потому что у меня есть, например, объект, в который можно писать. И есть, например, другой объект, который умеет писать в объект, в который можно писать. И мне сразу становится все равно, куда писать, в файл на диске, в сетевой сокет или в буфер в памяти.


BFE>Всё это хорошо, только вот на практике, ещё на этапе составления спецификации известно что, куда и с какой скорость писать, поэтому такая потребность в абстрагировании оказывается излишней.


И? Надо писать и COM-порт и на флешку.
А еще я хочу, чтобы тот же код работал в утилите на компе, и там уже, куда писать, определяется в рантайме
Маньяк Робокряк колесит по городу
Отредактировано 04.11.2019 21:24 Marty . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.