|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
maytonИ так по 5 лет учатся на синьоров и еще 10 лет работают и все равно ошибки делают. Вот поэтому я и не заморачиваюсь на "макросы v2 aka templates" и пишу на "Си с объектами", добивая недостающее дизайном. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 18:49 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravДавайте напишем на std::function и сравним. Там всё будет непохоже. Что, разница действительно настолько велика? Ну ничего, к какому-нибудь С++22 комитет таки сделает самоочевидный шаг от "pointer to member" к "pointer to member of object". Лень компилировать но быстрее уж так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
И да, это совершенно не похоже на код Борланда. Это больше похоже на мой класс выше: Command. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:01 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Ну, если в Qt или шарпе, событие в потоке отправил и голова не болит. Всё будет разрулено. То в плюсах еще попотеть надо). Получается что язык не приспособлен для некоторых вещей. Или они делаются через страшные танталовы муки. Кстати забавный факт. Каждый хочет написать свою нетленку в виде фреймворка который аки золотая пуля бъет в цель и решает все текущие проблемы. Но что-то я не видел чтоб эта нетленка в гитхабе выходила хотя-бы на уровень выше 100 форков или столько же использований. Qt - отдельная тема. Он создавался как коммерческий продукт. Стало-быть была железная мотивация к тому чтобы сорцы хотя-бы тестами покрыть. А это немаловажно. Остальная нетленка - остается уделом гаражных поделий. Мне кажется основная беда - мышление. Оно языково-ориентировано. Подобно тому как "плотник думает топором", программист думает на С++. И здесь возникают самые сложные ограничители. Я-бы сказал на уровне психологии чем технологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:04 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
maytonПолучается что язык не приспособлен для некоторых вещей. Или они делаются через страшные танталовы муки. При чём тут язык-то? Гордость от того, что кто-то внезапно изобрёл очередь сообщений, а потом спрятал и её и цикл её обработки под капот фреймворка, конечно, никто не будет осуждать, но и хлопать в ладоши на это "мама, я покакал" тоже как-то не тянет. И, внезапно, будет ли это называться Qt, VCL или WinForms - тоже совершенно без разницы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:12 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton Мне кажется основная беда - мышление. Оно языково-ориентировано. Подобно тому как "плотник думает топором", программист думает на С++. И здесь возникают самые сложные ограничители. Я-бы сказал на уровне психологии чем технологии. Интересно было бы увидеть какое-то приземлённое сравнение-пример. Вот такая-то проблема. На Яве программист решает так-то, мыслит в ООП стиле. А на С++ программист начинает ипаться с языком и не может выпустить релиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:25 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Гордость от того, что кто-то внезапно изобрёл очередь сообщений, а потом спрятал и её и цикл её обработки под капот фреймворка, конечно, никто не будет осуждать, но и хлопать в ладоши на это "мама, я покакал" тоже как-то не тянет. в C++ много чего изобретать даже не надо, уже всё есть petrav Вот такая-то проблема. На Яве программист решает так-то, мыслит в ООП стиле. А на С++ программист начинает ипаться с языком и не может выпустить релиз. можно ещё вспомнить PHP, Haskell, Python :) "мыслить в ООП стиле" - стоит весьма существенных байтов памяти и тактов процессора каждому своё ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:17 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton Будь я дотнетчиком я-бы не выёживался и спокойно был плыл в фарватере их разработок. Язык есть. Поддержка есть. Сообщество наверняка есть. Афтор бери и кодь свои формочки! mayton Я за последние лет 10 видел только одно убедительное обоснование писать UI на С++. Это если геймдевом заниматься. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:32 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
maytonМне кажется основная беда - мышление. Оно языково-ориентировано. Подобно тому как "плотник думает топором", программист думает на С++. Есть такое дело. С одной стороны, есть фраза что опытному прогеру пофиг на чем писать. С другой стороны, паттерны решения Button.onClick = binding везде разные) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 04:24 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
petrav mayton Мне кажется основная беда - мышление. Оно языково-ориентировано. Подобно тому как "плотник думает топором", программист думает на С++. И здесь возникают самые сложные ограничители. Я-бы сказал на уровне психологии чем технологии. Интересно было бы увидеть какое-то приземлённое сравнение-пример. Вот такая-то проблема. На Яве программист решает так-то, мыслит в ООП стиле. А на С++ программист начинает ипаться с языком и не может выпустить релиз. Мне просто бесконечно жаль сишников которые тратят уйму времени на псевдо-архитектурные вопросы. Как-то кодовые страницы и управление памятью. А когда доходит дело до шаблонов проектирования - у сишника висит чугунная гиря на ноге. Это менеджмент памятью. Сишник постоянно думает о том как он уберет память после того как реализация шаблона будет не нужна. Это - замедляет процесс архитектурирования. Сишник как-бы боится использовать шаблон. Он боится утратить контроль. Но ребята как-же реализовывать пулы, синглтоны и внедрение зависимостей? Некоторые утилитарные вещи, такие как файловый итератор по дереву каталогов - в других языках очень легко (за считанные минуты собираются в готовые решения), в С++ - вызывают мучения интеллегенстского толка. Кажется что девелопер уже из принципа хочет это сделать так хотя на перформанс всего приложения в целом оно не влияет аж никак. Посмотрите в смежном топике мы сломали сколько копий и исписали столько бумаги просто чтобы ОБОЙТИ гребаный каталог файлов! И мы еще пол-дня думали какого размера буфер выделить. Это в 21 веке. В веке ИИ у нас осталась проблема времен первых ЭВМ. Что не могли авто-детектировать размер по потребности? Если не могли - то почему? Почему только я спрашиваю подобные вопросы. У вас у самих таких вопросов не возникает? Нет я не ругаю С++. Я спрашиваю почему сапожник без сапог? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 11:56 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton ....Я спрашиваю почему сапожник без сапог? имхо - это не сапожник без сапог, а попытка зная язык - решать задачи. хотя изначально первична ОО технология, а уж каким языком изображать - дело 25. и это кстати не только си плас плас. этим грешат практически все разрабы косящие под ОО рельсы. Куда не глянешь - везде азм в профиль, и вот такие вопросы с форума = как яйцо узнает форму лотка в котором оно существует... (круглый) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:39 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton Нет я не ругаю С++. Я спрашиваю почему сапожник без сапог? в смежном топике вы обход делали на C... в 21м веке на C++ нет либ для обхода каталога файлов? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:59 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
Сапожник без сапог. Я говорю не о либах а о практике применения либ. В форуме я ее (практику не увидел). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:05 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
maytonЯ говорю не о либах а о практике применения либ. Ну давай посмотрим... В RT11 не было библиотеки чтения каталогов. В Linux она есть и ею активно пользуются. По-моему практика налицо. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:17 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton Сапожник без сапог. Я говорю не о либах а о практике применения либ. В форуме я ее (практику не увидел). а мне показалось, там человек учился программировать... писал с нуля своё в целом спад кол-ва mystring.h на лицо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:50 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton А мне кажется что тема - еще одно мета-программирование на С++. Интересно было бы узнать что такое «мета-программирование на С++»? Что вы под этим понимаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 13:55 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
petrav mayton А мне кажется что тема - еще одно мета-программирование на С++. Интересно было бы узнать что такое «мета-программирование на С++»? Что вы под этим понимаете? Ну это когда в каком-то языке X у тебя есть косвенный способ воздействия на результирующий код. Такая себе трансформация кода ДО компилляции. Например в сях есть макро-процессор. И процессор шаблонов которые решает какой вид функции и с какими типами ему собрать. В Java есть процессор аннотаций. Тоже трансформирует исходник в другой код. Это кстати основная тема срачей в Java. Именно во что превратит код та или иная аннотация в совокупности с 1 или более чем одним процессингом этих аннотаций. В Lisp тоже есть своя тема макросов. Но до этого левла я еще не дошел. Просто вы так долго программируете на сях что не замечаете этого разделения на слои. А ведь слой макро-процессинга можно усилить. И создать еще более ... хитрый язык что-ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 14:04 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
maytonА ведь слой макро-процессинга можно усилить. И создать еще более ... хитрый язык что-ли. Раз уж речь зашла, можно ли так извратиться с шаблонами, чтобы ими создавался наследник заранее неизвестного класса-параметра со всеми методами, переопределёнными по определённому шаблону? То есть, например: Код: sql 1. 2. 3. 4. 5.
И темплейт (например Implement<Base>) на выходе автоматически имеет Код: sql 1. 2. 3. 4. 5.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 14:12 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton Просто вы так долго программируете на сях что не замечаете этого разделения на слои. А ведь слой макро-процессинга можно усилить. И создать еще более ... хитрый язык что-ли. Ну вот тут момент есть: как отличить программирование на шаблонах от шаблонного мета-программирования? Если это одно и тоже, то это как-то не очень интересно и не круто выходит. :) В этом загвоздка! Я слышал два прочтения понятия мета-программирования: - Программирование не в термина данных, а в терминах данных о данных. - Программа порождает другую программу (кодогенератором или C++ шаблонами). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 14:18 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
petrav - Программирование не в термина данных, а в терминах данных о данных. - Программа порождает другую программу (кодогенератором или C++ шаблонами). Я-бы различал мета-программирование и кодо-генерацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 15:05 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonА ведь слой макро-процессинга можно усилить. И создать еще более ... хитрый язык что-ли. Раз уж речь зашла, можно ли так извратиться с шаблонами, чтобы ими создавался наследник заранее неизвестного класса-параметра со всеми методами, переопределёнными по определённому шаблону? То есть, например: Код: sql 1. 2. 3. 4. 5.
И темплейт (например Implement<Base>) на выходе автоматически имеет Код: sql 1. 2. 3. 4. 5.
Не представляю зачем такое было бы нужно. А вам какую задачу нужно решить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 16:14 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
petravА вам какую задачу нужно решить? Есть API на абстрактных классах. Требуется сделать обёртку к нему, каждый метод которого вызывает соответствующий метод предка, проверяет код возврата и выбрасывает исключение при необходимости. Можно, конечно, это написать и ручками, но а) лень, б) придётся менять код в нескольких местах при изменении базового API. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 16:22 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
Есть такая штука. AOP. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 16:39 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
Под Java мы когда-то юзали Aspect-J, и похоже в сях есть ее брат-близнец https://www.aspectc.org/Documentation.php ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 23:17 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton Есть такая штука. AOP. А в плюсы не веб язык. авторПри работе над кодом со сквозной функциональностью, возникают проблемы, связанные с ограничением модульности. Поскольку «поперечное» поведение реализуется разрозненно, разработчики находят такое поведение затруднительным в осмысливании, реализации и изменении. Код для ведения журналов, например, переплетается с кодом, отвечающим в основном за что-либо другое. Вот эта проблема из за которой появился AOP не так часто встречается в десктопе. Поэтому java и ушел в метапрограммирование, спринг и конфигурастов программистов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 06:08 |
|
connect(): слоты и сигналы
|
|||
---|---|---|---|
#18+
mayton, авторПримерами сквозной функциональности, как мы уже видели выше, могут служить: логирование, обработка транзакций, обработка ошибок, авторизация и проверка прав, кэширование, элементы контрактного программирования. https://habr.com/ru/post/114649/ Вот эти проблемы в основном построения веб приложения. Не пишут в java уже давно ClassA a = new ClassA() AOP кругом))) и 200 аннотаций над методом))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 06:25 |
|
|
start [/forum/topic.php?fid=57&msg=39999783&tid=2017330]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 157ms |
0 / 0 |