Search
Write a publication
Pull to refresh
66
0
Михаил Панков @mkpankov

Системный программист

Send message
А есть что-то по крайней мере достаточно хорошее? Вон внизу подсказывают, что biicode уже слился.
В качестве пакетного менеджера для плюсов можно использовать нестандартный biicode.
Мы тут, кстати, недавно закончили Растономикон переводить.
Shameless plug: про Rust читать перевод официальной книги на русский, перевод книги о макросах, перевод Растономикона (в процессе работы; содержание не переведено, но примерно половина глав уже на русском).
По крайней мере один: Nikita Baksalyar — это greedykid ;)
единообразие кода чисел
варьируемая длина операндов
единственность операции сдвига
трехзначность функции знак числа
оптимальное округление чисел простым отсечением младших разрядов
взаимокомпенсируемость погрешностей округления в процессе вычисления
Можно поподробнее? Ничего не понял.
например?
Безопасная работа с памятью без сборщика мусора.

Отлов гонок данных во время компиляции.

Код, в котором невозможно забыть обработать ошибку.

И при всём при этом:

Предсказуемое и высокое быстродействие.

Высокоуровневые возможности вроде замыканий и итераторов.
Кто ж кто ж, автор статьи пользуется же.

Он пользователь, и для него интерфейс мьютекса — такой. Возможность забыть разблокировку есть.
Нельзя, если это единственный интерфейс работы с объектом, защищённый мьютексом.

И вообще, в случае mutex guard за эту часть дизайна отвечает разработчик языка/стандартной библиотеки, а не конечный разработчик.
Как я понял, можно написать return «Вася», а можно — result = «Вася», итог один и тот же.
В чём смысл этой конструкции тогда?
  1. Неявная переменная. Получается, ради возврата я должен присвоить в неё, и не могу вернуть оттуда, где у меня уже лежит результат.
  2. Значение по-умолчанию для неявной переменной в случае указательного типа — nil. Получается, если я забыл сделать возврат, я возвращаю nil. Привет, «NoneType has no 'foo' method»!
  3. Мало этого, ещё и маскирование добавили в коктейль. Т.е. если я объявил переменную, а потом сделал return result, что вернётся — моя или неявная?
На момент старта функции переменная result всегда уже объявлена, так что попытка объявить её снова, например, с помощью var result, приведёт к затенению её обычной переменной с тем же именем. Переменная result всегда инициализируется значением по умолчанию для своего типа. Поэтому ссылочные типы данных будут иметь значение nil, так что их при необходимости придётся инициализировать вручную.
Адище.
В связи с этой книгой у автора (Zed Shaw) случилась большая драма. Например, вот здесь он пишет, что хотел донести мысль о том, что с самого момента изобретения на Си писали неправильно. С ним много кто не соглашался в интернете.
На днях видел. Внизу есть пример с Node.js.

Это вообще классный ресурс — там много примеров с разными типами данных и разными языками, рекомендую.
С главной репозитория:
The contained functions avoid… input validation.
Пояснение: они разбирают столько полей, сколько просят, и не проверяют, что данный JSON-объект вообще соответствует структуре, куда происходит десериализация.
По поводу 8.:
8. На D был написан самый быстрый парсер Json в мире fast, обогнавший почти в два раза самую быструю реализацию парсера Json на С++.
Как ни прискорбно, это не следствие классности Ди. Этот парсер не валидирует входные данные полностью, в отличие от многих других, участвующих в этих тестах производительности. Такая разница в производительности — как всегда, из-за разницы в используемых алгоритмах.
Я попробовал посмотреть на разницу в LLVM IR для ссылки и указателя: is.gd/EyTrrF

Как видим, ссылка явно dereferenceable. Я думаю, что для LLVM указатели с возможностью обнуления — особый случай, и они специально поддержаны. Обобщённого же механизма нет. Да и в core только NonZero, а общего типа с возможностью указать, какие значения особые, нет.
Да, это интересная идея. Я думаю, что сейчас это требует поддержки в LLVM, поэтому сложно делать это для любых типов.
Это не «бескомпромиссно», это небезопасно.

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

Позвольте вопрос: вы на Си пишете или так, сопереживаете?
Не понимаю зацикленной логики. Да, в Си это часто решалось значениями-исключениями. Да, это было быстрее. Но это менее безопасно. Сделали более безопасно. Нам не нравится что это стало медленнее. Так что же мы изначально хотели, быстро или безопасно?

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity