Тайная жизнь программ. Как создать код, который понравится вашему компьютеру
معرفی کتاب «Тайная жизнь программ. Как создать код, который понравится вашему компьютеру» نوشتهٔ Джонатан Стейнхарт، منتشرشده توسط نشر Питер در سال 2023. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است.
Об авторе О научном редакторе Благодарности Предисловие От издательства Введение Почему важно программировать хорошо Научиться писать код — только начало Низкоуровневые знания важны Кому стоит прочитать эту книгу? Что такое компьютеры? Что такое программирование компьютеров? Кодинг, программирование, инженерия и сomputer science Ландшафт Структура книги Глава 1. Внутренний язык компьютеров Что такое язык? Письменный язык Бит Логические операции Булева алгебра Закон де Моргана Представление целых чисел с помощью битов Представление положительных чисел Сложение двоичных чисел Представление отрицательных чисел Представление действительных чисел Представление с фиксированной точкой Представление с плавающей точкой Стандарт IEEE для чисел с плавающей точкой Двоично-десятичная система счисления Более простые способы работы с двоичными числами Восьмеричное представление Шестнадцатеричное представление Представление контекста Именованные группы битов Представление текста Американский стандартный код обмена информацией Развитие других стандартов 8-битная форма представления Unicode Использование символов для представления чисел Кодировка Quoted-Printable Кодировка Base64 Кодировка URL Представление цветов Добавление прозрачности Кодирование цветов Выводы Глава 2. Комбинаторная логика Задача для цифровых компьютеров Разница между аналоговым и цифровым представлением Почему для аппаратного обеспечения размер имеет значение Цифровые решения для более стабильных устройств Цифровые устройства в аналоговом мире Почему вместо цифр используются биты Знакомство с принципами работы электрического тока Электрический ток на примере сантехники Электрические переключатели Создание аппаратного обеспечения, работающего с битами Реле Вакуумные лампы Транзисторы Интегральные схемы Логические вентили Повышение помехоустойчивости с помощью гистерезиса Дифференциальная передача сигналов Задержка распространения Варианты выходов Создание более сложных схем Создание сумматора Построение дешифраторов Построение демультиплексоров Построение селекторов Выводы Глава 3. Последовательная логика Представление времени Осцилляторы Генераторы тактовых сигналов Триггеры-защелки Синхронный RS-триггер Триггеры Счетчики Регистры Организация памяти и обращение к памяти Оперативная память Постоянное запоминающее устройство Блочные устройства Флеш-память и твердотельные диски Обнаружение и исправление ошибок Аппаратное и программное обеспечение Выводы Глава 4. Анатомия компьютера Память Ввод и вывод Центральный процессор Арифметико-логическое устройство Сдвиг Исполнительное устройство Набор инструкций Инструкции Режимы адресации Инструкции кода состояния Ветвление Итоговый набор инструкций Окончательный проект Регистр команд Передача данных и управляющие сигналы Управление движением Наборы команд RISC и CISC Графические процессоры Выводы Глава 5. Архитектура компьютера Основные архитектурные элементы Ядра процессора Микропроцессоры и микрокомпьютеры Процедуры, подпрограммы и функции Стеки Прерывания Относительная адресация Блок управления памятью Виртуальная память Пространство системы и пользователя Иерархия памяти и производительность Сопроцессоры Организация данных в памяти Запуск программ Мощность запоминающих устройств Выводы Глава 6. Разбор связей Низкоуровневый ввод/вывод Порты ввода/вывода Нажми на кнопку Да будет свет Свет, камера, мотор... Светлые идеи 2n оттенков серого Квадратура Параллельная связь Последовательная связь Поймать волну Универсальная последовательная шина Сети Современные локальные сети Интернет Аналоговые устройства в цифровом мире Цифро-аналоговое преобразование Аналого-цифровое преобразование Цифровое аудио Цифровые изображения Видео Устройства взаимодействия с человеком Терминалы Графические терминалы Векторная графика Растровая графика Клавиатура и мышь Выводы Глава 7. Организация данных Базовые типы данных Массивы Битовые матрицы Строки Составные типы данных Односвязные списки Динамическое выделение памяти Более эффективное выделение памяти Сборка мусора Двусвязные списки Иерархические структуры данных Хранение данных на дисковых устройствах Базы данных Индексы Перемещение данных Векторный ввод/вывод Подводные камни объектно-ориентированного программирования Сортировка Создание хешей Эффективность и производительность Выводы Глава 8. Обработка языка Язык ассемблера Языки высокого уровня Структурное программирование Лексический анализ Конечные автоматы Регулярные выражения От слов к предложениям Клуб «Язык дня» Деревья синтаксического анализа Интерпретаторы Компиляторы Оптимизация Осторожнее с аппаратной частью! Выводы Глава 9. Веб-браузер Языки разметки Унифицированные указатели ресурсов HTML-документы Объектная модель документа Словарь древовидных структур данных Интерпретация модели DOM Каскадные таблицы стилей XML и друзья JavaScript jQuery SVG HTML5 JSON Выводы Глава 10. Прикладное и системное программирование «Угадай животное», версия 1: HTML и JavaScript Каркас прикладного уровня Тело веб-страницы JavaScript CSS «Угадай животное», версия 2: С Терминалы и командная строка Создание программы Терминалы и драйверы устройств Переключение контекста Стандартный ввод/вывод Кольцевые буферы Больше абстракций — лучше код Важные мелочи Переполнение буфера Программа на языке С Тренировка Выводы Глава 11. Сокращения и приближения Поиск по таблице Преобразование Отображение текстур Классификация символов Целочисленные методы Прямые линии Кривые линии Многочлены Рекурсивное деление Спирали Конструктивная геометрия Сдвиг и наложение масок Еще меньше математики Приближения степенного ряда Алгоритм Волдера Парочка случайностей Заполняющие пространство кривые L-системы Стохастические приемы Квантование Выводы Глава 12. Взаимоблокировки и состояния гонки Что такое состояние гонки? Общие ресурсы Процессы и потоки Блокировки Транзакции и детализация Ожидание захвата ресурсов Взаимоблокировки Реализация кратковременного захвата ресурсов Реализация долговременного захвата ресурсов JavaScript в браузере Асинхронные процессы и промисы Выводы Глава 13. Безопасность Обзор безопасности и конфиденциальности Модель угроз Доверие Физическая безопасность Безопасность связей Наше время Метаданные и наблюдение Социальный контекст Аутентификация и авторизация Криптография Стеганография Шифры подстановки Шифры перестановки Более сложные шифры Одноразовые блокноты Проблема обмена ключами Криптография с открытым ключом Прямая секретность Криптографические хеш-функции Цифровые подписи Инфраструктура открытых ключей Блокчейн Управление паролями Гигиена ПО Защищайте только необходимое Проверьте логику трижды Поищите ошибки Сведите к минимуму поверхности атаки Не выходите за пределы Генерировать хорошие случайные числа — сложно Знайте свой код Чрезвычайная изобретательность — ваш враг Разберитесь с видимостью Не переусердствуйте Не копите Не полагайтесь на динамическое выделение памяти Не полагайтесь и на сборку мусора Данные как код Выводы Глава 14. Машинный интеллект Обзор Машинное обучение Байес Гаусс Собель Кэнни Выделение признаков Нейронные сети Использование данных машинного обучения Искусственный интеллект (ИИ) Большие данные Выводы Глава 15. Влияние реальных условий Повышение ценности Как мы до этого дошли Краткая история ПО с открытым исходным кодом Creative Commons Расцвет переносимости Управление пакетами Контейнеры Java Node.js Облачные вычисления Виртуальные машины Портативные устройства Среда разработки Есть ли у вас опыт? Учимся оценивать Планируем проекты Принимаем решения Работаем с разными людьми Создаем культуру поведения на работе Делаем осознанный выбор Методологии разработки Проектирование Ведение записей Быстрое прототипирование Разработка интерфейса Использовать сторонний код или писать собственный? Разработка Серьезный разговор Переносимый код Управление версиями Тестирование Создание отчетов и отслеживание багов Рефакторинг Обслуживание Позаботьтесь о стиле Чините, а не создавайте заново Выводы A primer on the underlying technologies that allow computer programs to work. Covers topics like computer hardware, combinatorial logic, sequential logic, computer architecture, computer anatomy, and Input/Output. Many coders are unfamiliar with the underlying technologies that make their programs run. But why should you care when your code appears to work? Because you want it to run well and not be riddled with hard-to-find bugs. You don't want to be in the news because your code had a security problem. Lots of technical detail is available online but it's not organized or collected into a convenient place. In The Secret Life of Programs , veteran engineer Jonathan E. Steinhart explores--in depth--the foundational concepts that underlie the machine. Subjects like computer hardware, how software behaves on hardware, as well as how people have solved problems using technology over time. You'll Learn what really happens when your code runs on the machine and you'll learn to craft better, more efficient code. Computer programming is not abstract and programs run on a machine. Knowing how computers work and how programs run on them is essential to becoming a better programmer, and understanding underlying technologies can help you develop a sense of what can go wrong. The Secret Life of Programs (formerly Foundations of Computer Programming ) fills in the gaps in computer education by giving readers a look under the hood of programming, at the machine. Readers learn how software behaves when running on hardware; how programs manipulate data in memory; how computers process languages; and how web browsers work. They'll also learn how to write efficient programs, computer security basics, and real-world considerations to have in mind when writing code Acknowledgments Preface Introduction Chapter 1: The Internal Language of Computers Chapter 2: Combinatorial Logic Chapter 3: Sequential Logic Chapter 4: Computer Anatomy Chapter 5: Computer Architecture Chapter 6: Communications Breakdown Chapter 7: Organizing Data Chapter 8: Language Processing Chapter 9: The Web Browser Chapter 10: Application and System Programming Chapter 11: Shortcuts and Approximations Chapter 12: Deadlocks and Race Conditions Chapter 13: Security Chapter 14: Machine Intelligence Chapter 15: Real-World Considerations Index "Presents essential information about how computers work, including many broad topics, such as how computers process languages, how programs manipulate data in memory, and how web browsers work"-- Provided by publisher
دانلود کتاب Тайная жизнь программ. Как создать код, который понравится вашему компьютеру