четверг, 26 марта 2015 г.

Основы работы в консоли. Понятие выражения

Если запустить RStudio, курсор по умолчанию будет в панели консоли. В консоли удобно проводить исследования, связанные как с языком, так и с вычислениями, графиками. В ней (в консоли) можно писать маленькие программы и давать команды.

Принцип работы в консоли такой:
  1. мы пишем код и отдаём его на выполнение R, путём нажатия Enter
  2. R обрабатывает код и выдаёт результат
и так происходит постоянно, т.е. циклически (или в цикле, англ. loop). Такой режим работы называется интерактивным (от англ. interaction — «взаимодействие»). Поэтому иногда говорят, что работа в консоли ведётся в интерактивном режиме. Бывает вместо интерактивного режима говорят, что работа ведётся в REPL. REPL это сокращение от Read Eval Pring Loop - R читает команду (Read), выполняет её (Eval), выводит результат (Print) и процесс повторяется (Loop).

Дадим первую команду:
> 3.14
[1] 3.14
Это программа, состоящая из одного числа - числа pi с двумя цифрами после запятой. Мы просто ввели число, R выдал результат. Теперь на примере этой маленькой программы познакомимся c одним из главных принципов языка R.

Главный принцип: базовая (основная) конструкция R - выражение

В любом языке программирования есть базовая конструкция, с помощью которых реализуется алгоритм (как мы уже узнали алгоритм придумывает сам программист). Это может быть либо команда (statement), либо выражение (expression).

В R базовая конструкция это выражение (expression). Пример языков, где базовая конструкция это команда: C++, Java, Python, PHP. Разберёмся, что это значит. Но вначале уточним, один момент о командах.

То, что мы ввели в консоли это команда консоли, однако есть ещё и понятие команды как конструкции языка, которое по англ. называется statement. Нужно отличать эти два понятия, поэтому для команд как конструкций языка будем использовать слово-синоним - оператор (ещё один синоним это инструкция). Итак: команда языка это оператор (statement), команда консоли это просто команда консоли, другое понятие.

Самый главный принцип, который нужно понять и на котором всё строится: в R операторы (statements) и выражения (expressions) это одно и тоже: любой оператор это выражение. По-сути в R нет понятия команды как конструкции языка. Поэтому, то, что мы ввели - число 3.14, является выражением, которое состоит из одного числа, R вычислил его значение и выдал результат.

В чём отличие между операторами и выражениями? Отличие в том, что любое выражение всегда преоразуется в значение - результат, оператор - не преобразуется в результат.

На карте ядра были показаны операторы (синоним команд) как отдельный элемент:
Так как в R базовая конструкция это выражение, то картина будет другой:
Вообще все команды консоли это по-сути выражения, просто они называются командами консоли (и как было сказано выше это другое понятие, отличное от понятия оператора). Любая команда консоли имеет такой вид:
> выражение
[1] результат
Пока не будем рассматривать, что значит
[1]
, сделаем это позже, когда мы будем готовы к этому. Главное здесь понять, что все команды консоли имеют одинаковый вид.

Вот ещё несколько примеров выражений:
> 23
[1] 23

> 42 - 7
[1] 35

> 42 - 8
[1] 34

> 8 / 4
[1] 2

> sin(pi / 2)
[1] 1
Видно, что R может вычислять знакомые математические выражения. Вообще же консоль R можно использовать вместо калькулятора - консоль поддерживает всё то, что свойственно обычному калькулятору плюс умеет делать гораздо больше.

В консоли можно давать и несколько команд подряд, в одну строку, разделяя их символом-разделителем - точкой с запятой
;
:
> 23; 42 - 7; 8 / 4; sin(pi / 2)
[1] 23
[1] 35
[1] 2
[1] 1

Смысл поста

Работа в консоли ведётся в интерактивном режиме (aka REPL). В консоли даются команды, являющиеся по-сути выражениями (expressions). В R оператор (statement) и выражение (expression) это одно и тоже, понятие оператора не используется. Отличие выражения от оператора в том, что выражение всегда преобразуется в значение, а оператор - нет. Выражение это базовая конструкция языка R для выполнения действий алгоритма программы. Консоль R можно использовать вместо калькулятора.

В следующем посте

В этом посте мы познакомились с базовой конструкцией языка на котором будет строиться всё остальное - выражением. В следующем посте мы рассмотрим как вычисляются выражения и узнаем о простых и сложных выражениях.