Pull to refresh
-1
0
Алексей @Tantrido

Старший программист C++/Qt/C#/.Net/Node.js

Send message

Здорово! Молодцы! Жаль, что пока для западных ВКС приходится софт на Qt делать, потому что в РФ удалёнки почти нет и зп ниже плинтуса. С гораздо большей радостью делал бы софт для отечественной оборонки!

При использовании Deno разработчик больше не привязан к NPM.

И где же здесь удобство?! Если у пакета сотни зависимостей — все прописывать в import?!


В Deno можно использовать await где угодно, организуя таким образом ожидание поступления каких-нибудь результатов. Помещать await-конструкции в async-функции необязательно.

А вот это очень полезно!

Итак, «Прасид Пай, Питер Абрахам: Реактивное программирование на С++». 323

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

Бонусом идут описанные относительно простым языком нововведения C++17, C++14, C++11.

Вот за это спасибо: часто нужно простым и понятным языком.


Тоже на Qt сижу с 2002-го где-то :)

Ну у WASM-а скорость уже будет сравнима с Java или C#, до C++ всё равно будет недотягивать.

булка — это что в данном случае?

Ну дык Qt туда и смотрит: https://doc.qt.io/qt-5/wasm.html

Или например тредпул который берет раннаблы с булкой «надо ли удалять раннабл» (autoDelete), что приводит к рейсу, который описан в документации (кек). А всего-то надо передавать шаред_птр на раннабл — и булка не нужна и рейс уходит.

А можно по-русски пожалуйста и с примером в целях повышения образованности? :)

можно было

Но ведь не сделано, правда? :) Или вы предлагаете аналог Qt с нуля написать?! :)

Qt 5 вышел в 2012 году, когда этих всех плюшек ещё не было, а начали его делать ещё раньше. По ходу дела так серьёзно менять API они не могли. В 6-ке уже можно будет: https://habr.com/ru/post/501798/?reply_to=21613662#comment_21613378

Благодарю! Будем разбираться.


А вот мой код, который я напишу там-то (в executor-e) или тут-то (в коллбеке then() ) или еще где-то (например, в Promise.resolve()) — как он будет выполняться в уже имеющейся системе действий, которые скрыты от ваших глаз под капотом движка JS?

Вот насколько же красиво сделали в C# — запустил


await Task.Run( () => { // функция-исполнитель (executor) }


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

Ну кстати в теории же html + js по такой же схеме работают как и qml + js. И там и там язык разметки плюс клей из js.

"В теории", а на практике, когда скорости JS начинает не хватать — переносишь логику в C++ и всё начинает летать на порядок быстрее — проверял. Ну и "разметка" в QML — это нативные C++ объекты QML Items с аппаратным ускорением, так что они тоже сильно быстрее HTML.

Поэтому по моему лучше форк (тем более, если KDAB готов вписаться), чем полных отказ от Qt и переход на Web, что есть полнейший бред для многих задач!

  1. UI, вычисления у нас конечно в отдельном потоке.
  2. Конечно: см. пост выше: Java была в 2-3 медленее на моих задачах
  3. Большинство приложений, где используется Qt: https://en.wikipedia.org/wiki/Qt_(software)
  4. Статья выше — это мусор или ты хочешь сказать, что JVM или HTML5 будут работать быстрее нативного кода C++/Qt? О чём здесь речь вообще?! Какие тебе цифры надо?

Что ты называешь "адеватным" сообществом? Ты хочешь сказать, что Java будет быстрее C++?! Даже комментаторы там признают, что C++ производительнее. Подтверждаю на собственном опыте: когда-то хотел сделать программу на Java но UI и расчёт ИНС тормозил на ней жутко — в 2-3 раза (хотя может надо было наплевать с прицелом на будущие перспективы и уровень зп ;) ) — сделал на C++/Qt.


С видео о HTML5 в комментариях и лайках вообще ни у кого вопросов не возникло. Чтобы спорить здесь надо быть полным неадекватом.

Ну спасибо! Поглядим подробнее на промисы. Вкупе с данной статьёй может сделать предмет понятным: https://habr.com/ru/post/479062/


Мы видим Promise в списке микрозадач. Когда Promise выполняется и вызывается метод then(), catch() или finally(), функция обратного вызова с методом добавляется в очередь микрозадач. Это означает, что коллбэк с методом не выполняется немедленно, что делает JS код асинхронным.

Т.е. Promise автоматом делает ЛЮБОЙ код асинхронным? Или без асинхронного вызова типа setTimeout() всё равно никакой асинхронности не будет?!


Т.е. функция-исполнитель ниже всегда будет асинхронной:


let promise = new Promise(function(resolve, reject) {
  // функция-исполнитель (executor)
});

Или в неё нужно добавить что-то типа setTimeout():


let promise = new Promise(function(resolve, reject) {
  // эта функция выполнится автоматически, при вызове new Promise

  // через 1 секунду сигнализировать, что задача выполнена с результатом "done"
  setTimeout(() => resolve("done"), 1000);
});

чтобы она была асинхронной?

Который жутко тормозит в сравнении с C++/Qt/QML.


Qt vs. JavaFX: https://www.youtube.com/watch?v=Kh6K-yEp_JY


HTML5 vs Qt: https://www.youtube.com/watch?v=Z4CwVN9RRbE


Посему для большинства приложений, где используется Qt, где нужна скорость или есть тяжёлые вычисления и нужна высокая скорость передачи данных ни Web ни Java ни вариант. Хотя Java много лучше будет конечно.

Qt очень редко нужен под Windows, чуть чаще под Mac и практически никогда под Linux.

Очень спорное утверждение: как раз чаще всего на Линуксе — это и IoT, и embedded (что чаще всего) и Qt Automotive. Про Андроид вообще молчу: количество сильно растёт. Все проекты, на которых я работал на Qt (медицина, инжернерно-технические, управление временем и т.п.) были кросс-платформенные. Вообще отказ от Qt был бы катастрофой и замена его на Web или C# в большинстве проектов просто нереальна!!! Вот например в таких: https://github.com/mavlink/qgroundcontrol/ Это бред!

К сожалению, Qt всё дальше отстает от апстрима С++.

Ну как раз апстрим взял то, что в Qt было очень давно: variant, future, thread, smart-pointers и многое другое.


На дворе 2к20й а людям всё ещё надо доказывать что smart-pointer'ы это хорошо и правильно (и нет, в Qt6 их не будет, будем как в 90х делать parent-child на raw-поинтерах).

QPointer, QAtomicPointer, QSharedPointer and QWeakPointer — не то?! См. вики: https://wiki.qt.io/Smart_Pointers. Появились гораздо раньше, чем аналоги в C++!

Они ещё немного подумают и добавят и поля ;) и назовут это новой "революционной" возможностью C# 9 или 10.

В C# 8 появилась возможность реализации члена интерфейса по умолчанию:

Наконец-то, давно пора!


Интерфейсы могут содержать виртуальные члены

Ну вот и пришли к тому, что давно было в абстрактных классах C++. И стоило велосипед под названием "интерфейсы" изобретать?!

Information

Rating
Does not participate
Registered
Activity