Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 1 / 0
Регистрация: 29.01.2018
Сообщений: 14

Обожаю фреймворк Qt, а продукция Microsoft - отстой

24.09.2018, 07:12. Показов 6003. Ответов 140
Метки qt (Все метки)

Студворк — интернет-сервис помощи студентам
Я люблю Qt , ибо он действительно кроссплатформеный. После Qt-creator IDE ,
MSVS кажеться полнейшем г... где мильон абсолютно не нужных функций. Короче MSVS это г... такойже как и Windows , и вообще в Майкрософт работают больные на голову люди, про что говорит их ОС и вся их продукция .
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2018, 07:12
Ответы с готовыми решениями:

Гусеницы - отстой?
Потихоньку и у меня зреет мысль о построении робота. Купил себе в качестве будущей платформы танк, вчера пришел заказ по почте. Ну и вчера...

КВН - полный отстой?
Неужели этим ребятам, которые выступают в КВН, самим не противно? Каждый раз когда пытаюсь посмотреть эту передачу уже в записи на Ютюбе -...

Ваш язык программирования - отстой
Ваш язык программирования - отстой

140
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
02.10.2018, 17:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Что-то конкретное можете вспомнить?
Эх, поверьте, многое было из багов. Такие мелкие но неприятные вещи. При работе с кодом, с текстом. например вспоминаю: не работает поиск по файлам, хотя заявлено. Баг в поиске по открытым файлам, забыл уже какой. При работе с регекспами что-то было.
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,879
02.10.2018, 17:50
CoderHuligan, понятно. "Забыл какой" и "что-то было". Так и скажите уже: "Раз оно написано на С++ и использует MFC, а не голое WinAPI, то автоматически глючное дерьмо. Доказательств не будет."
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
02.10.2018, 17:57
Цитата Сообщение от Usaga Посмотреть сообщение
Доказательств не будет
Если ещё раз что-то встречу, то обязательно напишу об этом. Специально буду юзать notepad++. Поверьте: многое уже не помню из мелочей.
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,879
02.10.2018, 18:00
CoderHuligan, мне не нужно об этом писать. Лучше тикет заведите на странице их репозитория. От этого больше будет пользы, чем от доказывания недоказуемого тем, кто понимает, что аргументов у вас нет.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
02.10.2018, 18:03
Цитата Сообщение от Usaga Посмотреть сообщение
Лучше тикет заведите на странице их репозитория.
Кстати там около 5000 зафиксированных багов
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,879
02.10.2018, 18:20
CoderHuligan, ага, нормальная ситуация для популярного приложения.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
02.10.2018, 18:50
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А юзал его поболее вашего, сайт на нём делал, и уж поверьте
нет, не верю. вы не можете знать насколько интенсивно я его использую.


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

Цитата Сообщение от CoderHuligan Посмотреть сообщение
всего не упомнишь.
особенно, если вспоминать нечего.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
03.10.2018, 11:18
Цитата Сообщение от hoggy Посмотреть сообщение
особенно, если вспоминать нечего.
Успокойтесь уже, нарушитель))
Понятно, что религия.. Я всё понимаю, сам такой..
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
03.10.2018, 12:04
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Понятно, что религия.. Я всё понимаю, сам такой..
вы по себе других не судите.

в отличие от вас, я не религиозен. и я не балаболка.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
03.10.2018, 12:57
Цитата Сообщение от hoggy Посмотреть сообщение
вы по себе других не судите.
Я сужу не по себе, а по тому что вижу.
Цитата Сообщение от hoggy Посмотреть сообщение
в отличие от вас, я не религиозен. и я не балаболка.
То есть переход на личности это по вашему является достойной аргументацией?
Ваша любимая парадигма это священная корова, которой вы покланяетесь. Поэтому любая её критика воспринимается в штыки, а людей обвиняют бог знает в чём.. К сожалению она не имеет ничего общего с реальной жизнью, с настоящим кодингом больших проектов. Это только в ваших учебниках всё гладко и мягко стелется, а на практике одни проблемы, куда не кинь взгляд.. У вас теоретиков-балаболок больше, чем самих программистов.. Да. И задачки из школьной программы прокатывают только потому, что они школьные.. А если проект по крупнее, то приходится "использовать мультипарадигменность с++".. Отступая от своей тотемной священной коровы, и молясь другим богам, более вменяемым и отзывчивым.. Так-то вот.. Ваши теоретики пороха не нюхали, и не знают что нужно потребителю, и команде поддержки.. Абсолютно коммерческий проект, с самого начала, для качания денег, бабла.. Тупого качания.. Докачались до того, что наступает кризис всей отрасли, которого только слепой не видит.. Коммерции выгодно производить быстрее и дешевле.. Обьекты вам это дали.. Вместо настоящей еды, натуральной, без химии, вы предложили поглощать подкрашенные суррогаты, от которых самое лучшее что можно получить - проблемы с желудком, а не здоровье.. Вот и получили.
Я пришёл самостоятельно к своему собственному стилю, который естественно не стоит на месте, а совершенствуется
Он более похож на data-driven programming с элементами автоматной парадигмы. В нём первичны данные. Всё управляется только данными: функции вызываются через данные, а не напрямую. Логика обрабатывается в соответствии с данными, а не жёстко в коде. Это даёт большую гибкость. Документация на программу первична. В ней всё прописано: все структуры данных, все массивы, списки и пр.
Таким образом данные это некое знание, или память системы. ИИ должен включать в себя: логическую часть и память. Без памяти человек считается неполноценным, больным. Программа без собственной памяти - глупа. А так, кстати и происходит сейчас: логика есть(и то хромает), а памяти нет. Память это не то, чтобы хранить настройки пользователя или историю его посещений и действий, отнюдь. Память это знание системы о себе самой, внутри самой себя.. Функции обращаются не к функциям, чтобы приказать им сделать то, или это, а обращаются к памяти системы через служебную функцию-посредник. Система сначала вспоминает чем владеет, а затем использует вспоминаемое по прямому назначению. Преимущества очевидны: можно всё изменить через данные. Можно изменить представление. Можно изменить логику работы. Причём совершенно не трогая существующий код. Такую систему можно откатить на шаг назад, на два шага, на три и т. д.
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,879
03.10.2018, 13:13
CoderHuligan, в течение общения в этой ветке, мы убедились, что ваша критика не подкреплена никакой аргументацией. Совсем. Т.е. есть ваше личное субъективное мнение основанное на каких-то неосознанных вещах. Что не так в "критикуемых" вами вещах вы связно объяснить не можете. Только лепет детский, да обрывки чуши.

А это и есть разновидность религиозного фанатизма, когда плохо потому, что гладиолус. Даже бедный Notepad++ глючное барахло, но что в нём глючного вы не помните и назвать не можете.

Упорство + нулевая аргументация = обвинения в балабольстве. Я не люблю переходить на личности, но считаю данное обвинение заслуженным.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
03.10.2018, 13:37
Цитата Сообщение от Usaga Посмотреть сообщение
в течение общения в этой ветке, мы убедились, что ваша критика не подкреплена никакой аргументацией.
То же самое можно сказать и об оппонентах. Причём они не аргументами плюются, а личностями. Для них все мыслящие иначе дураки, дебилы.. разговора не получится. Какая аргументация?
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,879
03.10.2018, 13:59
CoderHuligan, э, не. Не надо переводить. Обвинитель тут вы. От вас и должна идти аргументация. Чёткая и конкретная. А всё, что прозвучало закончилось фразами "я не помню" и "я сам этим не пользуюсь". Слабовато.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
03.10.2018, 14:25
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я сужу не по себе, а по тому что вижу.
человек, вы выше писали:
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Я всё понимаю, сам такой..
Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть переход на личности это по вашему является достойной аргументацией?
мне глубоко фиолетова ваша личность.
я лишь ясным образом дал вам понять, что я не такой,
как вы:
Цитата Сообщение от hoggy Посмотреть сообщение
в отличие от вас, я не религиозен. и я не балаболка.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ваша любимая парадигма это священная корова, которой вы покланяетесь.
плюс ко всему прочему, вы ещё и тупой.
потому что я вам уже несколько раз сообщил,
что мультипарадигменный, и ооп для меня - всего лишь одна из многих.
но вы как упертый баран, словно мантру продолжаете одно и тоже,
как заевшая пластинка про "священную корову".

Цитата Сообщение от CoderHuligan Посмотреть сообщение
любая её критика воспринимается в штыки
какая критика? человек, вы о чем вообще?
от вас не было ни одного критического замечания.
ни одного конкретного аргумента.
вообще ничего конкретного.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это только в ваших учебниках
в каких наших? человек, хватит нести бред.

дальше я этот бред не читал.

ощущение, что тест писал какой то сатанист в бреду
с параноидальной шизофренией.


в общем, здесь видимо так же мимо.
не судьба похоже мне узнать хотя бы один единственный аргумент критики ооп.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,677
Записей в блоге: 9
03.10.2018, 19:13
Цитата Сообщение от hoggy Посмотреть сообщение
не судьба похоже мне узнать хотя бы один единственный аргумент критики ооп.
Вообще то я не против ооп и сам им пользуюсь. Однако, минусы есть.
Предположим мы делаем программку в которой пользователи чего то там делают с фигурками.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
        abstract class Figure // Некая фигура 
        {
            public abstract void Draw(); // отрисовать фигуру
            public abstract Rectangle GetDescribedRectangle(); // возвратить прямоугольник описанный вокруг фигуры
            public abstract bool Contains(Point p); // Находится ли заданная точка внутри фигуры.
        }
 
        class Rect : Figure // Прямоугольник со сторонами параллельными осям координат
        {
            Rectangle rect;
            public Rect(Rectangle rect)
            {this.rect=rect; }
            public override void Draw()
            {
                // рисуем прямоугольник
            }
            public override Rectangle GetDescribedRectangle() // возвратить прямоугольник описанный вокруг фигуры
            {
                return rect;
            }
            public override bool Contains(Point p)
            {
                return rect.Contains(p);
            }
 
        }
 
        class RoundRect : Rect // Прямоугольник со сторонами параллельными осям координат и закруглёнными краями
        {
            private int radius;
            public RoundRect(Rectangle rect, int radius)
                : base(rect)
            { this.radius = radius; }
 
            public override void Draw()
            {
                // рисуем прямоугольник c закруглёнными краями
            }
        }
Конечно, в реальной задаче у классов будет ещё туча членов, но для сути годится.
Програмку потестировали, при этом потыкали и в RoundRect, как водится, ближе к серёдке, программка реагировала правильно, делала что должно когда тыкнули на эту фигуру. А в продакшене юзер ткнул у края закругления, но вне RoundRect и выяснилось что забыли переопределить Contains для RoundRect. Предполагается ПО УМОЛЧАНИЮ что непереопределённые функции будут те же что и у базового класса. А это умолчание - источник ошибок. Т.е. зло в самом принципе наследования. Для предотвращения таких ошибок на C# можно сделать вместо класса Figure интерфейс, RoundRect не наследовать от Rect (и вообще не наследовать никакие фигуры), зато все фигуры должны поддерживать один интерфейс для полиморфизма. RoundRect может иметь поле/проперть с типом Rect, то есть не наследование, а аггрегация, вложение. Тогда все функции нужно определить в каждом классе, во многих случаях, (что соответствует непереопределяемым функциям базового класса) тривиально.
Я не утверждаю что на C# так нужно писать. Просто пример.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
03.10.2018, 19:34
Цитата Сообщение от Curry Посмотреть сообщение
Однако, минусы есть.
вы описали не минус ооп, а глупость разработчика.

1.
интерфейс с поведением по умолчанию обязан быть корректным для любого наследника.

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

3.
в приведенном вами примере уже есть ярко выраженный инженерный просчет.
а именно: наследник RoundRect для того и был нужен,
что бы учесть его "загругленные" особенности.
а иначе тупо теряется смысл его существования.

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

вы для чего породили "скругленный" прямоугольник,
если вам не интересна природа его "скругленной" геометрии?

это - бред какой то.


4.
нахрена RoundRect агрегация, в ситуации, когда ярко выражено отношение:
RoundRect является Rect вообще не понятно.

несколько раз перечитывал фрагмент:
Цитата Сообщение от Curry Посмотреть сообщение
Для предотвращения таких ошибок на C# можно сделать вместо класса Figure интерфейс, RoundRect не наследовать от Rect (и вообще не наследовать никакие фигуры), зато все фигуры должны поддерживать один интерфейс для полиморфизма. RoundRect может иметь поле/проперть с типом Rect, то есть не наследование, а аггрегация, вложение. Тогда все функции нужно определить в каждом классе, во многих случаях, (что соответствует непереопределяемым функциям базового класса) тривиально.
вообще не понял: нафиг это нужно? заходить на первый этаж через чердак.


сначала вы привели пример нелепого кейса, когда программист похоже сам не знает, что ему нужно.
а затем привели такой же нелепый контр-пример с нафиг не упавшей агрегацией.

вот нафига тут может быть нужна агрегация?



ваш минус - это не критика ооп.
это пример того, что бывает, когда программист сам не знает, что делает, и зачем ему это нужно.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,677
Записей в блоге: 9
03.10.2018, 20:49
Цитата Сообщение от hoggy Посмотреть сообщение
в приведенном вами примере уже есть ярко выраженный инженерный просчет.
а именно: наследник RoundRect для того и был нужен,
что бы учесть его "загругленные" особенности.
а иначе тупо теряется смысл его существования.
Да, нужно учесть скруглённые особенности. Он наследуется от Rect т.к. GetDescribedRectangle у него тот же, т.е. эта функция правильно используется из базового класса в отличии от Contains. А в настоящей программе может быть ещё 1000 причин их наследовать. Но компилятор не поймёт где правильно использовать функции базового класса, а где нет.
Вам показали пример для объяснения, а не готовую программу.
Цитата Сообщение от hoggy Посмотреть сообщение
вообще не понял: нафиг это нужно?
что бы исключить наследование и ранее описанную опасность ошибки не контролируемой компилятором.
Цитата Сообщение от hoggy Посмотреть сообщение
вообще не понял: нафиг это нужно? заходить на первый этаж через чердак.
Потому что слишком зациклены на ООП. Между тем, в некоторых других языках так и делают. Правда там есть трейты (интерфейсы - частный случай трейтов). То есть в языках где отказались от ООП используют альтернативные возможности.
В данном примере можно использовать просто интерфейс.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
03.10.2018, 22:57
Цитата Сообщение от Curry Посмотреть сообщение
в отличии от Contains.
вот именно, Бро.
у вас есть только одна единственная причина для создания скругленного прямоугольника - для него по другому нужно рассчитывать Contains.
отнаследоваться и забыть об этом - надо быть клиническим идиотом.

Цитата Сообщение от Curry Посмотреть сообщение
что бы исключить наследование и ранее описанную опасность ошибки не контролируемой компилятором.
1.
нафиг исключать наследование там,
где именно наследование является очевидно верным решением?

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

дуракам нет смысла делать защиту от самих себя.

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

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

Цитата Сообщение от Curry Посмотреть сообщение
Потому что слишком зациклены на ООП.
поясните этот момент.

вопрос очень конкретный:
нафига подменять наследование агрегацией тогда,
когда это ведет лишь к усложнению кода?

а то может быть это вы слишком зацикленны на агрегации?

Цитата Сообщение от Curry Посмотреть сообщение
Между тем, в некоторых других языках так и делают.
в каких других языках? как конкретно там делают? показывайте.

остановок "тута" и "здеся" не существует.

Цитата Сообщение от Curry Посмотреть сообщение
Правда там есть трейты (интерфейсы - частный случай трейтов). То есть в языках где отказались от ООП используют альтернативные возможности.
языки, которые используют интерфейсы - уже оопнутые, если чо.

Цитата Сообщение от Curry Посмотреть сообщение
В данном примере можно использовать просто интерфейс.
конечно можно.
вопрос то не в этом.

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

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

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

вот вам пример взаимозаменяемости на языке с++
http://rextester.com/XMDIB34500


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
 
 
struct base
{
    virtual ~base(){}
    virtual void foo() { std::cout << "base\n"; }
};
    
struct heir: base  // <--- вариант с классическим наследованием
{
    virtual void foo() { std::cout << "heir\n"; }
};
 
struct agregate   // <--- вариант с агрегированием
{
    operator base&() { return data; }
    heir data;
};
 
 
void proccess(base& obj)
{
    std::cout << "proccess... ";
    obj.foo();
}
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    heir obj1;
    agregate obj2;
    
    proccess(obj1);
    proccess(obj2);
    
}
Hello, world!
proccess... heir
proccess... heir
здесь мы видим, что функция proccess казалось бы хочет работать с классическим интерфейсом.
что она в общем то и делает.

только в первом случае ей скармливают честного наследника.
а во втором - объект класса, который на самом деле не наследовался ни от каких интерфейсов.
тем не менее, ей была подсунута вот эта вот "базовая" часть класса так,
словно он от неё относледовался.


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

этот пример наглядно иллюстрирует, что с точки зрения низкроуровневой реализации,
между наследованием и агрегацией никакой разницы нет.

всё реальное различие сводится лишь к особенностям синтаксиса того или иного языка,
и его возможностям. может быть не все языки подобно с++ умеют форсить наследование,
через агрегацию. но любой современный промышленный оо-язык всегда можно этому научить.

вопрос лишь в том: зачем это нужно?
зачем делать агрегацию там, где проще сделать обычное наследование?

и опять таки, этот вопрос не имеет никакого отношения к критике ооп.
я мне все ж таки интересно именно про критику ооп,
а не о том, нафига городить огород, дабы дурак себе башку не разбил,
когда будет молиццо.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,677
Записей в блоге: 9
04.10.2018, 00:22
Цитата Сообщение от hoggy Посмотреть сообщение
у вас есть только одна единственная причина для создания скругленного прямоугольника - для него по другому нужно рассчитывать Contains.
Нет, ещё нужно по другому, собственно, отрисовать фигуру.
Цитата Сообщение от hoggy Посмотреть сообщение
отнаследоваться и забыть об этом - надо быть клиническим идиотом.
Люди совершают ошибки. В примере три функции на класс, а в реале будет 33.
Наследование делают в ооп? Делают, это одна из основ его. Может произойти подобная ситуация (забыли переопределить ф-ию?). Заявляют что не ошибаются только совсем начинающие, которые узнали как хэловорд написать.
Цитата Сообщение от hoggy Посмотреть сообщение
нафига подменять наследование агрегацией тогда,
когда это ведет лишь к усложнению кода?
Потому что с одной стороны
Цитата Сообщение от hoggy Посмотреть сообщение
если посмотреть на эту картинку с низкого уровня
(на уровне памяти, когда объект - кусок памяти)
то опять таки, между наследованием и агрегированием разницы никакой нет.
а с другой, избавляемся от наследования данных, заменяя их ничуть не худшей (глядя с низкого уровня) агрегацией.
Цитата Сообщение от hoggy Посмотреть сообщение
в каких других языках?
Например Haskell, Rust. Примеров не будет. Времени нет объяснять как там чего.
Захотите - почитаете учебники.
Хотя, тут я как то извращался изображая ООП в Haskell. В тему и код в статье, и код оппонента предлагающего свой вариант - не ООПешный.
Цитата Сообщение от hoggy Посмотреть сообщение
языки, которые используют интерфейсы - уже оопнутые
Нет если нет наследования.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
04.10.2018, 00:37
Цитата Сообщение от hoggy Посмотреть сообщение
нафиг исключать наследование там,
где именно наследование является очевидно верным решением?
Не является. Почему бы, например, не отнаследовать RoundRect от овала? Кроме contains есть ещё вычисление площади, периметра, объединения, пересечения и перекрытия фигур. Различий больше, чем общих свойств. При агрегировании наличие внутри объекта-прямоугольника — просто деталь реализации, при наследовании эта «деталь» выставлена наружу безо всякой необходимости.

Цитата Сообщение от hoggy Посмотреть сообщение
технически, наследование и агрегация - суть одно и тоже.
Вообще не одно и то же:
1) Агрегирующему объекту может быть доступен только публичный интерфейс агрегируемого, агрегируемый не может ничего знать об агрегирующем: никаких abstract protected методов и полей — меньшая связность.
2) Ссылку на агрегируемый объект внутри агрегирующего можно менять динамически, в рантайме.

А кроме технических деталей агрегирование выражает отношение has-a, а не is-a.

Добавлено через 2 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
языки, которые используют интерфейсы - уже оопнутые, если чо.
А многие говорят, что Go — не оопнутый. А ты как считаешь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2018, 00:37

Круто это либо отстой?
Всем привет, сделал вот такой сервис, который по сути переносит код с контроллера в сервис. Но вот вопрос, насколько это вменяемо? ...

Почему С++ отстой до 2020 года
Это не холиварная тема, здесь мы не спорим, какой язык лучше! Ну что, недавно собирался комитет стандартизации, который обсуждал...

Кабельная продукция, выбор.
Не знал куда написать, решил что тут оно как-то уместнее. Дело в чем. Есть один прибор. Точнее его экспериментальный образец. Собран,...

Продукция-товар не отображаются фотографии
Добрый день форумчане. Добавляю товар в битриксе, прикрепляю фотографию, сохраняю. Не отображается. Сама фотография добавилась, если...

Выпуск нескольких ГП (Готовая Продукция)
Здравствуйте, я хочу создать документ Выпуск ГП и в нем делать выпуски ГП, но есть вопрос как к примеру если я добавляю в табличную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru