В этом руководстве в доступной форме излагаются основы вычислительной техники. Рассматриваются принципы электронных вычислений и использование двоичных чисел; в общих чертах показано, как функционирует аппаратное обеспечение компьютера, для чего нужна операционная система и как передаются данные по интернету. Читатель получит базовое представление о языках программирования, изучая примеры кода на С и Python.
Каждая глава содержит упражнения и практические задания (проекты), позволяющие на практике применить полученные знания.
Книга будет полезна всем, кто хочет разобраться, как работает компьютер.
Author(s): Мэттью Джастис
Edition: 1
Publisher: ДМК Пресс
Year: 2022
Language: Russian
Commentary: Vector PDF
Pages: 428
City: М.
Tags: Python; Hardware; Assembly Language; Raspberry Pi; C; Do-It-Yourself; Digital Electronics; Elementary
Об авторе
О технических рецензентах
Благодарности
Введение
1. Принципы компьютерных вычислений
Определение компьютера
Аналоговый и цифровой
Аналоговый подход
Переход на цифровые технологии
Системы счисления
Десятичные числа
Двоичные числа
Биты и байты
Префиксы
Шестнадцатеричная система
Выводы
2. Двоичный код в действии
Представление данных в цифровом виде
Цифровой текст
ASCII
Цвета и изображения в цифровом формате
Подходы к представлению цветов и изображений
Интерпретация двоичных данных
Двоичная логика
Выводы
3. Электрические цепи
Определение электрических терминов
Электрический заряд
Электрический ток
Напряжение
Сопротивление
Аналогия с водой
Закон Ома
Схемы электрических цепей
Закон напряжения Кирхгофа
Электрические цепи в реальном мире
Светоизлучающие диоды
Выводы
ПРОЕКТ № 1: Построение электрической цепи и измерения в ней
ПРОЕКТ № 2: Построение простой схемы со светодиодом
4. Цифровые схемы
Что такое цифровая схема?
Логика с помощью механических выключателей
Удивительный транзистор
Логические вентили
Проектирование с помощью логических вентилей
Интегральные схемы
Выводы
ПРОЕКТ № 3: Построение логических операторов (И, ИЛИ) с помощью транзисторов
ПРОЕКТ № 4: Построение схемы с логическими вентилями
5. Математика в цифровых схемах
Двоичное сложение
Полусумматоры
Полные сумматоры
Четырехразрядный сумматор
Знаковые числа
Беззнаковые числа
Выводы
ПРОЕКТ № 5: Построение полусумматора
6. Память и синхросигналы
Последовательные логические схемы и память
SR-защелка
Использование SR-защелки в схеме
Синхросигналы
JK-триггеры
Т-триггеры
Использование синхросигнала в трехбитном счетчике
Выводы
ПРОЕКТ № 6: Построение SR-защелки с использованием вентилей НЕ-ИЛИ
ПРОЕКТ № 7: Построение базовой схемы торгового автомата
ПРОЕКТ № 8: Добавление отложенного сброса в схему торгового автомата
ПРОЕКТ № 9: Использование защелки в качестве ручного синхросигнала
ПРОЕКТ № 10: Тестирование JK-триггера
ПРОЕКТ № 11: Построение трехбитного счетчика
7. Аппаратное обеспечение компьютера
Обзор аппаратного обеспечения компьютера
Оперативная память
Центральный процессор (CPU)
Архитектура набора команд
Внутреннее устройство процессора
Синхросигнал, ядра и кеш
За пределами памяти и процессора
Вторичное хранилище
Устройства ввода/вывода
Связь по шине
8. Машинный код и язык ассемблера
Определение программных терминов
Пример машинной инструкции
Вычисление факториала в машинном коде
Выводы
ПРОЕКТ № 12: Факториал на ассемблере
ПРОЕКТ № 13: Исследование машинного кода
9. Программирование высокого уровня
Обзор программирования высокого уровня
Введение в C и Python
Комментарии
Переменные
Переменные в C
Переменные в Python
Стек и куча
Стек
Куча
Математика
Логика
Побитовые операторы
Булевы операторы
Порядок выполнения программы
Операторы if
Циклы
Функции
Определение функций
Вызов функций
Использование библиотек
Объектно ориентированное программирование
Компилируемый или интерпретируемый
Вычисление факториала в C
Выводы
ПРОЕКТ № 14: Изучение переменных
ПРОЕКТ № 15: Изменение типа значения, на которое ссылается переменная в PYTHON
ПРОЕКТ № 16: Стек или куча
ПРОЕКТ № 17: Напишите игру-угадайку
ПРОЕКТ № 18: Использование класса банковского счета в PYTHON
ПРОЕКТ № 19: Факториал на С
10. Операционные системы
Программирование без операционной системы
Обзор операционных систем
Семейства операционных систем
Режим ядра и режим пользователя
Процессы
Потоки
Виртуальная память
Интерфейс прикладного программирования (API)
Пользовательский режим и системные вызовы
API и системные вызовы
Программные библиотеки операционной системы
Двоичный интерфейс приложений
Драйверы устройств
Файловые системы
Службы и демоны
Безопасность
Выводы
ПРОЕКТ № 20: Исследование запущенных процессов
ПРОЕКТ № 21: Создание потока выполнения и наблюдение за ним
ПРОЕКТ № 22: Исследование виртуальной памяти
ПРОЕКТ № 23: Исследование API операционной системы
ПРОЕКТ № 24: Наблюдение за системными вызовами
ПРОЕКТ № 25: Использование GLIBC
ПРОЕКТ № 26: Просмотр загруженных модулей ядра
ПРОЕКТ № 27: Исследование устройств хранения данных и файловых систем
ПРОЕКТ № 28: Просмотр служб
11. Интернет
Определение сетевых терминов
Набор интернет-протоколов
Канальный уровень
Межсетевой уровень
Транспортный уровень
Прикладной уровень
Путешествие по интернету
Основополагающие возможности интернета
Протокол динамической настройки узла (DHCP)
Частные IP-адреса и преобразование сетевых адресов
Система доменных имен
Сеть – это вычисления
Выводы
ПРОЕКТ № 29: Изучение канального уровня
ПРОЕКТ № 30: Изучение межсетевого уровня
ПРОЕКТ № 31: Изучение использования портов
ПРОЕКТ № 32: Прослеживание маршрута до хоста в интернете
ПРОЕКТ № 33: Узнайте свой арендованный IP-адрес
ПРОЕКТ № 34: Является ли IP вашего устройства публичным или частным?
ПРОЕКТ № 35: Поиск информации в DNS
12. Всемирная паутина
Обзор Всемирной паутины
Распределенная паутина
Адресуемая паутина
Связанная паутина
Веб-протоколы
Поиск в паутине
Языки Всемирной паутины
Структурирование веб с помощью HTML
Стилизация веб-страниц с помощью CSS
Создание скриптов с помощью JavaScript
Структурирование данных в веб с помощью JSON и XML
Веб-браузеры
Визуализация страницы
Строка агента пользователя (User Agent String )
Веб-серверы
Выводы
ПРОЕКТ № 36: Исследование трафика HTTP
ПРОЕКТ № 37: Запуск собственного веб-сервера
ПРОЕКТ № 38: Возврат HTML с вашего веб-сервера
ПРОЕКТ № 39: добавление CSS на ваш сайт
ПРОЕКТ № 40: Добавьте JavaScript на свой сайт
13. Современные вычислительные технологии
Приложения
Нативные приложения
Веб-приложения
Виртуализация и эмуляция
Виртуализация
Эмуляция
Облачные вычисления
История удаленных вычислений
Категории облачных вычислений
Невидимый веб и темный веб
Биткоин
Основы биткоина
Биткоин-кошельки
Биткоин-транзакции
Майнинг биткоинов
Виртуальная и дополненная реальность
Интернет вещей
Выводы
ПРОЕКТ № 41: Использование PYTHON для управления схемой торгового автомата
Приложение А
Ответы на упражнения
1-2: Двоичное в десятичное
1-3: Десятичное в двоичное
1-4: Из двоичной системы в шестнадцатеричную
1-5: Из шестнадцатеричной в двоичную
2-1: Создайте собственную систему представления текста
2-2: Кодировка и декодировка ASCII
2-3: Создание собственной системы представления градации серого
2-4: Создание собственного подхода к представлению простых изображений
2-5: Составление таблицы истинности для логической функции
3-1: Применение закона Ома
3-2: Определите падение напряжения
4-1: Реализация логического ИЛИ (OR) с транзисторами
4-2: Проектирование схемы с логическими вентилями
5-1: Практика двоичного сложения
5-2: Найдите дополнительный код
5-3: Сложите два двоичных числа и их интерпретируйте их как знаковые и беззнаковые
7-1: Вычислите необходимое количество битов
8-1: Используйте свой мозг в качестве процессора
9-1: Побитовые операторы
9-2: Выполните программу на С в уме
11-1: Какие IP находятся в одной подсети?
11-2: Исследование распространенных портов
12-1: Определение частей URL-адреса
Приложение В
Технические средства
Покупка электронных компонентов для проектов
Названия микросхем серии 7400
Покупка
Питание цифровых схем
Зарядное устройство USB
Питание для макетной платы
Питание от Raspberry Pi
Батарейки AA
Поиск и устранение неисправностей в электронных схемах
Raspberry Pi
Почему Raspberry Pi?
Необходимые детали
Настройка Raspberry Pi
Использование Raspberry Pi OS
Работа с файлами и папками