Skip to content

Commit

Permalink
ru: dialogues-with-computer-algorithms: Дополнение раздела
Browse files Browse the repository at this point in the history
* src/ru/sections/dialogues-with-computer-algorithms.tex: Дополнение раздела.
* NEWS: Обновление.
  • Loading branch information
artyom-poptsov committed Feb 8, 2025
1 parent 733d70a commit 5dd2811
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
6 changes: 6 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ Copyright (C) Artyom V. Poptsov <[email protected]>
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.

* Unreleased
** ru
*** Диалоги с компьютером
**** Алгоритмы
- Перенос раздела ниже в главе.
- Дополнение раздела.
* Version 3.0.1 (2025-02-01)
** common
*** Move some common code into separate files
Expand Down
45 changes: 45 additions & 0 deletions src/ru/sections/dialogues-with-computer-algorithms.tex
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,49 @@ \section{Алгоритмы}
алгоритм уборки квартиры. Насколько детально вы сможете объяснить порядок
выполнения простых действий? Насколько сложными получаются алгоритмы?}

При составлении алгоритмов необходимо учитывать, что компьютеры в большинстве
своём имеют два важных свойства:
\begin{enumerate}
\item С одной стороны, компьютеры очень быстрые в определённых задачах. Даже
центральный процессор микроконтроллерной платформы Arduino Mega 2560 имеет
частоту 16МГц\footnote{\url{https://docs.arduino.cc/hardware/mega-2560/}}, что
даёт приблизительно 16 миллионов операций в секунду\footnote{На самом деле,
конечно меньше, так как разные инструкции процессора занимают разное
количество циклов.}. Современные компьютеры значительно превосходят человека
в скорости вычислений и объёмах хранимой информации.
\item С другой стороны, компьютеры в большинстве своём достаточно ``тупые'' -- в
том плане, что они делают только то, что было записано в инструкциях. Мы
здесь не говорим про более ``интеллектуальные'' системы вроде больших языковых
моделей и других примеров систем со сложным поведением.
\end{enumerate}

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

Поэтому даже формулирование алгоритмов для, казалось бы, простых операций,
требует большой внимательности.

Например, алгоритм мигания одним светодиодом, который мы сформулировали выше,
имеет один важный недостаток: в нём отсутствует явное указание времени
выполнения операций. Хотя операция мигания светодиодом по нашему интуитивному
представлению подразумевает некоторую задержку после включения и после
выключения, в алгоритме это явно не указано -- а это значит, что компьютер будет
выполнять эти операции так быстро, насколько способна система. Результатом
будет то, что для нас светодиод будет казаться постоянно включённым.

Доработаем алгоритм, явно добавив в него необходимые задержки в половину секунды
(500 мс):
\begin{enumerate}
\item Включить светодиод.
\item Подождать 500 мс.
\item Выключить светодиод
\item Подождать 500 мс.
\item Повторить алгоритм.
\end{enumerate}

Чтобы данный алгоритм в принципе мог быть выполнен обычным компьютером, его надо
перевести на некий промежуточный язык, который понятен и человеку, и компьютеру
(при наличии специального переводчика -- \emph{компилятора}.)

\end{document}

0 comments on commit 5dd2811

Please sign in to comment.