Pull to refresh
-8
0
Денис @NotSure

User

Send message

Странно, что нет вариантов медицинские журналы, pubmed, cochrane.

>> модуль шифрования/обращения по сети/любая другая либа
> Библиотека сама по себе является МВУ

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

Позднее связывание вышло из чата.

Зависимость-то всё равно остаётся, только её компилятор не проверяет.

А зачем в статье вообще нужны понятия "верхний уровень" и "нижний уровень"?

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

Вот и вся инверсия.

Тут понятия "верхний уровень" и "нижний уровень" эквивалентны просто тому, кто выше в стеке вызовов функций.

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

Делается, и Пентагоном в том числе. Вот в этой статье Рейтерс, несмотря на название, есть про операции Пентагона в целом, не только про конкретных тролей-антиваксеров, дискредитировавших китайскую вакцину от ковида среди мусульман (типа не халяльная).

Пристыковываем к нему новый корневой блок. Дальше перестыковываем к новому остальные модули. Выкидываем старый корневой.

— Однако, мистер Дент, маршрут был выставлен для всеобщего ознакомления в местном бюро планирования и висел там девять месяцев.
— Ага, как только я узнал, то сразу же помчался прямо в бюро. Это было вчера в полдень. Вы ведь не особенно утруждали себя предупреждениями? Я имею в виду: никому ни слова, ни одной душе, правда?
— Но маршрут был обнародован для…
— Обнародован? В конце концов мне пришлось спуститься в подвал, чтобы отыскать его!
— Верно, там у нас находится отдел информации.
— С фонариком!
— Наверное, света не было.
— И ступенек тоже!
— Но послушайте, вы ведь нашли план!
— Да, — сказал Артур, — нашел. На дне запертого шкафа в заколоченном туалете. А на двери табличка висела: «Осторожно, леопард!»

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

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

"Пробуем другие подходы

Я начинаю размышлять о том, что объекты могут быть лошадьми, но это кажется маловероятным. Возможно, Джон Чаппелл - пчеловод, обматывающий ульи черными лентами и сообщающий пчелам об уходе старого хозяина и приходе нового."

Свои желания есть у людей, у которых есть деньги на обучение ИИ.

Которые, вероятно, попали в обучающую выборку. Но всё равно впечатляет, что o1 смогла "вспомнить" намного больше ответов, чем 4o.

Оригинальный заголовок статьи (I Have No Constructor, and I Must Initialize) отсылает к названию рассказа Харлана Эллисона "I Have No Mouth, and I Must Scream", и перевести его стоило бы не в таком стиле, как у вас.

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

https://ru.wikipedia.org/wiki/У_меня_нет_рта,_но_я_должен_кричать

Клиентский код не всегда может вызывать конструкторы -- например, мы можем хотеть иметь возможность подменять тип создаваемого объекта или клиентский код может не иметь значений параметров. В данном же случае фабрике из клиента передаётся и тип, и параметры. Точнее, ID типа, но он взаимно однозначно соответствует типу.

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

Возникает следующий вопрос: а как мы можем абстрагировать, отделить способ создания от самого объекта?

У меня возникает другой вопрос: зачем? В какой ситуации код

using VF = VariantFactory<Point, Line, Rect>;
using ShapeType = VF::ResultType;
 ShapeType shape;
 VF{}( &shape, kUniqueId<line>, 1, 1, 4, 5);

будет лучше, чем две строки ниже?

using ShapeType = std::variant<Point, Line, Rect>;
ShapeType shape{std::in_place_type_t<Line>, 1, 1, 4, 5};
 

Кроме дельта-вэ важна ещё и плоскость орбиты, кстати.

Смотреть надо не на километры, а на delta-V (она же характеристическая скорость орбитального манёвра). Нужно примерно 4 км/c дельта-вэ , чтобы перейти от орбиты 450 км на геостационарную. Это меньше половины дельта-вэ, нужной, чтобы добраться до орбиты 450 км.

Я думаю, любой документированный набор инструкций проца проще плюсов.

"каждый проект, с которым я имел дело на C++, ощущался как монотонная рутина"

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

Справедливости ради, dllmain триггернулся после комментария с совершенно хамским и не менее надменным скриншотом из твиттера: https://habr.com/en/companies/ruvds/articles/747826/comments/#comment_25755608

1
23 ...

Information

Rating
Does not participate
Location
Ярославль, Ярославская обл., Россия
Registered
Activity