Pull to refresh
40
0
Send message

Статью надо было озаглавить: "Всегда делайте getters/setters inline".

Или, что, когда у вас есть указатель на класс, который final, то vtable не нужон. Но тогда вы тему CRTP ни разу не раскрыли. <offtopic> В Расте вообще это просто traits, которые бывают двух типов, а в С++ это превращается в виртуал, или в CRTP.</offtopic>

Что-то про ranges было, но ни разу не упомянули, что они ни в libstdc++, ни в libc++, они не оптимизированы, а делают код, который медленнее, чем старые аналоги, если только это не Range-v3 библиотека. <offtopic> Кстати, C++20 format тоже сосёт, по сравнению с {fmt}.</offtopic>

class IModule : public IWrite, public IRead {};

Ромбовидное наследование? Если приходится так делать, то это сигнал к тому, что надо пересмотреть дизайн.

Статья не полная без std::pmr::...

Kalculator?
Owwrite?
Hello word?

В Ncurses нет виджетов, чтобы начать сразу программировать TUI, т.е. все эти окошечки с бордюрами, прокрутки, всё это самому придётся отрисосывать и события обрабатывать.

Толи дело был Turbo Vision. Сегодня есть современный клон https://github.com/magiblot/tvision

На современном C++ я бы попробовал писать TUI на чём-то, типа https://github.com/ArthurSonzogni/FTXUI

Да, это конкретный API фреймворка DPDK, вот конкретно [ring buffer])https://doc.dpdk.org/guides/prog_guide/ring_lib.html)
Там вся соль в том, чтобы без ioctl(), чтобы всё в user-space отрабатывать и не ходить в ядро.

Хотите ещё быстрее, чем на io_uring? Можно всё прямо в user-space делать на Storage Performance Development Kit SPDK. В режиме poll, драйвер NVMe вам через неблокирующиеся ring buffer будет отдавать в user-space блоки, где можно sched_setaffinity() треды прибить гвоздями к CPU конкретным, и вообще всё будет хорошо с процессорными кэшами.

Крутые дядьки объединяют Data Plane Development Kit DPDK с SPDK для быстрых сетевых хранилищ данных.

В DPDK также сетевая карточка не видна ядру, а через ring buffer пробрасывается в user space, где у вас свой "быстрый" сетевой стек. Одна только структура sk_buff чего стоит, ни в какие кеши не лезет, не то что FreeBSD'шный mbuf простой.

Если на C++ написать constexpr функцию, то даже перебор циклом должен посчитаться во время компиляции. Компилятор просто подставит готовый результат в итоговый print().

C++98 --> C++11--> вот здесь вы не раскрыли тему C++17 std::pmr::... --> C++23
Считайте, что тогда уже появился а-ля std::flat_list ;-)

Вот здесь даже посчитали на сколько какой способ быстрее https://en.cppreference.com/w/cpp/memory/monotonic_buffer_resource

Тема trait не раскрыта. Это сильно похоже на interface в Golang. Только в Go это будет единственный способ полиморфизма, и там это похоже на C++ vtable чем-то, т.е. просто вызвать функцию не получится, надо прыгать ещё через один указатель (cache и branch prediction пострдают).
Тема не раскрыта, потому что в расте trait - это толи C++20 concepts, которые в шаблонах нам дают ту самую утиную типизацию (а значит компилятор может напрямую вызывать функции), или тупо базовый интерфейсный класс, с виртуальными функциями (и виртуальным деструктором). Я бы прогулил быстрее, чем писал, но друг ещё кому-то интересно тоже.

Я был слегка удивлён, когда просто import мне добавил несколько опций в сommand-line options, и мой --help стал выбавать ещё какую-то хрень, о которой я не ожидал.

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

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

Я за менеджмент отвечу. Например, есть у вас легаси код, и библиотек сишных (плюсовых) разныз, и что вы будите делать в ресте, писать unsafe? В чём тогда безопасный код? А где вы будите нанимать людей? Прям на рынке такие люди есть? Так то на Golang можно за две недели переделать любого, Гуглом проверено, а ты попробуй на Раст переделать? ;-)

Вот вы здесь хихи да хаха, а я, между прочим, в ~98-99ом линуксовую кваку (первую тогда ещё), которая под svga библиотекой, под aalib переиначил, и там даже как-то играть можно было в консоле, только не комильфо конечно, но распознать что куда можно было.

Заголовок должен быть "Aalib на коленке".

The following is server session:

Зачем писать на русском по-английски, если не нейтив? На русском нет артиклей.

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

Ровно также они поступили с C++20 Coroutines. Как бы поддержка в языке есть, а из-коробки не работает, потому что в либси++ не поддерживается.

Вообще, было бы круто, чтобы stdio было такое всё async, но для этого надо поддержку io_uring или в Windows OVERLAPPED использовать. Но было бы вообще здорово, чтобы я писал на C++ не задумываясь, что там, как на std::thread, и где-то пул io-воркеров, где-то нативные вызовы в ОС, даже boost::asio так не умеет!

Сейчас Гугл пилит ещё один язык Carbon- убийца C++ (очередной).

Time to market (TTM) у Go получается короче, чем на C++, проверено сотнями компаний по всему миру. Плюс на С++ программистов надо брать опытных, а то в ноги себе постреляют, а на Go можно бывших PHP'шников конвертировать за две недели. А в C++ вы за две недели PHP'шников не сконвертируете ;-)

Для этого есть Hub Go, а тут сранение ЯП А и Б.

Предлагаю тему. Написать какой-то абстрактный REST сервис на PHP и на Go. Внутри что-то там повычислять, хотя все эти эти сервисы обычно просто в другие сервисы ходят или в БД запросы делают.

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

В чём соль? Что PHP+kphp, что Golang, оба решения нацелены на привлечение бакенд-программистов "средней" ценовой категории, с максимально быстрым time-to-market, чтобы сразу в продакшен.

1
23 ...

Information

Rating
Does not participate
Registered
Activity