REPL: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
+ {{изолированная статья}} с помощью AWB
Пунктуация: исправлена не закрытая кавычка
 
(не показано 30 промежуточных версий 30 участников)
Строка 1: Строка 1:
'''REPL''' (от {{lang-en|read-eval-print loop}} — «цикл „чтение — вычисление — вывод“») — форма организации простой интерактивной [[Среда программирования|среды программирования]] в рамках средств [[Интерфейс командной строки|интерфейса командной строки]]. Чаще всего этой аббревиатурой характеризуется интерактивная среда языка программирования [[Лисп]], однако такая форма характерна и для интерактивных сред языков [[Erlang]], [[Groovy]], [[Haskell]], [[Java]], [[JavaScript]], [[Perl]], [[PHP]], [[Python]], [[Ruby]], [[Scala (язык программирования)|Scala]], [[Smalltalk]], [[Swift (язык программирования)|Swift]], [[Tcl]] и других.
REPL ('''Read-eval-print loop''') — простая интерактивная среда программирования. Данный термин наиболее часто используется применительно к интерактивной среде языка программирования [[Lisp]], однако может использоваться и применительно к интерактивным средам языков [[Smalltalk]], [[Python]], [[Ruby]], [[Haskell]] и других языков.


В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю. Название '''read-eval-print loop''' происходит от имён примитивов языка Lisp, которые реализуют подобную функциональность:
В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю. Названия элементов цикла связаны с соответствующими примитивами Лиспа:
* функция <code>read</code> читает одно выражение и преобразует его в соответствующую структуру данных в памяти;
* функция <code>eval</code> принимает одну такую структуру данных и вычисляет соответствующее ей выражение;
* функция <code>print</code> принимает результат вычисления выражения и печатает его пользователю.


Чтобы реализовать REPL-среду для некоторого языка, достаточно реализовать три функции: чтения, вычисления и вывода, и объединить их в бесконечный цикл. REPL-среда очень удобна при изучении нового языка, так как предоставляет пользователю быструю обратную связь.
:Функция '''read''' читает одно выражение и преобразует его в соответствующую структуру данных в памяти.
:Функция '''eval''' принимает одну такую структуру данных и вычисляет соответствующее ей выражение.
:Функция '''print''' принимает результат вычисления выражения и печатает его пользователю.


== Ссылки ==
Чтобы реализовать REPL-среду для некоторого языка, достаточно реализовать три перечисленные выше функции и объединить их в бесконечный цикл.
* [http://www.paulgraham.com/rootsoflisp.html Описание реализации REPL] {{Wayback|url=http://www.paulgraham.com/rootsoflisp.html |date=20210130184134 }} в Common Lisp (Paul Graham).
* [http://neugierig.org/software/c-repl/ c-repl] {{Wayback|url=http://neugierig.org/software/c-repl/ |date=20090211085632 }} REPL для языка C
* [http://nodejs.org/ruwiki/api/repl.html REPL для языка JavaScript] {{Wayback|url=http://nodejs.org/ruwiki/api/repl.html |date=20130117162132 }} на сайте nodejs.org


[[Категория:Языки программирования по алфавиту]]
REPL-среда очень удобна при изучении нового языка, так как предоставляет пользователю быструю обратную связь.
[[Категория:Лисп]]

[[Категория:Командные оболочки]]
==External links==

* [http://www.paulgraham.com/rootsoflisp.html Описание реализации REPL] в Common Lisp (Paul Graham).
* [http://neugierig.org/software/c-repl/ c-repl] REPL для языка C

[[Категория:Языки программирования]]

[[en:Read-eval-print loop]]
{{изолированная статья}}

Текущая версия от 10:27, 19 апреля 2022

REPL (от англ. read-eval-print loop — «цикл „чтение — вычисление — вывод“») — форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки. Чаще всего этой аббревиатурой характеризуется интерактивная среда языка программирования Лисп, однако такая форма характерна и для интерактивных сред языков Erlang, Groovy, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby, Scala, Smalltalk, Swift, Tcl и других.

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

  • функция read читает одно выражение и преобразует его в соответствующую структуру данных в памяти;
  • функция eval принимает одну такую структуру данных и вычисляет соответствующее ей выражение;
  • функция print принимает результат вычисления выражения и печатает его пользователю.

Чтобы реализовать REPL-среду для некоторого языка, достаточно реализовать три функции: чтения, вычисления и вывода, и объединить их в бесконечный цикл. REPL-среда очень удобна при изучении нового языка, так как предоставляет пользователю быструю обратную связь.