-
Notifications
You must be signed in to change notification settings - Fork 0
/
ch1about.tex
47 lines (30 loc) · 14.6 KB
/
ch1about.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
\chapter{Об этой книге}
Эта книга, состоящая из нескольких частей, посвящена вычислительным платформам.
Они будут всесторонне рассмотрены. Их структура, принцип действия
и способы их использования для программирования будут обсуждены и предложены практические упражнения, состоящие в решении задач.
Эта книга представляет собой технологическое и концептуальное путешествие по миру вычислений. Как и любое такое путешествие, по необходимости, оно будет частичным
(вы не можете увидеть весь мир за одну поездку). Но оно принесет понимание этого мира,
которое будет полезно как само по себе, так и как часть более широкого образования
в вопросах вычислений.
\section{Платформы}
Наш первый шаг состоит в определении предмета.
\begin{mydef}[Вычислительная платформа] это самодостаточный набор программных и/или
аппаратных ресурсов, предназначенных для обработки цифровых данных
\end{mydef}
Этот набор обязан быть \emph{полным}, в том смысле что он способен выполнить определенный класс задач по обработке данных сам по себе. Но вычислительная платформа
\emph{не} изолирована. Иными словами, вычислительная платформа \emph{взаимодействует} со своим \emph{окружением}. Общим свойством всех платформ является возможность конфигурации и/или программирования. Как минимум, платформа
позволяет пользователям настроить себя для определенной задачи. Это может достигаться
либо манипуляциями с аппаратурой, либо модификацией хранимых данных (конфигурацией), либо расширением или модификацией программного обеспечения (программированием).
\section{Обработка данных}
Обработка данных включает в себя как вычисления в узком смысле (то есть выполнение арифметических операций над числами, представленными как цифровые данные), так и обработку нечисловых данных (например, изменение или комбинацию строк символов, поиск шаблонов в наборах данных, сортировку записей). Также она включает в себя работу с ассоциативными структурами данных (такими, как реляционные базы данных), работу со связанными структурами (такими, как списки, деревья и графы общего вида), взаимодействие с физическим окружением путем считывания и посылки сигналов через периферийные устройства. Периферийные устройства включают в себя такие знакомые вещи, как мыши, клавиатуры и мониторы, но также и менее знакомые вещи, например, температурные сенсоры, исполнительные устройства роботов и т.д., а также коммуникационные устройства, предназначенные для передачи и получения данных по сети.
\section{Платформа CdM-8}
Мы имеем дело с вычислительной платформой, которая была разработана специально для учебных целей: CdM-8. Однако, сведения, которые вы получите здесь, а также принципы, которые вы изучите в ходе работы с выбранной нами платформой, универсальны. Несмотря на узкий фокус экосистемы CdM-8 и Платформы CdM-8 3\nicefrac{1}{2}, это вполне современная и полностью функциональная платформа, которая может быть использована для решения практических проблем. Это не игрушечная система, предназначенная для пробуждения интереса к обучению. Это взрослое решение, которое было радикально упрощено, чтобы помочь учащимся сфокусироваться на ключевых вещах, присутствующих в \emph{любой} полноценной платформе того же уровня абстракции.
Мы называем это Платформой 3\nicefrac{1}{2} потому что она предоставляет возможности, находящиеся на полпути между "нормальным" уровнем ассемблера и классическими "высокоуровневыми" программируемыми виртуальными машинами, такими, как C, Java или Python. Эти уровни в модели уровней Таненбаума называются, соответственно, Уровень 3 и Уровень 4. Отсюда и происходит название Платформа 3\nicefrac{1}{2}. Следовательно, Платформа 3\nicefrac{1}{2} CdM-8 имеет отношение как к базовому курсу программирования, так и к компьютерной архитектуре. Она спроектирована так, чтобы быть проще для изучения, чем другие платформы, не предназначенные специально для использования студентами.
Представление данных. Эта часть начинает наше представление Платформы 3\nicefrac{1}{2} с темы, которая может показаться отклонением в сторону, но абсолютно необходима: секции, посвященной обсуждениию информации и представления данных. Без признания нужды в эффективном и удобном представлении данных и без понимания принципов и техник, используемых для представления и обработки данных, невозможно понять мотивы разработчиков вычислительных платформ. Здесь мы сосредоточены на двоичном представлении данных, потому что это наиболее важно, когда вы имеете дело с платформами Уровня 4 и ниже. Вопросы представления данных на более высоких уровнях абстракции будут обсуждаться в других курсах.
Архитектура Платформы 3\nicefrac{1}{2}. Во второй части книги мы переходим к описанию виртуальной архитектуры Платформы 3\nicefrac{1}{2} (виртуальной в том смысле, что она реализована программно, а не аппаратно; но она по прежнему так же реальна для нас, как если бы она была построена из кремния и меди). Мы обсудим различные части платформы, как они соединяются и как они работают вместе, исполняя компьютерную программу.
Управление Платформой 3\nicefrac{1}{2}. Платформа 3\nicefrac{1}{2} одновременно является конфигурируемой \emph{и} программируемой. Вторая часть книги посвящена программируемости CdM-8 без различия, между фиксированными и настраиваемыми частями платформы. Для этого нам придется изучить несложный язык программирования, называемый \emph{языком макроассемблера CdM-8}.
\section{Программирование Платформы 3\nicefrac{1}{2} CdM-8}
Язык программирования, по существу, представляет собой набор правил, которые позволяют нам писать компьютерные программы в читаемой для человека форме, снабжая их комментариями так, чтобы они могли быть понятны (хотя бы их авторам) когда они будут изучаться через дни, недели или даже годы после того, как были написаны. Благодаря входящему в состав платформы инструменту, макроассемблеру CdM-8 {\tt cocas}, программы на языке макроассемблера могут быть автоматически преобразованы (компилированы) в битовые строки, которые Платформа 2 CdM-8 может читать и исполнять (и которые человеку без подготовки понять затруднительно).
При проектировании и написании программ для Платформы 3\nicefrac{1}{2} вы приобретете навыки \emph{вычислительного мышления}, выражения решений на языке программирования (это также известно как \emph{кодирование}\footnote{Термин \emph{кодирование} обозначает любую деятельность, которая включает в себя выражение объявлений и алгоритмов на языке, понятном для платформы. Термин \emph{код} -- это собирательное название для любого набора инструкций, выраженных на требуемом платформой языке и образующего программу или часть программы. Так, программа на языке макроассемблера CdM-8 -- это \emph{макроассемблерный код}, а битовая строка, которая может быть исполнена Платформой 2 CdM-8 называется \emph{машинным кодом CdM-8}.}) и обнаружения и исправления ошибок (\emph{отладки}). Эти навыки являются ключевыми для Computer Science (области деятельности, которую по-русски не вполне корректно называют информатикой) и информационных технологий. Специалисты в этих областях должны определять, какие действия платформы необходимы для решения проблемы и точно и недвусмысленно описывать эти последовательности действий на языке, который понятен платформt. Наш опыт показывает, что лучший способ изучить и понять работу платформы -- это применить ее для решения практических проблем. Уроки, которые вы получите во время практики по созданию программ для Платформы 3\nicefrac{1}{2} приложимы к программированию на "реальных" языках.
С этого момента мы редко будем использовать фразы "язык макроассемблера CdM-8", "макроассемблерный код CdM-8" и "макроассемблер CdM-8", потому что они слишком длинные. Вместо этого мы будем говорить "язык ассемблера", "ассемблерный код" и "ассемблер" или, иногда, "макроассемблер". Все эти термины начинаются с маленькой буквы, потому что язык, который мы имеем в виду -- это только один из множества существующих языков ассемблера. Другие платформы на том же уровне по Таненбауму, например, x86 или ARM, используют другие языки ассемблера.
Также вам следует знать, что программисты на языке ассемблера часто используют слово \emph{ассемблер} для обозначения как программы "ассемблер" (инструмента для трансляции ассемблерных программ в машинный код), так и для языка ассемблера. Это может быть продиктовано ленью, но к этому так или иначе придется привыкнуть.