REPL LEL

Mar 15, 2016 06:04


Cat tries virtual reality (h/t @Sa_Thero) pic.twitter.com/4yLPiGSurd
- SecuriTay (@SwiftOnSecurity) 15 марта 2016 г.

Достаточно занятная тема, которую я обычно избегаю, ибо синдром утёнка, начинал сразу с C в IDE (тогда в borland c++ 3.1). Но вот вчера внезапно выслушал монолог о том, как REPL ускоряет разработку. Знакомо, ведь я тоже радовался так ( Read more... )

мысли, программирование

Leave a comment

Comments 10

justy_tylor March 15 2016, 09:42:12 UTC
Не надо путать REPL и консольное красноглазие. Настоящий REPL нужен для https://en.wikipedia.org/wiki/Exploratory_programming То есть, по множеству направлений, от классического геймдева до популярной нынче data science.

В своих проектах я делал REPL как сочетание многострочного редактора и общего output. Но сейчас появились и более интересные подходы - см. Jupyter Notebook.

Reply

stdray March 15 2016, 15:26:17 UTC
Непонятно, на самом деле, что такое "Exploratory programming". Если как-то посмотреть на предметную область, то ладно. А если таки про разработку, то
>interactively develop and debug a program without having to go through the usual constraints of the edit-compile-run-debug cycle
опять непонятно, где плюсы.

>Jupyter Notebook.
Похоже на среду какого-нибудь маткада, которому сто лет в обед. Только я думаю, что это не про разработку софта история, а про другое.

Reply

justy_tylor March 15 2016, 16:53:38 UTC
А пофиг. Даже если предметка твоего проекта не включает в себя моменты "пойму, когда увижу", то такие моменты есть в дебаге.

Вводишь кусок кода типа "найди мне процент памяти, занимаемый Entity с IsSleeping, относительно памяти всех Entity", или "нарисуй мне график зависимости [такого-то выражения] от времени создания Entity", просветляешься, исследуешь дальше.

Reply

justy_tylor January 21 2018, 18:09:01 UTC
И в чем отличие по сравнению с древним "вставь дебажный принтф"
ну или теми же тестами? ;)

Reply


anonymous March 15 2016, 10:10:52 UTC
Просто репл нужно брать нормальный, например в Емаксе. Очевидно, что емакс круче nano, так что дно не пробито.
Есть вроде всякие реплы с подсветкой синтаксиса по крайней мере. В Pry вроде есть.
А в целом толсто.

Reply

stdray March 15 2016, 15:36:53 UTC
А еще есть штуки вроде scala worksheet или lighttable, который тоже может исполнять код по мере набора. Только дальше калькулятора толку от этого никакого.

Reply

anonymous March 16 2016, 10:20:51 UTC
Explorative programming же. Т.е. когда ты не знаешь как должна работать ёба, и пробуешь варианты. Еще можно быстро попробовать какую-нибудь функцию, которую раньше не юзал. Прогнать скрипт с другими параметрами.
Конечно, для больших ёб тяжело использовать репл.

Reply


thedeemon March 15 2016, 10:11:42 UTC
В языках с нетривиальной системой типов и их выводом репл часто бывает нужен не для проверки рантайм вещей, которые можно и тестами, а для диалога с компилятором про типы: выведи тип для такого выражения, подставь сюда, покажи что знаешь про такой тайпкласс, покажи какие типы его поддерживают и т.п. Еще как интерактивная справка, которая знает и про библиотеки, и про твой код.

По опыту, я когда на Окамле активно писал, егойный репл практически никогда не использовал. А вот в Хаскеле и Идрисе частенько пригождается. В Идрисе это еще и оптимизация процесса - пересобирать и запускать прогу слишком долго, а интерактивненько что-то пробовать и проверять - ок.

Reply

stdray March 15 2016, 15:34:15 UTC
По поводу общения с компилятором согласен, когда писал на хаскеле именно так и делал, особенно пока не привык к замене всех списков на Foldable c Traversable. Код там, правда, практически не эвалил.

Reply


Leave a comment

Up