Всё это уже было в Симпсонах?

топ 100 блогов nabbla115.10.2019 Мне что-то в последнее время стали на YouTube предлагать доклады с CPPcon. Когда-то я в институте изучал C++, чуть-чуть немножко довелось на нём поковыряться, а по работе имею дело с "чистым" C (для всяких вычислителей), и немножко с программами рабочего места, которые тут были написаны в Borland C++ Builder.

И что-то я немножко в офиге от того, что вижу: вещи, которые Борланд решил ещё тогда, 20 лет назад, только сейчас очень осторожно и с кучей матов пытаются внедрить в стандарт...


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


До сих пор работа со строками вызывает попоболь! Но извольте, в том же Борланде (и Delphi, и C++) была замечательная строка с подсчётом ссылок и Copy-on-Write. В том примере, который докладчик мучает в течение часа, использование старых ANSIstring "в лоб" позволило бы вообще обойтись без выделения памяти! Ну потому как мы передаём лишь указатель, и присваиваем один указатель другому, и пока мы не пытались модифицировать данные, выделять память не требуется - она уже была выделена для всех "литералов". А поставишь аргумент функции const - он и счётчик ссылок не будет лишний раз прибавлять, а в конце функции вычитать - по сути нулевой overhead.

Я так понимаю, std::string некоторое время работал точно так же, но к С++11 их заставили выкинуть оттуда методику Copy-on-Write, т.к в моде стала многопоточность, а значит, надо ставить всякие крит. секции на счётчик ссылок, а это системные вызовы, поэтому нафиг. Не вполне понимаю эту логику - в любом случае "конкурентное" обращение к одной строке, кем-то на запись, кем-то на чтение - это рискованно! Заявили бы очередное UB - и дело с концом...

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


Доклад насчёт того, как бы здорово было бы сделать в C++ хотя бы небольшую рефлексию (reflection, introspection, RTTI), которая позволит легко исполнить сериализацию/десериализацию, Dependency injection, не плодить "фабрики" и т.д. (при этом не закопавшись по уши в темплейтах):


Возражение то же самое: всё это уже было в Борланде :) Весьма специфическая система, изначально заточенная именно под визуальное программирование, но очень мощная! С восстановлением указателей объектов друг на друга, с автоматическим созданием необходимых экземпляров классов "на лету", с преобразованием числовых значений enum в символьные (ровно так, как оно определено в программе), и пр.

Грубо говоря, каждый визуальный компонент был не чем иным, как классом. Определил его, задал как обычно private, protected и public-поля, а потом ещё и published - те, которые должны отображаться в инспекторе объектов, и которые должны сохраняться в файл и загружаться из файла. И когда "кидаешь" на форму всякие кнопочки, поля, вкладки и пр. - это не требовало написания ни одной строки кода! В смысле, что Qt (к примеру) генерится ещё один cpp-файл, где создаваются все компоненты и связываются друг с другом. А здесь создаётся только форма - и тут же загружается из ресурсов. Т.е класс формы ещё не знал, какие именно компоненты на неё "кинут", и где они будут размещены, и как связаны между собой. Всё это делается, по сути, в рантайме - при чтении ресурса он находит имена классов, создаёт соотв. экземпляры, заполняет их нужными значениями, организует их в иерархическую структуру со "слабыми" ссылками между собой (и Toolbar, и ImageList принадлежат форме, но Toolbar содержит указатель на ImageList, который также "восстанавливается" из файла).

Я когда-то игрался с этим делом - реализовывал древовидное Undo с сохранением в файл проекта, и горя не знал :)

Такое ощущение, что история в очередной раз идёт по спирали.

Оставить комментарий

Популярные посты:
sntdpni">sntdpni
sntdpni Из-за листика выглядывает котик от satoimo521
Предыдущие записи блогера :
Архив записей в блогах:
Лань Пин, будущая Цзян Цин (1914-1991) Посмотрев на портреты этой богемной китайской красавицы 1930-х годов, какую область деятельности можно предположить за ней? Едва ли кому-то придёт в голову, что это — политика. Тем более — революция! Тем не менее это именно так... В молодости ...
28 апреля 2021 18:40 Польская шашистка убрала свой флаг из солидарности с Россией Польская шашистка Наталья Садовская в знак солидарности со своей соперницей по матчу чемпионата мира россиянкой Тамарой Тансыккужиной убрала со стола флаг Польши. Обе ...
Из всех лидеров стран поствоенного мира Брежнев был вроде как единственным, который в годы войны участвовал в рукопашной схватке. Из руководителей крупных стран - точно единственный. Можете представить себе, как к нему относились на международных переговорах его собеседники, ...
Но, "перемога всегда перетекает в зраду."© По словам министра культуры Евгения Нищука, на проведение следующего международного песенного конкурса не потребуются средства из государственного бюджета. Украина рассчитывает, что "Евровидение - 2017" будет профинансировано европейскими инвест ...
1. В столице Италии ожидается коллапс общественного транспорта. 36% автобусов и 50% трамваев сломаны, они ржавеют в парках, пока оставшаяся техника пытается ещё перевозить пассажиров. Сотрудники компании, которая управляет всем этим хозяйством, потеряли интерес к работе и относятся к ...