Read–eval–print loop (REPL) в C++ — теперь это реальность!

Привет, друзья. Сегодня я хочу кратко описать новый инструмент, который я увидел у Дмитрия Нестерука на его ютуб-канале. Этот инструмент — REPL для C++. Are You Kidding Me? No.

Итак, небольшая справка о том, что такое REPL, для тех, кто забыл. Если говорить простым языком, то REPL — это обычная консольная программка, которая крайне похожа на ваш терминал. Вы запускаете её и получаете возможность вводить команды на некотором языке программирования. Введенные команды мгновенно обрабатываются и показывают результат.

Обычно REPL реализуется для динамических языков. Например, REPL есть у Python, Node.js, PHP и Ruby. Однако всё в нашем мире меняется. Разработчики обычно используют в работе сразу несколько языков. Часть из этих языков — динамические. Поэтому, очевидно, что инструменты (tools) одного языка влияют на другой язык (разработчику что-то нравится в А, и он это делает для Б). В связи с этим, появляются такие интересные вещи, как REPL для компилируемых языков со статической типизацией.

Я думаю, многие из вас слышали, что в Java 9, которая зарелизится в 2016 году, будет встроенный REPL. Это очень круто. К сожалению, в С++, даже в С++ 17, пока ничего не слышно про официальный REPL. Но это совсем не проблема. Ведь можно сделать свой Read–eval–print loop!

Итак, встречайте — Cling — REPL для C++. Это классическое консольное приложение для Linux-операционных систем (для Windows это не работает, увы), которое умеет мгновенно исполнять введенные вами команды на C++.

Cling пока находится в зачаточном состоянии. Есть и некоторые неудобства. Например, после того, как вы заинклюдили какую-то библиотеку, все ваши пространства имён, которые вы подключили с помощью using namespace, теряют свою силу, и всё нужно подключать заново. Однако это не страшно, ведь проект активно развивается.

Будем надеяться, что у Cling всё получится, и это станет де-факто стандартным REPL для C++. Ведь это такая нужная вещь, которая крайне полезна во время обучения языку или игры с новыми библиотеками.

Категории: Программирование

Метки: