Обновить
65
0
Михаил Панков @mkpankov

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

Отправить сообщение
А есть что-то по крайней мере достаточно хорошее? Вон внизу подсказывают, что 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, такое усложение стоит выигрыша в скорости.
Да, а вы как себе представляете решение этой проблемы без этого, но чтобы нельзя было забыть обработать ошибку?

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

Информация

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