ivandao, ну, вы действительно задали дурной вопрос. Технологии, на которые завязана такая доля рынка, развиваются отнюдь не по воле разработчиков и даже их работодателя. Вспомните хотя бы, как хозяин Джавы попытался диктовать тому же Гуглу условия насчет ее использования в Андроиде.
ivandao, ВНЕЗАПНО!
Наиболее распространенный язык, оказывается, развивается при активном участии тех, кто его так распространил. Это сенсация, я считаю. Даже интересно, какие выводы вы можете теперь сделать по его дальнейшей судьбе. Наверное, рискнете предположить, что его будут и дальше повсеместно использовать...
ivandao, вот только это ответ не на вопрос "как развивается язык, куда движется и чьи интересы обслуживает".
И ответ, несмотря на кажущуюся четкость и однозначность, может в одночасье стать неверным, как я уже указал выше.
ivandao, если завтра этот создатель возьмет и не договорится о дальнейших планах, например, с Гуглем - появится второй репозиторий с совсем другим человеком во главе. И разработка продолжится в том ключе, который больше устраивает тех, кто двигает рынок. Оставив того очень важного человека, которого вы увидели аж в Википедии, за бортом. Чтобы это понять, вам даже подрастать, думаю, не требуется.
На вики "этот человек" в двух соседних строчках написан по-разному.
Такой уж это источник ;)
В целом ваш вопрос здорово напоминает дотошный интерес к тому, на машине какой марки возят министра иностранных дел, чтобы достичь понимания внешней политики.
Вообще-то уже со времен "Собора и Базара" понятие "кто разрабатывает открытый код" не имеет четкого и однозначного ответа. Даже если кажется, что имеет.
Мне кажется, что это все-таки больше про O, чем про L.
Фактически, LSP здесь выворачивается наизнанку: чтобы обеспечить вариативность наследников, создается максимально абстрактный класс, описывающий все, что может понадобиться наследникам, в самой обобщенной форме.
Постоянно устонавливается программа calib battery, которая мне даром не нужна, на неё антивирусы не орут, но она мне просто не нужна!
А вы уверены, что она не нужна вашей батарейке для того, чтобы не взорваться в вашем кармане?
Этот ламерский вопль наводит на мысли, что вы вообще не очень понимаете, что сами же сделали со своим устройством. Ну, покажите его разбирающемуся человеку...
Роман, на самом деле, как минимум одна проблема требует как минимум одного яблочного устройства посвежее - недавно введенная двухфакторная авторизация разработчика, без которой не подпишешь приложение - и которая не работает в виртуалке.
vpman, нарушена инкапсуляция - внешний код слишком много знает о внутреннем.
Таким образом, в контракт базового класса неявно вписано требование возвращать этим методом именно HTML, причем с определенными тегами. Как следствие - переделка нарушает LSP.
А вот если вы часть теста завернете в сам класс, создав у него изменяемый метод проверки корректности отчета, то потроха родителя перестанут торчать наружу, ваши тесты будут только вызывать child->IsValidReport(child->MakeReport()), и вы не будете нарушать LSP никакими переделками форматов.
Элементарно: изменение методов в наследниках уточняет специализацию класса, а не противоречит контракту базового класса.
Если у вас наследники делают совершенно не то, на что подписан родитель - это у вас противоречие, а не у Лисков ;)
YzxI, так вы и используете шаблон. В дереве.
А подставляться в этот шаблон (и собираться в это дерево, и выводиться своей функцией) будут ваши классы, каждый из которых имеет метод show. Как раз наследование для шаблонов не требуется.
У вас в шаблоне не хватает описания структуры, в которой хранится дерево, и ее перебора для вывода каждого элемента. И то, и другое будет шаблонным.
maaGames, писать свою Виндоус уже не требуется - над этим хорошо поработали Ричард и Линус ;)
Я все-таки очень подозреваю, что попытки внедрения Qt усложнят вам жизнь настолько, что нелюбовь к MFC будет незначительной мелочью на этом фоне. Не говоря уже о том, что для решения сопутствующих проблем понадобится глубокое копание и изрядный профессионализм в смежных вопросах.
maaGames, но вы хотите, чтобы приложение, думая, что обращается к CDialog, обращалось к вашему диалогу на Qt. Но если оно будет обращаться не просто к WinAPI-функциям, а именно к функциям CDialog, передавая в них HWND сформированного вами окошка - структуры данных не сойдутся и все грохнется.
Таким образом, вам нужно сохранить CDialog, с которым будет общаться приложение, и прилепить поверх него свой Qt-диалог, а также наладить передачу изменений между ними... в общем, написать программу заново с нуля может оказаться проще.
maaGames, HWND - это просто номер окошка в гуях. Чтобы у вас заработало Qt-окошко, вам нужно при его создании подгрузить библиотеки Qt и инициализировать всю систему событий Qt. Ваше же приложение, судя по описанию, занимается только CDialog и ничего подобного, естественно, не сделает. Соответственно, вы просто получите пустое окно.
Если у вас приложение - это просто интерфейс, вам совершенно незачем использовать для него что бы то ни было, кроме ДжаваСкрипта.
Нативные языки нужны для серьезной работы ПОД интерфейсом. Которая при реализации на JS будет традиционно тормозить, жрать память и пр.
maaGames, и как вы себе представляете прилепить на это Кьют? Кто вообще будет его дергать, если программа работает исключительно с WinAPI-вызовами к MFC-диалогу?