Обновить
5
20.9
Денис@deso2

Разнорабочий

Отправить сообщение

Я вам перечислил пункты, которые считаю посылами статьи. Если крупица о логическом use-after-free для вас не является новостью - поздравляю!

Лично я всегда нахожу даже мельчайшие нюансы чужих опусов интересными и оставляющими некое новое впечатление и простор для мыслей.

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

Я же в самом первом пункте вам сказал: возможно, конкретно эта пища не в вашем вкусе.

И да: в нашем варианте диалога действительно не получится. Спасибо за внимание!

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

  1. Любой осмысленный текст - это пища для ума. Возможно, конкретно эта пища не в вашем вкусе.

  2. Текст призывает задуматься и понять, что в професии важно лично вам.

  3. Иногда проблема действительно не в вас, а в окружении.

  4. Диалог возможен, но только при взаимном интересе сторон к такому диалогу. Отсюда и оговорка о "скорее всего".

  5. Иногда просто не стоит искать посыла, а насладиться формой, подачей и хорошо проведенным временем.

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

В общем, вкатиться и понять это можно было за считанные дни. Конечно, много зависит от авторов проекта, но я для себя вынес одно слово, которым охарактеризовал этот опыт: "единообразие". Код на Rust с первого дня кажется знакомым, в нем на порядок проще ориентироваться в сравнении с C++. На плюсовых проектах всегда ощущение, что тебя окунули в чан с... с ледяной водой, допустим, и заставили в нем барахтаться.

Я с вами согласен, что рутина будет везде, усталость и раздражение будут накапливаться от любой работы, но даже первое впечатление от серьезного проекта на Rust разительно отличалось от такового для проектов на C++.

Я в параллельной ветке привел пример, из которого прямо следует, что графы исполнения для физического и логического use-after-free изоморфны, а, значит, если вы признаете существование физического use-after-free, то следеут уже признать и существование его логического эквивалента в C++.

У меня однажды было так:

метод_1 на тысячу строк перемещает один из своих аргументов в метод_2 где-то в середине своего тела. Мне понадобился доступ к этому аргументу сильно ниже в методе_1. Хорошо, что я имею годами выработанную привычку обмазывать все неизвестные мне вещи ассертами. Я поймал ошибку на CI.

Я даже знаю, как мы к этому пришли: когда-то метод_1 был небольшим, а в методе_2 нужно было изменять переданный аргумент, поэтому его принимали по значению. Логичным решением было переместить имеющийся в методе_1 аргумент. Потом метод_1 отрос подробностями, но код продолжал работать. Пока не пришел тот, кому нужно было этот аргумент зачем-то использовать.

А теперь я вам расскажу два альтернативных сценария:

  1. Вместо одиночного объекта в метод_1 приходит коллекция. Искушение переместить ее значительно возрастает. Но с коллекцией проблема серьезней: очень часто пустая коллекция - это вполне норма. Поди разберись, нужно ли вставлять в коде где ни попадя assert(!vec.empty()); или же оно выстрелит на абсолютно валидном сценарии.

  2. Вместо объекта передаем указатель на выделенную на куче память и где-то в методе_2 освобождаем ее за ненадобностью. Можно даже предположить, что мы имеем std::unique_ptr и перемещаем его. Хотя для такого случая я, скорее всего, задался бы вопросом, почему именно такой формат аргумента, и мог бы предположить, что по дороге он может быть освобожден.

Из хорошего: именно на этом примере у меня сформировалась аналогия логического use-after-free, описанная в тексте.

Наша задача — найти связь между x, y и L.

И какова эта связь в геометрическом смысле? Пересечение диагоналей ромба?

Мы доказали теорему Пифагора, не нарисовав ни одного прямоугольного треугольника.

И как вы поняли, что это теорема Пифагора?

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

Испанский - сложный язык. 3 месяца - очень мало. При этом описаны все типичные ошибки самообучающихся. Попробуйте:

  • Не гоняться за рейтингом, а учиться на качество, то есть медленно

  • Каждую непонятную фразу пытаться осмыслить с точки зрения грамматики

  • Если знаний грамматики не хватает - поискать и почитать правила

  • Слушать всегда в наушниках - услышите, сколько фонетических тонкостей есть в произношении

  • Не смотреть сразу на блоки слов для перевода, а переводить сначала в уме

  • Повторять фразы и даже тексты на аудировании - вы удивитесь, как сложно точно запомнить и воспроизвести даже 10 слов за диктором

  • Учить не слова, а фразы и выражения - словоупотребление важно в контексте

  • Проходить испытания на время - они учат думать на языке быстрее

Я учу испанский с дуо 4 года (1300 дней было позавчера) и у меня уровень примерно В2+. Первый год было очень сложно и хотелось бросить. После полутора лет брал порядка 25 индивидуальных занятий, так мне преподаватель сказала, что удивлена чистотой и качеством знания языка, особенно от человека, занимающегося только по дуолинго. При этом я более выдающегося прогресса с преподавателем по сравнению с дуо не увидел, поэтому продолжать с ней не стал.

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

2

Информация

В рейтинге
360-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность