Рубрика «ruvds_перевод» - 4

Писать код для компьютеров сложно, ещё сложнее — писать код для людей - 1


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

А теперь немного усложним задачу. Будем писать код для людей!

Объясню, что я имею в виду: я говорю о коде, с которым смогут взаимодействовать другие люди. В частности, я имею в виду искусство создания удобных фреймворков, библиотек, API, SDK, DSL, встроенных DSL или даже языков программирования.

Писать такой код гораздо сложнее, потому что ты не только говоришь компьютеру, что делать, но и вступаешь в борьбу с ментальной моделью твоего кода в глазах другого пользователя. Это в равной степени computer science и психология мышления. Как сделать так, чтобы этот человек понял твой код?

Ричард Фейнман как-то сказал: «Представьте, насколько сложнее была бы физика, если бы электроны имели чувства». Он говорил это в другом контексте, но мне кажется, это частично описывает и программирование для людей. У человека, интерпретирующего твой код, есть чувства!

Давайте поговорим о том, как упростить ему задачу. Читать полностью »

Как устранить первопричину уязвимостей безопасности памяти - 1


Уязвимости безопасности памяти остаются серьёзной угрозой для защиты ПО. Мы, работники Google, считаем, что путь к крупномасштабному устранению этого класса уязвимостей и к защищённому ПО заключается в Safe Coding — подходе secure-by-design, отдающем приоритет переходу на безопасные по памяти языки.

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

Также мы приведём обновлённую статистику того, как благодаря переходу на безопасные по памяти языки, процент уязвимостей безопасности памяти в Android упал за шесть лет с 76% до 24%.Читать полностью »

Dialrhea — играем в Doom на дисковом телефоне - 1


Dialrhea — это дисковый телефон, переделанный для игры в классический Doom по Bluetooth. Мы собрали его за два дня во время хакатона «Internet Of Shit», организованного командой Technarium в Вильнюсе. Темой хакатона было создание абсолютно бесполезных, но полностью функциональных устройств. Ниже вы можете увидеть наш Dialrhea в действии.Читать полностью »

Как использовать YouTube для кражи файлов - 1


Занимаясь исследованиями безопасности, я часто сталкиваюсь со странными причудами и поведением, которые могут пригодиться, разве что, в качестве весёлого фокуса на вечеринке. Тем не менее мне нравится их отслеживать. Кто знает, возможно, однажды что-то из этого окажется как раз тем самым недостающим элементом.Читать полностью »

Как я узнал номер паспорта и телефон премьер-министра по фото в Instagram* - 1

Акт 1: полдень воскресенья

Я занимался домашними делами, ни о чём плохом не думал, пил водичку и ни в коем случае не имел никаких намерений заниматься подрывной деятельностью против Австралийского Союза.

А потом я получил сообщение в «групповом чате»1.

Как я узнал номер паспорта и телефон премьер-министра по фото в Instagram* - 2

Милое сообщение от моего друга с фотографией посадочного талона. В сообщениях от друзей хорошо то, что они не несут за собой никаких катастрофических последствий

Обладателем талона был Тони Абботт, один из множества бывших премьер-министров Австралии.Читать полностью »

Ассемблер для программистов на языках высокого уровня: условные конструкции - 1


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

На этом уроке мы изучим новые команды и воспользуемся этими знаниями, чтобы перенести на язык ассемблера первую конструкцию высокого уровня: условные конструкции.Читать полностью »

Как на фабриках полупроводников вычисляют выход годных кристаллов - 1


В Intel отказались от выпуска микросхем на базе узла 20A, решив перейти сразу к 18А.

И было очень много разговоров на тему, почему компания так поступила. Некоторые говорят, что Intel для исправления проблем с 18A требуется весь инженерный ресурс. Другие считают, что этот ход фактически сэкономит компании деньги, которые она сможет вложить в разработку узла 14А.Читать полностью »

Почему Scrum так изматывает - 1


В современном мире программирование связано с высокой стрессовой нагрузкой — намного большей, чем на моей памяти было в 90-х и начале 2000-х, когда я только начинал свой путь в этой сфере. В те времена безумие начиналось в преддверии дедлайнов, но в остальное время всё шло более-менее размеренно. Сегодня же психологическая нагрузка и давление уже являются неотъемлемыми спутниками разработки ПО.

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

Ассемблер для программистов на языках высокого уровня: Hello World - 1


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

Рассмотрим следующий код:

section .data
  msg db "Hello, World!"

section .text
  global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, msg
  mov rdx, 13
  syscall

  mov rax, 60
  mov rdi, 0
  syscall

К счастью, по второй строке мы можем понять, что он делает.

Здесь нет ничего привычного нам: мы не видим ни условных операторов, ни циклов, нет никакого способа создавать функции… Да даже у переменных нет имён!

С чего же вообще начать?

Это небольшое введение предназначено для того, чтобы познакомить имеющих опыт в программировании с миром ассемблера. Мы обсудим основы языка и сопоставим их с конструкциями высокоуровневого программирования.

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

Портируем декодер AV1 с С на Rust для повышения быстродействия и безопасности - 1

AV1 становится всё более значимым видеоформатом, которому требуется безопасный и производительный декодер. Исходя из этой идеи, мы в тандеме с командой из Immutant создали rav1d, портировав на Rust написанный на С декодер dav1d. Перед вами первая из двух статей, посвящённых решению этой задачи.

— Джош Аас, глава проекта Prossimo организации ISRG

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js